diff --git a/src/index.tsx b/src/index.tsx index dbb3490..08a711b 100644 --- a/src/index.tsx +++ b/src/index.tsx @@ -286,14 +286,18 @@ export function define(nameOrDef: string | TagDef, defIfNamed?: TagDef) { if (styles[`.${name}`]) throw `${name} is already defined! Must use unique names.` registerStyles(name, def) + const currentProps: Record = {} + const Root = makeComponent(name, def, currentProps) + return (props: Record) => { - const parts: Record = {} + for (const key in currentProps) delete currentProps[key] + Object.assign(currentProps, props) + const parts: Record = { Root } for (const [part] of Object.entries(def.parts ?? {})) parts[part] = makeComponent(name, def, props, part) - parts.Root = makeComponent(name, def, props) - return def.render?.({ props, parts }) ?? {props.children} + return def.render?.({ props, parts }) ?? {props.children} } }