"use client"; import dynamic from "next/dynamic"; import { useState, useTransition } from "react"; import { Button } from "@/components/ui/button"; import { Dialog, DialogContent, DialogFooter, DialogHeader, DialogTitle, } from "@/components/ui/dialog"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; import { createNote } from "@/modules/notes/server/actions"; const RichTextEditor = dynamic( () => import("@/components/rich-text/rich-text-editor").then((mod) => mod.RichTextEditor), { ssr: false, loading: () => (
Loading editor…
), }, ); type Props = { open: boolean; onOpenChange: (open: boolean) => void; }; export function NoteCreateDialog({ open, onOpenChange }: Props) { return ( {open ? onOpenChange(false)} /> : null} ); } function NoteCreateForm({ onDone }: { onDone: () => void }) { const [title, setTitle] = useState(""); const [body, setBody] = useState(""); const [remindAt, setRemindAt] = useState(""); const [isPending, startTransition] = useTransition(); function handleSubmit(e: React.FormEvent) { e.preventDefault(); if (!title.trim()) return; startTransition(async () => { await createNote({ title: title.trim(), body, remindAt: remindAt ? new Date(remindAt) : null, }); onDone(); }); } return ( <> New note
setTitle(e.target.value)} required />
setRemindAt(e.target.value)} />
); }