TKCode.Arc
0.3.0-preview.1
dotnet add package TKCode.Arc --version 0.3.0-preview.1
NuGet\Install-Package TKCode.Arc -Version 0.3.0-preview.1
<PackageReference Include="TKCode.Arc" Version="0.3.0-preview.1" />
<PackageVersion Include="TKCode.Arc" Version="0.3.0-preview.1" />
<PackageReference Include="TKCode.Arc" />
paket add TKCode.Arc --version 0.3.0-preview.1
#r "nuget: TKCode.Arc, 0.3.0-preview.1"
#:package TKCode.Arc@0.3.0-preview.1
#addin nuget:?package=TKCode.Arc&version=0.3.0-preview.1&prerelease
#tool nuget:?package=TKCode.Arc&version=0.3.0-preview.1&prerelease
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.0andnet11.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
sideOffsetaway from their trigger and never cover it. Button,Calendar,Carousel,ContextMenu,DatePicker,Slider,SplitButton,TabItem,TimePicker,TreeViewandTreeViewItemshare names withAvalonia.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 | Versions 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. |
-
net10.0
- AtomUI.Controls (= 6.2.8)
- AtomUI.Core (= 6.2.8)
- AtomUI.Desktop.Controls (= 6.2.8)
- Avalonia (= 12.1.4)
- Avalonia.Desktop (= 12.1.4)
- TKCode.Arc.Core (>= 0.3.0-preview.1)
- TKCode.StreamMark.Avalonia (= 0.1.0-alpha.25)
- TKCode.StreamMark.Core (= 0.1.0-alpha.25)
- TKCode.StreamMark.Highlighting.TextMate (= 0.1.0-alpha.25)
-
net11.0
- AtomUI.Controls (= 6.2.8)
- AtomUI.Core (= 6.2.8)
- AtomUI.Desktop.Controls (= 6.2.8)
- Avalonia (= 12.1.4)
- Avalonia.Desktop (= 12.1.4)
- TKCode.Arc.Core (>= 0.3.0-preview.1)
- TKCode.StreamMark.Avalonia (= 0.1.0-alpha.25)
- TKCode.StreamMark.Core (= 0.1.0-alpha.25)
- TKCode.StreamMark.Highlighting.TextMate (= 0.1.0-alpha.25)
-
net8.0
- AtomUI.Controls (= 6.2.8)
- AtomUI.Core (= 6.2.8)
- AtomUI.Desktop.Controls (= 6.2.8)
- Avalonia (= 12.1.4)
- Avalonia.Desktop (= 12.1.4)
- TKCode.Arc.Core (>= 0.3.0-preview.1)
- TKCode.StreamMark.Avalonia (= 0.1.0-alpha.25)
- TKCode.StreamMark.Core (= 0.1.0-alpha.25)
- TKCode.StreamMark.Highlighting.TextMate (= 0.1.0-alpha.25)
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 |