@maz-ui/themes 4.0.0-beta.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +163 -0
  3. package/dist/build/index.js +52 -0
  4. package/dist/composables/index.js +11 -0
  5. package/dist/composables/useTheme.js +95 -0
  6. package/dist/define-preset.js +11 -0
  7. package/dist/index.js +36 -0
  8. package/dist/plugin/index.js +8 -0
  9. package/dist/plugin.js +65 -0
  10. package/dist/presets/index.js +10 -0
  11. package/dist/presets/mazUi.js +62 -0
  12. package/dist/presets/obsidian.js +65 -0
  13. package/dist/presets/ocean.js +63 -0
  14. package/dist/presets/pristine.js +62 -0
  15. package/dist/types/build/index.d.ts +37 -0
  16. package/dist/types/build/index.d.ts.map +1 -0
  17. package/dist/types/composables/useTheme.d.ts +16 -0
  18. package/dist/types/composables/useTheme.d.ts.map +1 -0
  19. package/dist/types/define-preset.d.ts +44 -0
  20. package/dist/types/define-preset.d.ts.map +1 -0
  21. package/dist/types/index.d.ts +10 -0
  22. package/dist/types/index.d.ts.map +1 -0
  23. package/dist/types/plugin.d.ts +61 -0
  24. package/dist/types/plugin.d.ts.map +1 -0
  25. package/dist/types/presets/index.d.ts +5 -0
  26. package/dist/types/presets/index.d.ts.map +1 -0
  27. package/dist/types/presets/mazUi.d.ts +3 -0
  28. package/dist/types/presets/mazUi.d.ts.map +1 -0
  29. package/dist/types/presets/obsidian.d.ts +3 -0
  30. package/dist/types/presets/obsidian.d.ts.map +1 -0
  31. package/dist/types/presets/ocean.d.ts +3 -0
  32. package/dist/types/presets/ocean.d.ts.map +1 -0
  33. package/dist/types/presets/pristine.d.ts +3 -0
  34. package/dist/types/presets/pristine.d.ts.map +1 -0
  35. package/dist/types/types/index.d.ts +127 -0
  36. package/dist/types/types/index.d.ts.map +1 -0
  37. package/dist/types/utils/color-utils.d.ts +11 -0
  38. package/dist/types/utils/color-utils.d.ts.map +1 -0
  39. package/dist/types/utils/cookie-storage.d.ts +3 -0
  40. package/dist/types/utils/cookie-storage.d.ts.map +1 -0
  41. package/dist/types/utils/css-generator.d.ts +46 -0
  42. package/dist/types/utils/css-generator.d.ts.map +1 -0
  43. package/dist/types/utils/get-color-mode.d.ts +4 -0
  44. package/dist/types/utils/get-color-mode.d.ts.map +1 -0
  45. package/dist/types/utils/get-preset.d.ts +5 -0
  46. package/dist/types/utils/get-preset.d.ts.map +1 -0
  47. package/dist/types/utils/index.d.ts +6 -0
  48. package/dist/types/utils/index.d.ts.map +1 -0
  49. package/dist/types/utils/preset-merger.d.ts +4 -0
  50. package/dist/types/utils/preset-merger.d.ts.map +1 -0
  51. package/dist/utils/color-utils.js +77 -0
  52. package/dist/utils/cookie-storage.js +13 -0
  53. package/dist/utils/css-generator.js +166 -0
  54. package/dist/utils/get-color-mode.js +14 -0
  55. package/dist/utils/get-preset.js +28 -0
  56. package/dist/utils/index.js +22 -0
  57. package/dist/utils/preset-merger.js +34 -0
  58. package/package.json +104 -0
