@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.
- package/LICENSE +21 -0
- package/README.md +163 -0
- package/dist/build/index.js +52 -0
- package/dist/composables/index.js +11 -0
- package/dist/composables/useTheme.js +95 -0
- package/dist/define-preset.js +11 -0
- package/dist/index.js +36 -0
- package/dist/plugin/index.js +8 -0
- package/dist/plugin.js +65 -0
- package/dist/presets/index.js +10 -0
- package/dist/presets/mazUi.js +62 -0
- package/dist/presets/obsidian.js +65 -0
- package/dist/presets/ocean.js +63 -0
- package/dist/presets/pristine.js +62 -0
- package/dist/types/build/index.d.ts +37 -0
- package/dist/types/build/index.d.ts.map +1 -0
- package/dist/types/composables/useTheme.d.ts +16 -0
- package/dist/types/composables/useTheme.d.ts.map +1 -0
- package/dist/types/define-preset.d.ts +44 -0
- package/dist/types/define-preset.d.ts.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/plugin.d.ts +61 -0
- package/dist/types/plugin.d.ts.map +1 -0
- package/dist/types/presets/index.d.ts +5 -0
- package/dist/types/presets/index.d.ts.map +1 -0
- package/dist/types/presets/mazUi.d.ts +3 -0
- package/dist/types/presets/mazUi.d.ts.map +1 -0
- package/dist/types/presets/obsidian.d.ts +3 -0
- package/dist/types/presets/obsidian.d.ts.map +1 -0
- package/dist/types/presets/ocean.d.ts +3 -0
- package/dist/types/presets/ocean.d.ts.map +1 -0
- package/dist/types/presets/pristine.d.ts +3 -0
- package/dist/types/presets/pristine.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +127 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/utils/color-utils.d.ts +11 -0
- package/dist/types/utils/color-utils.d.ts.map +1 -0
- package/dist/types/utils/cookie-storage.d.ts +3 -0
- package/dist/types/utils/cookie-storage.d.ts.map +1 -0
- package/dist/types/utils/css-generator.d.ts +46 -0
- package/dist/types/utils/css-generator.d.ts.map +1 -0
- package/dist/types/utils/get-color-mode.d.ts +4 -0
- package/dist/types/utils/get-color-mode.d.ts.map +1 -0
- package/dist/types/utils/get-preset.d.ts +5 -0
- package/dist/types/utils/get-preset.d.ts.map +1 -0
- package/dist/types/utils/index.d.ts +6 -0
- package/dist/types/utils/index.d.ts.map +1 -0
- package/dist/types/utils/preset-merger.d.ts +4 -0
- package/dist/types/utils/preset-merger.d.ts.map +1 -0
- package/dist/utils/color-utils.js +77 -0
- package/dist/utils/cookie-storage.js +13 -0
- package/dist/utils/css-generator.js +166 -0
- package/dist/utils/get-color-mode.js +14 -0
- package/dist/utils/get-preset.js +28 -0
- package/dist/utils/index.js +22 -0
- package/dist/utils/preset-merger.js +34 -0
- 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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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 @@
|
|
|
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
|
+
};
|