@maz-ui/themes 5.0.0-canary.ef64a02.0 → 5.0.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/README.md +62 -17
- package/dist/build/index.d.ts +10 -13
- package/dist/build/index.d.ts.map +1 -1
- package/dist/build/index.js +42 -1
- package/dist/composables/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 +95 -1
- package/dist/define-preset.js +8 -1
- package/dist/index.d.ts +0 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -1
- package/dist/plugin.js +12 -1
- package/dist/presets/_defaults.d.ts +33 -6
- package/dist/presets/_defaults.d.ts.map +1 -1
- package/dist/presets/_defaults.js +34 -1
- package/dist/presets/index.js +6 -1
- package/dist/presets/mazUi.d.ts.map +1 -1
- package/dist/presets/mazUi.js +90 -1
- package/dist/presets/nova.d.ts.map +1 -1
- package/dist/presets/nova.js +88 -1
- package/dist/presets/obsidian.d.ts.map +1 -1
- package/dist/presets/obsidian.js +90 -1
- package/dist/presets/ocean.d.ts.map +1 -1
- package/dist/presets/ocean.js +90 -1
- package/dist/presets/pristine.d.ts.map +1 -1
- package/dist/presets/pristine.js +94 -1
- package/dist/types/index.d.ts +62 -3
- 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 +162 -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 +17 -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 +12 -0
- package/dist/utils/cookie-storage.d.ts +17 -7
- package/dist/utils/cookie-storage.d.ts.map +1 -1
- package/dist/utils/cookie-storage.js +25 -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 +75 -4
- package/dist/utils/get-color-mode.js +26 -1
- package/dist/utils/get-preset.js +30 -1
- package/dist/utils/index.d.ts +2 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +13 -1
- package/dist/utils/inject-theme-css.d.ts.map +1 -1
- package/dist/utils/inject-theme-css.js +12 -1
- package/dist/utils/inject.js +7 -1
- package/dist/utils/no-transition.js +11 -5
- package/dist/utils/preset-merger.d.ts.map +1 -1
- package/dist/utils/preset-merger.js +72 -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 +133 -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 +13 -1
- package/dist/utils/use-mutation-observer.js +11 -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 +11 -0
- package/package.json +28 -14
- 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
|
@@ -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,72 @@
|
|
|
1
|
-
|
|
1
|
+
//#region src/utils/preset-merger.ts
|
|
2
|
+
function mergePresets(base, overrides) {
|
|
3
|
+
return {
|
|
4
|
+
name: overrides.name || base.name,
|
|
5
|
+
foundation: {
|
|
6
|
+
...base.foundation,
|
|
7
|
+
...overrides.foundation
|
|
8
|
+
},
|
|
9
|
+
scales: mergeScales(base.scales, overrides.scales),
|
|
10
|
+
components: mergeComponents(base.components, overrides.components),
|
|
11
|
+
colors: {
|
|
12
|
+
light: mergeColors(base.colors.light, overrides.colors?.light),
|
|
13
|
+
dark: mergeColors(base.colors.dark, overrides.colors?.dark)
|
|
14
|
+
}
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
function mergeScales(base, overrides) {
|
|
18
|
+
return overrides ? {
|
|
19
|
+
rounded: {
|
|
20
|
+
...base.rounded,
|
|
21
|
+
...overrides.rounded
|
|
22
|
+
},
|
|
23
|
+
shadow: {
|
|
24
|
+
...base.shadow,
|
|
25
|
+
...overrides.shadow
|
|
26
|
+
}
|
|
27
|
+
} : base;
|
|
28
|
+
}
|
|
29
|
+
function mergeComponents(base, overrides) {
|
|
30
|
+
if (base || overrides) return {
|
|
31
|
+
btn: {
|
|
32
|
+
...base?.btn,
|
|
33
|
+
...overrides?.btn
|
|
34
|
+
},
|
|
35
|
+
container: { bg: {
|
|
36
|
+
...base?.container?.bg,
|
|
37
|
+
...overrides?.container?.bg
|
|
38
|
+
} },
|
|
39
|
+
input: {
|
|
40
|
+
...base?.input,
|
|
41
|
+
...overrides?.input,
|
|
42
|
+
bg: {
|
|
43
|
+
...base?.input?.bg,
|
|
44
|
+
...overrides?.input?.bg
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
dialog: {
|
|
48
|
+
...base?.dialog,
|
|
49
|
+
...overrides?.dialog
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function mergeColors(base, overrides) {
|
|
54
|
+
return overrides ? {
|
|
55
|
+
...base,
|
|
56
|
+
...overrides
|
|
57
|
+
} : base;
|
|
58
|
+
}
|
|
59
|
+
function deepMerge(target, source) {
|
|
60
|
+
let result = { ...target };
|
|
61
|
+
for (let key in source) {
|
|
62
|
+
let sourceValue = source[key];
|
|
63
|
+
let targetValue = result[key];
|
|
64
|
+
sourceValue !== void 0 && (result[key] = isObject(sourceValue) && isObject(targetValue) ? deepMerge(targetValue, sourceValue) : sourceValue);
|
|
65
|
+
}
|
|
66
|
+
return result;
|
|
67
|
+
}
|
|
68
|
+
function isObject(value) {
|
|
69
|
+
return typeof value == "object" && !!value && !Array.isArray(value);
|
|
70
|
+
}
|
|
71
|
+
//#endregion
|
|
72
|
+
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;AA0GD;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,gBAAgB,CAmDvE"}
|
|
@@ -1 +1,133 @@
|
|
|
1
|
-
import{
|
|
1
|
+
import { injectColorSchemeMeta, resolveColorSchemeContent } from "./color-scheme-meta.js";
|
|
2
|
+
import { getSavedPreset, savePreset } from "./cookie-storage.js";
|
|
3
|
+
import { getPreset } from "./get-preset.js";
|
|
4
|
+
import { injectThemeCSS } from "./inject-theme-css.js";
|
|
5
|
+
import { mergePresets } from "./preset-merger.js";
|
|
6
|
+
import { getColorMode, getSavedColorMode, getSystemColorMode, saveResolvedColorMode } from "./get-color-mode.js";
|
|
7
|
+
import { updateDocumentClass } from "./update-document-class.js";
|
|
8
|
+
import { useMutationObserver } from "./use-mutation-observer.js";
|
|
9
|
+
import { isServer } from "@maz-ui/utils/helpers/isServer";
|
|
10
|
+
import { ref, watch } from "vue";
|
|
11
|
+
//#region src/utils/setup-theme.ts
|
|
12
|
+
function noop() {}
|
|
13
|
+
function watchColorSchemeFromMedia(themeState) {
|
|
14
|
+
if (isServer()) return noop;
|
|
15
|
+
let mediaQuery = globalThis.matchMedia("(prefers-color-scheme: dark)");
|
|
16
|
+
let onChange = () => {
|
|
17
|
+
if (themeState.value.colorMode !== "auto") return;
|
|
18
|
+
let next = mediaQuery.matches ? "dark" : "light";
|
|
19
|
+
updateDocumentClass("auto", themeState.value), themeState.value.isDark = next === "dark", saveResolvedColorMode(next);
|
|
20
|
+
};
|
|
21
|
+
mediaQuery.addEventListener("change", onChange);
|
|
22
|
+
let stopWatch = watch(() => themeState.value.colorMode, (colorMode) => {
|
|
23
|
+
let isDark = colorMode === "auto" ? getSystemColorMode() === "dark" : colorMode === "dark";
|
|
24
|
+
updateDocumentClass(colorMode, themeState.value), injectColorSchemeMeta(resolveColorSchemeContent(themeState.value.mode, colorMode)), colorMode === "auto" && saveResolvedColorMode(isDark ? "dark" : "light");
|
|
25
|
+
});
|
|
26
|
+
return () => {
|
|
27
|
+
mediaQuery.removeEventListener("change", onChange), stopWatch();
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
function watchMutationClassOnHtmlElement(themeState) {
|
|
31
|
+
return isServer() ? noop : useMutationObserver(document.documentElement, () => {
|
|
32
|
+
if (isServer() || !themeState.value) return;
|
|
33
|
+
let active = document.documentElement.classList.contains(themeState.value.darkClass) ? "dark" : "light";
|
|
34
|
+
themeState.value.isDark = active === "dark", themeState.value.colorMode !== active && themeState.value.colorMode !== "auto" && (themeState.value.colorMode = active);
|
|
35
|
+
}, { attributes: !0 }).stop;
|
|
36
|
+
}
|
|
37
|
+
var defaultOptions = {
|
|
38
|
+
strategy: "runtime",
|
|
39
|
+
overrides: {},
|
|
40
|
+
darkModeStrategy: "class",
|
|
41
|
+
preset: void 0,
|
|
42
|
+
mode: "both",
|
|
43
|
+
darkClass: "dark",
|
|
44
|
+
lightClass: "light",
|
|
45
|
+
colorMode: "auto",
|
|
46
|
+
persistPreset: !0
|
|
47
|
+
};
|
|
48
|
+
function resolveConfig(options) {
|
|
49
|
+
return {
|
|
50
|
+
...defaultOptions,
|
|
51
|
+
...options,
|
|
52
|
+
colorMode: getSavedColorMode() ?? options.colorMode ?? (options.mode === "dark" ? "dark" : "auto")
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
function createThemeState(options, config) {
|
|
56
|
+
let isDark = config.colorMode === "auto" && config.mode === "both" ? getSystemColorMode() === "dark" || getColorMode(config.colorMode) === "dark" : getColorMode(config.colorMode) === "dark" || config.mode === "dark";
|
|
57
|
+
!isServer() && config.colorMode === "auto" && saveResolvedColorMode(isDark ? "dark" : "light");
|
|
58
|
+
let themeState = ref({
|
|
59
|
+
strategy: config.strategy,
|
|
60
|
+
darkClass: config.darkClass,
|
|
61
|
+
lightClass: config.lightClass,
|
|
62
|
+
darkModeStrategy: config.darkModeStrategy,
|
|
63
|
+
colorMode: config.colorMode,
|
|
64
|
+
mode: config.mode,
|
|
65
|
+
preset: void 0,
|
|
66
|
+
persistPreset: config.persistPreset,
|
|
67
|
+
isDark: options._isDark || isDark
|
|
68
|
+
});
|
|
69
|
+
if (!isServer() && config.darkModeStrategy === "class" && config.mode === "both") {
|
|
70
|
+
let html = document.documentElement;
|
|
71
|
+
html.classList.contains(config.darkClass) || html.classList.contains(config.lightClass) || updateDocumentClass(themeState.value.colorMode, themeState.value);
|
|
72
|
+
} else updateDocumentClass(themeState.value.colorMode, themeState.value);
|
|
73
|
+
return themeState;
|
|
74
|
+
}
|
|
75
|
+
function finalizeTheme(themeState, preset, config, baseName) {
|
|
76
|
+
let finalPreset = preset && Object.keys(config.overrides).length > 0 ? mergePresets(preset, config.overrides) : preset;
|
|
77
|
+
if (finalPreset && (themeState.value.preset = finalPreset, config.persistPreset && savePreset(baseName, finalPreset.name)), config.strategy === "buildtime" || !finalPreset) return {
|
|
78
|
+
themeState,
|
|
79
|
+
cleanup: noop
|
|
80
|
+
};
|
|
81
|
+
injectThemeCSS(finalPreset, config);
|
|
82
|
+
let stopMedia = watchColorSchemeFromMedia(themeState);
|
|
83
|
+
let stopMutation = watchMutationClassOnHtmlElement(themeState);
|
|
84
|
+
return {
|
|
85
|
+
themeState,
|
|
86
|
+
cleanup: () => {
|
|
87
|
+
stopMedia(), stopMutation();
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function swapPreset(themeState, preset, config, baseName) {
|
|
92
|
+
let final = Object.keys(config.overrides).length > 0 ? mergePresets(preset, config.overrides) : preset;
|
|
93
|
+
themeState.value.preset = final, savePreset(baseName, final.name), injectThemeCSS(final, config);
|
|
94
|
+
}
|
|
95
|
+
var DEFAULT_PRESET_NAME = "maz-ui";
|
|
96
|
+
function getConfiguredPresetName(preset) {
|
|
97
|
+
return typeof preset == "string" ? preset : DEFAULT_PRESET_NAME;
|
|
98
|
+
}
|
|
99
|
+
function setupTheme(options) {
|
|
100
|
+
let config = resolveConfig(options);
|
|
101
|
+
let themeState = createThemeState(options, config);
|
|
102
|
+
injectColorSchemeMeta(resolveColorSchemeContent(themeState.value.mode, themeState.value.colorMode));
|
|
103
|
+
let saved = config.persistPreset ? getSavedPreset() : null;
|
|
104
|
+
let presetObject = config.preset && typeof config.preset != "string" ? config.preset : null;
|
|
105
|
+
if (presetObject || config.strategy === "buildtime") {
|
|
106
|
+
let baseName = presetObject ? presetObject.name : getConfiguredPresetName(config.preset);
|
|
107
|
+
let setup = finalizeTheme(themeState, presetObject ?? config.preset, config, baseName);
|
|
108
|
+
let activeOverride = saved && saved.base === baseName && saved.active !== baseName ? saved.active : null;
|
|
109
|
+
return activeOverride && config.strategy !== "buildtime" && getPreset(activeOverride).then((preset) => swapPreset(themeState, preset, config, baseName)).catch(() => savePreset(baseName, baseName)), setup;
|
|
110
|
+
}
|
|
111
|
+
return (async () => {
|
|
112
|
+
let basePreset = await getPreset(config.preset);
|
|
113
|
+
let baseName = basePreset.name;
|
|
114
|
+
if (saved && saved.base === baseName && saved.active !== baseName) try {
|
|
115
|
+
return {
|
|
116
|
+
preset: await getPreset(saved.active),
|
|
117
|
+
baseName
|
|
118
|
+
};
|
|
119
|
+
} catch {}
|
|
120
|
+
return {
|
|
121
|
+
preset: basePreset,
|
|
122
|
+
baseName
|
|
123
|
+
};
|
|
124
|
+
})().catch((error) => (console.error("[@maz-ui/themes] Failed to resolve preset", error), {
|
|
125
|
+
preset: void 0,
|
|
126
|
+
baseName: getConfiguredPresetName(config.preset)
|
|
127
|
+
})).then(({ preset, baseName }) => finalizeTheme(themeState, preset, config, baseName)), {
|
|
128
|
+
themeState,
|
|
129
|
+
cleanup: noop
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
//#endregion
|
|
133
|
+
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,13 @@
|
|
|
1
|
-
import{noTransition}from"./no-transition.js";
|
|
1
|
+
import { noTransition } from "./no-transition.js";
|
|
2
|
+
import { getSystemColorMode } from "./get-color-mode.js";
|
|
3
|
+
//#region src/utils/update-document-class.ts
|
|
4
|
+
function updateDocumentClass(colorMode, state) {
|
|
5
|
+
if (typeof document > "u" || !state || state.darkModeStrategy === "media" || state.mode !== "both") return;
|
|
6
|
+
let classToAdd = (colorMode === "auto" ? getSystemColorMode() : colorMode) === "dark" ? state.darkClass : state.lightClass;
|
|
7
|
+
noTransition(() => {
|
|
8
|
+
let html = document.documentElement;
|
|
9
|
+
html.classList.remove(state.darkClass, state.lightClass), html.classList.add(classToAdd);
|
|
10
|
+
});
|
|
11
|
+
}
|
|
12
|
+
//#endregion
|
|
13
|
+
export { updateDocumentClass };
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
import{isServer}from"@maz-ui/utils/helpers/isServer";
|
|
1
|
+
import { isServer } from "@maz-ui/utils/helpers/isServer";
|
|
2
|
+
//#region src/utils/use-mutation-observer.ts
|
|
3
|
+
function useMutationObserver(target, callback, options = {}) {
|
|
4
|
+
if (isServer() || !("MutationObserver" in globalThis)) return { stop: () => {} };
|
|
5
|
+
let observer = new MutationObserver(callback);
|
|
6
|
+
return observer.observe(target, options), { stop: () => {
|
|
7
|
+
observer.disconnect();
|
|
8
|
+
} };
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { useMutationObserver };
|
|
@@ -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,11 @@
|
|
|
1
|
+
//#region src/utils/view-transition.ts
|
|
2
|
+
async function runViewTransition(callback) {
|
|
3
|
+
if (typeof document > "u") {
|
|
4
|
+
callback();
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
let api = document.startViewTransition;
|
|
8
|
+
typeof api == "function" ? await api.call(document, callback).finished.catch(() => {}) : callback();
|
|
9
|
+
}
|
|
10
|
+
//#endregion
|
|
11
|
+
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
|
|
4
|
+
"version": "5.0.0",
|
|
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",
|
|
@@ -79,16 +89,20 @@
|
|
|
79
89
|
"types": "./dist/index.d.ts",
|
|
80
90
|
"files": [
|
|
81
91
|
"LICENSE",
|
|
92
|
+
"README.md",
|
|
82
93
|
"dist"
|
|
83
94
|
],
|
|
84
95
|
"engines": {
|
|
85
|
-
"node": ">=
|
|
96
|
+
"node": ">=22.12.0"
|
|
86
97
|
},
|
|
87
98
|
"peerDependencies": {
|
|
88
99
|
"vue": ">=3.5.0 <4.0.0"
|
|
89
100
|
},
|
|
90
101
|
"dependencies": {
|
|
91
|
-
"@maz-ui/utils": "5.0.0
|
|
102
|
+
"@maz-ui/utils": "5.0.0"
|
|
103
|
+
},
|
|
104
|
+
"devDependencies": {
|
|
105
|
+
"@maz-ui/vite-config": "0.0.0"
|
|
92
106
|
},
|
|
93
107
|
"lint-staged": {
|
|
94
108
|
"*.{js,ts,vue,mjs,mts,cjs,md,yml,json}": "cross-env NODE_ENV=production eslint --fix"
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
import { ColorScale } from '../types';
|
|
2
|
-
/**
|
|
3
|
-
* @deprecated Prefer `parseColor` from `./color-parser` — it accepts any CSS color format
|
|
4
|
-
* (hsl(), rgb(), oklch(), #hex, or the legacy raw "H S% L%"). This alias is kept for
|
|
5
|
-
* internal backwards-compatibility during the v5 migration and may be removed in v6.
|
|
6
|
-
*/
|
|
7
|
-
export declare function parseHSL(value: string): {
|
|
8
|
-
h: number;
|
|
9
|
-
s: number;
|
|
10
|
-
l: number;
|
|
11
|
-
};
|
|
12
|
-
/**
|
|
13
|
-
* Generate an 11-step color scale from a base color.
|
|
14
|
-
*
|
|
15
|
-
* The base color may be given in any CSS color format (`hsl()`, `rgb()`, `oklch()`, `#hex`,
|
|
16
|
-
* or the legacy raw `"H S% L%"`). Stepping happens in OKLch space (perceptually uniform),
|
|
17
|
-
* and the output is emitted as `oklch(L C H)` strings.
|
|
18
|
-
*/
|
|
19
|
-
export declare function generateColorScale(baseColor: string): ColorScale;
|
|
20
|
-
/**
|
|
21
|
-
* Return a black or white `oklch()` string suitable for text drawn on top of `baseColor`.
|
|
22
|
-
*
|
|
23
|
-
* The threshold (L=0.62) is calibrated for OKLch lightness — perceptually equivalent
|
|
24
|
-
* to a mid-gray, so colors above that get black text, below it white text.
|
|
25
|
-
*/
|
|
26
|
-
export declare function getContrastColor(baseColor: string): string;
|
|
27
|
-
/**
|
|
28
|
-
* Shift the lightness of a color by `adjustment`. The adjustment is given in
|
|
29
|
-
* OKLch L units (0..1) — e.g. `0.1` to lighten by 10% perceptual luminance.
|
|
30
|
-
*
|
|
31
|
-
* The input can be in any CSS color format; the output is always a complete
|
|
32
|
-
* `oklch()` string.
|
|
33
|
-
*/
|
|
34
|
-
export declare function adjustColorLightness(baseColor: string, adjustment: number): string;
|
|
35
|
-
//# sourceMappingURL=color-utils.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"color-utils.d.ts","sourceRoot":"","sources":["../../src/utils/color-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,UAAU,CAAA;AAG1C;;;;GAIG;AACH,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,CAE3E;AAuCD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,UAAU,CAmBhE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAG1D;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM,CAIlF"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{formatAsOklch,parseColor,parseColorAsOklch}from"./color-parser.js";function parseHSL(value){return parseColor(value)}var LIGHTNESS_OFFSETS={50:.42,100:.35,200:.26,300:.17,400:.08,500:0,600:-.07,700:-.14,800:-.21,900:-.28,950:-.34};function clamp(n,min,max){return Math.max(min,Math.min(max,n))}function chromaFalloff(targetL){return targetL>=.96?Math.max(0,1-(targetL-.96)*12):targetL<=.18?Math.max(0,targetL/.18):1}function generateColorScale(baseColor){let base=parseColorAsOklch(baseColor);let scale={};let variants=Object.keys(LIGHTNESS_OFFSETS).map(Number);for(let variant of variants){if(variant===500){scale[variant]=formatAsOklch(base);continue}let offset=LIGHTNESS_OFFSETS[variant];let targetL=clamp(base.l+offset,0,1);scale[variant]=formatAsOklch({l:targetL,c:base.c*chromaFalloff(targetL),h:base.h})}return scale}function getContrastColor(baseColor){let{l}=parseColorAsOklch(baseColor);return l>.62?`oklch(0 0 0)`:`oklch(1 0 0)`}function adjustColorLightness(baseColor,adjustment){let{l,c,h}=parseColorAsOklch(baseColor);return formatAsOklch({l:clamp(l+adjustment,0,1),c,h})}export{adjustColorLightness,generateColorScale,getContrastColor,parseHSL};
|