import { cn } from "@/lib/utils" import { Badge } from "@/registry/ui/badge" import { Drawer, DrawerContent, DrawerDescription, DrawerHeader, DrawerTitle } from "@/registry/ui/drawer" import { ScrollArea } from "@/registry/ui/scroll-area" import { formatDistanceToNow } from "date-fns" import React, { ComponentProps } from "react" import { Mail } from "../data" import { useMail } from "../use-mail" import { MailDisplay } from "./mail-display" interface MailListProps { items: Mail[] } export function MailList({ items }: MailListProps) { const [mail, setMail] = useMail() const [open, setOpen] = React.useState(false) const selectedItem = items.find((item) => item.id === mail.selected) return ( {items.map((item) => ( { setMail({ ...mail, selected: item.id, }) setOpen(true) }} > {item.name} {!item.read && ( )} {formatDistanceToNow(new Date(item.date), { addSuffix: true, })} {item.subject} {item.text.substring(0, 300)} {item.labels.length ? ( {item.labels.map((label) => ( {label} ))} ) : null} ))} Email Details View email details {selectedItem && } ) } function getBadgeVariantFromLabel( label: string ): ComponentProps["variant"] { if (["work"].includes(label.toLowerCase())) { return "default" } if (["personal"].includes(label.toLowerCase())) { return "outline" } return "secondary" }