TKCode.Arc
0.3.2-preview.1
See the version list below for details.
dotnet add package TKCode.Arc --version 0.3.2-preview.1
NuGet\Install-Package TKCode.Arc -Version 0.3.2-preview.1
<PackageReference Include="TKCode.Arc" Version="0.3.2-preview.1" />
<PackageVersion Include="TKCode.Arc" Version="0.3.2-preview.1" />
<PackageReference Include="TKCode.Arc" />
paket add TKCode.Arc --version 0.3.2-preview.1
#r "nuget: TKCode.Arc, 0.3.2-preview.1"
#:package TKCode.Arc@0.3.2-preview.1
#addin nuget:?package=TKCode.Arc&version=0.3.2-preview.1&prerelease
#tool nuget:?package=TKCode.Arc&version=0.3.2-preview.1&prerelease
TKCode.Arc
English | 简体中文
Arc-style components for Avalonia. TKCode.Arc ports the free components of Arc — 112 components in 22 groups — with Arc's visual language and spring motion.
- Targets
net10.0andnet11.0; desktop (Windows, macOS, Linux). - Depends on Avalonia 12.1.4 (exact version), on
TKCode.Arc.Foundation(its own MIT theme, token and language runtime) and on StreamMark for Markdown and code highlighting. Every package in the chain is MIT licensed; there is no AtomUI dependency since 0.3.2. - 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 (UseArcControls()), 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.Foundation |
The theme, token, language and package runtime (UseArc(...), ArcTheme, ArcLanguage); from 0.3.2. |
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.2-preview.1 on NuGet:
dotnet add package TKCode.Arc --version 0.3.2-preview.1
dotnet add package TKCode.Arc.Fonts --version 0.3.2-preview.1 # optional: Geist and Geist Mono
dotnet add package TKCode.Arc.Icons.Lucide --version 0.3.2-preview.1 # optional: the full Lucide set
TKCode.Arc brings in TKCode.Arc.Core (and, from 0.3.2, TKCode.Arc.Foundation). TKCode.Arc.Blocks, TKCode.Arc.AdvancedCharts and TKCode.Arc.Special
(the animated AI explainers of the Special components section) are separate packages on NuGet; TKCode.Arc.Workflow
(the workflow canvas, UseArcWorkflow()) ships with them too. TKCode.Arc.Themes.Pixel (a pixel-art theme, UseArcPixelTheme()) and
TKCode.Arc.Mobile (the first touch-first controls, UseArcMobile(), not yet verified on devices) are new in 0.3.1-preview.1; TKCode.Arc.Themes.Corners (global corner style, UseArcCorners()) is new in 0.3.1-preview.2. TKCode.Arc.Terminal (TerminalView over libghostty-vt, native libraries bundled) is new in 0.3.1-preview.4. TKCode.Arc.Audio (the IAudioPlayer abstraction behind the media blocks, silent by default) with its backends TKCode.Arc.Audio.Native (desktop, miniaudio, ArcAudioNative.Use()) and TKCode.Arc.Audio.Browser (WebAssembly, ArcAudioBrowser.UseAsync()) is new in 0.3.2-preview.1. Versions carry a -preview suffix, so the API may still change between
releases.
Getting started
The code below is the API on main (0.4, not yet on NuGet). Apps on 0.3.2-preview.1 register Arc inside UseAtomUI(...);
CHANGELOG.md has the migration notes.
AppBuilder.Configure<App>()
.UsePlatformDetect()
.WithInterFont()
.WithArcFonts() // optional: Geist display type and Geist Mono code type
.UseArc(arc => arc
.UseArcControls()
.WithTheme(t => t.Appearance(ArcAppearance.System)));
// Later, for example from a settings page:
ArcTheme.Apply(t => t.Appearance(ArcAppearance.Dark).Accent(ArcAccentPreset.Violet));
<Window xmlns:arc="https://github.com/AIDotNet/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/AIDotNet/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). - NativeAOT with the .NET 11 SDK: set
<UseOptimizedPublish>false</UseOptimizedPublish>, otherwise the compiled XAML is left out of the published app. - 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 (the tests and the gallery run on net10.0).
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. Arc depends only on Avalonia (MIT) and MIT packages of its own, so closed-source applications can ship it in a single file or a NativeAOT build. See THIRD-PARTY-NOTICES.md for Arc (MIT), Lucide (ISC), fonts (OFL), StreamMark, TextMateSharp, Oniguruma and Markdig.
| 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
- Avalonia (= 12.1.4)
- TKCode.Arc.Core (>= 0.3.2-preview.1)
- TKCode.StreamMark.Avalonia (= 0.1.1)
- TKCode.StreamMark.Core (= 0.1.1)
- TKCode.StreamMark.Highlighting.TextMate (= 0.1.1)
-
net11.0
- Avalonia (= 12.1.4)
- TKCode.Arc.Core (>= 0.3.2-preview.1)
- TKCode.StreamMark.Avalonia (= 0.1.1)
- TKCode.StreamMark.Core (= 0.1.1)
- TKCode.StreamMark.Highlighting.TextMate (= 0.1.1)
-
net8.0
- Avalonia (= 12.1.4)
- TKCode.Arc.Core (>= 0.3.2-preview.1)
- TKCode.StreamMark.Avalonia (= 0.1.1)
- TKCode.StreamMark.Core (= 0.1.1)
- TKCode.StreamMark.Highlighting.TextMate (= 0.1.1)
NuGet packages (4)
Showing the top 4 NuGet packages that depend on TKCode.Arc:
| Package | Downloads |
|---|---|
|
TKCode.Arc.Blocks
Page-level block compositions for TKCode.Arc, built from Arc components. Ports Arc's free blocks and adds original ones. |
|
|
TKCode.Arc.Special
Special components for TKCode.Arc, the uiarc.dev "Special components" section: animated AI explainers (prompt cache, reasoning tree, speculative decoding, mixture of experts, agent loop) and pointer effects (dot grid, gravity well, ink fluid). |
|
|
TKCode.Arc.AdvancedCharts
Advanced charts for TKCode.Arc: DataGrid, a spreadsheet grid with range selection, inline editing, a fill handle, Excel and Sheets clipboard, undo, sorting, filtering, grouping, totals and export. |
|
|
TKCode.Arc.Workflow
Workflow canvas for TKCode.Arc: show and edit graphs of steps and connections on a dotted canvas, watch a run step by step, pan and zoom, arrange automatically and undo. |
GitHub repositories (1)
Showing the top 1 popular GitHub repositories that depend on TKCode.Arc:
| Repository | Stars |
|---|---|
|
AIDotNet/Avalonia-Assistant
Windows 桌面 AI 助理。Agent 循环用 pi.net 的 Pi.CodingAgent, 界面用 TKCode.Arc,交互参考 WorkBuddy:左侧任务与空间, 中间对话,输入框里带模型、权限和工作区选择。
|
| Version | Downloads | Last Updated |
|---|---|---|
| 0.3.2-preview.2 | 268 | 10/30/2026 |
| 0.3.2-preview.1 | 548 | 10/29/2026 |
| 0.3.1-preview.6 | 95 | 10/28/2026 |
| 0.3.1-preview.5 | 66 | 10/28/2026 |
| 0.3.1-preview.4 | 84 | 10/27/2026 |
| 0.3.1-preview.3 | 72 | 10/27/2026 |
| 0.3.1-preview.2 | 161 | 10/26/2026 |
| 0.3.0-preview.5 | 252 | 10/24/2026 |
| 0.3.0-preview.4 | 85 | 10/23/2026 |
| 0.3.0-preview.3 | 87 | 10/23/2026 |
| 0.3.0-preview.2 | 86 | 10/23/2026 |
| 0.3.0-preview.1 | 76 | 10/21/2026 |
| 0.2.0-preview.1 | 63 | 10/21/2026 |
| 0.1.1-preview.1 | 70 | 10/21/2026 |
| 0.1.0-preview.1 | 56 | 10/20/2026 |