Design tokens
318 named decisions from the actual component stylesheet. Search declarations, compare themes, inspect live values and export the tokens you need.
Token architecture
Primitive tokens hold raw values such as a palette shade or spacing step. Semantic tokens describe a role such as primary action, error or foreground. Component specifications record a particular recipe and its source bindings; the current JavaScript presets are not automatically overridable CSS custom properties. Prefer the narrowest meaningful role: a primary button uses a primary action token rather than a raw shade.
The rendered web system is defined in packages/ui/src/tokens/tokens.css. The catalogue below is generated with PostCSS before development and production builds. The TypeScript declarations, semantic palettes and source-bound component presets are now generated and checked against the same stylesheet. Imported objects remain authored snapshots; theme selection and local inherited overrides are read through live CSS. See Theming for the compiled-versus-rendered inspector.
A named decision and its adoption cost
A token pairs a stable name with a value or reference. It is most useful when a decision is reused, reviewed or expected to vary across themes/consumers. A token name does not itself establish that a choice is approved, accessible or appropriate for source content.
Adopt shared roles where the meaning is shared. Inventory existing overrides and users before introducing a layer; avoid turning every one-off layout measurement into a global public token. Record ownership, purpose, state coverage and migration impact alongside the value.
Names, classes and component specifications
Material uses a system prefix, ref/sys/comp class and descriptive purpose. This package uses actual CSS custom-property names and generated TypeScript objects; those namespaces are not automatic aliases for Material IDs. Keep names stable while values change, and treat renaming/removing a public name as an API migration.
Reference values provide options; system roles assign meaning for a context; component specifications connect parts and states to the chosen recipe. The Component Specifications inspector traces 19 actual presets/90 source-bound fields. Inspect enabled/hover/focus/pressed/disabled behavior and the actual rendered part rather than assuming every style has an independent token.
Contexts and alias graphs
Theme, instance scope, density, direction and device/content constraints can change the decision used by a component. This catalogue records light declarations and explicit dark overrides. It is not a universal catalogue of every media/state/instance rule. CSS inheritance and portal placement determine which context reaches a rendered element.
The reference disclosure follows parsed var() names conservatively, including fallback branches. Dependency inclusion adds matching declarations transitively and deduplicates them. Missing names may be supplied by another scope or a fallback; cycles need inspection. The graph preserves source relationships instead of inventing a resolved semantic mapping.
Live custom-property values resolve references through the page cascade but can retain units such as rem. They are not final element geometry or a global snapshot of every local override. Export theme chooses authored values, independently of the page theme.
Design-tool generation, mock-ups and handoff
The captured Material workflow starts from baseline tokens or generated theme styles, updates values/styles, applies those styles to mock-ups, swaps a selected design-kit component’s mapped styles and exports a platform format. Record tool/plugin version and format: a design-tool style, DSP package, CSS fragment and this filtered JSON catalogue are different artifacts.
For this workspace, agree on the existing role names and CSS source first. Map design styles to those roles, keep foreground/background and base/state treatments together, compare both themes, then make a reviewed stylesheet change and regenerate/check exports. No Figma plugin or native platform export runs automatically in this tool.
The JSON download records requested names, export theme and included source declarations. Dependency inclusion does not provide components, fonts, complete state rules or proof of contrast. Review the captured export at its destination, keep the source/version and mapping scope, and verify the actual consuming interface.
Token explorer
Light and dark columns show source declarations. Live values come from the current page’s computed stylesheet, so switching the page theme updates them. Changing Export theme changes copied CSS; it does not change the page theme.
318 of 318 tokens.
318 declarations in this export. This is a filtered fragment; references may require the shared stylesheet.
Declared references for the current filter and export theme
The source graph preserves var() relationships. It does not evaluate the live cascade, CSS fallback selection, units or contrast. Export theme selects authored declarations independently of the page theme.
| Name | Authored value | References |
|---|---|---|
| --breakpoint-2xl | 1536px | No declared var() reference |
| --breakpoint-lg | 1024px | No declared var() reference |
| --breakpoint-md | 768px | No declared var() reference |
| --breakpoint-sm | 640px | No declared var() reference |
| --breakpoint-xl | 1280px | No declared var() reference |
| --color-accent | #d97706 | No declared var() reference |
| --color-accent-active | #92400e | No declared var() reference |
| --color-accent-foreground | #1c1410 | No declared var() reference |
| --color-accent-hover | #b45309 | No declared var() reference |
| --color-amber-100 | #fef3c7 | No declared var() reference |
| --color-amber-200 | #fde68a | No declared var() reference |
| --color-amber-300 | #fcd34d | No declared var() reference |
| --color-amber-400 | #fbbf24 | No declared var() reference |
| --color-amber-50 | #fffbeb | No declared var() reference |
| --color-amber-500 | #f59e0b | No declared var() reference |
| --color-amber-600 | #d97706 | No declared var() reference |
| --color-amber-700 | #b45309 | No declared var() reference |
| --color-amber-800 | #92400e | No declared var() reference |
| --color-amber-900 | #78350f | No declared var() reference |
| --color-amber-950 | #451a03 | No declared var() reference |
| --color-background | #faf8f5 | No declared var() reference |
| --color-blue-100 | #dbeafe | No declared var() reference |
| --color-blue-200 | #bfdbfe | No declared var() reference |
| --color-blue-300 | #93c5fd | No declared var() reference |
| --color-blue-400 | #60a5fa | No declared var() reference |
| --color-blue-50 | #eff6ff | No declared var() reference |
| --color-blue-500 | #3b82f6 | No declared var() reference |
| --color-blue-600 | #2563eb | No declared var() reference |
| --color-blue-700 | #1d4ed8 | No declared var() reference |
| --color-blue-800 | #1e40af | No declared var() reference |
| --color-blue-900 | #1e3a8a | No declared var() reference |
| --color-blue-950 | #172554 | No declared var() reference |
| --color-border | #ddd1bf | No declared var() reference |
| --color-card | #ffffff | No declared var() reference |
| --color-card-foreground | #2e2720 | No declared var() reference |
| --color-cyan-100 | #cffafe | No declared var() reference |
| --color-cyan-200 | #a5f3fc | No declared var() reference |
| --color-cyan-300 | #67e8f9 | No declared var() reference |
| --color-cyan-400 | #22d3ee | No declared var() reference |
| --color-cyan-50 | #ecfeff | No declared var() reference |
| --color-cyan-500 | #06b6d4 | No declared var() reference |
| --color-cyan-600 | #0891b2 | No declared var() reference |
| --color-cyan-700 | #0e7490 | No declared var() reference |
| --color-cyan-800 | #155e75 | No declared var() reference |
| --color-cyan-900 | #164e63 | No declared var() reference |
| --color-cyan-950 | #083344 | No declared var() reference |
| --color-destructive | #b13518 | No declared var() reference |
| --color-destructive-active | #792b1a | No declared var() reference |
| --color-destructive-foreground | #faf8f5 | No declared var() reference |
| --color-destructive-hover | #922f19 | No declared var() reference |
| --color-error | #b13518 | No declared var() reference |
| --color-error-foreground | #faf8f5 | No declared var() reference |
| --color-eucalyptus-100 | #e0ede5 | No declared var() reference |
| --color-eucalyptus-200 | #c3dbcc | No declared var() reference |
| --color-eucalyptus-300 | #98c1a8 | No declared var() reference |
| --color-eucalyptus-400 | #6ba380 | No declared var() reference |
| --color-eucalyptus-50 | #f2f7f4 | No declared var() reference |
| --color-eucalyptus-500 | #4a8664 | No declared var() reference |
| --color-eucalyptus-600 | #386b4f | No declared var() reference |
| --color-eucalyptus-700 | #2e5641 | No declared var() reference |
| --color-eucalyptus-800 | #274536 | No declared var() reference |
| --color-eucalyptus-900 | #21392d | No declared var() reference |
| --color-eucalyptus-950 | #112019 | No declared var() reference |
| --color-foreground | #2e2720 | No declared var() reference |
| --color-gray-100 | #f3f4f6 | No declared var() reference |
| --color-gray-200 | #e5e7eb | No declared var() reference |
| --color-gray-300 | #d1d5db | No declared var() reference |
| --color-gray-400 | #9ca3af | No declared var() reference |
| --color-gray-50 | #f9fafb | No declared var() reference |
| --color-gray-500 | #6b7280 | No declared var() reference |
| --color-gray-600 | #4b5563 | No declared var() reference |
| --color-gray-700 | #374151 | No declared var() reference |
| --color-gray-800 | #1f2937 | No declared var() reference |
| --color-gray-900 | #111827 | No declared var() reference |
| --color-gray-950 | #030712 | No declared var() reference |
| --color-green-100 | #dcfce7 | No declared var() reference |
| --color-green-200 | #bbf7d0 | No declared var() reference |
| --color-green-300 | #86efac | No declared var() reference |
| --color-green-400 | #4ade80 | No declared var() reference |
| --color-green-50 | #f0fdf4 | No declared var() reference |
| --color-green-500 | #22c55e | No declared var() reference |
| --color-green-600 | #16a34a | No declared var() reference |
| --color-green-700 | #15803d | No declared var() reference |
| --color-green-800 | #166534 | No declared var() reference |
| --color-green-900 | #14532d | No declared var() reference |
| --color-green-950 | #052e16 | No declared var() reference |
| --color-info | #3c5281 | No declared var() reference |
| --color-info-foreground | #faf8f5 | No declared var() reference |
| --color-input | #ddd1bf | No declared var() reference |
| --color-muted | #f5f0ea | No declared var() reference |
| --color-muted-foreground | #695746 | No declared var() reference |
| --color-muted-hover | #ebe3d7 | No declared var() reference |
| --color-nightsky-100 | #dde4ee | No declared var() reference |
| --color-nightsky-200 | #c1cde0 | No declared var() reference |
| --color-nightsky-300 | #97abcc | No declared var() reference |
| --color-nightsky-400 | #6b85b3 | No declared var() reference |
| --color-nightsky-50 | #f0f3f7 | No declared var() reference |
| --color-nightsky-500 | #4b679a | No declared var() reference |
| --color-nightsky-600 | #3c5281 | No declared var() reference |
| --color-nightsky-700 | #334369 | No declared var() reference |
| --color-nightsky-800 | #2d3a58 | No declared var() reference |
| --color-nightsky-900 | #1e2740 | No declared var() reference |
| --color-nightsky-950 | #151c2e | No declared var() reference |
| --color-ochre-100 | #faeadb | No declared var() reference |
| --color-ochre-200 | #f4d2b5 | No declared var() reference |
| --color-ochre-300 | #ecb485 | No declared var() reference |
| --color-ochre-400 | #e29455 | No declared var() reference |
| --color-ochre-50 | #fdf6f0 | No declared var() reference |
| --color-ochre-500 | #c9743a | No declared var() reference |
| --color-ochre-600 | #b45e2a | No declared var() reference |
| --color-ochre-700 | #964a22 | No declared var() reference |
| --color-ochre-800 | #7a3d20 | No declared var() reference |
| --color-ochre-900 | #65331d | No declared var() reference |
| --color-ochre-950 | #3a1a0e | No declared var() reference |
| --color-orange-100 | #ffedd5 | No declared var() reference |
| --color-orange-200 | #fed7aa | No declared var() reference |
| --color-orange-300 | #fdba74 | No declared var() reference |
| --color-orange-400 | #fb923c | No declared var() reference |
| --color-orange-50 | #fff7ed | No declared var() reference |
| --color-orange-500 | #f97316 | No declared var() reference |
| --color-orange-600 | #ea580c | No declared var() reference |
| --color-orange-700 | #c2410c | No declared var() reference |
| --color-orange-800 | #9a3412 | No declared var() reference |
| --color-orange-900 | #7c2d12 | No declared var() reference |
| --color-orange-950 | #431407 | No declared var() reference |
| --color-pink-100 | #fce7f3 | No declared var() reference |
| --color-pink-200 | #fbcfe8 | No declared var() reference |
| --color-pink-300 | #f9a8d4 | No declared var() reference |
| --color-pink-400 | #f472b6 | No declared var() reference |
| --color-pink-50 | #fdf2f8 | No declared var() reference |
| --color-pink-500 | #ec4899 | No declared var() reference |
| --color-pink-600 | #db2777 | No declared var() reference |
| --color-pink-700 | #be185d | No declared var() reference |
| --color-pink-800 | #9d174d | No declared var() reference |
| --color-pink-900 | #831843 | No declared var() reference |
| --color-pink-950 | #500724 | No declared var() reference |
| --color-popover | #ffffff | No declared var() reference |
| --color-popover-foreground | #2e2720 | No declared var() reference |
| --color-primary | #b45e2a | No declared var() reference |
| --color-primary-active | #7a3d20 | No declared var() reference |
| --color-primary-foreground | #fffdfb | No declared var() reference |
| --color-primary-hover | #964a22 | No declared var() reference |
| --color-purple-100 | #f3e8ff | No declared var() reference |
| --color-purple-200 | #e9d5ff | No declared var() reference |
| --color-purple-300 | #d8b4fe | No declared var() reference |
| --color-purple-400 | #c084fc | No declared var() reference |
| --color-purple-50 | #faf5ff | No declared var() reference |
| --color-purple-500 | #a855f7 | No declared var() reference |
| --color-purple-600 | #9333ea | No declared var() reference |
| --color-purple-700 | #7e22ce | No declared var() reference |
| --color-purple-800 | #6b21a8 | No declared var() reference |
| --color-purple-900 | #581c87 | No declared var() reference |
| --color-purple-950 | #3b0764 | No declared var() reference |
| --color-red-100 | #fee2e2 | No declared var() reference |
| --color-red-200 | #fecaca | No declared var() reference |
| --color-red-300 | #fca5a5 | No declared var() reference |
| --color-red-400 | #f87171 | No declared var() reference |
| --color-red-50 | #fef2f2 | No declared var() reference |
| --color-red-500 | #ef4444 | No declared var() reference |
| --color-red-600 | #dc2626 | No declared var() reference |
| --color-red-700 | #b91c1c | No declared var() reference |
| --color-red-800 | #991b1b | No declared var() reference |
| --color-red-900 | #7f1d1d | No declared var() reference |
| --color-red-950 | #450a0a | No declared var() reference |
| --color-ring | #b45e2a | No declared var() reference |
| --color-sand-100 | #f5f0ea | No declared var() reference |
| --color-sand-200 | #ebe3d7 | No declared var() reference |
| --color-sand-300 | #ddd1bf | No declared var() reference |
| --color-sand-400 | #c9b89e | No declared var() reference |
| --color-sand-50 | #faf8f5 | No declared var() reference |
| --color-sand-500 | #b09a7b | No declared var() reference |
| --color-sand-600 | #9a8265 | No declared var() reference |
| --color-sand-700 | #806a52 | No declared var() reference |
| --color-sand-800 | #695746 | No declared var() reference |
| --color-sand-900 | #574a3c | No declared var() reference |
| --color-sand-950 | #2e2720 | No declared var() reference |
| --color-secondary | #386b4f | No declared var() reference |
| --color-secondary-active | #274536 | No declared var() reference |
| --color-secondary-foreground | #faf8f5 | No declared var() reference |
| --color-secondary-hover | #2e5641 | No declared var() reference |
| --color-slate-100 | #f1f5f9 | No declared var() reference |
| --color-slate-200 | #e2e8f0 | No declared var() reference |
| --color-slate-300 | #cbd5e1 | No declared var() reference |
| --color-slate-400 | #94a3b8 | No declared var() reference |
| --color-slate-50 | #f8fafc | No declared var() reference |
| --color-slate-500 | #64748b | No declared var() reference |
| --color-slate-600 | #475569 | No declared var() reference |
| --color-slate-700 | #334155 | No declared var() reference |
| --color-slate-800 | #1e293b | No declared var() reference |
| --color-slate-900 | #0f172a | No declared var() reference |
| --color-slate-950 | #020617 | No declared var() reference |
| --color-success | #386b4f | No declared var() reference |
| --color-success-foreground | #faf8f5 | No declared var() reference |
| --color-success-hover | #2e5641 | No declared var() reference |
| --color-teal-100 | #ccfbf1 | No declared var() reference |
| --color-teal-200 | #99f6e4 | No declared var() reference |
| --color-teal-300 | #5eead4 | No declared var() reference |
| --color-teal-400 | #2dd4bf | No declared var() reference |
| --color-teal-50 | #f0fdfa | No declared var() reference |
| --color-teal-500 | #14b8a6 | No declared var() reference |
| --color-teal-600 | #0d9488 | No declared var() reference |
| --color-teal-700 | #0f766e | No declared var() reference |
| --color-teal-800 | #115e59 | No declared var() reference |
| --color-teal-900 | #134e4a | No declared var() reference |
| --color-teal-950 | #042f2e | No declared var() reference |
| --color-terracotta-100 | #fde3db | No declared var() reference |
| --color-terracotta-200 | #fcc8b8 | No declared var() reference |
| --color-terracotta-300 | #f9a188 | No declared var() reference |
| --color-terracotta-400 | #f47556 | No declared var() reference |
| --color-terracotta-50 | #fef3f0 | No declared var() reference |
| --color-terracotta-500 | #e85a38 | No declared var() reference |
| --color-terracotta-600 | #d4421f | No declared var() reference |
| --color-terracotta-700 | #b13518 | No declared var() reference |
| --color-terracotta-800 | #922f19 | No declared var() reference |
| --color-terracotta-900 | #792b1a | No declared var() reference |
| --color-terracotta-950 | #42130a | No declared var() reference |
| --color-warning | #d97706 | No declared var() reference |
| --color-warning-foreground | #1c1410 | No declared var() reference |
| --color-zinc-100 | #f4f4f5 | No declared var() reference |
| --color-zinc-200 | #e4e4e7 | No declared var() reference |
| --color-zinc-300 | #d4d4d8 | No declared var() reference |
| --color-zinc-400 | #a1a1aa | No declared var() reference |
| --color-zinc-50 | #fafafa | No declared var() reference |
| --color-zinc-500 | #71717a | No declared var() reference |
| --color-zinc-600 | #52525b | No declared var() reference |
| --color-zinc-700 | #3f3f46 | No declared var() reference |
| --color-zinc-800 | #27272a | No declared var() reference |
| --color-zinc-900 | #18181b | No declared var() reference |
| --color-zinc-950 | #09090b | No declared var() reference |
| --container-2xl | 1536px | No declared var() reference |
| --container-lg | 1024px | No declared var() reference |
| --container-md | 768px | No declared var() reference |
| --container-prose | 65ch | No declared var() reference |
| --container-sm | 640px | No declared var() reference |
| --container-xl | 1280px | No declared var() reference |
| --duration-fast | 100ms | No declared var() reference |
| --duration-instant | 0ms | No declared var() reference |
| --duration-normal | 200ms | No declared var() reference |
| --duration-slow | 300ms | No declared var() reference |
| --duration-slower | 500ms | No declared var() reference |
| --ease-bounce | cubic-bezier(0.68, -0.55, 0.265, 1.55) | No declared var() reference |
| --ease-default | cubic-bezier(0.4, 0, 0.2, 1) | No declared var() reference |
| --ease-in | cubic-bezier(0.4, 0, 1, 1) | No declared var() reference |
| --ease-in-out | cubic-bezier(0.4, 0, 0.2, 1) | No declared var() reference |
| --ease-out | cubic-bezier(0, 0, 0.2, 1) | No declared var() reference |
| --font-display | 'Playfair Display', serif | No declared var() reference |
| --font-mono | ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace | No declared var() reference |
| --font-sans | 'Inter', system-ui, sans-serif | No declared var() reference |
| --opacity-0 | 0% | No declared var() reference |
| --opacity-10 | 10% | No declared var() reference |
| --opacity-100 | 100% | No declared var() reference |
| --opacity-20 | 20% | No declared var() reference |
| --opacity-25 | 25% | No declared var() reference |
| --opacity-30 | 30% | No declared var() reference |
| --opacity-40 | 40% | No declared var() reference |
| --opacity-5 | 5% | No declared var() reference |
| --opacity-50 | 50% | No declared var() reference |
| --opacity-60 | 60% | No declared var() reference |
| --opacity-70 | 70% | No declared var() reference |
| --opacity-75 | 75% | No declared var() reference |
| --opacity-80 | 80% | No declared var() reference |
| --opacity-90 | 90% | No declared var() reference |
| --opacity-95 | 95% | No declared var() reference |
| --radius | var(--radius-lg) | --radius-lg |
| --radius-lg | 1rem | No declared var() reference |
| --radius-2xl | 2rem | No declared var() reference |
| --radius-full | 9999px | No declared var() reference |
| --radius-md | 0.5rem | No declared var() reference |
| --radius-none | 0px | No declared var() reference |
| --radius-sm | 0.25rem | No declared var() reference |
| --radius-xl | 1.5rem | No declared var() reference |
| --ring-color | var(--color-ring) | --color-ring |
| --ring-offset | 2px | No declared var() reference |
| --ring-width | 2px | No declared var() reference |
| --shadow-2xl | 0 25px 50px -12px rgb(46 39 32 / 0.2) | No declared var() reference |
| --shadow-lg | 0 10px 15px -3px rgb(46 39 32 / 0.08), 0 4px 6px -4px rgb(46 39 32 / 0.06) | No declared var() reference |
| --shadow-md | 0 4px 6px -1px rgb(46 39 32 / 0.08), 0 2px 4px -2px rgb(46 39 32 / 0.06) | No declared var() reference |
| --shadow-sm | 0 1px 3px 0 rgb(46 39 32 / 0.08), 0 1px 2px -1px rgb(46 39 32 / 0.06) | No declared var() reference |
| --shadow-xl | 0 20px 25px -5px rgb(46 39 32 / 0.08), 0 8px 10px -6px rgb(46 39 32 / 0.06) | No declared var() reference |
| --shadow-xs | 0 1px 2px 0 rgb(46 39 32 / 0.04) | No declared var() reference |
| --spacing-0 | 0px | No declared var() reference |
| --spacing-0-5 | 0.125rem | No declared var() reference |
| --spacing-1 | 0.25rem | No declared var() reference |
| --spacing-1-5 | 0.375rem | No declared var() reference |
| --spacing-10 | 2.5rem | No declared var() reference |
| --spacing-12 | 3rem | No declared var() reference |
| --spacing-16 | 4rem | No declared var() reference |
| --spacing-2 | 0.5rem | No declared var() reference |
| --spacing-2-5 | 0.625rem | No declared var() reference |
| --spacing-20 | 5rem | No declared var() reference |
| --spacing-24 | 6rem | No declared var() reference |
| --spacing-3 | 0.75rem | No declared var() reference |
| --spacing-4 | 1rem | No declared var() reference |
| --spacing-5 | 1.25rem | No declared var() reference |
| --spacing-6 | 1.5rem | No declared var() reference |
| --spacing-8 | 2rem | No declared var() reference |
| --text-2xl | 1.5rem | No declared var() reference |
| --text-3xl | 1.875rem | No declared var() reference |
| --text-4xl | 2.25rem | No declared var() reference |
| --text-5xl | 3rem | No declared var() reference |
| --text-6xl | 3.75rem | No declared var() reference |
| --text-base | 1rem | No declared var() reference |
| --text-lg | 1.125rem | No declared var() reference |
| --text-sm | 0.875rem | No declared var() reference |
| --text-xl | 1.25rem | No declared var() reference |
| --text-xs | 0.75rem | No declared var() reference |
| --transition-colors | color, background-color, border-color, text-decoration-color, fill, stroke | No declared var() reference |
| --transition-opacity | opacity | No declared var() reference |
| --transition-shadow | box-shadow | No declared var() reference |
| --transition-transform | transform | No declared var() reference |
| --z-dropdown | 50 | No declared var() reference |
| --z-fixed | 200 | No declared var() reference |
| --z-modal | 400 | No declared var() reference |
| --z-modal-backdrop | 300 | No declared var() reference |
| --z-popover | 500 | No declared var() reference |
| --z-sticky | 100 | No declared var() reference |
| --z-toast | 700 | No declared var() reference |
| --z-tooltip | 600 | No declared var() reference |
| Token | Light declaration | Dark override | Live value | Copy |
|---|---|---|---|---|
| --breakpoint-2xl | 1536px | Inherits light declaration | Not available in this render | |
| --breakpoint-lg | 1024px | Inherits light declaration | Not available in this render | |
| --breakpoint-md | 768px | Inherits light declaration | Not available in this render | |
| --breakpoint-sm | 640px | Inherits light declaration | Not available in this render | |
| --breakpoint-xl | 1280px | Inherits light declaration | Not available in this render | |
| --color-accent | #d97706 | #fbbf24 | Not available in this render | |
| --color-accent-active | #92400e | #f59e0b | Not available in this render | |
| --color-accent-foreground | #1c1410 | #1c1410 | Not available in this render | |
| --color-accent-hover | #b45309 | #fcd34d | Not available in this render | |
| --color-amber-100 | #fef3c7 | Inherits light declaration | Not available in this render | |
| --color-amber-200 | #fde68a | Inherits light declaration | Not available in this render | |
| --color-amber-300 | #fcd34d | Inherits light declaration | Not available in this render | |
| --color-amber-400 | #fbbf24 | Inherits light declaration | Not available in this render | |
| --color-amber-50 | #fffbeb | Inherits light declaration | Not available in this render | |
| --color-amber-500 | #f59e0b | Inherits light declaration | Not available in this render | |
| --color-amber-600 | #d97706 | Inherits light declaration | Not available in this render | |
| --color-amber-700 | #b45309 | Inherits light declaration | Not available in this render | |
| --color-amber-800 | #92400e | Inherits light declaration | Not available in this render | |
| --color-amber-900 | #78350f | Inherits light declaration | Not available in this render | |
| --color-amber-950 | #451a03 | Inherits light declaration | Not available in this render | |
| --color-background | #faf8f5 | #1c1410 | Not available in this render | |
| --color-blue-100 | #dbeafe | Inherits light declaration | Not available in this render | |
| --color-blue-200 | #bfdbfe | Inherits light declaration | Not available in this render | |
| --color-blue-300 | #93c5fd | Inherits light declaration | Not available in this render | |
| --color-blue-400 | #60a5fa | Inherits light declaration | Not available in this render | |
| --color-blue-50 | #eff6ff | Inherits light declaration | Not available in this render | |
| --color-blue-500 | #3b82f6 | Inherits light declaration | Not available in this render | |
| --color-blue-600 | #2563eb | Inherits light declaration | Not available in this render | |
| --color-blue-700 | #1d4ed8 | Inherits light declaration | Not available in this render | |
| --color-blue-800 | #1e40af | Inherits light declaration | Not available in this render | |
| --color-blue-900 | #1e3a8a | Inherits light declaration | Not available in this render | |
| --color-blue-950 | #172554 | Inherits light declaration | Not available in this render | |
| --color-border | #ddd1bf | #3a312b | Not available in this render | |
| --color-card | #ffffff | #241c17 | Not available in this render | |
| --color-card-foreground | #2e2720 | #f5f0ea | Not available in this render | |
| --color-cyan-100 | #cffafe | Inherits light declaration | Not available in this render | |
| --color-cyan-200 | #a5f3fc | Inherits light declaration | Not available in this render | |
| --color-cyan-300 | #67e8f9 | Inherits light declaration | Not available in this render | |
| --color-cyan-400 | #22d3ee | Inherits light declaration | Not available in this render | |
| --color-cyan-50 | #ecfeff | Inherits light declaration | Not available in this render | |
| --color-cyan-500 | #06b6d4 | Inherits light declaration | Not available in this render | |
| --color-cyan-600 | #0891b2 | Inherits light declaration | Not available in this render | |
| --color-cyan-700 | #0e7490 | Inherits light declaration | Not available in this render | |
| --color-cyan-800 | #155e75 | Inherits light declaration | Not available in this render | |
| --color-cyan-900 | #164e63 | Inherits light declaration | Not available in this render | |
| --color-cyan-950 | #083344 | Inherits light declaration | Not available in this render | |
| --color-destructive | #b13518 | #f47556 | Not available in this render | |
| --color-destructive-active | #792b1a | #e85a38 | Not available in this render | |
| --color-destructive-foreground | #faf8f5 | #1c1410 | Not available in this render | |
| --color-destructive-hover | #922f19 | #f9a188 | Not available in this render | |
| --color-error | #b13518 | #f47556 | Not available in this render | |
| --color-error-foreground | #faf8f5 | #1c1410 | Not available in this render | |
| --color-eucalyptus-100 | #e0ede5 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-200 | #c3dbcc | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-300 | #98c1a8 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-400 | #6ba380 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-50 | #f2f7f4 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-500 | #4a8664 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-600 | #386b4f | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-700 | #2e5641 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-800 | #274536 | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-900 | #21392d | Inherits light declaration | Not available in this render | |
| --color-eucalyptus-950 | #112019 | Inherits light declaration | Not available in this render | |
| --color-foreground | #2e2720 | #f5f0ea | Not available in this render | |
| --color-gray-100 | #f3f4f6 | Inherits light declaration | Not available in this render | |
| --color-gray-200 | #e5e7eb | Inherits light declaration | Not available in this render | |
| --color-gray-300 | #d1d5db | Inherits light declaration | Not available in this render | |
| --color-gray-400 | #9ca3af | Inherits light declaration | Not available in this render | |
| --color-gray-50 | #f9fafb | Inherits light declaration | Not available in this render | |
| --color-gray-500 | #6b7280 | Inherits light declaration | Not available in this render | |
| --color-gray-600 | #4b5563 | Inherits light declaration | Not available in this render | |
| --color-gray-700 | #374151 | Inherits light declaration | Not available in this render | |
| --color-gray-800 | #1f2937 | Inherits light declaration | Not available in this render | |
| --color-gray-900 | #111827 | Inherits light declaration | Not available in this render | |
| --color-gray-950 | #030712 | Inherits light declaration | Not available in this render | |
| --color-green-100 | #dcfce7 | Inherits light declaration | Not available in this render | |
| --color-green-200 | #bbf7d0 | Inherits light declaration | Not available in this render | |
| --color-green-300 | #86efac | Inherits light declaration | Not available in this render | |
| --color-green-400 | #4ade80 | Inherits light declaration | Not available in this render | |
| --color-green-50 | #f0fdf4 | Inherits light declaration | Not available in this render | |
| --color-green-500 | #22c55e | Inherits light declaration | Not available in this render | |
| --color-green-600 | #16a34a | Inherits light declaration | Not available in this render | |
| --color-green-700 | #15803d | Inherits light declaration | Not available in this render | |
| --color-green-800 | #166534 | Inherits light declaration | Not available in this render | |
| --color-green-900 | #14532d | Inherits light declaration | Not available in this render | |
| --color-green-950 | #052e16 | Inherits light declaration | Not available in this render | |
| --color-info | #3c5281 | #6b85b3 | Not available in this render | |
| --color-info-foreground | #faf8f5 | #1c1410 | Not available in this render | |
| --color-input | #ddd1bf | #3a312b | Not available in this render | |
| --color-muted | #f5f0ea | #2a2320 | Not available in this render | |
| --color-muted-foreground | #695746 | #b09a7b | Not available in this render | |
| --color-muted-hover | #ebe3d7 | #3a312b | Not available in this render | |
| --color-nightsky-100 | #dde4ee | Inherits light declaration | Not available in this render | |
| --color-nightsky-200 | #c1cde0 | Inherits light declaration | Not available in this render | |
| --color-nightsky-300 | #97abcc | Inherits light declaration | Not available in this render | |
| --color-nightsky-400 | #6b85b3 | Inherits light declaration | Not available in this render | |
| --color-nightsky-50 | #f0f3f7 | Inherits light declaration | Not available in this render | |
| --color-nightsky-500 | #4b679a | Inherits light declaration | Not available in this render | |
| --color-nightsky-600 | #3c5281 | Inherits light declaration | Not available in this render | |
| --color-nightsky-700 | #334369 | Inherits light declaration | Not available in this render | |
| --color-nightsky-800 | #2d3a58 | Inherits light declaration | Not available in this render | |
| --color-nightsky-900 | #1e2740 | Inherits light declaration | Not available in this render | |
| --color-nightsky-950 | #151c2e | Inherits light declaration | Not available in this render | |
| --color-ochre-100 | #faeadb | Inherits light declaration | Not available in this render | |
| --color-ochre-200 | #f4d2b5 | Inherits light declaration | Not available in this render | |
| --color-ochre-300 | #ecb485 | Inherits light declaration | Not available in this render | |
| --color-ochre-400 | #e29455 | Inherits light declaration | Not available in this render | |
| --color-ochre-50 | #fdf6f0 | Inherits light declaration | Not available in this render | |
| --color-ochre-500 | #c9743a | Inherits light declaration | Not available in this render | |
| --color-ochre-600 | #b45e2a | Inherits light declaration | Not available in this render | |
| --color-ochre-700 | #964a22 | Inherits light declaration | Not available in this render | |
| --color-ochre-800 | #7a3d20 | Inherits light declaration | Not available in this render | |
| --color-ochre-900 | #65331d | Inherits light declaration | Not available in this render | |
| --color-ochre-950 | #3a1a0e | Inherits light declaration | Not available in this render | |
| --color-orange-100 | #ffedd5 | Inherits light declaration | Not available in this render | |
| --color-orange-200 | #fed7aa | Inherits light declaration | Not available in this render | |
| --color-orange-300 | #fdba74 | Inherits light declaration | Not available in this render | |
| --color-orange-400 | #fb923c | Inherits light declaration | Not available in this render | |
| --color-orange-50 | #fff7ed | Inherits light declaration | Not available in this render | |
| --color-orange-500 | #f97316 | Inherits light declaration | Not available in this render | |
| --color-orange-600 | #ea580c | Inherits light declaration | Not available in this render | |
| --color-orange-700 | #c2410c | Inherits light declaration | Not available in this render | |
| --color-orange-800 | #9a3412 | Inherits light declaration | Not available in this render | |
| --color-orange-900 | #7c2d12 | Inherits light declaration | Not available in this render | |
| --color-orange-950 | #431407 | Inherits light declaration | Not available in this render | |
| --color-pink-100 | #fce7f3 | Inherits light declaration | Not available in this render | |
| --color-pink-200 | #fbcfe8 | Inherits light declaration | Not available in this render | |
| --color-pink-300 | #f9a8d4 | Inherits light declaration | Not available in this render | |
| --color-pink-400 | #f472b6 | Inherits light declaration | Not available in this render | |
| --color-pink-50 | #fdf2f8 | Inherits light declaration | Not available in this render | |
| --color-pink-500 | #ec4899 | Inherits light declaration | Not available in this render | |
| --color-pink-600 | #db2777 | Inherits light declaration | Not available in this render | |
| --color-pink-700 | #be185d | Inherits light declaration | Not available in this render | |
| --color-pink-800 | #9d174d | Inherits light declaration | Not available in this render | |
| --color-pink-900 | #831843 | Inherits light declaration | Not available in this render | |
| --color-pink-950 | #500724 | Inherits light declaration | Not available in this render | |
| --color-popover | #ffffff | #241c17 | Not available in this render | |
| --color-popover-foreground | #2e2720 | #f5f0ea | Not available in this render | |
| --color-primary | #b45e2a | #e29455 | Not available in this render | |
| --color-primary-active | #7a3d20 | #c9743a | Not available in this render | |
| --color-primary-foreground | #fffdfb | #1c1410 | Not available in this render | |
| --color-primary-hover | #964a22 | #ecb485 | Not available in this render | |
| --color-purple-100 | #f3e8ff | Inherits light declaration | Not available in this render | |
| --color-purple-200 | #e9d5ff | Inherits light declaration | Not available in this render | |
| --color-purple-300 | #d8b4fe | Inherits light declaration | Not available in this render | |
| --color-purple-400 | #c084fc | Inherits light declaration | Not available in this render | |
| --color-purple-50 | #faf5ff | Inherits light declaration | Not available in this render | |
| --color-purple-500 | #a855f7 | Inherits light declaration | Not available in this render | |
| --color-purple-600 | #9333ea | Inherits light declaration | Not available in this render | |
| --color-purple-700 | #7e22ce | Inherits light declaration | Not available in this render | |
| --color-purple-800 | #6b21a8 | Inherits light declaration | Not available in this render | |
| --color-purple-900 | #581c87 | Inherits light declaration | Not available in this render | |
| --color-purple-950 | #3b0764 | Inherits light declaration | Not available in this render | |
| --color-red-100 | #fee2e2 | Inherits light declaration | Not available in this render | |
| --color-red-200 | #fecaca | Inherits light declaration | Not available in this render | |
| --color-red-300 | #fca5a5 | Inherits light declaration | Not available in this render | |
| --color-red-400 | #f87171 | Inherits light declaration | Not available in this render | |
| --color-red-50 | #fef2f2 | Inherits light declaration | Not available in this render | |
| --color-red-500 | #ef4444 | Inherits light declaration | Not available in this render | |
| --color-red-600 | #dc2626 | Inherits light declaration | Not available in this render | |
| --color-red-700 | #b91c1c | Inherits light declaration | Not available in this render | |
| --color-red-800 | #991b1b | Inherits light declaration | Not available in this render | |
| --color-red-900 | #7f1d1d | Inherits light declaration | Not available in this render | |
| --color-red-950 | #450a0a | Inherits light declaration | Not available in this render | |
| --color-ring | #b45e2a | #e29455 | Not available in this render | |
| --color-sand-100 | #f5f0ea | Inherits light declaration | Not available in this render | |
| --color-sand-200 | #ebe3d7 | Inherits light declaration | Not available in this render | |
| --color-sand-300 | #ddd1bf | Inherits light declaration | Not available in this render | |
| --color-sand-400 | #c9b89e | Inherits light declaration | Not available in this render | |
| --color-sand-50 | #faf8f5 | Inherits light declaration | Not available in this render | |
| --color-sand-500 | #b09a7b | Inherits light declaration | Not available in this render | |
| --color-sand-600 | #9a8265 | Inherits light declaration | Not available in this render | |
| --color-sand-700 | #806a52 | Inherits light declaration | Not available in this render | |
| --color-sand-800 | #695746 | Inherits light declaration | Not available in this render | |
| --color-sand-900 | #574a3c | Inherits light declaration | Not available in this render | |
| --color-sand-950 | #2e2720 | Inherits light declaration | Not available in this render | |
| --color-secondary | #386b4f | #6ba380 | Not available in this render | |
| --color-secondary-active | #274536 | #4a8664 | Not available in this render | |
| --color-secondary-foreground | #faf8f5 | #1c1410 | Not available in this render | |
| --color-secondary-hover | #2e5641 | #98c1a8 | Not available in this render | |
| --color-slate-100 | #f1f5f9 | Inherits light declaration | Not available in this render | |
| --color-slate-200 | #e2e8f0 | Inherits light declaration | Not available in this render | |
| --color-slate-300 | #cbd5e1 | Inherits light declaration | Not available in this render | |
| --color-slate-400 | #94a3b8 | Inherits light declaration | Not available in this render | |
| --color-slate-50 | #f8fafc | Inherits light declaration | Not available in this render | |
| --color-slate-500 | #64748b | Inherits light declaration | Not available in this render | |
| --color-slate-600 | #475569 | Inherits light declaration | Not available in this render | |
| --color-slate-700 | #334155 | Inherits light declaration | Not available in this render | |
| --color-slate-800 | #1e293b | Inherits light declaration | Not available in this render | |
| --color-slate-900 | #0f172a | Inherits light declaration | Not available in this render | |
| --color-slate-950 | #020617 | Inherits light declaration | Not available in this render | |
| --color-success | #386b4f | #6ba380 | Not available in this render | |
| --color-success-foreground | #faf8f5 | #1c1410 | Not available in this render | |
| --color-success-hover | #2e5641 | #98c1a8 | Not available in this render | |
| --color-teal-100 | #ccfbf1 | Inherits light declaration | Not available in this render | |
| --color-teal-200 | #99f6e4 | Inherits light declaration | Not available in this render | |
| --color-teal-300 | #5eead4 | Inherits light declaration | Not available in this render | |
| --color-teal-400 | #2dd4bf | Inherits light declaration | Not available in this render | |
| --color-teal-50 | #f0fdfa | Inherits light declaration | Not available in this render | |
| --color-teal-500 | #14b8a6 | Inherits light declaration | Not available in this render | |
| --color-teal-600 | #0d9488 | Inherits light declaration | Not available in this render | |
| --color-teal-700 | #0f766e | Inherits light declaration | Not available in this render | |
| --color-teal-800 | #115e59 | Inherits light declaration | Not available in this render | |
| --color-teal-900 | #134e4a | Inherits light declaration | Not available in this render | |
| --color-teal-950 | #042f2e | Inherits light declaration | Not available in this render | |
| --color-terracotta-100 | #fde3db | Inherits light declaration | Not available in this render | |
| --color-terracotta-200 | #fcc8b8 | Inherits light declaration | Not available in this render | |
| --color-terracotta-300 | #f9a188 | Inherits light declaration | Not available in this render | |
| --color-terracotta-400 | #f47556 | Inherits light declaration | Not available in this render | |
| --color-terracotta-50 | #fef3f0 | Inherits light declaration | Not available in this render | |
| --color-terracotta-500 | #e85a38 | Inherits light declaration | Not available in this render | |
| --color-terracotta-600 | #d4421f | Inherits light declaration | Not available in this render | |
| --color-terracotta-700 | #b13518 | Inherits light declaration | Not available in this render | |
| --color-terracotta-800 | #922f19 | Inherits light declaration | Not available in this render | |
| --color-terracotta-900 | #792b1a | Inherits light declaration | Not available in this render | |
| --color-terracotta-950 | #42130a | Inherits light declaration | Not available in this render | |
| --color-warning | #d97706 | #fbbf24 | Not available in this render | |
| --color-warning-foreground | #1c1410 | #1c1410 | Not available in this render | |
| --color-zinc-100 | #f4f4f5 | Inherits light declaration | Not available in this render | |
| --color-zinc-200 | #e4e4e7 | Inherits light declaration | Not available in this render | |
| --color-zinc-300 | #d4d4d8 | Inherits light declaration | Not available in this render | |
| --color-zinc-400 | #a1a1aa | Inherits light declaration | Not available in this render | |
| --color-zinc-50 | #fafafa | Inherits light declaration | Not available in this render | |
| --color-zinc-500 | #71717a | Inherits light declaration | Not available in this render | |
| --color-zinc-600 | #52525b | Inherits light declaration | Not available in this render | |
| --color-zinc-700 | #3f3f46 | Inherits light declaration | Not available in this render | |
| --color-zinc-800 | #27272a | Inherits light declaration | Not available in this render | |
| --color-zinc-900 | #18181b | Inherits light declaration | Not available in this render | |
| --color-zinc-950 | #09090b | Inherits light declaration | Not available in this render | |
| --container-2xl | 1536px | Inherits light declaration | Not available in this render | |
| --container-lg | 1024px | Inherits light declaration | Not available in this render | |
| --container-md | 768px | Inherits light declaration | Not available in this render | |
| --container-prose | 65ch | Inherits light declaration | Not available in this render | |
| --container-sm | 640px | Inherits light declaration | Not available in this render | |
| --container-xl | 1280px | Inherits light declaration | Not available in this render | |
| --duration-fast | 100ms | Inherits light declaration | Not available in this render | |
| --duration-instant | 0ms | Inherits light declaration | Not available in this render | |
| --duration-normal | 200ms | Inherits light declaration | Not available in this render | |
| --duration-slow | 300ms | Inherits light declaration | Not available in this render | |
| --duration-slower | 500ms | Inherits light declaration | Not available in this render | |
| --ease-bounce | cubic-bezier(0.68, -0.55, 0.265, 1.55) | Inherits light declaration | Not available in this render | |
| --ease-default | cubic-bezier(0.4, 0, 0.2, 1) | Inherits light declaration | Not available in this render | |
| --ease-in | cubic-bezier(0.4, 0, 1, 1) | Inherits light declaration | Not available in this render | |
| --ease-in-out | cubic-bezier(0.4, 0, 0.2, 1) | Inherits light declaration | Not available in this render | |
| --ease-out | cubic-bezier(0, 0, 0.2, 1) | Inherits light declaration | Not available in this render | |
| --font-display | 'Playfair Display', serif | Inherits light declaration | Not available in this render | |
| --font-mono | ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace | Inherits light declaration | Not available in this render | |
| --font-sans | 'Inter', system-ui, sans-serif | Inherits light declaration | Not available in this render | |
| --opacity-0 | 0% | Inherits light declaration | Not available in this render | |
| --opacity-10 | 10% | Inherits light declaration | Not available in this render | |
| --opacity-100 | 100% | Inherits light declaration | Not available in this render | |
| --opacity-20 | 20% | Inherits light declaration | Not available in this render | |
| --opacity-25 | 25% | Inherits light declaration | Not available in this render | |
| --opacity-30 | 30% | Inherits light declaration | Not available in this render | |
| --opacity-40 | 40% | Inherits light declaration | Not available in this render | |
| --opacity-5 | 5% | Inherits light declaration | Not available in this render | |
| --opacity-50 | 50% | Inherits light declaration | Not available in this render | |
| --opacity-60 | 60% | Inherits light declaration | Not available in this render | |
| --opacity-70 | 70% | Inherits light declaration | Not available in this render | |
| --opacity-75 | 75% | Inherits light declaration | Not available in this render | |
| --opacity-80 | 80% | Inherits light declaration | Not available in this render | |
| --opacity-90 | 90% | Inherits light declaration | Not available in this render | |
| --opacity-95 | 95% | Inherits light declaration | Not available in this render | |
| --radius | var(--radius-lg) | Inherits light declaration | Not available in this render | |
| --radius-2xl | 2rem | Inherits light declaration | Not available in this render | |
| --radius-full | 9999px | Inherits light declaration | Not available in this render | |
| --radius-lg | 1rem | Inherits light declaration | Not available in this render | |
| --radius-md | 0.5rem | Inherits light declaration | Not available in this render | |
| --radius-none | 0px | Inherits light declaration | Not available in this render | |
| --radius-sm | 0.25rem | Inherits light declaration | Not available in this render | |
| --radius-xl | 1.5rem | Inherits light declaration | Not available in this render | |
| --ring-color | var(--color-ring) | Inherits light declaration | Not available in this render | |
| --ring-offset | 2px | Inherits light declaration | Not available in this render | |
| --ring-width | 2px | Inherits light declaration | Not available in this render | |
| --shadow-2xl | 0 25px 50px -12px rgb(46 39 32 / 0.2) | 0 25px 50px -12px rgb(0 0 0 / 0.5) | Not available in this render | |
| --shadow-lg | 0 10px 15px -3px rgb(46 39 32 / 0.08), 0 4px 6px -4px rgb(46 39 32 / 0.06) | 0 10px 15px -3px rgb(0 0 0 / 0.3), 0 4px 6px -4px rgb(0 0 0 / 0.3) | Not available in this render | |
| --shadow-md | 0 4px 6px -1px rgb(46 39 32 / 0.08), 0 2px 4px -2px rgb(46 39 32 / 0.06) | 0 4px 6px -1px rgb(0 0 0 / 0.3), 0 2px 4px -2px rgb(0 0 0 / 0.3) | Not available in this render | |
| --shadow-sm | 0 1px 3px 0 rgb(46 39 32 / 0.08), 0 1px 2px -1px rgb(46 39 32 / 0.06) | 0 1px 3px 0 rgb(0 0 0 / 0.3), 0 1px 2px -1px rgb(0 0 0 / 0.3) | Not available in this render | |
| --shadow-xl | 0 20px 25px -5px rgb(46 39 32 / 0.08), 0 8px 10px -6px rgb(46 39 32 / 0.06) | 0 20px 25px -5px rgb(0 0 0 / 0.4), 0 8px 10px -6px rgb(0 0 0 / 0.4) | Not available in this render | |
| --shadow-xs | 0 1px 2px 0 rgb(46 39 32 / 0.04) | 0 1px 2px 0 rgb(0 0 0 / 0.2) | Not available in this render | |
| --spacing-0 | 0px | Inherits light declaration | Not available in this render | |
| --spacing-0-5 | 0.125rem | Inherits light declaration | Not available in this render | |
| --spacing-1 | 0.25rem | Inherits light declaration | Not available in this render | |
| --spacing-1-5 | 0.375rem | Inherits light declaration | Not available in this render | |
| --spacing-10 | 2.5rem | Inherits light declaration | Not available in this render | |
| --spacing-12 | 3rem | Inherits light declaration | Not available in this render | |
| --spacing-16 | 4rem | Inherits light declaration | Not available in this render | |
| --spacing-2 | 0.5rem | Inherits light declaration | Not available in this render | |
| --spacing-2-5 | 0.625rem | Inherits light declaration | Not available in this render | |
| --spacing-20 | 5rem | Inherits light declaration | Not available in this render | |
| --spacing-24 | 6rem | Inherits light declaration | Not available in this render | |
| --spacing-3 | 0.75rem | Inherits light declaration | Not available in this render | |
| --spacing-4 | 1rem | Inherits light declaration | Not available in this render | |
| --spacing-5 | 1.25rem | Inherits light declaration | Not available in this render | |
| --spacing-6 | 1.5rem | Inherits light declaration | Not available in this render | |
| --spacing-8 | 2rem | Inherits light declaration | Not available in this render | |
| --text-2xl | 1.5rem | Inherits light declaration | Not available in this render | |
| --text-3xl | 1.875rem | Inherits light declaration | Not available in this render | |
| --text-4xl | 2.25rem | Inherits light declaration | Not available in this render | |
| --text-5xl | 3rem | Inherits light declaration | Not available in this render | |
| --text-6xl | 3.75rem | Inherits light declaration | Not available in this render | |
| --text-base | 1rem | Inherits light declaration | Not available in this render | |
| --text-lg | 1.125rem | Inherits light declaration | Not available in this render | |
| --text-sm | 0.875rem | Inherits light declaration | Not available in this render | |
| --text-xl | 1.25rem | Inherits light declaration | Not available in this render | |
| --text-xs | 0.75rem | Inherits light declaration | Not available in this render | |
| --transition-colors | color, background-color, border-color, text-decoration-color, fill, stroke | Inherits light declaration | Not available in this render | |
| --transition-opacity | opacity | Inherits light declaration | Not available in this render | |
| --transition-shadow | box-shadow | Inherits light declaration | Not available in this render | |
| --transition-transform | transform | Inherits light declaration | Not available in this render | |
| --z-dropdown | 50 | Inherits light declaration | Not available in this render | |
| --z-fixed | 200 | Inherits light declaration | Not available in this render | |
| --z-modal | 400 | Inherits light declaration | Not available in this render | |
| --z-modal-backdrop | 300 | Inherits light declaration | Not available in this render | |
| --z-popover | 500 | Inherits light declaration | Not available in this render | |
| --z-sticky | 100 | Inherits light declaration | Not available in this render | |
| --z-toast | 700 | Inherits light declaration | Not available in this render | |
| --z-tooltip | 600 | Inherits light declaration | Not available in this render |
Using tokens in code
.source-panel {
color: var(--color-card-foreground);
background: var(--color-card);
padding: var(--spacing-6);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
}
.source-panel a {
color: var(--color-primary);
transition: color var(--duration-fast) var(--ease-out);
}Copying a declaration preserves var(...) references. Enable Include known alias dependencies to add their declared transitive references to CSS/JSON exports; otherwise the filtered fragment still needs the shared stylesheet. Missing external references, fallback branches and cycles require inspection rather than an assumed resolution. A token is a styling decision, not proof that every foreground/background combination is accessible.
Theme boundaries and overrides
The explicit .dark class overrides theme-dependent roles. Tokens without a dark override inherit their light declaration. A matching system-preference fallback applies before JavaScript initializes; explicit .light overrides that fallback. The page theme controls live values independently of the export selector.
/* A scoped role override inherits everything else. */
.campaign {
--color-primary: #964a22;
--color-primary-hover: #7a3d20;
--color-primary-foreground: #fffdfb;
}Change foreground and background as a pair. Check hover, active and focus states as well as the default. An override on an ordinary element may not reach a popup rendered through a portal; place shared theme overrides on the document root or provide the same scope to the portal.
Keeping the reference current
pnpm --filter styleguide tokens:generate
pnpm --filter styleguide tokens:check
pnpm --filter styleguide typecheck
pnpm --filter styleguide buildEdit the shared stylesheet, then regenerate the catalogue. The check command compares generated content with the current CSS and fails if they drift. Builds generate the catalogue automatically. Review renamed or removed tokens as API changes because consumers may use those custom properties directly.
Compiled explorer and reference parser
'use client';
import { useEffect, useMemo, useState } from 'react';
import { Button } from '@mobtranslate/ui';
import catalogue from '../content/tokens.json';
import {inspectTokenGraph} from '../lib/token-references';
import './token-explorer.css';
export function TokenExplorer() {
const [query, setQuery] = useState('');
const [group, setGroup] = useState('all');
const [theme, setTheme] = useState<'light' | 'dark'>('light');
const [resolved, setResolved] = useState<Record<string, string>>({});
const [status, setStatus] = useState('');
const [dependencies,setDependencies]=useState(false);
const groups = useMemo(() => [...new Set(catalogue.tokens.map((token) => token.name.slice(2).split('-')[0]))].sort(), []);
useEffect(() => {
const update = () => {
const styles = getComputedStyle(document.documentElement);
setResolved(Object.fromEntries(catalogue.tokens.map((token) => [token.name, styles.getPropertyValue(token.name).trim()])));
};
update();
const observer = new MutationObserver(update);
observer.observe(document.documentElement, { attributes: true, attributeFilter: ['class', 'style'] });
return () => observer.disconnect();
}, []);
const tokens = catalogue.tokens.filter((token) =>
(group === 'all' || token.name.slice(2).split('-')[0] === group) &&
`${token.name} ${token.value} ${token.dark ?? ''}`.toLowerCase().includes(query.trim().toLowerCase())
);
const graph=inspectTokenGraph(catalogue.tokens,tokens.map(token=>token.name),theme);
const exported=dependencies?graph.tokens:tokens;
const css = `:root {\n${exported.map((token) => ` ${token.name}: ${theme === 'dark' ? token.dark ?? token.value : token.value};`).join('\n')}\n}`;
const copy = async (value: string) => {
try { await navigator.clipboard.writeText(value); setStatus('Copied to clipboard.'); }
catch { setStatus('Clipboard unavailable. Select the token name and value to copy them manually.'); }
};
return <div className="token-explorer space-y-4">
<div className="grid gap-4 sm:grid-cols-3">
<label className="block">Search tokens<input className="mt-input w-full mt-2" data-token-query type="search" value={query} onChange={(event) => setQuery(event.target.value)} placeholder="Name or declared value" /></label>
<label className="block">Token group<select className="mt-input w-full mt-2" value={group} onChange={(event) => setGroup(event.target.value)}><option value="all">All groups</option>{groups.map((name) => <option key={name} value={name}>{name}</option>)}</select></label>
<label className="block">Export theme<select className="mt-input w-full mt-2" data-token-export-theme value={theme} onChange={(event) => setTheme(event.target.value as typeof theme)}><option value="light">Light declarations</option><option value="dark">Dark declarations</option></select></label>
</div>
<label className="flex gap-3 items-center min-h-11"><input data-token-dependencies type="checkbox" checked={dependencies} onChange={event=>setDependencies(event.target.checked)} />Include known alias dependencies in exports</label>
<div className="flex flex-wrap gap-3 items-center">
<Button data-token-copy variant="outline" onClick={() => copy(css)} disabled={!tokens.length}>Copy filtered CSS</Button>
<a className="mt-btn mt-btn-outline mt-btn-md" href={`data:application/json;charset=utf-8,${encodeURIComponent(JSON.stringify({ source: catalogue.source, theme, requested:tokens.map(token=>token.name), tokens:exported }, null, 2))}`} download="mobtranslate-tokens.json">Download filtered JSON</a>
<Button variant="ghost" onClick={() => { setQuery(''); setGroup('all'); }}>Reset filters</Button>
</div>
<p data-token-status role="status" className="text-sm">{tokens.length} of {catalogue.tokens.length} tokens. {status}</p>
<p data-token-export-scope>{exported.length} declarations in this export. {dependencies?'Known declared references, including fallback branches, are included.':'This is a filtered fragment; references may require the shared stylesheet.'} {graph.missing.length?`${graph.missing.length} referenced names are absent from this catalogue; external scope or fallback behavior needs inspection.`:''} {graph.cycles.length?`${graph.cycles.length} reference cycles found; inspect the actual CSS before adoption.`:''}</p>
<details data-token-reference-details><summary className="min-h-11">Declared references for the current filter and export theme</summary>
<p>The source graph preserves var() relationships. It does not evaluate the live cascade, CSS fallback selection, units or contrast. Export theme selects authored declarations independently of the page theme.</p>
<div className="doc-table" role="region" aria-label="Declared token reference graph" tabIndex={0}><table><thead><tr><th scope="col">Name</th><th scope="col">Authored value</th><th scope="col">References</th></tr></thead><tbody>{graph.nodes.map(node=><tr key={node.name}><th scope="row">{node.name}</th><td>{node.value}</td><td>{node.references.join(', ')||'No declared var() reference'}</td></tr>)}</tbody></table></div>
{graph.missing.length>0&&<p>Absent names: {graph.missing.join(', ')}</p>}{graph.cycles.map((cycle,index)=><p key={index}>Cycle: {cycle.join(' → ')}</p>)}
</details>
{!tokens.length ? <p>No tokens match. Try a shorter name or reset the filters.</p> :
<div data-token-catalogue className="doc-table" tabIndex={0} role="region" aria-label="Scrollable token catalogue">
<table><thead><tr><th scope="col">Token</th><th scope="col">Light declaration</th><th scope="col">Dark override</th><th scope="col">Live value</th><th scope="col">Copy</th></tr></thead><tbody>{tokens.map((token) => <tr key={token.name}>
<th scope="row" className="font-mono whitespace-nowrap">{token.name}</th>
<td className="font-mono">{token.value}</td>
<td className="font-mono">{token.dark ?? 'Inherits light declaration'}</td>
<td className="font-mono">{resolved[token.name] || 'Not available in this render'}</td>
<td><button className="min-h-11 px-3 font-semibold" aria-label={`Copy ${token.name}`} onClick={() => copy(`${token.name}: ${theme === 'dark' ? token.dark ?? token.value : token.value};`)}>Copy</button></td>
</tr>)}</tbody></table>
</div>}
</div>;
}
import valueParser from 'postcss-value-parser';
export interface DeclaredToken {name:string;value:string;dark?:string|null}
export function references(value:string):string[]{
const names=new Set<string>();
valueParser(value).walk(node=>{
if(node.type!=='function'||node.value.toLowerCase()!=='var')return;
const first=node.nodes.find(part=>part.type!=='space'&&part.type!=='comment');
if(first?.type==='word'&&first.value.startsWith('--'))names.add(first.value);
});
return [...names];
}
export function inspectTokenGraph(catalogue:DeclaredToken[],requested:string[],theme:'light'|'dark'){
const byName=new Map(catalogue.map(token=>[token.name,token]));
const nodes=new Map<string,{name:string;value:string;references:string[]}>();
const missing=new Set<string>();const cycles:string[][]=[];const visited=new Set<string>();
function visit(name:string,stack:string[]){
const at=stack.indexOf(name);
if(at>=0){cycles.push([...stack.slice(at),name]);return;}
if(visited.has(name))return;
const token=byName.get(name);if(!token){missing.add(name);return;}
const value=theme==='dark'?token.dark??token.value:token.value;
const refs=references(value);nodes.set(name,{name,value,references:refs});
for(const ref of refs)visit(ref,[...stack,name]);
visited.add(name);
}
for(const name of requested)visit(name,[]);
return {tokens:catalogue.filter(token=>nodes.has(token.name)),nodes:[...nodes.values()],missing:[...missing],cycles};
}