@blocklet/theme 2.13.55 → 2.13.56

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
@@ -141,6 +141,8 @@ __export(src_exports, {
141
141
  DEFAULT_FONTS: () => DEFAULT_FONTS,
142
142
  DID_CONNECT_THEME_DARK: () => DID_CONNECT_THEME_DARK,
143
143
  DID_CONNECT_THEME_LIGHT: () => DID_CONNECT_THEME_LIGHT,
144
+ buildThemeScript: () => buildThemeScript,
145
+ buildThemeStyles: () => buildThemeStyles,
144
146
  getDefaultThemePrefer: () => getDefaultThemePrefer,
145
147
  isValidThemeMode: () => isValidThemeMode,
146
148
  merge: () => merge
@@ -290,6 +292,50 @@ function getDefaultThemePrefer(meta) {
290
292
  }
291
293
  return "light";
292
294
  }
295
+ var buildThemeStyles = (theme) => {
296
+ const { light, dark } = theme;
297
+ return `
298
+ <style id="blocklet-theme-style">
299
+ :root {
300
+ --blocklet-background-default-color: ${light.palette?.background?.default ?? "#ffffff"};
301
+ --blocklet-text-primary-color: ${light.palette?.text?.primary ?? "#18181b"};
302
+ }
303
+
304
+ [data-theme='dark'] {
305
+ --blocklet-background-default-color: ${dark.palette?.background?.default ?? "#121212"};
306
+ --blocklet-text-primary-color: ${dark.palette?.text?.primary ?? "#ffffff"};
307
+ }
308
+
309
+ html, body {
310
+ background-color: var(--blocklet-background-default-color);
311
+ color: var(--blocklet-text-primary-color);
312
+ }
313
+ </style>
314
+ `;
315
+ };
316
+ var buildThemeScript = (theme) => {
317
+ return `
318
+ <script id="blocklet-theme-script">
319
+ (function() {
320
+ try {
321
+ const BLOCKLET_THEME_PREFER_KEY = '${BLOCKLET_THEME_PREFER_KEY}';
322
+ ${isValidThemeMode.toString()}
323
+ ${getDefaultThemePrefer.toString()}
324
+
325
+ const prefer = getDefaultThemePrefer(${JSON.stringify({ theme: { prefer: theme.prefer } })});
326
+
327
+ if(prefer === 'dark') {
328
+ document.documentElement.setAttribute('data-theme', 'dark');
329
+ } else {
330
+ document.documentElement.removeAttribute('data-theme');
331
+ }
332
+ } catch (e) {
333
+ console.error('Theme init error:', e);
334
+ }
335
+ })();
336
+ </script>
337
+ `;
338
+ };
293
339
 
294
340
  // src/blocklet.ts
295
341
  var DEFAULT_FONTS = ["Roboto", "Helvetica", "Arial", "sans-serif"];
@@ -640,37 +686,37 @@ var BLOCKLET_THEME_DARK = merge(BLOCKLET_THEME_LIGHT, {
640
686
  },
641
687
  primary: {
642
688
  main: "#00d5be",
643
- contrastText: "#f4f4f5",
689
+ contrastText: "#121212",
644
690
  light: "#4ce3d0",
645
691
  dark: "#00a89a"
646
692
  },
647
693
  secondary: {
648
694
  main: "#00d3f3",
649
- contrastText: "#f4f4f5",
695
+ contrastText: "#121212",
650
696
  light: "#51e1ff",
651
697
  dark: "#00a2c0"
652
698
  },
653
699
  error: {
654
700
  main: "#ff6467",
655
- contrastText: "#f4f4f5",
701
+ contrastText: "#121212",
656
702
  light: "#ff9598",
657
703
  dark: "#e7000b"
658
704
  },
659
705
  warning: {
660
706
  main: "#ff8904",
661
- contrastText: "#f4f4f5",
707
+ contrastText: "#121212",
662
708
  light: "#ffa644",
663
709
  dark: "#f54900"
664
710
  },
665
711
  info: {
666
712
  main: "#51a2ff",
667
- contrastText: "#f4f4f5",
713
+ contrastText: "#121212",
668
714
  light: "#83c3ff",
669
715
  dark: "#1570e5"
670
716
  },
671
717
  success: {
672
718
  main: "#05df72",
673
- contrastText: "#f4f4f5",
719
+ contrastText: "#121212",
674
720
  light: "#56e799",
675
721
  dark: "#00b24a"
676
722
  },
@@ -851,6 +897,8 @@ var DID_CONNECT_THEME_DARK = merge(BLOCKLET_THEME_DARK, {
851
897
  DEFAULT_FONTS,
852
898
  DID_CONNECT_THEME_DARK,
853
899
  DID_CONNECT_THEME_LIGHT,
900
+ buildThemeScript,
901
+ buildThemeStyles,
854
902
  getDefaultThemePrefer,
855
903
  isValidThemeMode,
856
904
  merge
package/dist/es/index.js CHANGED
@@ -270,6 +270,50 @@ function getDefaultThemePrefer(meta) {
270
270
  }
271
271
  return "light";
272
272
  }
273
+ var buildThemeStyles = (theme) => {
274
+ const { light, dark } = theme;
275
+ return `
276
+ <style id="blocklet-theme-style">
277
+ :root {
278
+ --blocklet-background-default-color: ${light.palette?.background?.default ?? "#ffffff"};
279
+ --blocklet-text-primary-color: ${light.palette?.text?.primary ?? "#18181b"};
280
+ }
281
+
282
+ [data-theme='dark'] {
283
+ --blocklet-background-default-color: ${dark.palette?.background?.default ?? "#121212"};
284
+ --blocklet-text-primary-color: ${dark.palette?.text?.primary ?? "#ffffff"};
285
+ }
286
+
287
+ html, body {
288
+ background-color: var(--blocklet-background-default-color);
289
+ color: var(--blocklet-text-primary-color);
290
+ }
291
+ </style>
292
+ `;
293
+ };
294
+ var buildThemeScript = (theme) => {
295
+ return `
296
+ <script id="blocklet-theme-script">
297
+ (function() {
298
+ try {
299
+ const BLOCKLET_THEME_PREFER_KEY = '${BLOCKLET_THEME_PREFER_KEY}';
300
+ ${isValidThemeMode.toString()}
301
+ ${getDefaultThemePrefer.toString()}
302
+
303
+ const prefer = getDefaultThemePrefer(${JSON.stringify({ theme: { prefer: theme.prefer } })});
304
+
305
+ if(prefer === 'dark') {
306
+ document.documentElement.setAttribute('data-theme', 'dark');
307
+ } else {
308
+ document.documentElement.removeAttribute('data-theme');
309
+ }
310
+ } catch (e) {
311
+ console.error('Theme init error:', e);
312
+ }
313
+ })();
314
+ </script>
315
+ `;
316
+ };
273
317
 
274
318
  // src/blocklet.ts
275
319
  var DEFAULT_FONTS = ["Roboto", "Helvetica", "Arial", "sans-serif"];
@@ -620,37 +664,37 @@ var BLOCKLET_THEME_DARK = merge(BLOCKLET_THEME_LIGHT, {
620
664
  },
621
665
  primary: {
622
666
  main: "#00d5be",
623
- contrastText: "#f4f4f5",
667
+ contrastText: "#121212",
624
668
  light: "#4ce3d0",
625
669
  dark: "#00a89a"
626
670
  },
627
671
  secondary: {
628
672
  main: "#00d3f3",
629
- contrastText: "#f4f4f5",
673
+ contrastText: "#121212",
630
674
  light: "#51e1ff",
631
675
  dark: "#00a2c0"
632
676
  },
633
677
  error: {
634
678
  main: "#ff6467",
635
- contrastText: "#f4f4f5",
679
+ contrastText: "#121212",
636
680
  light: "#ff9598",
637
681
  dark: "#e7000b"
638
682
  },
639
683
  warning: {
640
684
  main: "#ff8904",
641
- contrastText: "#f4f4f5",
685
+ contrastText: "#121212",
642
686
  light: "#ffa644",
643
687
  dark: "#f54900"
644
688
  },
645
689
  info: {
646
690
  main: "#51a2ff",
647
- contrastText: "#f4f4f5",
691
+ contrastText: "#121212",
648
692
  light: "#83c3ff",
649
693
  dark: "#1570e5"
650
694
  },
651
695
  success: {
652
696
  main: "#05df72",
653
- contrastText: "#f4f4f5",
697
+ contrastText: "#121212",
654
698
  light: "#56e799",
655
699
  dark: "#00b24a"
656
700
  },
@@ -830,6 +874,8 @@ export {
830
874
  DEFAULT_FONTS,
831
875
  DID_CONNECT_THEME_DARK,
832
876
  DID_CONNECT_THEME_LIGHT,
877
+ buildThemeScript,
878
+ buildThemeStyles,
833
879
  getDefaultThemePrefer,
834
880
  isValidThemeMode,
835
881
  merge
@@ -69,6 +69,15 @@ export declare function getDefaultThemePrefer(meta?: {
69
69
  prefer: "light" | "dark" | "system";
70
70
  };
71
71
  }): PaletteMode;
72
+ export type ThemeSettings = {
73
+ prefer: "light" | "dark" | "system";
74
+ light: ThemeOptions;
75
+ dark: ThemeOptions;
76
+ };
77
+ /** 生成用于服务端注入的初始样式,避免首屏加载闪白 */
78
+ export declare const buildThemeStyles: (theme: ThemeSettings) => string;
79
+ /** 生成用于服务端注入的初始脚本,用于选择 theme mode */
80
+ export declare const buildThemeScript: (theme: ThemeSettings) => string;
72
81
 
73
82
  export {
74
83
  Theme,
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "publishConfig": {
4
4
  "access": "public"
5
5
  },
6
- "version": "2.13.55",
6
+ "version": "2.13.56",
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": "fd8de005ce497660cbf1ea7378cf0d725b45fe87"
58
+ "gitHead": "ebf7d863313f1ce95571b81df01182756395197e"
59
59
  }