"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import ImageUploader from "@/components/ImageUploader"; import SubdomainPicker from "@/components/SubdomainPicker"; import TemplatePicker from "@/components/TemplatePicker"; const STEPS = ["Податоци", "Датуми", "Фотографии", "Поддомен", "Шаблон"] as const; export default function OnboardingWizard() { const router = useRouter(); const [step, setStep] = useState(0); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const [title, setTitle] = useState(""); const [description, setDescription] = useState(""); const [bornDate, setBornDate] = useState(""); const [passedDate, setPassedDate] = useState(""); const [images, setImages] = useState<{ key: string; order: number; url?: string }[]>([]); const [subdomain, setSubdomain] = useState(""); const [templateId, setTemplateId] = useState(1); const canProceed = () => { switch (step) { case 0: return title.trim().length > 0; case 1: return true; case 2: return images.length > 0; case 3: return subdomain.length >= 3; case 4: return templateId >= 1 && templateId <= 3; default: return false; } }; const handlePublish = async () => { setLoading(true); setError(""); try { const res = await fetch("/api/publish", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ title, description, bornDate: bornDate || undefined, passedDate: passedDate || undefined, subdomain, templateId, images: images.map(({ key, order }) => ({ key, order })), }), }); if (!res.ok) { const data = await res.json(); throw new Error(data.error || "Не успеа објавувањето"); } router.push("/dashboard"); } catch (err) { setError(err instanceof Error ? err.message : "Нешто тргна наопаку"); } finally { setLoading(false); } }; const imagePreviews = images .filter((img) => img.url) .map((img) => ({ url: img.url!, order: img.order })); return (
Овие се опционални. Можете да внесете точни датуми, приближни години, или да ги оставите празни.