fix :pseudos

This commit is contained in:
Chris Wanstrath 2025-12-26 21:59:34 -08:00
parent 54f666d25f
commit 6b68c401f7

View File

@ -92,19 +92,24 @@ function makeComponent(baseName: string, rootDef: TagDef, rootProps: Record<stri
}
}
// ensures 'hover' is ':hover'
function stateName(state: string): string {
return state.startsWith(':') ? state : `:${state}`
}
// adds CSS styles for tag definition
function registerStyles(name: string, def: TagDef) {
const rootClassName = makeClassName(name)
styles[rootClassName] ??= makeStyle(def)
for (const [state, style] of Object.entries(def.states ?? {}))
styles[`${rootClassName}${state}`] = makeStyle(style)
styles[`${rootClassName}${stateName(state)}`] = makeStyle(style)
for (const [partName, partDef] of Object.entries(def.parts ?? {})) {
const partClassName = makeClassName(name, partName)
styles[partClassName] ??= makeStyle(partDef)
for (const [state, style] of Object.entries(partDef.states ?? {}))
styles[`${partClassName}${state}`] = makeStyle(style)
styles[`${partClassName}${stateName(state)}`] = makeStyle(style)
}
@ -121,14 +126,14 @@ function registerStyles(name: string, def: TagDef) {
const className = `${baseClassName}.${variantName}`
styles[className] ??= makeStyle(variantDef)
for (const [state, style] of Object.entries(variantDef.states ?? {}))
styles[`${className}${state}`] = makeStyle(style)
styles[`${className}${stateName(state)}`] = makeStyle(style)
for (const [partName, partDef] of Object.entries(variantDef.parts ?? {})) {
const basePartClassName = makeClassName(name, partName)
const partClassName = `${basePartClassName}.${variantName}`
styles[partClassName] ??= makeStyle(partDef)
for (const [state, style] of Object.entries(partDef.states ?? {}))
styles[`${partClassName}${state}`] = makeStyle(style)
styles[`${partClassName}${stateName(state)}`] = makeStyle(style)
}
} else {
// Keyed variant - iterate over the keys
@ -136,13 +141,13 @@ function registerStyles(name: string, def: TagDef) {
const className = makeClassName(name, undefined, variantName, variantKey)
styles[className] ??= makeStyle(variantDef)
for (const [state, style] of Object.entries(variantDef.states ?? {}))
styles[`${className}${state}`] = makeStyle(style)
styles[`${className}${stateName(state)}`] = makeStyle(style)
for (const [partName, partDef] of Object.entries(variantDef.parts ?? {})) {
const partClassName = makeClassName(name, partName, variantName, variantKey)
styles[partClassName] ??= makeStyle(partDef)
for (const [state, style] of Object.entries(partDef.states ?? {}))
styles[`${partClassName}${state}`] = makeStyle(style)
styles[`${partClassName}${stateName(state)}`] = makeStyle(style)
}
}
}