Tokens and theming
Components only read tokens. Override the palette and a few dials after the import, and every component follows without a single file edit. Dark mode is one class.
@import './comwit-tokens.css';
:root {
--brand: #0b68ba; /* buttons, links, focus, selection */
--brand-strong: #08528f;
--radius-scale: 0.6; /* every corner, one dial */
--pill-radius: 12px; /* buttons and chips stop being pills */
}Try it
All tokens
Palette
--canvas--canvas-raised--canvas-overlay--surface-subtle--fill--fill-strong#dfe2e7Calendar--ink--ink-soft--ink-muted--ink-subtle--ink-disabled--brand--brand-foreground--brand-strong--brand-ink#0b2e6b--line--line-strongSemantic
--background--foreground--card--popover--popover-foreground--primary--primary-foreground--primary-strong--primary-inkvar(--brand-ink)--secondary--muted--muted-foreground--soft-foreground--subtle-foregroundvar(--ink-subtle)Pull to refreshDate pickerTime pickerMonth pickerCalendarPagerAutocompleteSelect+2 more--disabled-foreground--accent--accent-foreground--selectedvar(--fill-strong)Calendar--skeletonvar(--surface-subtle)Data table--border--border-strongvar(--line-strong)--inputvar(--line-strong)ChatDate pickerTime pickerMonth pickerCheckboxRadio groupAutocompleteSelect+6 more--ring--switch-thumb#ffffffSwitch--overlay--surface-glassrgba(255, 255, 255, 0.72)Data table--shadow-card--shadow-card-hoverStatus
--destructive--destructive-strong#c62a2fButtonGlass
--glass-tintrgb(233 235 239)--glass-opacity0.38--glass-veil#ffffff--glass-edgergba(255, 255, 255, 0.55)--glass-sheenrgba(255, 255, 255, 0.9)--glass-glowrgba(255, 255, 255, 0.42)--glass-shadergba(10, 10, 10, 0.08)--glass-shadow0 2px 4px rgba(16, 24, 40, 0.09), 0 12px 28px rg…Shape
--radius10px--card-radius16px--sheet-radius20px--pill-radius9999px--radius-scale1--border-width1px--border-width-strong2px--focus-ring-width2px--focus-ring-offset2px--field-ring-width3px--spacing0.25remType
--text-scale1--tracking-scale1--display-fontvar(--font-sans)--weight-normal400--weight-medium500--weight-semibold600--weight-bold700Motion
--duration-instant75ms--duration-fast--duration-base--duration-slow--duration-slower500msBottom sheet--press-scale0.98--press-scale-thumb1.1--ripple-opacity0.35--state-hover0.05--state-selected0.1--state-disabled0.5--state-disabled-content0.4Elevation
--elevation-0none--elevation-10 1px 2px rgba(16, 24, 40, 0.04)--elevation-2--elevation-3--elevation-40 4px 12px rgba(16, 24, 40, 0.1), 0 16px 40px rg…--elevation-50 8px 24px rgba(16, 24, 40, 0.12), 0 24px 64px r…--elevation-raised0 1px 2px rgba(16, 24, 40, 0.1), 0 1px 3px rgba(…--elevation-message0 4px 20px rgba(11, 46, 107, 0.06)--elevation-panel0 10px 30px rgba(11, 46, 107, 0.08)Layers
--z-raised10--z-sticky20--z-appbar40--z-overlay1000--z-modal1100--z-dropdown1200--z-toast1300Sizes
--page-gutter1rem--menu-min-width8rem--picker-width320px--appbar-height56px--bottom-nav-height64px