@omnitron-dev/prism 0.1.3 → 0.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/blocks/index.js +49 -9
- package/dist/blocks/index.js.map +1 -1
- package/dist/chunk-2FYNRDXR.js +192 -0
- package/dist/chunk-2FYNRDXR.js.map +1 -0
- package/dist/chunk-A2Z7NVGL.js +11496 -0
- package/dist/chunk-A2Z7NVGL.js.map +1 -0
- package/dist/{chunk-E3XANPTO.js → chunk-IZOIO7PA.js} +5 -191
- package/dist/{chunk-E3XANPTO.js.map → chunk-IZOIO7PA.js.map} +1 -1
- package/dist/{chunk-LAEY5USO.js → chunk-KTCWPGON.js} +55 -25
- package/dist/chunk-KTCWPGON.js.map +1 -0
- package/dist/{chunk-DXXZ3ITR.js → chunk-MEFT6XPH.js} +721 -455
- package/dist/chunk-MEFT6XPH.js.map +1 -0
- package/dist/{chunk-BTIT7WYH.js → chunk-SNKGGHBT.js} +2 -2
- package/dist/chunk-SNKGGHBT.js.map +1 -0
- package/dist/{chunk-UR6X3W5I.js → chunk-VAAIHNWQ.js} +3 -3
- package/dist/{chunk-UR6X3W5I.js.map → chunk-VAAIHNWQ.js.map} +1 -1
- package/dist/{chunk-GYDT5EKX.js → chunk-XQXGE2PW.js} +760 -472
- package/dist/chunk-XQXGE2PW.js.map +1 -0
- package/dist/{chunk-WC2WM2JD.js → chunk-XXP3ZGU6.js} +18 -8
- package/dist/chunk-XXP3ZGU6.js.map +1 -0
- package/dist/chunk-YJMAQL3S.js +1887 -0
- package/dist/chunk-YJMAQL3S.js.map +1 -0
- package/dist/cli/index.js +4 -4
- package/dist/cli/index.js.map +1 -1
- package/dist/components/editor/index.d.ts +107 -0
- package/dist/components/editor/index.js +4 -0
- package/dist/components/editor/index.js.map +1 -0
- package/dist/components/index.css +131 -0
- package/dist/components/index.css.map +1 -0
- package/dist/components/index.d.ts +7073 -0
- package/dist/components/index.js +13 -0
- package/dist/components/index.js.map +1 -0
- package/dist/components-BCGZ-Rwt.d.ts +142 -0
- package/dist/{config-BA6IeTq9.d.ts → config-Pct0n_Kq.d.ts} +2 -2
- package/dist/core/index.d.ts +20 -5
- package/dist/core/index.js +2 -2
- package/dist/hooks/index.d.ts +3 -2
- package/dist/hooks/index.js +4 -3
- package/dist/{index-odhPSv9I.d.ts → index-nmJ8Muwg.d.ts} +4 -127
- package/dist/index.d.ts +265 -6615
- package/dist/index.js +119 -11662
- package/dist/index.js.map +1 -1
- package/dist/layouts/index.js +1 -1
- package/dist/popover-Dmw7SJLR.d.ts +127 -0
- package/dist/registry/index.d.ts +2 -2
- package/dist/{registry-BrDNftd5.d.ts → registry-DQcIzW2s.d.ts} +2 -2
- package/dist/{settings-plpR26Xk.d.ts → settings-CAC0qFjS.d.ts} +2 -2
- package/dist/state/index.d.ts +2 -2
- package/dist/state/index.js +1 -1
- package/dist/text-transform-D6MzzF7V.d.ts +165 -0
- package/dist/theme/index.d.ts +2 -2
- package/dist/theme/index.js +2 -2
- package/dist/{theme-CrXLfP1c.d.ts → theme-B4Q3Bg5o.d.ts} +1 -1
- package/dist/types/index.d.ts +6 -145
- package/package.json +46 -40
- package/dist/chunk-BTIT7WYH.js.map +0 -1
- package/dist/chunk-DXXZ3ITR.js.map +0 -1
- package/dist/chunk-GYDT5EKX.js.map +0 -1
- package/dist/chunk-LAEY5USO.js.map +0 -1
- package/dist/chunk-WC2WM2JD.js.map +0 -1
|
@@ -335,5 +335,5 @@ function getMigrationInfo(migrations) {
|
|
|
335
335
|
}
|
|
336
336
|
|
|
337
337
|
export { authStore, checkSettingsVersion, clearSettings, createAddFieldMigration, createMigration, createRemoveFieldMigration, createRenameMigration, createSettingsValidator, createTransformMigration, createVersionedPersistOptions, createVersionedStorage, exportSettings, getMigrationInfo, importSettings, runMigrations, themeStore, uiStore, useAuthStore, useThemeStore, useUIStore, validateMigrations };
|
|
338
|
-
//# sourceMappingURL=chunk-
|
|
339
|
-
//# sourceMappingURL=chunk-
|
|
338
|
+
//# sourceMappingURL=chunk-SNKGGHBT.js.map
|
|
339
|
+
//# sourceMappingURL=chunk-SNKGGHBT.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/state/stores/theme.ts","../src/state/stores/auth.ts","../src/state/stores/ui.ts","../src/state/settings-version.ts"],"names":["defaultState"],"mappings":"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","file":"chunk-SNKGGHBT.js","sourcesContent":["/**\n * Theme Store\n *\n * @deprecated Use useSettingsStore from './settings' instead.\n * This store is maintained for backwards compatibility only.\n * The useSettingsStore provides the same functionality plus additional\n * settings like navLayout, density, fontSize, and more.\n *\n * Migration example:\n * ```tsx\n * // Before (deprecated)\n * const { mode, setMode } = useThemeStore();\n *\n * // After (recommended)\n * const { mode, setMode } = useSettingsStore();\n * ```\n *\n * @module @omnitron-dev/prism/state/stores\n */\n\nimport { createPersistedStore, createSelectors } from '../create-store.js';\nimport type { ThemeMode, ThemeDirection } from '../../types/theme.js';\n\n/**\n * Theme store state and actions.\n */\nexport interface ThemeState {\n /** Current theme mode */\n mode: ThemeMode;\n /** Text direction */\n direction: ThemeDirection;\n /** Current preset name */\n preset: string;\n /** Compact layout mode */\n compactLayout: boolean;\n /** High contrast mode */\n contrast: 'default' | 'high';\n /** Primary color override */\n primaryColor: string | null;\n\n // Actions\n setMode: (mode: ThemeMode) => void;\n toggleMode: () => void;\n setDirection: (direction: ThemeDirection) => void;\n setPreset: (preset: string) => void;\n setCompactLayout: (compact: boolean) => void;\n setContrast: (contrast: 'default' | 'high') => void;\n setPrimaryColor: (color: string | null) => void;\n reset: () => void;\n}\n\nconst defaultState = {\n mode: 'light' as ThemeMode,\n direction: 'ltr' as ThemeDirection,\n preset: 'default',\n compactLayout: false,\n contrast: 'default' as const,\n primaryColor: null,\n};\n\n/**\n * Theme store with persistence.\n *\n * @example\n * ```tsx\n * function ThemeToggle() {\n * const { mode, toggleMode } = useThemeStore();\n * return <button onClick={toggleMode}>{mode}</button>;\n * }\n * ```\n */\nexport const useThemeStore = createPersistedStore<ThemeState>(\n (set) => ({\n ...defaultState,\n\n setMode: (mode) => set({ mode }),\n toggleMode: () =>\n set((state) => {\n state.mode = state.mode === 'light' ? 'dark' : 'light';\n }),\n setDirection: (direction) => set({ direction }),\n setPreset: (preset) => set({ preset }),\n setCompactLayout: (compactLayout) => set({ compactLayout }),\n setContrast: (contrast) => set({ contrast }),\n setPrimaryColor: (primaryColor) => set({ primaryColor }),\n reset: () => set(defaultState),\n }),\n 'theme'\n);\n\n/**\n * Theme store with auto-generated selectors.\n *\n * @example\n * ```tsx\n * const mode = themeStore.use.mode();\n * ```\n */\nexport const themeStore = createSelectors(useThemeStore);\n","/**\n * Auth Store\n *\n * Manages authentication state (UI-side).\n * Server-side token validation should use Netron auth.\n *\n * SECURITY NOTE: Tokens are stored in session storage (not localStorage)\n * and are NOT persisted across browser sessions. Only the auth status\n * is persisted to allow checking login state on page load.\n *\n * @module @omnitron-dev/prism/state/stores\n */\n\nimport { createPersistedStore, createUIStore, createSelectors } from '../create-store.js';\n\n/**\n * Authentication status.\n */\nexport type AuthStatus = 'loading' | 'authenticated' | 'unauthenticated';\n\n/**\n * Auth store state (persisted - only status).\n */\nexport interface AuthStoreState {\n /** Current auth status */\n status: AuthStatus;\n /** Session ID (non-sensitive) */\n sessionId: string | null;\n\n // Actions\n setStatus: (status: AuthStatus) => void;\n setAuthenticated: (sessionId?: string) => void;\n setUnauthenticated: () => void;\n clearSession: () => void;\n}\n\n/**\n * Token store state (non-persisted - memory only).\n * Tokens should NEVER be persisted to localStorage.\n */\ninterface TokenStoreState {\n /** Access token (memory-only, cleared on page refresh) */\n token: string | null;\n setToken: (token: string | null) => void;\n}\n\n/**\n * Token store - memory-only, NOT persisted.\n * For XSS security, tokens should not be in localStorage.\n */\nexport const useTokenStore = createUIStore<TokenStoreState>(\n (set) => ({\n token: null,\n setToken: (token) => set({ token }),\n }),\n 'token'\n);\n\n/**\n * Auth store with partial persistence.\n * Only status and sessionId are persisted, NOT the token.\n *\n * @example\n * ```tsx\n * function AuthGuard({ children }) {\n * const status = useAuthStore((s) => s.status);\n * const isAuthenticated = selectIsAuthenticated(useAuthStore.getState());\n *\n * if (status === 'loading') return <Spinner />;\n * if (!isAuthenticated) return <Navigate to=\"/login\" />;\n *\n * return children;\n * }\n * ```\n */\nexport const useAuthStore = createPersistedStore<AuthStoreState>(\n (set) => ({\n status: 'loading',\n sessionId: null,\n\n // Actions\n setStatus: (status) => set({ status }),\n\n setAuthenticated: (sessionId) => {\n set({\n status: 'authenticated',\n sessionId: sessionId ?? null,\n });\n },\n\n setUnauthenticated: () => {\n // Clear token from memory store\n useTokenStore.getState().setToken(null);\n set({\n status: 'unauthenticated',\n sessionId: null,\n });\n },\n\n clearSession: () => {\n // Clear token from memory\n useTokenStore.getState().setToken(null);\n // Clear any stored session data\n if (typeof window !== 'undefined') {\n window.sessionStorage.removeItem('sessionId');\n }\n set({\n status: 'unauthenticated',\n sessionId: null,\n });\n },\n }),\n 'auth',\n {\n // Only persist non-sensitive data\n partialize: (state) =>\n (({\n status: state.status,\n sessionId: state.sessionId\n }) as AuthStoreState),\n }\n);\n\n// =============================================================================\n// SELECTORS (computed state helpers)\n// =============================================================================\n\n/**\n * Select whether auth is loading.\n */\nexport function selectIsLoading(state: AuthStoreState): boolean {\n return state.status === 'loading';\n}\n\n/**\n * Select whether user is authenticated.\n */\nexport function selectIsAuthenticated(state: AuthStoreState): boolean {\n return state.status === 'authenticated';\n}\n\n/**\n * Select whether user is unauthenticated.\n */\nexport function selectIsUnauthenticated(state: AuthStoreState): boolean {\n return state.status === 'unauthenticated';\n}\n\n/**\n * Auth store with auto-generated selectors.\n */\nexport const authStore = createSelectors(useAuthStore);\n\n// =============================================================================\n// HELPER HOOKS\n// =============================================================================\n\n/**\n * Hook to set both token and auth status atomically.\n *\n * @example\n * ```tsx\n * const { login, logout } = useAuth();\n *\n * // On successful login\n * login(accessToken, sessionId);\n *\n * // On logout\n * logout();\n * ```\n */\nexport function useAuth() {\n const setToken = useTokenStore((s) => s.setToken);\n const { setAuthenticated, setUnauthenticated, clearSession } = useAuthStore();\n\n return {\n login: (token: string, sessionId?: string) => {\n setToken(token);\n setAuthenticated(sessionId);\n },\n logout: () => {\n setUnauthenticated();\n },\n clearSession,\n getToken: () => useTokenStore.getState().token,\n };\n}\n","/**\n * UI Store\n *\n * Manages transient UI state (not persisted).\n *\n * @module @omnitron-dev/prism/state/stores\n */\n\nimport { createUIStore, createSelectors } from '../create-store.js';\n\n/**\n * UI store state and actions.\n */\nexport interface UIState {\n /** Sidebar open state */\n sidebarOpen: boolean;\n /** Sidebar collapsed state (mini mode) */\n sidebarCollapsed: boolean;\n /** Active dialog ID */\n activeDialog: string | null;\n /** Global loading overlay */\n globalLoading: boolean;\n /** Search modal open */\n searchOpen: boolean;\n\n // Actions\n toggleSidebar: () => void;\n setSidebarOpen: (open: boolean) => void;\n setSidebarCollapsed: (collapsed: boolean) => void;\n openDialog: (dialogId: string) => void;\n closeDialog: () => void;\n setGlobalLoading: (loading: boolean) => void;\n toggleSearch: () => void;\n setSearchOpen: (open: boolean) => void;\n}\n\n/**\n * UI store for transient state.\n *\n * @example\n * ```tsx\n * function Sidebar() {\n * const { sidebarOpen, sidebarCollapsed, toggleSidebar } = useUIStore();\n *\n * return (\n * <Drawer\n * open={sidebarOpen}\n * variant={sidebarCollapsed ? 'mini' : 'permanent'}\n * >\n * <SidebarContent />\n * </Drawer>\n * );\n * }\n * ```\n */\nexport const useUIStore = createUIStore<UIState>(\n (set) => ({\n sidebarOpen: true,\n sidebarCollapsed: false,\n activeDialog: null,\n globalLoading: false,\n searchOpen: false,\n\n toggleSidebar: () =>\n set((state) => {\n state.sidebarOpen = !state.sidebarOpen;\n }),\n\n setSidebarOpen: (sidebarOpen) => set({ sidebarOpen }),\n\n setSidebarCollapsed: (sidebarCollapsed) => set({ sidebarCollapsed }),\n\n openDialog: (dialogId) => set({ activeDialog: dialogId }),\n\n closeDialog: () => set({ activeDialog: null }),\n\n setGlobalLoading: (globalLoading) => set({ globalLoading }),\n\n toggleSearch: () =>\n set((state) => {\n state.searchOpen = !state.searchOpen;\n }),\n\n setSearchOpen: (searchOpen) => set({ searchOpen }),\n }),\n 'ui'\n);\n\n/**\n * UI store with auto-generated selectors.\n */\nexport const uiStore = createSelectors(useUIStore);\n","/**\n * Settings Version Management\n *\n * Utilities for managing versioned settings with safe migrations.\n * Enables breaking changes to settings structure while preserving user data.\n *\n * @module @omnitron-dev/prism/state\n */\n\nimport { createJSONStorage, type PersistOptions, type StateStorage } from 'zustand/middleware';\n\n// =============================================================================\n// TYPES\n// =============================================================================\n\n/**\n * Migration function signature.\n * Transforms settings from one version to the next.\n */\nexport type MigrationFn<TPrev = unknown, TNext = unknown> = (prevState: TPrev) => TNext;\n\n/**\n * Version-specific migration configuration.\n */\nexport interface VersionMigration<TPrev = unknown, TNext = unknown> {\n /** Target version number */\n version: number;\n /** Migration function */\n migrate: MigrationFn<TPrev, TNext>;\n}\n\n/**\n * Versioned settings configuration.\n */\nexport interface VersionedSettingsConfig<TState> {\n /** Current version number (increment when structure changes) */\n version: number;\n /** Storage key prefix */\n name: string;\n /** Ordered list of migrations (version -> next version) */\n migrations: VersionMigration[];\n /** Validation function (optional) */\n validate?: (state: unknown) => state is TState;\n /** Called when migration fails */\n onMigrationError?: (error: unknown, fromVersion: number, toVersion: number) => void;\n /** Called when stored data is corrupt/invalid */\n onCorruptData?: (error: unknown, rawData: unknown) => void;\n /** Default state (used when migration fails or data is corrupt) */\n defaultState: TState;\n}\n\n/**\n * Persisted settings with version metadata.\n */\nexport interface VersionedPersistedState<TState> {\n state: TState;\n version: number;\n}\n\n// =============================================================================\n// MIGRATION ENGINE\n// =============================================================================\n\n/**\n * Run migrations from one version to another.\n *\n * @param state - Current state\n * @param fromVersion - Starting version\n * @param toVersion - Target version\n * @param migrations - Available migrations\n * @returns Migrated state or null if migration failed\n */\nexport function runMigrations<TState>(\n state: unknown,\n fromVersion: number,\n toVersion: number,\n migrations: VersionMigration[]\n): TState | null {\n if (fromVersion >= toVersion) {\n return state as TState;\n }\n\n // Sort migrations by version\n const sortedMigrations = [...migrations].sort((a, b) => a.version - b.version);\n\n let currentState = state;\n let currentVersion = fromVersion;\n\n // Apply each migration in sequence\n for (const migration of sortedMigrations) {\n if (migration.version > fromVersion && migration.version <= toVersion) {\n try {\n currentState = migration.migrate(currentState);\n currentVersion = migration.version;\n } catch (error) {\n console.error(`[SettingsVersion] Migration to v${migration.version} failed:`, error);\n return null;\n }\n }\n }\n\n if (currentVersion !== toVersion) {\n console.warn(`[SettingsVersion] Migration incomplete: reached v${currentVersion}, expected v${toVersion}`);\n }\n\n return currentState as TState;\n}\n\n// =============================================================================\n// VERSIONED STORAGE\n// =============================================================================\n\n/**\n * Create a versioned storage adapter for Zustand persist.\n *\n * This adapter handles:\n * - Version tracking in stored data\n * - Automatic migrations when version changes\n * - Safe fallback to defaults on corrupt data\n *\n * @example\n * ```tsx\n * interface AppSettings {\n * theme: 'light' | 'dark';\n * language: string;\n * notifications: { email: boolean; push: boolean };\n * }\n *\n * const versionedStorage = createVersionedStorage<AppSettings>({\n * version: 3,\n * name: 'app-settings',\n * defaultState: {\n * theme: 'light',\n * language: 'en',\n * notifications: { email: true, push: true },\n * },\n * migrations: [\n * {\n * version: 2,\n * migrate: (prev: { theme: string }) => ({\n * ...prev,\n * language: 'en', // Added in v2\n * }),\n * },\n * {\n * version: 3,\n * migrate: (prev: { theme: string; language: string }) => ({\n * ...prev,\n * notifications: { email: true, push: true }, // Added in v3\n * }),\n * },\n * ],\n * });\n *\n * // Use with createPrismStore\n * const useSettings = createPrismStore<AppSettings>(\n * (set) => ({\n * ...versionedStorage.defaultState,\n * setTheme: (theme) => set({ theme }),\n * }),\n * {\n * name: 'settings',\n * persist: {\n * storage: versionedStorage.storage,\n * version: versionedStorage.version,\n * migrate: versionedStorage.migrate,\n * },\n * }\n * );\n * ```\n */\nexport function createVersionedStorage<TState>(config: VersionedSettingsConfig<TState>): {\n storage: StateStorage;\n version: number;\n migrate: (persistedState: unknown, version: number) => TState;\n defaultState: TState;\n} {\n const { version, name, migrations, validate, onMigrationError, onCorruptData, defaultState } = config;\n\n const storageKey = `prism-settings-${name}`;\n\n /**\n * Custom storage adapter that handles versioned data.\n */\n const storage: StateStorage = {\n getItem(key) {\n try {\n const raw = localStorage.getItem(key);\n return raw;\n } catch (error) {\n console.error('[SettingsVersion] Storage read error:', error);\n return null;\n }\n },\n\n setItem(key, value) {\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n console.error('[SettingsVersion] Storage write error:', error);\n }\n },\n\n removeItem(key) {\n try {\n localStorage.removeItem(key);\n } catch (error) {\n console.error('[SettingsVersion] Storage remove error:', error);\n }\n },\n };\n\n /**\n * Migration function for Zustand persist.\n */\n function migrate(persistedState: unknown, persistedVersion: number): TState {\n // No migration needed if versions match\n if (persistedVersion === version) {\n // Optionally validate\n if (validate && !validate(persistedState)) {\n console.warn('[SettingsVersion] Stored state failed validation, using defaults');\n onCorruptData?.(new Error('Validation failed'), persistedState);\n return defaultState;\n }\n return persistedState as TState;\n }\n\n // Run migrations\n const migrated = runMigrations<TState>(persistedState, persistedVersion, version, migrations);\n\n if (migrated === null) {\n // Migration failed\n onMigrationError?.(new Error('Migration failed'), persistedVersion, version);\n console.warn('[SettingsVersion] Migration failed, using defaults');\n return defaultState;\n }\n\n // Validate migrated state\n if (validate && !validate(migrated)) {\n onCorruptData?.(new Error('Post-migration validation failed'), migrated);\n console.warn('[SettingsVersion] Migrated state failed validation, using defaults');\n return defaultState;\n }\n\n console.log(`[SettingsVersion] Migrated from v${persistedVersion} to v${version}`);\n return migrated;\n }\n\n return {\n storage,\n version,\n migrate,\n defaultState,\n };\n}\n\n// =============================================================================\n// HELPER FUNCTIONS\n// =============================================================================\n\n/**\n * Create persist options for versioned settings.\n * Convenience function that returns properly typed PersistOptions.\n *\n * @example\n * ```tsx\n * const persistOptions = createVersionedPersistOptions<MySettings>({\n * version: 2,\n * name: 'my-settings',\n * defaultState: { /* ... *\\/ },\n * migrations: [{ version: 2, migrate: (prev) => ({ ...prev, newField: 'default' }) }],\n * });\n *\n * const useStore = createPrismStore(initializer, {\n * name: 'my-settings',\n * persist: persistOptions,\n * });\n * ```\n */\nexport function createVersionedPersistOptions<TState>(\n config: VersionedSettingsConfig<TState>\n): Partial<PersistOptions<TState>> {\n const versioned = createVersionedStorage(config);\n\n return {\n name: `prism-settings-${config.name}`,\n // Use createJSONStorage to properly wrap the StateStorage for Zustand persist\n storage: createJSONStorage(() => versioned.storage),\n version: versioned.version,\n migrate: versioned.migrate as (persistedState: unknown, version: number) => TState | Promise<TState>,\n };\n}\n\n/**\n * Check if settings need migration.\n *\n * @param name - Settings name\n * @param currentVersion - Current app settings version\n * @returns Object with migration status\n */\nexport function checkSettingsVersion(\n name: string,\n currentVersion: number\n): {\n needsMigration: boolean;\n storedVersion: number | null;\n currentVersion: number;\n} {\n const storageKey = `prism-settings-${name}`;\n\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) {\n return {\n needsMigration: false,\n storedVersion: null,\n currentVersion,\n };\n }\n\n const parsed = JSON.parse(raw);\n const storedVersion = parsed?.version ?? 0;\n\n return {\n needsMigration: storedVersion !== currentVersion,\n storedVersion,\n currentVersion,\n };\n } catch {\n return {\n needsMigration: true,\n storedVersion: null,\n currentVersion,\n };\n }\n}\n\n/**\n * Clear stored settings (useful for testing or reset).\n */\nexport function clearSettings(name: string): void {\n const storageKey = `prism-settings-${name}`;\n try {\n localStorage.removeItem(storageKey);\n } catch {\n // Ignore storage errors\n }\n}\n\n/**\n * Export settings to JSON.\n */\nexport function exportSettings<TState>(name: string, currentVersion: number): VersionedPersistedState<TState> | null {\n const storageKey = `prism-settings-${name}`;\n\n try {\n const raw = localStorage.getItem(storageKey);\n if (!raw) return null;\n\n const parsed = JSON.parse(raw);\n return {\n state: parsed.state,\n version: parsed.version ?? currentVersion,\n };\n } catch {\n return null;\n }\n}\n\n/**\n * Import settings from JSON.\n * Will trigger migration if version differs.\n */\nexport function importSettings<TState>(name: string, data: VersionedPersistedState<TState>): void {\n const storageKey = `prism-settings-${name}`;\n\n try {\n localStorage.setItem(storageKey, JSON.stringify(data));\n } catch (error) {\n console.error('[SettingsVersion] Import failed:', error);\n }\n}\n\n// =============================================================================\n// TYPE GUARDS\n// =============================================================================\n\n/**\n * Create a type guard for settings validation.\n *\n * @example\n * ```tsx\n * const isValidSettings = createSettingsValidator<MySettings>({\n * requiredKeys: ['theme', 'language'],\n * typeChecks: {\n * theme: (v) => v === 'light' || v === 'dark',\n * language: (v) => typeof v === 'string',\n * },\n * });\n * ```\n */\nexport function createSettingsValidator<TState extends Record<string, unknown>>(config: {\n requiredKeys?: (keyof TState)[];\n typeChecks?: Partial<{ [K in keyof TState]: (value: unknown) => boolean }>;\n}): (state: unknown) => state is TState {\n return (state: unknown): state is TState => {\n if (typeof state !== 'object' || state === null) {\n return false;\n }\n\n const record = state as Record<string, unknown>;\n\n // Check required keys\n if (config.requiredKeys) {\n for (const key of config.requiredKeys) {\n if (!(key in record)) {\n return false;\n }\n }\n }\n\n // Run type checks\n if (config.typeChecks) {\n for (const [key, check] of Object.entries(config.typeChecks)) {\n if (key in record && check && !check(record[key])) {\n return false;\n }\n }\n }\n\n return true;\n };\n}\n\n// =============================================================================\n// MIGRATION HELPERS\n// =============================================================================\n\n/**\n * Creates a simple migration from one version to the next.\n *\n * @example\n * ```typescript\n * const v2Migration = createMigration(2, (state) => ({\n * ...state,\n * navLayout: 'vertical',\n * }));\n * ```\n */\nexport function createMigration<TPrev = unknown, TNext = unknown>(\n version: number,\n migrate: MigrationFn<TPrev, TNext>\n): VersionMigration<TPrev, TNext> {\n return { version, migrate };\n}\n\n/**\n * Creates a migration that renames a field.\n *\n * @example\n * ```typescript\n * const renameMigration = createRenameMigration(3, 'theme', 'mode', 'light');\n * ```\n */\nexport function createRenameMigration<TNext>(\n version: number,\n oldKey: string,\n newKey: string,\n defaultValue: unknown\n): VersionMigration {\n return {\n version,\n migrate: (state) => {\n const prev = state as Record<string, unknown>;\n const result = { ...prev } as Record<string, unknown>;\n\n // Get value from old key or use default\n const value = oldKey in prev ? prev[oldKey] : defaultValue;\n\n // Remove old key and add new key\n delete result[oldKey];\n result[newKey] = value;\n\n return result as TNext;\n },\n };\n}\n\n/**\n * Creates a migration that adds a new field with a default value.\n *\n * @example\n * ```typescript\n * const addFieldMigration = createAddFieldMigration(4, 'stretch', false);\n * ```\n */\nexport function createAddFieldMigration<TNext>(version: number, key: string, defaultValue: unknown): VersionMigration {\n return {\n version,\n migrate: (state) =>\n (({\n ...(state as object),\n [key]: defaultValue\n }) as TNext),\n };\n}\n\n/**\n * Creates a migration that removes a field.\n *\n * @example\n * ```typescript\n * const removeFieldMigration = createRemoveFieldMigration(5, 'legacyOption');\n * ```\n */\nexport function createRemoveFieldMigration<TNext>(version: number, key: string): VersionMigration {\n return {\n version,\n migrate: (state) => {\n const result = { ...(state as object) } as Record<string, unknown>;\n delete result[key];\n return result as TNext;\n },\n };\n}\n\n/**\n * Creates a migration that transforms a field's value.\n *\n * @example\n * ```typescript\n * const transformMigration = createTransformMigration(\n * 6,\n * 'fontSize',\n * (value) => typeof value === 'string' ? parseInt(value, 10) : value,\n * 16\n * );\n * ```\n */\nexport function createTransformMigration<TNext>(\n version: number,\n key: string,\n transform: (value: unknown) => unknown,\n defaultValue: unknown\n): VersionMigration {\n return {\n version,\n migrate: (state) => {\n const prev = state as Record<string, unknown>;\n const oldValue = key in prev ? prev[key] : undefined;\n const newValue = oldValue !== undefined ? transform(oldValue) : defaultValue;\n\n return {\n ...prev,\n [key]: newValue,\n } as TNext;\n },\n };\n}\n\n/**\n * Validates that migrations are in correct sequential order.\n *\n * @throws If migrations have duplicate versions\n */\nexport function validateMigrations(migrations: VersionMigration[]): void {\n const versions = migrations.map((m) => m.version).sort((a, b) => a - b);\n\n // Check for duplicates\n const uniqueVersions = new Set(versions);\n if (uniqueVersions.size !== versions.length) {\n throw new Error('[SettingsVersion] Duplicate migration versions detected');\n }\n\n // Check that versions are positive integers\n for (const version of versions) {\n if (!Number.isInteger(version) || version < 1) {\n throw new Error(`[SettingsVersion] Invalid migration version: ${version}. Must be a positive integer.`);\n }\n }\n}\n\n/**\n * Gets migration info for debugging.\n */\nexport function getMigrationInfo(migrations: VersionMigration[]): Array<{ version: number }> {\n return migrations.map((m) => ({ version: m.version })).sort((a, b) => a.version - b.version);\n}\n"]}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { green, hexToRgbChannel, generatePaletteColorWithChannels, minimalPreset, retroPreset, midnightPreset, draculaPreset, emberPreset, arcticPreset, darken, lighten } from './chunk-
|
|
1
|
+
import { green, hexToRgbChannel, generatePaletteColorWithChannels, minimalPreset, retroPreset, midnightPreset, draculaPreset, emberPreset, arcticPreset, darken, lighten } from './chunk-MEFT6XPH.js';
|
|
2
2
|
|
|
3
3
|
// src/theme/palette.ts
|
|
4
4
|
function generatePaletteChannel(hex) {
|
|
@@ -526,5 +526,5 @@ function injectCssVariables(vars, config) {
|
|
|
526
526
|
}
|
|
527
527
|
|
|
528
528
|
export { applyPrimaryOverride, cssVariables, defaultPreset, generateCssVariables, generatePaletteChannel, getPreset, luxuryPreset, presetNames };
|
|
529
|
-
//# sourceMappingURL=chunk-
|
|
530
|
-
//# sourceMappingURL=chunk-
|
|
529
|
+
//# sourceMappingURL=chunk-VAAIHNWQ.js.map
|
|
530
|
+
//# sourceMappingURL=chunk-VAAIHNWQ.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/theme/palette.ts","../src/theme/presets/default.ts","../src/theme/presets/luxury.ts","../src/theme/presets/nature.ts","../src/theme/presets/index.ts","../src/theme/css-variables.ts"],"names":["lightPalette","darkPalette"],"mappings":";;;AAwBO,SAAS,uBAAuB,GAAA,EAAqB;AAC1D,EAAA,OAAO,gBAAgB,GAAG,CAAA;AAC5B;AAUO,SAAS,oBAAA,CAAqB,IAAA,EAAc,YAAA,GAAe,SAAA,EAAyB;AAGzF,EAAA,OAAO;AAAA,IACL,OAAA,EAAS,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAAA;AAAA,IACzB,KAAA,EAAO,OAAA,CAAQ,IAAA,EAAM,EAAE,CAAA;AAAA;AAAA,IACvB,IAAA;AAAA;AAAA,IACA,IAAA,EAAM,MAAA,CAAO,IAAA,EAAM,EAAE,CAAA;AAAA;AAAA,IACrB,MAAA,EAAQ,MAAA,CAAO,IAAA,EAAM,EAAE,CAAA;AAAA;AAAA,IACvB;AAAA,GACF;AACF;AAUO,SAAS,oBAAA,CACd,OAAA,EACA,YAAA,EACA,IAAA,GAAyB,OAAA,EACX;AACd,EAAA,MAAM,YAAA,GAAe,IAAA,KAAS,MAAA,GAAS,SAAA,GAAY,SAAA;AACnD,EAAA,MAAM,WAAA,GAAc,oBAAA,CAAqB,YAAA,EAAc,YAAY,CAAA;AACnE,EAAA,MAAM,UAAA,GAAa,iCAAiC,WAAW,CAAA;AAE/D,EAAA,OAAO;AAAA,IACL,GAAG,OAAA;AAAA,IACH,OAAA,EAAS;AAAA,GACX;AACF;;;ACzDA,IAAM,YAAA,GAA8B;AAAA,EAClC,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,QAAA,EAAU;AAAA;AAEd,CAAA;AAKA,IAAM,WAAA,GAA6B;AAAA,EACjC,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,QAAA,EAAU;AAAA;AAEd,CAAA;AAKO,IAAM,aAAA,GAAuC;AAAA,EAClD,IAAA,EAAM,eAAA;AAAA,EACN,WAAA,EAAa,SAAA;AAAA,EACb,WAAA,EAAa,yDAAA;AAAA,EACb,aAAA,EAAe,OAAA;AAAA,EACf,YAAA;AAAA,EACA,WAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,2FAAA;AAAA,MACT,SAAA,EAAW,6EAAA;AAAA,MACX,IAAA,EAAM;AAAA,KACR;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,GAAA;AAAA,MACP,OAAA,EAAS,GAAA;AAAA,MACT,MAAA,EAAQ,GAAA;AAAA,MACR,QAAA,EAAU,GAAA;AAAA,MACV,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,SAAA;AAAA,IACL,IAAA,EAAM;AAAA;AAEV;;;ACzLA,IAAMA,aAAAA,GAA8B;AAAA,EAClC,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,QAAA,EAAU;AAAA;AAEd,CAAA;AAKA,IAAMC,YAAAA,GAA6B;AAAA,EACjC,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,SAAA,EAAW;AAAA,IACT,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,OAAA,EAAS;AAAA,IACP,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,KAAA,EAAO;AAAA,IACL,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,IAAA,EAAM,SAAA;AAAA,IACN,IAAA,EAAM,SAAA;AAAA,IACN,MAAA,EAAQ,SAAA;AAAA,IACR,YAAA,EAAc;AAAA,GAChB;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,EAAA,EAAI,SAAA;AAAA,IACJ,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK,SAAA;AAAA,IACL,GAAA,EAAK;AAAA,GACP;AAAA,EACA,MAAA,EAAQ;AAAA,IACN,KAAA,EAAO,SAAA;AAAA,IACP,KAAA,EAAO;AAAA,GACT;AAAA,EACA,UAAA,EAAY;AAAA,IACV,OAAA,EAAS,SAAA;AAAA,IACT,KAAA,EAAO,SAAA;AAAA,IACP,OAAA,EAAS;AAAA,GACX;AAAA,EACA,IAAA,EAAM;AAAA,IACJ,OAAA,EAAS,SAAA;AAAA,IACT,SAAA,EAAW,SAAA;AAAA,IACX,QAAA,EAAU;AAAA;AAEd,CAAA;AAKO,IAAM,YAAA,GAAsC;AAAA,EACjD,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,EAAa,QAAA;AAAA,EACb,WAAA,EAAa,0DAAA;AAAA,EACb,aAAA,EAAe,OAAA;AAAA,EACf,YAAA,EAAAD,aAAAA;AAAA,EACA,WAAA,EAAAC,YAAAA;AAAA,EACA,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,uDAAA;AAAA,MACT,SAAA,EAAW,uDAAA;AAAA,MACX,IAAA,EAAM;AAAA,KACR;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,GAAA;AAAA,MACP,OAAA,EAAS,GAAA;AAAA,MACT,MAAA,EAAQ,GAAA;AAAA,MACR,QAAA,EAAU,GAAA;AAAA,MACV,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,QAAA;AAAA,IACL,IAAA,EAAM;AAAA;AAEV;;;ACvLO,IAAM,YAAA,GAAsC;AAAA,EACjD,IAAA,EAAM,QAAA;AAAA,EACN,WAAA,EAAa,QAAA;AAAA,EACb,WAAA,EAAa,8DAAA;AAAA,EACb,aAAA,EAAe,OAAA;AAAA,EACf,UAAA,EAAY;AAAA,IACV,UAAA,EAAY;AAAA,MACV,OAAA,EAAS,6EAAA;AAAA,MACT,SAAA,EAAW,gCAAA;AAAA,MACX,IAAA,EAAM;AAAA,KACR;AAAA,IACA,WAAA,EAAa;AAAA,MACX,KAAA,EAAO,GAAA;AAAA,MACP,OAAA,EAAS,GAAA;AAAA,MACT,MAAA,EAAQ,GAAA;AAAA,MACR,QAAA,EAAU,GAAA;AAAA,MACV,IAAA,EAAM;AAAA;AACR,GACF;AAAA,EACA,UAAA,EAAY;AAAA,IACV,GAAA,EAAK,QAAA;AAAA,IACL,IAAA,EAAM,MAAM,GAAG,CAAA;AAAA,IACf,OAAA,EAAS;AAAA;AAEb,CAAA;;;ACnBO,IAAM,WAAA,GAA6B;AAAA,EACxC,eAAA;AAAA,EACA,cAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,QAAA;AAAA,EACA,OAAA;AAAA,EACA,SAAA;AAAA,EACA,UAAA;AAAA,EACA,OAAA;AAAA,EACA;AACF;AAKA,IAAM,OAAA,GAAiD;AAAA,EACrD,eAAA,EAAiB,aAAA;AAAA,EACjB,cAAA,EAAgB,aAAA;AAAA;AAAA,EAChB,MAAA,EAAQ,YAAA;AAAA,EACR,MAAA,EAAQ,YAAA;AAAA,EACR,MAAA,EAAQ,YAAA;AAAA,EACR,KAAA,EAAO,WAAA;AAAA,EACP,OAAA,EAAS,aAAA;AAAA,EACT,QAAA,EAAU,cAAA;AAAA,EACV,KAAA,EAAO,WAAA;AAAA,EACP,OAAA,EAAS;AACX,CAAA;AASO,SAAS,UAAU,IAAA,EAA0C;AAClE,EAAA,MAAM,MAAA,GAAS,QAAQ,IAAI,CAAA;AAE3B,EAAA,IAAI,CAAC,MAAA,EAAQ;AACX,IAAA,OAAA,CAAQ,IAAA,CAAK,CAAA,QAAA,EAAW,IAAI,CAAA,4CAAA,CAA8C,CAAA;AAC1E,IAAA,OAAO,aAAA;AAAA,EACT;AAEA,EAAA,OAAO,MAAA;AACT;;;AC3CO,IAAM,YAAA,GAA6B;AAAA,EACxC,oBAAA,EAAsB,SAAA;AAAA,EACtB,oBAAA,EAAsB,SAAA;AAAA,EACtB,cAAA,EAAgB,SAAA;AAAA,EAChB,yBAAA,EAA2B,SAAA;AAAA,EAC3B,iBAAA,EAAmB,SAAA;AAAA,EACnB,4BAAA,EAA8B,SAAA;AAAA,EAE9B,iBAAA,EAAmB,SAAA;AAAA,EACnB,4BAAA,EAA8B,SAAA;AAAA,EAC9B,yBAAA,EAA2B,SAAA;AAAA,EAC3B,uBAAA,EAAyB,SAAA;AAAA,EACzB,sBAAA,EAAwB,SAAA;AAAA,EACxB,wBAAA,EAA0B,SAAA;AAAA,EAE1B,mBAAA,EAAqB,SAAA;AAAA,EACrB,8BAAA,EAAgC,SAAA;AAAA,EAEhC,eAAA,EAAiB,SAAA;AAAA,EACjB,0BAAA,EAA4B,SAAA;AAAA,EAC5B,gBAAA,EAAkB,SAAA;AAAA,EAClB,2BAAA,EAA6B,SAAA;AAAA,EAC7B,qBAAA,EAAuB,SAAA;AAAA,EACvB,gCAAA,EAAkC,SAAA;AAAA,EAElC,gBAAA,EAAkB,SAAA;AAAA,EAClB,eAAA,EAAiB,SAAA;AAAA,EACjB,cAAA,EAAgB,SAAA;AAAA,EAEhB,gBAAA,EAAkB,QAAA;AAAA,EAElB,yBAAA,EAA2B,WAAA;AAAA,EAC3B,2BAAA,EAA6B,YAAA;AAAA,EAC7B,4BAAA,EAA8B;AAChC;AASO,SAAS,oBAAA,CAAqB,OAAmB,MAAA,EAA0C;AAChG,EAAA,MAAM,EAAE,QAAO,GAAI,MAAA;AACnB,EAAA,MAAM,EAAE,SAAQ,GAAI,KAAA;AAEpB,EAAA,MAAM,IAAA,GAAqB;AAAA,IACzB,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,WAAA,CAAa,GAAG,QAAQ,UAAA,CAAW,OAAA;AAAA,IAC/C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,WAAA,CAAa,GAAG,QAAQ,IAAA,CAAK,OAAA;AAAA,IACzC,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,KAAA,CAAO,GAAG,QAAQ,UAAA,CAAW,KAAA;AAAA,IACzC,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,gBAAA,CAAkB,GAAG,QAAQ,IAAA,CAAK,OAAA;AAAA,IAC9C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,QAAA,CAAU,GAAG,QAAQ,UAAA,CAAW,KAAA;AAAA,IAC5C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,mBAAA,CAAqB,GAAG,QAAQ,IAAA,CAAK,OAAA;AAAA,IAEjD,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,QAAA,CAAU,GAAG,QAAQ,OAAA,CAAQ,IAAA;AAAA,IACzC,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,mBAAA,CAAqB,GAAG,QAAQ,OAAA,CAAQ,YAAA;AAAA,IACpD,CAAC,KAAK,MAAM,CAAA,gBAAA,CAAkB,GAC3B,OAAA,CAAQ,OAAA,CAA4C,OAAA,IAAW,OAAA,CAAQ,OAAA,CAAQ,KAAA;AAAA,IAClF,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,cAAA,CAAgB,GAAG,QAAQ,OAAA,CAAQ,KAAA;AAAA,IAC/C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,aAAA,CAAe,GAAG,QAAQ,OAAA,CAAQ,IAAA;AAAA,IAC9C,CAAC,KAAK,MAAM,CAAA,eAAA,CAAiB,GAAI,OAAA,CAAQ,OAAA,CAA2C,MAAA,IAAU,OAAA,CAAQ,OAAA,CAAQ,IAAA;AAAA,IAE9G,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,UAAA,CAAY,GAAG,QAAQ,SAAA,CAAU,IAAA;AAAA,IAC7C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,qBAAA,CAAuB,GAAG,QAAQ,SAAA,CAAU,YAAA;AAAA,IAExD,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,MAAA,CAAQ,GAAG,QAAQ,UAAA,CAAW,OAAA;AAAA,IAC1C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,iBAAA,CAAmB,GAAG,QAAQ,IAAA,CAAK,SAAA;AAAA,IAC/C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,OAAA,CAAS,GAAG,QAAQ,UAAA,CAAW,OAAA;AAAA,IAC3C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,kBAAA,CAAoB,GAAG,QAAQ,IAAA,CAAK,OAAA;AAAA,IAChD,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,YAAA,CAAc,GAAG,QAAQ,KAAA,CAAM,IAAA;AAAA,IAC3C,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,uBAAA,CAAyB,GAAG,QAAQ,KAAA,CAAM,YAAA;AAAA,IAEtD,CAAC,KAAK,MAAM,CAAA,OAAA,CAAS,GAAG,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AAAA,IAC3D,CAAC,KAAK,MAAM,CAAA,MAAA,CAAQ,GAAG,OAAA,CAAQ,OAAA,IAAW,OAAA,CAAQ,IAAA,CAAK,GAAG,CAAA;AAAA,IAC1D,CAAC,CAAA,EAAA,EAAK,MAAM,CAAA,KAAA,CAAO,GAAG,QAAQ,OAAA,CAAQ,IAAA;AAAA,IAEtC,CAAC,KAAK,MAAM,CAAA,OAAA,CAAS,GAAG,CAAA,EAAG,KAAA,CAAM,MAAM,YAAY,CAAA,EAAA,CAAA;AAAA,IAEnD,CAAC,KAAK,MAAM,CAAA,gBAAA,CAAkB,GAAG,sBAAA,CAAuB,OAAA,CAAQ,QAAQ,IAAI,CAAA;AAAA,IAC5E,CAAC,KAAK,MAAM,CAAA,kBAAA,CAAoB,GAAG,sBAAA,CAAuB,OAAA,CAAQ,UAAU,IAAI,CAAA;AAAA,IAChF,CAAC,KAAK,MAAM,CAAA,mBAAA,CAAqB,GAAG,sBAAA,CAAuB,OAAA,CAAQ,WAAW,OAAO;AAAA,GACvF;AAGA,EAAA,IAAI,OAAO,aAAa,WAAA,EAAa;AACnC,IAAA,kBAAA,CAAmB,IAAY,CAAA;AAAA,EACjC;AAEA,EAAA,OAAO,IAAA;AACT;AAQA,SAAS,kBAAA,CAAmB,MAAoB,MAAA,EAAkC;AAChF,EAAA,MAAM,OAAO,QAAA,CAAS,eAAA;AAEtB,EAAA,MAAA,CAAO,OAAA,CAAQ,IAAI,CAAA,CAAE,OAAA,CAAQ,CAAC,CAAC,GAAA,EAAK,KAAK,CAAA,KAAM;AAC7C,IAAA,IAAA,CAAK,KAAA,CAAM,WAAA,CAAY,GAAA,EAAK,KAAK,CAAA;AAAA,EACnC,CAAC,CAAA;AACH","file":"chunk-UR6X3W5I.js","sourcesContent":["/**\n * Palette Utilities\n *\n * Utilities for palette manipulation and CSS channel generation.\n * All color math uses HSL for perceptually correct results.\n *\n * @module @omnitron-dev/prism/theme/palette\n */\n\nimport type { ThemePalette, PaletteColor, ColorScale, ColorScaleWithChannels } from '../types/theme.js';\nimport {\n generatePaletteColorWithChannels,\n generateColorScaleWithChannels,\n hexToRgbChannel,\n lighten,\n darken,\n} from './utils/color.js';\n\n/**\n * Generate RGB channel string from hex color.\n *\n * @param hex - Hex color value\n * @returns RGB channel string (e.g., \"255 255 255\")\n */\nexport function generatePaletteChannel(hex: string): string {\n return hexToRgbChannel(hex);\n}\n\n/**\n * Generate a full palette color from a main color.\n * Uses HSL-based color math for perceptually correct shades.\n *\n * @param main - Main color hex value\n * @param contrastText - Contrast text color (default: white)\n * @returns Full palette color with all shades\n */\nexport function generatePaletteColor(main: string, contrastText = '#FFFFFF'): PaletteColor {\n // HSL lightness adjustments (percentage points)\n // These values produce visually balanced shade progressions\n return {\n lighter: lighten(main, 32), // +32 lightness points (very light, ~85-95% L)\n light: lighten(main, 16), // +16 lightness points (light, ~65-75% L)\n main, // Base color (typically ~45-55% L)\n dark: darken(main, 12), // -12 lightness points (dark, ~35-45% L)\n darker: darken(main, 28), // -28 lightness points (very dark, ~20-30% L)\n contrastText,\n };\n}\n\n/**\n * Apply primary color override to a palette.\n *\n * @param palette - Base palette\n * @param primaryColor - New primary color\n * @param mode - Theme mode (light/dark)\n * @returns Updated palette with new primary color\n */\nexport function applyPrimaryOverride(\n palette: ThemePalette,\n primaryColor: string,\n mode: 'light' | 'dark' = 'light'\n): ThemePalette {\n const contrastText = mode === 'dark' ? '#FFFFFF' : '#FFFFFF';\n const basePrimary = generatePaletteColor(primaryColor, contrastText);\n const newPrimary = generatePaletteColorWithChannels(basePrimary);\n\n return {\n ...palette,\n primary: newPrimary,\n };\n}\n\n/**\n * Create grey palette.\n */\nexport function createGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n 950: '#121212',\n };\n return generateColorScaleWithChannels(scale);\n}\n\n/**\n * Create dark mode grey palette.\n */\nexport function createDarkGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#1A1A1A',\n 100: '#242424',\n 200: '#2E2E2E',\n 300: '#383838',\n 400: '#454545',\n 500: '#5C5C5C',\n 600: '#757575',\n 700: '#9E9E9E',\n 800: '#BDBDBD',\n 900: '#E0E0E0',\n 950: '#F5F5F5',\n };\n return generateColorScaleWithChannels(scale);\n}\n","/**\n * Default Theme Preset\n *\n * A neutral, modern theme suitable for most applications.\n *\n * @module @omnitron-dev/prism/theme/presets/default\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n neutral: '#F4F6F8',\n },\n text: {\n primary: '#212121',\n secondary: '#637381',\n disabled: '#919EAB',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#161C24',\n 100: '#212B36',\n 200: '#454F5B',\n 300: '#637381',\n 400: '#919EAB',\n 500: '#C4CDD5',\n 600: '#DFE3E8',\n 700: '#F4F6F8',\n 800: '#F9FAFB',\n 900: '#FFFFFF',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#161C24',\n paper: '#212B36',\n neutral: '#28323D',\n },\n text: {\n primary: '#FFFFFF',\n secondary: '#919EAB',\n disabled: '#637381',\n },\n};\n\n/**\n * Default theme preset.\n */\nexport const defaultPreset: ThemePresetDefinition = {\n name: 'default-light',\n displayName: 'Default',\n description: 'A neutral, modern theme suitable for most applications.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Public Sans Variable\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Barlow\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: '\"JetBrains Mono\", \"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'default',\n main: '#00A76F',\n },\n};\n","/**\n * Luxury Theme Preset\n *\n * A rich, elegant theme with deep colors and premium feel.\n *\n * @module @omnitron-dev/prism/theme/presets/luxury\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#8B6914',\n dark: '#6B4F0F',\n darker: '#4A370A',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#6B3A6B',\n dark: '#4D2A4D',\n darker: '#2F1A2F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#2E7AB8',\n dark: '#1F5A8A',\n darker: '#103A5C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#2E8B2E',\n dark: '#1F6B1F',\n darker: '#104A10',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#D4A012',\n dark: '#A67A0E',\n darker: '#785509',\n contrastText: '#212121',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#B82E2E',\n dark: '#8A1F1F',\n darker: '#5C1010',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAF9F7',\n 100: '#F5F3F0',\n 200: '#E8E4DE',\n 300: '#D4CEC4',\n 400: '#B8AFA0',\n 500: '#9C917C',\n 600: '#7A6F5C',\n 700: '#5C5244',\n 800: '#3E362C',\n 900: '#201C16',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#FFFCF7',\n paper: '#FFFFFF',\n neutral: '#F5F3F0',\n },\n text: {\n primary: '#201C16',\n secondary: '#5C5244',\n disabled: '#9C917C',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#C9A227',\n dark: '#A68A1F',\n darker: '#846D18',\n contrastText: '#0D0A06',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#9B5A9B',\n dark: '#7D4A7D',\n darker: '#5F3A5F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#4E9AD4',\n dark: '#3A7AB0',\n darker: '#265A8C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#4EAB4E',\n dark: '#3A8B3A',\n darker: '#266B26',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#E8B612',\n dark: '#C49A0E',\n darker: '#A07E0A',\n contrastText: '#0D0A06',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#D44E4E',\n dark: '#B03A3A',\n darker: '#8C2626',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#18140E',\n 100: '#241E16',\n 200: '#362E22',\n 300: '#4A402E',\n 400: '#5E523A',\n 500: '#7A6F5C',\n 600: '#9C917C',\n 700: '#B8AFA0',\n 800: '#D4CEC4',\n 900: '#E8E4DE',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#0D0A06',\n paper: '#18140E',\n neutral: '#241E16',\n },\n text: {\n primary: '#E8E4DE',\n secondary: '#B8AFA0',\n disabled: '#7A6F5C',\n },\n};\n\n/**\n * Luxury theme preset.\n */\nexport const luxuryPreset: ThemePresetDefinition = {\n name: 'luxury',\n displayName: 'Luxury',\n description: 'A rich, elegant theme with deep colors and premium feel.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Playfair Display\", Georgia, \"Times New Roman\", serif',\n secondary: '\"Lato\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'luxury',\n main: '#8B6914',\n },\n};\n","/**\n * Nature Theme Preset\n *\n * An earthy, organic theme with warm greens and natural tones.\n *\n * @module @omnitron-dev/prism/theme/presets/nature\n */\n\nimport type { ThemePresetDefinition } from '../../types/theme.js';\nimport { green } from '../colors/base.js';\n\n/**\n * Nature theme preset.\n * Optimized for light mode with earthy green tones.\n */\nexport const naturePreset: ThemePresetDefinition = {\n name: 'nature',\n displayName: 'Nature',\n description: 'An earthy, organic theme with warm greens and natural tones.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Merriweather\", Georgia, serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'nature',\n main: green[500],\n palette: green,\n },\n};\n","/**\n * Theme Presets Index\n *\n * @module @omnitron-dev/prism/theme/presets\n */\n\nimport type { ThemePreset, ThemePresetDefinition } from '../../types/theme.js';\nimport { defaultPreset } from './default.js';\nimport { luxuryPreset } from './luxury.js';\nimport { arcticPreset } from './arctic.js';\nimport { naturePreset } from './nature.js';\nimport { emberPreset } from './ember.js';\nimport { draculaPreset } from './dracula.js';\nimport { midnightPreset } from './midnight.js';\nimport { retroPreset } from './retro.js';\nimport { minimalPreset } from './minimal.js';\n\n/**\n * All available preset names.\n */\nexport const presetNames: ThemePreset[] = [\n 'default-light',\n 'default-dark',\n 'luxury',\n 'arctic',\n 'nature',\n 'ember',\n 'dracula',\n 'midnight',\n 'retro',\n 'minimal',\n];\n\n/**\n * Preset registry.\n */\nconst presets: Record<string, ThemePresetDefinition> = {\n 'default-light': defaultPreset,\n 'default-dark': defaultPreset, // Uses same preset but different preferred mode\n luxury: luxuryPreset,\n arctic: arcticPreset,\n nature: naturePreset,\n ember: emberPreset,\n dracula: draculaPreset,\n midnight: midnightPreset,\n retro: retroPreset,\n minimal: minimalPreset,\n};\n\n/**\n * Get a theme preset by name.\n *\n * @param name - Preset name\n * @returns Theme preset definition\n * @throws If preset is not found\n */\nexport function getPreset(name: ThemePreset): ThemePresetDefinition {\n const preset = presets[name];\n\n if (!preset) {\n console.warn(`Preset \"${name}\" not found, falling back to \"default-light\"`);\n return defaultPreset;\n }\n\n return preset;\n}\n\n/**\n * Register a custom preset.\n *\n * @param name - Preset name\n * @param preset - Preset definition\n */\nexport function registerPreset(name: string, preset: ThemePresetDefinition): void {\n presets[name] = preset;\n}\n\n/**\n * Get all registered presets.\n */\nexport function getAllPresets(): Record<string, ThemePresetDefinition> {\n return { ...presets };\n}\n\n// Re-export presets\nexport { defaultPreset } from './default.js';\nexport { luxuryPreset } from './luxury.js';\nexport { arcticPreset } from './arctic.js';\nexport { naturePreset } from './nature.js';\nexport { emberPreset } from './ember.js';\nexport { draculaPreset } from './dracula.js';\nexport { midnightPreset } from './midnight.js';\nexport { retroPreset } from './retro.js';\nexport { minimalPreset } from './minimal.js';\n","/**\n * CSS Variables System\n *\n * Utilities for generating and managing CSS variables.\n *\n * @module @omnitron-dev/prism/theme/css-variables\n */\n\nimport type { PrismTheme, CssVariablesConfig } from '../types/theme.js';\nimport { generatePaletteChannel } from './palette.js';\n\n/**\n * CSS variable definitions.\n * Uses an index signature since keys are dynamically generated based on prefix.\n */\nexport interface CssVariables {\n [key: string]: string;\n}\n\n/**\n * Default CSS variable values.\n */\nexport const cssVariables: CssVariables = {\n '--prism-background': '#FFFFFF',\n '--prism-foreground': '#212121',\n '--prism-card': '#FFFFFF',\n '--prism-card-foreground': '#212121',\n '--prism-popover': '#FFFFFF',\n '--prism-popover-foreground': '#212121',\n\n '--prism-primary': '#00A76F',\n '--prism-primary-foreground': '#FFFFFF',\n '--prism-primary-lighter': '#C8FAD6',\n '--prism-primary-light': '#5BE49B',\n '--prism-primary-dark': '#007867',\n '--prism-primary-darker': '#004B50',\n\n '--prism-secondary': '#8E33FF',\n '--prism-secondary-foreground': '#FFFFFF',\n\n '--prism-muted': '#F4F6F8',\n '--prism-muted-foreground': '#637381',\n '--prism-accent': '#F4F6F8',\n '--prism-accent-foreground': '#212121',\n '--prism-destructive': '#FF5630',\n '--prism-destructive-foreground': '#FFFFFF',\n\n '--prism-border': '#E0E0E0',\n '--prism-input': '#E0E0E0',\n '--prism-ring': '#00A76F',\n\n '--prism-radius': '0.5rem',\n\n '--prism-primary-channel': '0 167 111',\n '--prism-secondary-channel': '142 51 255',\n '--prism-background-channel': '255 255 255',\n};\n\n/**\n * Generate CSS variables from a Prism theme.\n *\n * @param theme - Prism theme\n * @param config - CSS variables configuration\n * @returns CSS variables object\n */\nexport function generateCssVariables(theme: PrismTheme, config: CssVariablesConfig): CssVariables {\n const { prefix } = config;\n const { palette } = theme;\n\n const vars: CssVariables = {\n [`--${prefix}-background`]: palette.background.default,\n [`--${prefix}-foreground`]: palette.text.primary,\n [`--${prefix}-card`]: palette.background.paper,\n [`--${prefix}-card-foreground`]: palette.text.primary,\n [`--${prefix}-popover`]: palette.background.paper,\n [`--${prefix}-popover-foreground`]: palette.text.primary,\n\n [`--${prefix}-primary`]: palette.primary.main,\n [`--${prefix}-primary-foreground`]: palette.primary.contrastText,\n [`--${prefix}-primary-lighter`]:\n (palette.primary as unknown as { lighter?: string }).lighter || palette.primary.light,\n [`--${prefix}-primary-light`]: palette.primary.light,\n [`--${prefix}-primary-dark`]: palette.primary.dark,\n [`--${prefix}-primary-darker`]: (palette.primary as unknown as { darker?: string }).darker || palette.primary.dark,\n\n [`--${prefix}-secondary`]: palette.secondary.main,\n [`--${prefix}-secondary-foreground`]: palette.secondary.contrastText,\n\n [`--${prefix}-muted`]: palette.background.default,\n [`--${prefix}-muted-foreground`]: palette.text.secondary,\n [`--${prefix}-accent`]: palette.background.default,\n [`--${prefix}-accent-foreground`]: palette.text.primary,\n [`--${prefix}-destructive`]: palette.error.main,\n [`--${prefix}-destructive-foreground`]: palette.error.contrastText,\n\n [`--${prefix}-border`]: palette.divider || palette.grey[300],\n [`--${prefix}-input`]: palette.divider || palette.grey[300],\n [`--${prefix}-ring`]: palette.primary.main,\n\n [`--${prefix}-radius`]: `${theme.shape.borderRadius}px`,\n\n [`--${prefix}-primary-channel`]: generatePaletteChannel(palette.primary.main),\n [`--${prefix}-secondary-channel`]: generatePaletteChannel(palette.secondary.main),\n [`--${prefix}-background-channel`]: generatePaletteChannel(palette.background.default),\n };\n\n // Inject into document if in browser\n if (typeof document !== 'undefined') {\n injectCssVariables(vars, config);\n }\n\n return vars;\n}\n\n/**\n * Inject CSS variables into the document.\n *\n * @param vars - CSS variables object\n * @param config - CSS variables configuration\n */\nfunction injectCssVariables(vars: CssVariables, config: CssVariablesConfig): void {\n const root = document.documentElement;\n\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n}\n\n/**\n * Get computed CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @returns Computed value\n */\nexport function getCssVariable(name: string): string {\n if (typeof window === 'undefined') return '';\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n}\n\n/**\n * Set CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @param value - New value\n */\nexport function setCssVariable(name: string, value: string): void {\n if (typeof document === 'undefined') return;\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n document.documentElement.style.setProperty(varName, value);\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/theme/palette.ts","../src/theme/presets/default.ts","../src/theme/presets/luxury.ts","../src/theme/presets/nature.ts","../src/theme/presets/index.ts","../src/theme/css-variables.ts"],"names":["lightPalette","darkPalette"],"mappings":"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","file":"chunk-VAAIHNWQ.js","sourcesContent":["/**\n * Palette Utilities\n *\n * Utilities for palette manipulation and CSS channel generation.\n * All color math uses HSL for perceptually correct results.\n *\n * @module @omnitron-dev/prism/theme/palette\n */\n\nimport type { ThemePalette, PaletteColor, ColorScale, ColorScaleWithChannels } from '../types/theme.js';\nimport {\n generatePaletteColorWithChannels,\n generateColorScaleWithChannels,\n hexToRgbChannel,\n lighten,\n darken,\n} from './utils/color.js';\n\n/**\n * Generate RGB channel string from hex color.\n *\n * @param hex - Hex color value\n * @returns RGB channel string (e.g., \"255 255 255\")\n */\nexport function generatePaletteChannel(hex: string): string {\n return hexToRgbChannel(hex);\n}\n\n/**\n * Generate a full palette color from a main color.\n * Uses HSL-based color math for perceptually correct shades.\n *\n * @param main - Main color hex value\n * @param contrastText - Contrast text color (default: white)\n * @returns Full palette color with all shades\n */\nexport function generatePaletteColor(main: string, contrastText = '#FFFFFF'): PaletteColor {\n // HSL lightness adjustments (percentage points)\n // These values produce visually balanced shade progressions\n return {\n lighter: lighten(main, 32), // +32 lightness points (very light, ~85-95% L)\n light: lighten(main, 16), // +16 lightness points (light, ~65-75% L)\n main, // Base color (typically ~45-55% L)\n dark: darken(main, 12), // -12 lightness points (dark, ~35-45% L)\n darker: darken(main, 28), // -28 lightness points (very dark, ~20-30% L)\n contrastText,\n };\n}\n\n/**\n * Apply primary color override to a palette.\n *\n * @param palette - Base palette\n * @param primaryColor - New primary color\n * @param mode - Theme mode (light/dark)\n * @returns Updated palette with new primary color\n */\nexport function applyPrimaryOverride(\n palette: ThemePalette,\n primaryColor: string,\n mode: 'light' | 'dark' = 'light'\n): ThemePalette {\n const contrastText = mode === 'dark' ? '#FFFFFF' : '#FFFFFF';\n const basePrimary = generatePaletteColor(primaryColor, contrastText);\n const newPrimary = generatePaletteColorWithChannels(basePrimary);\n\n return {\n ...palette,\n primary: newPrimary,\n };\n}\n\n/**\n * Create grey palette.\n */\nexport function createGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n 950: '#121212',\n };\n return generateColorScaleWithChannels(scale);\n}\n\n/**\n * Create dark mode grey palette.\n */\nexport function createDarkGreyPalette(): ColorScaleWithChannels {\n const scale: ColorScale = {\n 50: '#1A1A1A',\n 100: '#242424',\n 200: '#2E2E2E',\n 300: '#383838',\n 400: '#454545',\n 500: '#5C5C5C',\n 600: '#757575',\n 700: '#9E9E9E',\n 800: '#BDBDBD',\n 900: '#E0E0E0',\n 950: '#F5F5F5',\n };\n return generateColorScaleWithChannels(scale);\n}\n","/**\n * Default Theme Preset\n *\n * A neutral, modern theme suitable for most applications.\n *\n * @module @omnitron-dev/prism/theme/presets/default\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAFAFA',\n 100: '#F5F5F5',\n 200: '#EEEEEE',\n 300: '#E0E0E0',\n 400: '#BDBDBD',\n 500: '#9E9E9E',\n 600: '#757575',\n 700: '#616161',\n 800: '#424242',\n 900: '#212121',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#FFFFFF',\n paper: '#FFFFFF',\n neutral: '#F4F6F8',\n },\n text: {\n primary: '#212121',\n secondary: '#637381',\n disabled: '#919EAB',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#C8FAD6',\n light: '#5BE49B',\n main: '#00A76F',\n dark: '#007867',\n darker: '#004B50',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#EFD6FF',\n light: '#C684FF',\n main: '#8E33FF',\n dark: '#5119B7',\n darker: '#27097A',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#CAFDF5',\n light: '#61F3F3',\n main: '#00B8D9',\n dark: '#006C9C',\n darker: '#003768',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D3FCD2',\n light: '#77ED8B',\n main: '#22C55E',\n dark: '#118D57',\n darker: '#065E49',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF5CC',\n light: '#FFD666',\n main: '#FFAB00',\n dark: '#B76E00',\n darker: '#7A4100',\n contrastText: '#212121',\n },\n error: {\n lighter: '#FFE9D5',\n light: '#FFAC82',\n main: '#FF5630',\n dark: '#B71D18',\n darker: '#7A0916',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#161C24',\n 100: '#212B36',\n 200: '#454F5B',\n 300: '#637381',\n 400: '#919EAB',\n 500: '#C4CDD5',\n 600: '#DFE3E8',\n 700: '#F4F6F8',\n 800: '#F9FAFB',\n 900: '#FFFFFF',\n },\n common: {\n black: '#000000',\n white: '#FFFFFF',\n },\n background: {\n default: '#161C24',\n paper: '#212B36',\n neutral: '#28323D',\n },\n text: {\n primary: '#FFFFFF',\n secondary: '#919EAB',\n disabled: '#637381',\n },\n};\n\n/**\n * Default theme preset.\n */\nexport const defaultPreset: ThemePresetDefinition = {\n name: 'default-light',\n displayName: 'Default',\n description: 'A neutral, modern theme suitable for most applications.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Public Sans Variable\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Barlow\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n mono: '\"JetBrains Mono\", \"Fira Code\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'default',\n main: '#00A76F',\n },\n};\n","/**\n * Luxury Theme Preset\n *\n * A rich, elegant theme with deep colors and premium feel.\n *\n * @module @omnitron-dev/prism/theme/presets/luxury\n */\n\nimport type { ThemePresetDefinition, PresetPalette } from '../../types/theme.js';\n\n/**\n * Light mode palette.\n */\nconst lightPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#8B6914',\n dark: '#6B4F0F',\n darker: '#4A370A',\n contrastText: '#FFFFFF',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#6B3A6B',\n dark: '#4D2A4D',\n darker: '#2F1A2F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#2E7AB8',\n dark: '#1F5A8A',\n darker: '#103A5C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#2E8B2E',\n dark: '#1F6B1F',\n darker: '#104A10',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#D4A012',\n dark: '#A67A0E',\n darker: '#785509',\n contrastText: '#212121',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#B82E2E',\n dark: '#8A1F1F',\n darker: '#5C1010',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#FAF9F7',\n 100: '#F5F3F0',\n 200: '#E8E4DE',\n 300: '#D4CEC4',\n 400: '#B8AFA0',\n 500: '#9C917C',\n 600: '#7A6F5C',\n 700: '#5C5244',\n 800: '#3E362C',\n 900: '#201C16',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#FFFCF7',\n paper: '#FFFFFF',\n neutral: '#F5F3F0',\n },\n text: {\n primary: '#201C16',\n secondary: '#5C5244',\n disabled: '#9C917C',\n },\n};\n\n/**\n * Dark mode palette.\n */\nconst darkPalette: PresetPalette = {\n primary: {\n lighter: '#F5E6D3',\n light: '#D4A574',\n main: '#C9A227',\n dark: '#A68A1F',\n darker: '#846D18',\n contrastText: '#0D0A06',\n },\n secondary: {\n lighter: '#E8D5E8',\n light: '#B38AB3',\n main: '#9B5A9B',\n dark: '#7D4A7D',\n darker: '#5F3A5F',\n contrastText: '#FFFFFF',\n },\n info: {\n lighter: '#D6E4F0',\n light: '#8BBED9',\n main: '#4E9AD4',\n dark: '#3A7AB0',\n darker: '#265A8C',\n contrastText: '#FFFFFF',\n },\n success: {\n lighter: '#D8EED3',\n light: '#8BC98A',\n main: '#4EAB4E',\n dark: '#3A8B3A',\n darker: '#266B26',\n contrastText: '#FFFFFF',\n },\n warning: {\n lighter: '#FFF3D6',\n light: '#FFD98B',\n main: '#E8B612',\n dark: '#C49A0E',\n darker: '#A07E0A',\n contrastText: '#0D0A06',\n },\n error: {\n lighter: '#F5D6D6',\n light: '#D98B8B',\n main: '#D44E4E',\n dark: '#B03A3A',\n darker: '#8C2626',\n contrastText: '#FFFFFF',\n },\n grey: {\n 50: '#18140E',\n 100: '#241E16',\n 200: '#362E22',\n 300: '#4A402E',\n 400: '#5E523A',\n 500: '#7A6F5C',\n 600: '#9C917C',\n 700: '#B8AFA0',\n 800: '#D4CEC4',\n 900: '#E8E4DE',\n },\n common: {\n black: '#0D0A06',\n white: '#FFFCF7',\n },\n background: {\n default: '#0D0A06',\n paper: '#18140E',\n neutral: '#241E16',\n },\n text: {\n primary: '#E8E4DE',\n secondary: '#B8AFA0',\n disabled: '#7A6F5C',\n },\n};\n\n/**\n * Luxury theme preset.\n */\nexport const luxuryPreset: ThemePresetDefinition = {\n name: 'luxury',\n displayName: 'Luxury',\n description: 'A rich, elegant theme with deep colors and premium feel.',\n preferredMode: 'light',\n lightPalette,\n darkPalette,\n typography: {\n fontFamily: {\n primary: '\"Playfair Display\", Georgia, \"Times New Roman\", serif',\n secondary: '\"Lato\", -apple-system, BlinkMacSystemFont, sans-serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'luxury',\n main: '#8B6914',\n },\n};\n","/**\n * Nature Theme Preset\n *\n * An earthy, organic theme with warm greens and natural tones.\n *\n * @module @omnitron-dev/prism/theme/presets/nature\n */\n\nimport type { ThemePresetDefinition } from '../../types/theme.js';\nimport { green } from '../colors/base.js';\n\n/**\n * Nature theme preset.\n * Optimized for light mode with earthy green tones.\n */\nexport const naturePreset: ThemePresetDefinition = {\n name: 'nature',\n displayName: 'Nature',\n description: 'An earthy, organic theme with warm greens and natural tones.',\n preferredMode: 'light',\n typography: {\n fontFamily: {\n primary: '\"Nunito\", -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif',\n secondary: '\"Merriweather\", Georgia, serif',\n mono: '\"JetBrains Mono\", Consolas, Monaco, monospace',\n },\n fontWeights: {\n light: 300,\n regular: 400,\n medium: 500,\n semiBold: 600,\n bold: 700,\n },\n },\n colorGroup: {\n key: 'nature',\n main: green[500],\n palette: green,\n },\n};\n","/**\n * Theme Presets Index\n *\n * @module @omnitron-dev/prism/theme/presets\n */\n\nimport type { ThemePreset, ThemePresetDefinition } from '../../types/theme.js';\nimport { defaultPreset } from './default.js';\nimport { luxuryPreset } from './luxury.js';\nimport { arcticPreset } from './arctic.js';\nimport { naturePreset } from './nature.js';\nimport { emberPreset } from './ember.js';\nimport { draculaPreset } from './dracula.js';\nimport { midnightPreset } from './midnight.js';\nimport { retroPreset } from './retro.js';\nimport { minimalPreset } from './minimal.js';\n\n/**\n * All available preset names.\n */\nexport const presetNames: ThemePreset[] = [\n 'default-light',\n 'default-dark',\n 'luxury',\n 'arctic',\n 'nature',\n 'ember',\n 'dracula',\n 'midnight',\n 'retro',\n 'minimal',\n];\n\n/**\n * Preset registry.\n */\nconst presets: Record<string, ThemePresetDefinition> = {\n 'default-light': defaultPreset,\n 'default-dark': defaultPreset, // Uses same preset but different preferred mode\n luxury: luxuryPreset,\n arctic: arcticPreset,\n nature: naturePreset,\n ember: emberPreset,\n dracula: draculaPreset,\n midnight: midnightPreset,\n retro: retroPreset,\n minimal: minimalPreset,\n};\n\n/**\n * Get a theme preset by name.\n *\n * @param name - Preset name\n * @returns Theme preset definition\n * @throws If preset is not found\n */\nexport function getPreset(name: ThemePreset): ThemePresetDefinition {\n const preset = presets[name];\n\n if (!preset) {\n console.warn(`Preset \"${name}\" not found, falling back to \"default-light\"`);\n return defaultPreset;\n }\n\n return preset;\n}\n\n/**\n * Register a custom preset.\n *\n * @param name - Preset name\n * @param preset - Preset definition\n */\nexport function registerPreset(name: string, preset: ThemePresetDefinition): void {\n presets[name] = preset;\n}\n\n/**\n * Get all registered presets.\n */\nexport function getAllPresets(): Record<string, ThemePresetDefinition> {\n return { ...presets };\n}\n\n// Re-export presets\nexport { defaultPreset } from './default.js';\nexport { luxuryPreset } from './luxury.js';\nexport { arcticPreset } from './arctic.js';\nexport { naturePreset } from './nature.js';\nexport { emberPreset } from './ember.js';\nexport { draculaPreset } from './dracula.js';\nexport { midnightPreset } from './midnight.js';\nexport { retroPreset } from './retro.js';\nexport { minimalPreset } from './minimal.js';\n","/**\n * CSS Variables System\n *\n * Utilities for generating and managing CSS variables.\n *\n * @module @omnitron-dev/prism/theme/css-variables\n */\n\nimport type { PrismTheme, CssVariablesConfig } from '../types/theme.js';\nimport { generatePaletteChannel } from './palette.js';\n\n/**\n * CSS variable definitions.\n * Uses an index signature since keys are dynamically generated based on prefix.\n */\nexport interface CssVariables {\n [key: string]: string;\n}\n\n/**\n * Default CSS variable values.\n */\nexport const cssVariables: CssVariables = {\n '--prism-background': '#FFFFFF',\n '--prism-foreground': '#212121',\n '--prism-card': '#FFFFFF',\n '--prism-card-foreground': '#212121',\n '--prism-popover': '#FFFFFF',\n '--prism-popover-foreground': '#212121',\n\n '--prism-primary': '#00A76F',\n '--prism-primary-foreground': '#FFFFFF',\n '--prism-primary-lighter': '#C8FAD6',\n '--prism-primary-light': '#5BE49B',\n '--prism-primary-dark': '#007867',\n '--prism-primary-darker': '#004B50',\n\n '--prism-secondary': '#8E33FF',\n '--prism-secondary-foreground': '#FFFFFF',\n\n '--prism-muted': '#F4F6F8',\n '--prism-muted-foreground': '#637381',\n '--prism-accent': '#F4F6F8',\n '--prism-accent-foreground': '#212121',\n '--prism-destructive': '#FF5630',\n '--prism-destructive-foreground': '#FFFFFF',\n\n '--prism-border': '#E0E0E0',\n '--prism-input': '#E0E0E0',\n '--prism-ring': '#00A76F',\n\n '--prism-radius': '0.5rem',\n\n '--prism-primary-channel': '0 167 111',\n '--prism-secondary-channel': '142 51 255',\n '--prism-background-channel': '255 255 255',\n};\n\n/**\n * Generate CSS variables from a Prism theme.\n *\n * @param theme - Prism theme\n * @param config - CSS variables configuration\n * @returns CSS variables object\n */\nexport function generateCssVariables(theme: PrismTheme, config: CssVariablesConfig): CssVariables {\n const { prefix } = config;\n const { palette } = theme;\n\n const vars: CssVariables = {\n [`--${prefix}-background`]: palette.background.default,\n [`--${prefix}-foreground`]: palette.text.primary,\n [`--${prefix}-card`]: palette.background.paper,\n [`--${prefix}-card-foreground`]: palette.text.primary,\n [`--${prefix}-popover`]: palette.background.paper,\n [`--${prefix}-popover-foreground`]: palette.text.primary,\n\n [`--${prefix}-primary`]: palette.primary.main,\n [`--${prefix}-primary-foreground`]: palette.primary.contrastText,\n [`--${prefix}-primary-lighter`]:\n (palette.primary as unknown as { lighter?: string }).lighter || palette.primary.light,\n [`--${prefix}-primary-light`]: palette.primary.light,\n [`--${prefix}-primary-dark`]: palette.primary.dark,\n [`--${prefix}-primary-darker`]: (palette.primary as unknown as { darker?: string }).darker || palette.primary.dark,\n\n [`--${prefix}-secondary`]: palette.secondary.main,\n [`--${prefix}-secondary-foreground`]: palette.secondary.contrastText,\n\n [`--${prefix}-muted`]: palette.background.default,\n [`--${prefix}-muted-foreground`]: palette.text.secondary,\n [`--${prefix}-accent`]: palette.background.default,\n [`--${prefix}-accent-foreground`]: palette.text.primary,\n [`--${prefix}-destructive`]: palette.error.main,\n [`--${prefix}-destructive-foreground`]: palette.error.contrastText,\n\n [`--${prefix}-border`]: palette.divider || palette.grey[300],\n [`--${prefix}-input`]: palette.divider || palette.grey[300],\n [`--${prefix}-ring`]: palette.primary.main,\n\n [`--${prefix}-radius`]: `${theme.shape.borderRadius}px`,\n\n [`--${prefix}-primary-channel`]: generatePaletteChannel(palette.primary.main),\n [`--${prefix}-secondary-channel`]: generatePaletteChannel(palette.secondary.main),\n [`--${prefix}-background-channel`]: generatePaletteChannel(palette.background.default),\n };\n\n // Inject into document if in browser\n if (typeof document !== 'undefined') {\n injectCssVariables(vars, config);\n }\n\n return vars;\n}\n\n/**\n * Inject CSS variables into the document.\n *\n * @param vars - CSS variables object\n * @param config - CSS variables configuration\n */\nfunction injectCssVariables(vars: CssVariables, config: CssVariablesConfig): void {\n const root = document.documentElement;\n\n Object.entries(vars).forEach(([key, value]) => {\n root.style.setProperty(key, value);\n });\n}\n\n/**\n * Get computed CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @returns Computed value\n */\nexport function getCssVariable(name: string): string {\n if (typeof window === 'undefined') return '';\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n return getComputedStyle(document.documentElement).getPropertyValue(varName).trim();\n}\n\n/**\n * Set CSS variable value.\n *\n * @param name - Variable name (with or without --)\n * @param value - New value\n */\nexport function setCssVariable(name: string, value: string): void {\n if (typeof document === 'undefined') return;\n\n const varName = name.startsWith('--') ? name : `--${name}`;\n document.documentElement.style.setProperty(varName, value);\n}\n"]}
|