'use client' import { useState } from 'react' import { NotebookResponse } from '@/lib/types/api' import { Button } from '@/components/ui/button' import { Badge } from '@/components/ui/badge' import { Archive, ArchiveRestore, Trash2 } from 'lucide-react' import { useUpdateNotebook, useDeleteNotebook } from '@/lib/hooks/use-notebooks' import { ConfirmDialog } from '@/components/common/ConfirmDialog' import { formatDistanceToNow } from 'date-fns' import { InlineEdit } from '@/components/common/InlineEdit' interface NotebookHeaderProps { notebook: NotebookResponse } export function NotebookHeader({ notebook }: NotebookHeaderProps) { const [showDeleteDialog, setShowDeleteDialog] = useState(false) const updateNotebook = useUpdateNotebook() const deleteNotebook = useDeleteNotebook() const handleUpdateName = async (name: string) => { if (!name || name === notebook.name) return await updateNotebook.mutateAsync({ id: notebook.id, data: { name } }) } const handleUpdateDescription = async (description: string) => { if (description === notebook.description) return await updateNotebook.mutateAsync({ id: notebook.id, data: { description: description || undefined } }) } const handleArchiveToggle = () => { updateNotebook.mutate({ id: notebook.id, data: { archived: !notebook.archived } }) } const handleDelete = () => { deleteNotebook.mutate(notebook.id) setShowDeleteDialog(false) } return ( <>
{notebook.archived && ( Archived )}
Created {formatDistanceToNow(new Date(notebook.created), { addSuffix: true })} • Updated {formatDistanceToNow(new Date(notebook.updated), { addSuffix: true })}
) }