"use client" import { useRef, useState } from "react" import { Folder, MoreVertical } from "lucide-react" import { Icon } from "@iconify/react" import { cn, formatCount } from "@/lib/utils" import { useEmailDropTarget } from "@/lib/drag-context" import { isSystemNavLabelId } from "@/lib/sidebar-nav-data" import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu" import { SidebarNavOptionsSheet, SidebarNavSheetAction, } from "@/components/gmail/sidebar-nav-options-sheet" import { useSidebarTouchOptionsMenu } from "@/components/gmail/use-sidebar-touch-options" import type { CategoryNavSourceItem } from "@/components/gmail/sidebar/sidebar-nav-constants" import { navRowRoundedWhenActive, SidebarNavIconSlot, SidebarOverflowColumn, sidebarOverflowMenuButtonClass, } from "@/components/gmail/sidebar/sidebar-nav-primitives" export function CategoryNavRow({ item, isSelected, isExpanded, unreadCount, onSelectFolder, onDisableNavLabel, onEnableNavLabel, touchNav, variant = "listed", }: { item: CategoryNavSourceItem isSelected: boolean isExpanded: boolean unreadCount: number onSelectFolder: (id: string) => void onDisableNavLabel: (id: string) => void onEnableNavLabel: (id: string) => void touchNav: boolean variant?: "listed" | "hidden" }) { const { isOver, dropHandlers } = useEmailDropTarget(item.id, item.label) const [menuOpen, setMenuOpen] = useState(false) const menuTriggerRef = useRef(null) const isHiddenRow = variant === "hidden" const showCategoryMenu = isSystemNavLabelId(item.id) && isExpanded const hasUnread = unreadCount > 0 const touchMenuEnabled = touchNav && (isHiddenRow || showCategoryMenu) const { sheetOpen, setSheetOpen, touchRowProps, touchRowClassName, closeSheet } = useSidebarTouchOptionsMenu(touchMenuEnabled) const handleMenuOpenChange = (open: boolean) => { setMenuOpen(open) if (!open) { queueMicrotask(() => menuTriggerRef.current?.blur()) } } const rowHoverHeld = !isHiddenRow && !isSelected && !isOver && (menuOpen || sheetOpen) const rowIcon = item.icon ? ( ) : ( ) if (isHiddenRow) { return ( <>
{!touchNav && ( { onEnableNavLabel(item.id) setMenuOpen(false) }} > Réactiver le libellé )}
{touchNav && ( { onEnableNavLabel(item.id) closeSheet() }} > Réactiver le libellé )} ) } return ( <>
{showCategoryMenu && ( {!touchNav && ( Afficher { onDisableNavLabel(item.id) setMenuOpen(false) }} > Désactiver le libellé )} )}
{touchNav && showCategoryMenu && (
Afficher
{ onDisableNavLabel(item.id) closeSheet() }} > Désactiver le libellé
)} ) }