@windrun-huaiin/lib 31.0.0 → 31.0.2

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;
@@ -84,11 +89,6 @@ export declare function createCommonAppConfig(options?: {
84
89
  waitlistUrl: string;
85
90
  debug: boolean;
86
91
  };
87
- mdxSourceDir: {
88
- docs: string;
89
- blog: string;
90
- legal: string;
91
- };
92
92
  };
93
93
  export declare function createI18nHelpers(i18nConfig: ReturnType<typeof createCommonAppConfig>['i18n']): {
94
94
  isSupportedLocale: (locale: string) => locale is (typeof i18nConfig.locales)[number];
@@ -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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA+D1C;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
  }
@@ -80,16 +97,11 @@ function createCommonAppConfig(options) {
80
97
  waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || "/waitlist",
81
98
  debug: process.env.CLERK_DEBUG === 'true',
82
99
  },
83
- // MDX source file directory configuration
84
- mdxSourceDir: {
85
- docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || "src/mdx/docs",
86
- blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || "src/mdx/blog",
87
- legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || "src/mdx/legal"
88
- },
89
100
  };
90
101
  // Convenient constants - avoid deep nested access
91
102
  const shortcuts = {
92
103
  iconColor: config.style.icon.uniformColor,
104
+ themeMode: config.style.theme.mode,
93
105
  watermark: config.style.watermark,
94
106
  showBanner: config.style.showBanner,
95
107
  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
  }
@@ -78,16 +95,11 @@ function createCommonAppConfig(options) {
78
95
  waitlistUrl: process.env.NEXT_PUBLIC_CLERK_WAITLIST_URL || "/waitlist",
79
96
  debug: process.env.CLERK_DEBUG === 'true',
80
97
  },
81
- // MDX source file directory configuration
82
- mdxSourceDir: {
83
- docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || "src/mdx/docs",
84
- blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || "src/mdx/blog",
85
- legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || "src/mdx/legal"
86
- },
87
98
  };
88
99
  // Convenient constants - avoid deep nested access
89
100
  const shortcuts = {
90
101
  iconColor: config.style.icon.uniformColor,
102
+ themeMode: config.style.theme.mode,
91
103
  watermark: config.style.watermark,
92
104
  showBanner: config.style.showBanner,
93
105
  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.2",
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
  }
@@ -98,17 +125,12 @@ export function createCommonAppConfig(options?: {
98
125
  debug: process.env.CLERK_DEBUG === 'true',
99
126
  },
100
127
 
101
- // MDX source file directory configuration
102
- mdxSourceDir: {
103
- docs: process.env.NEXT_PUBLIC_MDX_DOCS_DIR || "src/mdx/docs",
104
- blog: process.env.NEXT_PUBLIC_MDX_BLOG_DIR || "src/mdx/blog",
105
- legal: process.env.NEXT_PUBLIC_MDX_LEGAL_DIR || "src/mdx/legal"
106
- },
107
128
  };
108
129
 
109
130
  // Convenient constants - avoid deep nested access
110
131
  const shortcuts = {
111
132
  iconColor: config.style.icon.uniformColor,
133
+ themeMode: config.style.theme.mode,
112
134
  watermark: config.style.watermark,
113
135
  showBanner: config.style.showBanner,
114
136
  clerkPageBanner: config.style.clerkPageBanner,
@@ -164,4 +186,4 @@ export const LOCALE_PRESETS = {
164
186
 
165
187
  // No internationalization (only default language)
166
188
  NONE: { locales: [] as string[], defaultLocale: 'en' as string }
167
- };
189
+ };