import type { ButtonHTMLAttributes, HTMLAttributes, InputHTMLAttributes, ReactNode, SelectHTMLAttributes } from 'react'; import { AlertCircle, CheckCircle2, Info, type LucideIcon } from 'lucide-react'; import { cn } from '../lib/cn'; export function PageShell({ className, ...props }: HTMLAttributes) { return
; } export function PageContainer({ className, ...props }: HTMLAttributes) { return
; } export function SectionHeader({ eyebrow, title, description, actions, className, }: { eyebrow?: string; title: string; description?: string; actions?: ReactNode; className?: string; }) { return (
{eyebrow ?

{eyebrow}

: null}

{title}

{description ?

{description}

: null}
{actions ?
{actions}
: null}
); } export function Card({ className, ...props }: HTMLAttributes) { return
; } export function Surface({ className, ...props }: HTMLAttributes) { return
; } const buttonVariants = { primary: 'bg-emerald-600 text-white shadow-sm hover:bg-emerald-700 focus-visible:ring-emerald-500', secondary: 'border border-stone-200 bg-white text-stone-700 hover:bg-stone-50 focus-visible:ring-emerald-500', subtle: 'bg-stone-100 text-stone-700 hover:bg-stone-200 focus-visible:ring-emerald-500', danger: 'bg-red-600 text-white shadow-sm hover:bg-red-700 focus-visible:ring-red-500', } as const; const buttonSizes = { sm: 'h-10 px-4 text-sm', md: 'h-11 px-4 text-sm', lg: 'h-12 px-6 text-sm', icon: 'h-10 w-10', } as const; export function Button({ className, variant = 'primary', size = 'md', ...props }: ButtonHTMLAttributes & { variant?: keyof typeof buttonVariants; size?: keyof typeof buttonSizes; }) { return (