@actuate-media/cms-admin 0.76.7 → 0.77.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"FormEditor.d.ts","sourceRoot":"","sources":["../../src/views/FormEditor.tsx"],"names":[],"mappings":"AA6DA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,eAAe,2CAohBjE"}
1
+ {"version":3,"file":"FormEditor.d.ts","sourceRoot":"","sources":["../../src/views/FormEditor.tsx"],"names":[],"mappings":"AAwFA,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAA;IACf,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAED,wBAAgB,UAAU,CAAC,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,eAAe,2CAKjE"}
@@ -1,131 +1,226 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useCallback, useEffect } from 'react';
4
- import { Save, ArrowLeft, Plus, Trash2, GripVertical, MessageSquare, ExternalLink, BarChart3, ChevronDown, ChevronRight, Loader2, } from 'lucide-react';
5
- import { useApiData } from '../lib/useApiData.js';
6
- import { cmsApi } from '../lib/api.js';
3
+ /**
4
+ * Full-page form editor the canonical place to configure everything about a
5
+ * form. Backed entirely by the typed Forms API (`lib/forms-service.ts`), the
6
+ * same backend as the Forms list's inline Schema pane, so the two surfaces can
7
+ * never drift:
8
+ *
9
+ * - Details → name / description / status + post-submit confirmation
10
+ * (`PATCH /forms/:id` — `successMessage` / `redirectUrl`,
11
+ * which the public submission pipeline actually reads)
12
+ * - Fields → versioned schema editor (`PUT /forms/:id/schema`)
13
+ * - Notifications→ shared NotificationsPanel (`/forms/:id/notifications`)
14
+ * - Analytics → GA4 event tracking config (persisted on the definition,
15
+ * exposed on the public schema, fired by `<ActuateForm>`)
16
+ * - Embed → shared EmbedPanel (endpoints, snippet, allowed domains)
17
+ * - Integrations → shared WebhooksPanel (signed CRM/Zapier webhooks)
18
+ *
19
+ * New forms get a focused create screen (details + starting fields); saving
20
+ * routes into this editor so notifications/embed/webhooks — which need a form
21
+ * id — are one click away.
22
+ */
23
+ import * as Tabs from '@radix-ui/react-tabs';
24
+ import { ArrowLeft, ExternalLink, Inbox, Loader2, MessageSquare, Save } from 'lucide-react';
25
+ import { useCallback, useEffect, useState } from 'react';
26
+ import { toast } from 'sonner';
27
+ import { EmbedPanel } from '../components/forms/EmbedPanel.js';
28
+ import { FieldsPanel } from '../components/forms/FieldsPanel.js';
29
+ import { NotificationsPanel } from '../components/forms/NotificationsPanel.js';
30
+ import { WebhooksPanel } from '../components/forms/WebhooksPanel.js';
31
+ import { FormStatusBadge, FormsErrorState, FormsLoading, btnPrimary, btnSecondary, } from '../components/forms/primitives.js';
7
32
  import { Toggle } from '../components/ui/Toggle.js';
