/** * File menu for a recollection (emanation). * Hosts Save, Rename, Import, Export that used to live under the title dropdown. */ import React, { useMemo, useState } from 'react' import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuPortal, DropdownMenuSeparator, DropdownMenuTrigger, } from '@/components/ui/dropdown-menu' import { Kbd, KbdGroup } from '@/components/ui/kbd' import { useRecollectionActions } from './RecollectionActionsContext' import { usePlatform } from '@/app/kosmos/KosmosContext' import { RenameRecollectionDialog } from './RenameRecollectionDialog' import { Download, FolderOpen, Pencil, Save } from 'lucide-react' import { useParams } from 'react-router-dom' export function RecollectionFileMenu() { const { activeSlot, onImport, onExport } = useRecollectionActions() const { recollections, renameRecollection } = usePlatform() const { recollectionId } = useParams<{ recollectionId: string }>() const [renameModalOpen, setRenameModalOpen] = useState(false) const onSave = activeSlot?.onSave const canSave = activeSlot?.canSave ?? false const recollectionName = useMemo( () => (recollectionId ? recollections.find((p) => p.id === recollectionId)?.name ?? '' : ''), [recollectionId, recollections] ) const menuItems = useMemo( () => ( <> {recollectionId && onSave != null && ( <> Save ⌘S )} {recollectionId && ( <> setRenameModalOpen(true)} className="gap-2"> Rename )} Import… Export… ), [recollectionId, onSave, canSave, onImport, onExport] ) return ( <> File {menuItems} { renameRecollection(id, newName) setRenameModalOpen(false) }} /> ) }