Introduction
Avalonia themes and controls based on shadcn/ui and GPUI Kit, verified pixel by pixel in light and dark.
Avalonia UIKit is a set of themes and controls for Avalonia, based on the Nova style of shadcn/ui and on GPUI Kit. It is three things:
UIKitTheme, aStylestheme for Avalonia's own controls, in GPUI Kit's Default Light and Default Dark and the 36 color themes it bundles (Aurora, Ayu, Catppuccin, Tokyo Night and others):Button,TextBox,ComboBox,TabControl,Calendar,ListBox,TreeView,TableView,Menu,ToolTipand the rest. The theme replaces each control'sControlTheme, so it changes the colors, the padding, the outlines, the inner layout, the states and the animations, not just the palette.- New controls in the
uikit:namespace, in the same look. Some are the small components Avalonia has no counterpart for:Badge,TagLabel,Alert,Avatar,Breadcrumb,Kbd,Clipboard,Rating,EmptyState,Skeleton,StatusBar,DescriptionList,Stepper,Form,HoverCard,ShimmerText,Marker,BubbleandMessage. The others do what an Avalonia control cannot:Selectwith a search field and multiple selection,ListViewwith sections, the virtualizedTree,CalendarViewwith several months and ranges,DateField,TimeField,Table,ColorSelect,Sidebar,Sheet,NotificationList,TitleBarand more. Each has its own page under UIKit Controls in Components. - Attached properties that add features to Avalonia's own controls: a loading state for buttons (
uikit:Buttons), validation and input masks forTextBox(uikit:Inputs), a prefix and a suffix for tab bars (uikit:Tabs), a footer forGroupBox, a label forSeparator, and others. They act only where the app sets them.
Every component is checked against reference renders: Light and Dark, each variant, size and state, and the motion frame by frame. The color tokens are generated, including the colors the components derive for their states, so no color is approximated by hand.
The library is built for NativeAOT. It uses compiled bindings only and bans reflection at build time, and a NativeAOT smoke test renders every control in both themes on each change.
What it is not
The library adds to Avalonia's controls rather than replacing them: an app keeps writing Button, TextBox or ComboBox, and takes a uikit: control or an attached property only where it needs what that adds. Components that need an engine or a platform service of their own are out of scope, such as a code editor, multiple cursors or inline tokens in a text field, charts, dialogs, a command palette, OS notifications, and SVG or animated images. Docking comes from Dock.Avalonia, which AvaloniaUIKit.Dock themes.
Where to go next
- Installation: add the package and the theme to
App.axaml. - Theming: Default Light, Default Dark and the 36 bundled color themes, color tokens, fonts, sizes and variants.
- Icons: the bundled Lucide icons.
- Components: the demos, with their XAML.