@blocklet/theme 2.13.53 → 2.13.55
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/dist/cjs/index.js +35 -3
- package/dist/es/index.js +31 -2
- package/dist/types/index.d.ts +8 -1
- package/package.json +2 -2
package/dist/cjs/index.js
CHANGED
|
@@ -140,7 +140,10 @@ __export(src_exports, {
|
|
|
140
140
|
BLOCKLET_THEME_PREFER_KEY: () => BLOCKLET_THEME_PREFER_KEY,
|
|
141
141
|
DEFAULT_FONTS: () => DEFAULT_FONTS,
|
|
142
142
|
DID_CONNECT_THEME_DARK: () => DID_CONNECT_THEME_DARK,
|
|
143
|
-
DID_CONNECT_THEME_LIGHT: () => DID_CONNECT_THEME_LIGHT
|
|
143
|
+
DID_CONNECT_THEME_LIGHT: () => DID_CONNECT_THEME_LIGHT,
|
|
144
|
+
getDefaultThemePrefer: () => getDefaultThemePrefer,
|
|
145
|
+
isValidThemeMode: () => isValidThemeMode,
|
|
146
|
+
merge: () => merge
|
|
144
147
|
});
|
|
145
148
|
module.exports = __toCommonJS(src_exports);
|
|
146
149
|
|
|
@@ -254,15 +257,41 @@ function alpha(color, value) {
|
|
|
254
257
|
|
|
255
258
|
// src/util.ts
|
|
256
259
|
var import_deepmerge = __toESM(require_cjs());
|
|
260
|
+
var BLOCKLET_THEME_PREFER_KEY = "blocklet_theme_prefer";
|
|
257
261
|
var merge = (x, y) => {
|
|
258
262
|
return (0, import_deepmerge.default)(x, y, {
|
|
259
263
|
// 采用替换策略合并数组
|
|
260
264
|
arrayMerge: (_, source) => source
|
|
261
265
|
});
|
|
262
266
|
};
|
|
267
|
+
function isValidThemeMode(mode) {
|
|
268
|
+
return mode === "light" || mode === "dark";
|
|
269
|
+
}
|
|
270
|
+
function getDefaultThemePrefer(meta) {
|
|
271
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
272
|
+
const urlPrefer = urlParams.get("theme");
|
|
273
|
+
if (isValidThemeMode(urlPrefer)) {
|
|
274
|
+
return urlPrefer;
|
|
275
|
+
}
|
|
276
|
+
const sessionPrefer = sessionStorage.getItem(BLOCKLET_THEME_PREFER_KEY);
|
|
277
|
+
if (isValidThemeMode(sessionPrefer)) {
|
|
278
|
+
return sessionPrefer;
|
|
279
|
+
}
|
|
280
|
+
const prefer = Object.assign({}, window.blocklet, meta).theme?.prefer;
|
|
281
|
+
if (prefer === "light" || prefer === "dark") {
|
|
282
|
+
return prefer;
|
|
283
|
+
}
|
|
284
|
+
if (prefer === "system") {
|
|
285
|
+
const localPrefer = localStorage.getItem(BLOCKLET_THEME_PREFER_KEY);
|
|
286
|
+
if (isValidThemeMode(localPrefer)) {
|
|
287
|
+
return localPrefer;
|
|
288
|
+
}
|
|
289
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
290
|
+
}
|
|
291
|
+
return "light";
|
|
292
|
+
}
|
|
263
293
|
|
|
264
294
|
// src/blocklet.ts
|
|
265
|
-
var BLOCKLET_THEME_PREFER_KEY = "blocklet_theme_prefer";
|
|
266
295
|
var DEFAULT_FONTS = ["Roboto", "Helvetica", "Arial", "sans-serif"];
|
|
267
296
|
var shadows = [
|
|
268
297
|
"none",
|
|
@@ -821,5 +850,8 @@ var DID_CONNECT_THEME_DARK = merge(BLOCKLET_THEME_DARK, {
|
|
|
821
850
|
BLOCKLET_THEME_PREFER_KEY,
|
|
822
851
|
DEFAULT_FONTS,
|
|
823
852
|
DID_CONNECT_THEME_DARK,
|
|
824
|
-
DID_CONNECT_THEME_LIGHT
|
|
853
|
+
DID_CONNECT_THEME_LIGHT,
|
|
854
|
+
getDefaultThemePrefer,
|
|
855
|
+
isValidThemeMode,
|
|
856
|
+
merge
|
|
825
857
|
});
|
package/dist/es/index.js
CHANGED
|
@@ -237,15 +237,41 @@ function alpha(color, value) {
|
|
|
237
237
|
|
|
238
238
|
// src/util.ts
|
|
239
239
|
var import_deepmerge = __toESM(require_cjs());
|
|
240
|
+
var BLOCKLET_THEME_PREFER_KEY = "blocklet_theme_prefer";
|
|
240
241
|
var merge = (x, y) => {
|
|
241
242
|
return (0, import_deepmerge.default)(x, y, {
|
|
242
243
|
// 采用替换策略合并数组
|
|
243
244
|
arrayMerge: (_, source) => source
|
|
244
245
|
});
|
|
245
246
|
};
|
|
247
|
+
function isValidThemeMode(mode) {
|
|
248
|
+
return mode === "light" || mode === "dark";
|
|
249
|
+
}
|
|
250
|
+
function getDefaultThemePrefer(meta) {
|
|
251
|
+
const urlParams = new URLSearchParams(window.location.search);
|
|
252
|
+
const urlPrefer = urlParams.get("theme");
|
|
253
|
+
if (isValidThemeMode(urlPrefer)) {
|
|
254
|
+
return urlPrefer;
|
|
255
|
+
}
|
|
256
|
+
const sessionPrefer = sessionStorage.getItem(BLOCKLET_THEME_PREFER_KEY);
|
|
257
|
+
if (isValidThemeMode(sessionPrefer)) {
|
|
258
|
+
return sessionPrefer;
|
|
259
|
+
}
|
|
260
|
+
const prefer = Object.assign({}, window.blocklet, meta).theme?.prefer;
|
|
261
|
+
if (prefer === "light" || prefer === "dark") {
|
|
262
|
+
return prefer;
|
|
263
|
+
}
|
|
264
|
+
if (prefer === "system") {
|
|
265
|
+
const localPrefer = localStorage.getItem(BLOCKLET_THEME_PREFER_KEY);
|
|
266
|
+
if (isValidThemeMode(localPrefer)) {
|
|
267
|
+
return localPrefer;
|
|
268
|
+
}
|
|
269
|
+
return window.matchMedia("(prefers-color-scheme: dark)").matches ? "dark" : "light";
|
|
270
|
+
}
|
|
271
|
+
return "light";
|
|
272
|
+
}
|
|
246
273
|
|
|
247
274
|
// src/blocklet.ts
|
|
248
|
-
var BLOCKLET_THEME_PREFER_KEY = "blocklet_theme_prefer";
|
|
249
275
|
var DEFAULT_FONTS = ["Roboto", "Helvetica", "Arial", "sans-serif"];
|
|
250
276
|
var shadows = [
|
|
251
277
|
"none",
|
|
@@ -803,5 +829,8 @@ export {
|
|
|
803
829
|
BLOCKLET_THEME_PREFER_KEY,
|
|
804
830
|
DEFAULT_FONTS,
|
|
805
831
|
DID_CONNECT_THEME_DARK,
|
|
806
|
-
DID_CONNECT_THEME_LIGHT
|
|
832
|
+
DID_CONNECT_THEME_LIGHT,
|
|
833
|
+
getDefaultThemePrefer,
|
|
834
|
+
isValidThemeMode,
|
|
835
|
+
merge
|
|
807
836
|
};
|
package/dist/types/index.d.ts
CHANGED
|
@@ -53,7 +53,6 @@ declare module "@mui/material/styles/createTypography" {
|
|
|
53
53
|
color?: Record<string, string>;
|
|
54
54
|
}
|
|
55
55
|
}
|
|
56
|
-
export declare const BLOCKLET_THEME_PREFER_KEY = "blocklet_theme_prefer";
|
|
57
56
|
export declare const DEFAULT_FONTS: string[];
|
|
58
57
|
/**
|
|
59
58
|
* figma: https://www.figma.com/file/1qHyMF137EXOQpSFVByszG/UX-Library?node-id=295%3A1518
|
|
@@ -62,6 +61,14 @@ export declare const BLOCKLET_THEME_LIGHT: ThemeOptions;
|
|
|
62
61
|
export declare const BLOCKLET_THEME_DARK: ThemeOptions;
|
|
63
62
|
export declare const DID_CONNECT_THEME_LIGHT: import("@mui/material/styles").ThemeOptions;
|
|
64
63
|
export declare const DID_CONNECT_THEME_DARK: import("@mui/material/styles").ThemeOptions;
|
|
64
|
+
export declare const BLOCKLET_THEME_PREFER_KEY = "blocklet_theme_prefer";
|
|
65
|
+
export declare const merge: <T>(x: T, y: Partial<T>) => T;
|
|
66
|
+
export declare function isValidThemeMode(mode: any): mode is PaletteMode;
|
|
67
|
+
export declare function getDefaultThemePrefer(meta?: {
|
|
68
|
+
theme: {
|
|
69
|
+
prefer: "light" | "dark" | "system";
|
|
70
|
+
};
|
|
71
|
+
}): PaletteMode;
|
|
65
72
|
|
|
66
73
|
export {
|
|
67
74
|
Theme,
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"publishConfig": {
|
|
4
4
|
"access": "public"
|
|
5
5
|
},
|
|
6
|
-
"version": "2.13.
|
|
6
|
+
"version": "2.13.55",
|
|
7
7
|
"description": "A preset MUI-based theme configuration designed for use with Blocklet.",
|
|
8
8
|
"main": "dist/cjs/index.js",
|
|
9
9
|
"module": "dist/es/index.js",
|
|
@@ -55,5 +55,5 @@
|
|
|
55
55
|
"ts-jest": "^29.1.2",
|
|
56
56
|
"typescript": "~5.5.4"
|
|
57
57
|
},
|
|
58
|
-
"gitHead": "
|
|
58
|
+
"gitHead": "fd8de005ce497660cbf1ea7378cf0d725b45fe87"
|
|
59
59
|
}
|