"use client" import { accounts, mails } from "./data" import * as React from "react" import { AlertCircle, Archive, ArchiveX, Clock, File, Forward, Inbox, Mail as MailIcon, MessagesSquare, MoreVertical, Reply, ReplyAll, Search, Send, ShoppingCart, Trash2, Users2, LucideIcon } from "lucide-react" import { useMail } from "./use-mail" import { cn } from "@/lib/utils" import { format, formatDistanceToNow, addDays, addHours, nextSaturday } from "date-fns" import { Avatar, AvatarFallback, AvatarImage } from "@/components/ui/avatar" import { Badge } from "@/components/ui/badge" import { Button } from "@/components/ui/button" import { Calendar } from "@/components/ui/calendar" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { Input } from "@/components/ui/input" import { Label } from "@/components/ui/label" import { Popover, PopoverContent, PopoverTrigger } from "@/components/ui/popover" import { ResizableHandle, ResizablePanel, ResizablePanelGroup, } from "@/components/ui/resizable" import { ScrollArea } from "@/components/ui/scroll-area" import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select" import { Separator } from "@/components/ui/separator" import { Switch } from "@/components/ui/switch" import { Tabs, TabsContent, TabsList, TabsTrigger, } from "@/components/ui/tabs" import { Textarea } from "@/components/ui/textarea" import { Tooltip, TooltipContent, TooltipTrigger, TooltipProvider, } from "@/components/ui/tooltip" interface Account { label: string email: string icon: React.ReactNode } interface Mail { id: string name: string email: string subject: string text: string date: string read: boolean labels: string[] } interface NavLink { title: string label?: string icon: LucideIcon variant: "default" | "ghost" } interface MailProps { accounts: Account[] mails: Mail[] defaultLayout?: number[] defaultCollapsed?: boolean navCollapsedSize: number } function MailComponent({ accounts, mails, defaultLayout = [20, 32, 48], defaultCollapsed = false, navCollapsedSize, }: MailProps) { const [isCollapsed, setIsCollapsed] = React.useState(defaultCollapsed) const [mail, setMail] = useMail() const navLinks: NavLink[] = [ { title: "Inbox", label: "128", icon: Inbox, variant: "default" }, { title: "Drafts", label: "9", icon: File, variant: "ghost" }, { title: "Sent", label: "", icon: Send, variant: "ghost" }, { title: "Junk", label: "23", icon: ArchiveX, variant: "ghost" }, { title: "Trash", label: "", icon: Trash2, variant: "ghost" }, { title: "Archive", label: "", icon: Archive, variant: "ghost" }, { title: "Social", label: "972", icon: Users2, variant: "ghost" }, { title: "Updates", label: "342", icon: AlertCircle, variant: "ghost" }, { title: "Forums", label: "128", icon: MessagesSquare, variant: "ghost" }, { title: "Shopping", label: "8", icon: ShoppingCart, variant: "ghost" }, { title: "Promotions", label: "21", icon: Archive, variant: "ghost" } ] return ( {/* Left Sidebar */} setIsCollapsed(true)} onResize={() => setIsCollapsed(false)} className={cn(isCollapsed && "min-w-[50px] transition-all duration-300 ease-in-out")} >