export const themeTokens = { color: { background: '#0B0E14', backgroundElevated: '#0F131C', panel: '#121721', panelRaised: '#171D29', panelGlass: 'rgba(18, 23, 33, 0.78)', border: 'rgba(148, 163, 184, 0.18)', borderStrong: 'rgba(148, 163, 184, 0.32)', textPrimary: '#F8FAFC', textSecondary: '#AAB4C3', textMuted: '#718096', accent: '#4C8DFF', accentSoft: 'rgba(76, 141, 255, 0.18)', highlight: '#FFB04C', highlightSoft: 'rgba(255, 176, 76, 0.18)', success: '#46D39A', warning: '#FACC15', danger: '#F87171', focusRing: '#8AB4FF', }, radius: { xs: '0.375rem', sm: '0.5rem', md: '0.75rem', lg: '1rem', xl: '1.25rem', panel: '1.125rem', pill: '999px', }, spacing: { hairline: '1px', navHeight: '4rem', sidebarWidth: '20rem', controlPanelWidth: '22rem', statusBarHeight: '2.25rem', drawerWidth: '26rem', }, shadow: { panel: '0 18px 50px rgba(0, 0, 0, 0.34)', floating: '0 24px 80px rgba(0, 0, 0, 0.46)', glowAccent: '0 0 36px rgba(76, 141, 255, 0.28)', glowHighlight: '0 0 32px rgba(255, 176, 76, 0.22)', }, typography: { sans: 'Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif', mono: '"JetBrains Mono", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace', numeric: '"Roboto Flex", Inter, ui-sans-serif, system-ui, sans-serif', }, motion: { fast: '140ms', normal: '220ms', slow: '420ms', easing: 'cubic-bezier(0.2, 0.8, 0.2, 1)', }, zIndex: { base: 0, canvas: 1, overlay: 10, navigation: 20, drawer: 30, modal: 40, toast: 50, }, } as const; export type ThemeTokens = typeof themeTokens; export const cssVariableTokens: Record = { '--color-bg': themeTokens.color.background, '--color-bg-elevated': themeTokens.color.backgroundElevated, '--color-panel': themeTokens.color.panel, '--color-panel-raised': themeTokens.color.panelRaised, '--color-panel-glass': themeTokens.color.panelGlass, '--color-border': themeTokens.color.border, '--color-border-strong': themeTokens.color.borderStrong, '--color-text-primary': themeTokens.color.textPrimary, '--color-text-secondary': themeTokens.color.textSecondary, '--color-text-muted': themeTokens.color.textMuted, '--color-accent': themeTokens.color.accent, '--color-accent-soft': themeTokens.color.accentSoft, '--color-highlight': themeTokens.color.highlight, '--color-highlight-soft': themeTokens.color.highlightSoft, '--color-success': themeTokens.color.success, '--color-warning': themeTokens.color.warning, '--color-danger': themeTokens.color.danger, '--color-focus-ring': themeTokens.color.focusRing, '--radius-xs': themeTokens.radius.xs, '--radius-sm': themeTokens.radius.sm, '--radius-md': themeTokens.radius.md, '--radius-lg': themeTokens.radius.lg, '--radius-xl': themeTokens.radius.xl, '--radius-panel': themeTokens.radius.panel, '--radius-pill': themeTokens.radius.pill, '--nav-height': themeTokens.spacing.navHeight, '--sidebar-width': themeTokens.spacing.sidebarWidth, '--control-panel-width': themeTokens.spacing.controlPanelWidth, '--status-bar-height': themeTokens.spacing.statusBarHeight, '--drawer-width': themeTokens.spacing.drawerWidth, '--shadow-panel': themeTokens.shadow.panel, '--shadow-floating': themeTokens.shadow.floating, '--shadow-glow-accent': themeTokens.shadow.glowAccent, '--shadow-glow-highlight': themeTokens.shadow.glowHighlight, '--font-sans': themeTokens.typography.sans, '--font-mono': themeTokens.typography.mono, '--font-numeric': themeTokens.typography.numeric, '--motion-fast': themeTokens.motion.fast, '--motion-normal': themeTokens.motion.normal, '--motion-slow': themeTokens.motion.slow, '--motion-easing': themeTokens.motion.easing, }; export const getCssVariableDeclarations = (tokens: Record = cssVariableTokens): string => Object.entries(tokens) .map(([name, value]) => `${name}: ${value};`) .join('\n'); export default themeTokens;