TKCode.Arc 0.3.0-preview.1

This is a prerelease version of TKCode.Arc.
dotnet add package TKCode.Arc --version 0.3.0-preview.1
                    
NuGet\Install-Package TKCode.Arc -Version 0.3.0-preview.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TKCode.Arc" Version="0.3.0-preview.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TKCode.Arc" Version="0.3.0-preview.1" />
                    
Directory.Packages.props
<PackageReference Include="TKCode.Arc" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TKCode.Arc --version 0.3.0-preview.1
                    
#r "nuget: TKCode.Arc, 0.3.0-preview.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TKCode.Arc@0.3.0-preview.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TKCode.Arc&version=0.3.0-preview.1&prerelease
                    
Install as a Cake Addin
#tool nuget:?package=TKCode.Arc&version=0.3.0-preview.1&prerelease
                    
Install as a Cake Tool

TKCode.Arc

English | 简体中文

Arc-style components for Avalonia, built on AtomUI. TKCode.Arc ports the free components of Arc — 110 components in 22 groups — with Arc's visual language and spring motion.

  • Targets net10.0 and net11.0; desktop (Windows, macOS, Linux).
  • Depends on AtomUI 6.2.8 and Avalonia 12.1.4 (exact versions), and on StreamMark for Markdown and code highlighting.
  • Design documents: design/overview.md.
  • Live demo: https://docs.tkcode.si/ (the gallery of every component, in the browser).

Packages

Package Contents
TKCode.Arc The components (UseArc()), organized like Arc's sidebar, plus a streaming Markdown control.
TKCode.Arc.Core ArcDesign tokens and palette, the spring motion engine, shared primitives, 187 built-in Lucide glyphs.
TKCode.Arc.Icons.Lucide The full Lucide set (2155 icons): LucideIcon control and LucideGeometry markup extension.
TKCode.Arc.Fonts Geist and Geist Mono (WithArcFonts()); body text uses Inter from Avalonia.Fonts.Inter.

Install

The latest preview is 0.3.0-preview.1 on NuGet:

dotnet add package TKCode.Arc --version 0.3.0-preview.1
dotnet add package TKCode.Arc.Fonts --version 0.3.0-preview.1           # optional: Geist and Geist Mono
dotnet add package TKCode.Arc.Icons.Lucide --version 0.3.0-preview.1    # optional: the full Lucide set

TKCode.Arc brings in TKCode.Arc.Core. TKCode.Arc.Blocks and TKCode.Arc.AdvancedCharts are built from this repository and are not published on NuGet yet. Versions carry a -preview suffix, so the API may still change between releases.

Getting started

AppBuilder.Configure<App>()
    .UsePlatformDetect()
    .WithInterFont()
    .WithArcFonts()          // optional: Geist display type and Geist Mono code type
    .UseAtomUI(builder =>
    {
        builder.UseDesktopControls();
        builder.UseArc();
    });

public partial class App : Application { }
<Window xmlns:arc="https://github.com/AtomUICommunity/TKCode.Arc">
  <StackPanel Spacing="12">
    <arc:Button Content="Save changes" />
    <arc:Button Content="Cancel" Variant="Secondary" />
    <arc:Switch Content="Email notifications" IsChecked="True" />
    <arc:CopyButton Value="npx arc add copy-button" />
    <arc:Button Content="Share" arc:Tooltip.Tip="Copy link" />
    <arc:Calendar ShowToday="True" />
  </StackPanel>
</Window>

Icons: Arc's built-in glyphs ({x:Static arc:ArcIcons.Check}) cover every icon the components use; any other Lucide icon comes from the icons package:

<Window xmlns:lucide="https://github.com/AtomUICommunity/TKCode.Arc/lucide">
  <lucide:LucideIcon Kind="Sparkles" Size="20" />
</Window>

Accent, appearance and motion level:

var config = new ThemeConfigBuilder()
    .WithAlgorithms(ThemeAlgorithm.Default, ThemeAlgorithm.Dark)
    .WithArc(arc => arc.Accent(ArcAccentPreset.Violet))
    .Build();
await Application.Current!.GetThemeManager()!.ApplyThemeAsync(
    new ThemeRequest(IThemeManager.DEFAULT_THEME_ID, config, ThemeTransitionReason.UserRequest));

ArcMotion.SetLevel(window, ArcMotionLevel.Reduced);   // Full, Reduced or Off

Markdown and code: CodeBlock highlights out of the box (TextMate grammars painted in Arc's palette), and Markdown renders a document or a streamed reply with the same styling:

var reply = new Markdown();
reply.Append("Here is the **fix**:\n\n```csharp\n");
reply.Append("var total = items.Sum(i => i.Price);\n```\n");
reply.Complete();

Notes for applications:

  • Do not enable InvariantGlobalization (number and date formatting needs culture data).
  • Anchored popups (menus, selects, tooltips, popovers) are drawn in the window's overlay layer, so they sit exactly sideOffset away from their trigger and never cover it.
  • Button, Calendar, Carousel, ContextMenu, DatePicker, Slider, SplitButton, TabItem, TimePicker, TreeView and TreeViewItem share names with Avalonia.Controls; alias one namespace when a file imports both.

Building

Requires the .NET 11 SDK (see global.json) and the .NET 10 runtime (AtomUI build tasks run on it).

dotnet build TKCode.Arc.slnx
dotnet test tests/TKCode.Arc.Core.Tests
dotnet test tests/TKCode.Arc.Tests
dotnet run --project gallery/TKCode.Arc.Gallery.Desktop -f net10.0

Sponsors

TKCode.Arc is mainly sponsored by nextco.work, which provides affordable, easy-to-use access to Claude, OpenAI and DeepSeek models. Thank you for supporting the project.

License

MIT. See THIRD-PARTY-NOTICES.md for Arc (MIT), Lucide (ISC), fonts (OFL), StreamMark, TextMateSharp, Oniguruma and Markdig, and the AtomUI (LGPL-3.0) dependency.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed.  net11.0 is compatible. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
0.3.0-preview.1 0 10/21/2026
0.2.0-preview.1 0 10/21/2026
0.1.1-preview.1 38 10/21/2026
0.1.0-preview.1 35 10/20/2026