import * as React from "react"; import { Card, CardContent } from "~/components/ui/card"; import { cn } from "~/lib/utils"; import type { LucideIcon } from "lucide-react"; interface QuickActionCardProps { title: string; description?: string; icon: LucideIcon; variant?: "default" | "success" | "info" | "warning" | "purple"; className?: string; onClick?: () => void; children?: React.ReactNode; } const variantStyles = { default: { icon: "text-foreground", background: "bg-muted/50", hoverBackground: "group-hover:bg-muted/70", }, success: { icon: "text-status-success", background: "bg-status-success-muted", hoverBackground: "group-hover:bg-status-success-muted/70", }, info: { icon: "text-status-info", background: "bg-status-info-muted", hoverBackground: "group-hover:bg-status-info-muted/70", }, warning: { icon: "text-status-warning", background: "bg-status-warning-muted", hoverBackground: "group-hover:bg-status-warning-muted/70", }, purple: { icon: "text-purple-600", background: "bg-purple-100 dark:bg-purple-900/30", hoverBackground: "group-hover:bg-purple-200 dark:group-hover:bg-purple-900/50", }, }; export function QuickActionCard({ title, description, icon: Icon, variant = "default", className, onClick, children, }: QuickActionCardProps) { const styles = variantStyles[variant]; const content = (

{title}

{description && (

{description}

)}
); if (children) { return ( {children} ); } return ( {content} ); } export function QuickActionCardSkeleton() { return (
); }