"use client" import { cn } from "@/lib/utils" import { useMailSettingsStore } from "@/lib/stores/mail-settings-store" import type { InboxSortMode, MailBackgroundId, MailDensity, MailThemeMode, ReadingPaneMode, } from "@/lib/mail-settings/types" import { QuickSettingsCheckbox, QuickSettingsOption, } from "@/components/gmail/quick-settings/quick-settings-option" import { DensityCompactIcon, DensityDefaultIcon, DensityNormalIcon, InboxDefaultIcon, InboxImportantIcon, InboxStarredIcon, InboxUnreadIcon, ReadingPaneBelowIcon, ReadingPaneNoneIcon, ReadingPaneRightIcon, ThemeModePreview, } from "@/components/gmail/quick-settings/settings-preview-icons" import { MAIL_BACKGROUND_PRESETS, normalizeMailBackgroundId, } from "@/lib/mail-settings/constants" const DENSITY_OPTIONS: { id: MailDensity label: string icon: React.ReactNode }[] = [ { id: "default", label: "Par défaut", icon: }, { id: "normal", label: "Normal", icon: }, { id: "compact", label: "Compact", icon: }, ] const INBOX_OPTIONS: { id: InboxSortMode label: string icon: React.ReactNode }[] = [ { id: "default", label: "Par défaut", icon: }, { id: "important", label: "Importants d'abord", icon: , }, { id: "unread", label: "Non lus d'abord", icon: }, { id: "starred", label: "Suivis d'abord", icon: }, ] const READING_PANE_OPTIONS: { id: ReadingPaneMode label: string icon: React.ReactNode disabled?: boolean }[] = [ { id: "none", label: "Aucune séparation", icon: , }, { id: "right", label: "À droite de la boîte de réception", icon: , }, { id: "below", label: "Sous la boîte de réception", icon: , disabled: true, }, ] const THEME_OPTIONS: { id: MailThemeMode label: string }[] = [ { id: "light", label: "Clair" }, { id: "dark", label: "Sombre" }, { id: "system", label: "Système" }, ] function ThemeModePicker({ themeMode, onSelect, compact = false, }: { themeMode: MailThemeMode onSelect: (mode: MailThemeMode) => void compact?: boolean }) { return (
{THEME_OPTIONS.map((opt) => ( ))}
) } function SettingsSection({ title, action, children, className, }: { title: string action?: React.ReactNode children: React.ReactNode className?: string }) { return (
{children}
) } function SectionHeader({ title, action, }: { title: string action?: React.ReactNode }) { return (

{title}

{action}
) } export function MailSettingsFields({ variant = "panel", onOpenThemeDialog, }: { variant?: "panel" | "page" onOpenThemeDialog?: () => void }) { const density = useMailSettingsStore((s) => s.density) const setDensity = useMailSettingsStore((s) => s.setDensity) const themeMode = useMailSettingsStore((s) => s.themeMode) const setThemeMode = useMailSettingsStore((s) => s.setThemeMode) const backgroundId = useMailSettingsStore((s) => s.backgroundId) const setBackgroundId = useMailSettingsStore((s) => s.setBackgroundId) const inboxSort = useMailSettingsStore((s) => s.inboxSort) const setInboxSort = useMailSettingsStore((s) => s.setInboxSort) const readingPane = useMailSettingsStore((s) => s.readingPane) const setReadingPane = useMailSettingsStore((s) => s.setReadingPane) const conversationMode = useMailSettingsStore((s) => s.conversationMode) const setConversationMode = useMailSettingsStore((s) => s.setConversationMode) const activeBackgroundId = normalizeMailBackgroundId(backgroundId) const sectionClassName = variant === "page" ? "px-0 py-5" : undefined return ( <> {DENSITY_OPTIONS.map((opt) => ( setDensity(opt.id)} icon={opt.icon} /> ))} Arrière-plan ) : null } > {variant === "panel" && onOpenThemeDialog ? ( ) : ( <>

Arrière-plan

{MAIL_BACKGROUND_PRESETS.map((preset) => ( ))}
)}
{INBOX_OPTIONS.map((opt) => ( setInboxSort(opt.id)} icon={opt.icon} /> ))} {READING_PANE_OPTIONS.map((opt) => ( { if (!opt.disabled) setReadingPane(opt.id) }} icon={opt.icon} /> ))}
) }