// CreateSubfolderForm component - English version import { useState } from "react"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue, } from "@/components/ui/select"; import { Loader2 } from "lucide-react"; interface CreateSubfolderFormProps { parentFolder: any; onSubmit: (name: string, category: string) => Promise; onCancel: () => void; } export function CreateSubfolderForm({ parentFolder, onSubmit, onCancel }: CreateSubfolderFormProps) { const [folderName, setFolderName] = useState(""); const [category, setCategory] = useState(parentFolder?.category || "general"); const [isCreating, setIsCreating] = useState(false); const [error, setError] = useState(""); const handleSubmit = async (e: React.FormEvent) => { e.preventDefault(); if (!folderName.trim()) { setError("Please enter a folder name"); return; } // Special character validation const invalidChars = /[<>:"|?*\/\\]/; if (invalidChars.test(folderName)) { setError("Folder name contains invalid characters"); return; } setIsCreating(true); setError(""); try { await onSubmit(folderName, category); setFolderName(""); setCategory(parentFolder?.category || "general"); } catch (error: any) { setError(error.message || "Failed to create folder"); } finally { setIsCreating(false); } }; return (
{ setFolderName(e.target.value); setError(""); }} placeholder="Enter folder name" disabled={isCreating} autoFocus /> {error && (

{error}

)}

Sub-folders inherit the security category from their parent folder by default

); }