Colors
Semantic token guideA reference list of Airy semantic color tokens and primitive ramps. Prefer semantic tokens for UI usage, and use raw primitive values only for one-off, highly specific color needs.
background Main application canvas. | var(--color-white) | var(--color-terra-900) |
foreground Default text and icon color. | var(--color-neutral-900) | var(--color-neutral-100) |
card Elevated container surfaces. | var(--color-white) | var(--color-terra-800) |
card-foreground Text and icon color on card surfaces. | var(--color-neutral-900) | var(--color-neutral-100) |
popover Popover, menu, and dropdown surfaces. | var(--color-white) | var(--color-terra-800) |
popover-foreground Text and icon color on popover surfaces. | var(--color-neutral-900) | var(--color-neutral-100) |
primary Primary actions and emphasis. | var(--color-green-900) | var(--color-terra-50) |
primary-foreground Text and icon color on primary surfaces. | var(--color-white) | var(--color-neutral-950) |
secondary Lower-emphasis actions and supportive surfaces. | oklch(var(--primitive-neutral-900) / 10%) | var(--color-terra-700) |
secondary-foreground Text and icon color on secondary surfaces. | var(--color-neutral-900) | var(--color-neutral-100) |
muted Subdued backgrounds for low-priority content. | var(--color-neutral-100) | var(--color-terra-700) |
muted-foreground Text and icon color on muted surfaces. | var(--color-neutral-500) | var(--color-neutral-400) |
accent Interactive hover/active emphasis surfaces. | oklch(var(--primitive-neutral-900) / 10%) | var(--color-terra-700) |
accent-foreground Text and icon color on accent surfaces. | var(--color-neutral-900) | var(--color-neutral-100) |
destructive Error and dangerous actions. | var(--color-red-700) | var(--color-red-400) |
destructive-foreground Text and icon color on destructive surfaces. | var(--color-white) | var(--color-white) |
border Default dividers and component outlines. | oklch(var(--primitive-black) / 10%) | oklch(var(--primitive-white) / 10%) |
input Input and control chrome. | var(--color-neutral-200) | oklch(var(--primitive-white) / 15%) |
ring Focus ring and active outline color. | var(--color-neutral-400) | var(--color-terra-400) |
sidebar Sidebar base surface. | var(--color-mud-50) | var(--color-terra-950) |
sidebar-foreground Text and icon color on sidebar surfaces. | var(--color-neutral-900) | var(--color-neutral-300) |
sidebar-primary Sidebar-specific semantic color token. | var(--color-neutral-900) | var(--color-terra-50) |
sidebar-primary-foreground Text and icon color on sidebar primary surfaces. | var(--color-neutral-900) | var(--color-neutral-950) |
sidebar-accent Sidebar-specific semantic color token. | oklch(var(--primitive-neutral-500) / 10%) | var(--color-terra-800) |
sidebar-accent-foreground Text and icon color on sidebar accent surfaces. | var(--color-neutral-900) | var(--color-neutral-50) |
sidebar-border Border color for sidebar UI. | oklch(var(--primitive-black) / 10%) | oklch(var(--primitive-white) / 10%) |
sidebar-ring Sidebar-specific semantic color token. | var(--color-green-800) | var(--color-terra-400) |
success-background Background surface color for success UI. | var(--color-success-50) | var(--color-success-700) |
success-foreground Text and icon color on success surfaces. | var(--color-success-700) | var(--color-success-200) |
success-border Border color for success UI. | oklch(var(--primitive-black) / 2%) | oklch(var(--primitive-white) / 10%) |
info-background Background surface color for info UI. | var(--color-info-100) | var(--color-info-800) |
info-foreground Text and icon color on info surfaces. | var(--color-info-700) | var(--color-info-300) |
info-border Border color for info UI. | oklch(var(--primitive-black) / 2%) | oklch(var(--primitive-white) / 10%) |
warning-background Background surface color for warning UI. | var(--color-warning-100) | var(--color-warning-900) |
warning-foreground Text and icon color on warning surfaces. | var(--color-warning-700) | var(--color-warning-300) |
warning-border Border color for warning UI. | oklch(var(--primitive-black) / 2%) | oklch(var(--primitive-white) / 10%) |
error-background Background surface color for error UI. | var(--color-error-100) | var(--color-error-700) |
error-foreground Text and icon color on error surfaces. | var(--color-error-700) | var(--color-error-300) |
error-border Border color for error UI. | oklch(var(--primitive-black) / 2%) | oklch(var(--primitive-white) / 10%) |
levender-background Background surface color for levender UI. | var(--color-levender-50) | var(--color-levender-800) |
levender-foreground Text and icon color on levender surfaces. | var(--color-levender-800) | var(--color-levender-400) |
levender-border Border color for levender UI. | oklch(var(--primitive-black) / 5%) | oklch(var(--primitive-white) / 15%) |
banner-default-background Background surface color for banner default UI. | var(--color-mud-50) | var(--color-terra-800) |
banner-default-foreground Text and icon color on banner default surfaces. | var(--color-mud-950) | var(--color-neutral-400) |
banner-default-border Border color for banner default UI. | oklch(var(--primitive-black) / 2%) | oklch(var(--primitive-white) / 10%) |
chart-1 Data visualization series color. | var(--color-purple-300) | var(--color-violet-500) |
chart-2 Data visualization series color. | var(--color-blue-400) | var(--color-blue-400) |
chart-3 Data visualization series color. | var(--color-green-300) | var(--color-orange-300) |
chart-4 Data visualization series color. | var(--color-red-400) | var(--color-green-300) |
chart-5 Data visualization series color. | var(--color-yellow-200) | var(--color-fuchsia-200) |
shadow-2xl Semantic color token. | 0 25px 50px -12px rgb(0 0 0 / 0.25) | — |
shadow-2xs Semantic color token. | 0 1px rgb(0 0 0 / 0.03) | — |
shadow-lg Semantic color token. | 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1) | — |
shadow-md Semantic color token. | 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1) | — |
shadow-sm Semantic color token. | 0 1px 3px 0 rgb(0 0 0 / 0.1), 0 1px 2px -1px rgb(0 0 0 / 0.1) | — |
shadow-xl Semantic color token. | 0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1) | — |
shadow-xs Semantic color token. | 0 1px 2px 0 rgb(0 0 0 / 0.03) | — |
Primitive ramps (reference)
Full ramps for building and evolving semantic tokens.
Airy custom palettes
neutral-*abyss-*terra-*green-*mud-*levender-*Status palettes
info-*success-*warning-*error-*Standard utility palettes
red-*orange-*amber-*yellow-*emerald-*cyan-*blue-*violet-*purple-*rose-*Typography
Type scale and font styles used across the design system.
Heading 1
text-4xl font-semibold tracking-tight lg:text-5xlHeading 2
text-3xl font-semibold tracking-tightHeading 3
text-2xl font-semibold tracking-tightHeading 4
text-xl font-semibold tracking-tightBody text. The king thought long and hard, and finally came up with a brilliant plan: he would host a royal banquet.
leading-7Muted text for secondary information.
text-sm text-muted-foregroundSmall text with medium weight.
text-sm font-mediumSpacing
Spacing scale tokens used across the design system.
00.25rem0.5rem0.75rem1rem1.25rem1.5rem2rem2.5rem3rem4rem5rem6remIcons
1671 iconsAiry uses Lucide for all iconography. Click any icon to copy its import statement.
Usage
Import icons individually from lucide-react:
import { ChevronRight, Search, Settings } from "lucide-react"
<Search className="size-4" />
<Settings className="size-5 text-muted-foreground" />For icon props in component interfaces, use the LucideIcon type:
import { type LucideIcon } from "lucide-react"
interface NavItem {
title: string
icon: LucideIcon
}