import { useState, useRef, useEffect } from "react"; import { FolderCreate, FolderTreeResponse, folderApi } from "../../api/folders"; import { DraggableNote } from "./DraggableNote"; export const Sidebar = () => { const [folderTree, setFolderTree] = useState(null); const [newFolder, setNewFolder] = useState(false); const [newFolderText, setNewFolderText] = useState(""); const newFolderRef = useRef(null); useEffect(() => { if (newFolder && newFolderRef.current) { newFolderRef.current.focus(); } }, [newFolder]); useEffect(() => { loadFolderTree(); }, []); const handleCreateFolder = async () => { if (!newFolderText.trim()) return; const newFolderData: FolderCreate = { name: newFolderText, parent_id: null, }; await folderApi.create(newFolderData); setNewFolderText(""); loadFolderTree(); setNewFolder(false); }; const loadFolderTree = async () => { const data = await folderApi.tree(); setFolderTree(data); }; return (
e.preventDefault()} onTouchMove={(e) => e.preventDefault()} > {/* New folder input */} {newFolder && (
setNewFolder(false)} onChange={(e) => setNewFolderText(e.target.value)} value={newFolderText} type="text" placeholder="Folder name..." className="border border-ctp-mauve rounded-md px-3 py-2 w-full focus:outline-none focus:ring-2 focus:ring-ctp-mauve bg-ctp-base text-ctp-text placeholder:text-ctp-overlay0" ref={newFolderRef} onKeyDown={(e) => { if (e.key === "Enter") { handleCreateFolder(); } if (e.key === "Escape") { setNewFolder(false); } }} />
)} {/* Folder tree */}
{folderTree?.folders.map((folder) => ( ))}
{/* Orphaned notes */} {folderTree?.orphaned_notes && folderTree.orphaned_notes.length > 0 && (
{/*
Unsorted
*/} {folderTree.orphaned_notes.map((note) => ( ))}
)}
); }; export const SidebarHeader = () => { return (

FastNotes

); };