import React, { forwardRef } from 'react'; export interface CardProps extends React.HTMLAttributes { bordered?: boolean; } type DivAttrs = React.HTMLAttributes; const CardRoot = forwardRef( ({ bordered, className = '', children, ...rest }, ref) => { const classes = ['card', bordered && 'card--bordered', className] .filter(Boolean) .join(' '); return (
} className={classes} {...rest} > {children}
); } ); CardRoot.displayName = 'Card'; const CardHeader = forwardRef( ({ className = '', children, ...rest }, ref) => (
} className={['card__header', className].filter(Boolean).join(' ')} {...rest} > {children}
) ); CardHeader.displayName = 'Card.Header'; const CardTitle = forwardRef< HTMLHeadingElement, React.HTMLAttributes >(({ className = '', children, ...rest }, ref) => (

{children}

)); CardTitle.displayName = 'Card.Title'; const CardBody = forwardRef< HTMLParagraphElement, React.HTMLAttributes >(({ className = '', children, ...rest }, ref) => (

{children}

)); CardBody.displayName = 'Card.Body'; const CardFooter = forwardRef( ({ className = '', children, ...rest }, ref) => ( ) ); CardFooter.displayName = 'Card.Footer'; export const Card = Object.assign(CardRoot, { Header: CardHeader, Title: CardTitle, Body: CardBody, Footer: CardFooter });