import { useState } from "react"; import { PencilIcon, TrashIcon } from "@heroicons/react/20/solid"; import { cn } from "~/utils/cn"; import { Button } from "../primitives/Buttons"; import { Popover, PopoverContent, PopoverMenuItem, PopoverVerticalEllipseTrigger, } from "../primitives/Popover"; import { Dialog, DialogContent, DialogFooter, DialogHeader } from "../primitives/Dialog"; import { DialogClose } from "@radix-ui/react-dialog"; import { Input } from "../primitives/Input"; import { InputGroup } from "../primitives/InputGroup"; import { Label } from "../primitives/Label"; export type TitleWidgetProps = { title: string; isDraggable?: boolean; isResizing?: boolean; /** Callback when rename is clicked. Receives the new title. */ onRename?: (newTitle: string) => void; /** Callback when delete is clicked. */ onDelete?: () => void; }; export function TitleWidget({ title, isDraggable, isResizing, onRename, onDelete, }: TitleWidgetProps) { const [isMenuOpen, setIsMenuOpen] = useState(false); const [isRenameDialogOpen, setIsRenameDialogOpen] = useState(false); const [renameValue, setRenameValue] = useState(title); const hasMenu = onRename || onDelete; return (
{title} {hasMenu && (
{onRename && ( { setRenameValue(title); setIsRenameDialogOpen(true); setIsMenuOpen(false); }} /> )} {onDelete && ( { onDelete(); setIsMenuOpen(false); }} /> )}
)}
{/* Rename Dialog */} {onRename && ( Rename title
{ e.preventDefault(); if (renameValue.trim()) { onRename(renameValue.trim()); setIsRenameDialogOpen(false); } }} > setRenameValue(e.target.value)} placeholder="Section title" autoFocus />
)}
); }