import { splitProps, type JSX, type ParentComponent } from "solid-js"; import { cardBackgroundStyle, cardOutlineStyle, cardStyle } from "./card.css"; import clsx from "clsx/lite"; export type CardVariant = typeof CARD_VARIANTS[number]; export type CardVariantProps = JSX.HTMLAttributes; export type CardProps = { variant: CardVariant; } & CardVariantProps; const Card: ParentComponent = (props) => { const [localProps, otherProps] = splitProps( props, ["variant", "class", "children"], ); return (
}>
{localProps.children}
) } type CardVariantComponent = ParentComponent; const CARD_VARIANTS = ["elevated", "filled", "outlined"] as const; type CardComponent = & typeof Card & { [Variant in CardVariant]: CardVariantComponent; }; /** * @category Component */ const proxy = new Proxy( Card, { get(target, variant, receiver) { if(!CARD_VARIANTS.includes(variant as any)) return; const component: CardVariantComponent = (props) => { return ( ); }; return component; }, }, ) as CardComponent; export { proxy as Card, }