Tokens
Shared design tokens and global CSS variables used across moduix components.
Tokens
moduix styles are built from CSS custom properties. Start with semantic color tokens for the surface, text, borders, rings, and overlays, then tune spacing, radius, size, typography, motion, shadow, and layering tokens when the product system needs a different rhythm.
Common override variables sit above individual components. For example, --backdrop-bg controls
the default backdrop color for dialogs, drawers, selects, comboboxes, and other layered components
until a component-specific variable overrides it.
:root--color-primary: var(--primary)Components read semantic variables while themes override the raw palette.
--dialog-backdrop-bg -> --backdrop-bg -> --color-overlayGlobal decisions stay global, and component-level variables can still opt out.
.billing-flow { --size-lg: 36px; }Any parent scope can change density, motion, or color for a focused area.
Colors
Light and dark theme values plus semantic aliases.
Text, muted copy, border, action, and backdrop tokens in one compact layout.
Text, muted copy, border, action, and backdrop tokens in one compact layout.
--backgroundoklch(1 0 0)oklch(0.145 0 0)--foregroundoklch(0.145 0 0)oklch(0.985 0 0)--cardoklch(1 0 0)oklch(0.205 0 0)--popoveroklch(1 0 0)oklch(0.205 0 0)--primaryoklch(0.205 0 0)oklch(0.922 0 0)--secondaryoklch(0.97 0 0)oklch(0.269 0 0)--mutedoklch(0.97 0 0)oklch(0.269 0 0)--accentoklch(0.97 0 0)oklch(0.269 0 0)--destructiveoklch(0.577 0.245 27.325)oklch(0.704 0.191 22.216)--borderoklch(0.922 0 0)oklch(1 0 0 / 10%)--inputoklch(0.922 0 0)oklch(1 0 0 / 15%)--ringoklch(0.708 0 0)oklch(0.556 0 0)--overlayoklch(0.205 0 0 / 0.14)oklch(0.205 0 0 / 0.14)--overlay-foregroundoklch(0.205 0 0 / 0.04)oklch(0.205 0 0 / 0.04)--chart-1oklch(0.646 0.222 41.116)oklch(0.488 0.243 264.376)--chart-2oklch(0.6 0.118 184.704)oklch(0.696 0.17 162.48)--chart-3oklch(0.398 0.07 227.392)oklch(0.769 0.188 70.08)--chart-4oklch(0.828 0.189 84.429)oklch(0.627 0.265 303.9)--chart-5oklch(0.769 0.188 70.08)oklch(0.645 0.246 16.439)Spacing & Size
Primitive steps, semantic spacing, and control heights.
Primitive spacing
--spacing-00px--spacing-14px--spacing-28px--spacing-312px--spacing-416px--spacing-520px--spacing-624px--spacing-832px--spacing-1040pxSemantic spacing
--spacing-xsvar(--spacing-1) / 4px--spacing-smvar(--spacing-2) / 8px--spacing-mdvar(--spacing-3) / 12px--spacing-lgvar(--spacing-4) / 16px--spacing-xlvar(--spacing-5) / 20px--spacing-2xlvar(--spacing-6) / 24pxControl size
--size-xs24px--size-sm32px--size-md36px--size-lg40px--size-xl48pxShape & Borders
Radius derives from one root value; borders stay simple.
Radius
--radius0.625rem--radius-none0--radius-xscalc(var(--radius) * 0.4)--radius-smcalc(var(--radius) * 0.6)--radius-mdcalc(var(--radius) * 0.8)--radius-lgvar(--radius)--radius-xlcalc(var(--radius) * 1.2)--radius-full9999pxBorder widths
--border-width-sm1px--border-width-md2px--border-width-lg4pxOpacity
--opacity-disabled0.5--opacity-loading0.85--opacity-hover0.9Typography
Font sizes, line heights, weights, and tracking tokens.
--text-xs11px / 14px--line-height-text-xs--text-sm14px / 22px--line-height-text-sm--text-md16px / 24px--line-height-text-md--text-lg18px / 28px--line-height-text-lg--text-xl20px / 32px--line-height-text-xl--text-2xl24px / 32px--line-height-text-2xl--text-3xl30px / 36px--line-height-text-3xl--weight-regular400--weight-medium500--weight-semibold600--weight-bold700--tracking-text-sm-0.01em--tracking-text-xs-0.016emMotion
Durations, easing, transition shorthands, and reusable animations.
Transition tokens
--duration-fast100ms--duration-normal200ms--duration-slow300ms--duration-slower500ms--ease-incubic-bezier(0.4, 0, 1, 1)--ease-outcubic-bezier(0, 0, 0.2, 1)--ease-in-outcubic-bezier(0.4, 0, 0.2, 1)--ease-springcubic-bezier(0.32, 0.72, 0, 1)--transition-defaultvar(--duration-normal) var(--ease-in-out)--transition-fastvar(--duration-fast) var(--ease-in-out)--transition-slowvar(--duration-slow) var(--ease-in-out)--transition-slowervar(--duration-slower) var(--ease-in-out)Animation tokens
--animation-pulsepulse 2s ease-in-out infinite--animation-fade-infade-in var(--duration-normal) var(--ease-out)--animation-fade-outfade-out var(--duration-normal) var(--ease-in)--animation-slide-upslide-up var(--duration-normal) var(--ease-out)--animation-slide-downslide-down var(--duration-normal) var(--ease-out)--animation-spinspin 0.75s linear infiniteElevation & Layers
Shadows, transforms, and z-index tokens for overlays.
--shadow-sm0 2px 4px 0 #0000001a, 0 1px 2px -1px #0000001a--shadow-md0 4px 6px -1px #0000001a, 0 2px 4px -2px #0000001a--shadow-lg0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001aTransforms
--scale-popup0.9Dialog, popover, tooltip, menu, preview card, toast, nav menu--scale-dropdown0.95Select, combobox, autocomplete, context menu rootZ-index
--z-default1--z-xs5--z-sm10--z-md20--z-lg30--z-xl40--z-backdrop40--z-modal50--z-popup60--z-toast70Shared Component Variables
Global overrides used by multiple components.
Backdrop variables
--backdrop-bgvar(--color-overlay)Global backdrop color fallback--alert-dialog-backdrop-bgvar(--backdrop-bg, var(--color-overlay))AlertDialog--autocomplete-backdrop-bgvar(--backdrop-bg, var(--color-overlay))Autocomplete--combobox-backdrop-bgvar(--backdrop-bg, var(--color-overlay))Combobox--dialog-backdrop-bgvar(--backdrop-bg, var(--color-overlay))Dialog--drawer-backdrop-bgvar(--backdrop-bg, var(--color-overlay))Drawer--select-backdrop-bgvar(--backdrop-bg, var(--color-overlay))Select--menu-backdrop-bgvar(--backdrop-bg, transparent)Menu--menubar-backdrop-bgvar(--backdrop-bg, transparent)Menubar--navigation-menu-backdrop-bgvar(--backdrop-bg, transparent)NavigationMenu--popover-backdrop-bgvar(--backdrop-bg, transparent)Popover--preview-card-backdrop-bgvar(--backdrop-bg, transparent)PreviewCardPopup menu variables
--popup-item-min-height2rem--popup-item-padding-y0.5rem--popup-item-padding-x-start1rem--popup-item-padding-x-end1rem--popup-item-font-sizevar(--text-sm)--popup-item-line-heightvar(--line-height-text-sm)--popup-highlight-inset-xvar(--spacing-1)--popup-highlight-radiusvar(--radius-sm)--popup-list-padding-y0.25rem--popup-group-label-font-sizevar(--text-xs)--popup-group-label-padding-y0.35rem--popup-check-gap0.5rem--popup-check-indicator-size0.75rem--popup-separator-margin-y0.375remOverride Scope
Set tokens globally in :root, inside .dark, or on any parent container that wraps moduix
components.
:root {
--primary: oklch(0.52 0.18 145);
--radius: 0.75rem;
--backdrop-bg: oklch(0.12 0.03 250 / 0.34);
}
.dense-panel {
--spacing-md: 8px;
--size-lg: 36px;
--popup-item-min-height: 1.75rem;
}