@actuate-media/cms-admin 0.4.0 → 0.7.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.
- package/dist/AdminRoot.d.ts.map +1 -1
- package/dist/AdminRoot.js +35 -0
- package/dist/AdminRoot.js.map +1 -1
- package/dist/actuate-admin.css +1 -1
- package/dist/components/Breadcrumbs.d.ts.map +1 -1
- package/dist/components/Breadcrumbs.js +1 -0
- package/dist/components/Breadcrumbs.js.map +1 -1
- package/dist/components/ErrorBoundary.js +1 -1
- package/dist/components/ErrorBoundary.js.map +1 -1
- package/dist/hooks/useBuilderState.d.ts +49 -0
- package/dist/hooks/useBuilderState.d.ts.map +1 -0
- package/dist/hooks/useBuilderState.js +238 -0
- package/dist/hooks/useBuilderState.js.map +1 -0
- package/dist/index.d.ts +7 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/layout/Sidebar.d.ts.map +1 -1
- package/dist/layout/Sidebar.js +2 -2
- package/dist/layout/Sidebar.js.map +1 -1
- package/dist/views/ForgotPassword.d.ts +5 -0
- package/dist/views/ForgotPassword.d.ts.map +1 -0
- package/dist/views/ForgotPassword.js +41 -0
- package/dist/views/ForgotPassword.js.map +1 -0
- package/dist/views/ResetPassword.d.ts +6 -0
- package/dist/views/ResetPassword.d.ts.map +1 -0
- package/dist/views/ResetPassword.js +46 -0
- package/dist/views/ResetPassword.js.map +1 -0
- package/dist/views/ScriptTagEditor.d.ts +6 -0
- package/dist/views/ScriptTagEditor.d.ts.map +1 -0
- package/dist/views/ScriptTagEditor.js +109 -0
- package/dist/views/ScriptTagEditor.js.map +1 -0
- package/dist/views/ScriptTags.d.ts +5 -0
- package/dist/views/ScriptTags.d.ts.map +1 -0
- package/dist/views/ScriptTags.js +54 -0
- package/dist/views/ScriptTags.js.map +1 -0
- package/dist/views/page-builder/AIBlockAssist.d.ts +9 -0
- package/dist/views/page-builder/AIBlockAssist.d.ts.map +1 -0
- package/dist/views/page-builder/AIBlockAssist.js +40 -0
- package/dist/views/page-builder/AIBlockAssist.js.map +1 -0
- package/dist/views/page-builder/AIGenerateDialog.d.ts +8 -0
- package/dist/views/page-builder/AIGenerateDialog.d.ts.map +1 -0
- package/dist/views/page-builder/AIGenerateDialog.js +170 -0
- package/dist/views/page-builder/AIGenerateDialog.js.map +1 -0
- package/dist/views/page-builder/BlockEditor.d.ts +11 -0
- package/dist/views/page-builder/BlockEditor.d.ts.map +1 -0
- package/dist/views/page-builder/BlockEditor.js +67 -0
- package/dist/views/page-builder/BlockEditor.js.map +1 -0
- package/dist/views/page-builder/BlockPicker.d.ts +7 -0
- package/dist/views/page-builder/BlockPicker.d.ts.map +1 -0
- package/dist/views/page-builder/BlockPicker.js +102 -0
- package/dist/views/page-builder/BlockPicker.js.map +1 -0
- package/dist/views/page-builder/BottomBar.d.ts +9 -0
- package/dist/views/page-builder/BottomBar.d.ts.map +1 -0
- package/dist/views/page-builder/BottomBar.js +13 -0
- package/dist/views/page-builder/BottomBar.js.map +1 -0
- package/dist/views/page-builder/BuilderToolbar.d.ts +21 -0
- package/dist/views/page-builder/BuilderToolbar.d.ts.map +1 -0
- package/dist/views/page-builder/BuilderToolbar.js +18 -0
- package/dist/views/page-builder/BuilderToolbar.js.map +1 -0
- package/dist/views/page-builder/ContextPanel.d.ts +20 -0
- package/dist/views/page-builder/ContextPanel.d.ts.map +1 -0
- package/dist/views/page-builder/ContextPanel.js +40 -0
- package/dist/views/page-builder/ContextPanel.js.map +1 -0
- package/dist/views/page-builder/DesignScore.d.ts +6 -0
- package/dist/views/page-builder/DesignScore.d.ts.map +1 -0
- package/dist/views/page-builder/DesignScore.js +93 -0
- package/dist/views/page-builder/DesignScore.js.map +1 -0
- package/dist/views/page-builder/NodeSettings.d.ts +12 -0
- package/dist/views/page-builder/NodeSettings.d.ts.map +1 -0
- package/dist/views/page-builder/NodeSettings.js +80 -0
- package/dist/views/page-builder/NodeSettings.js.map +1 -0
- package/dist/views/page-builder/PageBuilder.d.ts +8 -0
- package/dist/views/page-builder/PageBuilder.d.ts.map +1 -0
- package/dist/views/page-builder/PageBuilder.js +126 -0
- package/dist/views/page-builder/PageBuilder.js.map +1 -0
- package/dist/views/page-builder/PageSettings.d.ts +7 -0
- package/dist/views/page-builder/PageSettings.d.ts.map +1 -0
- package/dist/views/page-builder/PageSettings.js +27 -0
- package/dist/views/page-builder/PageSettings.js.map +1 -0
- package/dist/views/page-builder/SEOPanel.d.ts +10 -0
- package/dist/views/page-builder/SEOPanel.d.ts.map +1 -0
- package/dist/views/page-builder/SEOPanel.js +105 -0
- package/dist/views/page-builder/SEOPanel.js.map +1 -0
- package/dist/views/page-builder/SavedSections.d.ts +6 -0
- package/dist/views/page-builder/SavedSections.d.ts.map +1 -0
- package/dist/views/page-builder/SavedSections.js +145 -0
- package/dist/views/page-builder/SavedSections.js.map +1 -0
- package/dist/views/page-builder/TemplatePicker.d.ts +7 -0
- package/dist/views/page-builder/TemplatePicker.d.ts.map +1 -0
- package/dist/views/page-builder/TemplatePicker.js +68 -0
- package/dist/views/page-builder/TemplatePicker.js.map +1 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.js +19 -0
- package/dist/views/page-builder/block-renderers/CTAPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.js +22 -0
- package/dist/views/page-builder/block-renderers/CardsPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/CodePreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/CodePreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/CodePreview.js +16 -0
- package/dist/views/page-builder/block-renderers/CodePreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.js +24 -0
- package/dist/views/page-builder/block-renderers/FAQPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts +6 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.js +7 -0
- package/dist/views/page-builder/block-renderers/FallbackPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/FormPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/FormPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/FormPreview.js +14 -0
- package/dist/views/page-builder/block-renderers/FormPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.js +21 -0
- package/dist/views/page-builder/block-renderers/GalleryPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.js +19 -0
- package/dist/views/page-builder/block-renderers/HeroPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.js +17 -0
- package/dist/views/page-builder/block-renderers/ImagePreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/TextPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/TextPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/TextPreview.js +26 -0
- package/dist/views/page-builder/block-renderers/TextPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.d.ts +3 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.js +21 -0
- package/dist/views/page-builder/block-renderers/VideoPreview.js.map +1 -0
- package/dist/views/page-builder/block-renderers/index.d.ts +9 -0
- package/dist/views/page-builder/block-renderers/index.d.ts.map +1 -0
- package/dist/views/page-builder/block-renderers/index.js +25 -0
- package/dist/views/page-builder/block-renderers/index.js.map +1 -0
- package/dist/views/page-builder/canvas/BlockRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/BlockRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/BlockRenderer.js +30 -0
- package/dist/views/page-builder/canvas/BlockRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.d.ts +10 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.js +26 -0
- package/dist/views/page-builder/canvas/BuilderCanvas.js.map +1 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.js +36 -0
- package/dist/views/page-builder/canvas/ColumnRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.js +33 -0
- package/dist/views/page-builder/canvas/ContainerRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/RowRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/RowRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/RowRenderer.js +32 -0
- package/dist/views/page-builder/canvas/RowRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/SectionRenderer.d.ts +8 -0
- package/dist/views/page-builder/canvas/SectionRenderer.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/SectionRenderer.js +54 -0
- package/dist/views/page-builder/canvas/SectionRenderer.js.map +1 -0
- package/dist/views/page-builder/canvas/index.d.ts +3 -0
- package/dist/views/page-builder/canvas/index.d.ts.map +1 -0
- package/dist/views/page-builder/canvas/index.js +2 -0
- package/dist/views/page-builder/canvas/index.js.map +1 -0
- package/package.json +7 -4
- package/src/AdminRoot.tsx +41 -0
- package/src/components/Breadcrumbs.tsx +1 -0
- package/src/components/ErrorBoundary.tsx +3 -3
- package/src/hooks/useBuilderState.ts +328 -0
- package/src/index.ts +8 -0
- package/src/layout/Sidebar.tsx +7 -0
- package/src/views/ForgotPassword.tsx +136 -0
- package/src/views/ResetPassword.tsx +192 -0
- package/src/views/ScriptTagEditor.tsx +361 -0
- package/src/views/ScriptTags.tsx +174 -0
- package/src/views/page-builder/AIBlockAssist.tsx +68 -0
- package/src/views/page-builder/AIGenerateDialog.tsx +574 -0
- package/src/views/page-builder/BlockEditor.tsx +352 -0
- package/src/views/page-builder/BlockPicker.tsx +338 -0
- package/src/views/page-builder/BottomBar.tsx +64 -0
- package/src/views/page-builder/BuilderToolbar.tsx +218 -0
- package/src/views/page-builder/ContextPanel.tsx +145 -0
- package/src/views/page-builder/DesignScore.tsx +258 -0
- package/src/views/page-builder/NodeSettings.tsx +515 -0
- package/src/views/page-builder/PageBuilder.tsx +288 -0
- package/src/views/page-builder/PageSettings.tsx +161 -0
- package/src/views/page-builder/SEOPanel.tsx +485 -0
- package/src/views/page-builder/SavedSections.tsx +486 -0
- package/src/views/page-builder/TemplatePicker.tsx +201 -0
- package/src/views/page-builder/block-renderers/CTAPreview.tsx +81 -0
- package/src/views/page-builder/block-renderers/CardsPreview.tsx +71 -0
- package/src/views/page-builder/block-renderers/CodePreview.tsx +46 -0
- package/src/views/page-builder/block-renderers/FAQPreview.tsx +90 -0
- package/src/views/page-builder/block-renderers/FallbackPreview.tsx +18 -0
- package/src/views/page-builder/block-renderers/FormPreview.tsx +69 -0
- package/src/views/page-builder/block-renderers/GalleryPreview.tsx +93 -0
- package/src/views/page-builder/block-renderers/HeroPreview.tsx +103 -0
- package/src/views/page-builder/block-renderers/ImagePreview.tsx +54 -0
- package/src/views/page-builder/block-renderers/TextPreview.tsx +81 -0
- package/src/views/page-builder/block-renderers/VideoPreview.tsx +78 -0
- package/src/views/page-builder/block-renderers/index.ts +34 -0
- package/src/views/page-builder/canvas/BlockRenderer.tsx +62 -0
- package/src/views/page-builder/canvas/BuilderCanvas.tsx +90 -0
- package/src/views/page-builder/canvas/ColumnRenderer.tsx +86 -0
- package/src/views/page-builder/canvas/ContainerRenderer.tsx +71 -0
- package/src/views/page-builder/canvas/RowRenderer.tsx +72 -0
- package/src/views/page-builder/canvas/SectionRenderer.tsx +97 -0
- package/src/views/page-builder/canvas/index.ts +2 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useEffect } from 'react';
|
|
4
|
+
import { ArrowLeft, Loader2, AlertTriangle, Trash2, X, Plus } from 'lucide-react';
|
|
5
|
+
import { toast } from 'sonner';
|
|
6
|
+
import { useApiData } from '../lib/useApiData.js';
|
|
7
|
+
import { cmsApi } from '../lib/api.js';
|
|
8
|
+
export function ScriptTagEditor({ tagId, onNavigate }) {
|
|
9
|
+
const isNew = !tagId;
|
|
10
|
+
const { data, loading, error } = useApiData(tagId ? `/script-tags` : null);
|
|
11
|
+
const [name, setName] = useState('');
|
|
12
|
+
const [code, setCode] = useState('');
|
|
13
|
+
const [placement, setPlacement] = useState('head');
|
|
14
|
+
const [scope, setScope] = useState('site');
|
|
15
|
+
const [targetPaths, setTargetPaths] = useState([]);
|
|
16
|
+
const [pathInput, setPathInput] = useState('');
|
|
17
|
+
const [priority, setPriority] = useState(100);
|
|
18
|
+
const [enabled, setEnabled] = useState(true);
|
|
19
|
+
const [saving, setSaving] = useState(false);
|
|
20
|
+
const [deleting, setDeleting] = useState(false);
|
|
21
|
+
const [showDeleteConfirm, setShowDeleteConfirm] = useState(false);
|
|
22
|
+
useEffect(() => {
|
|
23
|
+
if (data && tagId) {
|
|
24
|
+
const tags = Array.isArray(data) ? data : [];
|
|
25
|
+
const tag = tags.find((t) => t.id === tagId);
|
|
26
|
+
if (tag) {
|
|
27
|
+
setName(tag.name ?? '');
|
|
28
|
+
setCode(tag.code ?? '');
|
|
29
|
+
setPlacement(tag.placement ?? 'head');
|
|
30
|
+
setScope(tag.scope ?? 'site');
|
|
31
|
+
setTargetPaths(tag.targetPaths ?? []);
|
|
32
|
+
setPriority(tag.priority ?? 100);
|
|
33
|
+
setEnabled(tag.enabled ?? true);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}, [data, tagId]);
|
|
37
|
+
const addPath = () => {
|
|
38
|
+
const trimmed = pathInput.trim();
|
|
39
|
+
if (!trimmed)
|
|
40
|
+
return;
|
|
41
|
+
const normalized = trimmed.startsWith('/') ? trimmed : `/${trimmed}`;
|
|
42
|
+
if (!targetPaths.includes(normalized)) {
|
|
43
|
+
setTargetPaths([...targetPaths, normalized]);
|
|
44
|
+
}
|
|
45
|
+
setPathInput('');
|
|
46
|
+
};
|
|
47
|
+
const removePath = (path) => {
|
|
48
|
+
setTargetPaths(targetPaths.filter((p) => p !== path));
|
|
49
|
+
};
|
|
50
|
+
const handleSave = async () => {
|
|
51
|
+
if (!name.trim()) {
|
|
52
|
+
toast.error('Name is required');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
if (!code.trim()) {
|
|
56
|
+
toast.error('Code snippet is required');
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
if (scope !== 'site' && targetPaths.length === 0) {
|
|
60
|
+
toast.error('At least one target path is required for this scope');
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
setSaving(true);
|
|
64
|
+
const payload = {
|
|
65
|
+
name: name.trim(),
|
|
66
|
+
code,
|
|
67
|
+
placement,
|
|
68
|
+
scope,
|
|
69
|
+
targetPaths: scope === 'site' ? [] : targetPaths,
|
|
70
|
+
priority,
|
|
71
|
+
enabled,
|
|
72
|
+
};
|
|
73
|
+
const res = isNew
|
|
74
|
+
? await cmsApi('/script-tags', { method: 'POST', body: JSON.stringify(payload) })
|
|
75
|
+
: await cmsApi(`/script-tags/${tagId}`, { method: 'PUT', body: JSON.stringify(payload) });
|
|
76
|
+
setSaving(false);
|
|
77
|
+
if (res.error) {
|
|
78
|
+
toast.error(res.error);
|
|
79
|
+
}
|
|
80
|
+
else {
|
|
81
|
+
toast.success(isNew ? 'Tag created' : 'Tag updated');
|
|
82
|
+
onNavigate?.('/script-tags');
|
|
83
|
+
}
|
|
84
|
+
};
|
|
85
|
+
const handleDelete = async () => {
|
|
86
|
+
if (!tagId)
|
|
87
|
+
return;
|
|
88
|
+
setDeleting(true);
|
|
89
|
+
const res = await cmsApi(`/script-tags/${tagId}`, { method: 'DELETE' });
|
|
90
|
+
setDeleting(false);
|
|
91
|
+
if (res.error) {
|
|
92
|
+
toast.error(res.error);
|
|
93
|
+
}
|
|
94
|
+
else {
|
|
95
|
+
toast.success('Tag deleted');
|
|
96
|
+
onNavigate?.('/script-tags');
|
|
97
|
+
}
|
|
98
|
+
};
|
|
99
|
+
if (loading && !isNew) {
|
|
100
|
+
return (_jsx("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8 flex items-center justify-center h-64", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-blue-600" }) }));
|
|
101
|
+
}
|
|
102
|
+
return (_jsxs("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8 max-w-3xl", children: [error && (_jsxs("div", { className: "mb-4 flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-red-600 shrink-0" }), _jsx("span", { className: "text-sm text-red-800 flex-1", children: error })] })), _jsxs("div", { className: "mb-6", children: [_jsxs("button", { type: "button", onClick: () => onNavigate?.('/script-tags'), className: "flex items-center gap-1.5 text-sm text-gray-500 hover:text-gray-700 transition-colors mb-3", children: [_jsx(ArrowLeft, { className: "w-4 h-4" }), "Back to Script Tags"] }), _jsx("h1", { className: "text-2xl font-semibold text-gray-900", children: isNew ? 'New Script Tag' : 'Edit Script Tag' })] }), _jsx("div", { className: "rounded-lg border border-amber-200 bg-amber-50 p-3 mb-6", children: _jsxs("div", { className: "flex items-start gap-2", children: [_jsx(AlertTriangle, { className: "w-4 h-4 text-amber-600 mt-0.5 shrink-0" }), _jsx("p", { className: "text-sm text-amber-800", children: "This code will run on public pages matching the scope below. Only add trusted code from verified sources (e.g. Google Analytics, Meta Pixel)." })] }) }), _jsxs("div", { className: "space-y-6", children: [_jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4 space-y-4", children: [_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: "Name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "e.g. Google Tag Manager, Facebook Pixel", className: "w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500" })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: "Code" }), _jsx("textarea", { value: code, onChange: (e) => setCode(e.target.value), placeholder: "Paste your HTML/JavaScript snippet here...", rows: 10, className: "w-full rounded-lg border border-gray-300 px-3 py-2 text-sm font-mono focus:outline-none focus:ring-2 focus:ring-blue-500", spellCheck: false }), _jsxs("p", { className: "mt-1 text-xs text-gray-500", children: ["Paste the full code snippet including ", '<script>', " tags."] })] })] }), _jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-4 space-y-4", children: [_jsx("h3", { className: "text-sm font-semibold text-gray-900", children: "Placement & Scope" }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: "Placement" }), _jsxs("select", { value: placement, onChange: (e) => setPlacement(e.target.value), className: "w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500", children: [_jsxs("option", { value: "head", children: ["Head \u2014 inside ", '<head>'] }), _jsxs("option", { value: "body_open", children: ["Body Open \u2014 right after ", '<body>'] }), _jsxs("option", { value: "body_close", children: ["Body Close \u2014 before ", '</body>'] })] }), _jsxs("p", { className: "mt-1 text-xs text-gray-500", children: [placement === 'head' && 'Best for analytics scripts, meta tags, and custom CSS.', placement === 'body_open' && 'Best for GTM noscript tags and early-loading scripts.', placement === 'body_close' && 'Best for chat widgets, deferred scripts, and tracking pixels.'] })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: "Scope" }), _jsxs("select", { value: scope, onChange: (e) => setScope(e.target.value), className: "w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500", children: [_jsx("option", { value: "site", children: "Entire Website" }), _jsx("option", { value: "parents", children: "Specific Parent Pages (includes child pages)" }), _jsx("option", { value: "urls", children: "Specific URLs (exact match)" })] })] }), scope !== 'site' && (_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: scope === 'parents' ? 'Parent Paths' : 'URL Paths' }), _jsxs("div", { className: "flex gap-2", children: [_jsx("input", { type: "text", value: pathInput, onChange: (e) => setPathInput(e.target.value), onKeyDown: (e) => {
|
|
103
|
+
if (e.key === 'Enter') {
|
|
104
|
+
e.preventDefault();
|
|
105
|
+
addPath();
|
|
106
|
+
}
|
|
107
|
+
}, placeholder: "/services", className: "flex-1 rounded-lg border border-gray-300 px-3 py-2 text-sm font-mono focus:outline-none focus:ring-2 focus:ring-blue-500" }), _jsx("button", { type: "button", onClick: addPath, className: "rounded-lg border border-gray-300 px-3 py-2 text-sm hover:bg-gray-50 transition-colors", children: _jsx(Plus, { className: "w-4 h-4" }) })] }), scope === 'parents' && (_jsx("p", { className: "mt-1 text-xs text-gray-500", children: "This tag will also apply to all child pages under each path." })), targetPaths.length > 0 && (_jsx("div", { className: "mt-2 flex flex-wrap gap-2", children: targetPaths.map((p) => (_jsxs("span", { className: "inline-flex items-center gap-1 rounded-full bg-gray-100 px-3 py-1 text-xs font-mono text-gray-700", children: [p, _jsx("button", { type: "button", onClick: () => removePath(p), className: "ml-0.5 text-gray-400 hover:text-gray-600", children: _jsx(X, { className: "w-3 h-3" }) })] }, p))) }))] })), _jsxs("div", { className: "grid grid-cols-2 gap-4", children: [_jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: "Priority" }), _jsx("input", { type: "number", value: priority, onChange: (e) => setPriority(parseInt(e.target.value, 10) || 0), min: 0, className: "w-full rounded-lg border border-gray-300 px-3 py-2 text-sm focus:outline-none focus:ring-2 focus:ring-blue-500" }), _jsx("p", { className: "mt-1 text-xs text-gray-500", children: "Lower numbers load first (e.g. 1 = first, 100 = default)" })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-1 block text-sm font-medium text-gray-700", children: "Enabled" }), _jsx("div", { className: "pt-2", children: _jsx("button", { type: "button", onClick: () => setEnabled(!enabled), className: `relative h-6 w-11 shrink-0 rounded-full transition-colors ${enabled ? 'bg-blue-600' : 'bg-gray-300'}`, "aria-pressed": enabled, children: _jsx("span", { className: `absolute top-0.5 block h-5 w-5 rounded-full bg-white transition-transform ${enabled ? 'translate-x-[22px]' : 'translate-x-0.5'}` }) }) })] })] })] }), _jsxs("div", { className: "flex items-center justify-between", children: [_jsx("div", { children: !isNew && (_jsx(_Fragment, { children: showDeleteConfirm ? (_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-sm text-red-600", children: "Delete this tag?" }), _jsx("button", { type: "button", onClick: handleDelete, disabled: deleting, className: "rounded-lg bg-red-600 px-3 py-1.5 text-sm text-white hover:bg-red-700 disabled:opacity-50", children: deleting ? 'Deleting...' : 'Confirm' }), _jsx("button", { type: "button", onClick: () => setShowDeleteConfirm(false), className: "rounded-lg border border-gray-300 px-3 py-1.5 text-sm hover:bg-gray-50", children: "Cancel" })] })) : (_jsxs("button", { type: "button", onClick: () => setShowDeleteConfirm(true), className: "flex items-center gap-1.5 text-sm text-red-600 hover:text-red-700 transition-colors", children: [_jsx(Trash2, { className: "w-4 h-4" }), "Delete"] })) })) }), _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("button", { type: "button", onClick: () => onNavigate?.('/script-tags'), className: "rounded-lg border border-gray-300 px-4 py-2 text-sm text-gray-700 hover:bg-gray-50 transition-colors", children: "Cancel" }), _jsx("button", { type: "button", onClick: handleSave, disabled: saving, className: "rounded-lg bg-blue-600 px-6 py-2 text-sm text-white transition-colors hover:bg-blue-700 disabled:opacity-50", children: saving ? 'Saving...' : isNew ? 'Create Tag' : 'Save Changes' })] })] })] })] }));
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=ScriptTagEditor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptTagEditor.js","sourceRoot":"","sources":["../../src/views/ScriptTagEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptTags.d.ts","sourceRoot":"","sources":["../../src/views/ScriptTags.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,eAAe;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CACrC;AA2BD,wBAAgB,UAAU,CAAC,EAAE,UAAU,EAAE,EAAE,eAAe,2CA2HzD"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState } from 'react';
|
|
4
|
+
import { Code2, Plus, Loader2, AlertTriangle } from 'lucide-react';
|
|
5
|
+
import { toast } from 'sonner';
|
|
6
|
+
import { useApiData } from '../lib/useApiData.js';
|
|
7
|
+
import { cmsApi } from '../lib/api.js';
|
|
8
|
+
const PLACEMENT_LABELS = {
|
|
9
|
+
head: 'Head',
|
|
10
|
+
body_open: 'Body Open',
|
|
11
|
+
body_close: 'Body Close',
|
|
12
|
+
};
|
|
13
|
+
const PLACEMENT_COLORS = {
|
|
14
|
+
head: 'bg-purple-100 text-purple-700',
|
|
15
|
+
body_open: 'bg-blue-100 text-blue-700',
|
|
16
|
+
body_close: 'bg-green-100 text-green-700',
|
|
17
|
+
};
|
|
18
|
+
function scopeLabel(tag) {
|
|
19
|
+
if (tag.scope === 'site')
|
|
20
|
+
return 'Entire Site';
|
|
21
|
+
if (tag.scope === 'parents') {
|
|
22
|
+
const count = tag.targetPaths?.length ?? 0;
|
|
23
|
+
return `${count} parent path${count !== 1 ? 's' : ''} + children`;
|
|
24
|
+
}
|
|
25
|
+
if (tag.scope === 'urls') {
|
|
26
|
+
const count = tag.targetPaths?.length ?? 0;
|
|
27
|
+
return `${count} URL${count !== 1 ? 's' : ''}`;
|
|
28
|
+
}
|
|
29
|
+
return tag.scope;
|
|
30
|
+
}
|
|
31
|
+
export function ScriptTags({ onNavigate }) {
|
|
32
|
+
const { data, loading, error, refetch } = useApiData('/script-tags');
|
|
33
|
+
const [togglingId, setTogglingId] = useState(null);
|
|
34
|
+
const tags = data ?? [];
|
|
35
|
+
const toggleEnabled = async (tag) => {
|
|
36
|
+
setTogglingId(tag.id);
|
|
37
|
+
const res = await cmsApi(`/script-tags/${tag.id}`, {
|
|
38
|
+
method: 'PUT',
|
|
39
|
+
body: JSON.stringify({ enabled: !tag.enabled }),
|
|
40
|
+
});
|
|
41
|
+
setTogglingId(null);
|
|
42
|
+
if (res.error) {
|
|
43
|
+
toast.error(res.error);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
refetch();
|
|
47
|
+
}
|
|
48
|
+
};
|
|
49
|
+
if (loading) {
|
|
50
|
+
return (_jsx("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8 flex items-center justify-center h-64", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-blue-600" }) }));
|
|
51
|
+
}
|
|
52
|
+
return (_jsxs("div", { className: "p-3 pr-6 sm:p-4 sm:pr-8", children: [error && (_jsxs("div", { className: "mb-4 flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-red-600 shrink-0" }), _jsx("span", { className: "text-sm text-red-800 flex-1", children: error }), _jsx("button", { onClick: refetch, className: "px-3 py-1 text-sm text-red-700 border border-red-300 rounded-lg hover:bg-red-100 transition-colors", children: "Retry" })] })), _jsxs("div", { className: "mb-4 flex items-center justify-between", children: [_jsxs("div", { children: [_jsx("h1", { className: "mb-1 text-2xl font-semibold text-gray-900", children: "Script Tags" }), _jsx("p", { className: "text-sm text-gray-600", children: "Manage tracking codes, analytics, and custom scripts injected into your site" })] }), _jsxs("button", { type: "button", onClick: () => onNavigate?.('/script-tags/new'), className: "flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700", children: [_jsx(Plus, { className: "w-4 h-4" }), "New Tag"] })] }), tags.length === 0 && !error ? (_jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-12 text-center", children: [_jsx(Code2, { className: "mx-auto mb-3 h-10 w-10 text-gray-300" }), _jsx("h3", { className: "text-sm font-semibold text-gray-900", children: "No script tags yet" }), _jsx("p", { className: "mt-1 text-sm text-gray-500", children: "Add tracking codes like Google Analytics, Tag Manager, or Facebook Pixel." }), _jsxs("button", { type: "button", onClick: () => onNavigate?.('/script-tags/new'), className: "mt-4 inline-flex items-center gap-2 rounded-lg bg-blue-600 px-4 py-2 text-sm font-medium text-white transition-colors hover:bg-blue-700", children: [_jsx(Plus, { className: "w-4 h-4" }), "Add Your First Tag"] })] })) : (_jsx("div", { className: "rounded-lg border border-gray-200 bg-white overflow-hidden", children: _jsxs("table", { className: "w-full text-sm", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-b border-gray-200 bg-gray-50", children: [_jsx("th", { className: "px-4 py-3 text-left font-medium text-gray-600", children: "Name" }), _jsx("th", { className: "px-4 py-3 text-left font-medium text-gray-600", children: "Placement" }), _jsx("th", { className: "px-4 py-3 text-left font-medium text-gray-600", children: "Scope" }), _jsx("th", { className: "px-4 py-3 text-center font-medium text-gray-600", children: "Priority" }), _jsx("th", { className: "px-4 py-3 text-center font-medium text-gray-600", children: "Enabled" })] }) }), _jsx("tbody", { children: tags.map((tag) => (_jsxs("tr", { className: "border-b border-gray-100 last:border-0 hover:bg-gray-50 transition-colors", children: [_jsx("td", { className: "px-4 py-3", children: _jsx("button", { type: "button", onClick: () => onNavigate?.(`/script-tags/${tag.id}`), className: "font-medium text-blue-600 hover:text-blue-800 hover:underline", children: tag.name }) }), _jsx("td", { className: "px-4 py-3", children: _jsx("span", { className: `inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium ${PLACEMENT_COLORS[tag.placement] ?? 'bg-gray-100 text-gray-700'}`, children: PLACEMENT_LABELS[tag.placement] ?? tag.placement }) }), _jsx("td", { className: "px-4 py-3 text-gray-600", children: scopeLabel(tag) }), _jsx("td", { className: "px-4 py-3 text-center text-gray-600 font-mono", children: tag.priority }), _jsx("td", { className: "px-4 py-3 text-center", children: _jsx("button", { type: "button", onClick: () => toggleEnabled(tag), disabled: togglingId === tag.id, className: `relative h-6 w-11 shrink-0 rounded-full transition-colors ${tag.enabled ? 'bg-blue-600' : 'bg-gray-300'}`, "aria-pressed": tag.enabled, children: _jsx("span", { className: `absolute top-0.5 block h-5 w-5 rounded-full bg-white transition-transform ${tag.enabled ? 'translate-x-[22px]' : 'translate-x-0.5'}` }) }) })] }, tag.id))) })] }) }))] }));
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=ScriptTags.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScriptTags.js","sourceRoot":"","sources":["../../src/views/ScriptTags.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AACnE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAmBvC,MAAM,gBAAgB,GAA2B;IAC/C,IAAI,EAAE,MAAM;IACZ,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;CACzB,CAAC;AAEF,MAAM,gBAAgB,GAA2B;IAC/C,IAAI,EAAE,+BAA+B;IACrC,SAAS,EAAE,2BAA2B;IACtC,UAAU,EAAE,6BAA6B;CAC1C,CAAC;AAEF,SAAS,UAAU,CAAC,GAAc;IAChC,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM;QAAE,OAAO,aAAa,CAAC;IAC/C,IAAI,GAAG,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAC3C,OAAO,GAAG,KAAK,eAAe,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,aAAa,CAAC;IACpE,CAAC;IACD,IAAI,GAAG,CAAC,KAAK,KAAK,MAAM,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,MAAM,IAAI,CAAC,CAAC;QAC3C,OAAO,GAAG,KAAK,OAAO,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;IACjD,CAAC;IACD,OAAO,GAAG,CAAC,KAAK,CAAC;AACnB,CAAC;AAED,MAAM,UAAU,UAAU,CAAC,EAAE,UAAU,EAAmB;IACxD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,UAAU,CAAc,cAAc,CAAC,CAAC;IAClF,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAC;IAElE,MAAM,IAAI,GAAG,IAAI,IAAI,EAAE,CAAC;IAExB,MAAM,aAAa,GAAG,KAAK,EAAE,GAAc,EAAE,EAAE;QAC7C,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QACtB,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,EAAE,EAAE;YACjD,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;SAChD,CAAC,CAAC;QACH,aAAa,CAAC,IAAI,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;aAAM,CAAC;YACN,OAAO,EAAE,CAAC;QACZ,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,CACL,cAAK,SAAS,EAAC,+DAA+D,YAC5E,KAAC,OAAO,IAAC,SAAS,EAAC,oCAAoC,GAAG,GACtD,CACP,CAAC;IACJ,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,yBAAyB,aACrC,KAAK,IAAI,CACR,eAAK,SAAS,EAAC,6EAA6E,aAC1F,KAAC,aAAa,IAAC,SAAS,EAAC,+BAA+B,GAAG,EAC3D,eAAM,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAQ,EAC5D,iBAAQ,OAAO,EAAE,OAAO,EAAE,SAAS,EAAC,oGAAoG,sBAAe,IACnJ,CACP,EAED,eAAK,SAAS,EAAC,wCAAwC,aACrD,0BACE,aAAI,SAAS,EAAC,2CAA2C,4BAAiB,EAC1E,YAAG,SAAS,EAAC,uBAAuB,6FAAiF,IACjH,EACN,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,EAC/C,SAAS,EAAC,6HAA6H,aAEvI,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,eAErB,IACL,EAEL,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7B,eAAK,SAAS,EAAC,6DAA6D,aAC1E,KAAC,KAAK,IAAC,SAAS,EAAC,sCAAsC,GAAG,EAC1D,aAAI,SAAS,EAAC,qCAAqC,mCAAwB,EAC3E,YAAG,SAAS,EAAC,4BAA4B,0FAErC,EACJ,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,kBAAkB,CAAC,EAC/C,SAAS,EAAC,yIAAyI,aAEnJ,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,GAAG,0BAErB,IACL,CACP,CAAC,CAAC,CAAC,CACF,cAAK,SAAS,EAAC,4DAA4D,YACzE,iBAAO,SAAS,EAAC,gBAAgB,aAC/B,0BACE,cAAI,SAAS,EAAC,qCAAqC,aACjD,aAAI,SAAS,EAAC,+CAA+C,qBAAU,EACvE,aAAI,SAAS,EAAC,+CAA+C,0BAAe,EAC5E,aAAI,SAAS,EAAC,+CAA+C,sBAAW,EACxE,aAAI,SAAS,EAAC,iDAAiD,yBAAc,EAC7E,aAAI,SAAS,EAAC,iDAAiD,wBAAa,IACzE,GACC,EACR,0BACG,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CACjB,cAAiB,SAAS,EAAC,2EAA2E,aACpG,aAAI,SAAS,EAAC,WAAW,YACvB,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,gBAAgB,GAAG,CAAC,EAAE,EAAE,CAAC,EACrD,SAAS,EAAC,+DAA+D,YAExE,GAAG,CAAC,IAAI,GACF,GACN,EACL,aAAI,SAAS,EAAC,WAAW,YACvB,eAAM,SAAS,EAAE,2EAA2E,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,2BAA2B,EAAE,YACzJ,gBAAgB,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,GAAG,CAAC,SAAS,GAC5C,GACJ,EACL,aAAI,SAAS,EAAC,yBAAyB,YAAE,UAAU,CAAC,GAAG,CAAC,GAAM,EAC9D,aAAI,SAAS,EAAC,+CAA+C,YAAE,GAAG,CAAC,QAAQ,GAAM,EACjF,aAAI,SAAS,EAAC,uBAAuB,YACnC,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,EACjC,QAAQ,EAAE,UAAU,KAAK,GAAG,CAAC,EAAE,EAC/B,SAAS,EAAE,6DAA6D,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,aAAa,EAAE,kBACvG,GAAG,CAAC,OAAO,YAEzB,eACE,SAAS,EAAE,6EACT,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,iBACvC,EAAE,GACF,GACK,GACN,KA/BE,GAAG,CAAC,EAAE,CAgCV,CACN,CAAC,GACI,IACF,GACJ,CACP,IACG,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { BlockNode } from '@actuate-media/cms-core';
|
|
2
|
+
export interface AIBlockAssistProps {
|
|
3
|
+
block: BlockNode;
|
|
4
|
+
pageTitle?: string;
|
|
5
|
+
businessName?: string;
|
|
6
|
+
onUpdateData: (data: Record<string, unknown>) => void;
|
|
7
|
+
}
|
|
8
|
+
export declare function AIBlockAssist({ block, pageTitle, businessName, onUpdateData, }: AIBlockAssistProps): import("react/jsx-runtime").JSX.Element;
|
|
9
|
+
//# sourceMappingURL=AIBlockAssist.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIBlockAssist.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/AIBlockAssist.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEzD,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,SAAS,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,EAAE,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;CACvD;AAED,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,YAAY,EACZ,YAAY,GACb,EAAE,kBAAkB,2CA+CpB"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useCallback } from 'react';
|
|
4
|
+
import { Sparkles, Loader2 } from 'lucide-react';
|
|
5
|
+
import { toast } from 'sonner';
|
|
6
|
+
import { cmsApi } from '../../lib/api.js';
|
|
7
|
+
export function AIBlockAssist({ block, pageTitle, businessName, onUpdateData, }) {
|
|
8
|
+
const [generating, setGenerating] = useState(false);
|
|
9
|
+
const handleGenerate = useCallback(async () => {
|
|
10
|
+
setGenerating(true);
|
|
11
|
+
try {
|
|
12
|
+
const res = await cmsApi('/page-builder/generate-block', {
|
|
13
|
+
method: 'POST',
|
|
14
|
+
body: JSON.stringify({
|
|
15
|
+
blockType: block.settings.blockType,
|
|
16
|
+
variant: block.settings.variant,
|
|
17
|
+
pageContext: {
|
|
18
|
+
pageTitle,
|
|
19
|
+
businessName,
|
|
20
|
+
},
|
|
21
|
+
}),
|
|
22
|
+
});
|
|
23
|
+
if (res.error) {
|
|
24
|
+
toast.error(res.error);
|
|
25
|
+
}
|
|
26
|
+
else if (res.data) {
|
|
27
|
+
onUpdateData(res.data);
|
|
28
|
+
toast.success('Content generated');
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
toast.error('Failed to generate content');
|
|
33
|
+
}
|
|
34
|
+
finally {
|
|
35
|
+
setGenerating(false);
|
|
36
|
+
}
|
|
37
|
+
}, [block, pageTitle, businessName, onUpdateData]);
|
|
38
|
+
return (_jsxs("button", { onClick: handleGenerate, disabled: generating, className: "flex items-center gap-1.5 px-2.5 py-1 text-xs text-primary hover:bg-primary/10 rounded-md transition-colors disabled:opacity-50", title: "Generate content with AI", children: [generating ? (_jsx(Loader2, { size: 12, className: "animate-spin" })) : (_jsx(Sparkles, { size: 12 })), generating ? 'Generating...' : 'AI Fill'] }));
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=AIBlockAssist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIBlockAssist.js","sourceRoot":"","sources":["../../../src/views/page-builder/AIBlockAssist.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAC/B,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AAU1C,MAAM,UAAU,aAAa,CAAC,EAC5B,KAAK,EACL,SAAS,EACT,YAAY,EACZ,YAAY,GACO;IACnB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAEpD,MAAM,cAAc,GAAG,WAAW,CAAC,KAAK,IAAI,EAAE;QAC5C,aAAa,CAAC,IAAI,CAAC,CAAC;QAEpB,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAA0B,8BAA8B,EAAE;gBAChF,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,SAAS,EAAE,KAAK,CAAC,QAAQ,CAAC,SAAS;oBACnC,OAAO,EAAE,KAAK,CAAC,QAAQ,CAAC,OAAO;oBAC/B,WAAW,EAAE;wBACX,SAAS;wBACT,YAAY;qBACb;iBACF,CAAC;aACH,CAAC,CAAC;YAEH,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACzB,CAAC;iBAAM,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;gBACpB,YAAY,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACvB,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAC5C,CAAC;gBAAS,CAAC;YACT,aAAa,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC,CAAC;IAEnD,OAAO,CACL,kBACE,OAAO,EAAE,cAAc,EACvB,QAAQ,EAAE,UAAU,EACpB,SAAS,EAAC,iIAAiI,EAC3I,KAAK,EAAC,0BAA0B,aAE/B,UAAU,CAAC,CAAC,CAAC,CACZ,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,GAAG,CAC/C,CAAC,CAAC,CAAC,CACF,KAAC,QAAQ,IAAC,IAAI,EAAE,EAAE,GAAI,CACvB,EACA,UAAU,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS,IAClC,CACV,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { PageNode } from '@actuate-media/cms-core';
|
|
2
|
+
export interface AIGenerateDialogProps {
|
|
3
|
+
open: boolean;
|
|
4
|
+
onClose: () => void;
|
|
5
|
+
onAccept: (tree: PageNode) => void;
|
|
6
|
+
}
|
|
7
|
+
export declare function AIGenerateDialog({ open, onClose, onAccept }: AIGenerateDialogProps): import("react/jsx-runtime").JSX.Element | null;
|
|
8
|
+
//# sourceMappingURL=AIGenerateDialog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIGenerateDialog.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/AIGenerateDialog.tsx"],"names":[],"mappings":"AAmBA,OAAO,KAAK,EAAE,QAAQ,EAAkB,MAAM,yBAAyB,CAAC;AAExE,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,QAAQ,EAAE,CAAC,IAAI,EAAE,QAAQ,KAAK,IAAI,CAAC;CACpC;AAgED,wBAAgB,gBAAgB,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,qBAAqB,kDAoelF"}
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
3
|
+
import { useState, useCallback } from 'react';
|
|
4
|
+
import { Sparkles, X, Loader2, Check, ChevronDown, ChevronUp, AlertTriangle, Wand2, FileText, Search, Accessibility, ArrowRight, } from 'lucide-react';
|
|
5
|
+
import { toast } from 'sonner';
|
|
6
|
+
import { cmsApi } from '../../lib/api.js';
|
|
7
|
+
const ALL_STEPS = [
|
|
8
|
+
{
|
|
9
|
+
key: 'structure',
|
|
10
|
+
label: 'Structure',
|
|
11
|
+
icon: _jsx(Wand2, { size: 14 }),
|
|
12
|
+
description: 'Generate page layout and block placement',
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
key: 'content',
|
|
16
|
+
label: 'Content',
|
|
17
|
+
icon: _jsx(FileText, { size: 14 }),
|
|
18
|
+
description: 'Write compelling copy for every block',
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
key: 'seo',
|
|
22
|
+
label: 'SEO',
|
|
23
|
+
icon: _jsx(Search, { size: 14 }),
|
|
24
|
+
description: 'Optimize headings, meta tags, and keywords',
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: 'accessibility',
|
|
28
|
+
label: 'Accessibility',
|
|
29
|
+
icon: _jsx(Accessibility, { size: 14 }),
|
|
30
|
+
description: 'Fix heading hierarchy, alt text, and ARIA',
|
|
31
|
+
},
|
|
32
|
+
];
|
|
33
|
+
const TONES = [
|
|
34
|
+
{ value: 'professional', label: 'Professional' },
|
|
35
|
+
{ value: 'casual', label: 'Casual' },
|
|
36
|
+
{ value: 'friendly', label: 'Friendly' },
|
|
37
|
+
{ value: 'technical', label: 'Technical' },
|
|
38
|
+
{ value: 'luxury', label: 'Luxury' },
|
|
39
|
+
];
|
|
40
|
+
export function AIGenerateDialog({ open, onClose, onAccept }) {
|
|
41
|
+
const [phase, setPhase] = useState('prompt');
|
|
42
|
+
const [prompt, setPrompt] = useState('');
|
|
43
|
+
const [tone, setTone] = useState('professional');
|
|
44
|
+
const [enabledSteps, setEnabledSteps] = useState(new Set(['structure', 'content', 'seo', 'accessibility']));
|
|
45
|
+
const [showContext, setShowContext] = useState(false);
|
|
46
|
+
const [businessName, setBusiness] = useState('');
|
|
47
|
+
const [industry, setIndustry] = useState('');
|
|
48
|
+
const [phone, setPhone] = useState('');
|
|
49
|
+
const [address, setAddress] = useState('');
|
|
50
|
+
const [services, setServices] = useState('');
|
|
51
|
+
const [currentStep, setCurrentStep] = useState('');
|
|
52
|
+
const [completedSteps, setCompletedSteps] = useState([]);
|
|
53
|
+
const [stepMessage, setStepMessage] = useState('');
|
|
54
|
+
const [result, setResult] = useState(null);
|
|
55
|
+
const [error, setError] = useState(null);
|
|
56
|
+
const [expandedStep, setExpandedStep] = useState(null);
|
|
57
|
+
const toggleStep = (step) => {
|
|
58
|
+
const next = new Set(enabledSteps);
|
|
59
|
+
if (step === 'structure')
|
|
60
|
+
return;
|
|
61
|
+
if (next.has(step)) {
|
|
62
|
+
next.delete(step);
|
|
63
|
+
}
|
|
64
|
+
else {
|
|
65
|
+
next.add(step);
|
|
66
|
+
}
|
|
67
|
+
setEnabledSteps(next);
|
|
68
|
+
};
|
|
69
|
+
const resetState = useCallback(() => {
|
|
70
|
+
setPhase('prompt');
|
|
71
|
+
setPrompt('');
|
|
72
|
+
setTone('professional');
|
|
73
|
+
setEnabledSteps(new Set(['structure', 'content', 'seo', 'accessibility']));
|
|
74
|
+
setShowContext(false);
|
|
75
|
+
setBusiness('');
|
|
76
|
+
setIndustry('');
|
|
77
|
+
setPhone('');
|
|
78
|
+
setAddress('');
|
|
79
|
+
setServices('');
|
|
80
|
+
setCurrentStep('');
|
|
81
|
+
setCompletedSteps([]);
|
|
82
|
+
setStepMessage('');
|
|
83
|
+
setResult(null);
|
|
84
|
+
setError(null);
|
|
85
|
+
setExpandedStep(null);
|
|
86
|
+
}, []);
|
|
87
|
+
const handleClose = useCallback(() => {
|
|
88
|
+
resetState();
|
|
89
|
+
onClose();
|
|
90
|
+
}, [resetState, onClose]);
|
|
91
|
+
const handleGenerate = useCallback(async () => {
|
|
92
|
+
if (!prompt.trim()) {
|
|
93
|
+
toast.error('Please describe the page you want to create');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
setPhase('generating');
|
|
97
|
+
setError(null);
|
|
98
|
+
const steps = ALL_STEPS.filter((s) => enabledSteps.has(s.key)).map((s) => s.key);
|
|
99
|
+
setCurrentStep(steps[0]);
|
|
100
|
+
setStepMessage('Starting generation...');
|
|
101
|
+
const context = {};
|
|
102
|
+
if (businessName)
|
|
103
|
+
context.businessName = businessName;
|
|
104
|
+
if (industry)
|
|
105
|
+
context.industry = industry;
|
|
106
|
+
if (phone)
|
|
107
|
+
context.phone = phone;
|
|
108
|
+
if (address)
|
|
109
|
+
context.address = address;
|
|
110
|
+
if (services)
|
|
111
|
+
context.services = services.split(',').map((s) => s.trim()).filter(Boolean);
|
|
112
|
+
try {
|
|
113
|
+
const res = await cmsApi('/page-builder/generate', {
|
|
114
|
+
method: 'POST',
|
|
115
|
+
body: JSON.stringify({
|
|
116
|
+
prompt: prompt.trim(),
|
|
117
|
+
steps,
|
|
118
|
+
tone,
|
|
119
|
+
context: Object.keys(context).length > 0 ? context : undefined,
|
|
120
|
+
}),
|
|
121
|
+
});
|
|
122
|
+
if (res.error) {
|
|
123
|
+
setError(res.error);
|
|
124
|
+
setPhase('prompt');
|
|
125
|
+
return;
|
|
126
|
+
}
|
|
127
|
+
if (res.data) {
|
|
128
|
+
setResult(res.data);
|
|
129
|
+
setCompletedSteps(res.data.steps.map((s) => s.step));
|
|
130
|
+
setPhase('review');
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (err) {
|
|
134
|
+
setError(err instanceof Error ? err.message : 'Generation failed');
|
|
135
|
+
setPhase('prompt');
|
|
136
|
+
}
|
|
137
|
+
}, [prompt, tone, enabledSteps, businessName, industry, phone, address, services]);
|
|
138
|
+
const handleAccept = useCallback(() => {
|
|
139
|
+
if (result?.tree) {
|
|
140
|
+
onAccept(result.tree);
|
|
141
|
+
toast.success('AI-generated page applied');
|
|
142
|
+
handleClose();
|
|
143
|
+
}
|
|
144
|
+
}, [result, onAccept, handleClose]);
|
|
145
|
+
if (!open)
|
|
146
|
+
return null;
|
|
147
|
+
return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center", children: [_jsx("div", { className: "absolute inset-0 bg-black/50", onClick: handleClose }), _jsxs("div", { className: "relative bg-card rounded-xl shadow-2xl border border-border w-full max-w-2xl max-h-[85vh] overflow-hidden flex flex-col", children: [_jsxs("div", { className: "flex items-center justify-between px-6 py-4 border-b border-border", children: [_jsxs("div", { className: "flex items-center gap-2.5", children: [_jsx("div", { className: "p-1.5 rounded-lg bg-primary/10", children: _jsx(Sparkles, { size: 18, className: "text-primary" }) }), _jsxs("div", { children: [_jsx("h2", { className: "text-base font-medium text-foreground", children: "AI Page Generator" }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Describe your page and let AI build it" })] })] }), _jsx("button", { onClick: handleClose, className: "p-1.5 rounded-md hover:bg-muted transition-colors", "aria-label": "Close", children: _jsx(X, { size: 16, className: "text-muted-foreground" }) })] }), _jsxs("div", { className: "flex-1 overflow-y-auto p-6", children: [phase === 'prompt' && (_jsxs("div", { className: "space-y-5", children: [error && (_jsxs("div", { className: "flex items-start gap-2.5 p-3 rounded-lg bg-destructive/5 border border-destructive/20", children: [_jsx(AlertTriangle, { size: 16, className: "text-destructive shrink-0 mt-0.5" }), _jsx("p", { className: "text-sm text-destructive", children: error })] })), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-foreground mb-1.5", children: "Describe your page" }), _jsx("textarea", { value: prompt, onChange: (e) => setPrompt(e.target.value), placeholder: "e.g. A landing page for a plumbing company with a hero section, service cards, testimonials, and a contact form", rows: 4, className: "w-full px-3 py-2.5 text-sm bg-background border border-border rounded-lg resize-none focus:outline-none focus:ring-2 focus:ring-primary/40 text-foreground placeholder:text-muted-foreground", autoFocus: true })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-foreground mb-1.5", children: "Tone" }), _jsx("div", { className: "flex flex-wrap gap-2", children: TONES.map((t) => (_jsx("button", { onClick: () => setTone(t.value), className: `px-3 py-1.5 text-xs rounded-full border transition-colors ${tone === t.value
|
|
148
|
+
? 'border-primary bg-primary/10 text-primary'
|
|
149
|
+
: 'border-border bg-background text-muted-foreground hover:border-primary/40'}`, children: t.label }, t.value))) })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-sm font-medium text-foreground mb-1.5", children: "Generation steps" }), _jsx("div", { className: "space-y-1.5", children: ALL_STEPS.map((step) => (_jsxs("label", { className: `flex items-center gap-3 p-2.5 rounded-lg border transition-colors cursor-pointer ${enabledSteps.has(step.key)
|
|
150
|
+
? 'border-primary/30 bg-primary/5'
|
|
151
|
+
: 'border-border bg-background'} ${step.key === 'structure' ? 'opacity-70 cursor-not-allowed' : 'hover:border-primary/20'}`, children: [_jsx("input", { type: "checkbox", checked: enabledSteps.has(step.key), onChange: () => toggleStep(step.key), disabled: step.key === 'structure', className: "sr-only" }), _jsx("div", { className: `w-5 h-5 rounded flex items-center justify-center shrink-0 ${enabledSteps.has(step.key)
|
|
152
|
+
? 'bg-primary text-white'
|
|
153
|
+
: 'bg-muted border border-border'}`, children: enabledSteps.has(step.key) && _jsx(Check, { size: 12 }) }), _jsxs("div", { className: "flex items-center gap-2 flex-1 min-w-0", children: [_jsx("span", { className: "text-muted-foreground", children: step.icon }), _jsxs("div", { children: [_jsx("span", { className: "text-sm text-foreground", children: step.label }), _jsx("span", { className: "text-xs text-muted-foreground ml-2", children: step.description })] })] })] }, step.key))) })] }), _jsxs("div", { children: [_jsxs("button", { onClick: () => setShowContext(!showContext), className: "flex items-center gap-1.5 text-sm text-muted-foreground hover:text-foreground transition-colors", children: [showContext ? _jsx(ChevronUp, { size: 14 }) : _jsx(ChevronDown, { size: 14 }), "Business context (optional)"] }), showContext && (_jsxs("div", { className: "mt-3 space-y-3 p-4 bg-muted/50 rounded-lg border border-border", children: [_jsxs("div", { className: "grid grid-cols-2 gap-3", children: [_jsxs("div", { children: [_jsx("label", { className: "block text-xs text-muted-foreground mb-1", children: "Business name" }), _jsx("input", { type: "text", value: businessName, onChange: (e) => setBusiness(e.target.value), className: "w-full px-2.5 py-1.5 text-sm bg-background border border-border rounded-md focus:outline-none focus:ring-2 focus:ring-primary/40 text-foreground" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs text-muted-foreground mb-1", children: "Industry" }), _jsx("input", { type: "text", value: industry, onChange: (e) => setIndustry(e.target.value), className: "w-full px-2.5 py-1.5 text-sm bg-background border border-border rounded-md focus:outline-none focus:ring-2 focus:ring-primary/40 text-foreground" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs text-muted-foreground mb-1", children: "Phone" }), _jsx("input", { type: "text", value: phone, onChange: (e) => setPhone(e.target.value), className: "w-full px-2.5 py-1.5 text-sm bg-background border border-border rounded-md focus:outline-none focus:ring-2 focus:ring-primary/40 text-foreground" })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs text-muted-foreground mb-1", children: "Address" }), _jsx("input", { type: "text", value: address, onChange: (e) => setAddress(e.target.value), className: "w-full px-2.5 py-1.5 text-sm bg-background border border-border rounded-md focus:outline-none focus:ring-2 focus:ring-primary/40 text-foreground" })] })] }), _jsxs("div", { children: [_jsx("label", { className: "block text-xs text-muted-foreground mb-1", children: "Services (comma-separated)" }), _jsx("input", { type: "text", value: services, onChange: (e) => setServices(e.target.value), placeholder: "e.g. Web design, SEO, Content marketing", className: "w-full px-2.5 py-1.5 text-sm bg-background border border-border rounded-md focus:outline-none focus:ring-2 focus:ring-primary/40 text-foreground placeholder:text-muted-foreground" })] })] }))] })] })), phase === 'generating' && (_jsxs("div", { className: "py-8 space-y-6", children: [_jsxs("div", { className: "text-center", children: [_jsx(Loader2, { size: 32, className: "animate-spin text-primary mx-auto mb-3" }), _jsx("p", { className: "text-sm font-medium text-foreground", children: stepMessage || 'Generating...' }), _jsx("p", { className: "text-xs text-muted-foreground mt-1", children: "This may take 15-30 seconds" })] }), _jsx("div", { className: "space-y-2", children: ALL_STEPS.filter((s) => enabledSteps.has(s.key)).map((step) => {
|
|
154
|
+
const isComplete = completedSteps.includes(step.key);
|
|
155
|
+
const isCurrent = currentStep === step.key;
|
|
156
|
+
return (_jsxs("div", { className: `flex items-center gap-3 p-3 rounded-lg border transition-colors ${isComplete
|
|
157
|
+
? 'border-primary/30 bg-primary/5'
|
|
158
|
+
: isCurrent
|
|
159
|
+
? 'border-primary/50 bg-primary/10'
|
|
160
|
+
: 'border-border bg-muted/30'}`, children: [_jsx("div", { className: "w-6 h-6 rounded-full flex items-center justify-center shrink-0", children: isComplete ? (_jsx("div", { className: "w-6 h-6 rounded-full bg-primary flex items-center justify-center", children: _jsx(Check, { size: 12, className: "text-white" }) })) : isCurrent ? (_jsx(Loader2, { size: 16, className: "animate-spin text-primary" })) : (_jsx("div", { className: "w-6 h-6 rounded-full bg-muted border border-border" })) }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("span", { className: "text-muted-foreground", children: step.icon }), _jsx("span", { className: `text-sm ${isCurrent || isComplete ? 'text-foreground' : 'text-muted-foreground'}`, children: step.label })] })] }, step.key));
|
|
161
|
+
}) })] })), phase === 'review' && result && (_jsxs("div", { className: "space-y-5", children: [_jsxs("div", { className: "flex items-center gap-3 p-4 rounded-lg bg-primary/5 border border-primary/20", children: [_jsx("div", { className: "w-10 h-10 rounded-full bg-primary/10 flex items-center justify-center shrink-0", children: _jsx(Sparkles, { size: 18, className: "text-primary" }) }), _jsxs("div", { children: [_jsx("p", { className: "text-sm font-medium text-foreground", children: "Page generated successfully" }), _jsxs("p", { className: "text-xs text-muted-foreground mt-0.5", children: [result.totalTokensUsed.toLocaleString(), " tokens", ' \u00B7 ', (result.totalDurationMs / 1000).toFixed(1), "s", ' \u00B7 ', result.steps.length, " step", result.steps.length !== 1 ? 's' : ''] })] })] }), _jsxs("div", { className: "space-y-2", children: [_jsx("h3", { className: "text-sm font-medium text-foreground", children: "Generation steps" }), result.steps.map((step) => {
|
|
162
|
+
const info = ALL_STEPS.find((s) => s.key === step.step);
|
|
163
|
+
const isExpanded = expandedStep === step.step;
|
|
164
|
+
return (_jsxs("div", { className: "rounded-lg border border-border overflow-hidden", children: [_jsxs("button", { onClick: () => setExpandedStep(isExpanded ? null : step.step), className: "w-full flex items-center gap-3 p-3 hover:bg-muted/50 transition-colors text-left", children: [_jsx("div", { className: "w-6 h-6 rounded-full bg-primary flex items-center justify-center shrink-0", children: _jsx(Check, { size: 12, className: "text-white" }) }), _jsx("span", { className: "text-muted-foreground", children: info?.icon }), _jsx("span", { className: "text-sm text-foreground flex-1", children: info?.label }), _jsxs("span", { className: "text-xs text-muted-foreground", children: [(step.metadata.durationMs / 1000).toFixed(1), "s"] }), isExpanded ? (_jsx(ChevronUp, { size: 14, className: "text-muted-foreground" })) : (_jsx(ChevronDown, { size: 14, className: "text-muted-foreground" }))] }), isExpanded && (_jsxs("div", { className: "px-3 pb-3 border-t border-border pt-2", children: [_jsx("ul", { className: "space-y-1", children: step.metadata.changes.map((change, i) => (_jsxs("li", { className: "flex items-start gap-2 text-xs text-muted-foreground", children: [_jsx(ArrowRight, { size: 10, className: "shrink-0 mt-0.5" }), change] }, i))) }), _jsxs("p", { className: "text-xs text-muted-foreground mt-2", children: ["Tokens: ", step.metadata.tokensUsed.toLocaleString()] })] }))] }, step.step));
|
|
165
|
+
})] }), _jsx("p", { className: "text-xs text-muted-foreground", children: "Review the generated page in the canvas after accepting. You can always undo to revert." })] }))] }), _jsxs("div", { className: "px-6 py-4 border-t border-border flex items-center justify-end gap-3", children: [phase === 'prompt' && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: handleClose, className: "px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors", children: "Cancel" }), _jsxs("button", { onClick: handleGenerate, disabled: !prompt.trim(), className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-primary rounded-lg hover:bg-primary/90 transition-colors disabled:opacity-50 disabled:cursor-not-allowed", children: [_jsx(Sparkles, { size: 14 }), "Generate Page"] })] })), phase === 'generating' && (_jsx("button", { onClick: handleClose, className: "px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors", children: "Cancel" })), phase === 'review' && (_jsxs(_Fragment, { children: [_jsx("button", { onClick: () => {
|
|
166
|
+
setPhase('prompt');
|
|
167
|
+
setResult(null);
|
|
168
|
+
}, className: "px-4 py-2 text-sm text-muted-foreground hover:text-foreground transition-colors", children: "Regenerate" }), _jsxs("button", { onClick: handleAccept, className: "flex items-center gap-2 px-4 py-2 text-sm font-medium text-white bg-primary rounded-lg hover:bg-primary/90 transition-colors", children: [_jsx(Check, { size: 14 }), "Accept & Apply"] })] }))] })] })] }));
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=AIGenerateDialog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AIGenerateDialog.js","sourceRoot":"","sources":["../../../src/views/page-builder/AIGenerateDialog.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { BlockNode } from '@actuate-media/cms-core';
|
|
2
|
+
export interface BlockEditorProps {
|
|
3
|
+
node: BlockNode;
|
|
4
|
+
onUpdateBlock: (id: string, data: Record<string, unknown>) => void;
|
|
5
|
+
onUpdateSettings: (id: string, settings: Record<string, unknown>) => void;
|
|
6
|
+
onRemoveNode: (id: string) => void;
|
|
7
|
+
onDuplicateNode: (id: string) => void;
|
|
8
|
+
config: any;
|
|
9
|
+
}
|
|
10
|
+
export declare function BlockEditor({ node, onUpdateBlock, onUpdateSettings, onRemoveNode, onDuplicateNode, config, }: BlockEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
11
|
+
//# sourceMappingURL=BlockEditor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BlockEditor.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/BlockEditor.tsx"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAwC,MAAM,yBAAyB,CAAC;AAI/F,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,SAAS,CAAC;IAChB,aAAa,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACnE,gBAAgB,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IAC1E,YAAY,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACnC,eAAe,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAC;IACtC,MAAM,EAAE,GAAG,CAAC;CACb;AAMD,wBAAgB,WAAW,CAAC,EAC1B,IAAI,EACJ,aAAa,EACb,gBAAgB,EAChB,YAAY,EACZ,eAAe,EACf,MAAM,GACP,EAAE,gBAAgB,2CA0HlB"}
|