"use client"; import { useCallback, useRef, useState } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogDescription, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; interface CreateFolderDialogProps { open: boolean; onOpenChange: (open: boolean) => void; parentFolderName?: string | null; onConfirm: (name: string) => void; } export function CreateFolderDialog({ open, onOpenChange, parentFolderName, onConfirm, }: CreateFolderDialogProps) { const [name, setName] = useState(""); const inputRef = useRef(null); const handleOpenChange = useCallback( (next: boolean) => { if (next) { setName(""); setTimeout(() => inputRef.current?.focus(), 0); } onOpenChange(next); }, [onOpenChange] ); const handleSubmit = useCallback( (e?: React.FormEvent) => { e?.preventDefault(); const trimmed = name.trim(); if (!trimmed) return; onConfirm(trimmed); onOpenChange(false); }, [name, onConfirm, onOpenChange] ); const isSubfolder = !!parentFolderName; return (
{isSubfolder ? "New subfolder" : "New folder"} {isSubfolder ? `Create a new folder inside "${parentFolderName}".` : "Create a new folder at the root level."}
setName(e.target.value)} maxLength={255} autoComplete="off" className="text-sm h-9 sm:h-10" />
); }