"use client" import { Pencil } from "lucide-react" import { cn } from "@/lib/utils" import { buildSearchUrl } from "@/lib/mail-search/search-params" import { MobileXsBulkSheets } from "@/components/gmail/mobile-xs-bulk-sheets" import { EmailListToolbar } from "@/components/gmail/email-list/email-list-toolbar" import { EmailListBody } from "@/components/gmail/email-list/email-list-body" import { EmailListEmailViewPane } from "@/components/gmail/email-list/email-list-email-view-pane" import { EmailListEmpty } from "@/components/gmail/email-list/email-list-empty" import type { EmailListProps } from "@/components/gmail/email-list/email-list-helpers" import type { EmailListData } from "@/components/gmail/email-list/hooks/use-email-list-data" import type { EmailListLabels } from "@/components/gmail/email-list/hooks/use-email-list-labels" import type { EmailListSelection } from "@/components/gmail/email-list/hooks/use-email-list-selection" import type { EmailListReading } from "@/components/gmail/email-list/hooks/use-email-list-reading" type EmailListLayoutProps = { props: EmailListProps data: EmailListData labels: EmailListLabels selection: EmailListSelection reading: EmailListReading } export function EmailListLayout({ props, data, labels, selection, reading, }: EmailListLayoutProps) { const { onToggleSidebar } = props const { splitView, isViewMode, isXs, touchNav, openCompose, } = data const { mobileXsMoveSheetOpen, mobileXsLabelSheetOpen, handleMobileXsMoveSheetOpenChange, handleLabelSheetOpenChange, labelSheetTargetIds, bulkMoveTo, openMobileXsMoveSheet, openMobileXsLabelSheet, } = selection const { openEmail, } = reading const toolbarProps = { isViewMode: data.isViewMode, splitView: data.splitView, listToolbarMode: data.listToolbarMode, compactInboxTabs: data.compactInboxTabs, isSearchMode: data.isSearchMode, selectedFolder: data.selectedFolder, mobileFolderLabel: data.mobileFolderLabel, displayListEmails: data.displayListEmails, mobileUnreadCount: data.mobileUnreadCount, mobileSelectionMode: selection.mobileSelectionMode, setMobileSelectionMode: selection.setMobileSelectionMode, setSelectedEmails: selection.setSelectedEmails, mobileXsMoreMenuOpen: selection.mobileXsMoreMenuOpen, setMobileXsMoreMenuOpen: selection.setMobileXsMoreMenuOpen, showBulkToolbar: selection.showBulkToolbar, bulkSelectMenuOpen: selection.bulkSelectMenuOpen, setBulkSelectMenuOpen: selection.setBulkSelectMenuOpen, selectAllChecked: selection.selectAllChecked, handleSelectAllChange: selection.handleSelectAllChange, selectMenuAll: selection.selectMenuAll, selectMenuNone: selection.selectMenuNone, selectMenuRead: selection.selectMenuRead, selectMenuUnread: selection.selectMenuUnread, selectMenuStarred: selection.selectMenuStarred, selectMenuUnstarred: selection.selectMenuUnstarred, bulkArchive: selection.bulkArchive, bulkDelete: selection.bulkDelete, bulkSpam: selection.bulkSpam, hasUnreadInSelection: selection.hasUnreadInSelection, bulkMarkRead: selection.bulkMarkRead, bulkMarkUnread: selection.bulkMarkUnread, moveTargets: data.moveTargets, bulkMoveTo: selection.bulkMoveTo, labelPickerQuery: data.labelPickerQuery, setLabelPickerQuery: data.setLabelPickerQuery, catalogLabels: labels.catalogLabels, resolveLabelVisual: labels.resolveLabelVisual, bulkTargetIds: selection.bulkTargetIds, getCatalogLabelPresence: labels.getCatalogLabelPresence, toggleLabelOnEmails: labels.toggleLabelOnEmails, addLabelToEmails: labels.addLabelToEmails, isRefreshing: data.isRefreshing, handleManualRefresh: data.handleManualRefresh, markAllInViewAsRead: data.markAllInViewAsRead, openMobileXsMoveSheet, openMobileXsLabelSheet, listPage: data.listPage, totalPages: data.totalPages, openMailIndex: reading.openMailIndex, goListPrevPage: reading.goListPrevPage, goListNextPage: reading.goListNextPage, goToPrev: reading.goToPrev, goToNext: reading.goToNext, goBack: reading.goBack, openEmail: reading.openEmail, viewModeIsRead: reading.viewModeIsRead, singleArchive: reading.singleArchive, singleDelete: reading.singleDelete, singleNotSpam: reading.singleNotSpam, singleSpam: reading.singleSpam, singleToggleRead: reading.singleToggleRead, singleMoveTo: reading.singleMoveTo, onToggleSidebar, inboxTabBarItems: data.inboxTabBarItems, activeInboxTabId: data.activeInboxTabId, unseenInTabById: data.unseenInTabById, tabUnseenSenderLineById: data.tabUnseenSenderLineById, handleCategoryInboxTabClick: reading.handleCategoryInboxTabClick, searchParams: data.searchParams, searchAccount: data.searchAccount, allEmails: data.allEmails, setSearchFilter: data.setSearchFilter, toggleSearchFilter: data.toggleSearchFilter, setAdvancedOpen: data.setAdvancedOpen, searchRouter: data.searchRouter, buildSearchUrl, } return (