"use client"; import { useMemo, useState } from "react"; import { Plus, Trash2 } from "lucide-react"; import { buildFrontmatter, type PropField, type PropType } from "@/lib/tools/frontmatter"; import { CodeOutput } from "@/components/tools/CodeOutput"; const TYPES: PropType[] = ["text", "number", "checkbox", "date", "list", "tags"]; const TYPE_RU: Record = { text: "текст", number: "число", checkbox: "флажок", date: "дата", list: "список", tags: "теги", }; const field = "w-full p-2 text-sm"; const fieldStyle = { border: "1px solid var(--border)", borderRadius: "2px", backgroundColor: "var(--background)", color: "var(--foreground)" } as const; export function FrontmatterForm() { const [fields, setFields] = useState([ { key: "title", type: "text", value: "Моя заметка" }, { key: "tags", type: "tags", value: "obsidian, pkm" }, { key: "created", type: "date", value: "2026-06-23" }, ]); const yaml = useMemo(() => buildFrontmatter(fields), [fields]); function update(i: number, patch: Partial) { setFields((prev) => prev.map((f, idx) => (idx === i ? { ...f, ...patch } : f))); } function addRow() { setFields((prev) => [...prev, { key: "", type: "text", value: "" }]); } function removeRow(i: number) { setFields((prev) => prev.filter((_, idx) => idx !== i)); } return (
{fields.map((f, i) => (
update(i, { key: e.target.value })} />
{f.type === "checkbox" ? ( ) : f.type === "date" ? ( update(i, { value: e.target.value })} /> ) : ( update(i, { value: e.target.value })} /> )}
))}
); }