import { faArrowLeft, faBoxOpen, faLayerGroup, faPen, faPlus, faTrash, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useAtomValue, useSetAtom } from "jotai"; import { Suspense, useState, useTransition } from "react"; import { Link } from "wouter"; import { type NoteType, noteTypesAtom } from "../atoms"; import { CreateNoteTypeModal } from "../components/CreateNoteTypeModal"; import { DeleteNoteTypeModal } from "../components/DeleteNoteTypeModal"; import { ErrorBoundary } from "../components/ErrorBoundary"; import { LoadingSpinner } from "../components/LoadingSpinner"; import { NoteTypeEditor } from "../components/NoteTypeEditor"; function NoteTypeList({ onEditNoteType, onDeleteNoteType, }: { onEditNoteType: (id: string) => void; onDeleteNoteType: (noteType: NoteType) => void; }) { const noteTypes = useAtomValue(noteTypesAtom); if (noteTypes.length === 0) { return (

No note types yet

Create a note type to define how your cards are structured

); } return (
{noteTypes.map((noteType, index) => (
Front: {noteType.frontTemplate} Back: {noteType.backTemplate} {noteType.isReversible && ( Reversible )}
))}
); } export function NoteTypesPage() { const reloadNoteTypes = useSetAtom(noteTypesAtom); const [, startTransition] = useTransition(); const [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [editingNoteTypeId, setEditingNoteTypeId] = useState( null, ); const [deletingNoteType, setDeletingNoteType] = useState( null, ); const handleNoteTypeMutation = () => { startTransition(() => { reloadNoteTypes(); }); }; return (
{/* Header */}
{/* Main Content */}
{/* Section Header */}

Note types define how your cards are structured

{/* Note Type List with Suspense */} }>
{/* Modals */} setIsCreateModalOpen(false)} onNoteTypeCreated={handleNoteTypeMutation} /> setEditingNoteTypeId(null)} onNoteTypeUpdated={handleNoteTypeMutation} /> setDeletingNoteType(null)} onNoteTypeDeleted={handleNoteTypeMutation} />
); }