Design stack
shadcn/ui-style components live under components/ui. Primitives are from Base UI (@base-ui/react), not Radix. Icons in this showcase use Lucide (lucide-react) for consistency with the rest of the kit.
Next.js 16
App Router, React 19, Tailwind v4.
shadcn registry
Composable UI modules you own and can restyle.
Base UI
Accessible primitives: Dialog, Popover, Menu, Select, etc.
Lucide
Stroke icons via lucide-react (Icon suffix exports in this repo).
Alert
macOS alert panel from Figma 121:11166 (stacked full-width pill actions and side-by-side footer). appearance="callout" is the bordered inline alert from shadcn docs.
Panel — stacked (Type=Stacked)
Panel — side-by-side (Type=Side-by-side)
Panel — destructive tone
Callout (shadcn-style inline)
AlertDialog
Modal primitive (Base UI) with the same sheet chrome as Dialog. Trigger opens a focused confirmation.
Component catalog
Registry-style modules in this repo, grouped for navigation. Overlays and forms map closely to shadcn docs; implementation uses Base UI where the template specifies it.
Actions & buttons
Forms & inputs
Overlays & surfaces
Layout & structure
Feedback & data
macOS Figma kit (custom)
Figma macOS kit → code audit
Manual coverage check against kit pages. “Partial” means a subset or web-approximation (e.g. cursors, complex form layouts).
Figma file — all pages
Full document scan: file scLfie3Vn4Ep1pxIjRKioO. Separator rows in Figma are omitted from this list. Examples page includes frames such as Notifications, Utility Window, Dialog/Save, Alerts, Menus, List, Form.
GlassPanel
Present in the macOS kit file; liquid-glass frost steps (web approximation).
Regular
Medium
Large
AccentSwatches
System accent swatches from the Appearance collection.
SwitchMatrix
Matrix of switches for dense settings layouts (kit pattern).
SegmentedControl
Figma 121:12394 — tab-like segments with optional panels (Base UI Tabs).
With selection — panels mirror the active segment.
No selection (inset dividers) — set defaultValue={null} (Base UI Tabs).
Size variants — size on SegmentedControlList (sm · md · lg · xl).
Materials (frost)
Figma: Materials — liquid glass blur steps (web approximation).
Semantic colors
CSS variables from Appearance collection.
Buttons
Push buttons from Figma (121:11922): 24px height, 16px horizontal padding, 6px corner radius, SF footnote weight. Default / Preferred = default; Bordered neutral = outline; Bordered secondary = secondary; Bordered colored = accent; Bordered destructive = destructive; Borderless = ghost.
Variants (default size, 24px)
Sizes
Icon & arrow-style (24px well)
ButtonGroup
Icon pair (toolbar)
Toggle
Toolbar-style press toggle; metrics match push buttons. Variants: default / outline. Sizes: sm, default, lg.
ToggleGroup
Exclusive or multi-select groups sharing outline chrome.
Multiple selection
Single selection (default)
Accordion
Panel: frosted shell and dividers. Cards: stacked surfaces for FAQs and marketing.
Collapsible
Show / hide a region without accordion chrome.
Input & Label
Text fields match Figma 121:12220 (idle / focus / disabled), 479:5336 (content vs form vs over-glass), and the 16–36px height ramp 480:340.
Figma-style secondary label / caption under the field.
Textarea
Multi-line field with kit typography.
Checkbox
Checked, unchecked, indeterminate, disabled, and inactive-window styling.
Inactive window · mixed checkbox
Radio group
Horizontal group with inactive-window item styling.
Switch
Default and large sizes; active vs inactive window chrome.
Tabs
shadcn-style Tabs on Base UI primitives — list triggers and animated panels.
Card
Header, description, and content regions.
Badge
Primitives plus Apple-style capsule tones (`neutral`, `success`, `warning`, `info`). Use `StatusBadge` for API / workflow tokens.
StatusBadge (inferred tone + optional dot)
Toast & macOS notification
Sonner toasts and the custom MacNotificationToast layout.
Progress
Determinate bar with label/value row; indeterminate size="sm" variant.
Slider
Range input with kit track and thumb. Optional ticks, center bias, and midline.
Spinner
Inline loading indicator.
Skeleton
Placeholder block for loading layouts.
Dialog
Save-sheet chrome from Figma 121:11578 (26px radius, 20px padding, dual shadow). Pass size="sm" for 390px-wide sheets.
Dropdown menu
Pop-up control track and list from Figma 121:11977 (shared list chrome with Menus 121:12539).
Select
Single-select with the same pop-up chrome as menus.
Popover
Anchored floating panel (Base UI Popover).
Tooltip
Hover or focus hint anchored to a trigger.
Sheet
Side sheet / inspector (Vaul) with kit header chrome.
Kbd
Keyboard shortcut styling for inline help.
GroupBox
Bordered field group from the kit.
ColorWell
Selectable color chips for pickers.
Toolbar
Figma 647:1886, 648:4796, 641:1685 — segmented icon groups, pop-up / pull-down wells, and embedded search.
UtilityPanelTabStrip
Utility window tab strip (Figma 121:11770).
DisclosureRow
Single-row disclosure with nested body.
StepperField & StepperRail
Inside vs outside rails, inactive window, and rail-only control (121:12079).
SearchField
Search control with clear affordance.
ComboBoxField
Figma 121:11950 — 24px height, hairline bezel, inset chevron well (same outer ring as ButtonGroup).
ImageWell
Image drop / picker well (kit Image Wells).
ListItemRow
Figma 121:12606 — levels, tones, stripe, disclosure, and ListGroupTitle.
DialControl
Circular range input with top tick (Figma 121:12063 / 293:1110). Sizes sm through xl.
MenuBar & Dock
Menu bar: Figma 121:13196 (frosted strip, 4px hit radii, 11px horizontal item padding). MenuBarLeading / Trailing match Layer 0 TopBar; Dock shows pill icon row.
ScrollArea
Default kit scrollbar vs system thumb variant.
Default scrollbar
System thumb
WindowFrame
Figma 651:9252, 585:3384 — unified document chrome with toolbar; utility panel layout with compact title bar.
Unified title + toolbar
Window body uses kit control font size and translucent fill.
Utility panel
22px title bar, 10px traffic lights (585:3384).
TitleBarChrome
Document-leading title strip (651:9252) without full window body.
PullDownButton
Label + chevron well pop-up (Save dialog control).
NotificationBanner
Inline dismissible strip; all tone variants.
ProgressRing
Circular determinate progress.
MeterBar
Labeled horizontal meter readout.
Cursors
Reference tiles for pointer styles used in kit examples.
Sidebar (static preview)
SidebarProvider + collapsible="none" for a non-overlay strip (Figma: Sidebars).
Table (lists)
Figma 121:12606: 28px column headers (11px label + sort glyph), 20px body rows, hairline borders, striped alternating quaternary fill, secondary column tint. Use aria-sort on TableHead; data-state="selected" on TableRow for active selection.
| Name | Kind | Size |
|---|---|---|
| Document.pdf | File | 1.2 MB |
| Archive | Folder | — |