@maz-ui/themes 5.0.0-beta.4 → 5.0.0-beta.44
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +61 -16
- package/dist/build/index.d.ts +10 -13
- package/dist/build/index.d.ts.map +1 -1
- package/dist/build/index.js +1 -1
- package/dist/composables/useTheme.d.ts +10 -2
- package/dist/composables/useTheme.d.ts.map +1 -1
- package/dist/composables/useTheme.js +1 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/presets/_defaults.d.ts +16 -4
- package/dist/presets/_defaults.d.ts.map +1 -1
- package/dist/presets/_defaults.js +1 -1
- package/dist/presets/mazUi.d.ts.map +1 -1
- package/dist/presets/mazUi.js +1 -1
- package/dist/presets/nova.d.ts.map +1 -1
- package/dist/presets/nova.js +1 -1
- package/dist/presets/obsidian.d.ts.map +1 -1
- package/dist/presets/obsidian.js +1 -1
- package/dist/presets/ocean.d.ts.map +1 -1
- package/dist/presets/ocean.js +1 -1
- package/dist/presets/pristine.d.ts.map +1 -1
- package/dist/presets/pristine.js +1 -1
- package/dist/types/index.d.ts +43 -1
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/color-conversions.d.ts +29 -0
- package/dist/utils/color-conversions.d.ts.map +1 -0
- package/dist/utils/color-conversions.js +1 -0
- package/dist/utils/color-parser.d.ts +3 -27
- package/dist/utils/color-parser.d.ts.map +1 -1
- package/dist/utils/color-parser.js +1 -1
- package/dist/utils/color-scheme-meta.d.ts +15 -0
- package/dist/utils/color-scheme-meta.d.ts.map +1 -0
- package/dist/utils/color-scheme-meta.js +1 -0
- package/dist/utils/cookie-storage.d.ts +0 -2
- package/dist/utils/cookie-storage.d.ts.map +1 -1
- package/dist/utils/cookie-storage.js +1 -1
- package/dist/utils/css-generator.d.ts +6 -4
- package/dist/utils/css-generator.d.ts.map +1 -1
- package/dist/utils/css-generator.js +2 -4
- package/dist/utils/get-color-mode.js +1 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/inject-theme-css.d.ts.map +1 -1
- package/dist/utils/inject-theme-css.js +1 -1
- package/dist/utils/preset-merger.d.ts.map +1 -1
- package/dist/utils/preset-merger.js +1 -1
- package/dist/utils/setup-theme.d.ts +9 -0
- package/dist/utils/setup-theme.d.ts.map +1 -1
- package/dist/utils/setup-theme.js +1 -1
- package/dist/utils/update-document-class.d.ts +2 -2
- package/dist/utils/update-document-class.d.ts.map +1 -1
- package/dist/utils/update-document-class.js +1 -1
- package/dist/utils/view-transition.d.ts +10 -0
- package/dist/utils/view-transition.d.ts.map +1 -0
- package/dist/utils/view-transition.js +1 -0
- package/package.json +26 -13
- package/dist/utils/color-utils.d.ts +0 -35
- package/dist/utils/color-utils.d.ts.map +0 -1
- 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
|
-
- 🎨 **
|
|
8
|
-
- 🌓 **
|
|
9
|
-
-
|
|
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
|
})
|
|
@@ -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
|
-
|
|
150
|
+
rounded: { md: '0.75rem' },
|
|
110
151
|
},
|
|
111
152
|
colors: {
|
|
112
153
|
light: {
|
|
113
|
-
primary: '
|
|
114
|
-
secondary: '
|
|
154
|
+
primary: 'oklch(0.6 0.2 250)',
|
|
155
|
+
secondary: 'oklch(0.96 0.01 250)',
|
|
115
156
|
},
|
|
116
157
|
dark: {
|
|
117
|
-
primary: '
|
|
118
|
-
secondary: '
|
|
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
|
|
199
|
+
The generator produces a modern, native CSS contract:
|
|
155
200
|
|
|
156
|
-
- Base
|
|
157
|
-
-
|
|
158
|
-
-
|
|
159
|
-
-
|
|
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
|
|
package/dist/build/index.d.ts
CHANGED
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { ThemePreset } from '../types';
|
|
2
|
-
|
|
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
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
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,
|
|
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"}
|
package/dist/build/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{generateCSS}from"../utils/css-generator.js";function buildThemeCSS(
|
|
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
|
|
4
|
-
|
|
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;
|
|
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,iBAgCtF;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
|
|
1
|
+
import{saveResolvedPresetName}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&&saveResolvedPresetName(newPreset.name),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';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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,
|
|
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{
|
|
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
|
|
32
|
-
*
|
|
33
|
-
* same contrast pattern the
|
|
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;
|
|
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
|
|
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;
|
|
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"}
|
package/dist/presets/mazUi.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/presets/nova.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/presets/obsidian.js
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/presets/ocean.js
CHANGED
|
@@ -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;
|
|
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"}
|
package/dist/presets/pristine.js
CHANGED
|
@@ -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};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -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,
|
|
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":"AAAA;;;GAGG;AACH,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,MAAM,KAAK,MAAM,GAAG,CAAA;AAEnD;;;;GAIG;AAEH,MAAM,MAAM,QAAQ,GAAG,MAAM,CAAA;AAE7B,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,MAAM,GAAG,MAAM,GAAG,GAAG,EAAE,CAAA;AAE9F,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,GAAG,IAAI,GAAG,GAAG,EAAE,CAAA;AAE/C,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,QAAQ,CAAA;IACnB,YAAY,EAAE,QAAQ,CAAA;IACtB,SAAS,EAAE,QAAQ,CAAA;IACnB,oBAAoB,EAAE,QAAQ,CAAA;IAC9B,WAAW,EAAE,QAAQ,CAAA;IACrB,sBAAsB,EAAE,QAAQ,CAAA;IAChC,QAAQ,EAAE,QAAQ,CAAA;IAClB,mBAAmB,EAAE,QAAQ,CAAA;IAC7B,MAAM,EAAE,QAAQ,CAAA;IAChB,iBAAiB,EAAE,QAAQ,CAAA;IAC3B,UAAU,EAAE,QAAQ,CAAA;IACpB,qBAAqB,EAAE,QAAQ,CAAA;IAC/B,aAAa,EAAE,QAAQ,CAAA;IACvB,wBAAwB,EAAE,QAAQ,CAAA;IAClC,SAAS,EAAE,QAAQ,CAAA;IACnB,oBAAoB,EAAE,QAAQ,CAAA;IAC9B,SAAS,EAAE,QAAQ,CAAA;IACnB,oBAAoB,EAAE,QAAQ,CAAA;IAC9B,SAAS,EAAE,QAAQ,CAAA;IACnB,OAAO,EAAE,QAAQ,CAAA;IACjB,SAAS,EAAE,QAAQ,CAAA;IACnB,QAAQ,EAAE,QAAQ,CAAA;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,CAAC,EAAE,QAAQ,CAAA;IAC3B,cAAc,EAAE,QAAQ,CAAA;IACxB,8BAA8B;IAC9B,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;;OAKG;IACH,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAC7B;;;;OAIG;IACH,aAAa,CAAC,EAAE,QAAQ,CAAA;IACxB,eAAe,CAAC,EAAE,QAAQ,CAAA;IAC1B,aAAa,CAAC,EAAE,QAAQ,CAAA;IACxB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,eAAe,CAAC,EAAE,MAAM,CAAA;IACxB;;;OAGG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAA;IAC3B;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B;;;;OAIG;IACH,OAAO,CAAC,EAAE,QAAQ,CAAA;CACnB;AAED;;;;;;GAMG;AACH;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK,GAAG,KAAK,CAAA;AAE9E,MAAM,WAAW,WAAW;IAC1B;;;;;;;;;;OAUG;IACH,OAAO,EAAE;QAAE,EAAE,EAAE,QAAQ,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAA;IACrF;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,WAAW,EAAE,MAAM,CAAC,CAAA;CAChE;AAED
|
|
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
|
|
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
|
-
*
|
|
26
|
-
*
|
|
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":"
|
|
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
|
|
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,5 +1,3 @@
|
|
|
1
|
-
export declare function getCookie(key: string): string | null;
|
|
2
|
-
export declare function setCookie(key: string, value: string): void;
|
|
3
1
|
/** Persisted preset name from `maz-preset` cookie, or `null`. */
|
|
4
2
|
export declare function getSavedPresetName(): string | null;
|
|
5
3
|
/** Write `name` to the `maz-preset` cookie, no-op if value already matches. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cookie-storage.d.ts","sourceRoot":"","sources":["../../src/utils/cookie-storage.ts"],"names":[],"mappings":"AAIA,
|
|
1
|
+
{"version":3,"file":"cookie-storage.d.ts","sourceRoot":"","sources":["../../src/utils/cookie-storage.ts"],"names":[],"mappings":"AAIA,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,CAE3C"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import{deleteCookie,getCookie,setCookie}from"@maz-ui/utils/helpers/cookie";var PRESET_COOKIE=`maz-preset`;function getSavedPresetName(){return getCookie(PRESET_COOKIE)}function saveResolvedPresetName(name){name&&getCookie(PRESET_COOKIE)!==name&&setCookie(PRESET_COOKIE,name)}function clearSavedPresetName(){deleteCookie(PRESET_COOKIE)}export{clearSavedPresetName,getSavedPresetName,saveResolvedPresetName};
|
|
@@ -1,15 +1,17 @@
|
|
|
1
|
-
import {
|
|
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' (
|
|
6
|
-
darkSelectorStrategy:
|
|
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
|
|
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,
|
|
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{
|
|
2
|
-
|
|
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{
|
|
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};
|
package/dist/utils/index.d.ts
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,gBAAgB,CAAA;AAC9B,cAAc,
|
|
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"}
|
package/dist/utils/index.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{colorToHex,formatAsHSL,formatAsOklch,
|
|
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,getSavedPresetName,saveResolvedPresetName}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,getSavedPresetName,injectCSS,injectColorSchemeMeta,injectThemeCSS,injectThemeState,isCompleteCSSColor,isPresetObject,mergePresets,noTransition,normalizeColor,parseColor,parseColorAsOklch,removeCSS,resolveColorSchemeContent,saveResolvedPresetName,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,
|
|
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
|
|
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;
|
|
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(
|
|
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;
|
|
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;AA8FD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAoCvE"}
|
|
@@ -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
|
|
1
|
+
import{injectColorSchemeMeta,resolveColorSchemeContent}from"./color-scheme-meta.js";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 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){let finalPreset=preset&&Object.keys(config.overrides).length>0?mergePresets(preset,config.overrides):preset;if(finalPreset&&(themeState.value.preset=finalPreset,config.persistPreset&&saveResolvedPresetName(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){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);injectColorSchemeMeta(resolveColorSchemeContent(themeState.value.mode,themeState.value.colorMode));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:noop}}export{defaultOptions,setupTheme};
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
import { ThemeState } from '../types';
|
|
2
|
-
export declare function updateDocumentClass(
|
|
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;
|
|
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(
|
|
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
|
+
"version": "5.0.0-beta.44",
|
|
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/
|
|
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",
|
|
@@ -88,7 +98,10 @@
|
|
|
88
98
|
"vue": ">=3.5.0 <4.0.0"
|
|
89
99
|
},
|
|
90
100
|
"dependencies": {
|
|
91
|
-
"@maz-ui/utils": "5.0.0-beta.
|
|
101
|
+
"@maz-ui/utils": "5.0.0-beta.44"
|
|
102
|
+
},
|
|
103
|
+
"devDependencies": {
|
|
104
|
+
"@maz-ui/vite-config": "0.0.0"
|
|
92
105
|
},
|
|
93
106
|
"lint-staged": {
|
|
94
107
|
"*.{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};
|