// components/ui/card.tsx import * as React from 'react'; import { View } from 'react-native'; import { cva, type VariantProps } from 'class-variance-authority'; import { cn } from '@/lib/utils'; import { Text } from './text'; // Card Variants const cardVariants = cva( 'rounded-lg p-6', { variants: { variant: { default: 'bg-card border border-border shadow-sm', elevated: 'bg-card shadow-lg', outline: 'bg-card border-2 border-border', ghost: 'bg-transparent', filled: 'bg-muted', }, }, defaultVariants: { variant: 'default', }, } ); // Card Header Variants const cardHeaderVariants = cva( 'flex flex-col', { variants: { spacing: { default: 'gap-1.5', sm: 'gap-1', lg: 'gap-2', }, }, defaultVariants: { spacing: 'default', }, } ); // Card Content Variants const cardContentVariants = cva( 'p-0', { variants: { spacing: { default: 'pt-4', sm: 'pt-2', lg: 'pt-6', none: '', }, }, defaultVariants: { spacing: 'default', }, } ); // Card Footer Variants const cardFooterVariants = cva( 'flex flex-row items-center p-0', { variants: { spacing: { default: 'pt-4', sm: 'pt-2', lg: 'pt-6', none: '', }, alignment: { start: 'justify-start', center: 'justify-center', end: 'justify-end', between: 'justify-between', }, }, defaultVariants: { spacing: 'default', alignment: 'start', }, } ); interface CardProps extends VariantProps { children: React.ReactNode; className?: string; } interface CardHeaderProps extends VariantProps { children: React.ReactNode; className?: string; } interface CardTitleProps { children: React.ReactNode; className?: string; } interface CardDescriptionProps { children: React.ReactNode; className?: string; } interface CardContentProps extends VariantProps { children: React.ReactNode; className?: string; } interface CardFooterProps extends VariantProps { children: React.ReactNode; className?: string; } export function Card({ children, variant, className }: CardProps) { return ( {children} ); } export function CardHeader({ children, spacing, className }: CardHeaderProps) { return ( {children} ); } export function CardTitle({ children, className }: CardTitleProps) { return ( {children} ); } export function CardDescription({ children, className }: CardDescriptionProps) { return ( {children} ); } export function CardContent({ children, spacing, className }: CardContentProps) { return ( {children} ); } export function CardFooter({ children, spacing, alignment, className }: CardFooterProps) { return ( {children} ); }