import type { ReactNode } from 'react' import type { LucideIcon } from 'lucide-react' import { EmptyState } from '@/components/empty-state' import { Badge } from '@/components/reui/badge' import { Frame, FrameHeader, FramePanel, FrameTitle, } from '@/components/reui/frame' import { IconTile } from '@/components/reui/icon-tile' import { cn } from '@cfdm/ui/lib/utils' /** * Sibling Frame columns for dashboard attention queue. * Preview: https://reui.io/preview/base/dashboard-1 · https://reui.io/preview/base/stats-12 * Docs: https://reui.io/docs/components/base/frame · https://reui.io/docs/components/base/icon-tile */ export interface AttentionQueueColumn { id: string title: string icon: LucideIcon iconClassName?: string count: number countVariant?: 'destructive' | 'warning' | 'secondary' | 'destructive-light' | 'warning-light' emptyTitle: string emptyDescription: string emptyAction?: ReactNode children: ReactNode } interface AttentionQueueProps { columns: AttentionQueueColumn[] className?: string } const DEFAULT_ICON_CLASS = 'text-muted-foreground [&_svg]:text-current' export function AttentionQueue({ columns, className }: AttentionQueueProps) { return (
{columns.map((column) => { const Icon = column.icon const isEmpty = column.count === 0 return (
{column.title} {column.count > 0 ? ( {column.count} ) : null}
{isEmpty ? (
) : ( column.children )}
) })}
) }