import { css, type CSSResult } from '@design.estate/dees-element'; // ============================================ // Theme Token Type Definitions // ============================================ export interface IThemeColors { bgPrimary: string; bgSecondary: string; bgTertiary: string; textPrimary: string; textSecondary: string; textMuted: string; borderDefault: string; borderSubtle: string; borderStrong: string; accentPrimary: string; accentSuccess: string; accentWarning: string; accentError: string; } export interface IThemeSpacing { xs: string; sm: string; md: string; lg: string; xl: string; '2xl': string; '3xl': string; } export interface IThemeRadius { xs: string; sm: string; md: string; lg: string; xl: string; full: string; } export interface IThemeShadows { xs: string; sm: string; md: string; lg: string; } export interface IThemeTransitions { fast: string; default: string; slow: string; slower: string; } export interface IThemeControlHeights { sm: string; md: string; lg: string; xl: string; } export interface ITheme { colors: { light: IThemeColors; dark: IThemeColors; }; spacing: IThemeSpacing; radius: IThemeRadius; shadows: IThemeShadows; transitions: IThemeTransitions; controlHeights: IThemeControlHeights; } // ============================================ // Default Theme Values (TypeScript Object) // ============================================ export const themeDefaults: ITheme = { colors: { light: { bgPrimary: '#ffffff', bgSecondary: '#fafafa', bgTertiary: '#f4f4f5', textPrimary: '#09090b', textSecondary: '#374151', textMuted: '#71717a', borderDefault: '#e5e7eb', borderSubtle: '#f4f4f5', borderStrong: '#d1d5db', accentPrimary: '#3b82f6', accentSuccess: '#22c55e', accentWarning: '#f59e0b', accentError: '#ef4444', }, dark: { bgPrimary: '#09090b', bgSecondary: '#0a0a0a', bgTertiary: '#18181b', textPrimary: '#fafafa', textSecondary: '#d4d4d8', textMuted: '#a1a1aa', borderDefault: '#27272a', borderSubtle: '#1a1a1a', borderStrong: '#3f3f46', accentPrimary: '#3b82f6', accentSuccess: '#22c55e', accentWarning: '#f59e0b', accentError: '#ef4444', }, }, spacing: { xs: '4px', sm: '8px', md: '12px', lg: '16px', xl: '24px', '2xl': '32px', '3xl': '48px', }, radius: { xs: '2px', sm: '4px', md: '6px', lg: '8px', xl: '12px', full: '999px', }, shadows: { xs: '0 1px 2px 0 rgb(0 0 0 / 0.05)', sm: '0 1px 3px rgba(0, 0, 0, 0.1)', md: '0 2px 8px rgba(0, 0, 0, 0.15)', lg: '0 4px 12px rgba(0, 0, 0, 0.15)', }, transitions: { fast: '0.1s', default: '0.15s', slow: '0.2s', slower: '0.3s', }, controlHeights: { sm: '32px', md: '36px', lg: '40px', xl: '48px', }, }; // ============================================ // CSS Block for Component Import // ============================================ /** * Default theme styles to be imported into every component's static styles array. * Provides CSS custom properties for spacing, radius, shadows, transitions, and control heights. * * Usage: * ```typescript * import { themeDefaultStyles } from '../00theme.js'; * * @customElement('my-component') * export class MyComponent extends DeesElement { * public static styles = [ * themeDefaultStyles, * cssManager.defaultStyles, * css`...` * ]; * } * ``` */ export const themeDefaultStyles: CSSResult = css` :host { /* ======================================== * Spacing Scale * ======================================== */ --dees-spacing-xs: 4px; --dees-spacing-sm: 8px; --dees-spacing-md: 12px; --dees-spacing-lg: 16px; --dees-spacing-xl: 24px; --dees-spacing-2xl: 32px; --dees-spacing-3xl: 48px; /* ======================================== * Border Radius Scale * ======================================== */ --dees-radius-xs: 2px; --dees-radius-sm: 4px; --dees-radius-md: 6px; --dees-radius-lg: 8px; --dees-radius-xl: 12px; --dees-radius-full: 999px; /* ======================================== * Shadow Elevation Scale * ======================================== */ --dees-shadow-xs: 0 1px 2px 0 rgb(0 0 0 / 0.05); --dees-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.1); --dees-shadow-md: 0 2px 8px rgba(0, 0, 0, 0.15); --dees-shadow-lg: 0 4px 12px rgba(0, 0, 0, 0.15); /* ======================================== * Transition Duration Scale * ======================================== */ --dees-transition-fast: 0.1s; --dees-transition-default: 0.15s; --dees-transition-slow: 0.2s; --dees-transition-slower: 0.3s; /* ======================================== * Control Height Scale * ======================================== */ --dees-control-height-sm: 32px; --dees-control-height-md: 36px; --dees-control-height-lg: 40px; --dees-control-height-xl: 48px; } `;