8
- const FIELD_TYPES = [
9
- { value: 'text', label: 'Text' },
10
- { value: 'email', label: 'Email' },
11
- { value: 'tel', label: 'Phone' },
12
- { value: 'textarea', label: 'Textarea' },
13
- { value: 'select', label: 'Dropdown' },
14
- { value: 'checkbox', label: 'Checkbox' },
15
- { value: 'number', label: 'Number' },
16
- { value: 'date', label: 'Date' },
17
- { value: 'url', label: 'URL' },
18
- { value: 'file', label: 'File Upload' },
19
- { value: 'hidden', label: 'Hidden' },
33
+ import { emitFormsChanged } from '../lib/forms-events.js';
34
+ import { createForm, fetchFormById, fetchFormSchema, saveFormSchema, updateForm, } from '../lib/forms-service.js';
35
+ import { useNavigationBlocker } from '../router/index.js';
36
+ const inputCls = 'border-border bg-input-background text-foreground focus-visible:ring-ring w-full rounded-lg border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none';
37
+ const TABS = [
38
+ { id: 'details', label: 'Details' },
39
+ { id: 'fields', label: 'Fields' },
40
+ { id: 'notifications', label: 'Notifications' },
41
+ { id: 'analytics', label: 'Analytics' },
42
+ { id: 'embed', label: 'Embed' },
43
+ { id: 'integrations', label: 'Integrations' },
20
44
  ];
45
+ function detailsFromForm(form) {
46
+ return {
47
+ name: form.name,
48
+ description: form.description ?? '',
49
+ status: form.status,
50
+ // The submission pipeline redirects whenever redirectUrl is non-empty,
51
+ // otherwise it shows successMessage — mirror that decision here.
52
+ confirmationType: form.redirectUrl?.trim() ? 'redirect' : 'message',
53
+ successMessage: form.successMessage ?? '',
54
+ redirectUrl: form.redirectUrl ?? '',
55
+ };
56
+ }
57
+ const DEFAULT_ANALYTICS = { enabled: false };
21
58
  export function FormEditor({ formId, onNavigate }) {
22
- const isNew = !formId;
23
- const { data: existingForm, loading } = useApiData(formId ? `/collections/forms/${formId}` : null);
24
- const [name, setName] = useState('');
25
- const [description, setDescription] = useState('');
26
- const [status, setStatus] = useState('active');
59
+ if (!formId) {
60
+ return _jsx(NewFormEditor, { onNavigate: onNavigate });
61
+ }
62
+ return _jsx(ExistingFormEditor, { formId: formId, onNavigate: onNavigate });
63
+ }
64
+ // ─── Existing form ─────────────────────────────────────────────────────────
65
+ function ExistingFormEditor({ formId, onNavigate, }) {
66
+ const [form, setForm] = useState(null);
67
+ const [loading, setLoading] = useState(true);
68
+ const [error, setError] = useState(null);
69
+ const [tab, setTab] = useState('details');
70
+ const [details, setDetails] = useState(null);
71
+ const [detailsDirty, setDetailsDirty] = useState(false);
72
+ const [savingDetails, setSavingDetails] = useState(false);
27
73
  const [fields, setFields] = useState([]);
28
- const [saving, setSaving] = useState(false);
29
- const [expandedSection, setExpandedSection] = useState('fields');
30
- const [confirmation, setConfirmation] = useState({
31
- type: 'message',
32
- message: 'Thank you! Your submission has been received.',
33
- redirectUrl: '',
34
- redirectDelay: 0,
35
- });
36
- const [analytics, setAnalytics] = useState({
37
- enabled: false,
38
- measurementId: '',
39
- submitEventName: 'form_submit',
40
- startEventName: 'form_start',
41
- trackAsConversion: false,
42
- conversionValue: 0,
43
- conversionCurrency: 'USD',
44
- customParameters: {},
45
- });
46
- useEffect(() => {
47
- if (existingForm) {
48
- const d = existingForm.data ?? existingForm;
49
- setName(d.name ?? '');
50
- setDescription(d.description ?? '');
51
- setStatus(d.status ?? 'active');
52
- if (Array.isArray(d.fields))
53
- setFields(d.fields);
54
- if (d.confirmation) {
55
- setConfirmation((prev) => ({ ...prev, ...d.confirmation }));
56
- }
57
- if (d.analytics) {
58
- setAnalytics((prev) => ({ ...prev, ...d.analytics }));
59
- }
60
- }
61
- }, [existingForm]);
62
- const addField = useCallback((type) => {
63
- setFields((prev) => [
64
- ...prev,
65
- {
66
- id: crypto.randomUUID(),
67
- type,
68
- label: `New ${type} field`,
69
- required: false,
70
- },
71
- ]);
72
- }, []);
73
- const removeField = useCallback((id) => {
74
- setFields((prev) => prev.filter((f) => f.id !== id));
75
- }, []);
76
- const updateField = useCallback((id, updates) => {
77
- setFields((prev) => prev.map((f) => (f.id === id ? { ...f, ...updates } : f)));
78
- }, []);
79
- const moveField = useCallback((from, to) => {
80
- setFields((prev) => {
81
- const next = [...prev];
82
- const [moved] = next.splice(from, 1);
83
- next.splice(to, 0, moved);
84
- return next;
85
- });
86
- }, []);
87
- const handleSave = async () => {
88
- setSaving(true);
74
+ const [fieldsDirty, setFieldsDirty] = useState(false);
75
+ const [savingFields, setSavingFields] = useState(false);
76
+ const [analytics, setAnalytics] = useState(DEFAULT_ANALYTICS);
77
+ const [analyticsDirty, setAnalyticsDirty] = useState(false);
78
+ const [savingAnalytics, setSavingAnalytics] = useState(false);
79
+ useNavigationBlocker(detailsDirty || fieldsDirty || analyticsDirty);
80
+ const load = useCallback(async () => {
81
+ setLoading(true);
82
+ setError(null);
89
83
  try {
90
- const payload = {
91
- name,
92
- description,
93
- status,
94
- fields,
95
- confirmation,
96
- analytics: analytics.enabled ? analytics : { enabled: false },
97
- };
98
- if (isNew) {
99
- await cmsApi('/collections/forms', {
100
- method: 'POST',
101
- body: JSON.stringify(payload),
102
- });
84
+ const [loaded, schema] = await Promise.all([fetchFormById(formId), fetchFormSchema(formId)]);
85
+ if (!loaded) {
86
+ setError('Form not found');
87
+ return;
103
88
  }
104
- else {
105
- await cmsApi(`/collections/forms/${formId}`, {
106
- method: 'PUT',
107
- body: JSON.stringify(payload),
108
- });
109
- }
110
- onNavigate?.('/forms');
89
+ setForm(loaded);
90
+ setDetails(detailsFromForm(loaded));
91
+ setAnalytics(loaded.analytics ?? DEFAULT_ANALYTICS);
92
+ setFields(schema.fields);
93
+ setDetailsDirty(false);
94
+ setFieldsDirty(false);
95
+ setAnalyticsDirty(false);
96
+ }
97
+ catch (e) {
98
+ setError(e instanceof Error ? e.message : 'Failed to load form');
111
99
  }
112
100
  finally {
113
- setSaving(false);
101
+ setLoading(false);
114
102
  }
115
- };
116
- const toggleSection = (section) => {
117
- setExpandedSection(expandedSection === section ? null : section);
118
- };
103
+ }, [formId]);
104
+ useEffect(() => {
105
+ void load();
106
+ }, [load]);
107
+ function patchDetails(patch) {
108
+ setDetails((cur) => (cur ? { ...cur, ...patch } : cur));
109
+ setDetailsDirty(true);
110
+ }
111
+ function patchAnalytics(patch) {
112
+ setAnalytics((cur) => ({ ...cur, ...patch }));
113
+ setAnalyticsDirty(true);
114
+ }
115
+ async function saveDetails() {
116
+ if (!details)
117
+ return;
118
+ setSavingDetails(true);
119
+ const res = await updateForm(formId, {
120
+ name: details.name,
121
+ description: details.description,
122
+ status: details.status,
123
+ successMessage: details.successMessage,
124
+ // Message mode must clear the URL — a non-empty redirectUrl always wins
125
+ // in the submission pipeline.
126
+ redirectUrl: details.confirmationType === 'redirect' ? details.redirectUrl : '',
127
+ });
128
+ setSavingDetails(false);
129
+ if (res.error) {
130
+ toast.error(res.error);
131
+ return;
132
+ }
133
+ if (res.data) {
134
+ setForm(res.data);
135
+ setDetails(detailsFromForm(res.data));
136
+ }
137
+ setDetailsDirty(false);
138
+ toast.success('Form details saved.');
139
+ emitFormsChanged();
140
+ }
141
+ async function saveFields() {
142
+ setSavingFields(true);
143
+ const res = await saveFormSchema(formId, fields.map((f, i) => ({ ...f, sortOrder: i })));
144
+ setSavingFields(false);
145
+ if (res.error) {
146
+ toast.error(res.error);
147
+ return;
148
+ }
149
+ setFieldsDirty(false);
150
+ toast.success('Schema saved.');
151
+ emitFormsChanged();
152
+ }
153
+ async function saveAnalytics() {
154
+ setSavingAnalytics(true);
155
+ const res = await updateForm(formId, { analytics });
156
+ setSavingAnalytics(false);
157
+ if (res.error) {
158
+ toast.error(res.error);
159
+ return;
160
+ }
161
+ if (res.data)
162
+ setAnalytics(res.data.analytics ?? { enabled: false });
163
+ setAnalyticsDirty(false);
164
+ toast.success('Analytics settings saved.');
165
+ }
119
166
  if (loading) {
120
- return (_jsx("div", { className: "flex h-64 items-center justify-center p-4", children: _jsx(Loader2, { className: "text-primary h-6 w-6 animate-spin" }) }));
167
+ return (_jsx("div", { className: "max-w-4xl p-3 pr-6 sm:p-4 sm:pr-8", children: _jsx(FormsLoading, { label: "Loading form\u2026" }) }));
168
+ }
169
+ if (error || !form || !details) {
170
+ return (_jsx("div", { className: "max-w-4xl p-3 pr-6 sm:p-4 sm:pr-8", children: _jsx(FormsErrorState, { message: error ?? 'Form not found', onRetry: () => void load() }) }));
121
171
  }
122
- return (_jsxs("div", { className: "max-w-4xl p-3 pr-6 sm:p-4 sm:pr-8", children: [_jsxs("div", { className: "mb-6 flex items-center gap-3", children: [_jsx("button", { onClick: () => onNavigate?.('/forms'), className: "hover:bg-muted rounded-lg p-2 transition-colors", children: _jsx(ArrowLeft, { className: "text-muted-foreground h-5 w-5" }) }), _jsx("div", { className: "flex-1", children: _jsx("h1", { className: "text-foreground text-xl font-medium", children: isNew ? 'New Form' : 'Edit Form' }) }), _jsxs("button", { onClick: handleSave, disabled: saving || !name.trim(), className: "bg-primary text-primary-foreground hover:bg-primary/90 flex items-center gap-2 rounded-lg px-4 py-2 text-sm transition-colors disabled:opacity-50", children: [saving ? _jsx(Loader2, { className: "h-4 w-4 animate-spin" }) : _jsx(Save, { className: "h-4 w-4" }), saving ? 'Saving...' : 'Save'] })] }), _jsx("div", { className: "border-border bg-card mb-4 rounded-lg border p-4", children: _jsxs("div", { className: "grid gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Form Name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "e.g. Contact Form", className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Description" }), _jsx("input", { type: "text", value: description, onChange: (e) => setDescription(e.target.value), placeholder: "Brief description of this form", className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Status" }), _jsxs("select", { value: status, onChange: (e) => setStatus(e.target.value), className: "border-border focus-visible:ring-ring/50 rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none", children: [_jsx("option", { value: "active", children: "Active" }), _jsx("option", { value: "inactive", children: "Inactive" })] })] })] }) }), _jsxs("div", { className: "border-border bg-card mb-4 rounded-lg border", children: [_jsx("button", { onClick: () => toggleSection('fields'), className: "hover:bg-muted flex w-full items-center justify-between p-4 transition-colors", children: _jsxs("div", { className: "flex items-center gap-2", children: [expandedSection === 'fields' ? (_jsx(ChevronDown, { className: "h-4 w-4" })) : (_jsx(ChevronRight, { className: "h-4 w-4" })), _jsx("span", { className: "text-foreground font-medium", children: "Form Fields" }), _jsxs("span", { className: "text-muted-foreground text-sm", children: ["(", fields.length, ")"] })] }) }), expandedSection === 'fields' && (_jsxs("div", { className: "border-border border-t p-4", children: [_jsx("div", { className: "mb-4 flex flex-wrap gap-2", children: FIELD_TYPES.map((ft) => (_jsxs("button", { onClick: () => addField(ft.value), className: "border-border hover:bg-muted flex items-center gap-1 rounded-lg border px-3 py-1.5 text-xs transition-colors", children: [_jsx(Plus, { className: "h-3 w-3" }), " ", ft.label] }, ft.value))) }), fields.length === 0 ? (_jsx("p", { className: "text-muted-foreground py-6 text-center text-sm", children: "Click a field type above to add it to your form." })) : (_jsx("div", { className: "flex flex-col gap-2", children: fields.map((field, index) => (_jsxs("div", { draggable: true, onDragStart: (e) => e.dataTransfer.setData('text/plain', String(index)), onDragOver: (e) => e.preventDefault(), onDrop: (e) => {
123
- const from = Number(e.dataTransfer.getData('text/plain'));
124
- moveField(from, index);
125
- }, className: "border-border bg-muted hover:bg-card flex items-center gap-3 rounded-lg border p-3 transition-colors", children: [_jsx(GripVertical, { className: "text-muted-foreground h-4 w-4 shrink-0 cursor-grab" }), _jsx("input", { type: "text", value: field.label, onChange: (e) => updateField(field.id, { label: e.target.value }), className: "border-border focus-visible:ring-ring/50 flex-1 rounded border px-2 py-1 text-sm focus:ring-1 focus:outline-none" }), _jsx("span", { className: "bg-muted text-muted-foreground shrink-0 rounded px-2 py-0.5 text-xs", children: field.type }), _jsxs("label", { className: "text-muted-foreground flex shrink-0 items-center gap-1 text-xs", children: [_jsx("input", { type: "checkbox", checked: field.required, onChange: (e) => updateField(field.id, { required: e.target.checked }), className: "rounded" }), "Required"] }), _jsx("button", { onClick: () => removeField(field.id), className: "text-destructive hover:bg-destructive/10 shrink-0 rounded p-1 transition-colors", children: _jsx(Trash2, { className: "h-4 w-4" }) })] }, field.id))) }))] }))] }), _jsxs("div", { className: "border-border bg-card mb-4 rounded-lg border", children: [_jsx("button", { onClick: () => toggleSection('confirmation'), className: "hover:bg-muted flex w-full items-center justify-between p-4 transition-colors", children: _jsxs("div", { className: "flex items-center gap-2", children: [expandedSection === 'confirmation' ? (_jsx(ChevronDown, { className: "h-4 w-4" })) : (_jsx(ChevronRight, { className: "h-4 w-4" })), _jsx(MessageSquare, { className: "text-success h-4 w-4" }), _jsx("span", { className: "text-foreground font-medium", children: "Confirmation" }), _jsx("span", { className: "bg-muted text-muted-foreground rounded px-2 py-0.5 text-xs", children: confirmation.type === 'message' ? 'Show Message' : 'Redirect' })] }) }), expandedSection === 'confirmation' && (_jsxs("div", { className: "border-border border-t p-4", children: [_jsxs("div", { className: "mb-4", children: [_jsx("label", { className: "text-foreground mb-2 block text-sm font-medium", children: "After submission" }), _jsxs("div", { className: "flex gap-3", children: [_jsxs("label", { className: `flex cursor-pointer items-center gap-2 rounded-lg border px-4 py-2 transition-colors ${confirmation.type === 'message'
126
- ? 'border-primary bg-accent'
127
- : 'border-border hover:bg-muted bg-transparent'}`, children: [_jsx("input", { type: "radio", name: "confirmationType", value: "message", checked: confirmation.type === 'message', onChange: () => setConfirmation((c) => ({ ...c, type: 'message' })), className: "text-primary" }), _jsx(MessageSquare, { className: "h-4 w-4" }), _jsx("span", { className: "text-sm", children: "Show Message" })] }), _jsxs("label", { className: `flex cursor-pointer items-center gap-2 rounded-lg border px-4 py-2 transition-colors ${confirmation.type === 'redirect'
128
- ? 'border-primary bg-accent'
129
- : 'border-border hover:bg-muted bg-transparent'}`, children: [_jsx("input", { type: "radio", name: "confirmationType", value: "redirect", checked: confirmation.type === 'redirect', onChange: () => setConfirmation((c) => ({ ...c, type: 'redirect' })), className: "text-primary" }), _jsx(ExternalLink, { className: "h-4 w-4" }), _jsx("span", { className: "text-sm", children: "Redirect to Page" })] })] })] }), confirmation.type === 'message' ? (_jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Success Message" }), _jsx("textarea", { value: confirmation.message, onChange: (e) => setConfirmation((c) => ({ ...c, message: e.target.value })), rows: 3, className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none", placeholder: "Thank you! Your submission has been received." })] })) : (_jsxs("div", { className: "grid gap-3", children: [_jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Redirect URL" }), _jsx("input", { type: "url", value: confirmation.redirectUrl, onChange: (e) => setConfirmation((c) => ({ ...c, redirectUrl: e.target.value })), placeholder: "https://example.com/thank-you", className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Redirect Delay (ms)" }), _jsx("input", { type: "number", value: confirmation.redirectDelay, onChange: (e) => setConfirmation((c) => ({ ...c, redirectDelay: Number(e.target.value) })), min: 0, step: 500, className: "border-border focus-visible:ring-ring/50 w-32 rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" }), _jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: "0 = instant redirect" })] })] }))] }))] }), _jsxs("div", { className: "border-border bg-card mb-4 rounded-lg border", children: [_jsx("button", { onClick: () => toggleSection('analytics'), className: "hover:bg-muted flex w-full items-center justify-between p-4 transition-colors", children: _jsxs("div", { className: "flex items-center gap-2", children: [expandedSection === 'analytics' ? (_jsx(ChevronDown, { className: "h-4 w-4" })) : (_jsx(ChevronRight, { className: "h-4 w-4" })), _jsx(BarChart3, { className: "text-brand h-4 w-4" }), _jsx("span", { className: "text-foreground font-medium", children: "GA4 Analytics" }), _jsx("span", { className: `rounded px-2 py-0.5 text-xs ${analytics.enabled ? 'bg-success/10 text-success' : 'bg-muted text-muted-foreground'}`, children: analytics.enabled ? 'Enabled' : 'Disabled' })] }) }), expandedSection === 'analytics' && (_jsxs("div", { className: "border-border border-t p-4", children: [_jsxs("div", { className: "mb-4 flex items-center gap-3", children: [_jsx(Toggle, { checked: analytics.enabled, onCheckedChange: (v) => setAnalytics((a) => ({ ...a, enabled: v })), "aria-label": "Push events to Google Analytics 4" }), _jsx("span", { className: "text-foreground text-sm font-medium", children: "Push events to Google Analytics 4" })] }), analytics.enabled && (_jsxs("div", { className: "grid gap-4 pl-12", children: [_jsxs("div", { children: [_jsxs("label", { className: "text-foreground mb-1 block text-sm font-medium", children: ["GA4 Measurement ID", _jsx("span", { className: "text-muted-foreground font-normal", children: " (optional)" })] }), _jsx("input", { type: "text", value: analytics.measurementId, onChange: (e) => setAnalytics((a) => ({ ...a, measurementId: e.target.value })), placeholder: "G-XXXXXXXXXX", className: "border-border focus-visible:ring-ring/50 w-64 rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" }), _jsx("p", { className: "text-muted-foreground mt-1 text-xs", children: "Leave blank to use your site's default GA4 tag" })] }), _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Submit Event Name" }), _jsx("input", { type: "text", value: analytics.submitEventName, onChange: (e) => setAnalytics((a) => ({ ...a, submitEventName: e.target.value })), className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Start Event Name" }), _jsx("input", { type: "text", value: analytics.startEventName, onChange: (e) => setAnalytics((a) => ({ ...a, startEventName: e.target.value })), className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" })] })] }), _jsxs("div", { className: "border-border border-t pt-4", children: [_jsxs("div", { className: "mb-3 flex items-center gap-3", children: [_jsx("input", { type: "checkbox", id: "trackConversion", checked: analytics.trackAsConversion, onChange: (e) => setAnalytics((a) => ({ ...a, trackAsConversion: e.target.checked })), className: "rounded" }), _jsx("label", { htmlFor: "trackConversion", className: "text-foreground text-sm font-medium", children: "Track as conversion event" })] }), analytics.trackAsConversion && (_jsxs("div", { className: "ml-6 grid grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Conversion Value" }), _jsx("input", { type: "number", value: analytics.conversionValue, onChange: (e) => setAnalytics((a) => ({ ...a, conversionValue: Number(e.target.value) })), min: 0, step: 0.01, className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-foreground mb-1 block text-sm font-medium", children: "Currency" }), _jsxs("select", { value: analytics.conversionCurrency, onChange: (e) => setAnalytics((a) => ({ ...a, conversionCurrency: e.target.value })), className: "border-border focus-visible:ring-ring/50 w-full rounded-lg border px-3 py-2 text-sm focus:ring-2 focus:outline-none", children: [_jsx("option", { value: "USD", children: "USD" }), _jsx("option", { value: "EUR", children: "EUR" }), _jsx("option", { value: "GBP", children: "GBP" }), _jsx("option", { value: "CAD", children: "CAD" }), _jsx("option", { value: "AUD", children: "AUD" })] })] })] }))] }), _jsx("div", { className: "border-info/30 bg-info/10 rounded-lg border p-3", children: _jsxs("p", { className: "text-foreground text-xs", children: [_jsx("strong", { children: "Note:" }), " Your site must have the GA4 snippet or GTM container installed. Actuate pushes events via", ' ', _jsx("code", { className: "bg-info/10 rounded px-1", children: "gtag()" }), " /", _jsx("code", { className: "bg-info/10 rounded px-1", children: "dataLayer" }), " \u2014 it does not load the GA4 script."] }) })] }))] }))] })] }));
172
+ return (_jsxs("div", { className: "max-w-4xl p-3 pr-6 sm:p-4 sm:pr-8", children: [_jsxs("div", { className: "mb-6 flex items-center gap-3", children: [_jsx("button", { onClick: () => onNavigate?.('/forms'), "aria-label": "Back to forms", className: "hover:bg-muted focus-visible:ring-ring rounded-lg p-2 transition-colors focus-visible:ring-2 focus-visible:outline-none", children: _jsx(ArrowLeft, { className: "text-muted-foreground h-5 w-5", "aria-hidden": true }) }), _jsxs("div", { className: "min-w-0 flex-1", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h1", { className: "text-foreground truncate text-xl font-medium", children: form.name }), _jsx(FormStatusBadge, { status: form.status })] }), _jsxs("p", { className: "text-muted-foreground truncate font-mono text-xs", children: ["/", form.slug] })] }), _jsxs("button", { onClick: () => onNavigate?.(`/forms/${formId}/submissions`), className: btnSecondary, children: [_jsx(Inbox, { className: "h-4 w-4", "aria-hidden": true }), "View Entries"] })] }), _jsxs(Tabs.Root, { value: tab, onValueChange: setTab, children: [_jsx(Tabs.List, { className: "border-border mb-4 flex gap-0.5 overflow-x-auto border-b", "aria-label": "Form settings sections", children: TABS.map((t) => (_jsx(Tabs.Trigger, { value: t.id, className: "text-muted-foreground hover:text-foreground focus-visible:ring-ring data-[state=active]:border-primary data-[state=active]:text-foreground -mb-px border-b-2 border-transparent px-3 py-2 text-sm font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:outline-none", children: t.label }, t.id))) }), _jsx(Tabs.Content, { value: "details", tabIndex: -1, children: _jsx(DetailsTab, { details: details, onPatch: patchDetails, onSave: () => void saveDetails(), saving: savingDetails }) }), _jsx(Tabs.Content, { value: "fields", tabIndex: -1, children: _jsxs("div", { className: "border-border bg-card space-y-4 rounded-lg border p-4", children: [_jsx(FieldsPanel, { fields: fields, onChange: (next) => {
173
+ setFields(next);
174
+ setFieldsDirty(true);
175
+ }, hasSubmissions: (form.totalEntries ?? 0) > 0 }), _jsx("div", { className: "flex justify-end", children: _jsxs("button", { className: btnPrimary, onClick: () => void saveFields(), disabled: savingFields || !fieldsDirty, children: [savingFields ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin", "aria-hidden": true })) : (_jsx(Save, { className: "h-4 w-4", "aria-hidden": true })), savingFields ? 'Saving…' : 'Save Schema'] }) })] }) }), _jsx(Tabs.Content, { value: "notifications", tabIndex: -1, children: _jsx("div", { className: "border-border bg-card rounded-lg border p-4", children: _jsx(NotificationsPanel, { formId: formId }) }) }), _jsx(Tabs.Content, { value: "analytics", tabIndex: -1, children: _jsx(AnalyticsTab, { analytics: analytics, onPatch: patchAnalytics, onSave: () => void saveAnalytics(), saving: savingAnalytics }) }), _jsx(Tabs.Content, { value: "embed", tabIndex: -1, children: _jsx("div", { className: "border-border bg-card rounded-lg border p-4", children: _jsx(EmbedPanel, { formId: formId, slug: form.slug, status: form.status }) }) }), _jsx(Tabs.Content, { value: "integrations", tabIndex: -1, children: _jsx("div", { className: "border-border bg-card rounded-lg border p-4", children: _jsx(WebhooksPanel, { formId: formId, formSlug: form.slug }) }) })] })] }));
176
+ }
177
+ // ─── Details tab ────────────────────────────────────────────────────────────
178
+ function DetailsTab({ details, onPatch, onSave, saving, }) {
179
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx("div", { className: "border-border bg-card rounded-lg border p-4", children: _jsxs("div", { className: "grid gap-4", children: [_jsx(Field, { label: "Form Name", children: _jsx("input", { type: "text", value: details.name, onChange: (e) => onPatch({ name: e.target.value }), placeholder: "e.g. Contact Form", className: inputCls }) }), _jsx(Field, { label: "Description", children: _jsx("input", { type: "text", value: details.description, onChange: (e) => onPatch({ description: e.target.value }), placeholder: "Brief description of this form", className: inputCls }) }), _jsx(Field, { label: "Status", hint: "Only active forms accept submissions; archived forms are hidden from embed pickers.", children: _jsxs("select", { value: details.status, onChange: (e) => onPatch({ status: e.target.value }), className: "border-border bg-input-background text-foreground focus-visible:ring-ring rounded-lg border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none", children: [_jsx("option", { value: "active", children: "Active" }), _jsx("option", { value: "draft", children: "Draft" }), _jsx("option", { value: "archived", children: "Archived" })] }) })] }) }), _jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("h2", { className: "text-foreground mb-3 text-base font-medium", children: "Confirmation" }), _jsxs("fieldset", { className: "mb-4", children: [_jsx("legend", { className: "text-foreground mb-2 block text-sm font-medium", children: "After submission" }), _jsxs("div", { className: "flex flex-wrap gap-3", children: [_jsxs("label", { className: `flex cursor-pointer items-center gap-2 rounded-lg border px-4 py-2 transition-colors ${details.confirmationType === 'message'
180
+ ? 'border-primary bg-accent'
181
+ : 'border-border hover:bg-muted bg-transparent'}`, children: [_jsx("input", { type: "radio", name: "confirmationType", value: "message", checked: details.confirmationType === 'message', onChange: () => onPatch({ confirmationType: 'message' }), className: "text-primary" }), _jsx(MessageSquare, { className: "h-4 w-4", "aria-hidden": true }), _jsx("span", { className: "text-sm", children: "Show Message" })] }), _jsxs("label", { className: `flex cursor-pointer items-center gap-2 rounded-lg border px-4 py-2 transition-colors ${details.confirmationType === 'redirect'
182
+ ? 'border-primary bg-accent'
183
+ : 'border-border hover:bg-muted bg-transparent'}`, children: [_jsx("input", { type: "radio", name: "confirmationType", value: "redirect", checked: details.confirmationType === 'redirect', onChange: () => onPatch({ confirmationType: 'redirect' }), className: "text-primary" }), _jsx(ExternalLink, { className: "h-4 w-4", "aria-hidden": true }), _jsx("span", { className: "text-sm", children: "Redirect to Page" })] })] })] }), details.confirmationType === 'message' ? (_jsx(Field, { label: "Success Message", children: _jsx("textarea", { value: details.successMessage, onChange: (e) => onPatch({ successMessage: e.target.value }), rows: 3, placeholder: "Thank you! Your submission has been received.", className: inputCls }) })) : (_jsx(Field, { label: "Redirect URL", children: _jsx("input", { type: "url", value: details.redirectUrl, onChange: (e) => onPatch({ redirectUrl: e.target.value }), placeholder: "https://example.com/thank-you", className: inputCls }) }))] }), _jsx("div", { className: "flex justify-end", children: _jsxs("button", { className: btnPrimary, onClick: onSave, disabled: saving || !details.name.trim(), children: [saving ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin", "aria-hidden": true })) : (_jsx(Save, { className: "h-4 w-4", "aria-hidden": true })), saving ? 'Saving…' : 'Save Details'] }) })] }));
184
+ }
185
+ // ─── Analytics tab ──────────────────────────────────────────────────────────
186
+ function AnalyticsTab({ analytics, onPatch, onSave, saving, }) {
187
+ return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsxs("div", { className: "flex items-center justify-between gap-3", children: [_jsxs("span", { className: "min-w-0", children: [_jsx("span", { className: "text-foreground block text-sm font-medium", children: "Push events to Google Analytics 4" }), _jsx("span", { className: "text-muted-foreground block text-sm", children: "Fires form start, submit, and error events on the public site." })] }), _jsx(Toggle, { checked: analytics.enabled, onCheckedChange: (v) => onPatch({ enabled: v }), "aria-label": "Push events to Google Analytics 4" })] }), analytics.enabled && (_jsxs("div", { className: "mt-4 grid gap-4", children: [_jsx(Field, { label: "GA4 Measurement ID", hint: "Leave blank to use your site's default GA4 tag", children: _jsx("input", { type: "text", value: analytics.measurementId ?? '', onChange: (e) => onPatch({ measurementId: e.target.value }), placeholder: "G-XXXXXXXXXX", className: `${inputCls} max-w-64` }) }), _jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsx(Field, { label: "Submit Event Name", children: _jsx("input", { type: "text", value: analytics.submitEventName ?? '', onChange: (e) => onPatch({ submitEventName: e.target.value }), placeholder: "form_submit", className: inputCls }) }), _jsx(Field, { label: "Start Event Name", children: _jsx("input", { type: "text", value: analytics.startEventName ?? '', onChange: (e) => onPatch({ startEventName: e.target.value }), placeholder: "form_start", className: inputCls }) })] }), _jsxs("div", { className: "border-border border-t pt-4", children: [_jsxs("div", { className: "mb-3 flex items-center gap-3", children: [_jsx("input", { type: "checkbox", id: "trackConversion", checked: analytics.trackAsConversion ?? false, onChange: (e) => onPatch({ trackAsConversion: e.target.checked }), className: "rounded" }), _jsx("label", { htmlFor: "trackConversion", className: "text-foreground text-sm font-medium", children: "Track as conversion event" })] }), analytics.trackAsConversion && (_jsxs("div", { className: "grid gap-4 sm:grid-cols-2", children: [_jsx(Field, { label: "Conversion Value", children: _jsx("input", { type: "number", value: analytics.conversionValue ?? 0, onChange: (e) => onPatch({ conversionValue: Number(e.target.value) }), min: 0, step: 0.01, className: inputCls }) }), _jsx(Field, { label: "Currency", children: _jsxs("select", { value: analytics.conversionCurrency ?? 'USD', onChange: (e) => onPatch({ conversionCurrency: e.target.value }), className: inputCls, children: [_jsx("option", { value: "USD", children: "USD" }), _jsx("option", { value: "EUR", children: "EUR" }), _jsx("option", { value: "GBP", children: "GBP" }), _jsx("option", { value: "CAD", children: "CAD" }), _jsx("option", { value: "AUD", children: "AUD" })] }) })] }))] }), _jsx("div", { className: "border-info/30 bg-info/10 rounded-lg border p-3", children: _jsxs("p", { className: "text-foreground text-xs", children: [_jsx("strong", { children: "Note:" }), " Your site must have the GA4 snippet or GTM container installed. Actuate pushes events via", ' ', _jsx("code", { className: "bg-info/10 rounded px-1", children: "gtag()" }), " /", _jsx("code", { className: "bg-info/10 rounded px-1", children: "dataLayer" }), " \u2014 it does not load the GA4 script."] }) })] }))] }), _jsx("div", { className: "flex justify-end", children: _jsxs("button", { className: btnPrimary, onClick: onSave, disabled: saving, children: [saving ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin", "aria-hidden": true })) : (_jsx(Save, { className: "h-4 w-4", "aria-hidden": true })), saving ? 'Saving…' : 'Save Analytics'] }) })] }));
188
+ }
189
+ // ─── New form ───────────────────────────────────────────────────────────────
190
+ function NewFormEditor({ onNavigate }) {
191
+ const [name, setName] = useState('');
192
+ const [description, setDescription] = useState('');
193
+ const [status, setStatus] = useState('active');
194
+ const [fields, setFields] = useState([]);
195
+ const [saving, setSaving] = useState(false);
196
+ const [dirty, setDirty] = useState(false);
197
+ useNavigationBlocker(dirty && !saving);
198
+ async function handleCreate() {
199
+ setSaving(true);
200
+ const res = await createForm({ name, description, status, fields });
201
+ setSaving(false);
202
+ if (res.error || !res.data) {
203
+ toast.error(res.error ?? 'Failed to create form');
204
+ return;
205
+ }
206
+ setDirty(false);
207
+ toast.success('Form created. Configure notifications, embed, and integrations here.');
208
+ emitFormsChanged();
209
+ onNavigate?.(`/forms/${res.data.id}/edit`);
210
+ }
211
+ return (_jsxs("div", { className: "max-w-4xl p-3 pr-6 sm:p-4 sm:pr-8", children: [_jsxs("div", { className: "mb-6 flex items-center gap-3", children: [_jsx("button", { onClick: () => onNavigate?.('/forms'), "aria-label": "Back to forms", className: "hover:bg-muted focus-visible:ring-ring rounded-lg p-2 transition-colors focus-visible:ring-2 focus-visible:outline-none", children: _jsx(ArrowLeft, { className: "text-muted-foreground h-5 w-5", "aria-hidden": true }) }), _jsx("h1", { className: "text-foreground flex-1 text-xl font-medium", children: "New Form" }), _jsxs("button", { onClick: () => void handleCreate(), disabled: saving || !name.trim(), className: btnPrimary, children: [saving ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin", "aria-hidden": true })) : (_jsx(Save, { className: "h-4 w-4", "aria-hidden": true })), saving ? 'Creating…' : 'Create Form'] })] }), _jsx("div", { className: "border-border bg-card mb-4 rounded-lg border p-4", children: _jsxs("div", { className: "grid gap-4", children: [_jsx(Field, { label: "Form Name", children: _jsx("input", { type: "text", value: name, onChange: (e) => {
212
+ setName(e.target.value);
213
+ setDirty(true);
214
+ }, placeholder: "e.g. Contact Form", className: inputCls }) }), _jsx(Field, { label: "Description", children: _jsx("input", { type: "text", value: description, onChange: (e) => {
215
+ setDescription(e.target.value);
216
+ setDirty(true);
217
+ }, placeholder: "Brief description of this form", className: inputCls }) }), _jsx(Field, { label: "Status", children: _jsxs("select", { value: status, onChange: (e) => setStatus(e.target.value), className: "border-border bg-input-background text-foreground focus-visible:ring-ring rounded-lg border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none", children: [_jsx("option", { value: "active", children: "Active" }), _jsx("option", { value: "draft", children: "Draft" })] }) })] }) }), _jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("h2", { className: "text-foreground mb-3 text-base font-medium", children: "Fields" }), _jsx(FieldsPanel, { fields: fields, onChange: (next) => {
218
+ setFields(next);
219
+ setDirty(true);
220
+ }, hasSubmissions: false })] }), _jsx("p", { className: "text-muted-foreground mt-4 text-sm", children: "Confirmation, notifications, analytics, embed, and integrations are configured after the form is created." })] }));
221
+ }
222
+ // ─── Shared bits ────────────────────────────────────────────────────────────
223
+ function Field({ label, hint, children, }) {
224
+ return (_jsxs("label", { className: "block", children: [_jsx("span", { className: "text-foreground mb-1 block text-sm font-medium", children: label }), children, hint && _jsx("span", { className: "text-muted-foreground mt-1 block text-xs", children: hint })] }));
130
225
  }
131
226
  //# sourceMappingURL=FormEditor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FormEditor.js","sourceRoot":"","sources":["../../src/views/FormEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FormEditor.js","sourceRoot":"","sources":["../../src/views/FormEditor.tsx"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@actuate-media/cms-admin",
3
- "version": "0.76.7",
3
+ "version": "0.77.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -98,15 +98,15 @@
98
98
  "tailwindcss": "^4.0.0",
99
99
  "typescript": "^5.7.0",
100
100
  "vitest": "^4.1.0",
101
+ "@actuate-media/cms-core": "0.98.0",
101
102
  "@actuate-media/component-blocks": "0.2.2",
102
- "@actuate-media/plugin-ai": "0.5.5",
103
- "@actuate-media/plugin-blocks": "0.0.16",
104
- "@actuate-media/plugin-commerce": "0.1.2",
105
- "@actuate-media/cms-core": "0.94.0",
106
- "@actuate-media/plugin-forms": "0.0.16",
107
- "@actuate-media/plugin-media": "0.0.15",
108
- "@actuate-media/plugin-navigation": "0.0.15",
109
- "@actuate-media/plugin-seo": "0.0.18"
103
+ "@actuate-media/plugin-ai": "0.5.6",
104
+ "@actuate-media/plugin-blocks": "0.1.0",
105
+ "@actuate-media/plugin-commerce": "0.1.3",
106
+ "@actuate-media/plugin-forms": "0.0.17",
107
+ "@actuate-media/plugin-media": "0.1.0",
108
+ "@actuate-media/plugin-navigation": "0.1.0",
109
+ "@actuate-media/plugin-seo": "0.0.19"
110
110
  },
111
111
  "scripts": {
112
112
  "build": "tsc --project tsconfig.json && npx @tailwindcss/cli -i src/styles/build-input.css -o dist/actuate-admin.css --minify",