import { Trans } from "@lingui/react/macro" import { ChevronRightIcon, type LucideIcon, TriangleAlertIcon } from "lucide-react" import type { ReactNode } from "react" import { cn } from "@/lib/utils" import { Link } from "./router" import { Alert, AlertDescription, AlertTitle } from "./ui/alert" import { Button } from "./ui/button" import { Sheet, SheetContent, SheetDescription, SheetHeader, SheetTitle, SheetTrigger } from "./ui/sheet" /** * Destructive alert banner with a button that opens a sheet containing details. * Content agnostic so it can be reused for system alerts, network monitors, etc. */ export function AlertBannerSheet({ open, onOpenChange, title, description, buttonLabel, sheetTitle, sheetDescription, icon: Icon = TriangleAlertIcon, className, children, }: { open: boolean onOpenChange: (open: boolean) => void title: ReactNode description?: ReactNode buttonLabel?: ReactNode sheetTitle: ReactNode sheetDescription?: ReactNode icon?: LucideIcon className?: string children: ReactNode }) { return (
{title} {description && ( {description} )}
{sheetTitle} {sheetDescription && {sheetDescription}}
{children}
) } /** Clickable row for use inside AlertBannerSheet. */ export function AlertBannerSheetItem({ href, onClick, icon: Icon, title, description, }: { href: string onClick?: () => void icon: LucideIcon | React.FC<{ className?: string }> title: ReactNode description?: ReactNode }) { return (
{title}
{description &&
{description}
}
) }