dark-mode.ts — tailwindcss Source File
Architecture documentation for dark-mode.ts, a typescript file in the tailwindcss codebase. 2 imports, 2 dependents.
Entity Profile
Dependency Diagram
graph LR e89fb45a_8bfc_fa37_8fa2_d0dcfee110db["dark-mode.ts"] c1272aed_91bb_73df_0746_d55fa9b302fd["types.ts"] e89fb45a_8bfc_fa37_8fa2_d0dcfee110db --> c1272aed_91bb_73df_0746_d55fa9b302fd af1a6ece_0432_a556_fd63_8cb4a91f12ad["plugin-api.ts"] e89fb45a_8bfc_fa37_8fa2_d0dcfee110db --> af1a6ece_0432_a556_fd63_8cb4a91f12ad b2ba3368_7330_fe20_4543_9cafa8cfedc0["migrate-js-config.ts"] b2ba3368_7330_fe20_4543_9cafa8cfedc0 --> e89fb45a_8bfc_fa37_8fa2_d0dcfee110db daaadd53_16ee_21c6_12d9_8feaac80a91b["apply-compat-hooks.ts"] daaadd53_16ee_21c6_12d9_8feaac80a91b --> e89fb45a_8bfc_fa37_8fa2_d0dcfee110db style e89fb45a_8bfc_fa37_8fa2_d0dcfee110db fill:#6366f1,stroke:#818cf8,color:#fff
Relationship Graph
Source Code
import type { ResolvedConfig } from './config/types'
import type { PluginAPI } from './plugin-api'
export function darkModePlugin({ addVariant, config }: Pick<PluginAPI, 'addVariant' | 'config'>) {
let darkMode = config('darkMode', null) as ResolvedConfig['darkMode']
let [mode, selector = '.dark'] = Array.isArray(darkMode) ? darkMode : [darkMode]
if (mode === 'variant') {
let formats
if (Array.isArray(selector)) {
formats = selector
} else if (typeof selector === 'function') {
formats = selector
} else if (typeof selector === 'string') {
formats = [selector]
}
if (Array.isArray(formats)) {
for (let format of formats) {
if (format === '.dark') {
mode = false
console.warn(
'When using `variant` for `darkMode`, you must provide a selector.\nExample: `darkMode: ["variant", ".your-selector &"]`',
)
} else if (!format.includes('&')) {
mode = false
console.warn(
'When using `variant` for `darkMode`, your selector must contain `&`.\nExample `darkMode: ["variant", ".your-selector &"]`',
)
}
}
}
selector = formats as any
}
if (mode === null) {
// Do nothing
} else if (mode === 'selector') {
// New preferred behavior
addVariant('dark', `&:where(${selector}, ${selector} *)`)
} else if (mode === 'media') {
addVariant('dark', '@media (prefers-color-scheme: dark)')
} else if (mode === 'variant') {
addVariant('dark', selector)
} else if (mode === 'class') {
// Old behavior
addVariant('dark', `&:is(${selector} *)`)
}
}
Domain
Subdomains
Functions
Dependencies
Imported By
Source
Frequently Asked Questions
What does dark-mode.ts do?
dark-mode.ts is a source file in the tailwindcss codebase, written in typescript. It belongs to the UpgradeToolkit domain, Codemods subdomain.
What functions are defined in dark-mode.ts?
dark-mode.ts defines 1 function(s): darkModePlugin.
What does dark-mode.ts depend on?
dark-mode.ts imports 2 module(s): plugin-api.ts, types.ts.
What files import dark-mode.ts?
dark-mode.ts is imported by 2 file(s): apply-compat-hooks.ts, migrate-js-config.ts.
Where is dark-mode.ts in the architecture?
dark-mode.ts is located at packages/tailwindcss/src/compat/dark-mode.ts (domain: UpgradeToolkit, subdomain: Codemods, directory: packages/tailwindcss/src/compat).
Analyze Your Own Codebase
Get architecture documentation, dependency graphs, and domain analysis for your codebase in minutes.
Try Supermodel Free