@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 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
  };
@@ -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.53",
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": "02906cfcf1ed344c4c24587177fa2bcdd071954d"
58
+ "gitHead": "fd8de005ce497660cbf1ea7378cf0d725b45fe87"
59
59
  }