@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;
|
|
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 || "
|
|
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 || "
|
|
69
|
-
cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "
|
|
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 || "
|
|
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 || "
|
|
67
|
-
cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "
|
|
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
package/src/common-app-config.ts
CHANGED
|
@@ -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 || "
|
|
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 || "
|
|
85
|
-
cdnProxyUrl: process.env.NEXT_PUBLIC_STYLE_CDN_PROXY_URL || "
|
|
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
|
+
};
|