@@ -0,0 +1,62 @@
1
+ const r = {
2
+ name: "pristine",
3
+ foundation: {
4
+ "base-font-size": "14px",
5
+ radius: "0.6rem",
6
+ "border-width": "0.5px",
7
+ "font-family": "-apple-system, system-ui, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif"
8
+ },
9
+ colors: {
10
+ light: {
11
+ background: "0 0% 99%",
12
+ foreground: "0 0% 10%",
13
+ primary: "220 10% 15%",
14
+ "primary-foreground": "0 0% 100%",
15
+ contrast: "220 10% 92%",
16
+ "contrast-foreground": "0 0% 10%",
17
+ secondary: "220 10% 92%",
18
+ "secondary-foreground": "0 0% 10%",
19
+ muted: "0 0% 60%",
20
+ accent: "210 15% 85%",
21
+ "accent-foreground": "0 0% 10%",
22
+ destructive: "0 70% 50%",
23
+ "destructive-foreground": "0 0% 100%",
24
+ success: "140 40% 45%",
25
+ "success-foreground": "0 0% 100%",
26
+ warning: "35 80% 55%",
27
+ "warning-foreground": "0 0% 10%",
28
+ info: "200 80% 50%",
29
+ "info-foreground": "0 0% 100%",
30
+ border: "220 10% 92%",
31
+ overlay: "0 0% 10%",
32
+ shadow: "0 0% 0%"
33
+ },
34
+ dark: {
35
+ background: "0 0% 10%",
36
+ foreground: "0 0% 95%",
37
+ primary: "0 0% 95%",
38
+ "primary-foreground": "0 0% 10%",
39
+ contrast: "0 0% 15%",
40
+ "contrast-foreground": "0 0% 95%",
41
+ secondary: "0 0% 18%",
42
+ "secondary-foreground": "0 0% 95%",
43
+ muted: "0 0% 60%",
44
+ accent: "210 15% 25%",
45
+ "accent-foreground": "0 0% 95%",
46
+ destructive: "0 70% 55%",
47
+ "destructive-foreground": "0 0% 100%",
48
+ success: "140 40% 45%",
49
+ "success-foreground": "0 0% 100%",
50
+ warning: "35 80% 55%",
51
+ "warning-foreground": "0 0% 10%",
52
+ info: "200 80% 55%",
53
+ "info-foreground": "0 0% 100%",
54
+ border: "0 0% 18%",
55
+ overlay: "0 0% 10%",
56
+ shadow: "0 0% 0%"
57
+ }
58
+ }
59
+ };
60
+ export {
61
+ r as pristine
62
+ };
@@ -0,0 +1,37 @@
1
+ import { ThemePreset } from '../types';
2
+ export interface BuildThemeOptions {
3
+ preset: ThemePreset;
4
+ /** Mode de thème à générer */
5
+ mode?: 'light' | 'dark' | 'both';
6
+ /** Sélecteur pour le mode sombre */
7
+ darkSelector?: 'class' | 'media';
8
+ /** Préfixe des variables CSS */
9
+ prefix?: string;
10
+ /** Générer seulement le CSS critique */
11
+ criticalOnly?: boolean;
12
+ }
13
+ export declare function buildThemeCSS(options: BuildThemeOptions): string;
14
+ export declare function generateThemeBundle(presets: ThemePreset[], options?: {
15
+ /** Mode de thème à générer */
16
+ mode?: 'light' | 'dark' | 'both';
17
+ /** Sélecteur pour le mode sombre */
18
+ darkSelector?: 'class' | 'media';
19
+ /** Préfixe des variables CSS */
20
+ prefix?: string;
21
+ /** Générer seulement le CSS critique */
22
+ criticalOnly?: boolean;
23
+ }): Record<string, string>;
24
+ export declare function createThemeStylesheet(css: string, options?: {
25
+ id?: string;
26
+ media?: string;
27
+ }): string;
28
+ export declare function buildSeparateThemeFiles(preset: ThemePreset, options?: {
29
+ prefix?: string;
30
+ darkSelector?: 'class' | 'media';
31
+ }): {
32
+ critical: string;
33
+ full: string;
34
+ lightOnly: string;
35
+ darkOnly: string;
36
+ };
37
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/build/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAG3C,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,WAAW,CAAA;IACnB,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAA;CACvB;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,iBAAiB,GAAG,MAAM,CAwBhE;AAED,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,WAAW,EAAE,EAAE,OAAO,GAAE;IACnE,8BAA8B;IAC9B,IAAI,CAAC,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;IAChC,oCAAoC;IACpC,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;IAChC,gCAAgC;IAChC,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,wCAAwC;IACxC,YAAY,CAAC,EAAE,OAAO,CAAA;CAClB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB9B;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;IAC1D,EAAE,CAAC,EAAE,MAAM,CAAA;IACX,KAAK,CAAC,EAAE,MAAM,CAAA;CACV,GAAG,MAAM,CAYd;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,WAAW,EAAE,OAAO,GAAE;IACpE,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,YAAY,CAAC,EAAE,OAAO,GAAG,OAAO,CAAA;CAC5B,GAAG;IACL,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,EAAE,MAAM,CAAA;IACZ,SAAS,EAAE,MAAM,CAAA;IACjB,QAAQ,EAAE,MAAM,CAAA;CACjB,CAWF"}
@@ -0,0 +1,16 @@
1
+ import { ColorMode, Strategy, ThemePreset, ThemePresetName, ThemePresetOverrides, ThemeState } from '../types';
2
+ export declare function initThemeState(initialState: ThemeState): void;
3
+ declare function updateTheme(preset: ThemePreset | ThemePresetOverrides | ThemePresetName): Promise<void>;
4
+ declare function setColorMode(mode: ColorMode): void;
5
+ declare function toggleDarkMode(): void;
6
+ export declare function useTheme(): {
7
+ currentPreset: import('vue').ComputedRef<ThemePreset>;
8
+ colorMode: import('vue').WritableComputedRef<ColorMode, ColorMode>;
9
+ isDark: import('vue').ComputedRef<boolean>;
10
+ strategy: import('vue').ComputedRef<Strategy>;
11
+ updateTheme: typeof updateTheme;
12
+ setColorMode: typeof setColorMode;
13
+ toggleDarkMode: typeof toggleDarkMode;
14
+ };
15
+ export {};
16
+ //# sourceMappingURL=useTheme.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useTheme.d.ts","sourceRoot":"","sources":["../../../src/composables/useTheme.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,QAAQ,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AA0DnH,wBAAgB,cAAc,CAAC,YAAY,EAAE,UAAU,QAsBtD;AAYD,iBAAe,WAAW,CAAC,MAAM,EAAE,WAAW,GAAG,oBAAoB,GAAG,eAAe,iBAyBtF;AAED,iBAAS,YAAY,CAAC,IAAI,EAAE,SAAS,QAgBpC;AAED,iBAAS,cAAc,SAKtB;AAED,wBAAgB,QAAQ;;;;;;;;EAyCvB"}
@@ -0,0 +1,44 @@
1
+ import { ThemePreset, ThemePresetName, ThemePresetOverrides } from './types';
2
+ /**
3
+ * Define a custom theme preset
4
+ *
5
+ * @example
6
+ * ```ts
7
+ * // Utilisation asynchrone avec une base string
8
+ * const customTheme = await definePreset({
9
+ * base: 'mazUi',
10
+ * overrides: {
11
+ * colors: {
12
+ * light: { primary: '210 100% 50%' }
13
+ * }
14
+ * }
15
+ * })
16
+ *
17
+ * // Utilisation synchrone avec un objet preset
18
+ * import { mazUi } from './presets/mazUi'
19
+ * const customTheme = definePreset({
20
+ * base: mazUi,
21
+ * overrides: {
22
+ * foundation: { radius: '1rem' }
23
+ * }
24
+ * })
25
+ *
26
+ * // Utilisation asynchrone sans base (utilise 'maz-ui' par défaut)
27
+ * const customTheme = await definePreset({
28
+ * overrides: {
29
+ * colors: {
30
+ * dark: { background: '0 0% 5%' }
31
+ * }
32
+ * }
33
+ * })
34
+ * ```
35
+ */
36
+ export declare function definePreset(options: {
37
+ base: ThemePreset;
38
+ overrides: ThemePresetOverrides;
39
+ }): ThemePreset;
40
+ export declare function definePreset(options: {
41
+ base: ThemePresetName;
42
+ overrides: ThemePresetOverrides;
43
+ }): Promise<ThemePreset>;
44
+ //# sourceMappingURL=define-preset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"define-preset.d.ts","sourceRoot":"","sources":["../../src/define-preset.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,SAAS,CAAA;AAIjF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAEH,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,IAAI,EAAE,WAAW,CAAA;IACjB,SAAS,EAAE,oBAAoB,CAAA;CAChC,GAAG,WAAW,CAAA;AAEf,wBAAgB,YAAY,CAAC,OAAO,EAAE;IACpC,IAAI,EAAE,eAAe,CAAA;IACrB,SAAS,EAAE,oBAAoB,CAAA;CAChC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA"}
@@ -0,0 +1,10 @@
1
+ export * from './build';
2
+ export * from './composables/useTheme';
3
+ export { definePreset } from './define-preset';
4
+ export * from './plugin';
5
+ export * from './presets';
6
+ export * from './types';
7
+ export * from './utils/color-utils';
8
+ export * from './utils/css-generator';
9
+ export * from './utils/preset-merger';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAC9C,cAAc,UAAU,CAAA;AACxB,cAAc,WAAW,CAAA;AACzB,cAAc,SAAS,CAAA;AACvB,cAAc,qBAAqB,CAAA;AACnC,cAAc,uBAAuB,CAAA;AACrC,cAAc,uBAAuB,CAAA"}
@@ -0,0 +1,61 @@
1
+ import { ThemeConfig, ThemeState } from './types';
2
+ import { App } from 'vue';
3
+ export interface MazUiThemeOptions extends ThemeConfig {
4
+ /**
5
+ * CSS variables prefix
6
+ * @description Prefix for CSS variables
7
+ * @default 'maz'
8
+ * @private
9
+ */
10
+ prefix?: string;
11
+ /**
12
+ * Inject critical CSS
13
+ * @description Inject critical CSS to prevent FOUC
14
+ * @default true
15
+ * @private
16
+ */
17
+ injectCriticalCSS?: boolean;
18
+ /**
19
+ * Inject full CSS
20
+ * @description Inject full CSS to ensure all styles are loaded
21
+ * @default true
22
+ * @private
23
+ */
24
+ injectFullCSS?: boolean;
25
+ }
26
+ /**
27
+ * @example
28
+ * ```ts
29
+ * import { MazUi } from 'maz-ui/plugins/maz-ui'
30
+ *
31
+ * app.use(MazUi, {
32
+ * preset: defaultPreset,
33
+ * strategy: 'hybrid',
34
+ * darkMode: 'class',
35
+ * })
36
+ * ```
37
+ */
38
+ export declare const MazUiTheme: {
39
+ install(app: App, options?: MazUiThemeOptions): Promise<void>;
40
+ };
41
+ declare module '@vue/runtime-core' {
42
+ interface ComponentCustomProperties {
43
+ /**
44
+ * Maz theme plugin options
45
+ * @description You should install the plugin to use this property
46
+ * @example
47
+ * ```ts
48
+ * import { MazUi } from 'maz-ui/plugins/maz-ui'
49
+ * import { createApp } from 'vue'
50
+ *
51
+ * const app = createApp(App)
52
+ * app.use(MazUi)
53
+ *
54
+ * const { setColorMode, toggleDarkMode } = useMazTheme()
55
+ * setColorMode('dark')
56
+ * toggleDarkMode()
57
+ */
58
+ $mazThemeState: ThemeState;
59
+ }
60
+ }
61
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../../src/plugin.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,WAAW,EAAe,UAAU,EAAE,MAAM,SAAS,CAAA;AACrF,OAAO,EAAE,KAAK,GAAG,EAAY,MAAM,KAAK,CAAA;AASxC,MAAM,WAAW,iBAAkB,SAAQ,WAAW;IACpD;;;;;OAKG;IACH,MAAM,CAAC,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,OAAO,CAAA;CACxB;AAkDD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,UAAU;iBACF,GAAG,YAAW,iBAAiB;CAuDnD,CAAA;AAED,OAAO,QAAQ,mBAAmB,CAAC;IACjC,UAAU,yBAAyB;QACjC;;;;;;;;;;;;;;WAcG;QACH,cAAc,EAAE,UAAU,CAAA;KAC3B;CACF"}
@@ -0,0 +1,5 @@
1
+ export * from './mazUi';
2
+ export * from './obsidian';
3
+ export * from './ocean';
4
+ export * from './pristine';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/presets/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA;AAC1B,cAAc,SAAS,CAAA;AACvB,cAAc,YAAY,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { ThemePreset } from '../types';
2
+ export declare const mazUi: ThemePreset;
3
+ //# sourceMappingURL=mazUi.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mazUi.d.ts","sourceRoot":"","sources":["../../../src/presets/mazUi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAE3C,eAAO,MAAM,KAAK,EAAE,WA0DnB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { ThemePreset } from '../types';
2
+ export declare const obsidian: ThemePreset;
3
+ //# sourceMappingURL=obsidian.d.ts.map
@@ -0,0 +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;AAE3C,eAAO,MAAM,QAAQ,EAAE,WA2DtB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { ThemePreset } from '../types';
2
+ export declare const ocean: ThemePreset;
3
+ //# sourceMappingURL=ocean.d.ts.map
@@ -0,0 +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;AAE3C,eAAO,MAAM,KAAK,EAAE,WA0DnB,CAAA"}
@@ -0,0 +1,3 @@
1
+ import { ThemePreset } from '../types';
2
+ export declare const pristine: ThemePreset;
3
+ //# sourceMappingURL=pristine.d.ts.map
@@ -0,0 +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;AAE3C,eAAO,MAAM,QAAQ,EAAE,WA0DtB,CAAA"}
@@ -0,0 +1,127 @@
1
+ export type HSL = `${number} ${number}% ${number}%`;
2
+ export type SizeUnit = `${number}${'rem' | 'px' | 'em' | 'vw' | 'vh' | 'vmin' | 'vmax' | '%'}`;
3
+ export interface ThemeColors {
4
+ 'background': HSL;
5
+ 'foreground': HSL;
6
+ 'primary': HSL;
7
+ 'primary-foreground': HSL;
8
+ 'secondary': HSL;
9
+ 'secondary-foreground': HSL;
10
+ 'accent': HSL;
11
+ 'accent-foreground': HSL;
12
+ 'info': HSL;
13
+ 'info-foreground': HSL;
14
+ 'contrast': HSL;
15
+ 'contrast-foreground': HSL;
16
+ 'destructive': HSL;
17
+ 'destructive-foreground': HSL;
18
+ 'success': HSL;
19
+ 'success-foreground': HSL;
20
+ 'warning': HSL;
21
+ 'warning-foreground': HSL;
22
+ 'overlay': HSL;
23
+ 'muted': HSL;
24
+ 'border': HSL;
25
+ 'shadow': HSL;
26
+ }
27
+ export interface ThemeFoundation {
28
+ 'base-font-size'?: SizeUnit;
29
+ 'radius': SizeUnit;
30
+ 'border-width': SizeUnit;
31
+ 'font-family'?: string;
32
+ }
33
+ export interface ThemePresetOverrides {
34
+ /**
35
+ * Theme name
36
+ * @default undefined
37
+ */
38
+ name?: string;
39
+ /**
40
+ * Theme colors
41
+ * @default undefined
42
+ */
43
+ colors?: {
44
+ light?: Partial<ThemeColors>;
45
+ dark?: Partial<ThemeColors>;
46
+ };
47
+ /**
48
+ * Theme foundation
49
+ * @default undefined
50
+ */
51
+ foundation?: Partial<ThemeFoundation>;
52
+ }
53
+ export interface ThemePreset {
54
+ /**
55
+ * Theme name
56
+ */
57
+ name: string;
58
+ colors: {
59
+ light: ThemeColors;
60
+ dark: ThemeColors;
61
+ };
62
+ foundation: ThemeFoundation;
63
+ }
64
+ export type ThemePresetName = 'mazUi' | 'ocean' | 'pristine' | 'obsidian' | 'maz-ui';
65
+ export type ColorMode = 'light' | 'dark' | 'auto';
66
+ export type DarkModeStrategy = 'class' | 'media';
67
+ export type Strategy = 'runtime' | 'buildtime' | 'hybrid';
68
+ export interface ThemeConfig {
69
+ /**
70
+ * Theme preset to use
71
+ * @description Can be a predefined preset name or a custom preset object
72
+ * @default mazUi preset
73
+ */
74
+ preset?: ThemePreset | ThemePresetName;
75
+ /**
76
+ * Custom preset overrides
77
+ * @description Allows customizing specific parts of the preset without redefining it entirely
78
+ * @default undefined
79
+ */
80
+ overrides?: ThemePresetOverrides;
81
+ /**
82
+ * CSS generation strategy
83
+ * @description
84
+ * - `runtime`: CSS generated and injected dynamically on client-side
85
+ * - `buildtime`: CSS generated at build time and included in bundle
86
+ * - `hybrid`: Critical CSS injected inline, full CSS loaded asynchronously (recommended)
87
+ * @default 'hybrid'
88
+ */
89
+ strategy?: Strategy;
90
+ /**
91
+ * Dark mode handling
92
+ * @description
93
+ * - `class`: Dark mode activated with `.dark` class
94
+ * - `media`: Dark mode based on `prefers-color-scheme` (automatic detection of system preferences)
95
+ * @default 'class'
96
+ */
97
+ darkModeStrategy?: DarkModeStrategy;
98
+ /**
99
+ * Color mode
100
+ * @description
101
+ * - `light`: Light mode
102
+ * - `dark`: Dark mode
103
+ * - `auto`: Automatic detection of system preferences
104
+ * @default 'auto'
105
+ */
106
+ colorMode?: ColorMode;
107
+ }
108
+ export interface ColorScale {
109
+ 50: string;
110
+ 100: string;
111
+ 200: string;
112
+ 300: string;
113
+ 400: string;
114
+ 500: string;
115
+ 600: string;
116
+ 700: string;
117
+ 800: string;
118
+ 900: string;
119
+ }
120
+ export interface ThemeState {
121
+ currentPreset: ThemePreset;
122
+ colorMode: ColorMode;
123
+ isDark: boolean;
124
+ strategy: Strategy;
125
+ darkModeStrategy: DarkModeStrategy;
126
+ }
127
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { ColorScale } from '../types';
2
+ export declare function parseHSL(hsl: string): {
3
+ h: number;
4
+ s: number;
5
+ l: number;
6
+ };
7
+ export declare function formatHSL(h: number, s: number, l: number): string;
8
+ export declare function generateColorScale(baseColor: string): ColorScale;
9
+ export declare function getContrastColor(baseColor: string): string;
10
+ export declare function adjustColorLightness(baseColor: string, adjustment: number): string;
11
+ //# sourceMappingURL=color-utils.d.ts.map
@@ -0,0 +1 @@
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;AAE1C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAUzE;AAED,wBAAgB,SAAS,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAKjE;AAsCD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAgChE;AAED,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAIlF"}
@@ -0,0 +1,3 @@
1
+ export declare function getCookie(key: string): string | null;
2
+ export declare function setCookie(key: string, value: string): void;
3
+ //# sourceMappingURL=cookie-storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cookie-storage.d.ts","sourceRoot":"","sources":["../../../src/utils/cookie-storage.ts"],"names":[],"mappings":"AAAA,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAUpD;AAED,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI,CAK1D"}
@@ -0,0 +1,46 @@
1
+ import { DarkModeStrategy, ThemeColors, ThemeFoundation, ThemePreset } from '../types';
2
+ type ThemeMode = 'light' | 'dark' | 'both';
3
+ export interface CriticalCSSOptions {
4
+ /** Critical color variables to include */
5
+ criticalColors?: (keyof ThemeColors)[];
6
+ /** Critical foundation variables to include */
7
+ criticalFoundation?: (keyof ThemeFoundation)[];
8
+ /** Theme mode to generate */
9
+ mode?: ThemeMode;
10
+ /** Dark mode selector: 'class' (.dark) | 'media' (@media) */
11
+ darkSelectorStrategy?: DarkModeStrategy;
12
+ /** CSS variables prefix */
13
+ prefix?: string;
14
+ }
15
+ export interface FullCSSOptions {
16
+ /** Critical variables to exclude (to avoid duplication) */
17
+ excludeCritical?: (keyof ThemeColors | keyof ThemeFoundation)[];
18
+ /** Theme mode to generate */
19
+ mode?: ThemeMode;
20
+ /** Dark mode selector: 'class' (.dark) | 'media' (@media) */
21
+ darkSelectorStrategy?: DarkModeStrategy;
22
+ /** CSS variables prefix */
23
+ prefix?: string;
24
+ /** Include color scales (50-900) */
25
+ includeColorScales?: boolean;
26
+ }
27
+ /**
28
+ * Generates critical CSS to prevent FOUC
29
+ * Contains only essential variables
30
+ */
31
+ export declare function generateCriticalCSS(preset: ThemePreset, options?: CriticalCSSOptions): string;
32
+ /**
33
+ * Generates full CSS without critical variables
34
+ * Avoids duplication with critical CSS
35
+ */
36
+ export declare function generateFullCSS(preset: ThemePreset, options?: FullCSSOptions): string;
37
+ /**
38
+ * Injects CSS into the DOM
39
+ */
40
+ export declare function injectCSS(css: string, id?: string): void;
41
+ /**
42
+ * Supprime le CSS du DOM
43
+ */
44
+ export declare function removeCSS(id?: string): void;
45
+ export {};
46
+ //# sourceMappingURL=css-generator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"css-generator.d.ts","sourceRoot":"","sources":["../../../src/utils/css-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAO3F,KAAK,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAA;AAE1C,MAAM,WAAW,kBAAkB;IACjC,0CAA0C;IAC1C,cAAc,CAAC,EAAE,CAAC,MAAM,WAAW,CAAC,EAAE,CAAA;IACtC,+CAA+C;IAC/C,kBAAkB,CAAC,EAAE,CAAC,MAAM,eAAe,CAAC,EAAE,CAAA;IAC9C,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,gBAAgB,CAAA;IACvC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,eAAe,CAAC,EAAE,CAAC,MAAM,WAAW,GAAG,MAAM,eAAe,CAAC,EAAE,CAAA;IAC/D,6BAA6B;IAC7B,IAAI,CAAC,EAAE,SAAS,CAAA;IAChB,6DAA6D;IAC7D,oBAAoB,CAAC,EAAE,gBAAgB,CAAA;IACvC,2BAA2B;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,oCAAoC;IACpC,kBAAkB,CAAC,EAAE,OAAO,CAAA;CAC7B;AAoCD;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAsCR;AAMD;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EACnB,OAAO,GAAE,cAAmB,GAC3B,MAAM,CA0CR;AA+ID;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,GAAE,MAAyB,GAAG,IAAI,CAa1E;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,EAAE,GAAE,MAAyB,GAAG,IAAI,CAQ7D"}
@@ -0,0 +1,4 @@
1
+ import { ColorMode } from '../types';
2
+ export declare function getColorMode(colorMode?: ColorMode): ColorMode;
3
+ export declare function getSystemPrefersDark(): "light" | "dark";
4
+ //# sourceMappingURL=get-color-mode.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-color-mode.d.ts","sourceRoot":"","sources":["../../../src/utils/get-color-mode.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAA;AAGzC,wBAAgB,YAAY,CAAC,SAAS,CAAC,EAAE,SAAS,GAAG,SAAS,CAW7D;AAED,wBAAgB,oBAAoB,qBAInC"}
@@ -0,0 +1,5 @@
1
+ import { MazUiThemeOptions } from '../plugin';
2
+ import { ThemePreset, ThemePresetOverrides } from '../types';
3
+ export declare function isPresetObject(preset: MazUiThemeOptions['preset'] | ThemePresetOverrides): preset is ThemePreset;
4
+ export declare function getPreset(preset?: MazUiThemeOptions['preset']): Promise<ThemePreset>;
5
+ //# sourceMappingURL=get-preset.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-preset.d.ts","sourceRoot":"","sources":["../../../src/utils/get-preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAA;AAClD,OAAO,KAAK,EAAE,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAEjE,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,CAAC,QAAQ,CAAC,GAAG,oBAAoB,GAAG,MAAM,IAAI,WAAW,CAEhH;AAED,wBAAsB,SAAS,CAAC,MAAM,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,wBA0BnE"}
@@ -0,0 +1,6 @@
1
+ export * from './color-utils';
2
+ export * from './cookie-storage';
3
+ export * from './css-generator';
4
+ export * from './get-preset';
5
+ export * from './preset-merger';
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAA;AAC7B,cAAc,kBAAkB,CAAA;AAChC,cAAc,iBAAiB,CAAA;AAC/B,cAAc,cAAc,CAAA;AAC5B,cAAc,iBAAiB,CAAA"}
@@ -0,0 +1,4 @@
1
+ import { ThemePreset, ThemePresetOverrides } from '../types';
2
+ export declare function mergePresets(base: ThemePreset, overrides: ThemePresetOverrides): ThemePreset;
3
+ export declare function deepMerge<T extends Record<string, any>>(target: T, source: Partial<T>): T;
4
+ //# sourceMappingURL=preset-merger.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"preset-merger.d.ts","sourceRoot":"","sources":["../../../src/utils/preset-merger.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAe,WAAW,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAE9E,wBAAgB,YAAY,CAAC,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,oBAAoB,GAAG,WAAW,CAY5F;AAYD,wBAAgB,SAAS,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAkBzF"}
@@ -0,0 +1,77 @@
1
+ function l(n) {
2
+ const t = n.match(/^(\d+(?:\.\d+)?)\s+(\d+(?:\.\d+)?)%\s+(\d+(?:\.\d+)?)%$/);
3
+ if (!t)
4
+ throw new Error(`Invalid HSL format: ${n}`);
5
+ return {
6
+ h: Number.parseFloat(t[1]),
7
+ s: Number.parseFloat(t[2]),
8
+ l: Number.parseFloat(t[3])
9
+ };
10
+ }
11
+ function i(n, t, o) {
12
+ const r = Math.round(n * 10) / 10, s = Math.round(t * 10) / 10, e = Math.round(o * 10) / 10;
13
+ return `${r} ${s}% ${e}%`;
14
+ }
15
+ const M = {
16
+ 50: 45,
17
+ // Base + 45% = very light
18
+ 100: 40,
19
+ // Base + 40% = light
20
+ 200: 30,
21
+ // Base + 30% = moderately light
22
+ 300: 20,
23
+ // Base + 20% = light-medium
24
+ 400: 10,
25
+ // Base + 10% = slightly lighter
26
+ 500: 0,
27
+ // Base (original color)
28
+ 600: -10,
29
+ // Base - 10% = slightly darker
30
+ 700: -20,
31
+ // Base - 20% = dark
32
+ 800: -30,
33
+ // Base - 30% = very dark
34
+ 900: -40
35
+ // Base - 40% = extremely dark
36
+ };
37
+ function S(n, t, o) {
38
+ if (t === n)
39
+ return 1;
40
+ const r = Math.min(o / 100, 1), s = Math.abs(t - n);
41
+ if (t < n) {
42
+ const e = s / 500 * 0.25 * r;
43
+ return Math.max(0.3, 1 - e);
44
+ } else {
45
+ const e = s / 400 * 0.15 * r;
46
+ return Math.min(1.3, 1 + e);
47
+ }
48
+ }
49
+ function L(n) {
50
+ const { h: t, s: o, l: r } = l(n), s = 500, e = r, d = [50, 100, 200, 300, 400, 500, 600, 700, 800, 900], c = {};
51
+ return d.forEach((a) => {
52
+ if (a === s)
53
+ c[a.toString()] = i(t, o, r);
54
+ else {
55
+ const h = M[a];
56
+ let u = e + h;
57
+ u = Math.min(95, Math.max(5, u));
58
+ const m = S(s, a, o), f = Math.min(100, Math.max(5, o * m));
59
+ c[a.toString()] = i(t, f, u);
60
+ }
61
+ }), c;
62
+ }
63
+ function p(n) {
64
+ const { l: t } = l(n);
65
+ return t > 50 ? "0 0% 0%" : "0 0% 100%";
66
+ }
67
+ function F(n, t) {
68
+ const { h: o, s: r, l: s } = l(n), e = Math.max(0, Math.min(100, s + t));
69
+ return i(o, r, e);
70
+ }
71
+ export {
72
+ F as adjustColorLightness,
73
+ i as formatHSL,
74
+ L as generateColorScale,
75
+ p as getContrastColor,
76
+ l as parseHSL
77
+ };
@@ -0,0 +1,13 @@
1
+ function c(e) {
2
+ if (typeof document > "u")
3
+ return null;
4
+ const t = document.cookie.split(";").find((n) => n.trim().startsWith(`${e}=`));
5
+ return t ? decodeURIComponent(t.split("=")[1]) : null;
6
+ }
7
+ function u(e, o) {
8
+ typeof document > "u" || (document.cookie = `${e}=${encodeURIComponent(o)}; path=/; max-age=${60 * 60 * 24 * 365}; SameSite=Lax`);
9
+ }
10
+ export {
11
+ c as getCookie,
12
+ u as setCookie
13
+ };