import { useEffect, useRef, useState } from "react"; import { Plus, Save, Trash2 } from "lucide-react"; import { api } from "../api.js"; import { Button, ErrorNote, Field, Panel, Spinner, timeAgo } from "../ui.jsx"; /** Client page tab: hashtag sets, approved phrases/CTAs, words to avoid, voice notes. */ export default function BrandKit({ slug }) { const [kit, setKit] = useState(null); const [sets, setSets] = useState([]); const [phrases, setPhrases] = useState(""); const [avoid, setAvoid] = useState(""); const [notes, setNotes] = useState(""); const [busy, setBusy] = useState(false); const [error, setError] = useState(null); const [saved, setSaved] = useState(false); const apply = (k) => { setKit(k); setSets(k.hashtagSets.map((s) => ({ name: s.name, tags: s.tags.join(" ") }))); setPhrases(k.phrases.join("\n")); setAvoid(k.avoid.join("\n")); setNotes(k.notes); }; useEffect(() => { api(`/api/brandkit/${slug}`).then(apply).catch(setError); }, [slug]); const save = async () => { setBusy(true); setError(null); setSaved(false); try { apply(await api(`/api/brandkit/${slug}`, { method: "PUT", body: { hashtagSets: sets, phrases, avoid, notes } })); setSaved(true); } catch (e) { setError(e); } setBusy(false); }; if (!kit) return error ? : ; return (
{sets.map((s, i) => (
setSets(sets.map((x, j) => (j === i ? { ...x, name: e.target.value } : x)))} /> setSets(sets.map((x, j) => (j === i ? { ...x, tags: e.target.value } : x)))} />
))}