import { X } from 'lucide-react'; import type { ButtonHTMLAttributes, ReactNode } from 'react'; import { cn } from '../lib/utils'; export function Card({ children, className }: { children: ReactNode; className?: string; }) { return
{children}
; } export function CardHeader({ title, description, action, className }: { title: string; description?: string; action?: ReactNode; className?: string; }) { return (

{title}

{description ?

{description}

: null}
{action ?
{action}
: null}
); } export function Button({ children, variant = 'default', className, ...props }: { children: ReactNode; variant?: 'default' | 'secondary' | 'ghost' | 'outline'; className?: string; } & ButtonHTMLAttributes) { const variants = { default: 'bg-primary text-primary-foreground hover:bg-primary/90', secondary: 'bg-secondary text-secondary-foreground hover:bg-secondary/80', ghost: 'hover:bg-accent hover:text-accent-foreground', outline: 'border border-border bg-background hover:bg-accent hover:text-accent-foreground' }; return ( ); } export function Badge({ children, tone = 'neutral' }: { children: ReactNode; tone?: 'neutral' | 'green' | 'amber' | 'red' | 'blue' | 'violet'; }) { const tones = { neutral: 'border-border bg-muted text-muted-foreground', green: 'border-emerald-500/30 bg-emerald-500/10 text-emerald-300', amber: 'border-amber-500/30 bg-amber-500/10 text-amber-300', red: 'border-rose-500/30 bg-rose-500/10 text-rose-300', blue: 'border-sky-500/30 bg-sky-500/10 text-sky-300', violet: 'border-violet-500/30 bg-violet-500/10 text-violet-300' }; return ( {children} ); } export function Progress({ value, tone = 'primary' }: { value: number; tone?: 'primary' | 'green' | 'amber' | 'red' }) { const tones = { primary: 'bg-primary', green: 'bg-emerald-400', amber: 'bg-amber-400', red: 'bg-rose-400' }; return (
); } export function Modal({ open, title, children, footer, onClose, className }: { open: boolean; title: ReactNode; children: ReactNode; footer?: ReactNode; onClose: () => void; className?: string; }) { if (!open) return null; return (

{title}

{children}
{footer ?
{footer}
: null}
); }