Skip to content

Commit 8166259

Browse files
Add darkMode migration
1 parent 7f560a3 commit 8166259

File tree

3 files changed

+20
-2
lines changed

3 files changed

+20
-2
lines changed

integrations/upgrade/js-config.test.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ test(
1717
import defaultTheme from 'tailwindcss/defaultTheme'
1818
1919
module.exports = {
20+
darkMode: 'selector',
2021
content: ['./src/**/*.{html,js}'],
2122
theme: {
2223
boxShadow: {

packages/@tailwindcss-upgrade/src/migrate-js-config.ts

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import {
77
keyPathToCssProperty,
88
themeableValues,
99
} from '../../tailwindcss/src/compat/apply-config-to-theme'
10+
import { darkModePlugin } from '../../tailwindcss/src/compat/dark-mode'
1011
import { info } from './utils/renderer'
1112

1213
const __filename = fileURLToPath(import.meta.url)
@@ -27,6 +28,10 @@ export async function migrateJsConfig(fullConfigPath: string): Promise<void> {
2728

2829
let cssConfigs: string[] = []
2930

31+
if ('darkMode' in unresolvedConfig) {
32+
cssConfigs.push(migrateDarkMode(unresolvedConfig as any))
33+
}
34+
3035
if ('content' in unresolvedConfig) {
3136
cssConfigs.push(migrateContent(unresolvedConfig as any))
3237
}
@@ -81,6 +86,18 @@ async function migrateTheme(unresolvedConfig: Config & { theme: any }): Promise<
8186
return css + '}\n'
8287
}
8388

89+
function migrateDarkMode(unresolvedConfig: Config & { darkMode: any }): string {
90+
let variant: string = ''
91+
let addVariant = (_name: string, _variant: string) => (variant = _variant)
92+
let config = () => unresolvedConfig.darkMode
93+
darkModePlugin({ config, addVariant })
94+
95+
if (variant === '') {
96+
return ''
97+
}
98+
return `@variant dark (${variant});\n`
99+
}
100+
84101
// Returns a string identifier used to section theme declarations
85102
function createSectionKey(key: string[]): string {
86103
let sectionSegments = []
@@ -128,7 +145,7 @@ async function isSimpleConfig(unresolvedConfig: Config, source: string): Promise
128145
}
129146

130147
// The file may only contain known-migrateable high-level properties
131-
const knownProperties = ['content', 'theme', 'plugins', 'presets']
148+
const knownProperties = ['darkMode', 'content', 'theme', 'plugins', 'presets']
132149
if (Object.keys(unresolvedConfig).some((key) => !knownProperties.includes(key))) {
133150
return false
134151
}

packages/tailwindcss/src/compat/dark-mode.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import type { ResolvedConfig } from './config/types'
22
import type { PluginAPI } from './plugin-api'
33

4-
export function darkModePlugin({ addVariant, config }: PluginAPI) {
4+
export function darkModePlugin({ addVariant, config }: Pick<PluginAPI, 'addVariant' | 'config'>) {
55
let darkMode = config('darkMode', null) as ResolvedConfig['darkMode']
66
let [mode, selector = '.dark'] = Array.isArray(darkMode) ? darkMode : [darkMode]
77

0 commit comments

Comments
 (0)