From 6f9982540c58ee52c0cfe55cb3e5ea84b5978a31 Mon Sep 17 00:00:00 2001 From: Linus Rath <139418639+rathlinus@users.noreply.github.com> Date: Fri, 15 May 2026 14:48:39 +0200 Subject: [PATCH] feat: add icons for shared, important, memos, scheduled, snoozed folders #288 --- components/layout/sidebar.tsx | 20 ++++++++++++++++++++ components/settings/folder-settings.tsx | 6 ++++++ 2 files changed, 26 insertions(+) diff --git a/components/layout/sidebar.tsx b/components/layout/sidebar.tsx index 45638ad3..72f422ed 100644 --- a/components/layout/sidebar.tsx +++ b/components/layout/sidebar.tsx @@ -20,6 +20,7 @@ import { Folder, FolderOpen, User, + Users, Palmtree, Settings, X, @@ -28,6 +29,10 @@ import { FlaskConical, PlayCircle, Loader2, + AlertTriangle, + NotebookPen, + CalendarClock, + BellOff, } from "lucide-react"; import { cn, buildMailboxTree, MailboxNode } from "@/lib/utils"; import { Mailbox } from "@/lib/jmap/types"; @@ -88,6 +93,11 @@ const getIconForMailbox = (role?: string, name?: string, hasChildren?: boolean, if (role === "trash" || lowerName.includes("trash") || lowerName.includes("deleted")) return Trash2; if (role === "junk" || role === "spam" || lowerName.includes("junk") || lowerName.includes("spam")) return Ban; if (role === "archive" || lowerName.includes("archive")) return Archive; + if (role === "shared" || lowerName.includes("shared")) return Users; + if (role === "important" || lowerName.includes("important")) return AlertTriangle; + if (role === "memos" || lowerName.includes("memo")) return NotebookPen; + if (role === "scheduled" || lowerName.includes("scheduled")) return CalendarClock; + if (role === "snoozed" || lowerName.includes("snoozed")) return BellOff; if (lowerName.includes("star") || lowerName.includes("flag")) return Star; if (hasChildren) { @@ -104,6 +114,11 @@ const ROLE_ICON_COLOR: Record = { trash: "text-muted-foreground", junk: "text-red-600/80 dark:text-red-400/80", archive: "text-amber-600/80 dark:text-amber-400/80", + shared: "text-cyan-600/80 dark:text-cyan-400/80", + important: "text-orange-600/80 dark:text-orange-400/80", + memos: "text-yellow-600/80 dark:text-yellow-400/80", + scheduled: "text-sky-600/80 dark:text-sky-400/80", + snoozed: "text-slate-500/80 dark:text-slate-400/80", }; function resolveRoleKey(role?: string, name?: string): string | undefined { @@ -114,6 +129,11 @@ function resolveRoleKey(role?: string, name?: string): string | undefined { if (role === "trash" || lowerName.includes("trash") || lowerName.includes("deleted")) return "trash"; if (role === "junk" || role === "spam" || lowerName.includes("junk") || lowerName.includes("spam")) return "junk"; if (role === "archive" || lowerName.includes("archive")) return "archive"; + if (role === "shared" || lowerName.includes("shared")) return "shared"; + if (role === "important" || lowerName.includes("important")) return "important"; + if (role === "memos" || lowerName.includes("memo")) return "memos"; + if (role === "scheduled" || lowerName.includes("scheduled")) return "scheduled"; + if (role === "snoozed" || lowerName.includes("snoozed")) return "snoozed"; return undefined; } diff --git a/components/settings/folder-settings.tsx b/components/settings/folder-settings.tsx index c168645b..c4f09aec 100644 --- a/components/settings/folder-settings.tsx +++ b/components/settings/folder-settings.tsx @@ -13,6 +13,7 @@ import { Inbox, Send, FileText, Trash, ShieldAlert, Archive, Star, Heart, Bookmark, Tag, Flag, Briefcase, Users, Bell, Zap, Globe, Lock, Eye, MessageSquare, Mail, + AlertTriangle, NotebookPen, CalendarClock, BellOff, type LucideIcon, } from 'lucide-react'; import { cn, buildMailboxTree, type MailboxNode } from '@/lib/utils'; @@ -27,6 +28,11 @@ const ROLE_ICONS: Record = { trash: Trash, junk: ShieldAlert, archive: Archive, + shared: Users, + important: AlertTriangle, + memos: NotebookPen, + scheduled: CalendarClock, + snoozed: BellOff, }; const ICON_CHOICES: { name: string; icon: LucideIcon }[] = [