import { faArrowLeft, faBoxOpen, faLayerGroup, faPen, faPlus, faTrash, } from "@fortawesome/free-solid-svg-icons"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { useAtomValue } from "jotai"; import { Suspense, useState } 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"; import { queryClient } from "../queryClient"; function NoteTypeList({ onEditNoteType, onDeleteNoteType, }: { onEditNoteType: (id: string) => void; onDeleteNoteType: (noteType: NoteType) => void; }) { const { data: 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 [isCreateModalOpen, setIsCreateModalOpen] = useState(false); const [editingNoteTypeId, setEditingNoteTypeId] = useState( null, ); const [deletingNoteType, setDeletingNoteType] = useState( null, ); const handleNoteTypeMutation = () => { queryClient.invalidateQueries({ queryKey: ["noteTypes"] }); }; 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} />
); }