Skip to content

Commit 853e7d3

Browse files
committed
feat: support customizing class name when using darkMode: 'class' (fixes #398)
1 parent d6124b3 commit 853e7d3

File tree

3 files changed

+19
-2
lines changed

3 files changed

+19
-2
lines changed

src/cli/core/FileContentGenerator.ts

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -155,6 +155,7 @@ export class FileContentGenerator {
155155
'export type TArg =\n' +
156156
'| null\n' +
157157
'| undefined\n' +
158+
this.getDarkModeClassnameType() +
158159
'| TTailwindString\nIMPORTED_T_CUSTOM_CLASSES_ARG' +
159160
'\n' +
160161
'export type TTailwind = (...args: TArg[]) => TTailwindString\n' +
@@ -165,6 +166,21 @@ export class FileContentGenerator {
165166
);
166167
};
167168

169+
/**
170+
* Get the dark mode config custom classname type
171+
* @returns the name of the classname for dark mode
172+
*/
173+
private getDarkModeClassnameType = (): string => {
174+
const darkModeConfig = this._configParser.getDarkMode();
175+
if (_.isArray(darkModeConfig) && darkModeConfig[0] === 'class') {
176+
return `| '${darkModeConfig[1]}'\n`;
177+
} else if (_.isString(darkModeConfig) && darkModeConfig === 'class') {
178+
return `| 'dark'\n`;
179+
} else {
180+
return '';
181+
}
182+
};
183+
168184
/**
169185
* Generates types group template for a utility classes group object.
170186
*

src/cli/core/TailwindConfigParser.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -121,7 +121,8 @@ export class TailwindConfigParser {
121121

122122
// get responsive variants
123123
const [mediaBreakpoints] = this.getThemeProperty('screens');
124-
if (this.getDarkMode() == 'media' || this.getDarkMode() == 'class') mediaBreakpoints.push('dark');
124+
if (this.getDarkMode() == 'media' || this.getDarkMode() == 'class')
125+
mediaBreakpoints.push('dark');
125126

126127
mediaBreakpoints.map((breakpoint: string) => {
127128
if (!variants.includes(breakpoint)) {

src/cli/types/config.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ export type TTailwindCSSConfig = Partial<
55
typeof defaultTailwindConfig & Record<'separator' | 'prefix' | 'mode', string>
66
>;
77

8-
export type TConfigDarkMode = false | 'media' | 'class';
8+
export type TConfigDarkMode = false | 'media' | 'class' | ['media' | 'class', string];
99

1010
export type TConfigTheme = TThemeItems & {extend?: TThemeItems};
1111

0 commit comments

Comments
 (0)