@maz-ui/themes 5.0.0-beta.4 → 5.0.0-beta.46

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.
Files changed (61) hide show
  1. package/README.md +62 -17
  2. package/dist/build/index.d.ts +10 -13
  3. package/dist/build/index.d.ts.map +1 -1
  4. package/dist/build/index.js +1 -1
  5. package/dist/composables/useTheme.d.ts +10 -2
  6. package/dist/composables/useTheme.d.ts.map +1 -1
  7. package/dist/composables/useTheme.js +1 -1
  8. package/dist/index.d.ts +0 -1
  9. package/dist/index.d.ts.map +1 -1
  10. package/dist/index.js +1 -1
  11. package/dist/presets/_defaults.d.ts +16 -4
  12. package/dist/presets/_defaults.d.ts.map +1 -1
  13. package/dist/presets/_defaults.js +1 -1
  14. package/dist/presets/mazUi.d.ts.map +1 -1
  15. package/dist/presets/mazUi.js +1 -1
  16. package/dist/presets/nova.d.ts.map +1 -1
  17. package/dist/presets/nova.js +1 -1
  18. package/dist/presets/obsidian.d.ts.map +1 -1
  19. package/dist/presets/obsidian.js +1 -1
  20. package/dist/presets/ocean.d.ts.map +1 -1
  21. package/dist/presets/ocean.js +1 -1
  22. package/dist/presets/pristine.d.ts.map +1 -1
  23. package/dist/presets/pristine.js +1 -1
  24. package/dist/types/index.d.ts +43 -1
  25. package/dist/types/index.d.ts.map +1 -1
  26. package/dist/utils/color-conversions.d.ts +29 -0
  27. package/dist/utils/color-conversions.d.ts.map +1 -0
  28. package/dist/utils/color-conversions.js +1 -0
  29. package/dist/utils/color-parser.d.ts +3 -27
  30. package/dist/utils/color-parser.d.ts.map +1 -1
  31. package/dist/utils/color-parser.js +1 -1
  32. package/dist/utils/color-scheme-meta.d.ts +15 -0
  33. package/dist/utils/color-scheme-meta.d.ts.map +1 -0
  34. package/dist/utils/color-scheme-meta.js +1 -0
  35. package/dist/utils/cookie-storage.d.ts +17 -7
  36. package/dist/utils/cookie-storage.d.ts.map +1 -1
  37. package/dist/utils/cookie-storage.js +1 -1
  38. package/dist/utils/css-generator.d.ts +6 -4
  39. package/dist/utils/css-generator.d.ts.map +1 -1
  40. package/dist/utils/css-generator.js +2 -4
  41. package/dist/utils/get-color-mode.js +1 -1
  42. package/dist/utils/index.d.ts +2 -1
  43. package/dist/utils/index.d.ts.map +1 -1
  44. package/dist/utils/index.js +1 -1
  45. package/dist/utils/inject-theme-css.d.ts.map +1 -1
  46. package/dist/utils/inject-theme-css.js +1 -1
  47. package/dist/utils/preset-merger.d.ts.map +1 -1
  48. package/dist/utils/preset-merger.js +1 -1
  49. package/dist/utils/setup-theme.d.ts +9 -0
  50. package/dist/utils/setup-theme.d.ts.map +1 -1
  51. package/dist/utils/setup-theme.js +1 -1
  52. package/dist/utils/update-document-class.d.ts +2 -2
  53. package/dist/utils/update-document-class.d.ts.map +1 -1
  54. package/dist/utils/update-document-class.js +1 -1
  55. package/dist/utils/view-transition.d.ts +10 -0
  56. package/dist/utils/view-transition.d.ts.map +1 -0
  57. package/dist/utils/view-transition.js +1 -0
  58. package/package.json +27 -13
  59. package/dist/utils/color-utils.d.ts +0 -35
  60. package/dist/utils/color-utils.d.ts.map +0 -1
  61. package/dist/utils/color-utils.js +0 -1
package/README.md CHANGED
@@ -4,9 +4,11 @@ High-performance and typed theme system for Maz-UI.
4
4
 
5
5
  ## Features
6
6
 
7
- - 🎨 **HSL CSS Variables** - Uses HSL CSS variables for maximum flexibility
8
- - 🌓 **Automatic dark mode** - Native dark mode support with `prefers-color-scheme`
9
- - 🚀 **Automatic generation** - Automatically generates color variants (50-950)
7
+ - 🎨 **Native `light-dark()` + `color-scheme`** - Modern CSS theming with zero JS overhead for the light/dark switch
8
+ - 🌓 **Native dark mode** - `color-scheme` makes native form controls, scrollbars, and built-in widgets adapt automatically
9
+ - ✨ **View Transitions** - Optional full-page animated theme switch via `document.startViewTransition()`
10
+ - 🛡️ **Anti-FART** - `<meta name="color-scheme">` injected at boot to prevent any Flash of inAccurate coloR Theme
11
+ - 🚀 **Automatic generation** - Automatically generates color variants (50-950) via OKLCh relative color syntax
10
12
  - ⚡ **Flexible strategies** - Runtime injection or build-time generation
11
13
  - 🛡️ **Strict TypeScript** - Complete types for optimal DX
12
14
  - 🎯 **Zero FOUC** - Pass the preset object so the full CSS renders synchronously on first paint
@@ -34,6 +36,10 @@ app.use(MazUiTheme, {
34
36
  preset: mazUi,
35
37
  strategy: 'runtime',
36
38
  darkModeStrategy: 'class',
39
+ // Class added to <html> when dark mode is forced (default: 'dark')
40
+ darkClass: 'dark',
41
+ // Class added to <html> when light mode is forced (default: 'light')
42
+ lightClass: 'light',
37
43
  // remember the active preset name across reloads (default: true)
38
44
  persistPreset: true,
39
45
  })
