ObjectStackObjectStack

Theme

Theme protocol schemas

Color Palette Schema

Defines brand colors and their variants.

Source: packages/spec/src/ui/theme.zod.ts

TypeScript Usage

import { Animation, BorderRadius, Breakpoints, ColorPalette, DensityMode, Shadow, Spacing, Theme, ThemeMode, Typography, WcagContrastLevel, ZIndex } from '@objectstack/spec/ui';
import type { Animation, BorderRadius, Breakpoints, ColorPalette, DensityMode, Shadow, Spacing, Theme, ThemeMode, Typography, WcagContrastLevel, ZIndex } from '@objectstack/spec/ui';

// Validate data
const result = Animation.parse(data);

Animation

Properties

PropertyTypeRequiredDescription
durationObjectoptional
timingObjectoptional

BorderRadius

Properties

PropertyTypeRequiredDescription
nonestringoptionalNo border radius (0)
smstringoptionalSmall border radius (e.g., 0.125rem)
basestringoptionalBase border radius (e.g., 0.25rem)
mdstringoptionalMedium border radius (e.g., 0.375rem)
lgstringoptionalLarge border radius (e.g., 0.5rem)
xlstringoptionalExtra large border radius (e.g., 0.75rem)
2xlstringoptional2X large border radius (e.g., 1rem)
fullstringoptionalFull border radius (50%)

Breakpoints

Properties

PropertyTypeRequiredDescription
xsstringoptionalExtra small breakpoint (e.g., 480px)
smstringoptionalSmall breakpoint (e.g., 640px)
mdstringoptionalMedium breakpoint (e.g., 768px)
lgstringoptionalLarge breakpoint (e.g., 1024px)
xlstringoptionalExtra large breakpoint (e.g., 1280px)
2xlstringoptional2X large breakpoint (e.g., 1536px)

ColorPalette

Properties

PropertyTypeRequiredDescription
primarystringPrimary brand color (hex, rgb, or hsl)
secondarystringoptionalSecondary brand color
accentstringoptionalAccent color for highlights
successstringoptionalSuccess state color (default: green)
warningstringoptionalWarning state color (default: yellow)
errorstringoptionalError state color (default: red)
infostringoptionalInfo state color (default: blue)
backgroundstringoptionalBackground color
surfacestringoptionalSurface/card background color
textstringoptionalPrimary text color
textSecondarystringoptionalSecondary text color
borderstringoptionalBorder color
disabledstringoptionalDisabled state color
primaryLightstringoptionalLighter shade of primary
primaryDarkstringoptionalDarker shade of primary
secondaryLightstringoptionalLighter shade of secondary
secondaryDarkstringoptionalDarker shade of secondary

DensityMode

Allowed Values

  • compact
  • regular
  • spacious

Shadow

Properties

PropertyTypeRequiredDescription
nonestringoptionalNo shadow
smstringoptionalSmall shadow
basestringoptionalBase shadow
mdstringoptionalMedium shadow
lgstringoptionalLarge shadow
xlstringoptionalExtra large shadow
2xlstringoptional2X large shadow
innerstringoptionalInner shadow (inset)

Spacing

Properties

PropertyTypeRequiredDescription
0stringoptional0 spacing (0)
1stringoptionalSpacing unit 1 (e.g., 0.25rem)
2stringoptionalSpacing unit 2 (e.g., 0.5rem)
3stringoptionalSpacing unit 3 (e.g., 0.75rem)
4stringoptionalSpacing unit 4 (e.g., 1rem)
5stringoptionalSpacing unit 5 (e.g., 1.25rem)
6stringoptionalSpacing unit 6 (e.g., 1.5rem)
8stringoptionalSpacing unit 8 (e.g., 2rem)
10stringoptionalSpacing unit 10 (e.g., 2.5rem)
12stringoptionalSpacing unit 12 (e.g., 3rem)
16stringoptionalSpacing unit 16 (e.g., 4rem)
20stringoptionalSpacing unit 20 (e.g., 5rem)
24stringoptionalSpacing unit 24 (e.g., 6rem)

Theme

Properties

PropertyTypeRequiredDescription
namestringUnique theme identifier (snake_case)
labelstringHuman-readable theme name
descriptionstringoptionalTheme description
modeEnum<'light' | 'dark' | 'auto'>Theme mode (light, dark, or auto)
colorsObjectColor palette configuration
typographyObjectoptionalTypography settings
spacingObjectoptionalSpacing scale
borderRadiusObjectoptionalBorder radius scale
shadowsObjectoptionalBox shadow effects
breakpointsObjectoptionalResponsive breakpoints
animationObjectoptionalAnimation settings
zIndexObjectoptionalZ-index scale for layering
customVarsRecord<string, string>optionalCustom CSS variables (key-value pairs)
logoObjectoptionalLogo assets
extendsstringoptionalBase theme to extend from
densityEnum<'compact' | 'regular' | 'spacious'>optionalDisplay density: compact, regular, or spacious
wcagContrastEnum<'AA' | 'AAA'>optionalWCAG color contrast level (AA or AAA)
rtlbooleanoptionalEnable right-to-left layout direction
touchTargetObjectoptionalTouch target sizing defaults
keyboardNavigationObjectoptionalKeyboard focus management settings

ThemeMode

Allowed Values

  • light
  • dark
  • auto

Typography

Properties

PropertyTypeRequiredDescription
fontFamilyObjectoptional
fontSizeObjectoptional
fontWeightObjectoptional
lineHeightObjectoptional
letterSpacingObjectoptional

WcagContrastLevel

Allowed Values

  • AA
  • AAA

ZIndex

Properties

PropertyTypeRequiredDescription
basenumberoptionalBase z-index (e.g., 0)
dropdownnumberoptionalDropdown z-index (e.g., 1000)
stickynumberoptionalSticky z-index (e.g., 1020)
fixednumberoptionalFixed z-index (e.g., 1030)
modalBackdropnumberoptionalModal backdrop z-index (e.g., 1040)
modalnumberoptionalModal z-index (e.g., 1050)
popovernumberoptionalPopover z-index (e.g., 1060)
tooltipnumberoptionalTooltip z-index (e.g., 1070)

On this page