"use client"; import { useParams } from "next/navigation"; import { useMutation, useQuery, useQueryClient } from "@tanstack/react-query"; import { toast } from "sonner"; import { useTenantId } from "@/hooks/useTenantId"; import { experienceApi } from "@/modules/experience/services/experience-api"; import { ExperiencePageLoader, ExperiencePageError } from "@/modules/experience/pages/shared"; import { ExperienceDetailBreadcrumbs } from "@/modules/experience/components/ExperienceBreadcrumbs"; import { PageHeader, Button, Card, CardContent, Input, FormField } from "@/components/ds"; export const FormBuilderPage = function ExperienceFormBuilder() { const params = useParams(); const formId = String(params.id); const { tenantId } = useTenantId(); const qc = useQueryClient(); const formQ = useQuery({ queryKey: ["experience", tenantId, "form", formId], queryFn: () => experienceApi.forms.get(tenantId!, formId), enabled: !!tenantId && !!formId, }); const saveM = useMutation({ mutationFn: (schema: string) => experienceApi.forms.update(tenantId!, formId, { form_schema_json: JSON.parse(schema), version: formQ.data?.version, }), onSuccess: () => { toast.success("اسکیمای فرم ذخیره شد"); qc.invalidateQueries({ queryKey: ["experience", tenantId, "form", formId] }); }, onError: (e: Error) => toast.error(e.message), }); if (!tenantId || formQ.isLoading) return ; if (formQ.error) return formQ.refetch()} />; const form = formQ.data!; const schemaStr = JSON.stringify(form.form_schema_json ?? { fields: [] }, null, 2); return (