import React from 'react'; import { cn } from '../utils/helpers'; import type { ComponentBaseProps } from '../types'; import styles from './Card.module.css'; export interface CardProps extends ComponentBaseProps { padding?: 'none' | 'sm' | 'md' | 'lg'; hoverable?: boolean; onClick?: () => void; children?: React.ReactNode; } export interface CardSectionProps extends ComponentBaseProps { noPadding?: boolean; children?: React.ReactNode; } export const Card = React.forwardRef( ({ padding = 'md', hoverable = false, onClick, children, className, style, id }, ref) => { const classes = cn( styles.card, padding && styles[`padding${padding.charAt(0).toUpperCase() + padding.slice(1)}`], hoverable && styles.hoverable, onClick && styles.clickable, className ); return (
{children}
); } ); Card.displayName = 'Card'; export const CardHeader = React.forwardRef( ({ noPadding = false, children, className, style, id }, ref) => { return (
{children}
); } ); CardHeader.displayName = 'CardHeader'; export const CardBody = React.forwardRef( ({ noPadding = false, children, className, style, id }, ref) => { return (
{children}
); } ); CardBody.displayName = 'CardBody'; export const CardFooter = React.forwardRef( ({ noPadding = false, children, className, style, id }, ref) => { return (
{children}
); } ); CardFooter.displayName = 'CardFooter';