{ "$schema": "https://ui.shadcn.com/schema/registry-item.json", "name": "app-card", "title": "App Card", "description": "A card layout for app sections with optional icon, header action, separator, and footer.", "dependencies": [ "lucide-react" ], "registryDependencies": [ "https://ds.formance.com/r/button.json", "https://ds.formance.com/r/card.json" ], "files": [ { "path": "registry/default/ui-fragments/app-card.tsx", "content": "import { LucideIcon } from 'lucide-react';\n\nimport { Button, TButtonProps } from '@/registry/default/ui/button';\nimport {\n Card,\n CardAction,\n CardContent,\n CardDescription,\n CardHeader,\n CardTitle,\n} from '@/registry/default/ui/card';\n\nexport type TAppCardProps = {\n title?: string;\n description?: string;\n iconVariant?: TButtonProps['variant'];\n appIcon?: LucideIcon;\n footer?: React.ReactNode;\n headerAction?: React.ReactNode;\n headerContent?: React.ReactNode;\n isEmpty?: boolean;\n} & React.ComponentProps;\n\nexport function AppCard({\n title,\n description,\n appIcon,\n iconVariant,\n children,\n footer,\n headerAction,\n headerContent,\n isEmpty,\n ...cardProps\n}: TAppCardProps) {\n const Icon = appIcon;\n const hasHeader =\n title || description || appIcon || headerAction || headerContent;\n\n return (\n \n {hasHeader && (\n \n
\n {Icon && (\n \n )}\n
\n {title}\n {headerContent}\n
\n
\n {description}\n {headerAction && !isEmpty && {headerAction}}\n
\n )}\n {children}\n {footer}\n
\n );\n}\n", "type": "registry:component", "target": "components/ui-fragments/app-card.tsx" } ], "type": "registry:component" }