Skip to main content

Atoms (components/atoms/)

Primitive UI elements — the smallest reusable building blocks. Built on Radix UI primitives and styled with Tailwind CSS + class-variance-authority.

Components

ComponentDescription
button.tsxButton with variants: default, destructive, outline, secondary, ghost, link. Multiple sizes.
card.tsxCard container with header, content, footer sections.
checkbox.tsxCheckbox with Radix UI accessibility.
input.tsxText input field.
knob.tsxRotary knob control — drag to set value. Used for sends, pan, and macro controls.
label.tsxForm label.
menubar.tsxTop-level menu bar with dropdowns.
onoff.tsxSimple on/off toggle indicator.
select.tsxDropdown select with Radix UI — search, scroll, option groups.
separator.tsxVisual divider.
sheet.tsxSlide-out sheet panel (Radix Dialog).
sidebar.tsxCollapsible sidebar navigation.
skeleton.tsxLoading placeholder skeleton.
slider.tsxLinear slider control.
sliderBig.tsxLarge-format slider (volume faders).
switch.tsxToggle switch.
tabs.tsxTab navigation (Radix Tabs).
textarea.tsxMulti-line text input.
toast.tsx / toaster.tsxToast notifications (Radix Toast).
toggle.tsx / togglegroup.tsxToggle button and toggle groups.
tooltip.tsx / tooltipAtom.tsxHover tooltips (Radix Tooltip).

Design Conventions

  • CVA variants — Use cva() to define visual variants (size, color, state). Don’t hardcode conditional classes.
  • Radix primitives — Use Radix for accessibility (keyboard nav, ARIA, focus management). Don’t reimplement.
  • forwardRef — All atoms use React.forwardRef for composability.
  • Tailwind-only — No CSS files per component. All styles via Tailwind utility classes.
  • Barrel exportindex.ts re-exports all atoms for clean imports: import { Button } from '@/components/atoms'.