/** * Create Theme Utilities * * Helper functions for creating custom themes that match the SMRT theme system. */ import type { ColorPalette, EasingScale, ElevationScale, GlassEffects, Theme, ThemePreset, TypographyScale } from './types.js'; /** * Options for creating a custom theme */ export interface CreateThemeOptions { /** Theme identifier (must be unique) */ id: string; /** Display name */ name: string; /** Light mode color palette */ light: Partial & Pick; /** Dark mode color palette (optional, will be auto-generated if not provided) */ dark?: Partial; /** Typography scale (optional, defaults to Material) */ typography?: Partial; /** Elevation shadows (optional) */ elevation?: Partial; /** Custom easing curves (optional) */ easing?: Partial; /** Glass effects (optional) */ glass?: GlassEffects; /** Font family */ fontFamily?: string; /** Base theme to extend (copies all tokens as starting point) */ extend?: ThemePreset; } /** * Create a custom theme * * @example * ```typescript * import { createTheme, registerTheme } from '@happyvertical/smrt-ui/themes'; * * const myTheme = createTheme({ * id: 'brand', * name: 'Brand Theme', * light: { * primary: '#ff6b35', * background: '#fafafa', * surface: '#ffffff', * }, * dark: { * primary: '#ff8c5a', * background: '#0a0a0a', * surface: '#1a1a1a', * }, * fontFamily: 'Inter, sans-serif', * }); * * registerTheme(myTheme); * ``` */ export declare function createTheme(options: CreateThemeOptions): Theme; /** * Preload the theme registry for extension support * Call this before createTheme if using the extend option */ export declare function preloadThemeRegistry(): Promise; /** * Register a custom theme for use with ThemeProvider * * @example * ```typescript * import { createTheme, registerTheme } from '@happyvertical/smrt-ui/themes'; * * const customTheme = createTheme({ id: 'brand', name: 'Brand', ... }); * registerTheme(customTheme); * * // Now use in your app * * ``` */ export declare function registerTheme(theme: Theme): void; /** * Get a registered custom theme */ export declare function getRegisteredTheme(_id: string): Theme | undefined; /** * Check if a theme is registered * Note: This is async due to ESM dynamic import requirements */ export declare function isThemeRegistered(id: string): Promise; /** * Create a simple theme from just a primary color * Auto-generates all other colors * * @example * ```typescript * const brandTheme = createThemeFromColor('#ff6b35', 'brand', 'Brand Theme'); * registerTheme(brandTheme); * ``` */ export declare function createThemeFromColor(primaryColor: string, id: string, name: string, options?: Omit): Theme; //# sourceMappingURL=create-theme.d.ts.map