fix HMR support

This commit is contained in:
Chris Wanstrath 2026-01-16 08:30:44 -08:00
parent 50054b014f
commit e14821c699

View File

@ -9,6 +9,9 @@ export function clearStyles() {
for (const key in themes) delete themes[key] for (const key in themes) delete themes[key]
} }
// HMR support - clear styles when module is replaced
import.meta.hot?.dispose(() => clearStyles())
export function createTheme<const T extends Record<string, string | number>>(name: string, values: T): T { export function createTheme<const T extends Record<string, string | number>>(name: string, values: T): T {
themes[name] = values as Record<string, string | number> themes[name] = values as Record<string, string | number>
return values return values
@ -279,11 +282,7 @@ export function define(nameOrDef: string | TagDef, defIfNamed?: TagDef) {
const def = defIfNamed ?? nameOrDef as TagDef const def = defIfNamed ?? nameOrDef as TagDef
const name = defIfNamed ? (nameOrDef as string) : anonName(def) const name = defIfNamed ? (nameOrDef as string) : anonName(def)
// Clear any existing styles for this component (supports HMR/hot reload) if (styles[name]) throw `${name} is already defined! Must use unique names.`
for (const key in styles) {
if (key === name || key.startsWith(`${name}_`) || key.startsWith(`${name}.`) || key.startsWith(`${name}:`))
delete styles[key]
}
registerStyles(name, def) registerStyles(name, def)
return (props: Record<string, any>) => { return (props: Record<string, any>) => {