Provides three chat management modals — Rename, Archive, and Unarchive — plus a composite `ChatDialogModals` component that renders all three together, driven by target dialog state. ## Key Components | Export | Description | |---|---| | `RenameChatModal` | Modal with a controlled text input to rename a chat; seeds from `initialName` on open, fires `onSave` with the trimmed value | | `ArchiveChatModal` | Destructive confirmation modal to hide a chat from the current list | | `UnarchiveChatModal` | Confirmation modal to restore an archived chat back to the current list | | `ChatDialogModals` | Composite wrapper rendering all three modals; pairs with `useChatDialogManager` which produces the expected prop shape | ## Usage Example ```typescript // Standalone modal usage setIsOpen(false)} onSave={(newName) => updateChatName(chatId, newName)} /> // Composite usage with useChatDialogManager const dialogManager = useChatDialogManager() renameChat(name)} archiveTarget={dialogManager.archiveTarget} setArchiveTarget={dialogManager.setArchiveTarget} onConfirmArchive={() => archiveChat()} restoreTarget={dialogManager.restoreTarget} setRestoreTarget={dialogManager.setRestoreTarget} onConfirmRestore={() => restoreChat()} /> ``` ## Notes - All modals are capped at `600px` width on `md+` breakpoints via `ModalV2`. - `RenameChatModal` re-seeds the input via `useEffect` whenever `isOpen` or `initialName` changes, safely handling different chats sharing the same modal instance. - Button styles (`cancelBtn`, `saveBtn`, `dangerBtn`) follow the Figma `button-full` spec: full-width, DM Sans Bold 18px, `rounded-md`.