@windrun-huaiin/lib 31.0.0 → 31.0.1

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.
@@ -17,12 +17,14 @@ declare const ALL_LOCALE_LABELS: {
17
17
  readonly vi: "Tiếng Việt";
18
18
  };
19
19
  export type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;
20
+ export type AppThemeMode = 'light-dark-system' | 'light-only' | 'dark-only';
20
21
  export declare function createCommonAppConfig(options?: {
21
22
  locales?: string[];
22
23
  defaultLocale?: string;
23
24
  }): {
24
25
  shortcuts: {
25
26
  iconColor: string;
27
+ themeMode: AppThemeMode;
26
28
  watermark: {
27
29
  enabled: boolean;
28
30
  text: string;
@@ -63,6 +65,9 @@ export declare function createCommonAppConfig(options?: {
63
65
  icon: {
64
66
  uniformColor: string;
65
67
  };
68
+ theme: {
69
+ mode: AppThemeMode;
70
+ };
66
71
  showBanner: boolean;
67
72
  clerkAuthInModal: boolean;
68
73
  clerkPageBanner: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"common-app-config.d.ts","sourceRoot":"","sources":["../src/common-app-config.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiBb,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAa7D,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAE9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;iBAqByB,SAAS,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAiE1C;AAGD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC;gCACzD,MAAM,KAAG,MAAM,IAAI,CAAA,OAAO,UAAU,CAAC,OAAO,EAAC,MAAM,CAAC;6BAIvD,MAAM,KAAG,CAAA,OAAO,UAAU,CAAC,OAAO,EAAC,MAAM,CAAC;;;;;EAc3E;AAGD,eAAO,MAAM,cAAc;;iBAEK,MAAM,EAAE;uBAAyB,MAAM;;;iBAGnC,MAAM,EAAE;uBAAyB,MAAM;;;iBAG5B,MAAM,EAAE;uBAAyB,MAAM;;;iBAG/B,MAAM,EAAE;uBAAyB,MAAM;;;iBAGT,MAAM,EAAE;uBAAyB,MAAM;;;iBAGnG,MAAM,EAAE;uBAAyB,MAAM;;CAC/D,CAAC"}
1
+ {"version":3,"file":"common-app-config.d.ts","sourceRoot":"","sources":["../src/common-app-config.ts"],"names":[],"mappings":"AACA,QAAA,MAAM,iBAAiB;;;;;;;;;;;;;;;;;CAiBb,CAAC;AAEX,MAAM,MAAM,eAAe,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAC7D,MAAM,MAAM,YAAY,GACpB,mBAAmB,GACnB,YAAY,GACZ,WAAW,CAAC;AAiChB,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE;IAE9C,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;;;;;;;;;;;;;;;;;;;;;;;;;;iBAqByB,SAAS,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAqE1C;AAGD,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,CAAC,OAAO,qBAAqB,CAAC,CAAC,MAAM,CAAC;gCACzD,MAAM,KAAG,MAAM,IAAI,CAAA,OAAO,UAAU,CAAC,OAAO,EAAC,MAAM,CAAC;6BAIvD,MAAM,KAAG,CAAA,OAAO,UAAU,CAAC,OAAO,EAAC,MAAM,CAAC;;;;;EAc3E;AAGD,eAAO,MAAM,cAAc;;iBAEK,MAAM,EAAE;uBAAyB,MAAM;;;iBAGnC,MAAM,EAAE;uBAAyB,MAAM;;;iBAG5B,MAAM,EAAE;uBAAyB,MAAM;;;iBAG/B,MAAM,EAAE;uBAAyB,MAAM;;;iBAGT,MAAM,EAAE;uBAAyB,MAAM;;;iBAGnG,MAAM,EAAE;uBAAyB,MAAM;;CAC/D,CAAC"}
@@ -19,6 +19,20 @@ const ALL_LOCALE_LABELS = {
19
19
  th: "ไทย",
20
20
  vi: "Tiếng Việt",
21
21
  };
22
+ const APP_THEME_MODES = [
23
+ 'light-dark-system',
24
+ 'light-only',
25
+ 'dark-only',
26
+ ];
27
+ function getAppThemeMode(value) {
28
+ if (APP_THEME_MODES.includes(value)) {
29
+ return value;
30
+ }
31
+ if (value) {
32
+ console.warn(`[CommonAppConfig] Invalid NEXT_PUBLIC_STYLE_THEME_MODE: ${value}. Fallback to light-dark-system.`);
33
+ }
34
+ return 'light-dark-system';
35
+ }
22
36
  // Helper function to get language configuration from environment variables
23
37
  function getLocaleLabels(locales) {
24
38
  return Object.fromEntries(locales.map(locale => [
@@ -56,17 +70,20 @@ function createCommonAppConfig(options) {
56
70
  // Style configuration
57
71
  style: {
58
72
  icon: {
59
- uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "text-purple-500"
73
+ uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "purple"
74
+ },
75
+ theme: {
76
+ mode: getAppThemeMode(process.env.NEXT_PUBLIC_STYLE_THEME_MODE),
60
77
  },
61
78
  showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',
62
79
  clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',
63
80
  clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',
64
81
  watermark: {
65
82
  enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',
66
- text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "巽川·怀因"
83
+ text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "WindRun・Huaiin"
67
84
  },
68
- cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "https://r2.d8ger.com",
69
- cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "https://r2-explorer-template.zcy777et.workers.dev/proxy",
85
+ cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "",
86
+ cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "",
70
87
  placeHolder: {
71
88
  image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || "/default.webp"
72
89
  }
@@ -90,6 +107,7 @@ function createCommonAppConfig(options) {
90
107
  // Convenient constants - avoid deep nested access
91
108
  const shortcuts = {
92
109
  iconColor: config.style.icon.uniformColor,
110
+ themeMode: config.style.theme.mode,
93
111
  watermark: config.style.watermark,
94
112
  showBanner: config.style.showBanner,
95
113
  clerkPageBanner: config.style.clerkPageBanner,
@@ -17,6 +17,20 @@ const ALL_LOCALE_LABELS = {
17
17
  th: "ไทย",
18
18
  vi: "Tiếng Việt",
19
19
  };
20
+ const APP_THEME_MODES = [
21
+ 'light-dark-system',
22
+ 'light-only',
23
+ 'dark-only',
24
+ ];
25
+ function getAppThemeMode(value) {
26
+ if (APP_THEME_MODES.includes(value)) {
27
+ return value;
28
+ }
29
+ if (value) {
30
+ console.warn(`[CommonAppConfig] Invalid NEXT_PUBLIC_STYLE_THEME_MODE: ${value}. Fallback to light-dark-system.`);
31
+ }
32
+ return 'light-dark-system';
33
+ }
20
34
  // Helper function to get language configuration from environment variables
21
35
  function getLocaleLabels(locales) {
22
36
  return Object.fromEntries(locales.map(locale => [
@@ -54,17 +68,20 @@ function createCommonAppConfig(options) {
54
68
  // Style configuration
55
69
  style: {
56
70
  icon: {
57
- uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "text-purple-500"
71
+ uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "purple"
72
+ },
73
+ theme: {
74
+ mode: getAppThemeMode(process.env.NEXT_PUBLIC_STYLE_THEME_MODE),
58
75
  },
59
76
  showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',
60
77
  clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',
61
78
  clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',
62
79
  watermark: {
63
80
  enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',
64
- text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "巽川·怀因"
81
+ text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "WindRun・Huaiin"
65
82
  },
66
- cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "https://r2.d8ger.com",
67
- cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "https://r2-explorer-template.zcy777et.workers.dev/proxy",
83
+ cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "",
84
+ cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "",
68
85
  placeHolder: {
69
86
  image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || "/default.webp"
70
87
  }
@@ -88,6 +105,7 @@ function createCommonAppConfig(options) {
88
105
  // Convenient constants - avoid deep nested access
89
106
  const shortcuts = {
90
107
  iconColor: config.style.icon.uniformColor,
108
+ themeMode: config.style.theme.mode,
91
109
  watermark: config.style.watermark,
92
110
  showBanner: config.style.showBanner,
93
111
  clerkPageBanner: config.style.clerkPageBanner,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@windrun-huaiin/lib",
3
- "version": "31.0.0",
3
+ "version": "31.0.1",
4
4
  "description": "Common utilities and configuration",
5
5
  "main": "./dist/index.js",
6
6
  "module": "./dist/index.mjs",
@@ -19,6 +19,30 @@ const ALL_LOCALE_LABELS = {
19
19
  } as const;
20
20
 
21
21
  export type SupportedLocale = keyof typeof ALL_LOCALE_LABELS;
22
+ export type AppThemeMode =
23
+ | 'light-dark-system'
24
+ | 'light-only'
25
+ | 'dark-only';
26
+
27
+ const APP_THEME_MODES = [
28
+ 'light-dark-system',
29
+ 'light-only',
30
+ 'dark-only',
31
+ ] as const satisfies readonly AppThemeMode[];
32
+
33
+ function getAppThemeMode(value: string | undefined): AppThemeMode {
34
+ if (APP_THEME_MODES.includes(value as AppThemeMode)) {
35
+ return value as AppThemeMode;
36
+ }
37
+
38
+ if (value) {
39
+ console.warn(
40
+ `[CommonAppConfig] Invalid NEXT_PUBLIC_STYLE_THEME_MODE: ${value}. Fallback to light-dark-system.`,
41
+ );
42
+ }
43
+
44
+ return 'light-dark-system';
45
+ }
22
46
 
23
47
  // Helper function to get language configuration from environment variables
24
48
  function getLocaleLabels(locales: string[]) {
@@ -72,17 +96,20 @@ export function createCommonAppConfig(options?: {
72
96
  // Style configuration
73
97
  style: {
74
98
  icon: {
75
- uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "text-purple-500"
99
+ uniformColor: process.env.NEXT_PUBLIC_STYLE_ICON_COLOR || "purple"
100
+ },
101
+ theme: {
102
+ mode: getAppThemeMode(process.env.NEXT_PUBLIC_STYLE_THEME_MODE),
76
103
  },
77
104
  showBanner: process.env.NEXT_PUBLIC_STYLE_SHOW_BANNER === 'true',
78
105
  clerkAuthInModal: process.env.NEXT_PUBLIC_STYLE_CLERK_AUTH_IN_MODAL === 'true',
79
106
  clerkPageBanner: process.env.NEXT_PUBLIC_STYLE_CLERK_PAGE_BANNER === 'true',
80
107
  watermark: {
81
108
  enabled: process.env.NEXT_PUBLIC_STYLE_WATERMARK_ENABLED === 'true',
82
- text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "巽川·怀因"
109
+ text: process.env.NEXT_PUBLIC_STYLE_WATERMARK_TEXT || "WindRun・Huaiin"
83
110
  },
84
- cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "https://r2.d8ger.com",
85
- cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "https://r2-explorer-template.zcy777et.workers.dev/proxy",
111
+ cdnBaseUrl: process.env.NEXT_PUBLIC_STYLE_CDN_BASE_URL || "",
112
+ cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "",
86
113
  placeHolder: {
87
114
  image: process.env.NEXT_PUBLIC_STYLE_PLACEHOLDER_IMAGE || "/default.webp"
88
115
  }
@@ -109,6 +136,7 @@ export function createCommonAppConfig(options?: {
109
136
  // Convenient constants - avoid deep nested access
110
137
  const shortcuts = {
111
138
  iconColor: config.style.icon.uniformColor,
139
+ themeMode: config.style.theme.mode,
112
140
  watermark: config.style.watermark,
113
141
  showBanner: config.style.showBanner,
114
142
  clerkPageBanner: config.style.clerkPageBanner,
@@ -164,4 +192,4 @@ export const LOCALE_PRESETS = {
164
192
 
165
193
  // No internationalization (only default language)
166
194
  NONE: { locales: [] as string[], defaultLocale: 'en' as string }
167
- };
195
+ };