NativeDesktop

Components

The built-in components by group: which ones are the OS's own control on macOS, which ones nd draws, and where to see each one.

Every component is a function that returns an element, such as button(..), source_list(..), or switch(..). Each one maps to the OS's own control where one exists, and to a drawn implementation everywhere else, with the same props and events, so you write your app once. The component reference lists every constructor and builder method, generated from crates/nd-components. This page is a map of what exists.

The Gallery shows one page per component. Select a component in its source list, or press secondary-K to open the command palette:

Example: Gallery. One page per built-in component: palette, source list, toasts, banner, forms, tabs, split view, status page, dialogs and media. Source in examples/gallery.
Runs Gallery in this page as WebAssembly.

Feedback

Forms and controls

Layout and windows

Media and content

Native or drawn

On macOS, controls that have an AppKit class use it. nd draws the content that you compose (div, text, canvas, and components with no AppKit counterpart) with tokens resolved from the OS. On Linux and Windows, nd draws everything through GPUI with that platform's preset. A drawn component still follows theming, so light and dark mode, the accent, and radii go through the same code path. If you need a component that isn't here, define one with native widgets.

Icons share one vocabulary: Icon from nd-icons, named after Lucide. macOS draws the matching SF Symbol, and Windows draws the matching Segoe Fluent Icons glyph (the font that Windows 11's own apps use). Linux and the web draw the Lucide shape. When an app registers its own icon and no system glyph exists, nd draws the icon from its SVG.