{"version":3,"file":"Card.cjs","names":[],"sources":["../../../src/components/Card/Card.tsx"],"sourcesContent":["import type { HTMLAttributes, ReactNode } from \"react\";\nimport { cn } from \"@/utils/cn\";\nimport styles from \"./Card.module.css\";\n\nexport type CardElevation = \"flat\" | \"default\" | \"raised\" | \"elevated\";\n\nexport interface CardProps extends Omit<HTMLAttributes<HTMLDivElement>, \"title\"> {\n    title?: ReactNode;\n    actions?: ReactNode;\n    footer?: ReactNode;\n    flush?: boolean;\n    /** Hoverable card — adds elevation lift, cursor pointer and focus ring. */\n    interactive?: boolean;\n    /** Visual elevation level. Defaults to `default` (subtle shadow + border). */\n    elevation?: CardElevation;\n}\n\n/**\n * Card container with optional header (title + actions) and footer slot.\n * Use `flush` when you need to host content (tables, lists) without inner padding.\n * Use `interactive` for clickable cards — adds hover lift and focus ring.\n */\nexport function Card({\n    title,\n    actions,\n    footer,\n    flush = false,\n    interactive = false,\n    elevation = \"default\",\n    className,\n    children,\n    ...props\n}: CardProps) {\n    const hasHeader = !!(title || actions);\n    return (\n        <div\n            className={cn(\n                styles.card,\n                elevation === \"flat\" && styles.flat,\n                elevation === \"raised\" && styles.raised,\n                elevation === \"elevated\" && styles.elevated,\n                interactive && styles.interactive,\n                !hasHeader && !flush && styles.padded,\n                flush && styles.flush,\n                className,\n            )}\n            tabIndex={interactive ? (props.tabIndex ?? 0) : props.tabIndex}\n            {...props}\n        >\n            {hasHeader && (\n                <header className={styles.header}>\n                    {typeof title === \"string\" ? <h3 className={styles.title}>{title}</h3> : title}\n                    {actions}\n                </header>\n            )}\n            {hasHeader ? <div className={styles.body}>{children}</div> : children}\n            {footer && <footer className={styles.footer}>{footer}</footer>}\n        </div>\n    );\n}\n"],"mappings":"wGAsBA,SAAgB,EAAK,CACjB,QACA,UACA,SACA,QAAQ,GACR,cAAc,GACd,YAAY,UACZ,YACA,WACA,GAAG,GACO,CACV,IAAM,EAAY,CAAC,EAAE,GAAS,GAC9B,OACI,EAAA,EAAA,KAAA,CAAC,MAAD,CACI,UAAW,EAAA,GACP,EAAA,QAAO,KACP,IAAc,QAAU,EAAA,QAAO,KAC/B,IAAc,UAAY,EAAA,QAAO,OACjC,IAAc,YAAc,EAAA,QAAO,SACnC,GAAe,EAAA,QAAO,YACtB,CAAC,GAAa,CAAC,GAAS,EAAA,QAAO,OAC/B,GAAS,EAAA,QAAO,MAChB,CACJ,EACA,SAAU,EAAe,EAAM,UAAY,EAAK,EAAM,SACtD,GAAI,EAZR,SAAA,CAcK,IACG,EAAA,EAAA,KAAA,CAAC,SAAD,CAAQ,UAAW,EAAA,QAAO,OAA1B,SAAA,CACK,OAAO,GAAU,UAAW,EAAA,EAAA,IAAA,CAAC,KAAD,CAAI,UAAW,EAAA,QAAO,MAAQ,SAAA,CAAU,CAAA,EAAI,EACxE,CACG,IAEX,GAAY,EAAA,EAAA,IAAA,CAAC,MAAD,CAAK,UAAW,EAAA,QAAO,KAAO,UAAc,CAAA,EAAI,EAC5D,IAAU,EAAA,EAAA,IAAA,CAAC,SAAD,CAAQ,UAAW,EAAA,QAAO,OAAS,SAAA,CAAe,CAAA,CAC5D,GAEb"}