This is the full documentation for Atomus. Atomus 4.0 is a design system for product UI and marketing websites by StanVision, built for humans and agents: a Figma file, design tokens (`@stanvision/atomus-tokens`: CSS, Tailwind v4, shadcn/ui, DTCG JSON) and React components (`@stanvision/atomus-react`) whose props mirror the Figma properties. --- # Atomus 4.0 > One design system for product UI and marketing websites, built for humans and agents — Figma file, design tokens, React components, guidelines and an agent skill. URL: https://docs.atomus.io/ Figma library \~140 component sets, 30 responsive website sections and 13 example pages, all on 671 variables with Light/Dark, brand, radius and breakpoint modes. Design tokens W3C DTCG JSON, plain CSS, a Tailwind v4 theme and a shadcn/ui theme, generated from the Figma variables, with the same names as Dev Mode. React components `@stanvision/atomus-react`: 21 accessible components whose props match the Figma properties one to one, plus the [Agent kit](https://docs.atomus.io/components/ai-conversation/) for AI products. Built for agents Guidelines, an agent skill, `AGENTS.md` rules and `llms.txt` teach Claude Code, Cursor, Copilot, Figma Make and the Figma MCP to build with Atomus. See [AI & agents](https://docs.atomus.io/ai/). ## Start here [Getting started](https://docs.atomus.io/getting-started/) Pick your path: Figma, code, or both. [Foundations](https://docs.atomus.io/foundations/color/) Colour, type, spacing, radius, icons and theming. [Components](https://docs.atomus.io/components/) Live React examples, Figma properties and usage rules on one page per component. [Tokens for code](https://docs.atomus.io/code/tokens/) DTCG, CSS, Tailwind and shadcn/ui. [AI & agents](https://docs.atomus.io/ai/) Use Atomus with Claude Code, Cursor, Copilot, Figma MCP and llms.txt. --- # Getting started > Use Atomus in Figma, in code, or both. URL: https://docs.atomus.io/getting-started/ Atomus works the same way in Figma and in code: the same tokens, the same component names, the same modes. Start wherever your work starts. 1. **Get the file** from [Gumroad](https://stanvision.gumroad.com/l/atomus-design-system) and duplicate it into your team. 2. **One file per project.** Duplicate Atomus for every client project and rename it. Everything — variables, components, pages — lives in that one file. 3. **Set the brand.** In the **Brand** variable collection, add a mode and point `brand-25 … brand-950` at the client’s ramp. Every brand colour follows. 4. **Pick the shape and type.** Switch the **Radius** mode (Default, Sharp, Round) and edit the font families in **Typography**. 5. **Design.** Use the components and website sections; set Light/Dark and Desktop/Tablet/Mobile modes on the top frame. See [Figma](https://docs.atomus.io/figma/). 1) **Add the tokens.** Copy `css/atomus.css` from the [repo](https://github.com/StanVisionAgency/atomus), or use the [Tailwind v4](https://docs.atomus.io/code/tailwind/) or [shadcn/ui](https://docs.atomus.io/code/shadcn/) theme. 2) **Add the components** (optional): `@stanvision/atomus-react` from the repo’s `react/` folder. See [React](https://docs.atomus.io/react/). 3) **Theme with attributes:** `data-theme="dark"`, `data-brand="violet"`, `data-radius="round"` on any element. 4) **Set up your agents.** Install the Atomus skill (`npx skills add StanVisionAgency/atomus`) and add the Atomus rules to your repo’s `AGENTS.md`. See [AI & agents](https://docs.atomus.io/ai/). ## Principles 1. **Tokens first.** Every fill, stroke, gap, padding, radius and text size is a variable. 2. **Roles, not hues.** Colours are named by job (`text-secondary`, `bg-brand-solid`), so themes and dark mode just work. 3. **8-point grid.** Sizes are multiples of 8; 4 and 2 only for fine detail. Controls share heights: 32, 40, 48. 4. **Slots over detaching.** Open content areas are slots; icons are instance swaps. 5. **Responsive by mode.** Switch Spacing & Layout and Typography to Tablet or Mobile and layouts reflow. --- # Figma file > How the Atomus 4.0 Figma file is organised and how to work with it. URL: https://docs.atomus.io/figma/ The Figma file is the source of truth. Tokens, CSS, React and these docs are all generated from it. ## Pages | Section | Pages | | ------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------ | | ⬢ Getting started, ⬢ Changelog | How to use the file; what changed in each version | | ⬢ Foundations | Colors & typography, Atomus Icons | | ⬢ Components | 28 pages: buttons, inputs, menus, navigation, tables, charts, modals, drawers, notifications, chat, shared assets, app examples | | ⬢ Website sections | 10 pages: header, footer, hero, features, social proof, pricing, FAQ, CTA, blog, team, contact, careers, legal, auth, and 13 example pages | | ⬢ Utility | Brand guidelines deck, UX research, persona, social media sizes, wireframes, device frames | Every component page starts with a doc header and a **Usage** frame (anatomy, properties, do / don’t). ## Variable collections | Collection | Modes | Switches | | ---------------- | --------------------------------------- | ---------------------------------------------------- | | \_Primitives | — | 23 colour ramps (25–950), alpha ramps, size scale | | Brand | Atomus · Example — Violet · your brands | The brand ramp | | Color | Light · Dark | Semantic roles: text, background, border, foreground | | Radius | Default · Sharp · Round | Corner scale | | Spacing & Layout | Desktop · Tablet · Mobile | Layout gaps, container, section padding | | Typography | Desktop · Tablet · Mobile | Headline sizes and families | | Effects | Light · Dark | Elevation shadows | Every variable has scopes, a description and **code syntax**: Dev Mode shows the same CSS name developers use. ## How we work with it - Duplicate the file per client project, rename it, set the brand mode and fonts, then design. Atomus stays a single file on purpose — teams run 10–20 projects at once and one file per project is easier than linked libraries. - Set modes (Light/Dark, Brand, Radius, Desktop/Tablet/Mobile) on the top frame, never on single layers. - Put custom content in slots instead of detaching instances. --- # React > @stanvision/atomus-react — accessible React components whose props match the Figma properties. URL: https://docs.atomus.io/react/ `@stanvision/atomus-react` is free and open source. Its props mirror the Figma component properties — Hierarchy → `hierarchy`, Size → `size`, Style → `variant` — so a Figma spec reads straight into code. ## Install The package lives in the [`react/`](https://github.com/StanVisionAgency/atomus/tree/main/react) folder of the repo (npm publishing comes later). ```bash git clone https://github.com/StanVisionAgency/atomus.git cd atomus/react && npm install && npm run build # then in your app npm install ../atomus/react ``` ```tsx import '@stanvision/atomus-react/atomus.css'; // tokens and themes import '@stanvision/atomus-react/styles.css'; // component styles import { Button, Input, Card } from '@stanvision/atomus-react'; ``` ## Components | Component | Figma component | | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- | | `Button` | Button | | `Badge`, `Tag` | Badge, Tag | | `Input`, `Select` | Input, Select | | `Checkbox`, `Radio`, `Toggle` | Checkbox, Radio, Toggle | | `Avatar` | Avatar | | `Alert`, `Toast`, `ToastProvider` | Alert, Toast | | `Card` | Card | | `Tabs` | Tabs | | `DropdownMenu`, `MenuItem` | Dropdown menu, Menu item | | `Modal` | Modal | | `Table` | Table header cell, Table cell | | `DatePicker`, `Calendar` | Date input, Date picker, Calendar day | | `AppHeader`, `SidebarNavigation`, `NavItem` | App header, Sidebar navigation, Nav item | | `ProgressBar` | Progress bar | | `MetricCard` | Metric card | | `EmptyState` | Empty state | | `PromptInput`, `Message`, `StreamingText`, `Shimmer`, `Reasoning`, `ToolCall`, `Approval`, `Sources`, `InlineCitation`, `Suggestions`, `ModelSelector`, `Feedback`, `AILabel`, `ContextMeter` | Agent kit (Figma components planned) — see [Conversation](https://docs.atomus.io/components/ai-conversation/) | ## Accessibility - Every control has a visible label or an `aria-label`, and a focus ring (`border-focus` + `shadow-focus-ring`). - Select, DropdownMenu, Tabs and the Calendar follow the WAI-ARIA keyboard patterns. - Modal is the native ``: focus is trapped, Esc closes, the page behind is inert. - Status is never colour alone: alerts and toasts carry an icon, badges keep their word. ## Code Connect `react/src/components/*.figma.ts` (Code Connect template files) map the components to the Figma file. Publishing it to Dev Mode needs a Figma Organization plan; until then the mapping files document the prop names. --- # Changelog > What changed in Atomus 4.0. URL: https://docs.atomus.io/changelog/ | Version | Date | Highlights | | ------- | ------------ | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | | 4.0 | October 2026 | Rebuilt on 671 variables with Light/Dark, Brand, Radius and Desktop/Tablet/Mobile modes; \~140 component sets; 30 website sections and 13 example pages; app examples; Usage frames on every page; DTCG tokens, CSS, Tailwind v4 and shadcn/ui themes; AI guidelines; React package with 21 components; docs at docs.atomus.io; dark-mode contrast fixes | | 3.6 | 2024 | Previous version | --- # Colour URL: https://docs.atomus.io/foundations/color/ Use **semantic tokens** only. Each has a Light and Dark value and follows the Brand collection. Names below are the CSS variables (Figma names in brackets). ## Text Text colour. `primary` for headings and body, `secondary` for supporting copy, `tertiary` for hints and meta, `placeholder` in inputs, `brand` for links/highlights, `on-brand` on brand fills. | Token | Light | Dark | | ------------------------------------------------------- | --------------- | --------------- | | `--color-text-primary` Figma: Text/text-primary | `#18181b` | `#fafafa` | | `--color-text-secondary` Figma: Text/text-secondary | `#3f3f46` | `#d4d4d8` | | `--color-text-white` Figma: Text/text-white | `#ffffff` | `#ffffff` | | `--color-text-opacity` Figma: Text/text-opacity | `#00000099` 60% | `#ffffff99` 60% | | `--color-text-link` Figma: Text/text-link | `#4057ff` | `#6e96ff` | | `--color-text-tertiary` Figma: Text/text-tertiary | `#71717a` | `#a1a1aa` | | `--color-text-placeholder` Figma: Text/text-placeholder | `#71717a` | `#a1a1aa` | | `--color-text-disabled` Figma: Text/text-disabled | `#d4d4d8` | `#52525b` | | `--color-text-brand` Figma: Text/text-brand | `#4057ff` | `#6e96ff` | | `--color-text-on-brand` Figma: Text/text-on-brand | `#ffffff` | `#ffffff` | | `--color-text-error` Figma: Text/text-error | `#be123c` | `#fda4af` | | `--color-text-warning` Figma: Text/text-warning | `#b45309` | `#fbbf24` | | `--color-text-success` Figma: Text/text-success | `#15803d` | `#49de80` | | `--color-text-brand-hover` Figma: Text/text-brand_hover | `#2335d6` | `#97bdff` | | `--color-text-inverse` Figma: Text/text-inverse | `#ffffff` | `#18181b` | | `--color-text-on-warning` Figma: Text/text-on-warning | `#18181b` | `#18181b` | ## Background Surface fills. `primary` page and cards, `secondary` sections and table headers, `tertiary` subtle fills and image placeholders, `brand-solid` primary buttons, `brand-subtle` selected/tinted areas, `overlay` behind modals. | Token | Light | Dark | | --------------------------------------------------------------------- | --------------- | --------------- | | `--color-bg-primary` Figma: Background/bg-primary | `#ffffff` | `#18181b` | | `--color-bg-primary-hover` Figma: Background/bg-primary_hover | `#fafafa` | `#27272a` | | `--color-bg-secondary` Figma: Background/bg-secondary | `#fafafa` | `#27272a` | | `--color-bg-tertiary` Figma: Background/bg-tertiary | `#f4f4f5` | `#3f3f46` | | `--color-bg-inverse` Figma: Background/bg-inverse | `#18181b` | `#ffffff` | | `--color-bg-disabled` Figma: Background/bg-disabled | `#f4f4f5` | `#27272a` | | `--color-bg-brand-solid` Figma: Background/bg-brand-solid | `#4057ff` | `#4057ff` | | `--color-bg-brand-solid-hover` Figma: Background/bg-brand-solid_hover | `#2335d6` | `#2335d6` | | `--color-bg-brand-subtle` Figma: Background/bg-brand-subtle | `#ebf5ff` | `#121f8c` | | `--color-bg-error-solid` Figma: Background/bg-error-solid | `#e11d48` | `#e11d48` | | `--color-bg-error-subtle` Figma: Background/bg-error-subtle | `#fff1f2` | `#881337` | | `--color-bg-warning-subtle` Figma: Background/bg-warning-subtle | `#fffbeb` | `#78350f` | | `--color-bg-success-subtle` Figma: Background/bg-success-subtle | `#f0fdf4` | `#14532d` | | `--color-bg-tertiary-hover` Figma: Background/bg-tertiary_hover | `#e4e4e7` | `#52525b` | | `--color-bg-warning-solid` Figma: Background/bg-warning-solid | `#f59e0b` | `#f59e0b` | | `--color-bg-success-solid` Figma: Background/bg-success-solid | `#15803d` | `#15803d` | | `--color-bg-overlay` Figma: Background/bg-overlay | `#18181bb2` 70% | `#000000b2` 70% | | `--color-bg-quaternary` Figma: Background/bg-quaternary | `#e4e4e7` | `#3f3f46` | | `--color-bg-quaternary-hover` Figma: Background/bg-quaternary_hover | `#d4d4d8` | `#52525b` | ## Border Strokes. `secondary` for cards and dividers, `primary` for inputs and outlined controls, `brand` / `focus` for selected and focused states. | Token | Light | Dark | | --------------------------------------------------------- | --------- | --------- | | `--color-border-primary` Figma: Border/border-primary | `#d4d4d8` | `#3f3f46` | | `--color-border-secondary` Figma: Border/border-secondary | `#e4e4e7` | `#27272a` | | `--color-border-disabled` Figma: Border/border-disabled | `#e4e4e7` | `#3f3f46` | | `--color-border-brand` Figma: Border/border-brand | `#4057ff` | `#6e96ff` | | `--color-border-focus` Figma: Border/border-focus | `#4c70ff` | `#6e96ff` | | `--color-border-error` Figma: Border/border-error | `#e11d48` | `#fb7185` | | `--color-border-warning` Figma: Border/border-warning | `#f59e0b` | `#fbbf24` | | `--color-border-success` Figma: Border/border-success | `#16a34a` | `#49de80` | ## Foreground Icons and graphics. Same roles as Text. | Token | Light | Dark | | ------------------------------------------------------------------- | --------- | --------- | | `--color-fg-primary` Figma: Foreground/fg-primary | `#18181b` | `#ffffff` | | `--color-fg-secondary` Figma: Foreground/fg-secondary | `#52525b` | `#d4d4d8` | | `--color-fg-tertiary` Figma: Foreground/fg-tertiary | `#71717a` | `#a1a1aa` | | `--color-fg-disabled` Figma: Foreground/fg-disabled | `#d4d4d8` | `#52525b` | | `--color-fg-brand` Figma: Foreground/fg-brand | `#4057ff` | `#6e96ff` | | `--color-fg-on-brand` Figma: Foreground/fg-on-brand | `#ffffff` | `#ffffff` | | `--color-fg-error` Figma: Foreground/fg-error | `#e11d48` | `#fb7185` | | `--color-fg-warning` Figma: Foreground/fg-warning | `#d97706` | `#fbbf24` | | `--color-fg-success` Figma: Foreground/fg-success | `#16a34a` | `#49de80` | | `--color-fg-inverse` Figma: Foreground/fg-inverse | `#ffffff` | `#18181b` | | `--color-fg-on-warning` Figma: Foreground/fg-on-warning | `#18181b` | `#18181b` | | `--color-fg-contrast` Figma: Foreground/fg-contrast | `#000000` | `#ffffff` | | `--color-fg-contrast-inverse` Figma: Foreground/fg-contrast-inverse | `#ffffff` | `#000000` | `fg-contrast` is the maximum-contrast foreground (pure black in Light, pure white in Dark) for marks that must read on any surface, such as the Stop button of the Prompt input; put `fg-contrast-inverse` on top of it. ## AI The Agent kit’s layer for AI content (see `components/ai-label.md`). Each value is the brand ramp blended with purple, so AI reads as related to the brand but distinct from it, and follows the Brand mode. Hex values below are for the Atomus brand. `bg-ai-subtle` tints AI surfaces (AI label, assistant avatar, reasoning, active citations), `border-ai` is their hairline, `text-ai` their label and accent text. `--gradient-ai` (brand-500 → purple → pink-400 at 135°; 400/300 stops in Dark) fills the AI mark, the streaming caret and the focused Prompt input border. | Token | Light | Dark | | ----------------------------------------------------- | --------- | --------------- | | `--color-bg-ai-subtle` Figma: Background/bg-ai-subtle | `#f2f5ff` | `#938efe1f` 12% | | `--color-border-ai` Figma: Border/border-ai | `#b4b9ff` | `#938efe66` 40% | | `--color-text-ai` Figma: Text/text-ai | `#4c2cd2` | `#b4b9ff` | Use the AI layer only to identify AI content. Never decorate other UI with it, and never let it be the only signal: pair it with the AI label. ## Primitives Raw ramps (`--color-gray-25 … 950`, `--color-red-*`, … `--color-alpha-black-5 … 90`) exist only to be aliased. The brand ramp is `--color-brand-25 … 950` and changes with the Brand mode. ### Brand Atomus Violet `brand` 1. 25 `#f5faff` 2. 50 `#ebf5ff` 3. 100 `#dbeaff` 4. 200 `#bed9ff` 5. 300 `#97bdff` 6. 400 `#6e96ff` 7. 500 `#4c70ff` 8. 600 `#4057ff` 9. 700 `#2335d6` 10. 800 `#1d2fb6` 11. 900 `#121f8c` 12. 950 `#0b1354` `--color-brand-25 … 950` point at `atomus-blue` by default and at `violet` under `data-brand="violet"`. ### Neutrals `gray` 1. 25 `#fdfdfd` 2. 50 `#fafafa` 3. 100 `#f4f4f5` 4. 200 `#e4e4e7` 5. 300 `#d4d4d8` 6. 400 `#a1a1aa` 7. 500 `#71717a` 8. 600 `#52525b` 9. 700 `#3f3f46` 10. 800 `#27272a` 11. 900 `#18181b` 12. 950 `#0e0e10` `blue-gray` 1. 25 `#fbfdfd` 2. 50 `#f8fafc` 3. 100 `#f1f5f9` 4. 200 `#e2e8f0` 5. 300 `#cbd5e1` 6. 400 `#94a3b8` 7. 500 `#64748b` 8. 600 `#475569` 9. 700 `#334155` 10. 800 `#1e293c` 11. 900 `#0f172a` 12. 950 `#090e19` `cool-gray` 1. 25 `#fcfdfd` 2. 50 `#f9fafb` 3. 100 `#f3f4f6` 4. 200 `#e5e7eb` 5. 300 `#d1d5db` 6. 400 `#9ca3af` 7. 500 `#6b7280` 8. 600 `#4b5563` 9. 700 `#374151` 10. 800 `#1f2937` 11. 900 `#111827` 12. 950 `#0a0e17` `true-gray` 1. 25 `#fdfdfd` 2. 50 `#fafafa` 3. 100 `#f5f5f5` 4. 200 `#e5e5e5` 5. 300 `#d4d4d4` 6. 400 `#a3a3a3` 7. 500 `#737373` 8. 600 `#525252` 9. 700 `#404040` 10. 800 `#262626` 11. 900 `#171717` 12. 950 `#0e0e0e` `warm-gray` 1. 25 `#fdfdfc` 2. 50 `#fafaf9` 3. 100 `#f5f5f4` 4. 200 `#e7e5e4` 5. 300 `#d6d3d1` 6. 400 `#a8a29e` 7. 500 `#78716c` 8. 600 `#57534e` 9. 700 `#44403c` 10. 800 `#292524` 11. 900 `#1c1917` 12. 950 `#110f0e` ### Hues `red` 1. 25 `#fff9f9` 2. 50 `#fef2f2` 3. 100 `#fee2e2` 4. 200 `#fecaca` 5. 300 `#fca5a5` 6. 400 `#f87171` 7. 500 `#ef4444` 8. 600 `#dc2626` 9. 700 `#b91c1c` 10. 800 `#991b1b` 11. 900 `#7f1d1d` 12. 950 `#4c1111` `rose` 1. 25 `#fff8f9` 2. 50 `#fff1f2` 3. 100 `#ffe4e6` 4. 200 `#fecdd3` 5. 300 `#fda4af` 6. 400 `#fb7185` 7. 500 `#f43f5e` 8. 600 `#e11d48` 9. 700 `#be123c` 10. 800 `#9f1239` 11. 900 `#881337` 12. 950 `#520b21` `pink` 1. 25 `#fef9fb` 2. 50 `#fdf2f8` 3. 100 `#fce7f3` 4. 200 `#fbcfe8` 5. 300 `#f9a8d4` 6. 400 `#f472b6` 7. 500 `#ec4899` 8. 600 `#db2777` 9. 700 `#be185d` 10. 800 `#9d174d` 11. 900 `#831843` 12. 950 `#4f0e28` `fuschia` 1. 25 `#fef9ff` 2. 50 `#fdf4ff` 3. 100 `#fae8ff` 4. 200 `#f5d0fe` 5. 300 `#f0abfc` 6. 400 `#e879f9` 7. 500 `#d946ef` 8. 600 `#c026d3` 9. 700 `#a21caf` 10. 800 `#86198f` 11. 900 `#701a75` 12. 950 `#431046` `purple` 1. 25 `#fdfaff` 2. 50 `#faf5ff` 3. 100 `#f3e8ff` 4. 200 `#e9d5ff` 5. 300 `#d8b4fe` 6. 400 `#c084fc` 7. 500 `#a855f7` 8. 600 `#9333ea` 9. 700 `#7e22ce` 10. 800 `#6b21a8` 11. 900 `#581c87` 12. 950 `#351151` `violet` 1. 25 `#faf9ff` 2. 50 `#f5f3ff` 3. 100 `#ede9fe` 4. 200 `#ddd6fe` 5. 300 `#c4b5fd` 6. 400 `#a78bfa` 7. 500 `#8b5cf6` 8. 600 `#7c3aed` 9. 700 `#6d28d9` 10. 800 `#5b21b6` 11. 900 `#4c1d95` 12. 950 `#2e1159` `indigo` 1. 25 `#f7f9ff` 2. 50 `#eef2ff` 3. 100 `#e0e7ff` 4. 200 `#c7d2fe` 5. 300 `#a5b4fc` 6. 400 `#818cf8` 7. 500 `#6366f1` 8. 600 `#4f46e5` 9. 700 `#4338ca` 10. 800 `#3730a3` 11. 900 `#312e81` 12. 950 `#1d1c4d` `blue` 1. 25 `#f7fbff` 2. 50 `#eff6ff` 3. 100 `#dbeafe` 4. 200 `#bfdbfe` 5. 300 `#93c5fd` 6. 400 `#60a5fa` 7. 500 `#3b82f6` 8. 600 `#2563eb` 9. 700 `#1d4ed8` 10. 800 `#1e40af` 11. 900 `#1e3a8a` 12. 950 `#122353` `light-blue` 1. 25 `#f7fcff` 2. 50 `#f0f9ff` 3. 100 `#e0f2fe` 4. 200 `#bae6fd` 5. 300 `#7dd3fc` 6. 400 `#38bdf8` 7. 500 `#0ea5e9` 8. 600 `#0284c7` 9. 700 `#0369a1` 10. 800 `#075985` 11. 900 `#0c4a6e` 12. 950 `#072c42` `cyan` 1. 25 `#f5ffff` 2. 50 `#ecfeff` 3. 100 `#cffafe` 4. 200 `#a5f3fc` 5. 300 `#67e8f9` 6. 400 `#22d3ee` 7. 500 `#06b6d4` 8. 600 `#0891b2` 9. 700 `#0e7490` 10. 800 `#155e75` 11. 900 `#164e63` 12. 950 `#0d2f3b` `teal` 1. 25 `#f7fefd` 2. 50 `#f0fdfa` 3. 100 `#ccfbf1` 4. 200 `#99f6e4` 5. 300 `#5eead4` 6. 400 `#2dd4bf` 7. 500 `#14b8a6` 8. 600 `#0d9488` 9. 700 `#0f766e` 10. 800 `#115e59` 11. 900 `#134e4a` 12. 950 `#0b2f2c` `emerald` 1. 25 `#f5fefa` 2. 50 `#ecfdf5` 3. 100 `#d1fae5` 4. 200 `#a7f3d0` 5. 300 `#6ee7b7` 6. 400 `#34d399` 7. 500 `#10b981` 8. 600 `#059669` 9. 700 `#047857` 10. 800 `#065f46` 11. 900 `#064e3b` 12. 950 `#042f23` `green` 1. 25 `#f7fef9` 2. 50 `#f0fdf4` 3. 100 `#dcfce7` 4. 200 `#baf7d0` 5. 300 `#85efab` 6. 400 `#49de80` 7. 500 `#22c55d` 8. 600 `#16a34a` 9. 700 `#15803d` 10. 800 `#166534` 11. 900 `#14532d` 12. 950 `#0c321b` `lime` 1. 25 `#fbfff3` 2. 50 `#f7fee7` 3. 100 `#ecfccb` 4. 200 `#d9f99d` 5. 300 `#bef264` 6. 400 `#a3e635` 7. 500 `#84cc16` 8. 600 `#65a30d` 9. 700 `#4d7c0f` 10. 800 `#3f6212` 11. 900 `#365314` 12. 950 `#20320c` `yellow` 1. 25 `#fffdf3` 2. 50 `#fefce8` 3. 100 `#fef9c3` 4. 200 `#fef08a` 5. 300 `#fde047` 6. 400 `#facc15` 7. 500 `#eab308` 8. 600 `#ca8a04` 9. 700 `#a16207` 10. 800 `#854d0e` 11. 900 `#713f12` 12. 950 `#44260b` `amber` 1. 25 `#fffdf5` 2. 50 `#fffbeb` 3. 100 `#fef3c7` 4. 200 `#fde68a` 5. 300 `#fcd34d` 6. 400 `#fbbf24` 7. 500 `#f59e0b` 8. 600 `#d97706` 9. 700 `#b45309` 10. 800 `#92400e` 11. 900 `#78350f` 12. 950 `#482009` `orange` 1. 25 `#fffbf6` 2. 50 `#fff7ed` 3. 100 `#ffedd5` 4. 200 `#fed7aa` 5. 300 `#fdba74` 6. 400 `#fb923c` 7. 500 `#f97316` 8. 600 `#ea580c` 9. 700 `#c2410c` 10. 800 `#9a3412` 11. 900 `#7c2d12` 12. 950 `#4a1b0b` ### Alpha `alpha-black` 1. 5 `#0000000d` 2. 10 `#0000001a` 3. 20 `#00000033` 4. 30 `#0000004d` 5. 40 `#00000066` 6. 50 `#00000080` 7. 60 `#00000099` 8. 70 `#000000b2` 9. 80 `#000000cc` 10. 90 `#000000e5` `alpha-white` 1. 5 `#ffffff0d` 2. 10 `#ffffff1a` 3. 20 `#ffffff33` 4. 30 `#ffffff4d` 5. 40 `#ffffff66` 6. 50 `#ffffff80` 7. 60 `#ffffff99` 8. 70 `#ffffffb2` 9. 80 `#ffffffcc` 10. 90 `#ffffffe5` --- # Typography URL: https://docs.atomus.io/foundations/typography/ Families: **Inter Display** (headlines), **Inter** (body and UI), **Roboto Mono** (code). Sizes and line heights are variables with Desktop / Tablet / Mobile values; the text styles below use them. ## Font families ### Inter Display Headlines · `--font-family-title` ABCDEFGHIJKLMNOPQRSTUVWXYZ\ abcdefghijklmnopqrstuvwxyz\ 0123456789 &@$%?! - Medium `500` - Semi Bold `600` - Bold `700` ### Inter Body and UI · `--font-family-body` ABCDEFGHIJKLMNOPQRSTUVWXYZ\ abcdefghijklmnopqrstuvwxyz\ 0123456789 &@$%?! - Light `300` - Regular `400` - Medium `500` - Semi Bold `600` - Bold `700` ### Roboto Mono Code and tokens · `.text-components-code` ABCDEFGHIJKLMNOPQRSTUVWXYZ\ abcdefghijklmnopqrstuvwxyz\ 0123456789 &@$%?! - Regular `400` - Medium `500` ## Type scale Every style below is rendered with its CSS class, so sizes switch at the tablet and mobile breakpoints like they do in product. ### Headline **Headline/Huge** `.text-headline-huge` - Desktop 120/140 - Tablet 88/100 - Mobile 56/64 - Weight SemiBold Build faster **Headline/H1** `.text-headline-h1` - Desktop 64/72 - Tablet 52/60 - Mobile 40/52 - Weight SemiBold Build faster **Headline/H2** `.text-headline-h2` - Desktop 56/64 - Tablet 44/52 - Mobile 36/48 - Weight Medium One system **Headline/H3** `.text-headline-h3` - Desktop 40/44 - Tablet 36/44 - Mobile 32/40 - Weight Medium Design that scales **Headline/H4** `.text-headline-h4` - Desktop 32/40 - Tablet 30/40 - Mobile 28/36 - Weight Medium Design that scales **Headline/H5** `.text-headline-h5` - Desktop 24/32 - Weight Medium The quick brown fox jumps over the lazy dog **Headline/H6** `.text-headline-h6` - Desktop 20/28 - Weight Medium The quick brown fox jumps over the lazy dog **Headline/Subtitle** `.text-headline-subtitle` - Desktop 12/20 - Weight Medium Design system **Headline/Overline** `.text-headline-overline` - Desktop 14/20 - Weight Bold Design system ### Content **Content/Body leading** `.text-content-body-leading` - Desktop 18/28 - Weight Medium Atomus keeps product UI and marketing websites in one design language. **Content/Body leading bold** `.text-content-body-leading-bold` - Desktop 18/28 - Weight Bold Atomus keeps product UI and marketing websites in one design language. **Content/Body** `.text-content-body` - Desktop 16/24 - Weight Regular App body copy Atomus keeps product UI and marketing websites in one design language. **Content/Body bold** `.text-content-body-bold` - Desktop 16/24 - Weight Semi Bold Atomus keeps product UI and marketing websites in one design language. **Content/Small** `.text-content-small` - Desktop 14/20 - Weight Regular Most UI text, table cells Atomus keeps product UI and marketing websites in one design language. **Content/Small Bold** `.text-content-small-bold` - Desktop 14/20 - Weight Semi Bold Atomus keeps product UI and marketing websites in one design language. **Content/Tiny** `.text-content-tiny` - Desktop 12/16 - Weight Regular Meta, captions Atomus keeps product UI and marketing websites in one design language. **Content/Tiny bold** `.text-content-tiny-bold` - Desktop 12/16 - Weight Medium Atomus keeps product UI and marketing websites in one design language. **Content/Micro** `.text-content-micro` - Desktop 10/12 - Weight Regular Atomus keeps product UI and marketing websites in one design language. **Content/Micro Bold** `.text-content-micro-bold` - Desktop 10/12 - Weight Semi Bold Atomus keeps product UI and marketing websites in one design language. ### Components **Components/Button xSmall** `.text-components-button-xsmall` - Desktop 10/12 - Weight Semi Bold Save changes **Components/Button Small** `.text-components-button-small` - Desktop 12/16 - Weight Semi Bold Save changes **Components/Button Medium** `.text-components-button-medium` - Desktop 14/16 - Weight Semi Bold Save changes **Components/Button Large** `.text-components-button-large` - Desktop 16/20 - Weight Semi Bold Save changes **Components/Button xLarge** `.text-components-button-xlarge` - Desktop 18/20 - Weight Semi Bold Save changes **Components/Input xSmall** `.text-components-input-xsmall` - Desktop 12/12 - Weight Regular you\@company.com **Components/Input Small** `.text-components-input-small` - Desktop 14/16 - Weight Regular you\@company.com **Components/Input Medium** `.text-components-input-medium` - Desktop 15/16 - Weight Regular you\@company.com **Components/Input Large** `.text-components-input-large` - Desktop 18/20 - Weight Regular you\@company.com **Components/Caption xSmall** `.text-components-caption-xsmall` - Desktop 10/12 - Weight Semi Bold Caption text **Components/Caption Small** `.text-components-caption-small` - Desktop 12/12 - Weight Medium Caption text **Components/Caption Medium** `.text-components-caption-medium` - Desktop 14/16 - Weight Semi Bold Caption text **Components/Caption Large** `.text-components-caption-large` - Desktop 16/16 - Weight Semi Bold Caption text **Components/Metric value** `.text-components-metric-value` - Desktop 36/44 - Weight Semi Bold $48.2k **Components/Code** `.text-components-code` - Desktop 14/20 - Weight Regular const theme = "dark"; ### Template **Template/Title** `.text-template-title` - Desktop 48/56 - Weight Semi Bold One system **Template/Heading** `.text-template-heading` - Desktop 24/32 - Weight Semi Bold Page/drawer titles in app The quick brown fox jumps over the lazy dog **Template/Eyebrow** `.text-template-eyebrow` - Desktop 14/20 - Weight Semi Bold Design system ### Web **Web/Display** `.text-web-display` - Desktop 64/72 - Tablet 52/60 - Mobile 40/52 - Weight Semi Bold Hero headlines Build faster **Web/Heading xl** `.text-web-heading-xl` - Desktop 56/64 - Tablet 44/52 - Mobile 36/48 - Weight Semi Bold Section titles One system **Web/Heading lg** `.text-web-heading-lg` - Desktop 40/44 - Tablet 36/44 - Mobile 32/40 - Weight Semi Bold Large card / split headings Design that scales **Web/Heading md** `.text-web-heading-md` - Desktop 32/40 - Tablet 30/40 - Mobile 28/36 - Weight Semi Bold Sub-section titles Design that scales **Web/Heading sm** `.text-web-heading-sm` - Desktop 24/32 - Weight Semi Bold Card titles, article H2 The quick brown fox jumps over the lazy dog **Web/Heading xs** `.text-web-heading-xs` - Desktop 20/28 - Weight Semi Bold Small titles, quotes The quick brown fox jumps over the lazy dog **Web/Body lg** `.text-web-body-lg` - Desktop 18/28 - Weight Regular Lead paragraphs Atomus keeps product UI and marketing websites in one design language. **Web/Body** `.text-web-body` - Desktop 16/24 - Weight Regular Website body copy Atomus keeps product UI and marketing websites in one design language. **Web/Eyebrow** `.text-web-eyebrow` - Desktop 14/20 - Weight Semi Bold Labels above headings Design system **Web/Quote** `.text-web-quote` - Desktop 20/28 - Weight Italic Atomus keeps product UI and marketing websites in one design language. --- # Spacing, layout and breakpoints URL: https://docs.atomus.io/foundations/spacing-layout/ Breakpoints: **Desktop ≥ 1024px**, **Tablet 768–1023px**, **Mobile < 768px** (Figma frames 1440 / 768 / 375). ### Inside components (padding, gaps) | Token | Desktop | Tablet | Mobile | Preview | | ---------------- | ------- | ------ | ------ | ------- | | `--spacing-none` | 0 | 0 | 0 | | | `--spacing-xxs` | 2 | 2 | 2 | | | `--spacing-xs` | 4 | 4 | 4 | | | `--spacing-sm` | 6 | 6 | 6 | | | `--spacing-md` | 8 | 8 | 8 | | | `--spacing-lg` | 12 | 12 | 12 | | | `--spacing-xl` | 16 | 16 | 16 | | | `--spacing-2xl` | 20 | 20 | 20 | | | `--spacing-3xl` | 24 | 24 | 24 | | ### Between blocks and sections | Token | Desktop | Tablet | Mobile | Preview | | -------------- | ------- | ------ | ------ | ------- | | `--layout-xs` | 32 | 32 | 24 | | | `--layout-sm` | 40 | 32 | 24 | | | `--layout-md` | 48 | 40 | 32 | | | `--layout-lg` | 56 | 48 | 32 | | | `--layout-xl` | 64 | 48 | 40 | | | `--layout-2xl` | 72 | 56 | 40 | | | `--layout-3xl` | 80 | 64 | 40 | | | `--layout-4xl` | 96 | 72 | 56 | | | `--layout-5xl` | 120 | 80 | 56 | | | `--layout-6xl` | 160 | 120 | 80 | | | `--layout-7xl` | 200 | 160 | 80 | | | `--layout-8xl` | 240 | 160 | 80 | | ### Icon size | Token | Desktop | Tablet | Mobile | Preview | | ----------- | ------- | ------ | ------ | ------- | | `--icon-xs` | 12 | 12 | 12 | | | `--icon-sm` | 16 | 16 | 16 | | | `--icon-md` | 20 | 20 | 20 | | | `--icon-lg` | 24 | 24 | 24 | | | `--icon-xl` | 32 | 32 | 32 | | ### Control height (sm 32, md 40, lg 48) | Token | Desktop | Tablet | Mobile | Preview | | ------------ | ------- | ------ | ------ | ------- | | `--size-xs` | 24 | 24 | 24 | | | `--size-sm` | 32 | 32 | 32 | | | `--size-md` | 40 | 40 | 40 | | | `--size-lg` | 48 | 48 | 48 | | | `--size-xl` | 56 | 56 | 56 | | | `--size-2xl` | 64 | 64 | 64 | | ### Page container | Token | Desktop | Tablet | Mobile | Preview | | ----------------------- | ------- | ------ | ------ | ------- | | `--container-padding` | 80 | 32 | 16 | | | `--container-max-width` | 1280 | 704 | 343 | | | `--section-padding` | 96 | 72 | 56 | | Grid styles in Figma: Desktop 12 col (gutter 32, margin 80), Tablet 8 col (24 / 32), Mobile 4 col (16 / 16), plus 8px and 4px baseline grids. --- # Radius and effects URL: https://docs.atomus.io/foundations/radius-effects/ ## Radius (modes: Default · Sharp · Round) Default **0** Sharp **0** Round **0** `--radius-none` Default **2** Sharp **0** Round **4** `--radius-xxs` Default **4** Sharp **2** Round **6** `--radius-xs` Default **6** Sharp **2** Round **8** `--radius-sm` Default **8** Sharp **4** Round **12** `--radius-md` Default **10** Sharp **4** Round **16** `--radius-lg` Default **12** Sharp **6** Round **20** `--radius-xl` Default **16** Sharp **8** Round **24** `--radius-2xl` Default **20** Sharp **10** Round **32** `--radius-3xl` Default **24** Sharp **12** Round **40** `--radius-4xl` Default **full** Sharp **full** Round **full** `--radius-full` Default **32** Sharp **16** Round **48** `--radius-5xl` Default **40** Sharp **20** Round **64** `--radius-6xl` Controls (buttons, inputs) use `radius-md`; cards `radius-xl`/`2xl`; badges and avatars `radius-full`. ## Shadows (Effects: Light · Dark) `--shadow-elevation-1 … 24`. Use 1–2 for cards, 3–4 for dropdowns and popovers, 6–8 for drawers and modals, 9+ for marketing visuals. Dark mode uses stronger, neutral shadows. 1 Cards `--shadow-elevation-1` Values **Light** `0px 1px 2px 0px #1111140f` **Dark** `0px 1px 2px 0px #00000026` 2 Cards `--shadow-elevation-2` Values **Light** `0px 1px 3px 0px #11111414, 0px 1px 2px 0px #1111140f` **Dark** `0px 1px 3px 0px #00000033, 0px 1px 2px 0px #00000026` 3 Dropdowns, popovers `--shadow-elevation-3` Values **Light** `0px 4px 8px -2px #1111141a, 0px 1px 2px 0px #1111140a` **Dark** `0px 4px 8px -2px #00000040, 0px 1px 2px 0px #00000019` 4 Dropdowns, popovers `--shadow-elevation-4` Values **Light** `0px 12px 16px -4px #11111414, 0px 4px 6px -2px #1111140a` **Dark** `0px 12px 16px -4px #00000033, 0px 4px 6px -2px #00000019` 6 Drawers, modals `--shadow-elevation-6` Values **Light** `0px 20px 24px -4px #11111414, 0px 8px 8px -4px #11111408` **Dark** `0px 20px 24px -4px #00000033, 0px 8px 8px -4px #00000013` 8 Drawers, modals `--shadow-elevation-8` Values **Light** `0px 24px 48px -12px #1111142e` **Dark** `0px 24px 48px -12px #00000073` 9 Marketing visuals `--shadow-elevation-9` Values **Light** `0px 32px 64px -12px #1111143d` **Dark** `0px 32px 64px -12px #00000099` 12 Marketing visuals `--shadow-elevation-12` Values **Light** `0px 40px 80px -12px #11111452` **Dark** `0px 40px 80px -12px #00000099` 16 Marketing visuals `--shadow-elevation-16` Values **Light** `0px 48px 96px -12px #11111466` **Dark** `0px 48px 96px -12px #00000099` 24 Marketing visuals `--shadow-elevation-24` Values **Light** `0px 56px 112px -12px #1111147a` **Dark** `0px 56px 112px -12px #00000099` ## Focus Focused controls get a 4px ring in `bg-brand-subtle` (`--shadow-focus-ring`) and a `border-brand` stroke; errors use `bg-error-subtle` / `border-error`. Focused input `--shadow-focus-ring` + `--color-border-brand` Invalid input `--shadow-focus-ring-error` + `--color-border-error` ## Blur Effect styles `Blur/Backdrop sm 8 · md 16 · lg 24 · xl 40` for glass overlays. 8px Effect style `Blur/Backdrop sm` `backdrop-filter: blur(8px)` 16px Effect style `Blur/Backdrop md` `backdrop-filter: blur(16px)` 24px Effect style `Blur/Backdrop lg` `backdrop-filter: blur(24px)` 40px Effect style `Blur/Backdrop xl` `backdrop-filter: blur(40px)` ## Motion Streaming motion for the Agent kit: `--motion-stream-caret-blink` (1s) is the blink period of the Streaming text caret, and `--motion-stream-shimmer-duration` (1.8s) is one sweep of the Shimmer on status text. Under `prefers-reduced-motion: reduce` both become `0s` and the components switch the animation off: the caret stays solid and the shimmer shows static text. --- # Icons URL: https://docs.atomus.io/foundations/icons/ - **UI icons**: 88 components named `icon/` (e.g. `icon/arrow-right`, `icon/magnifying-glass`). 24px frame; colour from Foreground tokens. Swap via the icon property of Button, Input, Badge, Menu item… - Because names match Font Awesome, a file can switch to Font Awesome Pro with **Swap library**. - Sizes: `icon-xs 12 · sm 16 · md 20 · lg 24 · xl 32`. - Other sets: Icon brand (44 logos), Icon payment (24), Icon flag (18), Icon file type (12 types × 2 sizes), Icon folder, Icon integration (16 app tiles), Star rating, Featured icon. - Never mix icon families; never use an icon without a label or tooltip for actions. ## Sizes `--icon-xs` 12px `--icon-sm` 16px `--icon-md` 20px `--icon-lg` 24px `--icon-xl` 32px ## Glyphs in the React package The React components ship a small set of internal glyphs (``) for checks, close buttons, status and navigation. Product icons come from the 88 `icon/*` components in Figma or Font Awesome. - `check` - `minus` - `x` - `plus` - `info` - `alert` - `success` - `search` - `folder` - `user` - `home` - `settings` - `bell` - `menu` - `more` - `calendar` - `sort` - `arrowUp` - `arrowDown` - `chevronDown` - `chevronUp` - `chevronLeft` - `chevronRight` --- # Theming URL: https://docs.atomus.io/foundations/theming/ Three collections re-theme everything without touching components. Set the mode on the top frame (Figma) or an attribute on an element (code): | Collection | Modes | Code | | ---------------------------- | ----------------------------------------- | ------------------------- | | Brand | Atomus · Example — Violet · (your brands) | `data-brand="violet"` | | Color | Light · Dark | `data-theme="dark"` | | Radius | Default · Sharp · Round | `data-radius="sharp"` | | Spacing & Layout, Typography | Desktop · Tablet · Mobile | media queries (automatic) | **Add a client brand:** add a mode to Brand, point `brand-25 … brand-950` at the client ramp (add the ramp to \_Primitives first). In CSS, copy the `[data-brand="violet"]` block. --- # Components > Every Atomus component: live React demos, the Figma properties and variants, and usage guidance on one page. URL: https://docs.atomus.io/components/ Each page shows the component live, then its Figma properties and variants, then how to use it in code, with the full React API at the end. 31 components ship in React; the rest are Figma-only for now. Not sure which one you need? See [Choosing a component](https://docs.atomus.io/components/choosing/). ## Actions [Button Triggers an action. Five hierarchies, five sizes from 24 to 56px. React + Figma](https://docs.atomus.io/components/button/) [Button group Connected buttons for switching views or filters. Figma only](https://docs.atomus.io/components/button-group/) ## Forms & inputs [Input Single-line text field with label, hint and error. Heights match Button. React + Figma](https://docs.atomus.io/components/input/) [Select Pick one value from a list. Keyboard and screen-reader ready. React + Figma](https://docs.atomus.io/components/select/) [Checkbox, Radio & Toggle Selection controls in two sizes. React + Figma](https://docs.atomus.io/components/checkbox-radio-toggle/) [Date picker A date field with a calendar; single dates or ranges. React + Figma](https://docs.atomus.io/components/date-picker/) [Slider Slider for a single value or a range. Figma only](https://docs.atomus.io/components/slider/) [File upload A drop zone and upload rows with progress, success and error states. Figma only](https://docs.atomus.io/components/file-upload/) [Color picker Saturation area, hue slider, eyedropper, hex field and presets. Figma only](https://docs.atomus.io/components/color-picker/) [Text editor Rich text editor shell. Figma only](https://docs.atomus.io/components/text-editor/) ## Feedback [Alert Inline messages about a page, section or form. React + Figma](https://docs.atomus.io/components/alert/) [Toast Short floating confirmations with auto-dismiss. React + Figma](https://docs.atomus.io/components/toast/) [Banner Full-width announcement bar. Figma only](https://docs.atomus.io/components/banner/) [Notifications Dropdown panel for the bell icon: header, tabs, rows, footer link. Figma only](https://docs.atomus.io/components/notifications/) [Progress bar Progress of a known task or quota. React + Figma](https://docs.atomus.io/components/progress-bar/) [Loading & skeleton Spinners for short waits and skeletons that hold the layout while content loads. Figma only](https://docs.atomus.io/components/loading-skeleton/) [Empty state Fills empty pages and tables, and says what to do next. React + Figma](https://docs.atomus.io/components/empty-state/) ## Navigation [Navigation App header, sidebar and nav items. React + Figma](https://docs.atomus.io/components/navigation/) [Tabs Switch between views. Underline, pill or segmented. React + Figma](https://docs.atomus.io/components/tabs/) [Breadcrumb Breadcrumb trail; last segment is Current. Figma only](https://docs.atomus.io/components/breadcrumb/) [Pagination & carousel Pagination for tables and lists, and carousel controls for marketing galleries. Figma only](https://docs.atomus.io/components/pagination/) [Progress steps Multi-step flow indicator for onboarding, checkout and setup wizards. Figma only](https://docs.atomus.io/components/progress-steps/) ## Data display [Table Rows of records with sorting and selection. React + Figma](https://docs.atomus.io/components/table/) [Badge & Tag Status labels and removable chips. React + Figma](https://docs.atomus.io/components/badge-tag/) [Avatar People and workspaces, 24 to 64px, with initials fallback and status. React + Figma](https://docs.atomus.io/components/avatar/) [Metric card A single KPI for dashboards. React + Figma](https://docs.atomus.io/components/metric-card/) [Activity item A feed or notification row: who did what, and when. Figma only](https://docs.atomus.io/components/activity-item/) [Code snippet Copyable code, Roboto Mono. Figma only](https://docs.atomus.io/components/code-snippet/) [Tree view Nested, expandable lists for files, folders and navigation hierarchies. Figma only](https://docs.atomus.io/components/tree-view/) [Messaging Chat panel: header, Messages slot, composer. Figma only](https://docs.atomus.io/components/messaging/) ## Overlays [Modal A dialog that blocks the page until the person decides. React + Figma](https://docs.atomus.io/components/modal/) [Dropdown menu A list of actions that opens from a button. React + Figma](https://docs.atomus.io/components/dropdown-menu/) [Tooltip & popover Dark tooltip; arrow None, Top, Bottom, Left, Right. Figma only](https://docs.atomus.io/components/tooltip-popover/) [Drawer & slideout Panel from right, left or bottom (mobile sheet); content is a slot. Figma only](https://docs.atomus.io/components/drawer/) [Command menu ⌘K command palette; results are a slot. Figma only](https://docs.atomus.io/components/command-menu/) ## Layout & content [Card Groups related content and actions. Outlined, elevated or filled. React + Figma](https://docs.atomus.io/components/card/) [Headers & dividers Top of an app page: breadcrumb, title, description, actions, divider or tabs. Figma only](https://docs.atomus.io/components/headers-dividers/) ## Media & assets [Atomus icons Icon sets beyond the UI icons: featured icons, brand and payment marks, flags, file types, folders, integrations and star ratings. Figma only](https://docs.atomus.io/components/atomus-icons/) [Shared assets Mockups and annotation kit used across product and marketing files: credit card, video player, email template, status tags and spec annotations. Figma only](https://docs.atomus.io/components/shared-assets/) ## Charts [Charts Line, bar, pie, radar and gauge charts for dashboards and reports, with a shared legend item. Figma only](https://docs.atomus.io/components/charts/) ## AI [Conversation A full AI conversation built from the Agent kit: welcome state, reasoning, a tool call, an approval and a cited answer. React + Figma](https://docs.atomus.io/components/ai-conversation/) [Prompt input The composer of an AI chat: auto-growing text, attachments, a toolbar slot, send and stop, and / or @ menus. React + Figma](https://docs.atomus.io/components/ai-prompt-input/) [Message One turn in a conversation, with the speaker, status, actions and branches. React + Figma](https://docs.atomus.io/components/ai-message/) [Streaming text & shimmer Text that renders as it streams, with a caret and calm screen-reader announcements, and a shimmer for status lines. React + Figma](https://docs.atomus.io/components/ai-streaming-text/) [Reasoning A collapsible “Thought for 12s” disclosure with the agent’s steps. React + Figma](https://docs.atomus.io/components/ai-reasoning/) [Tool call One function call by the agent: name, status, duration, input and output. React + Figma](https://docs.atomus.io/components/ai-tool-call/) [Approval Human-in-the-loop confirmation before an agent acts: approve, deny, or edit then approve. React + Figma](https://docs.atomus.io/components/ai-approval/) [Sources & citations Numbered inline citations with preview cards, and the list of sources behind an answer. React + Figma](https://docs.atomus.io/components/ai-sources/) [Suggestions Follow-up prompts as chips and prompt starters as cards, to send or insert. React + Figma](https://docs.atomus.io/components/ai-suggestions/) [Model selector A Select for AI models with provider icons, descriptions and capability badges. React + Figma](https://docs.atomus.io/components/ai-model-selector/) [Feedback Thumbs up and down on an AI reply, with an optional reason form. React + Figma](https://docs.atomus.io/components/ai-feedback/) [AI label Marks AI-generated content and opens an explainability popover, with Revert to AI after edits. React + Figma](https://docs.atomus.io/components/ai-label/) [Context meter How much of the model’s context window a conversation uses, and what it cost. React + Figma](https://docs.atomus.io/components/ai-context-meter/) --- # Choosing a component > Every Atomus component with its purpose and React export, other names, and decision trees. URL: https://docs.atomus.io/components/choosing/ Generated from [`guidelines/overview-components.md`](https://github.com/StanVisionAgency/atomus/blob/main/guidelines/overview-components.md). Agents read the same file before they pick a component. Use this file to pick the right component before you write code or design. For props and rules, open the component’s file in `components/`. Its **React API** section lists every prop, value and default. **React** names the export from `@stanvision/atomus-react`. “—” means the component is **Figma only**. Don’t import it in code. Compose it from tokens and the React components named in its guideline file. ## Catalogue ### Actions | Component | Use it for | React | Guideline | | ------------ | --------------------------------------------------------------------------------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------- | | Button | Triggering an action. Hierarchies primary · secondary · outline · tertiary · link; sizes xs–xl (24–56px). | `Button` | [`components/button.md`](https://docs.atomus.io/components/button/) | | Button icon | Icon-only action in toolbars and rows. Always has an `aria-label`. | `Button iconOnly` | [`components/button.md`](https://docs.atomus.io/components/button/) | | Button group | 2–5 joined, mutually exclusive options (view or filter switch). | — (use `Tabs variant="segmented"`) | [`components/button-group.md`](https://docs.atomus.io/components/button-group/) | ### Forms and inputs | Component | Use it for | React | Guideline | | ----------------------------------------------------------------------------- | --------------------------------------------------------------------------- | ------------------------ | ------------------------------------------------------------------------------------------- | | Input | Single-line text, email, number, search. Sizes sm · md · lg (32 · 40 · 48). | `Input` | [`components/input-select.md`](https://docs.atomus.io/components/input/) | | Textarea | Multi-line text. | — | [`components/input-select.md`](https://docs.atomus.io/components/input/) | | Number input, Phone input, Payment input, Verification code input, Tags input | Formatted text entry. | — | [`components/input-select.md`](https://docs.atomus.io/components/input/) | | Select | One value from a list (6+ options, or when space is tight). | `Select` | [`components/input-select.md`](https://docs.atomus.io/components/input/) | | Multi-select | Several values from a list, shown as tags. | — | [`components/input-select.md`](https://docs.atomus.io/components/input/) | | Slider | A value or range on a continuous scale. | — | [`components/input-select.md`](https://docs.atomus.io/components/input/) | | Checkbox | Independent yes/no choices; several can be on. | `Checkbox` | [`components/checkbox-radio.md`](https://docs.atomus.io/components/checkbox-radio-toggle/) | | Radio | One choice from 2–5 visible options. | `Radio` | [`components/checkbox-radio.md`](https://docs.atomus.io/components/checkbox-radio-toggle/) | | Toggle | A setting that applies immediately. | `Toggle` | [`components/toggle.md`](https://docs.atomus.io/components/checkbox-radio-toggle/) | | Date input, Date picker, Calendar day | Picking a date or a range. | `DatePicker`, `Calendar` | [`components/date-time-pickers.md`](https://docs.atomus.io/components/date-picker/) | | File upload, File upload item | Drop zone and per-file progress. | — | [`components/empty-state-file-upload.md`](https://docs.atomus.io/components/file-upload/) | | Color picker, Color swatch | Picking a colour. | — | [`components/tree-editor-color-picker.md`](https://docs.atomus.io/components/color-picker/) | | Text editor, Editor toolbar button | Rich-text editing. | — | [`components/tree-editor-color-picker.md`](https://docs.atomus.io/components/color-picker/) | ### Feedback | Component | Use it for | React | Guideline | | -------------------------------------- | --------------------------------------------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------------- | | Alert | A persistent message about a page, section or form. | `Alert` | [`components/message-alert.md`](https://docs.atomus.io/components/alert/) | | Toast | A short, temporary confirmation of something the user just did. | `Toast`, `ToastProvider`, `useToast` | [`components/message-alert.md`](https://docs.atomus.io/components/alert/) | | Banner | One product- or account-wide announcement across the top of the page. | — | [`components/metrics-feeds.md`](https://docs.atomus.io/components/banner/) | | Notifications panel, Notification item | The bell-icon inbox. | — | [`components/message-alert.md`](https://docs.atomus.io/components/alert/) | | Progress bar, Progress circle | Progress of a task with a known percentage. | `ProgressBar` (bar only) | [`components/progress-loading.md`](https://docs.atomus.io/components/progress-bar/) | | Loading indicator | A spinner for short waits of unknown length. | — (`Button loading` for buttons) | [`components/progress-loading.md`](https://docs.atomus.io/components/progress-bar/) | | Skeleton | A placeholder that holds the layout while content loads. | — | [`components/progress-loading.md`](https://docs.atomus.io/components/progress-bar/) | | Empty state | An empty page, table or panel, with an icon, explanation and action. | `EmptyState` | [`components/empty-state-file-upload.md`](https://docs.atomus.io/components/file-upload/) | ### Navigation | Component | Use it for | React | Guideline | | ---------------------------- | --------------------------------------------------------------------------- | ------------------------------ | ----------------------------------------------------------------------------------- | | Sidebar navigation, Nav item | The main app navigation (280px, or a 72px rail). | `SidebarNavigation`, `NavItem` | [`components/navigation.md`](https://docs.atomus.io/components/navigation/) | | App header | Top bar of an app: brand, links, search, notifications, account. | `AppHeader` | [`components/navigation.md`](https://docs.atomus.io/components/navigation/) | | Tabs, Tab | Switching between views of the same content (underline · pill · segmented). | `Tabs` | [`components/tabs.md`](https://docs.atomus.io/components/tabs/) | | Vertical tabs | Settings sub-navigation. | — (list of `NavItem`) | [`components/tabs.md`](https://docs.atomus.io/components/tabs/) | | Breadcrumb | The path to the current page in deep hierarchies. | — | [`components/breadcrumb.md`](https://docs.atomus.io/components/breadcrumb/) | | Pagination, Carousel | Paging tables and lists; stepping through galleries. | — | [`components/pagination.md`](https://docs.atomus.io/components/pagination/) | | Progress steps, Step | A multi-step flow (onboarding, checkout, setup). | — | [`components/progress-loading.md`](https://docs.atomus.io/components/progress-bar/) | | Header navigation, Footer | Website header and footer. | — | [`website-sections.md`](https://docs.atomus.io/website-sections/) | ### Data display | Component | Use it for | React | Guideline | | ---------------------------------------- | --------------------------------------------------- | ------------ | ------------------------------------------------------------------------------------------- | | Table (header cell, cell) | Rows of records you compare, sort and select. | `Table` | [`components/table.md`](https://docs.atomus.io/components/table/) | | Filter bar | Search, filters and actions above a table. | — | [`components/table.md`](https://docs.atomus.io/components/table/) | | Badge | A short status or count label. | `Badge` | [`components/badge.md`](https://docs.atomus.io/components/badge-tag/) | | Tag | A removable value: filter, skill, recipient. | `Tag` | [`components/badge.md`](https://docs.atomus.io/components/badge-tag/) | | Avatar, Avatar group, Avatar label group | A person or workspace. | `Avatar` | [`components/avatar.md`](https://docs.atomus.io/components/avatar/) | | Metric card | A KPI: number, change and period. | `MetricCard` | [`components/metrics-feeds.md`](https://docs.atomus.io/components/banner/) | | Activity item | A feed row: who did what, when. | — | [`components/metrics-feeds.md`](https://docs.atomus.io/components/banner/) | | Code snippet | Copyable code. | — | [`components/metrics-feeds.md`](https://docs.atomus.io/components/banner/) | | Tree view, Tree item | Nested, expandable hierarchies (files, categories). | — | [`components/tree-editor-color-picker.md`](https://docs.atomus.io/components/color-picker/) | | Chat, Message bubble, Message input | Messaging. | — | [`components/messaging.md`](https://docs.atomus.io/components/messaging/) | | Charts | Line, bar, pie, radar, activity gauge, legend item. | — | [`components/charts.md`](https://docs.atomus.io/components/charts/) | ### Overlays | Component | Use it for | React | Guideline | | ------------------------ | ------------------------------------------------------------------------- | -------------------------- | ------------------------------------------------------------------------------------- | | Modal | A focused task or decision that blocks the page. Sizes 400 · 544 · 720px. | `Modal` | [`components/modal.md`](https://docs.atomus.io/components/modal/) | | Dropdown menu, Menu item | A short list of actions from a trigger. | `DropdownMenu`, `MenuItem` | [`components/menu.md`](https://docs.atomus.io/components/dropdown-menu/) | | Context menu | Right-click actions. | `DropdownMenu` | [`components/menu.md`](https://docs.atomus.io/components/dropdown-menu/) | | Tooltip | A one-sentence hint on hover or focus. | — | [`components/tooltip-popover.md`](https://docs.atomus.io/components/tooltip-popover/) | | Drawer, Slideout menu | A side panel for details or secondary forms. | — | [`components/slideout-command-menu.md`](https://docs.atomus.io/components/drawer/) | | Command menu | ⌘K search and actions. | — | [`components/slideout-command-menu.md`](https://docs.atomus.io/components/drawer/) | ### Layout and content | Component | Use it for | React | Guideline | | ---------------------------------- | ------------------------------------------------------------------- | ------ | --------------------------------------------------------------------------------------- | | Card (Card header, Section footer) | A bounded group of related content with optional header and footer. | `Card` | [`components/card.md`](https://docs.atomus.io/components/card/) | | Inline CTA | A call to action inside app pages or articles. | — | [`components/card.md`](https://docs.atomus.io/components/card/) | | Page header | Top of an app page: breadcrumb, title, description, actions, tabs. | — | [`components/headers-dividers.md`](https://docs.atomus.io/components/headers-dividers/) | | Section header | A heading for a section inside a page. | — | [`components/headers-dividers.md`](https://docs.atomus.io/components/headers-dividers/) | | Divider | A rule between groups, optionally with a label. | — | [`components/headers-dividers.md`](https://docs.atomus.io/components/headers-dividers/) | | Website sections | Hero, features, pricing, FAQ, CTA … 30 responsive sections. | — | [`website-sections.md`](https://docs.atomus.io/website-sections/) | ### Media and assets | Component | Use it for | React | Guideline | | ------------- | -------------------------------------------------------------------------------- | ----- | --------------------------------------------------------------------------------- | | Featured icon | An icon in a tinted circle or square for empty states, modals and feature lists. | — | [`components/atomus-icons.md`](https://docs.atomus.io/components/atomus-icons/) | | Icon sets | Brand, payment, flag, file-type, folder and integration icons; star rating. | — | [`components/atomus-icons.md`](https://docs.atomus.io/components/atomus-icons/) | | Shared assets | Mockups and annotation kit (design files only). | — | [`components/shared-assets.md`](https://docs.atomus.io/components/shared-assets/) | ### AI (Agent kit) Components for AI products: chat, copilots and agents. They mark AI content with the AI layer (`--color-bg-ai-subtle`, `--color-border-ai`, `--color-text-ai`, `--gradient-ai`) and take plain props, so they work with any AI SDK. | Component | Use it for | React | Guideline | | ------------------------ | ----------------------------------------------------------------------------------------------------------------- | --------------------------- | ----------------------------------------------------------------------------------------- | | Conversation | The pattern: header, `role="log"` thread of Messages, welcome state with starters, docked Prompt input. | — (compose the parts) | [`components/ai-message.md`](https://docs.atomus.io/components/ai-conversation/) | | Prompt input | The chat composer: auto-growing text, attachments, toolbar slot, Send ↔ Stop, `/` and `@` menus. | `PromptInput` | [`components/ai-prompt-input.md`](https://docs.atomus.io/components/ai-prompt-input/) | | Message | One turn: user, assistant, system or tool; streaming, error and stopped states; copy, regenerate, edit, branches. | `Message` | [`components/ai-message.md`](https://docs.atomus.io/components/ai-conversation/) | | Streaming text, Shimmer | A reply that renders as it streams, with a caret and batched announcements; a shimmer for status lines. | `StreamingText`, `Shimmer` | [`components/ai-streaming-text.md`](https://docs.atomus.io/components/ai-streaming-text/) | | Reasoning | A collapsible “Thought for 12s” disclosure with the agent’s steps. | `Reasoning` | [`components/ai-reasoning.md`](https://docs.atomus.io/components/ai-reasoning/) | | Tool call | One function call: name, status, duration, input and output. | `ToolCall` | [`components/ai-tool-call.md`](https://docs.atomus.io/components/ai-tool-call/) | | Approval | Human-in-the-loop confirmation before an agent acts; risk level, edit then approve, always allow. | `Approval` | [`components/ai-approval.md`](https://docs.atomus.io/components/ai-approval/) | | Sources, Inline citation | Numbered citations with preview cards and the list of sources behind an answer. | `Sources`, `InlineCitation` | [`components/ai-sources.md`](https://docs.atomus.io/components/ai-sources/) | | Suggestions | Follow-up chips and prompt-starter cards that send or insert a prompt. | `Suggestions` | [`components/ai-suggestions.md`](https://docs.atomus.io/components/ai-suggestions/) | | Model selector | Choosing the AI model, with provider icons and capability badges. | `ModelSelector` | [`components/ai-model-selector.md`](https://docs.atomus.io/components/ai-model-selector/) | | Feedback | Thumbs up / down on a reply, with a reason form. | `Feedback` | [`components/ai-feedback.md`](https://docs.atomus.io/components/ai-feedback/) | | AI label | Marks AI-generated content; explainability popover; “Revert to AI” after edits. | `AILabel` | [`components/ai-label.md`](https://docs.atomus.io/components/ai-label/) | | Context meter | Context-window usage and cost of a conversation. | `ContextMeter` | [`components/ai-context-meter.md`](https://docs.atomus.io/components/ai-context-meter/) | ## Also called If a request uses one of these names, use the Atomus component on the right. | You may hear | Atomus component | | ----------------------------------------------------------------- | --------------------------------------------------------------------------------- | | dialog, popup, lightbox, confirm dialog | Modal | | sheet, side sheet, side panel, off-canvas, flyout | Drawer | | snackbar, notification (temporary), flash message | Toast | | callout, inline message, notice | Alert | | announcement bar, top bar message | Banner | | chip, pill, token (removable) | Tag | | pill, label, status, lozenge (read-only) | Badge | | switch | Toggle | | dropdown (picks a value), picker | Select | | dropdown (runs actions), kebab menu, overflow menu, action menu | Dropdown menu | | right-click menu | Context menu | | combobox, autocomplete, typeahead | Select. A searchable combobox is not in Atomus yet (see the decision tree below). | | segmented control, toggle group | Tabs `variant="segmented"` (code) / Button group (Figma) | | stepper, wizard | Progress steps | | spinner, loader | Loading indicator (`Button loading` inside buttons) | | placeholder, shimmer | Skeleton | | zero state, blank slate, no results | Empty state | | dropzone, uploader | File upload | | data grid, data table, list view | Table | | KPI, stat, scorecard | Metric card | | navbar, top nav (app) | App header | | navbar, site header (website) | Header navigation | | side nav, rail | Sidebar navigation | | panel, tile, box, container | Card | | separator, hr, rule | Divider | | page title, page heading | Page header | | command palette, ⌘K, spotlight | Command menu | | hint, info bubble | Tooltip | | accordion | FAQ item (website) | | range slider | Slider | | image slider, gallery | Carousel | | user picture, profile image | Avatar | | rating | Star rating | | rich text editor, WYSIWYG | Text editor | | chatbot, assistant panel, copilot, chat UI, AI chat | Conversation (Message + Prompt input) | | composer, chat input, prompt box, prompt bar | Prompt input | | chat bubble, AI response, turn | Message | | typing indicator, thinking indicator, “Thinking…” | Shimmer (or Reasoning with `status="thinking"`) | | chain of thought, thoughts, plan | Reasoning | | function call, tool use, tool invocation, MCP tool | Tool call | | confirmation (agent), human-in-the-loop, permission prompt | Approval | | citations, references, footnotes (AI) | Sources, Inline citation | | quick replies, follow-ups, prompt starters, conversation starters | Suggestions | | model picker, model switcher, LLM dropdown | Model selector | | thumbs up / down, rate response | Feedback | | AI badge, sparkle badge, “AI generated” tag | AI label | | token counter, usage meter, context window | Context meter | ## Decision trees ### Which button hierarchy? 1. Is it **the** main action of this view (screen, modal, card, form)? → `primary`. There is only one per view. 2. Is it an alternative to the main action (“Cancel”, “Save draft”, “Export”)? → `outline` on white surfaces, `secondary` on grey or in dense groups. 3. Is it in a toolbar, table row, card header or another dense spot? → `tertiary` (often `iconOnly` with an `aria-label`). 4. Does it sit inside a sentence or look like a link (“Learn more”, “Edit”)? → `link`. 5. Is it destructive? → In a confirmation Modal (`type="destructive"`) the confirm button is the `primary`. Elsewhere use `outline` and confirm first. Never use `link` for destructive actions. 6. Does it go to another page? → Use a link (``, or `NavItem` in navigation), not a Button. Sizes: `md` in product UI, `sm`/`xs` in tables and toolbars, `lg`/`xl` on marketing pages. Match the inputs on the same row. ### Input, Textarea, Select, Multi-select, Combobox, Radio, Checkbox or Toggle? 1. Is the answer free text? - One line → **Input** (`type="email"`, `"number"`, `"search"` …). - Several lines → **Textarea** (Figma only; in code a native `