"use client" import type { ReactNode } from "react" import type { LucideIcon } from "lucide-react" 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 "@/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 · https://reui.io/docs/components/base/badge */ 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.emptyTitle}

{column.emptyDescription}

{column.emptyAction ?
{column.emptyAction}
: null}
) : ( column.children )}
) })}
) }