@@ -41,7 +47,7 @@ app.use(MazUiTheme, {
41
47
 
42
48
  ### Preset persistence
43
49
 
44
- The active preset name is stored in a `maz-preset` cookie (1-year TTL, `SameSite=Lax`). At boot the cookie takes priority over `options.preset` (string name **or** preset object — both treated as the default the app boots with), so the user's last choice survives across reloads. The cookie is written on every successful resolution and on every `useTheme().updateTheme()` call, and auto-cleared if the saved name no longer resolves. Set `persistPreset: false` to opt out — no cookie is read or written.
50
+ The active preset is stored in a `maz-preset` cookie (1-year TTL, `SameSite=Lax`) as a `base:active` pair, where `base` is the identity of the preset declared in `options.preset` and `active` is the one currently applied. The configured `options.preset` is always authoritative: a runtime switch made via `useTheme().updateTheme()` is only restored on reload when its `base` matches the configured preset, so a stale cookie - or a cookie written by another app on the same host - can never override the preset your app declares. A foreign or legacy (plain-name) cookie is ignored and healed on the next resolution. Set `persistPreset: false` to opt out - no cookie is read or written.
45
51
 
46
52
  ### 2. Usage in components
47
53
 
@@ -64,6 +70,41 @@ const { toggleDarkMode, isDark } = useTheme()
64
70
  </template>
65
71
  ```
66
72
 
73
+ ## Color modes and class toggling
74
+
75
+ `darkClass` and `lightClass` interact with `darkModeStrategy` to control how `<html>` is decorated.
76
+
77
+ ### `darkModeStrategy: 'class'` (default)
78
+
79
+ - `setColorMode('dark')` → adds `darkClass` (default `.dark`) to `<html>` → CSS applies `color-scheme: only dark`.
80
+ - `setColorMode('light')` → adds `lightClass` (default `.light`) to `<html>` → CSS applies `color-scheme: only light`.
81
+ - `setColorMode('auto')` → removes both classes, leaving only `color-scheme: light dark` on `:root` so the browser follows the system `prefers-color-scheme`.
82
+
83
+ Forcing both classes (light/dark) on the root ensures the browser-native widgets (scrollbars, native `<select>`, date pickers, autofill backgrounds, …) match the explicit user choice rather than the OS preference.
84
+
85
+ ### `darkModeStrategy: 'media'`
86
+
87
+ - No class is ever added to `<html>`.
88
+ - The browser always follows `prefers-color-scheme` via `color-scheme: light dark`.
89
+ - `setColorMode()` still updates the persisted cookie but does **not** force a visual override — system preference always wins.
90
+
91
+ ## Animated theme switch (View Transitions)
92
+
93
+ For a full-page animated swap (rather than per-variable color tweens), pass `{ animate: true }` to `setColorMode` or `toggleDarkMode`:
94
+
95
+ ```ts
96
+ import { useTheme } from '@maz-ui/themes'
97
+
98
+ const { toggleDarkMode, setColorMode } = useTheme()
99
+
100
+ await toggleDarkMode({ animate: true })
101
+ await setColorMode('dark', { animate: true })
102
+ ```
103
+
104
+ - Wraps the switch in `document.startViewTransition()` so the browser captures a snapshot of the page before/after and crossfades between them.
105
+ - The helper is **lazy-imported** — when `animate` is not used, the View Transitions glue stays out of the boot bundle.
106
+ - **Graceful degradation:** in browsers that don't support the API (e.g., Firefox stable as of mid-2026), the change is applied immediately with no animation — no error thrown.
107
+
67
108
  ## Available presets
68
109
 
69
110
  ### Default
@@ -106,16 +147,16 @@ const myPreset = definePreset({
106
147
  overrides: {
107
148
  name: 'my-theme',
108
149
  scales: {
109
- radius: { md: '0.75rem' },
150
+ rounded: { md: '0.75rem' },
110
151
  },
111
152
  colors: {
112
153
  light: {
113
- primary: '220 100% 50%',
114
- secondary: '210 40% 96%',
154
+ primary: 'oklch(0.6 0.2 250)',
155
+ secondary: 'oklch(0.96 0.01 250)',
115
156
  },
116
157
  dark: {
117
- primary: '220 100% 70%',
118
- secondary: '210 40% 15%',
158
+ primary: 'oklch(0.7 0.2 250)',
159
+ secondary: 'oklch(0.2 0.01 250)',
119
160
  },
120
161
  },
121
162
  },
@@ -133,12 +174,16 @@ const {
133
174
  colorMode, // Ref<'light' | 'dark' | 'auto'>
134
175
  isDark, // ComputedRef<boolean>
135
176
  strategy, // ComputedRef<'runtime' | 'buildtime'>
136
- updateTheme, // (preset: ThemePreset | ThemePresetName | ThemePresetOverrides) => void
137
- setColorMode, // (mode: 'light' | 'dark' | 'auto') => void
138
- toggleDarkMode, // () => void
177
+ updateTheme, // (preset: ThemePreset | ThemePresetName | ThemePresetOverrides) => Promise<void>
178
+ setColorMode, // (mode: 'light' | 'dark' | 'auto', options?: { animate?: boolean }) => Promise<void>
179
+ toggleDarkMode, // (options?: { animate?: boolean }) => Promise<void>
139
180
  } = useTheme()
140
181
  ```
141
182
 
183
+ `setColorMode` and `toggleDarkMode` are **async** (`Promise<void>`). The promise resolves once the change — and the optional View Transition — has been applied. Callers can ignore the return value when no transition is needed.
184
+
185
+ The optional `{ animate?: boolean }` parameter enables the View Transitions API (see [Animated theme switch](#animated-theme-switch-view-transitions)).
186
+
142
187
  ## Strategies
143
188
 
144
189
  ### Runtime (recommended)
@@ -151,12 +196,12 @@ CSS generated at build-time and included in the bundle. Nothing is injected at r
151
196
 
152
197
  ## Generated CSS variables
153
198
 
154
- The system automatically generates:
199
+ The generator produces a modern, native CSS contract:
155
200
 
156
- - Base color variables: `--primary`, `--secondary`, etc.
157
- - Color scales: `--primary-50` to `--primary-950`
158
- - Design variables: `--radius`, `--font-family`
159
- - Dark mode support via `.dark` or `@media (prefers-color-scheme: dark)`
201
+ - **Base colors** are emitted as `light-dark(L, D)` when `mode: 'both'` — a single declaration that the browser resolves to the active scheme. Example: `--maz-primary: light-dark(oklch(0.6 0.2 250), oklch(0.7 0.2 250));`.
202
+ - **Scale palettes** `--maz-X-50` through `--maz-X-950` are derived from the base via OKLCh relative color syntax — `oklch(from var(--maz-X) clamp(0, calc(l ± offset), 1) calc(c * mult) h)`. Lightness offsets follow Tailwind v4's perceptual spread; chroma is preserved (and tapered near extremes) so derived shades stay vibrant rather than washed-out.
203
+ - **Color scheme** is declared on `:root` as `color-scheme: light dark`. With `darkModeStrategy: 'class'`, the generator also emits `.dark { color-scheme: only dark; }` and `.light { color-scheme: only light; }` so an explicit user choice overrides the system preference (and native widgets follow).
204
+ - **Design tokens** — `--maz-rounded-*`, `--maz-shadow-*`, `--maz-font-family`, motion durations, easings, etc. — are bridged into Tailwind v4 via `@theme inline`.
160
205
 
161
206
  ## Build-time
162
207
 
@@ -1,6 +1,5 @@
1
1
  import { ThemePreset } from '../types';
2
- export interface BuildThemeOptions {
3
- preset: ThemePreset;
2
+ interface SharedOptions {
4
3
  /** Theme mode to generate */
5
4
  mode?: 'light' | 'dark' | 'both';
6
5
  /** Dark mode selector: 'class' (.dark) | 'media' (@media) */
@@ -9,24 +8,22 @@ export interface BuildThemeOptions {
9
8
  prefix?: string;
10
9
  /** Dark class name */
11
10
  darkClass?: string;
11
+ /** Light class name (default 'light') */
12
+ lightClass?: string;
12
13
  }
13
- export declare function buildThemeCSS(options: BuildThemeOptions): string;
14
- export declare function generateThemeBundle(presets: ThemePreset[], options?: {
15
- mode?: 'light' | 'dark' | 'both';
16
- darkSelector?: 'class' | 'media';
17
- prefix?: string;
18
- }): Record<string, string>;
14
+ export interface BuildThemeOptions extends SharedOptions {
15
+ preset: ThemePreset;
16
+ }
17
+ export declare function buildThemeCSS({ preset, mode, darkSelector, prefix, darkClass, lightClass, }: BuildThemeOptions): string;
18
+ export declare function generateThemeBundle(presets: ThemePreset[], options?: SharedOptions): Record<string, string>;
19
19
  export declare function createThemeStylesheet(css: string, options?: {
20
20
  id?: string;
21
21
  media?: string;
22
22
  }): string;
23
- export declare function buildSeparateThemeFiles(preset: ThemePreset, options?: {
24
- prefix?: string;
25
- darkSelector?: 'class' | 'media';
26
- darkClass?: string;
27
- }): {
23
+ export declare function buildSeparateThemeFiles(preset: ThemePreset, options?: Omit<SharedOptions, 'mode'>): {
28
24
  full: string;
29
25
  lightOnly: string;
30
26
  darkOnly: string;
31
27
  };
28
+ export {};
32
29
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;IACnB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAehE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE;IACnE,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;CACX,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAgB9B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACV,GAAG,MAAM,CAYd;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,SAAS,CAAC,EAAE,MAAM,CAAA;CACd,GAAG;IACP,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAMA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/build/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,UAAU,aAAa;IACrB,6BAA6B;IAC7B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,6DAA6D;IAC7D,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,MAAM,EAAE,WAAW,CAAA;CACpB;AAED,wBAAgB,aAAa,CAAC,EAC5B,MAAM,EACN,IAAa,EACb,YAAsB,EACtB,MAAc,EACd,SAAkB,EAClB,UAAoB,GACrB,EAAE,iBAAiB,GAAG,MAAM,CAQ5B;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAK/G;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAAE,EAAE,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,MAAM,CAIxG;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,MAAM,CAAM,GAAG;IACvG,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAMA"}
@@ -1 +1 @@
1
- import{generateCSS}from"../utils/css-generator.js";function buildThemeCSS(options){let{preset,mode=`both`,darkSelector=`class`,prefix=`maz`,darkClass=`dark`}=options;return generateCSS(preset,{mode,darkSelectorStrategy:darkSelector,prefix,darkClass})}function generateThemeBundle(presets,options={}){let{mode=`both`,darkSelector=`class`,prefix=`maz`}=options;return presets.reduce((bundle,preset)=>(bundle[preset.name]=buildThemeCSS({preset,mode,darkSelector,prefix}),bundle),{})}function createThemeStylesheet(css,options={}){let{id=`maz-theme`,media}=options;let styleTag=`<style id="${id}"`;return media&&(styleTag+=` media="${media}"`),styleTag+=`>\n${css}\n</style>`,styleTag}function buildSeparateThemeFiles(preset,options={}){return{full:buildThemeCSS({preset,mode:`both`,...options}),lightOnly:buildThemeCSS({preset,mode:`light`,...options}),darkOnly:buildThemeCSS({preset,mode:`dark`,...options})}}export{buildSeparateThemeFiles,buildThemeCSS,createThemeStylesheet,generateThemeBundle};
1
+ import{generateCSS}from"../utils/css-generator.js";function buildThemeCSS({preset,mode=`both`,darkSelector=`class`,prefix=`maz`,darkClass=`dark`,lightClass=`light`}){return generateCSS(preset,{mode,darkSelectorStrategy:darkSelector,prefix,darkClass,lightClass})}function generateThemeBundle(presets,options={}){return presets.reduce((bundle,preset)=>(bundle[preset.name]=buildThemeCSS({preset,...options}),bundle),{})}function createThemeStylesheet(css,options={}){let{id=`maz-theme`,media}=options;return`<style id="${id}"${media?` media="${media}"`:``}>\n${css}\n</style>`}function buildSeparateThemeFiles(preset,options={}){return{full:buildThemeCSS({preset,mode:`both`,...options}),lightOnly:buildThemeCSS({preset,mode:`light`,...options}),darkOnly:buildThemeCSS({preset,mode:`dark`,...options})}}export{buildSeparateThemeFiles,buildThemeCSS,createThemeStylesheet,generateThemeBundle};
@@ -1,7 +1,11 @@
1
1
  import { ColorMode, ThemePreset, ThemePresetName, ThemePresetOverrides } from '../types';
2
2
  declare function updateTheme(preset: ThemePreset | ThemePresetOverrides | ThemePresetName): Promise<void>;
3
- declare function setColorMode(colorMode: ColorMode): void;
4
- declare function toggleDarkMode(): void;
3
+ declare function setColorMode(colorMode: ColorMode, options?: {
4
+ animate?: boolean;
5
+ }): Promise<void>;
6
+ declare function toggleDarkMode(options?: {
7
+ animate?: boolean;
8
+ }): Promise<void>;
5
9
  export declare function useTheme(): {
6
10
  /**
7
11
  * Current theme preset
@@ -34,11 +38,15 @@ export declare function useTheme(): {
34
38
  * Set the color mode
35
39
  * @description Set the color mode - Can be 'auto', 'dark' or 'light'
36
40
  * @param colorMode The new color mode
41
+ * @param options.animate When `true`, wrap the change in a View Transition for a smooth full-page animation. Lazy-imports the helper so unused code stays out of the boot bundle.
42
+ * @returns A `Promise<void>` that resolves once the change (and optional transition) is applied. Callers may ignore the return.
37
43
  */
38
44
  setColorMode: typeof setColorMode;
39
45
  /**
40
46
  * Toggle the dark mode
41
47
  * @description Toggle the dark mode
48
+ * @param options.animate When `true`, wrap the toggle in a View Transition.
49
+ * @returns A `Promise<void>` that resolves once the change (and optional transition) is applied.
42
50
  */
43
51
  toggleDarkMode: typeof toggleDarkMode;
44
52
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/composables/useTheme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAc,MAAM,UAAU,CAAA;AA0BzG,iBAAe,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,GAAG,eAAe,iBA+BtF;AAED,iBAAS,YAAY,CAAC,SAAS,EAAE,SAAS,QAWzC;AAED,iBAAS,cAAc,SAEtB;AAiCD,wBAAgB,QAAQ;IAkBpB;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;OAIG;wBACiB,WAAW,GAAG,oBAAoB,GAAG,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC;IAGzG;;;;OAIG;;IAEH;;;OAGG;;IAEH;;;OAGG;;IAEH;;;OAGG;;IAEH;;OAEG;;EAGN"}
1
+ {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../src/composables/useTheme.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAc,MAAM,UAAU,CAAA;AAgCzG,iBAAe,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,GAAG,eAAe,iBAmCtF;AAED,iBAAe,YAAY,CAAC,SAAS,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBpG;AAED,iBAAS,cAAc,CAAC,OAAO,GAAE;IAAE,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAE1E;AAiCD,wBAAgB,QAAQ;IAkBpB;;OAEG;;IAEH;;OAEG;;IAEH;;;OAGG;;IAEH;;OAEG;;IAEH;;OAEG;;IAEH;;;;OAIG;wBACiB,WAAW,GAAG,oBAAoB,GAAG,eAAe,GAAG,UAAU,CAAC,OAAO,WAAW,CAAC;IAGzG;;;;;;OAMG;;IAEH;;;;;OAKG;;IAEH;;;OAGG;;IAEH;;;OAGG;;IAEH;;OAEG;;EAGN"}
@@ -1 +1 @@
1
- import{saveResolvedPresetName,setCookie}from"../utils/cookie-storage.js";import{CSS_ID,generateCSS,injectCSS}from"../utils/css-generator.js";import{getPreset}from"../utils/get-preset.js";import{noTransition}from"../utils/no-transition.js";import{mergePresets}from"../utils/preset-merger.js";import{getSystemColorMode,saveResolvedColorMode}from"../utils/get-color-mode.js";import{isServer}from"@maz-ui/utils/helpers/isServer";import{computed,getCurrentInstance,inject,ref,watch}from"vue";var themeState=ref();var colorMode=computed({get:()=>themeState.value?.colorMode,set:mode=>setColorMode(mode)});var isDark=computed(()=>themeState.value?.isDark||!1);var strategy=computed(()=>themeState.value?.strategy);var mode=computed(()=>themeState.value?.mode);var darkModeStrategy=computed(()=>themeState.value?.darkModeStrategy);var preset=computed(()=>themeState.value?.preset);var presetName=computed(()=>preset.value?.name);async function updateTheme(preset){if(!themeState.value)return;let _preset=typeof preset==`string`?await getPreset(preset):preset;if(!_preset||!themeState.value.preset){console.error(`[@maz-ui/themes] No preset found - If you are using the buildtime strategy, you must provide a complete preset`);return}let newPreset=`name`in _preset&&_preset.name!==themeState.value.preset.name?_preset:mergePresets(themeState.value.preset,_preset);themeState.value.preset=newPreset,themeState.value.persistPreset&&saveResolvedPresetName(newPreset.name),themeState.value.strategy===`runtime`&&injectCSS(CSS_ID,generateCSS(newPreset,{mode:themeState.value.mode,darkSelectorStrategy:themeState.value.darkModeStrategy,prefix:`maz`,darkClass:themeState.value.darkClass}))}function setColorMode(colorMode){themeState.value&&(themeState.value.colorMode=colorMode,setCookie(`maz-color-mode`,colorMode),colorMode===`auto`&&saveResolvedColorMode(getSystemColorMode()===`dark`?`dark`:`light`))}function toggleDarkMode(){setColorMode(isDark.value?`light`:`dark`)}var stopInjectedWatch;function setThemeStateFromGlobalProperties(){themeState.value=void 0,stopInjectedWatch?.(),stopInjectedWatch=void 0;try{let injectedState=inject(`mazThemeState`,void 0);if(themeState.value=injectedState?.value,injectedState&&(stopInjectedWatch=watch(injectedState,newState=>{newState&&(themeState.value=newState)},{deep:!0})),!themeState.value)throw Error(`mazThemeState not found`)}catch{let instance=getCurrentInstance();instance?.appContext?.app?.config?.globalProperties&&(themeState.value=instance.appContext.app.config.globalProperties.$mazThemeState.value)}}function useTheme(){isServer()&&(themeState.value=void 0);try{if(themeState.value||setThemeStateFromGlobalProperties(),!themeState.value)throw Error(`[@maz-ui/themes] no theme state found`)}catch{throw Error(`[@maz-ui/themes] You must install the MazUi or MazUiTheme plugin, or wrap your components in a MazUiProvider, before using useTheme composable`)}return{preset,presetName,colorMode,isDark,strategy,updateTheme(preset){return noTransition(updateTheme,preset)},setColorMode,toggleDarkMode,mode,darkModeStrategy,currentPreset:preset}}export{useTheme};
1
+ import{getSavedPreset,savePreset}from"../utils/cookie-storage.js";import{CSS_ID,generateCSS,injectCSS}from"../utils/css-generator.js";import{getPreset}from"../utils/get-preset.js";import{noTransition}from"../utils/no-transition.js";import{mergePresets}from"../utils/preset-merger.js";import{getSystemColorMode,saveResolvedColorMode}from"../utils/get-color-mode.js";import{isServer}from"@maz-ui/utils/helpers/isServer";import{setCookie}from"@maz-ui/utils/helpers/cookie";import{computed,getCurrentInstance,inject,ref,watch}from"vue";var themeState=ref();var colorMode=computed({get:()=>themeState.value?.colorMode,set:mode=>void setColorMode(mode)});var isDark=computed(()=>themeState.value?.isDark||!1);var strategy=computed(()=>themeState.value?.strategy);var mode=computed(()=>themeState.value?.mode);var darkModeStrategy=computed(()=>themeState.value?.darkModeStrategy);var preset=computed(()=>themeState.value?.preset);var presetName=computed(()=>preset.value?.name);async function updateTheme(preset){if(!themeState.value)return;let _preset=typeof preset==`string`?await getPreset(preset):preset;if(!_preset||!themeState.value.preset){console.error(`[@maz-ui/themes] No preset found — with buildtime strategy you must pass a full preset`);return}let newPreset=`name`in _preset&&_preset.name!==themeState.value.preset.name?_preset:mergePresets(themeState.value.preset,_preset);if(themeState.value.preset=newPreset,themeState.value.persistPreset){let base=getSavedPreset()?.base??newPreset.name;savePreset(base,newPreset.name)}if(themeState.value.strategy===`runtime`){let fullCSS=generateCSS(newPreset,{mode:themeState.value.mode,darkSelectorStrategy:themeState.value.darkModeStrategy,prefix:`maz`,darkClass:themeState.value.darkClass,lightClass:themeState.value.lightClass});injectCSS(CSS_ID,fullCSS)}}async function setColorMode(colorMode,options={}){if(!themeState.value)return;let apply=()=>{themeState.value.colorMode=colorMode,setCookie(`maz-color-mode`,colorMode),colorMode===`auto`&&saveResolvedColorMode(getSystemColorMode()===`dark`?`dark`:`light`)};if(options.animate){let{runViewTransition}=await import(`../utils/view-transition.js`);await runViewTransition(apply)}else apply()}function toggleDarkMode(options={}){return setColorMode(isDark.value?`light`:`dark`,options)}var stopInjectedWatch;function setThemeStateFromGlobalProperties(){themeState.value=void 0,stopInjectedWatch?.(),stopInjectedWatch=void 0;try{let injectedState=inject(`mazThemeState`,void 0);if(themeState.value=injectedState?.value,injectedState&&(stopInjectedWatch=watch(injectedState,newState=>{newState&&(themeState.value=newState)},{deep:!0})),!themeState.value)throw Error(`mazThemeState not found`)}catch{let instance=getCurrentInstance();instance?.appContext?.app?.config?.globalProperties&&(themeState.value=instance.appContext.app.config.globalProperties.$mazThemeState.value)}}function useTheme(){isServer()&&(themeState.value=void 0);try{if(themeState.value||setThemeStateFromGlobalProperties(),!themeState.value)throw Error(`[@maz-ui/themes] no theme state found`)}catch{throw Error(`[@maz-ui/themes] useTheme requires the MazUi/MazUiTheme plugin or a MazUiProvider wrapper`)}return{preset,presetName,colorMode,isDark,strategy,updateTheme(preset){return noTransition(updateTheme,preset)},setColorMode,toggleDarkMode,mode,darkModeStrategy,currentPreset:preset}}export{useTheme};
package/dist/index.d.ts CHANGED
@@ -4,7 +4,6 @@ export * from './define-preset';
4
4
  export * from './plugin';
5
5
  export * from './presets';
6
6
  export * from './types';
7
- export * from './utils/color-utils';
8
7
  export * from './utils/css-generator';
9
8
  export * from './utils/inject-theme-css';
10
9
  export * from './utils/preset-merger';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,wBAAwB,CAAA;AACtC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,uBAAuB,CAAA;AACrC,cAAc,0BAA0B,CAAA;AACxC,cAAc,uBAAuB,CAAA;AACrC,cAAc,qBAAqB,CAAA"}
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- import{adjustColorLightness,generateColorScale,getContrastColor,parseHSL}from"./utils/color-utils.js";import{CSS_ID,generateCSS,injectCSS,removeCSS}from"./utils/css-generator.js";import{injectThemeCSS}from"./utils/inject-theme-css.js";import{deepMerge,mergePresets}from"./utils/preset-merger.js";import{defaultOptions,setupTheme}from"./utils/setup-theme.js";import{MazUiTheme}from"./plugin.js";import{definePreset}from"./define-preset.js";import{pristine}from"./presets/pristine.js";import{ocean}from"./presets/ocean.js";import{obsidian}from"./presets/obsidian.js";import{nova}from"./presets/nova.js";import{mazUi}from"./presets/mazUi.js";import{useTheme}from"./composables/useTheme.js";import{buildSeparateThemeFiles,buildThemeCSS,createThemeStylesheet,generateThemeBundle}from"./build/index.js";import"./presets/index.js";export{CSS_ID,MazUiTheme,adjustColorLightness,buildSeparateThemeFiles,buildThemeCSS,createThemeStylesheet,deepMerge,defaultOptions,definePreset,generateCSS,generateColorScale,generateThemeBundle,getContrastColor,injectCSS,injectThemeCSS,mazUi,mergePresets,nova,obsidian,ocean,parseHSL,pristine,removeCSS,setupTheme,useTheme};
1
+ import{CSS_ID,generateCSS,injectCSS,removeCSS}from"./utils/css-generator.js";import{injectThemeCSS}from"./utils/inject-theme-css.js";import{deepMerge,mergePresets}from"./utils/preset-merger.js";import{defaultOptions,setupTheme}from"./utils/setup-theme.js";import{MazUiTheme}from"./plugin.js";import{definePreset}from"./define-preset.js";import{pristine}from"./presets/pristine.js";import{ocean}from"./presets/ocean.js";import{obsidian}from"./presets/obsidian.js";import{nova}from"./presets/nova.js";import{mazUi}from"./presets/mazUi.js";import{useTheme}from"./composables/useTheme.js";import{buildSeparateThemeFiles,buildThemeCSS,createThemeStylesheet,generateThemeBundle}from"./build/index.js";import"./presets/index.js";export{CSS_ID,MazUiTheme,buildSeparateThemeFiles,buildThemeCSS,createThemeStylesheet,deepMerge,defaultOptions,definePreset,generateCSS,generateThemeBundle,injectCSS,injectThemeCSS,mazUi,mergePresets,nova,obsidian,ocean,pristine,removeCSS,setupTheme,useTheme};
@@ -1,4 +1,4 @@
1
- import { RoundedScaleKey, ThemeComponentBg, ThemeFoundation, ThemeScales } from '../types';
1
+ import { RoundedScaleKey, ThemeComponentBg, ThemeComponents, ThemeFoundation, ThemeScales } from '../types';
2
2
  /**
3
3
  * Defaults shared across the bundled presets. Each preset can spread these
4
4
  * and override the keys it cares about. The bundled presets only declare
@@ -28,9 +28,10 @@ export declare const DEFAULT_FONT_MONO = "ui-monospace, SFMono-Regular, Menlo, M
28
28
  */
29
29
  export declare const DEFAULT_CONTAINER_BG: ThemeComponentBg;
30
30
  /**
31
- * Per-mode default bg for inputs. Light uses the bare `surface`; dark uses
32
- * `surface-400` so inputs read as one tier above the page background — the
33
- * same contrast pattern the v4 components shipped with.
31
+ * Per-mode default bg for inputs. Light uses the bare `surface`; dark
32
+ * derives one tier above the page background via relative OKLCh syntax
33
+ * (mirrors SCALE_OFFSETS step -400: l+0.06) — same contrast pattern the
34
+ * v4 components shipped with. Self-contained, no Tailwind dependency.
34
35
  */
35
36
  export declare const DEFAULT_INPUT_BG: ThemeComponentBg;
36
37
  /**
@@ -45,4 +46,15 @@ export declare const DEFAULT_INPUT_TOP_LABEL_FONT_WEIGHT = "600";
45
46
  * heavier or lighter for their visual identity.
46
47
  */
47
48
  export declare const DEFAULT_BTN_FONT_WEIGHT = "500";
49
+ /**
50
+ * Default `max-width` / `min-width` for `MazDialog` on tablet and up.
51
+ * Anchored on a 14px `base-font-size` (38rem ≈ 532px, 32rem ≈ 448px).
52
+ * Presets with a different `base-font-size` (e.g. ocean at 16px) should
53
+ * scale these in rem to keep the rendered pixel width consistent.
54
+ * Consumed by the component via `var(--maz-dialog-max-width, 38rem)` /
55
+ * `var(--maz-dialog-min-width, 32rem)`, and still overridable per-instance
56
+ * through the `max-width` / `min-width` props.
57
+ */
58
+ export declare const DEFAULT_DIALOG_MAX_WIDTH: NonNullable<ThemeComponents['dialog']>['max-width'];
59
+ export declare const DEFAULT_DIALOG_MIN_WIDTH: NonNullable<ThemeComponents['dialog']>['min-width'];
48
60
  //# sourceMappingURL=_defaults.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"_defaults.d.ts","sourceRoot":"","sources":["../../src/presets/_defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE/F;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAa,CAAA;AAE7E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,CAOjF,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,QAAQ,CAMhD,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAQ,CAAA;AAC7C,eAAO,MAAM,uBAAuB,gBAAgB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,iBAAiB,uGAC0E,CAAA;AAExG;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAGlC,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAAQ,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAA"}
1
+ {"version":3,"file":"_defaults.d.ts","sourceRoot":"","sources":["../../src/presets/_defaults.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAEhH;;;;;;;GAOG;AACH,eAAO,MAAM,aAAa,EAAE,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,CAAa,CAAA;AAE7E;;;;GAIG;AACH,eAAO,MAAM,sBAAsB,EAAE,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,MAAM,CAOjF,CAAA;AAED,eAAO,MAAM,cAAc,EAAE,WAAW,CAAC,QAAQ,CAMhD,CAAA;AAED,eAAO,MAAM,wBAAwB,QAAQ,CAAA;AAC7C,eAAO,MAAM,uBAAuB,gBAAgB,CAAA;AAEpD;;GAEG;AACH,eAAO,MAAM,iBAAiB,uGAC0E,CAAA;AAExG;;;;GAIG;AACH,eAAO,MAAM,oBAAoB,EAAE,gBAGlC,CAAA;AAED;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,mCAAmC,QAAQ,CAAA;AAExD;;;;GAIG;AACH,eAAO,MAAM,uBAAuB,QAAQ,CAAA;AAE5C;;;;;;;;GAQG;AACH,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAW,CAAA;AACpG,eAAO,MAAM,wBAAwB,EAAE,WAAW,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAW,CAAA"}
@@ -1 +1 @@
1
- var DEFAULT_SPACE=`0.25rem`;var DEFAULT_ROUNDED_RATIOS={xs:.25,sm:.5,lg:1.5,xl:2,"2xl":3,"3xl":4};var DEFAULT_SHADOW={sm:`0 1px 2px 0 rgb(0 0 0 / 0.05)`,md:`0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`,lg:`0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)`,xl:`0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)`,elevation:`0 4px 12px -2px rgb(0 0 0 / 0.08), 0 2px 4px -1px rgb(0 0 0 / 0.06)`};var DEFAULT_DISABLED_OPACITY=`0.5`;var DEFAULT_DISABLED_CURSOR=`not-allowed`;var DEFAULT_FONT_MONO=`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`;var DEFAULT_CONTAINER_BG={light:`var(--maz-surface)`,dark:`var(--maz-surface)`};var DEFAULT_INPUT_BG={light:`var(--maz-surface)`,dark:`var(--maz-surface-400)`};var DEFAULT_INPUT_TOP_LABEL_FONT_WEIGHT=`600`;var DEFAULT_BTN_FONT_WEIGHT=`500`;export{DEFAULT_BTN_FONT_WEIGHT,DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_DISABLED_OPACITY,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_INPUT_TOP_LABEL_FONT_WEIGHT,DEFAULT_ROUNDED_RATIOS,DEFAULT_SHADOW,DEFAULT_SPACE};
1
+ var DEFAULT_SPACE=`0.25rem`;var DEFAULT_ROUNDED_RATIOS={xs:.25,sm:.5,lg:1.5,xl:2,"2xl":3,"3xl":4};var DEFAULT_SHADOW={sm:`0 1px 2px 0 rgb(0 0 0 / 0.05)`,md:`0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1)`,lg:`0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1)`,xl:`0 20px 25px -5px rgb(0 0 0 / 0.1), 0 8px 10px -6px rgb(0 0 0 / 0.1)`,elevation:`0 4px 12px -2px rgb(0 0 0 / 0.08), 0 2px 4px -1px rgb(0 0 0 / 0.06)`};var DEFAULT_DISABLED_OPACITY=`0.5`;var DEFAULT_DISABLED_CURSOR=`not-allowed`;var DEFAULT_FONT_MONO=`ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, 'Liberation Mono', 'Courier New', monospace`;var DEFAULT_CONTAINER_BG={light:`var(--maz-surface)`,dark:`var(--maz-surface)`};var DEFAULT_INPUT_BG={light:`var(--maz-surface)`,dark:`oklch(from var(--maz-surface) clamp(0, calc(l + 0.06), 1) c h)`};var DEFAULT_INPUT_TOP_LABEL_FONT_WEIGHT=`600`;var DEFAULT_BTN_FONT_WEIGHT=`500`;var DEFAULT_DIALOG_MAX_WIDTH=`38rem`;var DEFAULT_DIALOG_MIN_WIDTH=`32rem`;export{DEFAULT_BTN_FONT_WEIGHT,DEFAULT_CONTAINER_BG,DEFAULT_DIALOG_MAX_WIDTH,DEFAULT_DIALOG_MIN_WIDTH,DEFAULT_DISABLED_CURSOR,DEFAULT_DISABLED_OPACITY,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_INPUT_TOP_LABEL_FONT_WEIGHT,DEFAULT_ROUNDED_RATIOS,DEFAULT_SHADOW,DEFAULT_SPACE};
@@ -1 +1 @@
1
- {"version":3,"file":"mazUi.d.ts","sourceRoot":"","sources":["../../src/presets/mazUi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAe3C,eAAO,MAAM,KAAK,EAAE,WA6EnB,CAAA"}
1
+ {"version":3,"file":"mazUi.d.ts","sourceRoot":"","sources":["../../src/presets/mazUi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAiB3C,eAAO,MAAM,KAAK,EAAE,WA8EnB,CAAA"}
@@ -1 +1 @@
1
- import{DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var FONT_FAMILY=`Manrope, sans-serif, system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif`;var mazUi={name:`maz-ui`,foundation:{"base-font-size":`14px`,"font-family":FONT_FAMILY,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":FONT_FAMILY,"border-width":`1px`,"motion-fast":`100ms`,"motion-normal":`200ms`,"motion-slow":`300ms`,"easing-out":`cubic-bezier(0.4, 0, 0.2, 1)`,"easing-in":`cubic-bezier(0.4, 0, 1, 1)`,"easing-in-out":`cubic-bezier(0.4, 0, 0.2, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.7rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`}},colors:{light:{surface:`oklch(1 0 0)`,foreground:`oklch(0.2573 0.0068 248.09)`,primary:`oklch(0.6495 0.1913 253.63)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.555 0.288 299.35)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.7595 0.1492 168.15)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.7851 0.1845 126.83)`,"success-foreground":`oklch(0.2573 0.0068 248.09)`,warning:`oklch(0.8256 0.1583 79.4)`,"warning-foreground":`oklch(0.2573 0.0068 248.09)`,destructive:`oklch(0.637 0.237 25.33)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.6619 0.1115 211.75)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.2524 0.0212 280.69)`,"contrast-foreground":`oklch(0.9619 0 0)`,divider:`oklch(0.9276 0.0058 264.53)`,overlay:`oklch(0.5103 0 0)`,muted:`oklch(0.6324 0 0)`,shadow:`oklch(0.2103 0.0059 285.88)`},dark:{surface:`oklch(0.2524 0.0212 280.69)`,foreground:`oklch(0.8845 0 0)`,primary:`oklch(0.6495 0.1913 253.63)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.555 0.288 299.35)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.7595 0.1492 168.15)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.7851 0.1845 126.83)`,"success-foreground":`oklch(0.2573 0.0068 248.09)`,warning:`oklch(0.8256 0.1583 79.4)`,"warning-foreground":`oklch(0.2573 0.0068 248.09)`,destructive:`oklch(0.7149 0.1784 23.64)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.6619 0.1115 211.75)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(1 0 0)`,"contrast-foreground":`oklch(0.2573 0.0068 248.09)`,muted:`oklch(0.6324 0 0)`,divider:`oklch(0.3399 0.0366 282.73)`,overlay:`oklch(0.2697 0 0)`,shadow:`oklch(0.2741 0.0055 286.03)`}}};export{mazUi};
1
+ import{DEFAULT_CONTAINER_BG,DEFAULT_DIALOG_MAX_WIDTH,DEFAULT_DIALOG_MIN_WIDTH,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var FONT_FAMILY=`Manrope, sans-serif, system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif`;var mazUi={name:`maz-ui`,foundation:{"base-font-size":`14px`,"font-family":FONT_FAMILY,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":FONT_FAMILY,"border-width":`1px`,"motion-fast":`100ms`,"motion-normal":`200ms`,"motion-slow":`300ms`,"easing-out":`cubic-bezier(0.4, 0, 0.2, 1)`,"easing-in":`cubic-bezier(0.4, 0, 1, 1)`,"easing-in-out":`cubic-bezier(0.4, 0, 0.2, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.7rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`},dialog:{"max-width":DEFAULT_DIALOG_MAX_WIDTH,"min-width":DEFAULT_DIALOG_MIN_WIDTH}},colors:{light:{surface:`oklch(1 0 0)`,foreground:`oklch(0.2573 0.0068 248.09)`,primary:`oklch(0.6495 0.1913 253.63)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.555 0.288 299.35)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.7595 0.1492 168.15)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.7851 0.1845 126.83)`,"success-foreground":`oklch(0.2573 0.0068 248.09)`,warning:`oklch(0.8256 0.1583 79.4)`,"warning-foreground":`oklch(0.2573 0.0068 248.09)`,destructive:`oklch(0.637 0.237 25.33)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.6619 0.1115 211.75)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.2524 0.0212 280.69)`,"contrast-foreground":`oklch(0.9619 0 0)`,divider:`oklch(0.9276 0.0058 264.53)`,overlay:`oklch(0.5103 0 0)`,muted:`oklch(0.6324 0 0)`,shadow:`oklch(0.2103 0.0059 285.88)`},dark:{surface:`oklch(0.2524 0.0212 280.69)`,foreground:`oklch(0.8845 0 0)`,primary:`oklch(0.6495 0.1913 253.63)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.555 0.288 299.35)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.7595 0.1492 168.15)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.7851 0.1845 126.83)`,"success-foreground":`oklch(0.2573 0.0068 248.09)`,warning:`oklch(0.8256 0.1583 79.4)`,"warning-foreground":`oklch(0.2573 0.0068 248.09)`,destructive:`oklch(0.7149 0.1784 23.64)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.6619 0.1115 211.75)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(1 0 0)`,"contrast-foreground":`oklch(0.2573 0.0068 248.09)`,muted:`oklch(0.6324 0 0)`,divider:`oklch(0.3399 0.0366 282.73)`,overlay:`oklch(0.2697 0 0)`,shadow:`oklch(0.2741 0.0055 286.03)`}}};export{mazUi};
@@ -1 +1 @@
1
- {"version":3,"file":"nova.d.ts","sourceRoot":"","sources":["../../src/presets/nova.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAmC3C,eAAO,MAAM,IAAI,EAAE,WA6ElB,CAAA"}
1
+ {"version":3,"file":"nova.d.ts","sourceRoot":"","sources":["../../src/presets/nova.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAqC3C,eAAO,MAAM,IAAI,EAAE,WA8ElB,CAAA"}
@@ -1 +1 @@
1
- import{DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var nova={name:`nova`,foundation:{"base-font-size":`14px`,"border-width":`1px`,"font-family":`'Geist', 'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Helvetica Neue', sans-serif`,"font-mono-stack":`'Geist Mono', 'JetBrains Mono', ${DEFAULT_FONT_MONO}`,"font-display-stack":`'Geist', 'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, 'Helvetica Neue', sans-serif`,"motion-fast":`100ms`,"motion-normal":`180ms`,"motion-slow":`280ms`,"easing-out":`cubic-bezier(0.22, 1, 0.36, 1)`,"easing-in":`cubic-bezier(0.55, 0, 0.85, 0)`,"easing-in-out":`cubic-bezier(0.83, 0, 0.17, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.5rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`}},colors:{light:{surface:`oklch(0.99 0.005 320)`,foreground:`oklch(0.21 0.018 290)`,primary:`oklch(0.6 0.23 290)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.68 0.22 15)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.75 0.16 200)`,"accent-foreground":`oklch(0.21 0.018 290)`,success:`oklch(0.72 0.18 150)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.85 0.18 95)`,"warning-foreground":`oklch(0.21 0.018 290)`,destructive:`oklch(0.63 0.24 27)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.72 0.16 230)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.21 0.018 290)`,"contrast-foreground":`oklch(1 0 0)`,muted:`oklch(0.62 0.018 290)`,divider:`oklch(0.91 0.012 290)`,overlay:`oklch(0.21 0.018 290)`,shadow:`oklch(0.32 0.07 290)`},dark:{surface:`oklch(0.18 0.015 290)`,foreground:`oklch(0.97 0.005 290)`,primary:`oklch(0.72 0.2 290)`,"primary-foreground":`oklch(0.18 0.015 290)`,secondary:`oklch(0.74 0.2 15)`,"secondary-foreground":`oklch(0.18 0.015 290)`,accent:`oklch(0.82 0.15 200)`,"accent-foreground":`oklch(0.18 0.015 290)`,success:`oklch(0.78 0.17 150)`,"success-foreground":`oklch(0.18 0.015 290)`,warning:`oklch(0.86 0.17 95)`,"warning-foreground":`oklch(0.18 0.015 290)`,destructive:`oklch(0.7 0.21 27)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.78 0.15 230)`,"info-foreground":`oklch(0.18 0.015 290)`,contrast:`oklch(0.97 0.005 290)`,"contrast-foreground":`oklch(0.18 0.015 290)`,muted:`oklch(0.68 0.018 290)`,divider:`oklch(0.3 0.025 290)`,overlay:`oklch(0.18 0.015 290)`,shadow:`oklch(0.12 0.025 290)`}}};export{nova};
1
+ import{DEFAULT_CONTAINER_BG,DEFAULT_DIALOG_MAX_WIDTH,DEFAULT_DIALOG_MIN_WIDTH,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var nova={name:`nova`,foundation:{"base-font-size":`14px`,"border-width":`1px`,"font-family":`'Geist', 'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Helvetica Neue', sans-serif`,"font-mono-stack":`'Geist Mono', 'JetBrains Mono', ${DEFAULT_FONT_MONO}`,"font-display-stack":`'Geist', 'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, 'Helvetica Neue', sans-serif`,"motion-fast":`100ms`,"motion-normal":`180ms`,"motion-slow":`280ms`,"easing-out":`cubic-bezier(0.22, 1, 0.36, 1)`,"easing-in":`cubic-bezier(0.55, 0, 0.85, 0)`,"easing-in-out":`cubic-bezier(0.83, 0, 0.17, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.5rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`},dialog:{"max-width":DEFAULT_DIALOG_MAX_WIDTH,"min-width":DEFAULT_DIALOG_MIN_WIDTH}},colors:{light:{surface:`oklch(0.99 0.005 320)`,foreground:`oklch(0.21 0.018 290)`,primary:`oklch(0.6 0.23 290)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.68 0.22 15)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.75 0.16 200)`,"accent-foreground":`oklch(0.21 0.018 290)`,success:`oklch(0.72 0.18 150)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.85 0.18 95)`,"warning-foreground":`oklch(0.21 0.018 290)`,destructive:`oklch(0.63 0.24 27)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.72 0.16 230)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.21 0.018 290)`,"contrast-foreground":`oklch(1 0 0)`,muted:`oklch(0.62 0.018 290)`,divider:`oklch(0.91 0.012 290)`,overlay:`oklch(0.21 0.018 290)`,shadow:`oklch(0.32 0.07 290)`},dark:{surface:`oklch(0.18 0.015 290)`,foreground:`oklch(0.97 0.005 290)`,primary:`oklch(0.72 0.2 290)`,"primary-foreground":`oklch(0.18 0.015 290)`,secondary:`oklch(0.74 0.2 15)`,"secondary-foreground":`oklch(0.18 0.015 290)`,accent:`oklch(0.82 0.15 200)`,"accent-foreground":`oklch(0.18 0.015 290)`,success:`oklch(0.78 0.17 150)`,"success-foreground":`oklch(0.18 0.015 290)`,warning:`oklch(0.86 0.17 95)`,"warning-foreground":`oklch(0.18 0.015 290)`,destructive:`oklch(0.7 0.21 27)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.78 0.15 230)`,"info-foreground":`oklch(0.18 0.015 290)`,contrast:`oklch(0.97 0.005 290)`,"contrast-foreground":`oklch(0.18 0.015 290)`,muted:`oklch(0.68 0.018 290)`,divider:`oklch(0.3 0.025 290)`,overlay:`oklch(0.18 0.015 290)`,shadow:`oklch(0.12 0.025 290)`}}};export{nova};
@@ -1 +1 @@
1
- {"version":3,"file":"obsidian.d.ts","sourceRoot":"","sources":["../../src/presets/obsidian.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AA8B3C,eAAO,MAAM,QAAQ,EAAE,WA6EtB,CAAA"}
1
+ {"version":3,"file":"obsidian.d.ts","sourceRoot":"","sources":["../../src/presets/obsidian.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAgC3C,eAAO,MAAM,QAAQ,EAAE,WA8EtB,CAAA"}
@@ -1 +1 @@
1
- import{DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var FONT_FAMILY=`'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif`;var obsidian={name:`obsidian`,foundation:{"base-font-size":`14px`,"border-width":`1px`,"font-family":FONT_FAMILY,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":FONT_FAMILY,"motion-fast":`80ms`,"motion-normal":`160ms`,"motion-slow":`240ms`,"easing-out":`cubic-bezier(0.16, 1, 0.3, 1)`,"easing-in":`cubic-bezier(0.7, 0, 0.84, 0)`,"easing-in-out":`cubic-bezier(0.87, 0, 0.13, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.5rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`}},colors:{light:{surface:`oklch(0.985 0.005 280)`,foreground:`oklch(0.245 0.012 280)`,primary:`oklch(0.55 0.205 275)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.6 0.235 0)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.77 0.155 78)`,"accent-foreground":`oklch(0.245 0.012 280)`,success:`oklch(0.66 0.14 162)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.795 0.165 76)`,"warning-foreground":`oklch(0.245 0.012 280)`,destructive:`oklch(0.605 0.215 22)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.72 0.13 230)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.245 0.012 280)`,"contrast-foreground":`oklch(1 0 0)`,muted:`oklch(0.585 0.022 280)`,divider:`oklch(0.918 0.01 280)`,overlay:`oklch(0.245 0.012 280)`,shadow:`oklch(0.27 0.018 280)`},dark:{surface:`oklch(0.2 0.012 280)`,foreground:`oklch(0.965 0.003 280)`,primary:`oklch(0.69 0.175 275)`,"primary-foreground":`oklch(0.2 0.012 280)`,secondary:`oklch(0.7 0.21 0)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.815 0.155 78)`,"accent-foreground":`oklch(0.2 0.012 280)`,success:`oklch(0.755 0.15 162)`,"success-foreground":`oklch(0.2 0.012 280)`,warning:`oklch(0.815 0.165 76)`,"warning-foreground":`oklch(0.2 0.012 280)`,destructive:`oklch(0.64 0.18 22)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.745 0.14 230)`,"info-foreground":`oklch(0.2 0.012 280)`,contrast:`oklch(1 0 0)`,"contrast-foreground":`oklch(0.2 0.012 280)`,muted:`oklch(0.665 0.018 280)`,divider:`oklch(0.31 0.02 280)`,overlay:`oklch(0.2 0.012 280)`,shadow:`oklch(0.14 0.005 280)`}}};export{obsidian};
1
+ import{DEFAULT_CONTAINER_BG,DEFAULT_DIALOG_MAX_WIDTH,DEFAULT_DIALOG_MIN_WIDTH,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var FONT_FAMILY=`'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif`;var obsidian={name:`obsidian`,foundation:{"base-font-size":`14px`,"border-width":`1px`,"font-family":FONT_FAMILY,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":FONT_FAMILY,"motion-fast":`80ms`,"motion-normal":`160ms`,"motion-slow":`240ms`,"easing-out":`cubic-bezier(0.16, 1, 0.3, 1)`,"easing-in":`cubic-bezier(0.7, 0, 0.84, 0)`,"easing-in-out":`cubic-bezier(0.87, 0, 0.13, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.5rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`},dialog:{"max-width":DEFAULT_DIALOG_MAX_WIDTH,"min-width":DEFAULT_DIALOG_MIN_WIDTH}},colors:{light:{surface:`oklch(0.985 0.005 280)`,foreground:`oklch(0.245 0.012 280)`,primary:`oklch(0.55 0.205 275)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.6 0.235 0)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.77 0.155 78)`,"accent-foreground":`oklch(0.245 0.012 280)`,success:`oklch(0.66 0.14 162)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.795 0.165 76)`,"warning-foreground":`oklch(0.245 0.012 280)`,destructive:`oklch(0.605 0.215 22)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.72 0.13 230)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.245 0.012 280)`,"contrast-foreground":`oklch(1 0 0)`,muted:`oklch(0.585 0.022 280)`,divider:`oklch(0.918 0.01 280)`,overlay:`oklch(0.245 0.012 280)`,shadow:`oklch(0.27 0.018 280)`},dark:{surface:`oklch(0.2 0.012 280)`,foreground:`oklch(0.965 0.003 280)`,primary:`oklch(0.69 0.175 275)`,"primary-foreground":`oklch(0.2 0.012 280)`,secondary:`oklch(0.7 0.21 0)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.815 0.155 78)`,"accent-foreground":`oklch(0.2 0.012 280)`,success:`oklch(0.755 0.15 162)`,"success-foreground":`oklch(0.2 0.012 280)`,warning:`oklch(0.815 0.165 76)`,"warning-foreground":`oklch(0.2 0.012 280)`,destructive:`oklch(0.64 0.18 22)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.745 0.14 230)`,"info-foreground":`oklch(0.2 0.012 280)`,contrast:`oklch(1 0 0)`,"contrast-foreground":`oklch(0.2 0.012 280)`,muted:`oklch(0.665 0.018 280)`,divider:`oklch(0.31 0.02 280)`,overlay:`oklch(0.2 0.012 280)`,shadow:`oklch(0.14 0.005 280)`}}};export{obsidian};
@@ -1 +1 @@
1
- {"version":3,"file":"ocean.d.ts","sourceRoot":"","sources":["../../src/presets/ocean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AA+B3C,eAAO,MAAM,KAAK,EAAE,WA6EnB,CAAA"}
1
+ {"version":3,"file":"ocean.d.ts","sourceRoot":"","sources":["../../src/presets/ocean.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AA+B3C,eAAO,MAAM,KAAK,EAAE,WA+EnB,CAAA"}
@@ -1 +1 @@
1
- import{DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var FONT_FAMILY=`'Poppins', 'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif`;var ocean={name:`ocean`,foundation:{"base-font-size":`16px`,"border-width":`0.125rem`,"font-family":FONT_FAMILY,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":FONT_FAMILY,"motion-fast":`120ms`,"motion-normal":`240ms`,"motion-slow":`360ms`,"easing-out":`cubic-bezier(0.32, 0.72, 0, 1)`,"easing-in":`cubic-bezier(0.7, 0, 0.84, 0)`,"easing-in-out":`cubic-bezier(0.65, 0, 0.35, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`1rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`}},colors:{light:{surface:`oklch(0.985 0.005 215)`,foreground:`oklch(0.22 0.025 235)`,primary:`oklch(0.58 0.13 220)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.42 0.13 252)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.76 0.13 50)`,"accent-foreground":`oklch(0.22 0.025 235)`,success:`oklch(0.625 0.13 170)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.745 0.135 75)`,"warning-foreground":`oklch(0.22 0.025 235)`,destructive:`oklch(0.58 0.2 25)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.72 0.11 215)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.22 0.025 235)`,"contrast-foreground":`oklch(0.985 0.005 215)`,muted:`oklch(0.62 0.03 225)`,divider:`oklch(0.89 0.02 200)`,overlay:`oklch(0.22 0.025 235)`,shadow:`oklch(0.35 0.04 225)`},dark:{surface:`oklch(0.2 0.02 240)`,foreground:`oklch(0.945 0.01 200)`,primary:`oklch(0.73 0.12 198)`,"primary-foreground":`oklch(0.2 0.02 240)`,secondary:`oklch(0.6 0.16 252)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.78 0.12 55)`,"accent-foreground":`oklch(0.2 0.02 240)`,success:`oklch(0.64 0.115 170)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.75 0.13 75)`,"warning-foreground":`oklch(0.2 0.02 240)`,destructive:`oklch(0.65 0.18 25)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.74 0.11 215)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.945 0.01 200)`,"contrast-foreground":`oklch(0.2 0.02 240)`,muted:`oklch(0.68 0.02 230)`,divider:`oklch(0.355 0.025 232)`,overlay:`oklch(0.2 0.02 240)`,shadow:`oklch(0.15 0.005 220)`}}};export{ocean};
1
+ import{DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SHADOW,DEFAULT_SPACE}from"./_defaults.js";var FONT_FAMILY=`'Poppins', 'Inter', system-ui, -apple-system, blinkmacsystemfont, 'Segoe UI', roboto, oxygen, ubuntu, cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif`;var ocean={name:`ocean`,foundation:{"base-font-size":`16px`,"border-width":`0.125rem`,"font-family":FONT_FAMILY,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":FONT_FAMILY,"motion-fast":`120ms`,"motion-normal":`240ms`,"motion-slow":`360ms`,"easing-out":`cubic-bezier(0.32, 0.72, 0, 1)`,"easing-in":`cubic-bezier(0.7, 0, 0.84, 0)`,"easing-in-out":`cubic-bezier(0.65, 0, 0.35, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`1rem`},shadow:DEFAULT_SHADOW},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`},dialog:{"max-width":`33.25rem`,"min-width":`28rem`}},colors:{light:{surface:`oklch(0.985 0.005 215)`,foreground:`oklch(0.22 0.025 235)`,primary:`oklch(0.58 0.13 220)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.42 0.13 252)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.76 0.13 50)`,"accent-foreground":`oklch(0.22 0.025 235)`,success:`oklch(0.625 0.13 170)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.745 0.135 75)`,"warning-foreground":`oklch(0.22 0.025 235)`,destructive:`oklch(0.58 0.2 25)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.72 0.11 215)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.22 0.025 235)`,"contrast-foreground":`oklch(0.985 0.005 215)`,muted:`oklch(0.62 0.03 225)`,divider:`oklch(0.89 0.02 200)`,overlay:`oklch(0.22 0.025 235)`,shadow:`oklch(0.35 0.04 225)`},dark:{surface:`oklch(0.2 0.02 240)`,foreground:`oklch(0.945 0.01 200)`,primary:`oklch(0.73 0.12 198)`,"primary-foreground":`oklch(0.2 0.02 240)`,secondary:`oklch(0.6 0.16 252)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.78 0.12 55)`,"accent-foreground":`oklch(0.2 0.02 240)`,success:`oklch(0.64 0.115 170)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.75 0.13 75)`,"warning-foreground":`oklch(0.2 0.02 240)`,destructive:`oklch(0.65 0.18 25)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.74 0.11 215)`,"info-foreground":`oklch(1 0 0)`,contrast:`oklch(0.945 0.01 200)`,"contrast-foreground":`oklch(0.2 0.02 240)`,muted:`oklch(0.68 0.02 230)`,divider:`oklch(0.355 0.025 232)`,overlay:`oklch(0.2 0.02 240)`,shadow:`oklch(0.15 0.005 220)`}}};export{ocean};
@@ -1 +1 @@
1
- {"version":3,"file":"pristine.d.ts","sourceRoot":"","sources":["../../src/presets/pristine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AA2B3C,eAAO,MAAM,QAAQ,EAAE,WAmFtB,CAAA"}
1
+ {"version":3,"file":"pristine.d.ts","sourceRoot":"","sources":["../../src/presets/pristine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AA6B3C,eAAO,MAAM,QAAQ,EAAE,WAoFtB,CAAA"}
@@ -1 +1 @@
1
- import{DEFAULT_CONTAINER_BG,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SPACE}from"./_defaults.js";var pristine={name:`pristine`,foundation:{"base-font-size":`14px`,"border-width":`1px`,"font-family":`-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro', 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif`,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":`-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif`,"motion-fast":`120ms`,"motion-normal":`220ms`,"motion-slow":`380ms`,"easing-out":`cubic-bezier(0.32, 0.72, 0, 1)`,"easing-in":`cubic-bezier(0.5, 0, 0.75, 0)`,"easing-in-out":`cubic-bezier(0.65, 0, 0.35, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.625rem`},shadow:{sm:`0 1px 2px 0 rgb(0 0 0 / 0.04)`,md:`0 2px 6px -1px rgb(0 0 0 / 0.06), 0 1px 3px -1px rgb(0 0 0 / 0.04)`,lg:`0 8px 16px -4px rgb(0 0 0 / 0.08), 0 3px 6px -2px rgb(0 0 0 / 0.04)`,xl:`0 16px 28px -8px rgb(0 0 0 / 0.1), 0 6px 12px -4px rgb(0 0 0 / 0.06)`,elevation:`0 4px 12px -2px rgb(0 0 0 / 0.06), 0 2px 4px -1px rgb(0 0 0 / 0.04)`}},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`}},colors:{light:{surface:`oklch(1 0 0)`,foreground:`oklch(0.21 0.005 286)`,primary:`oklch(0.22 0.005 286)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.555 0.205 305)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.612 0.215 254)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.708 0.18 145)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.745 0.179 56)`,"warning-foreground":`oklch(0.21 0.005 286)`,destructive:`oklch(0.652 0.252 28)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.795 0.12 220)`,"info-foreground":`oklch(0.21 0.005 286)`,contrast:`oklch(0.207 0.002 286)`,"contrast-foreground":`oklch(1 0 0)`,muted:`oklch(0.6 0.005 286)`,divider:`oklch(0.917 0.005 286)`,overlay:`oklch(0.21 0.005 286)`,shadow:`oklch(0 0 0)`},dark:{surface:`oklch(0.207 0.002 286)`,foreground:`oklch(0.97 0 0)`,primary:`oklch(0.97 0 0)`,"primary-foreground":`oklch(0.207 0.002 286)`,secondary:`oklch(0.66 0.18 305)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.643 0.211 256)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.738 0.197 145)`,"success-foreground":`oklch(0.207 0.002 286)`,warning:`oklch(0.76 0.171 60)`,"warning-foreground":`oklch(0.207 0.002 286)`,destructive:`oklch(0.682 0.245 28)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.802 0.115 220)`,"info-foreground":`oklch(0.207 0.002 286)`,contrast:`oklch(0.97 0 0)`,"contrast-foreground":`oklch(0.207 0.002 286)`,muted:`oklch(0.65 0.005 286)`,divider:`oklch(0.31 0.003 286)`,overlay:`oklch(0.16 0.002 286)`,shadow:`oklch(0 0 0)`}}};export{pristine};
1
+ import{DEFAULT_CONTAINER_BG,DEFAULT_DIALOG_MAX_WIDTH,DEFAULT_DIALOG_MIN_WIDTH,DEFAULT_DISABLED_CURSOR,DEFAULT_FONT_MONO,DEFAULT_INPUT_BG,DEFAULT_SPACE}from"./_defaults.js";var pristine={name:`pristine`,foundation:{"base-font-size":`14px`,"border-width":`1px`,"font-family":`-apple-system, BlinkMacSystemFont, 'SF Pro Text', 'SF Pro', 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif`,"font-mono-stack":DEFAULT_FONT_MONO,"font-display-stack":`-apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif`,"motion-fast":`120ms`,"motion-normal":`220ms`,"motion-slow":`380ms`,"easing-out":`cubic-bezier(0.32, 0.72, 0, 1)`,"easing-in":`cubic-bezier(0.5, 0, 0.75, 0)`,"easing-in-out":`cubic-bezier(0.65, 0, 0.35, 1)`,"disabled-opacity":`0.5`,"disabled-cursor":DEFAULT_DISABLED_CURSOR,space:DEFAULT_SPACE},scales:{rounded:{md:`0.625rem`},shadow:{sm:`0 1px 2px 0 rgb(0 0 0 / 0.04)`,md:`0 2px 6px -1px rgb(0 0 0 / 0.06), 0 1px 3px -1px rgb(0 0 0 / 0.04)`,lg:`0 8px 16px -4px rgb(0 0 0 / 0.08), 0 3px 6px -2px rgb(0 0 0 / 0.04)`,xl:`0 16px 28px -8px rgb(0 0 0 / 0.1), 0 6px 12px -4px rgb(0 0 0 / 0.06)`,elevation:`0 4px 12px -2px rgb(0 0 0 / 0.06), 0 2px 4px -1px rgb(0 0 0 / 0.04)`}},components:{btn:{"font-weight":`500`},container:{bg:DEFAULT_CONTAINER_BG},input:{bg:DEFAULT_INPUT_BG,"top-label-font-weight":`600`},dialog:{"max-width":DEFAULT_DIALOG_MAX_WIDTH,"min-width":DEFAULT_DIALOG_MIN_WIDTH}},colors:{light:{surface:`oklch(1 0 0)`,foreground:`oklch(0.21 0.005 286)`,primary:`oklch(0.22 0.005 286)`,"primary-foreground":`oklch(1 0 0)`,secondary:`oklch(0.555 0.205 305)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.612 0.215 254)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.708 0.18 145)`,"success-foreground":`oklch(1 0 0)`,warning:`oklch(0.745 0.179 56)`,"warning-foreground":`oklch(0.21 0.005 286)`,destructive:`oklch(0.652 0.252 28)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.795 0.12 220)`,"info-foreground":`oklch(0.21 0.005 286)`,contrast:`oklch(0.207 0.002 286)`,"contrast-foreground":`oklch(1 0 0)`,muted:`oklch(0.6 0.005 286)`,divider:`oklch(0.917 0.005 286)`,overlay:`oklch(0.21 0.005 286)`,shadow:`oklch(0 0 0)`},dark:{surface:`oklch(0.207 0.002 286)`,foreground:`oklch(0.97 0 0)`,primary:`oklch(0.97 0 0)`,"primary-foreground":`oklch(0.207 0.002 286)`,secondary:`oklch(0.66 0.18 305)`,"secondary-foreground":`oklch(1 0 0)`,accent:`oklch(0.643 0.211 256)`,"accent-foreground":`oklch(1 0 0)`,success:`oklch(0.738 0.197 145)`,"success-foreground":`oklch(0.207 0.002 286)`,warning:`oklch(0.76 0.171 60)`,"warning-foreground":`oklch(0.207 0.002 286)`,destructive:`oklch(0.682 0.245 28)`,"destructive-foreground":`oklch(1 0 0)`,info:`oklch(0.802 0.115 220)`,"info-foreground":`oklch(0.207 0.002 286)`,contrast:`oklch(0.97 0 0)`,"contrast-foreground":`oklch(0.207 0.002 286)`,muted:`oklch(0.65 0.005 286)`,divider:`oklch(0.31 0.003 286)`,overlay:`oklch(0.16 0.002 286)`,shadow:`oklch(0 0 0)`}}};export{pristine};
@@ -119,7 +119,8 @@ export interface ThemeScales {
119
119
  }
120
120
  /**
121
121
  * Optional, per-mode background overrides for "container" surfaces — defaults
122
- * to `var(--maz-surface)` light, `var(--maz-surface-400)` dark.
122
+ * to `var(--maz-surface)` light, and a relative-color-syntax tint derived
123
+ * from `--maz-surface` (one OKLCh lightness tier above) for dark.
123
124
  */
124
125
  export interface ThemeComponentBg {
125
126
  light?: CSSColor;
@@ -154,6 +155,25 @@ export interface ThemeComponents {
154
155
  */
155
156
  'top-label-font-weight'?: string;
156
157
  };
158
+ /**
159
+ * Dialog sizing on tablet and up (`MazDialog`). Both values map to
160
+ * `--maz-dialog-max-width` / `--maz-dialog-min-width` and are consumed by
161
+ * the component through `var(--maz-dialog-max-width, 38rem)` /
162
+ * `var(--maz-dialog-min-width, 32rem)`. The `max-width` / `min-width` props
163
+ * on `MazDialog` still override the preset per instance.
164
+ */
165
+ dialog?: {
166
+ /**
167
+ * Max-width of the dialog. Defaults to `'38rem'` (anchored on a 14px
168
+ * `base-font-size`).
169
+ */
170
+ 'max-width'?: SizeUnit;
171
+ /**
172
+ * Min-width of the dialog. Defaults to `'32rem'` (anchored on a 14px
173
+ * `base-font-size`).
174
+ */
175
+ 'min-width'?: SizeUnit;
176
+ };
157
177
  }
158
178
  export interface ThemePresetOverrides {
159
179
  /**
@@ -204,6 +224,15 @@ export interface ThemePreset {
204
224
  export type ThemePresetName = 'mazUi' | 'ocean' | 'pristine' | 'obsidian' | 'nova' | 'maz-ui';
205
225
  export type ColorMode = 'light' | 'dark' | 'auto';
206
226
  export type ThemeMode = 'light' | 'dark' | 'both';
227
+ /**
228
+ * Dark mode strategy.
229
+ *
230
+ * - `'class'`: A `.dark` or `.light` class on `<html>` forces `color-scheme: only dark|only light`.
231
+ * `setColorMode()` adds/removes the class. With no class, `color-scheme: light dark` lets the
232
+ * browser follow the system preference.
233
+ * - `'media'`: Only `color-scheme: light dark` on `:root`. The browser follows `prefers-color-scheme`.
234
+ * `setColorMode()` updates the cookie but does NOT toggle any class — system preference always wins.
235
+ */
207
236
  export type DarkModeStrategy = 'class' | 'media';
208
237
  export type Strategy = 'runtime' | 'buildtime';
209
238
  interface BaseThemeConfig {
@@ -241,6 +270,14 @@ interface BaseThemeConfig {
241
270
  * @default 'dark'
242
271
  */
243
272
  darkClass?: string;
273
+ /**
274
+ * Light mode class
275
+ * @description Class added to the document root when light mode is explicitly forced.
276
+ * Mirror of `darkClass` — used when `colorMode === 'light'` to force `color-scheme: only light`,
277
+ * which prevents the browser from switching to dark via system preference.
278
+ * @default 'light'
279
+ */
280
+ lightClass?: string;
244
281
  /**
245
282
  * Dark mode handling
246
283
  * @description
@@ -335,6 +372,11 @@ export interface ThemeState {
335
372
  * @description The class added to the document root when dark mode is active
336
373
  */
337
374
  darkClass: string;
375
+ /**
376
+ * Light class
377
+ * @description The class added to the document root when light mode is explicitly forced.
378
+ */
379
+ lightClass: string;
338
380
  /**
339
381
  * Whether the active preset name is persisted in the `maz-preset` cookie.
340
382
  */
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,29 @@
1
+ export interface HSLChannels {
2
+ h: number;
3
+ s: number;
4
+ l: number;
5
+ }
6
+ export interface OklchChannels {
7
+ /** Lightness in [0, 1] */
8
+ l: number;
9
+ /** Chroma in [0, ~0.4] */
10
+ c: number;
11
+ /** Hue in degrees [0, 360) */
12
+ h: number;
13
+ }
14
+ export declare function parseColor(value: string): HSLChannels;
15
+ /**
16
+ * Parse any CSS color value and return its OKLCH channels.
17
+ *
18
+ * Accepts the same formats as `parseColor` plus native `oklch()` (parsed directly,
19
+ * no roundtrip through sRGB so wide-gamut chroma is preserved).
20
+ */
21
+ export declare function parseColorAsOklch(value: string): OklchChannels;
22
+ export declare function formatAsHSL(channels: HSLChannels): string;
23
+ export declare function formatAsOklch(channels: OklchChannels): string;
24
+ /**
25
+ * Convert any CSS color to a 6-digit `#rrggbb` hex string.
26
+ * Wide-gamut input is clipped to sRGB during conversion.
27
+ */
28
+ export declare function colorToHex(value: string): string;
29
+ //# sourceMappingURL=color-conversions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-conversions.d.ts","sourceRoot":"","sources":["../../src/utils/color-conversions.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,8BAA8B;IAC9B,CAAC,EAAE,MAAM,CAAA;CACV;AAUD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAqDrD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAmB9D;AAoJD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD"}
@@ -0,0 +1 @@
1
+ var HEX_PATTERN=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;var LEGACY_PATTERN=/^(-?\d+\.\d+|-?\d+)\s+(\d+\.\d+|\d+)%\s+(\d+\.\d+|\d+)%$/;var HSL_FN_PATTERN=/^hsla?\(\s*(-?\d+\.\d+|-?\d+)(?:\s*,\s*|\s+)(\d+\.\d+|\d+)%?(?:\s*,\s*|\s+)(\d+\.\d+|\d+)%?(?:\s*[,/][^)]*)?\)$/i;var RGB_FN_PATTERN=/^rgba?\(\s*(\d+\.\d+|\d+)(?:\s*,\s*|\s+)(\d+\.\d+|\d+)(?:\s*,\s*|\s+)(\d+\.\d+|\d+)(?:\s*[,/][^)]*)?\)$/i;var OKLCH_PATTERN=/^oklch\(\s*(\d+\.\d+|\d+)(%?)\s+(\d+\.\d+|\d+)\s+(-?\d+\.\d+|-?\d+)(?:\s*\/[^)]*)?\)$/i;function parseColor(value){let trimmed=value.trim();if(!trimmed)throw Error(`Invalid color: empty string`);let hslMatch=trimmed.match(HSL_FN_PATTERN);if(hslMatch)return{h:Number.parseFloat(hslMatch[1]),s:Number.parseFloat(hslMatch[2]),l:Number.parseFloat(hslMatch[3])};let rgbMatch=trimmed.match(RGB_FN_PATTERN);if(rgbMatch)return rgbToHsl(Number.parseFloat(rgbMatch[1]),Number.parseFloat(rgbMatch[2]),Number.parseFloat(rgbMatch[3]));let hexMatch=trimmed.match(HEX_PATTERN);if(hexMatch){let expanded=expandHex(hexMatch[1]);return rgbToHsl(Number.parseInt(expanded.slice(0,2),16),Number.parseInt(expanded.slice(2,4),16),Number.parseInt(expanded.slice(4,6),16))}let oklchMatch=trimmed.match(OKLCH_PATTERN);if(oklchMatch){let lRaw=Number.parseFloat(oklchMatch[1]);let{r,g,b}=oklchToRgb(oklchMatch[2]===`%`?lRaw/100:lRaw,Number.parseFloat(oklchMatch[3]),Number.parseFloat(oklchMatch[4]));return rgbToHsl(r,g,b)}let legacyMatch=trimmed.match(LEGACY_PATTERN);if(legacyMatch)return{h:Number.parseFloat(legacyMatch[1]),s:Number.parseFloat(legacyMatch[2]),l:Number.parseFloat(legacyMatch[3])};throw Error(`Invalid color format: ${value}`)}function parseColorAsOklch(value){let trimmed=value.trim();if(!trimmed)throw Error(`Invalid color: empty string`);let oklchMatch=trimmed.match(OKLCH_PATTERN);if(oklchMatch){let lRaw=Number.parseFloat(oklchMatch[1]);return{l:oklchMatch[2]===`%`?lRaw/100:lRaw,c:Number.parseFloat(oklchMatch[3]),h:Number.parseFloat(oklchMatch[4])}}let{h,s,l}=parseColor(trimmed);let{r,g,b}=hslToRgb(h,s,l);return rgbToOklch(r,g,b)}function expandHex(hex){return hex.length===3?hex.split(``).map(c=>c+c).join(``):hex.length===4?hex.slice(0,3).split(``).map(c=>c+c).join(``):hex.length===8?hex.slice(0,6):hex}function rgbToHsl(r,g,b){let rNorm=r/255;let gNorm=g/255;let bNorm=b/255;let max=Math.max(rNorm,gNorm,bNorm);let min=Math.min(rNorm,gNorm,bNorm);let l=(max+min)/2;let h=0;let s=0;if(max!==min){let d=max-min;s=l>.5?d/(2-max-min):d/(max+min),h=max===rNorm?((gNorm-bNorm)/d+(gNorm<bNorm?6:0))/6:max===gNorm?((bNorm-rNorm)/d+2)/6:((rNorm-gNorm)/d+4)/6}return{h:h*360,s:s*100,l:l*100}}function hslToRgb(h,s,l){let sNorm=Math.max(0,Math.min(100,s))/100;let lNorm=Math.max(0,Math.min(100,l))/100;let hNorm=(h%360+360)%360;let c=(1-Math.abs(2*lNorm-1))*sNorm;let x=c*(1-Math.abs(hNorm/60%2-1));let m=lNorm-c/2;let r1=0;let g1=0;let b1=0;return hNorm<60?(r1=c,g1=x):hNorm<120?(r1=x,g1=c):hNorm<180?(g1=c,b1=x):hNorm<240?(g1=x,b1=c):hNorm<300?(r1=x,b1=c):(r1=c,b1=x),{r:(r1+m)*255,g:(g1+m)*255,b:(b1+m)*255}}function sRGBToLinear(v){return v<=.04045?v/12.92:((v+.055)/1.055)**2.4}function linearToSRGB(v){return v<=.0031308?12.92*v:1.055*v**(1/2.4)-.055}function rgbToOklch(r,g,b){let rLin=sRGBToLinear(Math.max(0,Math.min(255,r))/255);let gLin=sRGBToLinear(Math.max(0,Math.min(255,g))/255);let bLin=sRGBToLinear(Math.max(0,Math.min(255,b))/255);let lLms=.4122214708*rLin+.5363325363*gLin+.0514459929*bLin;let mLms=.2119034982*rLin+.6806995451*gLin+.1073969566*bLin;let sLms=.0883024619*rLin+.2817188376*gLin+.6299787005*bLin;let lp=Math.cbrt(lLms);let mp=Math.cbrt(mLms);let sp=Math.cbrt(sLms);let L=.2104542553*lp+.793617785*mp-.0040720468*sp;let aLab=1.9779984951*lp-2.428592205*mp+.4505937099*sp;let bLab=.0259040371*lp+.7827717662*mp-.808675766*sp;let C=Math.sqrt(aLab*aLab+bLab*bLab);let H=Math.atan2(bLab,aLab)*180/Math.PI;return H<0&&(H+=360),{l:L,c:C,h:H}}function oklchToRgb(l,c,h){let hRad=h*Math.PI/180;let a=c*Math.cos(hRad);let bLab=c*Math.sin(hRad);let lp=l+.3963377774*a+.2158037573*bLab;let mp=l-.1055613458*a-.0638541728*bLab;let sp=l-.0894841775*a-1.291485548*bLab;let lc=lp**3;let mc=mp**3;let sc=sp**3;let rLinear=4.0767416621*lc-3.3077115913*mc+.2309699292*sc;let gLinear=-1.2684380046*lc+2.6097574011*mc-.3413193965*sc;let bLinear=-.0041960863*lc-.7034186147*mc+1.707614701*sc;return{r:Math.max(0,Math.min(1,linearToSRGB(rLinear)))*255,g:Math.max(0,Math.min(1,linearToSRGB(gLinear)))*255,b:Math.max(0,Math.min(1,linearToSRGB(bLinear)))*255}}function round1(n){return Math.round(n*10)/10}function roundTo(n,places){let factor=10**places;return Math.round(n*factor)/factor}function formatAsHSL(channels){return`hsl(${round1(channels.h)} ${round1(channels.s)}% ${round1(channels.l)}%)`}function formatAsOklch(channels){let l=roundTo(channels.l,4);let c=roundTo(channels.c,4);return`oklch(${l} ${c} ${c===0?0:roundTo(channels.h,2)})`}function colorToHex(value){let oklch=parseColorAsOklch(value);let{r,g,b}=oklchToRgb(oklch.l,oklch.c,oklch.h);let toHex=n=>{let v=Math.round(Math.max(0,Math.min(255,n))).toString(16);return v.length===1?`0${v}`:v};return`#${toHex(r)}${toHex(g)}${toHex(b)}`}export{colorToHex,formatAsHSL,formatAsOklch,parseColor,parseColorAsOklch};
@@ -1,31 +1,7 @@
1
- export interface HSLChannels {
2
- h: number;
3
- s: number;
4
- l: number;
5
- }
6
- export interface OklchChannels {
7
- /** Lightness in [0, 1] */
8
- l: number;
9
- /** Chroma in [0, ~0.4] */
10
- c: number;
11
- /** Hue in degrees [0, 360) */
12
- h: number;
13
- }
14
- export declare function parseColor(value: string): HSLChannels;
15
- /**
16
- * Parse any CSS color value and return its OKLCH channels.
17
- *
18
- * Accepts the same formats as `parseColor` plus native `oklch()` (parsed directly,
19
- * no roundtrip through sRGB so wide-gamut chroma is preserved).
20
- */
21
- export declare function parseColorAsOklch(value: string): OklchChannels;
22
- export declare function formatAsHSL(channels: HSLChannels): string;
23
- export declare function formatAsOklch(channels: OklchChannels): string;
1
+ export declare function isCompleteCSSColor(value: string): boolean;
24
2
  /**
25
- * Convert any CSS color to a 6-digit `#rrggbb` hex string.
26
- * Wide-gamut input is clipped to sRGB during conversion.
3
+ * Normalize an authored color value. Already-complete CSS colors pass through
4
+ * unchanged; the legacy raw `"H S% L%"` form gets wrapped in `hsl(...)`.
27
5
  */
28
- export declare function colorToHex(value: string): string;
29
- export declare function isCompleteCSSColor(value: string): boolean;
30
6
  export declare function normalizeColor(value: string): string;
31
7
  //# sourceMappingURL=color-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"color-parser.d.ts","sourceRoot":"","sources":["../../src/utils/color-parser.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;IACT,CAAC,EAAE,MAAM,CAAA;CACV;AAED,MAAM,WAAW,aAAa;IAC5B,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,0BAA0B;IAC1B,CAAC,EAAE,MAAM,CAAA;IACT,8BAA8B;IAC9B,CAAC,EAAE,MAAM,CAAA;CACV;AAcD,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAqDrD;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAmB9D;AAoJD,wBAAgB,WAAW,CAAC,QAAQ,EAAE,WAAW,GAAG,MAAM,CAEzD;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAM7D;AAED;;;GAGG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAQhD;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAMpD"}
1
+ {"version":3,"file":"color-parser.d.ts","sourceRoot":"","sources":["../../src/utils/color-parser.ts"],"names":[],"mappings":"AAMA,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAOzD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CASpD"}
@@ -1 +1 @@
1
- var HEX_PATTERN=/^#([0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;var LEGACY_PATTERN=/^(-?\d+\.\d+|-?\d+)\s+(\d+\.\d+|\d+)%\s+(\d+\.\d+|\d+)%$/;var HSL_FN_PATTERN=/^hsla?\(\s*(-?\d+\.\d+|-?\d+)(?:\s*,\s*|\s+)(\d+\.\d+|\d+)%?(?:\s*,\s*|\s+)(\d+\.\d+|\d+)%?(?:\s*[,/][^)]*)?\)$/i;var RGB_FN_PATTERN=/^rgba?\(\s*(\d+\.\d+|\d+)(?:\s*,\s*|\s+)(\d+\.\d+|\d+)(?:\s*,\s*|\s+)(\d+\.\d+|\d+)(?:\s*[,/][^)]*)?\)$/i;var OKLCH_PATTERN=/^oklch\(\s*(\d+\.\d+|\d+)(%?)\s+(\d+\.\d+|\d+)\s+(-?\d+\.\d+|-?\d+)(?:\s*\/[^)]*)?\)$/i;var COMPLETE_COLOR_PATTERN=/^(?:hsla?|rgba?|oklch|oklab|lab|lch|color)\s*\(/i;var HEX_COLOR_PATTERN=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;var CSS_VAR_PATTERN=/^var\(\s*--[\w-]+/i;function parseColor(value){let trimmed=value.trim();if(!trimmed)throw Error(`Invalid color: empty string`);let hslMatch=trimmed.match(HSL_FN_PATTERN);if(hslMatch)return{h:Number.parseFloat(hslMatch[1]),s:Number.parseFloat(hslMatch[2]),l:Number.parseFloat(hslMatch[3])};let rgbMatch=trimmed.match(RGB_FN_PATTERN);if(rgbMatch)return rgbToHsl(Number.parseFloat(rgbMatch[1]),Number.parseFloat(rgbMatch[2]),Number.parseFloat(rgbMatch[3]));let hexMatch=trimmed.match(HEX_PATTERN);if(hexMatch){let expanded=expandHex(hexMatch[1]);return rgbToHsl(Number.parseInt(expanded.slice(0,2),16),Number.parseInt(expanded.slice(2,4),16),Number.parseInt(expanded.slice(4,6),16))}let oklchMatch=trimmed.match(OKLCH_PATTERN);if(oklchMatch){let lRaw=Number.parseFloat(oklchMatch[1]);let{r,g,b}=oklchToRgb(oklchMatch[2]===`%`?lRaw/100:lRaw,Number.parseFloat(oklchMatch[3]),Number.parseFloat(oklchMatch[4]));return rgbToHsl(r,g,b)}let legacyMatch=trimmed.match(LEGACY_PATTERN);if(legacyMatch)return{h:Number.parseFloat(legacyMatch[1]),s:Number.parseFloat(legacyMatch[2]),l:Number.parseFloat(legacyMatch[3])};throw Error(`Invalid color format: ${value}`)}function parseColorAsOklch(value){let trimmed=value.trim();if(!trimmed)throw Error(`Invalid color: empty string`);let oklchMatch=trimmed.match(OKLCH_PATTERN);if(oklchMatch){let lRaw=Number.parseFloat(oklchMatch[1]);return{l:oklchMatch[2]===`%`?lRaw/100:lRaw,c:Number.parseFloat(oklchMatch[3]),h:Number.parseFloat(oklchMatch[4])}}let{h,s,l}=parseColor(trimmed);let{r,g,b}=hslToRgb(h,s,l);return rgbToOklch(r,g,b)}function expandHex(hex){return hex.length===3?hex.split(``).map(c=>c+c).join(``):hex.length===4?hex.slice(0,3).split(``).map(c=>c+c).join(``):hex.length===8?hex.slice(0,6):hex}function rgbToHsl(r,g,b){let rNorm=r/255;let gNorm=g/255;let bNorm=b/255;let max=Math.max(rNorm,gNorm,bNorm);let min=Math.min(rNorm,gNorm,bNorm);let l=(max+min)/2;let h=0;let s=0;if(max!==min){let d=max-min;s=l>.5?d/(2-max-min):d/(max+min),h=max===rNorm?((gNorm-bNorm)/d+(gNorm<bNorm?6:0))/6:max===gNorm?((bNorm-rNorm)/d+2)/6:((rNorm-gNorm)/d+4)/6}return{h:h*360,s:s*100,l:l*100}}function hslToRgb(h,s,l){let sNorm=Math.max(0,Math.min(100,s))/100;let lNorm=Math.max(0,Math.min(100,l))/100;let hNorm=(h%360+360)%360;let c=(1-Math.abs(2*lNorm-1))*sNorm;let x=c*(1-Math.abs(hNorm/60%2-1));let m=lNorm-c/2;let r1=0;let g1=0;let b1=0;return hNorm<60?(r1=c,g1=x):hNorm<120?(r1=x,g1=c):hNorm<180?(g1=c,b1=x):hNorm<240?(g1=x,b1=c):hNorm<300?(r1=x,b1=c):(r1=c,b1=x),{r:(r1+m)*255,g:(g1+m)*255,b:(b1+m)*255}}function sRGBToLinear(v){return v<=.04045?v/12.92:((v+.055)/1.055)**2.4}function linearToSRGB(v){return v<=.0031308?12.92*v:1.055*v**(1/2.4)-.055}function rgbToOklch(r,g,b){let rLin=sRGBToLinear(Math.max(0,Math.min(255,r))/255);let gLin=sRGBToLinear(Math.max(0,Math.min(255,g))/255);let bLin=sRGBToLinear(Math.max(0,Math.min(255,b))/255);let lLms=.4122214708*rLin+.5363325363*gLin+.0514459929*bLin;let mLms=.2119034982*rLin+.6806995451*gLin+.1073969566*bLin;let sLms=.0883024619*rLin+.2817188376*gLin+.6299787005*bLin;let lp=Math.cbrt(lLms);let mp=Math.cbrt(mLms);let sp=Math.cbrt(sLms);let L=.2104542553*lp+.793617785*mp-.0040720468*sp;let aLab=1.9779984951*lp-2.428592205*mp+.4505937099*sp;let bLab=.0259040371*lp+.7827717662*mp-.808675766*sp;let C=Math.sqrt(aLab*aLab+bLab*bLab);let H=Math.atan2(bLab,aLab)*180/Math.PI;return H<0&&(H+=360),{l:L,c:C,h:H}}function oklchToRgb(l,c,h){let hRad=h*Math.PI/180;let a=c*Math.cos(hRad);let bLab=c*Math.sin(hRad);let lp=l+.3963377774*a+.2158037573*bLab;let mp=l-.1055613458*a-.0638541728*bLab;let sp=l-.0894841775*a-1.291485548*bLab;let lc=lp**3;let mc=mp**3;let sc=sp**3;let rLinear=4.0767416621*lc-3.3077115913*mc+.2309699292*sc;let gLinear=-1.2684380046*lc+2.6097574011*mc-.3413193965*sc;let bLinear=-.0041960863*lc-.7034186147*mc+1.707614701*sc;return{r:Math.max(0,Math.min(1,linearToSRGB(rLinear)))*255,g:Math.max(0,Math.min(1,linearToSRGB(gLinear)))*255,b:Math.max(0,Math.min(1,linearToSRGB(bLinear)))*255}}function round1(n){return Math.round(n*10)/10}function roundTo(n,places){let factor=10**places;return Math.round(n*factor)/factor}function formatAsHSL(channels){return`hsl(${round1(channels.h)} ${round1(channels.s)}% ${round1(channels.l)}%)`}function formatAsOklch(channels){let l=roundTo(channels.l,4);let c=roundTo(channels.c,4);return`oklch(${l} ${c} ${c===0?0:roundTo(channels.h,2)})`}function colorToHex(value){let oklch=parseColorAsOklch(value);let{r,g,b}=oklchToRgb(oklch.l,oklch.c,oklch.h);let toHex=n=>{let v=Math.round(Math.max(0,Math.min(255,n))).toString(16);return v.length===1?`0${v}`:v};return`#${toHex(r)}${toHex(g)}${toHex(b)}`}function isCompleteCSSColor(value){let trimmed=value.trim();return COMPLETE_COLOR_PATTERN.test(trimmed)||HEX_COLOR_PATTERN.test(trimmed)||CSS_VAR_PATTERN.test(trimmed)}function normalizeColor(value){return isCompleteCSSColor(value)?value:formatAsHSL(parseColor(value))}export{colorToHex,formatAsHSL,formatAsOklch,isCompleteCSSColor,normalizeColor,parseColor,parseColorAsOklch};
1
+ var COMPLETE_COLOR_PATTERN=/^(?:hsla?|rgba?|oklch|oklab|lab|lch|color)\s*\(/i;var HEX_COLOR_PATTERN=/^#(?:[0-9a-f]{3}|[0-9a-f]{4}|[0-9a-f]{6}|[0-9a-f]{8})$/i;var CSS_VAR_PATTERN=/^var\(\s*--[\w-]+/i;var LEGACY_PATTERN=/^(-?\d+\.\d+|-?\d+)\s+(\d+\.\d+|\d+)%\s+(\d+\.\d+|\d+)%$/;function isCompleteCSSColor(value){let trimmed=value.trim();return COMPLETE_COLOR_PATTERN.test(trimmed)||HEX_COLOR_PATTERN.test(trimmed)||CSS_VAR_PATTERN.test(trimmed)}function normalizeColor(value){if(isCompleteCSSColor(value))return value;let legacy=value.trim().match(LEGACY_PATTERN);if(legacy)return`hsl(${legacy[1]} ${legacy[2]}% ${legacy[3]}%)`;throw Error(`Invalid color format: ${value}`)}export{isCompleteCSSColor,normalizeColor};
@@ -0,0 +1,15 @@
1
+ import { ColorMode, ThemeMode } from '../types';
2
+ /**
3
+ * Resolve `<meta name="color-scheme" content>` so the browser applies the
4
+ * correct canvas before CSS loads (FART prevention).
5
+ *
6
+ * - mode='light' | 'dark' → that mode
7
+ * - mode='both' → matches colorMode ('auto' falls back to 'light dark')
8
+ */
9
+ export declare function resolveColorSchemeContent(mode: ThemeMode, colorMode: ColorMode): string;
10
+ /**
11
+ * Inject (or update) `<meta name="color-scheme" content="...">` in the head.
12
+ * Safe to call multiple times — updates the existing tag when present.
13
+ */
14
+ export declare function injectColorSchemeMeta(content: string): void;
15
+ //# sourceMappingURL=color-scheme-meta.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"color-scheme-meta.d.ts","sourceRoot":"","sources":["../../src/utils/color-scheme-meta.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGpD;;;;;;GAMG;AACH,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,SAAS,GAAG,MAAM,CAIvF;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAU3D"}
@@ -0,0 +1 @@
1
+ import{isServer}from"@maz-ui/utils/helpers/isServer";function resolveColorSchemeContent(mode,colorMode){return mode===`both`?colorMode===`auto`?`light dark`:colorMode:mode}function injectColorSchemeMeta(content){if(isServer())return;let meta=document.head.querySelector(`meta[name="color-scheme"]`);meta||(meta=document.createElement(`meta`),meta.setAttribute(`name`,`color-scheme`),document.head.appendChild(meta)),meta.setAttribute(`content`,content)}export{injectColorSchemeMeta,resolveColorSchemeContent};
@@ -1,9 +1,19 @@
1
- export declare function getCookie(key: string): string | null;
2
- export declare function setCookie(key: string, value: string): void;
3
- /** Persisted preset name from `maz-preset` cookie, or `null`. */
4
- export declare function getSavedPresetName(): string | null;
5
- /** Write `name` to the `maz-preset` cookie, no-op if value already matches. */
6
- export declare function saveResolvedPresetName(name: string): void;
7
- /** Drop the `maz-preset` cookie (saved name no longer resolves). */
1
+ export interface SavedPreset {
2
+ /** Identity of the preset declared in the app config (the "base"). */
3
+ base: string;
4
+ /** Currently active preset name (equals `base` unless switched at runtime). */
5
+ active: string;
6
+ }
7
+ /**
8
+ * Parse the `maz-preset` cookie. Format is `"<base>:<active>"` where `base` is
9
+ * the configured preset identity, so a cookie written by another app or a
10
+ * previous config on the same host is detectable as foreign. A legacy
11
+ * plain-name value (no `:`) is treated as unscoped and returns `null` so it
12
+ * cannot hijack the configured preset.
13
+ */
14
+ export declare function getSavedPreset(): SavedPreset | null;
15
+ /** Serialize `base`/`active` into the `maz-preset` cookie, no-op if unchanged. */
16
+ export declare function savePreset(base: string, active: string): void;
17
+ /** Drop the `maz-preset` cookie (saved preset no longer resolves). */
8
18
  export declare function clearSavedPresetName(): void;
9
19
  //# sourceMappingURL=cookie-storage.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"cookie-storage.d.ts","sourceRoot":"","sources":["../../src/utils/cookie-storage.ts"],"names":[],"mappings":"AAIA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1D;AAED,iEAAiE;AACjE,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,IAAI,CAElD;AAED,+EAA+E;AAC/E,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAIzD;AAED,oEAAoE;AACpE,wBAAgB,oBAAoB,IAAI,IAAI,CAI3C"}
1
+ {"version":3,"file":"cookie-storage.d.ts","sourceRoot":"","sources":["../../src/utils/cookie-storage.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,WAAW;IAC1B,sEAAsE;IACtE,IAAI,EAAE,MAAM,CAAA;IACZ,+EAA+E;IAC/E,MAAM,EAAE,MAAM,CAAA;CACf;AAED;;;;;;GAMG;AACH,wBAAgB,cAAc,IAAI,WAAW,GAAG,IAAI,CAenD;AAED,kFAAkF;AAClF,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAS7D;AAED,sEAAsE;AACtE,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C"}
@@ -1 +1 @@
1
- import{isServer}from"@maz-ui/utils/helpers/isServer";var PRESET_COOKIE=`maz-preset`;function getCookie(key){if(isServer())return null;let cookie=document.cookie.split(`;`).find(c=>c.trim().startsWith(`${key}=`));return cookie?decodeURIComponent(cookie.split(`=`)[1]):null}function setCookie(key,value){isServer()||(document.cookie=`${key}=${encodeURIComponent(value)}; path=/; max-age=${3600*24*365}; SameSite=Lax`)}function getSavedPresetName(){return getCookie(PRESET_COOKIE)}function saveResolvedPresetName(name){!name||getCookie(PRESET_COOKIE)===name||setCookie(PRESET_COOKIE,name)}function clearSavedPresetName(){isServer()||(document.cookie=`${PRESET_COOKIE}=; path=/; max-age=0; SameSite=Lax`)}export{clearSavedPresetName,getCookie,getSavedPresetName,saveResolvedPresetName,setCookie};
1
+ import{deleteCookie,getCookie,setCookie}from"@maz-ui/utils/helpers/cookie";var PRESET_COOKIE=`maz-preset`;function getSavedPreset(){let raw=getCookie(PRESET_COOKIE);if(!raw)return null;let separatorIndex=raw.indexOf(`:`);if(separatorIndex===-1)return null;let base=raw.slice(0,separatorIndex);let active=raw.slice(separatorIndex+1);return!base||!active?null:{base,active}}function savePreset(base,active){if(!base||!active)return;let value=`${base}:${active}`;getCookie(PRESET_COOKIE)!==value&&setCookie(PRESET_COOKIE,value)}function clearSavedPresetName(){deleteCookie(PRESET_COOKIE)}export{clearSavedPresetName,getSavedPreset,savePreset};
@@ -1,15 +1,17 @@
1
- import { DarkModeStrategy, ThemeMode, ThemePreset } from '../types';
1
+ import { ThemeMode, ThemePreset } from '../types';
2
2
  export interface CSSOptions {
3
3
  /** Theme mode to generate */
4
4
  mode: ThemeMode;
5
- /** Dark mode selector: 'class' (.dark) | 'media' (@media) */
6
- darkSelectorStrategy: DarkModeStrategy;
5
+ /** Dark mode selector: 'class' (.dark/.light) | 'media' (system pref only) */
6
+ darkSelectorStrategy: 'class' | 'media';
7
7
  /** CSS variables prefix */
8
8
  prefix?: string;
9
9
  /** Dark class name */
10
10
  darkClass: string;
11
+ /** Light class name (default 'light') */
12
+ lightClass?: string;
11
13
  }
12
- export declare function generateCSS(preset: ThemePreset, options?: CSSOptions): string;
14
+ export declare function generateCSS(preset: ThemePreset, options: CSSOptions): string;
13
15
  export declare const CSS_ID = "maz-theme-css";
14
16
  export declare function injectCSS(id: string | undefined, css: string): void;
15
17
  export declare function removeCSS(id?: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"css-generator.d.ts","sourceRoot":"","sources":["../../src/utils/css-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAiD,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAMvH,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,6DAA6D;IAC7D,oBAAoB,EAAE,gBAAgB,CAAA;IACtC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAA;CAClB;AAID,wBAAgB,WAAW,CACzB,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,UAIR,GACA,MAAM,CAwCR;AAoID,eAAO,MAAM,MAAM,kBAAkB,CAAA;AAErC,wBAAgB,SAAS,CAAC,EAAE,oBAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CA2BxD;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAK3C"}
1
+ {"version":3,"file":"css-generator.d.ts","sourceRoot":"","sources":["../../src/utils/css-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAiD,SAAS,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAKrG,MAAM,WAAW,UAAU;IACzB,6BAA6B;IAC7B,IAAI,EAAE,SAAS,CAAA;IACf,8EAA8E;IAC9E,oBAAoB,EAAE,OAAO,GAAG,OAAO,CAAA;IACvC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,sBAAsB;IACtB,SAAS,EAAE,MAAM,CAAA;IACjB,yCAAyC;IACzC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAID,wBAAgB,WAAW,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,EAAE,UAAU,GAAG,MAAM,CA6B5E;AA+FD,eAAO,MAAM,MAAM,kBAAkB,CAAA;AAErC,wBAAgB,SAAS,CAAC,EAAE,oBAAS,EAAE,GAAG,EAAE,MAAM,GAAG,IAAI,CAiBxD;AAED,wBAAgB,SAAS,CAAC,EAAE,SAAS,GAAG,IAAI,CAI3C"}
@@ -1,4 +1,2 @@
1
- import{normalizeColor}from"./color-parser.js";import{generateColorScale}from"./color-utils.js";import{DEFAULT_ROUNDED_RATIOS}from"../presets/_defaults.js";import{isServer}from"@maz-ui/utils/helpers/isServer";var scaleColors=[`primary`,`secondary`,`accent`,`destructive`,`success`,`warning`,`info`,`contrast`,`surface`,`foreground`,`divider`,`muted`,`overlay`,`shadow`];function generateCSS(preset,options={mode:`both`,darkSelectorStrategy:`class`,darkClass:`dark`}){let{mode,darkSelectorStrategy,prefix=`maz`,darkClass=`dark`}=options;let css=`@layer theme {
2
- `;let rootSelector=`:root`;let darkClassSelector=`.${darkClass}`;return(mode===`light`||mode===`both`)&&(css+=generateVariablesBlock({selector:rootSelector,colors:preset.colors.light,foundation:preset.foundation,prefix,preset,mode:`light`})),(mode===`dark`||mode===`both`)&&(css+=generateVariablesBlock({selector:darkSelectorStrategy===`media`?rootSelector:darkClassSelector,mediaQuery:darkSelectorStrategy===`media`?`@media (prefers-color-scheme: dark)`:void 0,colors:preset.colors.dark,foundation:mode===`dark`?preset.foundation:void 0,prefix,preset,isDark:!0,mode:`dark`})),css+=`}
3
- `,css}function generateVariablesBlock({selector,mediaQuery,colors,foundation,prefix,preset,isDark=!1,mode=`light`}){let variables=[];colors&&Object.entries(colors).forEach(([key,value])=>{value&&variables.push(` --${prefix}-${key}: ${normalizeColor(value)};`)}),foundation&&Object.entries(foundation).forEach(([key,value])=>{value&&variables.push(` --${prefix}-${key}: ${value};`)}),!isDark&&preset?.scales&&variables.push(...generateScaleVariables(preset.scales,prefix)),preset?.components&&variables.push(...generateComponentVariables(preset.components,mode,prefix)),preset&&variables.push(...generateAllColorScales(isDark?preset.colors.dark:preset.colors.light,prefix));let content=variables.join(`
4
- `);return mediaQuery?`\n ${mediaQuery} {\n ${selector} {\n${content.replace(/^/gm,` `)}\n }\n }\n`:`\n ${selector} {\n${content}\n }\n`}var ROUNDED_KEYS=[`xs`,`sm`,`md`,`lg`,`xl`,`2xl`,`3xl`];function generateScaleVariables(scales,prefix){let lines=[];for(let key of ROUNDED_KEYS){let value=scales.rounded?.[key];value?lines.push(` --${prefix}-rounded-${key}: ${value};`):key!==`md`&&lines.push(` --${prefix}-rounded-${key}: calc(var(--${prefix}-rounded-md) * ${DEFAULT_ROUNDED_RATIOS[key]});`)}return Object.entries(scales.shadow??{}).forEach(([key,value])=>{value&&lines.push(` --${prefix}-shadow-style-${key}: ${value};`)}),lines}function generateComponentVariables(components,mode,prefix){let lines=[];components.btn?.[`font-weight`]&&lines.push(` --${prefix}-btn-font-weight: ${components.btn[`font-weight`]};`);let containerBg=components.container?.bg?.[mode];containerBg&&lines.push(` --${prefix}-container-bg: ${normalizeColor(containerBg)};`);let inputBg=components.input?.bg?.[mode];inputBg&&lines.push(` --${prefix}-input-bg: ${normalizeColor(inputBg)};`);let inputTopLabelFontWeight=components.input?.[`top-label-font-weight`];return inputTopLabelFontWeight&&lines.push(` --${prefix}-input-top-label-font-weight: ${inputTopLabelFontWeight};`),lines}function generateAllColorScales(colors,prefix){let colorScales=[];return scaleColors.forEach(colorName=>{let baseColor=colors[colorName];if(baseColor){let scale=generateColorScale(baseColor);Object.entries(scale).forEach(([scaleKey,scaleValue])=>{colorScales.push(` --${prefix}-${colorName}-${scaleKey}: ${scaleValue};`)})}}),colorScales}var CSS_ID=`maz-theme-css`;function injectCSS(id=CSS_ID,css){if(isServer())return;let styleElements=[...document.querySelectorAll(`#${id}`)];if(styleElements.length===0){let element=document.createElement(`style`);element.id=id,element.textContent=css,document.head.appendChild(element);return}if(styleElements.length===1){styleElements[0].textContent=css;return}let lastElement=styleElements.at(-1);for(let i=0;i<styleElements.length-1;i++)styleElements[i].remove();lastElement&&(lastElement.textContent=css)}function removeCSS(id=CSS_ID){isServer()||document.querySelectorAll(`#${id}`).forEach(el=>el.remove())}export{CSS_ID,generateCSS,injectCSS,removeCSS};
1
+ import{normalizeColor}from"./color-parser.js";import{DEFAULT_ROUNDED_RATIOS}from"../presets/_defaults.js";import{isServer}from"@maz-ui/utils/helpers/isServer";var ROUNDED_KEYS=[`xs`,`sm`,`md`,`lg`,`xl`,`2xl`,`3xl`];function generateCSS(preset,options){let prefix=options.prefix??`maz`;let lightClass=options.lightClass??`light`;let{mode}=options;let lines=[`@layer theme {`,` :root {`];let colorScheme=mode===`both`?options.darkSelectorStrategy===`class`?`light`:`light dark`:`only ${mode}`;return lines.push(` color-scheme: ${colorScheme};`),appendFoundation(lines,preset.foundation,prefix),appendScales(lines,preset.scales,prefix),appendComponents(lines,preset,prefix,mode),appendColorVariables(lines,preset.colors,mode,prefix),lines.push(` }`),options.darkSelectorStrategy===`class`&&mode===`both`&&(lines.push(` .${options.darkClass} { color-scheme: only dark; }`),lines.push(` .${lightClass} { color-scheme: only light; }`)),lines.push(`}`),lines.join(`
2
+ `)}function appendColorVariables(lines,colors,mode,prefix){for(let[key,lightValue]of Object.entries(colors.light))if(lightValue){if(mode===`both`){let dark=colors.dark[key]??lightValue;lines.push(` --${prefix}-${key}: light-dark(${normalizeColor(lightValue)}, ${normalizeColor(dark)});`)}else lines.push(` --${prefix}-${key}: ${normalizeColor(mode===`dark`?colors.dark[key]??lightValue:lightValue)};`)}}function appendFoundation(lines,foundation,prefix){if(foundation)for(let[key,value]of Object.entries(foundation))value&&lines.push(` --${prefix}-${key}: ${value};`)}function appendScales(lines,scales,prefix){if(scales){for(let key of ROUNDED_KEYS){let value=scales.rounded?.[key];value?lines.push(` --${prefix}-rounded-${key}: ${value};`):key!==`md`&&lines.push(` --${prefix}-rounded-${key}: calc(var(--${prefix}-rounded-md) * ${DEFAULT_ROUNDED_RATIOS[key]});`)}for(let[key,value]of Object.entries(scales.shadow??{}))value&&lines.push(` --${prefix}-shadow-style-${key}: ${value};`)}}function appendComponents(lines,preset,prefix,mode){let components=preset.components;if(!components)return;components.btn?.[`font-weight`]&&lines.push(` --${prefix}-btn-font-weight: ${components.btn[`font-weight`]};`),components.dialog?.[`max-width`]&&lines.push(` --${prefix}-dialog-max-width: ${components.dialog[`max-width`]};`),components.dialog?.[`min-width`]&&lines.push(` --${prefix}-dialog-min-width: ${components.dialog[`min-width`]};`);let emitBg=(componentKey,cssKey)=>{let bg=components[componentKey]?.bg;if(bg){if(mode===`both`){let fallback=bg.light??bg.dark;if(!fallback)return;let light=normalizeColor(bg.light??fallback);let dark=normalizeColor(bg.dark??fallback);let value=light===dark?light:`light-dark(${light}, ${dark})`;lines.push(` --${prefix}-${cssKey}: ${value};`)}else bg[mode]&&lines.push(` --${prefix}-${cssKey}: ${normalizeColor(bg[mode])};`)}};emitBg(`container`,`container-bg`),emitBg(`input`,`input-bg`);let inputTopLabelFw=components.input?.[`top-label-font-weight`];inputTopLabelFw&&lines.push(` --${prefix}-input-top-label-font-weight: ${inputTopLabelFw};`)}var CSS_ID=`maz-theme-css`;function injectCSS(id=CSS_ID,css){if(isServer())return;let styleElements=document.querySelectorAll(`#${id}`);let target=styleElements[styleElements.length-1];for(let i=0;i<styleElements.length-1;i++)styleElements[i].remove();target||(target=document.createElement(`style`),target.id=id,document.head.appendChild(target)),target.textContent=css}function removeCSS(id=CSS_ID){isServer()||document.querySelectorAll(`#${id}`).forEach(el=>el.remove())}export{CSS_ID,generateCSS,injectCSS,removeCSS};
@@ -1 +1 @@
1
- import{getCookie,setCookie}from"./cookie-storage.js";import{isServer}from"@maz-ui/utils/helpers/isServer";function getSavedColorMode(){let savedMode=getCookie(`maz-color-mode`);if(savedMode&&[`light`,`dark`,`auto`].includes(savedMode))return savedMode}function getColorMode(colorMode){return colorMode&&[`light`,`dark`].includes(colorMode)?colorMode:getSavedColorMode()||`auto`}function getSystemColorMode(){return isServer()||typeof globalThis.matchMedia!=`function`?`light`:globalThis.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function saveResolvedColorMode(resolvedMode){setCookie(`maz-resolved-color-mode`,resolvedMode)}function getSavedResolvedColorMode(){let saved=getCookie(`maz-resolved-color-mode`);if(saved&&[`light`,`dark`].includes(saved))return saved}export{getColorMode,getSavedColorMode,getSavedResolvedColorMode,getSystemColorMode,saveResolvedColorMode};
1
+ import{isServer}from"@maz-ui/utils/helpers/isServer";import{getCookie,setCookie}from"@maz-ui/utils/helpers/cookie";function getSavedColorMode(){let savedMode=getCookie(`maz-color-mode`);if(savedMode&&[`light`,`dark`,`auto`].includes(savedMode))return savedMode}function getColorMode(colorMode){return colorMode&&[`light`,`dark`].includes(colorMode)?colorMode:getSavedColorMode()||`auto`}function getSystemColorMode(){return isServer()||typeof globalThis.matchMedia!=`function`?`light`:globalThis.matchMedia(`(prefers-color-scheme: dark)`).matches?`dark`:`light`}function saveResolvedColorMode(resolvedMode){setCookie(`maz-resolved-color-mode`,resolvedMode)}function getSavedResolvedColorMode(){let saved=getCookie(`maz-resolved-color-mode`);if(saved&&[`light`,`dark`].includes(saved))return saved}export{getColorMode,getSavedColorMode,getSavedResolvedColorMode,getSystemColorMode,saveResolvedColorMode};
@@ -1,5 +1,6 @@
1
+ export * from './color-conversions';
1
2
  export * from './color-parser';
2
- export * from './color-utils';
3
+ export * from './color-scheme-meta';
3
4
  export * from './cookie-storage';
4
5
  export * from './css-generator';
5
6
  export * from './get-preset';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,qBAAqB,CAAA;AACnC,cAAc,gBAAgB,CAAA;AAC9B,cAAc,qBAAqB,CAAA;AACnC,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,UAAU,CAAA;AACxB,cAAc,oBAAoB,CAAA;AAClC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,iBAAiB,CAAA;AAC/B,cAAc,eAAe,CAAA;AAC7B,cAAc,yBAAyB,CAAA"}
@@ -1 +1 @@
1
- import{colorToHex,formatAsHSL,formatAsOklch,isCompleteCSSColor,normalizeColor,parseColor,parseColorAsOklch}from"./color-parser.js";import{adjustColorLightness,generateColorScale,getContrastColor,parseHSL}from"./color-utils.js";import{clearSavedPresetName,getCookie,getSavedPresetName,saveResolvedPresetName,setCookie}from"./cookie-storage.js";import{CSS_ID,generateCSS,injectCSS,removeCSS}from"./css-generator.js";import{getPreset,isPresetObject}from"./get-preset.js";import{injectThemeState}from"./inject.js";import{injectThemeCSS}from"./inject-theme-css.js";import{noTransition}from"./no-transition.js";import{deepMerge,mergePresets}from"./preset-merger.js";import{updateDocumentClass}from"./update-document-class.js";import{defaultOptions,setupTheme}from"./setup-theme.js";export{CSS_ID,adjustColorLightness,clearSavedPresetName,colorToHex,deepMerge,defaultOptions,formatAsHSL,formatAsOklch,generateCSS,generateColorScale,getContrastColor,getCookie,getPreset,getSavedPresetName,injectCSS,injectThemeCSS,injectThemeState,isCompleteCSSColor,isPresetObject,mergePresets,noTransition,normalizeColor,parseColor,parseColorAsOklch,parseHSL,removeCSS,saveResolvedPresetName,setCookie,setupTheme,updateDocumentClass};
1
+ import{colorToHex,formatAsHSL,formatAsOklch,parseColor,parseColorAsOklch}from"./color-conversions.js";import{isCompleteCSSColor,normalizeColor}from"./color-parser.js";import{injectColorSchemeMeta,resolveColorSchemeContent}from"./color-scheme-meta.js";import{clearSavedPresetName,getSavedPreset,savePreset}from"./cookie-storage.js";import{CSS_ID,generateCSS,injectCSS,removeCSS}from"./css-generator.js";import{getPreset,isPresetObject}from"./get-preset.js";import{injectThemeState}from"./inject.js";import{injectThemeCSS}from"./inject-theme-css.js";import{noTransition}from"./no-transition.js";import{deepMerge,mergePresets}from"./preset-merger.js";import{updateDocumentClass}from"./update-document-class.js";import{defaultOptions,setupTheme}from"./setup-theme.js";export{CSS_ID,clearSavedPresetName,colorToHex,deepMerge,defaultOptions,formatAsHSL,formatAsOklch,generateCSS,getPreset,getSavedPreset,injectCSS,injectColorSchemeMeta,injectThemeCSS,injectThemeState,isCompleteCSSColor,isPresetObject,mergePresets,noTransition,normalizeColor,parseColor,parseColorAsOklch,removeCSS,resolveColorSchemeContent,savePreset,setupTheme,updateDocumentClass};
@@ -1 +1 @@
1
- {"version":3,"file":"inject-theme-css.d.ts","sourceRoot":"","sources":["../../src/utils/inject-theme-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAUxF"}
1
+ {"version":3,"file":"inject-theme-css.d.ts","sourceRoot":"","sources":["../../src/utils/inject-theme-css.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,wBAAgB,cAAc,CAC5B,WAAW,EAAE,WAAW,EACxB,MAAM,EAAE,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC,GAAG,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,QAWxF"}
@@ -1 +1 @@
1
- import{CSS_ID,generateCSS,injectCSS}from"./css-generator.js";function injectThemeCSS(finalPreset,config){typeof document>`u`||config.strategy===`buildtime`||injectCSS(CSS_ID,generateCSS(finalPreset,{mode:config.mode,darkSelectorStrategy:config.darkModeStrategy,darkClass:config.darkClass}))}export{injectThemeCSS};
1
+ import{CSS_ID,generateCSS,injectCSS}from"./css-generator.js";function injectThemeCSS(finalPreset,config){typeof document<`u`&&config.strategy!==`buildtime`&&injectCSS(CSS_ID,generateCSS(finalPreset,{mode:config.mode,darkSelectorStrategy:config.darkModeStrategy,darkClass:config.darkClass,lightClass:config.lightClass}))}export{injectThemeCSS};
@@ -1 +1 @@
1
- {"version":3,"file":"preset-merger.d.ts","sourceRoot":"","sources":["../../src/utils/preset-merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,WAAW,EAAE,oBAAoB,EAAe,MAAM,UAAU,CAAA;AAE5G,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,GAAG,WAAW,CAc5F;AAqCD,wBAAgB,SAAS,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAkB7B"}
1
+ {"version":3,"file":"preset-merger.d.ts","sourceRoot":"","sources":["../../src/utils/preset-merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAgC,WAAW,EAAE,oBAAoB,EAAe,MAAM,UAAU,CAAA;AAE5G,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,GAAG,WAAW,CAc5F;AAwCD,wBAAgB,SAAS,CACvB,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAC7B,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAkB7B"}
@@ -1 +1 @@
1
- function mergePresets(base,overrides){return{name:overrides.name||base.name,foundation:{...base.foundation,...overrides.foundation},scales:mergeScales(base.scales,overrides.scales),components:mergeComponents(base.components,overrides.components),colors:{light:mergeColors(base.colors.light,overrides.colors?.light),dark:mergeColors(base.colors.dark,overrides.colors?.dark)}}}function mergeScales(base,overrides){return overrides?{rounded:{...base.rounded,...overrides.rounded},shadow:{...base.shadow,...overrides.shadow}}:base}function mergeComponents(base,overrides){if(!(!base&&!overrides))return{btn:{...base?.btn,...overrides?.btn},container:{bg:{...base?.container?.bg,...overrides?.container?.bg}},input:{bg:{...base?.input?.bg,...overrides?.input?.bg}}}}function mergeColors(base,overrides){return overrides?{...base,...overrides}:base}function deepMerge(target,source){let result={...target};for(let key in source){let sourceValue=source[key];let targetValue=result[key];sourceValue!==void 0&&(isObject(sourceValue)&&isObject(targetValue)?result[key]=deepMerge(targetValue,sourceValue):result[key]=sourceValue)}return result}function isObject(value){return typeof value==`object`&&!!value&&!Array.isArray(value)}export{deepMerge,mergePresets};
1
+ function mergePresets(base,overrides){return{name:overrides.name||base.name,foundation:{...base.foundation,...overrides.foundation},scales:mergeScales(base.scales,overrides.scales),components:mergeComponents(base.components,overrides.components),colors:{light:mergeColors(base.colors.light,overrides.colors?.light),dark:mergeColors(base.colors.dark,overrides.colors?.dark)}}}function mergeScales(base,overrides){return overrides?{rounded:{...base.rounded,...overrides.rounded},shadow:{...base.shadow,...overrides.shadow}}:base}function mergeComponents(base,overrides){if(base||overrides)return{btn:{...base?.btn,...overrides?.btn},container:{bg:{...base?.container?.bg,...overrides?.container?.bg}},input:{...base?.input,...overrides?.input,bg:{...base?.input?.bg,...overrides?.input?.bg}},dialog:{...base?.dialog,...overrides?.dialog}}}function mergeColors(base,overrides){return overrides?{...base,...overrides}:base}function deepMerge(target,source){let result={...target};for(let key in source){let sourceValue=source[key];let targetValue=result[key];sourceValue!==void 0&&(result[key]=isObject(sourceValue)&&isObject(targetValue)?deepMerge(targetValue,sourceValue):sourceValue)}return result}function isObject(value){return typeof value==`object`&&!!value&&!Array.isArray(value)}export{deepMerge,mergePresets};
@@ -8,6 +8,7 @@ export declare const defaultOptions: {
8
8
  preset: undefined;
9
9
  mode: "both";
10
10
  darkClass: string;
11
+ lightClass: string;
11
12
  colorMode: "auto";
12
13
  persistPreset: true;
13
14
  };
@@ -15,5 +16,13 @@ export interface SetupThemeReturn {
15
16
  themeState: Ref<ThemeState>;
16
17
  cleanup: () => void;
17
18
  }
19
+ /**
20
+ * Sets up the theme state, CSS injection, and watchers without binding to a Vue app.
21
+ * Caller is responsible for `app.provide()` and `app.config.globalProperties`.
22
+ *
23
+ * Always returns synchronously with a populated themeState ref.
24
+ * Without a preset object, the default preset resolves asynchronously and
25
+ * themeState updates reactively (causes FOUC).
26
+ */
18
27
  export declare function setupTheme(options: MazUiThemeOptions): SetupThemeReturn;
19
28
  //# sourceMappingURL=setup-theme.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup-theme.d.ts","sourceRoot":"","sources":["../../src/utils/setup-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAgC,UAAU,EAAE,MAAM,UAAU,CAAA;AAwExE,eAAO,MAAM,cAAc;;;;;;;;;CASgE,CAAA;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AA4FD,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAsCvE"}
1
+ {"version":3,"file":"setup-theme.d.ts","sourceRoot":"","sources":["../../src/utils/setup-theme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,KAAK,CAAA;AAC9B,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAgC,UAAU,EAAE,MAAM,UAAU,CAAA;AA8DxE,eAAO,MAAM,cAAc;;;;;;;;;;CAUgE,CAAA;AAE3F,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAA;IAC3B,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AA0GD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAmDvE"}
@@ -1 +1 @@
1
- import{clearSavedPresetName,getSavedPresetName,saveResolvedPresetName}from"./cookie-storage.js";import{getPreset}from"./get-preset.js";import{injectThemeCSS}from"./inject-theme-css.js";import{mergePresets}from"./preset-merger.js";import{getColorMode,getSavedColorMode,getSystemColorMode,saveResolvedColorMode}from"./get-color-mode.js";import{updateDocumentClass}from"./update-document-class.js";import{useMutationObserver}from"./use-mutation-observer.js";import{isServer}from"@maz-ui/utils/helpers/isServer";import{ref,watch}from"vue";function watchColorSchemeFromMedia(themeState){if(isServer())return()=>{};let mediaCleanup;if(themeState.value&&themeState.value.colorMode===`auto`){let mediaQuery=globalThis.matchMedia(`(prefers-color-scheme: dark)`);let updateFromMedia=()=>{if(themeState.value.colorMode===`auto`){let newColorMode=mediaQuery.matches?`dark`:`light`;updateDocumentClass(newColorMode===`dark`,themeState.value),themeState.value.isDark=newColorMode===`dark`,saveResolvedColorMode(newColorMode)}};mediaQuery.addEventListener(`change`,updateFromMedia),mediaCleanup=()=>mediaQuery.removeEventListener(`change`,updateFromMedia)}let stopWatch=watch(()=>themeState.value.colorMode,colorMode=>{let resolvedIsDark=colorMode===`auto`?getSystemColorMode()===`dark`:colorMode===`dark`;updateDocumentClass(resolvedIsDark,themeState.value),colorMode===`auto`&&saveResolvedColorMode(resolvedIsDark?`dark`:`light`)});return()=>{mediaCleanup?.(),stopWatch()}}function watchMutationClassOnHtmlElement(themeState){if(isServer())return()=>{};let{stop}=useMutationObserver(document.documentElement,()=>{if(isServer()||!themeState.value)return;let activeColorMode=document.documentElement.classList.contains(themeState.value.darkClass)?`dark`:`light`;themeState.value.isDark=activeColorMode===`dark`,themeState.value.colorMode!==activeColorMode&&themeState.value.colorMode!==`auto`&&(themeState.value.colorMode=activeColorMode)},{attributes:!0});return stop}var defaultOptions={strategy:`runtime`,overrides:{},darkModeStrategy:`class`,preset:void 0,mode:`both`,darkClass:`dark`,colorMode:`auto`,persistPreset:!0};function resolveConfig(options){return{...defaultOptions,...options,colorMode:getSavedColorMode()??options.colorMode??(options.mode===`dark`?`dark`:`auto`)}}function createThemeState(options,config){let isDark=config.colorMode===`auto`&&config.mode===`both`?getSystemColorMode()===`dark`||getColorMode(config.colorMode)===`dark`:getColorMode(config.colorMode)===`dark`||config.mode===`dark`;!isServer()&&config.colorMode===`auto`&&saveResolvedColorMode(isDark?`dark`:`light`);let themeState=ref({strategy:config.strategy,darkClass:config.darkClass,darkModeStrategy:config.darkModeStrategy,colorMode:config.colorMode,mode:config.mode,preset:void 0,persistPreset:config.persistPreset,isDark:options._isDark||isDark});return updateDocumentClass(themeState.value.isDark,themeState.value),themeState}function finalizeTheme(themeState,preset,config){let finalPreset=Object.keys(config.overrides).length>0&&preset?mergePresets(preset,config.overrides):preset;if(finalPreset&&(themeState.value.preset=finalPreset,config.persistPreset&&saveResolvedPresetName(finalPreset.name)),config.strategy===`buildtime`||!finalPreset)return{themeState,cleanup:()=>{}};injectThemeCSS(finalPreset,config);let cleanupColorScheme=watchColorSchemeFromMedia(themeState);let cleanupMutation=watchMutationClassOnHtmlElement(themeState);return{themeState,cleanup:()=>{cleanupColorScheme(),cleanupMutation()}}}function swapPreset(themeState,preset,config){let final=Object.keys(config.overrides).length>0?mergePresets(preset,config.overrides):preset;themeState.value.preset=final,saveResolvedPresetName(final.name),injectThemeCSS(final,config)}function setupTheme(options){let config=resolveConfig(options);let themeState=createThemeState(options,config);let savedName=config.persistPreset?getSavedPresetName():null;let presetObject=config.preset&&typeof config.preset!=`string`?config.preset:null;if(presetObject||config.strategy===`buildtime`){let setup=finalizeTheme(themeState,presetObject??config.preset,config);return savedName&&config.strategy!==`buildtime`&&(!presetObject||savedName!==presetObject.name)&&getPreset(savedName).then(preset=>swapPreset(themeState,preset,config)).catch(()=>clearSavedPresetName()),setup}return(savedName?getPreset(savedName).catch(()=>(clearSavedPresetName(),getPreset(config.preset))):getPreset(config.preset)).catch(error=>{console.error(`[@maz-ui/themes] Failed to resolve preset`,error)}).then(preset=>finalizeTheme(themeState,preset,config)),{themeState,cleanup:()=>{}}}export{defaultOptions,setupTheme};
1
+ import{injectColorSchemeMeta,resolveColorSchemeContent}from"./color-scheme-meta.js";import{getSavedPreset,savePreset}from"./cookie-storage.js";import{getPreset}from"./get-preset.js";import{injectThemeCSS}from"./inject-theme-css.js";import{mergePresets}from"./preset-merger.js";import{getColorMode,getSavedColorMode,getSystemColorMode,saveResolvedColorMode}from"./get-color-mode.js";import{updateDocumentClass}from"./update-document-class.js";import{useMutationObserver}from"./use-mutation-observer.js";import{isServer}from"@maz-ui/utils/helpers/isServer";import{ref,watch}from"vue";function noop(){}function watchColorSchemeFromMedia(themeState){if(isServer())return noop;let mediaQuery=globalThis.matchMedia(`(prefers-color-scheme: dark)`);let onChange=()=>{if(themeState.value.colorMode!==`auto`)return;let next=mediaQuery.matches?`dark`:`light`;updateDocumentClass(`auto`,themeState.value),themeState.value.isDark=next===`dark`,saveResolvedColorMode(next)};mediaQuery.addEventListener(`change`,onChange);let stopWatch=watch(()=>themeState.value.colorMode,colorMode=>{let isDark=colorMode===`auto`?getSystemColorMode()===`dark`:colorMode===`dark`;updateDocumentClass(colorMode,themeState.value),injectColorSchemeMeta(resolveColorSchemeContent(themeState.value.mode,colorMode)),colorMode===`auto`&&saveResolvedColorMode(isDark?`dark`:`light`)});return()=>{mediaQuery.removeEventListener(`change`,onChange),stopWatch()}}function watchMutationClassOnHtmlElement(themeState){return isServer()?noop:useMutationObserver(document.documentElement,()=>{if(isServer()||!themeState.value)return;let active=document.documentElement.classList.contains(themeState.value.darkClass)?`dark`:`light`;themeState.value.isDark=active===`dark`,themeState.value.colorMode!==active&&themeState.value.colorMode!==`auto`&&(themeState.value.colorMode=active)},{attributes:!0}).stop}var defaultOptions={strategy:`runtime`,overrides:{},darkModeStrategy:`class`,preset:void 0,mode:`both`,darkClass:`dark`,lightClass:`light`,colorMode:`auto`,persistPreset:!0};function resolveConfig(options){return{...defaultOptions,...options,colorMode:getSavedColorMode()??options.colorMode??(options.mode===`dark`?`dark`:`auto`)}}function createThemeState(options,config){let isDark=config.colorMode===`auto`&&config.mode===`both`?getSystemColorMode()===`dark`||getColorMode(config.colorMode)===`dark`:getColorMode(config.colorMode)===`dark`||config.mode===`dark`;!isServer()&&config.colorMode===`auto`&&saveResolvedColorMode(isDark?`dark`:`light`);let themeState=ref({strategy:config.strategy,darkClass:config.darkClass,lightClass:config.lightClass,darkModeStrategy:config.darkModeStrategy,colorMode:config.colorMode,mode:config.mode,preset:void 0,persistPreset:config.persistPreset,isDark:options._isDark||isDark});if(!isServer()&&config.darkModeStrategy===`class`&&config.mode===`both`){let html=document.documentElement;html.classList.contains(config.darkClass)||html.classList.contains(config.lightClass)||updateDocumentClass(themeState.value.colorMode,themeState.value)}else updateDocumentClass(themeState.value.colorMode,themeState.value);return themeState}function finalizeTheme(themeState,preset,config,baseName){let finalPreset=preset&&Object.keys(config.overrides).length>0?mergePresets(preset,config.overrides):preset;if(finalPreset&&(themeState.value.preset=finalPreset,config.persistPreset&&savePreset(baseName,finalPreset.name)),config.strategy===`buildtime`||!finalPreset)return{themeState,cleanup:noop};injectThemeCSS(finalPreset,config);let stopMedia=watchColorSchemeFromMedia(themeState);let stopMutation=watchMutationClassOnHtmlElement(themeState);return{themeState,cleanup:()=>{stopMedia(),stopMutation()}}}function swapPreset(themeState,preset,config,baseName){let final=Object.keys(config.overrides).length>0?mergePresets(preset,config.overrides):preset;themeState.value.preset=final,savePreset(baseName,final.name),injectThemeCSS(final,config)}var DEFAULT_PRESET_NAME=`maz-ui`;function getConfiguredPresetName(preset){return typeof preset==`string`?preset:DEFAULT_PRESET_NAME}function setupTheme(options){let config=resolveConfig(options);let themeState=createThemeState(options,config);injectColorSchemeMeta(resolveColorSchemeContent(themeState.value.mode,themeState.value.colorMode));let saved=config.persistPreset?getSavedPreset():null;let presetObject=config.preset&&typeof config.preset!=`string`?config.preset:null;if(presetObject||config.strategy===`buildtime`){let baseName=presetObject?presetObject.name:getConfiguredPresetName(config.preset);let setup=finalizeTheme(themeState,presetObject??config.preset,config,baseName);let activeOverride=saved&&saved.base===baseName&&saved.active!==baseName?saved.active:null;return activeOverride&&config.strategy!==`buildtime`&&getPreset(activeOverride).then(preset=>swapPreset(themeState,preset,config,baseName)).catch(()=>savePreset(baseName,baseName)),setup}return(async()=>{let basePreset=await getPreset(config.preset);let baseName=basePreset.name;if(saved&&saved.base===baseName&&saved.active!==baseName)try{return{preset:await getPreset(saved.active),baseName}}catch{}return{preset:basePreset,baseName}})().catch(error=>(console.error(`[@maz-ui/themes] Failed to resolve preset`,error),{preset:void 0,baseName:getConfiguredPresetName(config.preset)})).then(({preset,baseName})=>finalizeTheme(themeState,preset,config,baseName)),{themeState,cleanup:noop}}export{defaultOptions,setupTheme};
@@ -1,3 +1,3 @@
1
- import { ThemeState } from '../types';
2
- export declare function updateDocumentClass(isDark: boolean, state?: ThemeState): void;
1
+ import { ColorMode, ThemeState } from '../types';
2
+ export declare function updateDocumentClass(colorMode: ColorMode, state?: ThemeState): void;
3
3
  //# sourceMappingURL=update-document-class.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"update-document-class.d.ts","sourceRoot":"","sources":["../../src/utils/update-document-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1C,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,EAAE,UAAU,QAatE"}
1
+ {"version":3,"file":"update-document-class.d.ts","sourceRoot":"","sources":["../../src/utils/update-document-class.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAIrD,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,SAAS,EAAE,KAAK,CAAC,EAAE,UAAU,GAAG,IAAI,CAalF"}
@@ -1 +1 @@
1
- import{noTransition}from"./no-transition.js";function updateDocumentClass(isDark,state){typeof document>`u`||!state||state.darkModeStrategy===`media`||state.mode===`light`||noTransition(()=>{isDark?document.documentElement.classList.add(state.darkClass):document.documentElement.classList.remove(state.darkClass)})}export{updateDocumentClass};
1
+ import{noTransition}from"./no-transition.js";import{getSystemColorMode}from"./get-color-mode.js";function updateDocumentClass(colorMode,state){if(typeof document>`u`||!state||state.darkModeStrategy===`media`||state.mode!==`both`)return;let classToAdd=(colorMode===`auto`?getSystemColorMode():colorMode)===`dark`?state.darkClass:state.lightClass;noTransition(()=>{let html=document.documentElement;html.classList.remove(state.darkClass,state.lightClass),html.classList.add(classToAdd)})}export{updateDocumentClass};
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Wrap a state-changing callback in a View Transition.
3
+ * Graceful degradation: if `document.startViewTransition` is not available
4
+ * (Firefox stable as of mid-2026), the callback runs synchronously.
5
+ *
6
+ * This module is intended to be lazy-imported so the bundle stays minimal
7
+ * when `{ animate: true }` is never used.
8
+ */
9
+ export declare function runViewTransition(callback: () => void): Promise<void>;
10
+ //# sourceMappingURL=view-transition.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"view-transition.d.ts","sourceRoot":"","sources":["../../src/utils/view-transition.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAe3E"}
@@ -0,0 +1 @@
1
+ async function runViewTransition(callback){if(typeof document>`u`){callback();return}let api=document.startViewTransition;if(typeof api!=`function`){callback();return}await api.call(document,callback).finished.catch(()=>{})}export{runViewTransition};
package/package.json CHANGED
@@ -1,11 +1,11 @@
1
1
  {
2
2
  "name": "@maz-ui/themes",
3
3
  "type": "module",
4
- "version": "5.0.0-beta.4",
4
+ "version": "5.0.0-beta.46",
5
5
  "description": "Theme system for Maz-UI with TypeScript support and CSS variables",
6
6
  "author": "Louis Mazel <me@loicmazuel.com>",
7
7
  "license": "MIT",
8
- "homepage": "https://maz-ui.com/guide/themes",
8
+ "homepage": "https://maz-ui.com/ecosystem/themes",
9
9
  "repository": {
10
10
  "type": "git",
11
11
  "url": "git+https://github.com/LouisMazel/maz-ui.git"
@@ -26,52 +26,62 @@
26
26
  ".": {
27
27
  "monorepo:dev": "./src/index.ts",
28
28
  "types": "./dist/index.d.ts",
29
- "import": "./dist/index.js"
29
+ "import": "./dist/index.js",
30
+ "default": "./dist/index.js"
30
31
  },
31
32
  "./presets": {
32
33
  "monorepo:dev": "./src/presets/index.ts",
33
34
  "types": "./dist/presets/index.d.ts",
34
- "import": "./dist/presets/index.js"
35
+ "import": "./dist/presets/index.js",
36
+ "default": "./dist/presets/index.js"
35
37
  },
36
38
  "./presets/*": {
37
39
  "monorepo:dev": "./src/presets/*.ts",
38
40
  "types": "./dist/presets/*.d.ts",
39
- "import": "./dist/presets/*.js"
41
+ "import": "./dist/presets/*.js",
42
+ "default": "./dist/presets/*.js"
40
43
  },
41
44
  "./composables": {
42
45
  "monorepo:dev": "./src/composables/index.ts",
43
46
  "types": "./dist/composables/index.d.ts",
44
- "import": "./dist/composables/index.js"
47
+ "import": "./dist/composables/index.js",
48
+ "default": "./dist/composables/index.js"
45
49
  },
46
50
  "./composables/*": {
47
51
  "monorepo:dev": "./src/composables/*.ts",
48
52
  "types": "./dist/composables/*.d.ts",
49
- "import": "./dist/composables/*.js"
53
+ "import": "./dist/composables/*.js",
54
+ "default": "./dist/composables/*.js"
50
55
  },
51
56
  "./utils": {
52
57
  "monorepo:dev": "./src/utils/index.ts",
53
58
  "types": "./dist/utils/index.d.ts",
54
- "import": "./dist/utils/index.js"
59
+ "import": "./dist/utils/index.js",
60
+ "default": "./dist/utils/index.js"
55
61
  },
56
62
  "./utils/*": {
57
63
  "monorepo:dev": "./src/utils/*.ts",
58
64
  "types": "./dist/utils/*.d.ts",
59
- "import": "./dist/utils/*.js"
65
+ "import": "./dist/utils/*.js",
66
+ "default": "./dist/utils/*.js"
60
67
  },
61
68
  "./build": {
62
69
  "monorepo:dev": "./src/build/index.ts",
63
70
  "types": "./dist/build/index.d.ts",
64
- "import": "./dist/build/index.js"
71
+ "import": "./dist/build/index.js",
72
+ "default": "./dist/build/index.js"
65
73
  },
66
74
  "./build/*": {
67
75
  "monorepo:dev": "./src/build/*.ts",
68
76
  "types": "./dist/build/*.d.ts",
69
- "import": "./dist/build/*.js"
77
+ "import": "./dist/build/*.js",
78
+ "default": "./dist/build/*.js"
70
79
  },
71
80
  "./plugin": {
72
81
  "monorepo:dev": "./src/plugin.ts",
73
82
  "types": "./dist/plugin.d.ts",
74
- "import": "./dist/plugin.js"
83
+ "import": "./dist/plugin.js",
84
+ "default": "./dist/plugin.js"
75
85
  }
76
86
  },
77
87
  "main": "./dist/index.js",
@@ -79,6 +89,7 @@
79
89
  "types": "./dist/index.d.ts",
80
90
  "files": [
81
91
  "LICENSE",
92
+ "README.md",
82
93
  "dist"
83
94
  ],
84
95
  "engines": {
@@ -88,7 +99,10 @@
88
99
  "vue": ">=3.5.0 <4.0.0"
89
100
  },
90
101
  "dependencies": {
91
- "@maz-ui/utils": "5.0.0-beta.4"
102
+ "@maz-ui/utils": "5.0.0-beta.46"
103
+ },
104
+ "devDependencies": {
105
+ "@maz-ui/vite-config": "0.0.0"
92
106
  },
93
107
  "lint-staged": {
94
108
  "*.{js,ts,vue,mjs,mts,cjs,md,yml,json}": "cross-env NODE_ENV=production eslint --fix"
@@ -1,35 +0,0 @@
1
- import { ColorScale } from '../types';
2
- /**
3
- * @deprecated Prefer `parseColor` from `./color-parser` — it accepts any CSS color format
4
- * (hsl(), rgb(), oklch(), #hex, or the legacy raw "H S% L%"). This alias is kept for
5
- * internal backwards-compatibility during the v5 migration and may be removed in v6.
6
- */
7
- export declare function parseHSL(value: string): {
8
- h: number;
9
- s: number;
10
- l: number;
11
- };
12
- /**
13
- * Generate an 11-step color scale from a base color.
14
- *
15
- * The base color may be given in any CSS color format (`hsl()`, `rgb()`, `oklch()`, `#hex`,
16
- * or the legacy raw `"H S% L%"`). Stepping happens in OKLch space (perceptually uniform),
17
- * and the output is emitted as `oklch(L C H)` strings.
18
- */
19
- export declare function generateColorScale(baseColor: string): ColorScale;
20
- /**
21
- * Return a black or white `oklch()` string suitable for text drawn on top of `baseColor`.
22
- *
23
- * The threshold (L=0.62) is calibrated for OKLch lightness — perceptually equivalent
24
- * to a mid-gray, so colors above that get black text, below it white text.
25
- */
26
- export declare function getContrastColor(baseColor: string): string;
27
- /**
28
- * Shift the lightness of a color by `adjustment`. The adjustment is given in
29
- * OKLch L units (0..1) — e.g. `0.1` to lighten by 10% perceptual luminance.
30
- *
31
- * The input can be in any CSS color format; the output is always a complete
32
- * `oklch()` string.
33
- */
34
- export declare function adjustColorLightness(baseColor: string, adjustment: number): string;
35
- //# sourceMappingURL=color-utils.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../src/utils/color-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1C;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAE3E;AAuCD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAmBhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAIlF"}
@@ -1 +0,0 @@
1
- import{formatAsOklch,parseColor,parseColorAsOklch}from"./color-parser.js";function parseHSL(value){return parseColor(value)}var LIGHTNESS_OFFSETS={50:.42,100:.35,200:.26,300:.17,400:.08,500:0,600:-.07,700:-.14,800:-.21,900:-.28,950:-.34};function clamp(n,min,max){return Math.max(min,Math.min(max,n))}function chromaFalloff(targetL){return targetL>=.96?Math.max(0,1-(targetL-.96)*12):targetL<=.18?Math.max(0,targetL/.18):1}function generateColorScale(baseColor){let base=parseColorAsOklch(baseColor);let scale={};let variants=Object.keys(LIGHTNESS_OFFSETS).map(Number);for(let variant of variants){if(variant===500){scale[variant]=formatAsOklch(base);continue}let offset=LIGHTNESS_OFFSETS[variant];let targetL=clamp(base.l+offset,0,1);scale[variant]=formatAsOklch({l:targetL,c:base.c*chromaFalloff(targetL),h:base.h})}return scale}function getContrastColor(baseColor){let{l}=parseColorAsOklch(baseColor);return l>.62?`oklch(0 0 0)`:`oklch(1 0 0)`}function adjustColorLightness(baseColor,adjustment){let{l,c,h}=parseColorAsOklch(baseColor);return formatAsOklch({l:clamp(l+adjustment,0,1),c,h})}export{adjustColorLightness,generateColorScale,getContrastColor,parseHSL};