import React from 'react'; import { X } from 'lucide-react'; // Button interface ButtonProps extends React.ButtonHTMLAttributes { variant?: 'primary' | 'secondary' | 'outline' | 'ghost' | 'destructive'; size?: 'sm' | 'md' | 'lg' | 'icon'; } export const Button: React.FC = ({ className = '', variant = 'primary', size = 'md', children, ...props }) => { const baseStyles = "inline-flex items-center justify-center rounded-md text-sm font-medium transition-all focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50 active:scale-95"; const variants = { // Primary: Glow effect primary: "bg-primary text-primary-foreground shadow-[0_0_10px_rgba(6,182,212,0.5)] hover:bg-primary/90 hover:shadow-[0_0_15px_rgba(6,182,212,0.6)]", secondary: "bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80", outline: "border border-input bg-transparent shadow-sm hover:bg-accent hover:text-accent-foreground hover:border-primary/50", ghost: "hover:bg-accent hover:text-accent-foreground", destructive: "bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90", }; const sizes = { sm: "h-8 px-3 text-xs", md: "h-9 px-4 py-2", lg: "h-10 px-8", icon: "h-9 w-9", }; return ( ); }; // Input - Removed border, added subtle background interface InputProps extends React.InputHTMLAttributes {} export const Input: React.FC = ({ className = '', ...props }) => { return ( ); }; // Card - Glassmorphism style, very subtle border export const Card: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className = '' }) => (
{children}
); // Badge export const Badge: React.FC<{ children: React.ReactNode; variant?: 'default' | 'success' | 'warning' | 'outline' }> = ({ children, variant = 'default' }) => { const styles = { default: "border-transparent bg-primary/20 text-primary hover:bg-primary/30 border border-primary/20", success: "border-transparent bg-green-500/20 text-green-400 border border-green-500/20", warning: "border-transparent bg-yellow-500/20 text-yellow-400 border border-yellow-500/20", outline: "text-foreground border border-white/10 hover:bg-accent hover:text-accent-foreground", }; return (
{children}
); }; // Table - Subtle borders export const TableHeader: React.FC<{ children: React.ReactNode }> = ({ children }) => {children}; export const TableRow: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className = '' }) => {children}; export const TableHead: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className = '' }) => {children}; export const TableCell: React.FC<{ children: React.ReactNode; className?: string }> = ({ children, className = '' }) => {children}; // Drawer (Side Sheet) interface DrawerProps { isOpen: boolean; onClose: () => void; title: string; children: React.ReactNode; } export const Drawer: React.FC = ({ isOpen, onClose, title, children }) => { if (!isOpen) return null; return (
{/* Backdrop */}
{/* Drawer Content */}

{title}

{children}
); }; // Dialog (Modal) interface DialogProps { isOpen: boolean; onClose: () => void; title: string; children: React.ReactNode; footer?: React.ReactNode; } export const Dialog: React.FC = ({ isOpen, onClose, title, children, footer }) => { if (!isOpen) return null; return (

{title}

{children}
{footer && (
{footer}
)}
); };