@actuate-media/cms-admin 0.67.0 → 0.68.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.
Files changed (146) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/AdminRoot.d.ts.map +1 -1
  3. package/dist/AdminRoot.js +29 -5
  4. package/dist/AdminRoot.js.map +1 -1
  5. package/dist/__tests__/hooks/useIdleLogout.test.d.ts +2 -0
  6. package/dist/__tests__/hooks/useIdleLogout.test.d.ts.map +1 -0
  7. package/dist/__tests__/hooks/useIdleLogout.test.js +64 -0
  8. package/dist/__tests__/hooks/useIdleLogout.test.js.map +1 -0
  9. package/dist/__tests__/lib/post-types-service.test.d.ts +2 -0
  10. package/dist/__tests__/lib/post-types-service.test.d.ts.map +1 -0
  11. package/dist/__tests__/lib/post-types-service.test.js +88 -0
  12. package/dist/__tests__/lib/post-types-service.test.js.map +1 -0
  13. package/dist/__tests__/views/collection-list-nav.render.test.js +43 -5
  14. package/dist/__tests__/views/collection-list-nav.render.test.js.map +1 -1
  15. package/dist/__tests__/views/forms-list.render.test.js +25 -6
  16. package/dist/__tests__/views/forms-list.render.test.js.map +1 -1
  17. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts +2 -0
  18. package/dist/__tests__/views/page-builder-sections-panel.render.test.d.ts.map +1 -0
  19. package/dist/__tests__/views/page-builder-sections-panel.render.test.js +121 -0
  20. package/dist/__tests__/views/page-builder-sections-panel.render.test.js.map +1 -0
  21. package/dist/__tests__/views/page-templates.render.test.d.ts +2 -0
  22. package/dist/__tests__/views/page-templates.render.test.d.ts.map +1 -0
  23. package/dist/__tests__/views/page-templates.render.test.js +105 -0
  24. package/dist/__tests__/views/page-templates.render.test.js.map +1 -0
  25. package/dist/__tests__/views/post-type-editor.render.test.d.ts +2 -0
  26. package/dist/__tests__/views/post-type-editor.render.test.d.ts.map +1 -0
  27. package/dist/__tests__/views/post-type-editor.render.test.js +102 -0
  28. package/dist/__tests__/views/post-type-editor.render.test.js.map +1 -0
  29. package/dist/__tests__/views/security-settings.render.test.js +85 -4
  30. package/dist/__tests__/views/security-settings.render.test.js.map +1 -1
  31. package/dist/__tests__/views/seo-content-pane.render.test.d.ts +2 -0
  32. package/dist/__tests__/views/seo-content-pane.render.test.d.ts.map +1 -0
  33. package/dist/__tests__/views/seo-content-pane.render.test.js +117 -0
  34. package/dist/__tests__/views/seo-content-pane.render.test.js.map +1 -0
  35. package/dist/actuate-admin.css +1 -1
  36. package/dist/components/collections/EntryDetailPane.d.ts +10 -0
  37. package/dist/components/collections/EntryDetailPane.d.ts.map +1 -0
  38. package/dist/components/collections/EntryDetailPane.js +92 -0
  39. package/dist/components/collections/EntryDetailPane.js.map +1 -0
  40. package/dist/components/forms/FieldsPanel.js +1 -1
  41. package/dist/components/forms/FieldsPanel.js.map +1 -1
  42. package/dist/components/forms/FormSchemaPane.d.ts +8 -0
  43. package/dist/components/forms/FormSchemaPane.d.ts.map +1 -0
  44. package/dist/components/forms/FormSchemaPane.js +95 -0
  45. package/dist/components/forms/FormSchemaPane.js.map +1 -0
  46. package/dist/components/seo/SeoEditorPane.d.ts +9 -0
  47. package/dist/components/seo/SeoEditorPane.d.ts.map +1 -0
  48. package/dist/components/seo/SeoEditorPane.js +175 -0
  49. package/dist/components/seo/SeoEditorPane.js.map +1 -0
  50. package/dist/components/ui/Badge.d.ts +1 -1
  51. package/dist/components/ui/Button.d.ts +1 -1
  52. package/dist/components/ui/StatusBadge.d.ts +1 -1
  53. package/dist/hooks/useIdleLogout.d.ts +18 -0
  54. package/dist/hooks/useIdleLogout.d.ts.map +1 -0
  55. package/dist/hooks/useIdleLogout.js +66 -0
  56. package/dist/hooks/useIdleLogout.js.map +1 -0
  57. package/dist/lib/api.d.ts +1 -0
  58. package/dist/lib/api.d.ts.map +1 -1
  59. package/dist/lib/api.js +7 -1
  60. package/dist/lib/api.js.map +1 -1
  61. package/dist/lib/post-types-service.d.ts +44 -0
  62. package/dist/lib/post-types-service.d.ts.map +1 -0
  63. package/dist/lib/post-types-service.js +83 -0
  64. package/dist/lib/post-types-service.js.map +1 -0
  65. package/dist/views/CollectionList.d.ts.map +1 -1
  66. package/dist/views/CollectionList.js +23 -4
  67. package/dist/views/CollectionList.js.map +1 -1
  68. package/dist/views/Forms.d.ts.map +1 -1
  69. package/dist/views/Forms.js +25 -21
  70. package/dist/views/Forms.js.map +1 -1
  71. package/dist/views/Posts/PostTypeEditor.d.ts +16 -0
  72. package/dist/views/Posts/PostTypeEditor.d.ts.map +1 -0
  73. package/dist/views/Posts/PostTypeEditor.js +159 -0
  74. package/dist/views/Posts/PostTypeEditor.js.map +1 -0
  75. package/dist/views/Posts/PostTypesView.d.ts +3 -2
  76. package/dist/views/Posts/PostTypesView.d.ts.map +1 -1
  77. package/dist/views/Posts/PostTypesView.js +1 -1
  78. package/dist/views/Posts/PostTypesView.js.map +1 -1
  79. package/dist/views/page-builder/BuilderSectionsPanel.d.ts +20 -0
  80. package/dist/views/page-builder/BuilderSectionsPanel.d.ts.map +1 -0
  81. package/dist/views/page-builder/BuilderSectionsPanel.js +105 -0
  82. package/dist/views/page-builder/BuilderSectionsPanel.js.map +1 -0
  83. package/dist/views/page-builder/PageBuilder.d.ts.map +1 -1
  84. package/dist/views/page-builder/PageBuilder.js +51 -2
  85. package/dist/views/page-builder/PageBuilder.js.map +1 -1
  86. package/dist/views/page-builder/PageTemplates.d.ts.map +1 -1
  87. package/dist/views/page-builder/PageTemplates.js +113 -6
  88. package/dist/views/page-builder/PageTemplates.js.map +1 -1
  89. package/dist/views/seo/ContentTab.d.ts.map +1 -1
  90. package/dist/views/seo/ContentTab.js +22 -6
  91. package/dist/views/seo/ContentTab.js.map +1 -1
  92. package/dist/views/settings/AccessProtectionCard.d.ts +5 -1
  93. package/dist/views/settings/AccessProtectionCard.d.ts.map +1 -1
  94. package/dist/views/settings/AccessProtectionCard.js +13 -10
  95. package/dist/views/settings/AccessProtectionCard.js.map +1 -1
  96. package/dist/views/settings/SecurityTab.d.ts.map +1 -1
  97. package/dist/views/settings/SecurityTab.js +3 -3
  98. package/dist/views/settings/SecurityTab.js.map +1 -1
  99. package/dist/views/settings/SessionPolicyCard.d.ts +1 -2
  100. package/dist/views/settings/SessionPolicyCard.d.ts.map +1 -1
  101. package/dist/views/settings/SessionPolicyCard.js +12 -5
  102. package/dist/views/settings/SessionPolicyCard.js.map +1 -1
  103. package/dist/views/settings/useSecuritySettings.d.ts +13 -1
  104. package/dist/views/settings/useSecuritySettings.d.ts.map +1 -1
  105. package/dist/views/settings/useSecuritySettings.js +47 -4
  106. package/dist/views/settings/useSecuritySettings.js.map +1 -1
  107. package/package.json +2 -2
  108. package/src/AdminRoot.tsx +36 -7
  109. package/src/__tests__/hooks/useIdleLogout.test.tsx +86 -0
  110. package/src/__tests__/lib/post-types-service.test.ts +112 -0
  111. package/src/__tests__/views/collection-list-nav.render.test.tsx +51 -5
  112. package/src/__tests__/views/forms-list.render.test.tsx +34 -6
  113. package/src/__tests__/views/page-builder-sections-panel.render.test.tsx +138 -0
  114. package/src/__tests__/views/page-templates.render.test.tsx +142 -0
  115. package/src/__tests__/views/post-type-editor.render.test.tsx +116 -0
  116. package/src/__tests__/views/security-settings.render.test.tsx +111 -4
  117. package/src/__tests__/views/seo-content-pane.render.test.tsx +142 -0
  118. package/src/components/collections/EntryDetailPane.tsx +182 -0
  119. package/src/components/forms/FieldsPanel.tsx +3 -1
  120. package/src/components/forms/FormSchemaPane.tsx +192 -0
  121. package/src/components/seo/SeoEditorPane.tsx +533 -0
  122. package/src/hooks/useIdleLogout.ts +77 -0
  123. package/src/lib/api.ts +8 -2
  124. package/src/lib/post-types-service.ts +129 -0
  125. package/src/views/CollectionList.tsx +158 -110
  126. package/src/views/Forms.tsx +154 -126
  127. package/src/views/Posts/PostTypeEditor.tsx +568 -0
  128. package/src/views/Posts/PostTypesView.tsx +5 -4
  129. package/src/views/page-builder/BuilderSectionsPanel.tsx +304 -0
  130. package/src/views/page-builder/PageBuilder.tsx +69 -2
  131. package/src/views/page-builder/PageTemplates.tsx +340 -57
  132. package/src/views/seo/ContentTab.tsx +113 -80
  133. package/src/views/settings/AccessProtectionCard.tsx +83 -53
  134. package/src/views/settings/SecurityTab.tsx +23 -2
  135. package/src/views/settings/SessionPolicyCard.tsx +45 -9
  136. package/src/views/settings/useSecuritySettings.ts +78 -22
  137. package/dist/components/forms/FormSchemaDrawer.d.ts +0 -9
  138. package/dist/components/forms/FormSchemaDrawer.d.ts.map +0 -1
  139. package/dist/components/forms/FormSchemaDrawer.js +0 -99
  140. package/dist/components/forms/FormSchemaDrawer.js.map +0 -1
  141. package/dist/components/seo/SeoEditorDrawer.d.ts +0 -8
  142. package/dist/components/seo/SeoEditorDrawer.d.ts.map +0 -1
  143. package/dist/components/seo/SeoEditorDrawer.js +0 -172
  144. package/dist/components/seo/SeoEditorDrawer.js.map +0 -1
  145. package/src/components/forms/FormSchemaDrawer.tsx +0 -192
  146. package/src/components/seo/SeoEditorDrawer.tsx +0 -529
@@ -1 +1 @@
1
- {"version":3,"file":"Forms.js","sourceRoot":"","sources":["../../src/views/Forms.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Forms.js","sourceRoot":"","sources":["../../src/views/Forms.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * /posts/types/:slug/edit — Post Type editor (design `TypeEditor`).
3
+ *
4
+ * Layout matches the design split: toolbar, 340px identity panel, field
5
+ * builder. Collections are file-defined in `actuate.config.ts`, so identity
6
+ * and the field list are the *live schema* rendered read-only, and "Add
7
+ * Field" emits a paste-ready config snippet instead of mutating a schema
8
+ * the server can't persist (same model as the New Post Type flow).
9
+ */
10
+ interface PostTypeEditorProps {
11
+ slug: string;
12
+ onNavigate: (path: string) => void;
13
+ }
14
+ export declare function PostTypeEditor({ slug, onNavigate }: PostTypeEditorProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=PostTypeEditor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostTypeEditor.d.ts","sourceRoot":"","sources":["../../../src/views/Posts/PostTypeEditor.tsx"],"names":[],"mappings":"AA2BA;;;;;;;;GAQG;AAEH,UAAU,mBAAmB;IAC3B,IAAI,EAAE,MAAM,CAAA;IACZ,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAgBD,wBAAgB,cAAc,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,EAAE,mBAAmB,2CAmEvE"}
@@ -0,0 +1,159 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ import { useEffect, useMemo, useState } from 'react';
4
+ import { Check, ChevronRight, Copy, ExternalLink, FileQuestion, LayoutTemplate, Lock, Plus, } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { fetchPosts } from '../../lib/posts-service.js';
7
+ import { fetchPostTypeDetail, fieldKeyFromName, fieldTypeLabel, humanizeFieldName, renderFieldSnippet, } from '../../lib/post-types-service.js';
8
+ import { paletteFor } from '../../components/posts/badges.js';
9
+ import { resolvePostTypeIcon } from '../../components/posts/icons.js';
10
+ import { Toggle } from '../../components/ui/Toggle.js';
11
+ const ADDABLE_FIELD_TYPES = [
12
+ { type: 'text', desc: 'Single line' },
13
+ { type: 'richText', desc: 'WYSIWYG' },
14
+ { type: 'number', desc: 'Int / decimal' },
15
+ { type: 'date', desc: 'Date & time' },
16
+ { type: 'boolean', desc: 'True / false' },
17
+ { type: 'url', desc: 'Web address' },
18
+ { type: 'email', desc: 'Email address' },
19
+ { type: 'select', desc: 'Dropdown' },
20
+ { type: 'media', desc: 'Image / file' },
21
+ { type: 'relationship', desc: 'Link to type' },
22
+ { type: 'json', desc: 'Raw data' },
23
+ ];
24
+ export function PostTypeEditor({ slug, onNavigate }) {
25
+ const [detail, setDetail] = useState(null);
26
+ const [postCount, setPostCount] = useState(null);
27
+ const [loading, setLoading] = useState(true);
28
+ const [error, setError] = useState(null);
29
+ const [notFound, setNotFound] = useState(false);
30
+ const [refreshToken, setRefreshToken] = useState(0);
31
+ useEffect(() => {
32
+ let cancelled = false;
33
+ setLoading(true);
34
+ setError(null);
35
+ setNotFound(false);
36
+ Promise.all([fetchPostTypeDetail(slug), fetchPosts({ pageSize: 1 }).catch(() => null)])
37
+ .then(([d, postsRes]) => {
38
+ if (cancelled)
39
+ return;
40
+ if (!d) {
41
+ setNotFound(true);
42
+ }
43
+ else {
44
+ setDetail(d);
45
+ const typeRow = postsRes?.types.find((t) => t.slug === slug);
46
+ setPostCount(typeRow?.postCount ?? null);
47
+ }
48
+ setLoading(false);
49
+ })
50
+ .catch((err) => {
51
+ if (cancelled)
52
+ return;
53
+ setError(err instanceof Error ? err.message : 'Failed to load post type');
54
+ setLoading(false);
55
+ });
56
+ return () => {
57
+ cancelled = true;
58
+ };
59
+ }, [slug, refreshToken]);
60
+ if (loading)
61
+ return _jsx(EditorSkeleton, {});
62
+ if (notFound) {
63
+ return (_jsx(CenteredNotice, { title: `No post type named "${slug}"`, body: "It may have been removed from actuate.config.ts.", actionLabel: "Back to Post Types", onAction: () => onNavigate('/posts/types') }));
64
+ }
65
+ if (error || !detail) {
66
+ return (_jsx(CenteredNotice, { title: error ?? 'Failed to load post type', actionLabel: "Try again", onAction: () => setRefreshToken((t) => t + 1) }));
67
+ }
68
+ return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx(EditorToolbar, { detail: detail, postCount: postCount, onNavigate: onNavigate }), _jsxs("div", { className: "flex min-h-0 flex-1 flex-col gap-6 overflow-y-auto p-4 sm:p-6 lg:flex-row lg:items-start lg:overflow-hidden", children: [_jsx(IdentityPanel, { detail: detail }), _jsx(FieldBuilder, { detail: detail })] })] }));
69
+ }
70
+ // ─── Toolbar ─────────────────────────────────────────────────────────
71
+ function EditorToolbar({ detail, postCount, onNavigate, }) {
72
+ const palette = paletteFor(detail.color);
73
+ return (_jsxs("div", { className: "border-border bg-card flex flex-wrap items-center gap-3 border-b px-4 py-3 sm:px-6", children: [_jsxs("nav", { "aria-label": "Breadcrumb", className: "flex min-w-0 items-center gap-1.5 text-sm", children: [_jsx("button", { type: "button", onClick: () => onNavigate('/posts/types'), className: "text-muted-foreground hover:text-foreground transition-colors", children: "Post Types" }), _jsx(ChevronRight, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0", "aria-hidden": true }), _jsx("span", { className: "text-foreground truncate font-medium", children: detail.plural })] }), postCount !== null && (_jsxs("span", { className: `inline-flex items-center rounded-full px-2 py-0.5 text-xs font-medium tabular-nums ${palette.bg} ${palette.text}`, children: [postCount, " ", postCount === 1 ? 'post' : 'posts'] })), _jsxs("div", { className: "ml-auto flex items-center gap-2", children: [_jsxs("button", { type: "button", onClick: () => onNavigate(`/posts/types/${detail.slug}/template`), className: "border-border text-foreground hover:bg-accent focus-visible:ring-ring inline-flex items-center gap-1.5 rounded-lg border px-3 py-1.5 text-sm font-medium transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(LayoutTemplate, { className: "h-3.5 w-3.5", "aria-hidden": true }), "Edit template"] }), _jsxs("button", { type: "button", onClick: () => onNavigate('/posts'), className: "bg-primary text-primary-foreground hover:bg-primary/90 focus-visible:ring-ring inline-flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-sm font-medium shadow-sm transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(ExternalLink, { className: "h-3.5 w-3.5", "aria-hidden": true }), "View posts"] })] })] }));
74
+ }
75
+ // ─── Identity panel (left, 340px) ────────────────────────────────────
76
+ function IdentityPanel({ detail }) {
77
+ const palette = paletteFor(detail.color);
78
+ const Icon = resolvePostTypeIcon(detail.icon);
79
+ return (_jsxs("aside", { "aria-label": "Post type identity", className: "flex w-full shrink-0 flex-col gap-5 lg:max-h-full lg:w-[340px] lg:overflow-y-auto", children: [_jsxs(IdentitySection, { title: "Identity", children: [_jsx(ReadOnlyField, { label: "Type Name", value: detail.plural }), _jsx(ReadOnlyField, { label: "API Slug", value: detail.slug, mono: true }), _jsx(ReadOnlyField, { label: "Description", value: detail.description ?? 'No description provided.' }), _jsxs("p", { className: "text-muted-foreground text-xs", children: ["Identity and fields are defined in ", _jsx("code", { className: "font-mono", children: "actuate.config.ts" }), ' ', "under ", _jsxs("code", { className: "font-mono", children: ["collections.", detail.slug] }), ". Edit the config and redeploy to change them."] })] }), _jsx(IdentitySection, { title: "Icon & color", children: _jsxs("div", { className: "flex items-center gap-3", children: [_jsx("span", { className: `inline-flex h-10 w-10 items-center justify-center rounded-lg ${palette.bg} ${palette.text}`, children: _jsx(Icon, { className: "h-5 w-5", "aria-hidden": true }) }), _jsxs("div", { className: "flex flex-col gap-0.5 text-sm", children: [_jsx("span", { className: "text-foreground font-medium", children: detail.icon ?? 'file-text' }), _jsxs("span", { className: "text-muted-foreground text-xs", children: ["Accent: ", detail.color ?? 'default'] })] })] }) }), _jsx(IdentitySection, { title: "API preview", children: _jsxs("div", { className: "border-border bg-muted flex flex-col gap-1.5 overflow-x-auto rounded-lg border p-3 font-mono text-xs", children: [_jsx(ApiRow, { method: "GET", path: `/api/cms/collections/${detail.slug}` }), _jsx(ApiRow, { method: "GET", path: `/api/cms/collections/${detail.slug}/{id}` }), _jsx(ApiRow, { method: "POST", path: `/api/cms/collections/${detail.slug}` })] }) })] }));
80
+ }
81
+ function IdentitySection({ title, children }) {
82
+ return (_jsxs("section", { className: "bg-card border-border flex flex-col gap-3 rounded-xl border p-5 shadow-sm", children: [_jsx("h2", { className: "text-muted-foreground text-xs font-medium tracking-wide uppercase", children: title }), children] }));
83
+ }
84
+ function ReadOnlyField({ label, value, mono }) {
85
+ return (_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("span", { className: "text-foreground text-sm font-medium", children: label }), _jsx("div", { className: `border-border bg-muted text-foreground rounded-lg border px-3 py-1.5 text-sm ${mono ? 'font-mono' : ''}`, children: value })] }));
86
+ }
87
+ function ApiRow({ method, path }) {
88
+ return (_jsxs("div", { className: "flex items-center gap-2 whitespace-nowrap", children: [_jsx("span", { className: `w-10 shrink-0 font-medium ${method === 'GET' ? 'text-success' : 'text-info'}`, children: method }), _jsx("span", { className: "text-muted-foreground", children: path })] }));
89
+ }
90
+ // ─── Field builder (right) ───────────────────────────────────────────
91
+ function FieldBuilder({ detail }) {
92
+ return (_jsxs("div", { className: "flex min-w-0 flex-1 flex-col gap-4 lg:max-h-full lg:overflow-y-auto", children: [_jsxs("div", { className: "flex flex-col gap-0.5", children: [_jsx("h2", { className: "text-foreground text-base font-medium", children: "Field Builder" }), _jsxs("p", { className: "text-muted-foreground text-sm", children: [detail.fields.length, " ", detail.fields.length === 1 ? 'field' : 'fields', " defined in", ' ', _jsx("code", { className: "font-mono", children: "actuate.config.ts" })] })] }), _jsx(FieldList, { detail: detail }), _jsx(AddFieldCard, { detail: detail })] }));
93
+ }
94
+ function FieldList({ detail }) {
95
+ return (_jsxs("div", { className: "bg-card border-border rounded-xl border shadow-sm", children: [_jsxs("div", { className: "border-border flex items-center gap-2 border-b px-4 py-3", children: [_jsx(Lock, { className: "text-muted-foreground h-3.5 w-3.5", "aria-hidden": true }), _jsx("span", { className: "text-foreground text-sm font-medium", children: "Fields" }), _jsxs("span", { className: "bg-muted text-muted-foreground ml-auto rounded-full px-2 py-0.5 text-xs font-medium", children: ["Defined in code \u00B7 ", detail.fields.length, " ", detail.fields.length === 1 ? 'field' : 'fields'] })] }), detail.fields.length === 0 ? (_jsx("p", { className: "text-muted-foreground px-4 py-6 text-center text-sm", children: "This type has no fields yet. Add one below." })) : (_jsx("ul", { className: "divide-border divide-y", children: detail.fields.map((f) => (_jsxs("li", { className: "flex items-center gap-3 px-4 py-2.5", children: [_jsx(Lock, { className: "text-muted-foreground h-3.5 w-3.5 shrink-0", "aria-hidden": true }), _jsxs("div", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: "text-foreground truncate text-sm font-medium", children: humanizeFieldName(f.name) }), _jsx("span", { className: "text-muted-foreground truncate font-mono text-xs", children: f.name })] }), _jsx("span", { className: "border-border text-muted-foreground ml-auto shrink-0 rounded-full border px-2 py-0.5 text-xs", children: fieldTypeLabel(f.type) }), _jsx("span", { className: `shrink-0 rounded-full px-2 py-0.5 text-xs font-medium ${f.required
96
+ ? 'bg-destructive/10 text-destructive'
97
+ : 'bg-muted text-muted-foreground'}`, children: f.required ? 'Required' : 'Optional' })] }, f.name))) }))] }));
98
+ }
99
+ // ─── Add Field (snippet generator) ───────────────────────────────────
100
+ function AddFieldCard({ detail }) {
101
+ const [open, setOpen] = useState(false);
102
+ const [fieldType, setFieldType] = useState(null);
103
+ const [name, setName] = useState('');
104
+ const [helpText, setHelpText] = useState('');
105
+ const [required, setRequired] = useState(false);
106
+ const [copied, setCopied] = useState(false);
107
+ const key = useMemo(() => fieldKeyFromName(name), [name]);
108
+ const existingKeys = useMemo(() => new Set(detail.fields.map((f) => f.name)), [detail.fields]);
109
+ const duplicate = key !== '' && existingKeys.has(key);
110
+ const snippet = useMemo(() => {
111
+ if (!fieldType || !key)
112
+ return '';
113
+ return renderFieldSnippet({
114
+ key,
115
+ label: name.trim() || humanizeFieldName(key),
116
+ type: fieldType,
117
+ required,
118
+ helpText,
119
+ });
120
+ }, [fieldType, key, name, required, helpText]);
121
+ const reset = () => {
122
+ setFieldType(null);
123
+ setName('');
124
+ setHelpText('');
125
+ setRequired(false);
126
+ setCopied(false);
127
+ };
128
+ const copy = async () => {
129
+ try {
130
+ await navigator.clipboard.writeText(snippet);
131
+ setCopied(true);
132
+ toast.success('Field snippet copied — paste it into the fields map');
133
+ setTimeout(() => setCopied(false), 1800);
134
+ }
135
+ catch {
136
+ toast.error('Copy failed — select the snippet manually');
137
+ }
138
+ };
139
+ if (!open) {
140
+ return (_jsxs("button", { type: "button", onClick: () => setOpen(true), className: "border-border text-muted-foreground hover:text-foreground hover:border-primary/50 hover:bg-primary/5 focus-visible:ring-ring flex items-center justify-center gap-2 rounded-xl border-2 border-dashed px-4 py-4 text-sm font-medium transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(Plus, { className: "h-4 w-4", "aria-hidden": true }), "Add Field"] }));
141
+ }
142
+ return (_jsxs("div", { className: "bg-card border-border flex flex-col gap-4 rounded-xl border p-5 shadow-sm", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsx("h3", { className: "text-foreground text-sm font-medium", children: "Add Field" }), _jsx("button", { type: "button", onClick: () => {
143
+ reset();
144
+ setOpen(false);
145
+ }, className: "text-muted-foreground hover:text-foreground text-sm transition-colors", children: "Cancel" })] }), _jsx("div", { role: "radiogroup", "aria-label": "Field type", className: "grid grid-cols-2 gap-2 sm:grid-cols-3 xl:grid-cols-4", children: ADDABLE_FIELD_TYPES.map((t) => {
146
+ const selected = fieldType === t.type;
147
+ return (_jsxs("button", { type: "button", role: "radio", "aria-checked": selected, onClick: () => setFieldType(t.type), className: `focus-visible:ring-ring flex flex-col items-start gap-0.5 rounded-lg border p-2.5 text-left transition-colors focus:outline-none focus-visible:ring-2 ${selected
148
+ ? 'border-primary bg-primary/5'
149
+ : 'border-border hover:border-primary/40 hover:bg-accent'}`, children: [_jsx("span", { className: "text-foreground text-sm font-medium", children: fieldTypeLabel(t.type) }), _jsx("span", { className: "text-muted-foreground text-xs", children: t.desc })] }, t.type));
150
+ }) }), fieldType && (_jsxs(_Fragment, { children: [_jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [_jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { htmlFor: "af-name", className: "text-foreground text-sm font-medium", children: "Field Name" }), _jsx("input", { id: "af-name", value: name, onChange: (e) => setName(e.target.value), placeholder: "e.g. Client Name", className: "border-border bg-background text-foreground focus:border-primary focus:ring-primary/30 w-full rounded-lg border px-3 py-1.5 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { htmlFor: "af-key", className: "text-foreground text-sm font-medium", children: "Field Key" }), _jsx("input", { id: "af-key", value: key, readOnly: true, "aria-describedby": duplicate ? 'af-key-error' : undefined, className: "border-border bg-muted text-muted-foreground w-full rounded-lg border px-3 py-1.5 font-mono text-sm focus:outline-none" }), duplicate && (_jsxs("span", { id: "af-key-error", className: "text-destructive text-xs", children: ["A field named ", _jsx("code", { className: "font-mono", children: key }), " already exists on this type."] }))] })] }), _jsxs("div", { className: "flex flex-col gap-1", children: [_jsx("label", { htmlFor: "af-help", className: "text-foreground text-sm font-medium", children: "Help Text (optional)" }), _jsx("input", { id: "af-help", value: helpText, onChange: (e) => setHelpText(e.target.value), placeholder: "Shown to editors as a hint", className: "border-border bg-background text-foreground focus:border-primary focus:ring-primary/30 w-full rounded-lg border px-3 py-1.5 text-sm focus:ring-2 focus:outline-none" })] }), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Toggle, { id: "af-required", checked: required, onCheckedChange: setRequired, "aria-labelledby": "af-required-label" }), _jsx("label", { id: "af-required-label", htmlFor: "af-required", className: "text-foreground text-sm", children: "Required field" })] }), snippet && !duplicate && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center justify-between", children: [_jsxs("span", { className: "text-foreground text-sm font-medium", children: ["Add to ", _jsxs("code", { className: "font-mono", children: ["collections.", detail.slug, ".fields"] })] }), _jsxs("button", { type: "button", onClick: copy, className: "border-border bg-background text-foreground hover:bg-accent inline-flex items-center gap-1.5 rounded-md border px-2.5 py-1 text-xs font-medium transition-colors", children: [copied ? (_jsx(Check, { className: "h-3.5 w-3.5", "aria-hidden": true })) : (_jsx(Copy, { className: "h-3.5 w-3.5", "aria-hidden": true })), copied ? 'Copied' : 'Copy snippet'] })] }), _jsx("pre", { className: "border-border bg-muted text-foreground overflow-x-auto rounded-lg border p-3 text-xs leading-relaxed", children: _jsx("code", { children: snippet }) }), _jsxs("p", { className: "text-muted-foreground text-xs", children: ["Paste the line into the type's ", _jsx("code", { className: "font-mono", children: "fields" }), " map in", ' ', _jsx("code", { className: "font-mono", children: "actuate.config.ts" }), " and redeploy \u2014 the field appears in the editor automatically."] })] }))] }))] }));
151
+ }
152
+ // ─── Loading / notice states ─────────────────────────────────────────
153
+ function EditorSkeleton() {
154
+ return (_jsxs("div", { className: "flex h-full flex-col", children: [_jsx("div", { className: "border-border bg-card border-b px-4 py-3 sm:px-6", children: _jsx("div", { className: "bg-muted h-5 w-48 animate-pulse rounded" }) }), _jsxs("div", { className: "flex flex-col gap-6 p-4 sm:p-6 lg:flex-row", children: [_jsx("div", { className: "flex w-full flex-col gap-4 lg:w-[340px]", children: Array.from({ length: 3 }).map((_, i) => (_jsx("div", { className: "bg-card border-border h-32 animate-pulse rounded-xl border" }, i))) }), _jsx("div", { className: "bg-card border-border h-64 flex-1 animate-pulse rounded-xl border" })] })] }));
155
+ }
156
+ function CenteredNotice({ title, body, actionLabel, onAction, }) {
157
+ return (_jsxs("div", { className: "flex h-full flex-col items-center justify-center gap-2 p-8 text-center", children: [_jsx(FileQuestion, { className: "text-muted-foreground h-6 w-6", "aria-hidden": true }), _jsx("div", { className: "text-foreground text-sm font-medium", children: title }), body && _jsx("p", { className: "text-muted-foreground text-sm", children: body }), _jsx("button", { type: "button", onClick: onAction, className: "text-primary mt-2 text-sm font-medium hover:underline", children: actionLabel })] }));
158
+ }
159
+ //# sourceMappingURL=PostTypeEditor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PostTypeEditor.js","sourceRoot":"","sources":["../../../src/views/Posts/PostTypeEditor.tsx"],"names":[],"mappings":"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"}
@@ -6,8 +6,9 @@
6
6
  * - title + description
7
7
  * - footer row: post count · field count · URL base
8
8
  *
9
- * Clicking a card opens that type's settings (`/posts/types/:slug/edit`);
10
- * each card also has an "Edit Template" action (`/posts/types/:slug/template`)
9
+ * Clicking a card opens the Post Type editor (`/posts/types/:slug/edit`)
10
+ * identity, live field schema, and the Add Field snippet generator. Each
11
+ * card also has an "Edit Template" action (`/posts/types/:slug/template`)
11
12
  * for the type's default layout. The dashed "+ New Post Type" card routes to
12
13
  * `/posts/types/new`, where users get instructions for adding a new collection
13
14
  * to the config file.
@@ -1 +1 @@
1
- {"version":3,"file":"PostTypesView.d.ts","sourceRoot":"","sources":["../../../src/views/Posts/PostTypesView.tsx"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;GAoBG;AAEH,UAAU,kBAAkB;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAgE/D"}
1
+ {"version":3,"file":"PostTypesView.d.ts","sourceRoot":"","sources":["../../../src/views/Posts/PostTypesView.tsx"],"names":[],"mappings":"AAQA;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,UAAU,kBAAkB;IAC1B,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAED,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,EAAE,kBAAkB,2CAgE/D"}
@@ -41,7 +41,7 @@ function PostTypeCard({ type, onClick, onEditTemplate, }) {
41
41
  // top-border color from the palette's `border` token directly so it
42
42
  // stays in sync with the badge color.
43
43
  const topBorderClass = palette.border;
44
- return (_jsxs("div", { className: "bg-card border-border relative flex flex-col gap-3 overflow-hidden rounded-xl border p-5 shadow-sm transition-shadow hover:shadow-md", children: [_jsx("span", { "aria-hidden": true, className: `absolute inset-x-0 top-0 h-1 ${topBorderClass}` }), _jsxs("button", { type: "button", onClick: onClick, "aria-label": `Manage ${type.name} posts`, className: "focus-visible:ring-ring -m-1 flex flex-col gap-3 rounded-lg p-1 text-left focus:outline-none focus-visible:ring-2", children: [_jsxs("div", { className: "flex items-center gap-3 pt-2", children: [_jsx("span", { className: `inline-flex h-9 w-9 items-center justify-center rounded-lg ${palette.bg} ${palette.text}`, children: _jsx(Icon, { className: "h-4 w-4", "aria-hidden": true }) }), _jsx("h2", { className: "text-foreground text-base leading-tight font-medium", children: type.name })] }), _jsx("p", { className: "text-muted-foreground line-clamp-2 text-sm", children: type.description ?? 'No description provided.' })] }), _jsxs("div", { className: "border-border mt-auto flex flex-wrap items-center gap-x-4 gap-y-1 border-t pt-3 text-xs", children: [_jsxs("span", { className: "text-foreground font-medium tabular-nums", children: [type.postCount, " ", _jsx("span", { className: "text-muted-foreground font-normal", children: "posts" })] }), _jsxs("span", { className: "text-foreground font-medium tabular-nums", children: [type.fieldCount, " ", _jsx("span", { className: "text-muted-foreground font-normal", children: "fields" })] }), _jsx("span", { className: "text-muted-foreground ml-auto truncate font-mono", children: type.urlBase })] }), _jsxs("button", { type: "button", onClick: onEditTemplate, className: "border-border text-foreground hover:bg-accent focus-visible:ring-ring inline-flex items-center justify-center gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(LayoutTemplate, { className: "h-3.5 w-3.5", "aria-hidden": true }), "Edit template"] })] }));
44
+ return (_jsxs("div", { className: "bg-card border-border relative flex flex-col gap-3 overflow-hidden rounded-xl border p-5 shadow-sm transition-shadow hover:shadow-md", children: [_jsx("span", { "aria-hidden": true, className: `absolute inset-x-0 top-0 h-1 ${topBorderClass}` }), _jsxs("button", { type: "button", onClick: onClick, "aria-label": `Edit ${type.name} post type`, className: "focus-visible:ring-ring -m-1 flex flex-col gap-3 rounded-lg p-1 text-left focus:outline-none focus-visible:ring-2", children: [_jsxs("div", { className: "flex items-center gap-3 pt-2", children: [_jsx("span", { className: `inline-flex h-9 w-9 items-center justify-center rounded-lg ${palette.bg} ${palette.text}`, children: _jsx(Icon, { className: "h-4 w-4", "aria-hidden": true }) }), _jsx("h2", { className: "text-foreground text-base leading-tight font-medium", children: type.name })] }), _jsx("p", { className: "text-muted-foreground line-clamp-2 text-sm", children: type.description ?? 'No description provided.' })] }), _jsxs("div", { className: "border-border mt-auto flex flex-wrap items-center gap-x-4 gap-y-1 border-t pt-3 text-xs", children: [_jsxs("span", { className: "text-foreground font-medium tabular-nums", children: [type.postCount, " ", _jsx("span", { className: "text-muted-foreground font-normal", children: "posts" })] }), _jsxs("span", { className: "text-foreground font-medium tabular-nums", children: [type.fieldCount, " ", _jsx("span", { className: "text-muted-foreground font-normal", children: "fields" })] }), _jsx("span", { className: "text-muted-foreground ml-auto truncate font-mono", children: type.urlBase })] }), _jsxs("button", { type: "button", onClick: onEditTemplate, className: "border-border text-foreground hover:bg-accent focus-visible:ring-ring inline-flex items-center justify-center gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs font-medium transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx(LayoutTemplate, { className: "h-3.5 w-3.5", "aria-hidden": true }), "Edit template"] })] }));
45
45
  }
46
46
  function NewPostTypeCard({ onClick }) {
47
47
  return (_jsxs("button", { type: "button", onClick: onClick, "aria-label": "New Post Type", className: "border-border text-muted-foreground hover:text-foreground hover:border-primary/50 hover:bg-primary/5 focus-visible:ring-ring flex min-h-[170px] flex-col items-center justify-center gap-2 rounded-xl border-2 border-dashed bg-transparent p-5 transition-colors focus:outline-none focus-visible:ring-2", children: [_jsx("span", { className: "bg-muted text-muted-foreground inline-flex h-9 w-9 items-center justify-center rounded-full", children: _jsx(Plus, { className: "h-4 w-4", "aria-hidden": true }) }), _jsx("span", { className: "text-sm font-medium", children: "New Post Type" })] }));
@@ -1 +1 @@
1
- {"version":3,"file":"PostTypesView.js","sourceRoot":"","sources":["../../../src/views/Posts/PostTypesView.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PostTypesView.js","sourceRoot":"","sources":["../../../src/views/Posts/PostTypesView.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { PageNode } from '@actuate-media/cms-core';
2
+ export interface BuilderSectionsPanelProps {
3
+ tree: PageNode;
4
+ selectedNodeId: string | null;
5
+ /** Collapsed to a slim rail. State is owned by PageBuilder (persisted). */
6
+ collapsed: boolean;
7
+ onToggleCollapsed: () => void;
8
+ onSelect: (id: string) => void;
9
+ /** Move a top-level section to `toIndex` within the page. */
10
+ onReorder: (id: string, toIndex: number) => void;
11
+ onAddSection: () => void;
12
+ }
13
+ /**
14
+ * Design-parity left rail for the Page Builder (PageBuilder.html): the page's
15
+ * sections listed in order with drag-to-reorder, click-to-select (which
16
+ * highlights the section on the canvas and opens its settings in the existing
17
+ * right-hand context panel), and an "Add Section" affordance at the bottom.
18
+ */
19
+ export declare function BuilderSectionsPanel({ tree, selectedNodeId, collapsed, onToggleCollapsed, onSelect, onReorder, onAddSection, }: BuilderSectionsPanelProps): import("react/jsx-runtime").JSX.Element;
20
+ //# sourceMappingURL=BuilderSectionsPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuilderSectionsPanel.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/BuilderSectionsPanel.tsx"],"names":[],"mappings":"AAuCA,OAAO,KAAK,EAAe,QAAQ,EAAE,MAAM,yBAAyB,CAAA;AAEpE,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,QAAQ,CAAA;IACd,cAAc,EAAE,MAAM,GAAG,IAAI,CAAA;IAC7B,2EAA2E;IAC3E,SAAS,EAAE,OAAO,CAAA;IAClB,iBAAiB,EAAE,MAAM,IAAI,CAAA;IAC7B,QAAQ,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,IAAI,CAAA;IAC9B,6DAA6D;IAC7D,SAAS,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,CAAA;IAChD,YAAY,EAAE,MAAM,IAAI,CAAA;CACzB;AA0ED;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,EACnC,IAAI,EACJ,cAAc,EACd,SAAS,EACT,iBAAiB,EACjB,QAAQ,EACR,SAAS,EACT,YAAY,GACb,EAAE,yBAAyB,2CAsG3B"}
@@ -0,0 +1,105 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useMemo } from 'react';
4
+ import { DndContext, KeyboardSensor, PointerSensor, closestCenter, useSensor, useSensors, } from '@dnd-kit/core';
5
+ import { SortableContext, sortableKeyboardCoordinates, useSortable, verticalListSortingStrategy, } from '@dnd-kit/sortable';
6
+ import { CSS } from '@dnd-kit/utilities';
7
+ import { Bookmark, Code, FileText, Grid, GripVertical, HelpCircle, Image, LayoutGrid, LayoutTemplate, MousePointer, PanelLeftClose, PanelLeftOpen, Play, Plus, Star, Type, } from 'lucide-react';
8
+ import { BlockCatalog } from '@actuate-media/cms-core/page-builder';
9
+ /** Same icon-name → component mapping the BlockPicker uses for the catalog. */
10
+ const BLOCK_ICONS = {
11
+ Star,
12
+ Type,
13
+ Image,
14
+ LayoutGrid,
15
+ MousePointer,
16
+ Play,
17
+ Grid,
18
+ HelpCircle,
19
+ FileText,
20
+ Code,
21
+ };
22
+ function collectBlockTypes(node, out) {
23
+ if (node.type === 'block') {
24
+ out.push(node.settings.blockType);
25
+ return;
26
+ }
27
+ if (node.type === 'savedSectionRef')
28
+ return;
29
+ for (const child of node.children)
30
+ collectBlockTypes(child, out);
31
+ }
32
+ function humanize(type) {
33
+ return type.charAt(0).toUpperCase() + type.slice(1);
34
+ }
35
+ /**
36
+ * Builder sections have no user-facing title, so each row derives its name
37
+ * from the section's first block (via the catalog label) and summarizes its
38
+ * contents as the kind label — enough for the editor to recognize and jump
39
+ * between sections without inventing data we don't store.
40
+ */
41
+ function buildEntries(tree, catalog) {
42
+ return tree.children.map((node, index) => {
43
+ if (node.type === 'savedSectionRef') {
44
+ return {
45
+ id: node.id,
46
+ name: 'Saved section',
47
+ meta: 'From the section library',
48
+ icon: Bookmark,
49
+ hidden: false,
50
+ };
51
+ }
52
+ const blockTypes = [];
53
+ collectBlockTypes(node, blockTypes);
54
+ const firstType = blockTypes[0];
55
+ const def = firstType ? catalog.get(firstType) : undefined;
56
+ return {
57
+ id: node.id,
58
+ name: def?.label ?? (firstType ? humanize(firstType) : `Section ${index + 1}`),
59
+ meta: blockTypes.length === 0
60
+ ? 'Empty section'
61
+ : `${blockTypes.length} block${blockTypes.length === 1 ? '' : 's'}`,
62
+ icon: (def && BLOCK_ICONS[def.icon]) ?? LayoutTemplate,
63
+ hidden: node.settings.visibility === 'hidden',
64
+ };
65
+ });
66
+ }
67
+ const ICON_BUTTON_CLASS = 'flex h-8 w-8 items-center justify-center rounded-[7px] text-[var(--sub)] transition-colors duration-[var(--motion-fast)] hover:bg-[var(--acc-l)] hover:text-[var(--acc)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none';
68
+ /**
69
+ * Design-parity left rail for the Page Builder (PageBuilder.html): the page's
70
+ * sections listed in order with drag-to-reorder, click-to-select (which
71
+ * highlights the section on the canvas and opens its settings in the existing
72
+ * right-hand context panel), and an "Add Section" affordance at the bottom.
73
+ */
74
+ export function BuilderSectionsPanel({ tree, selectedNodeId, collapsed, onToggleCollapsed, onSelect, onReorder, onAddSection, }) {
75
+ const catalog = useMemo(() => new BlockCatalog(), []);
76
+ const entries = useMemo(() => buildEntries(tree, catalog), [tree, catalog]);
77
+ const sensors = useSensors(useSensor(PointerSensor, { activationConstraint: { distance: 4 } }), useSensor(KeyboardSensor, { coordinateGetter: sortableKeyboardCoordinates }));
78
+ function handleDragEnd(event) {
79
+ const { active, over } = event;
80
+ if (!over || active.id === over.id)
81
+ return;
82
+ const ids = entries.map((e) => e.id);
83
+ const to = ids.indexOf(String(over.id));
84
+ if (to === -1 || !ids.includes(String(active.id)))
85
+ return;
86
+ onReorder(String(active.id), to);
87
+ }
88
+ if (collapsed) {
89
+ return (_jsx("nav", { "aria-label": "Page sections", className: "flex w-11 shrink-0 flex-col items-center border-r border-[var(--bdr)] bg-[var(--sb)] py-2", children: _jsx("button", { type: "button", onClick: onToggleCollapsed, "aria-expanded": false, "aria-label": "Expand sections panel", className: ICON_BUTTON_CLASS, children: _jsx(PanelLeftOpen, { size: 16, "aria-hidden": true }) }) }));
90
+ }
91
+ return (_jsxs("nav", { "aria-label": "Page sections", className: "flex w-[280px] shrink-0 flex-col overflow-hidden border-r border-[var(--bdr)] bg-[var(--sb)]", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-[var(--bdr)] py-2 pr-2 pl-3.5", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx("h2", { className: "text-[13px] font-medium text-[var(--txt)]", children: "Sections" }), _jsx("span", { className: "rounded-[4px] bg-[var(--acc-l)] px-[7px] py-0.5 text-[11px] font-medium text-[var(--acc)] tabular-nums", children: entries.length })] }), _jsx("button", { type: "button", onClick: onToggleCollapsed, "aria-expanded": true, "aria-label": "Collapse sections panel", className: ICON_BUTTON_CLASS, children: _jsx(PanelLeftClose, { size: 16, "aria-hidden": true }) })] }), _jsx("div", { className: "flex-1 overflow-y-auto", children: entries.length === 0 ? (_jsx("p", { className: "px-4 py-6 text-center text-[12.5px] text-[var(--muted)]", children: "No sections yet. Add one below to start building." })) : (_jsx(DndContext, { sensors: sensors, collisionDetection: closestCenter, onDragEnd: handleDragEnd, children: _jsx(SortableContext, { items: entries.map((e) => e.id), strategy: verticalListSortingStrategy, children: _jsx("ul", { "aria-label": "Sections in page order", children: entries.map((entry) => (_jsx(SortableSectionRow, { entry: entry, selected: entry.id === selectedNodeId, onSelect: onSelect }, entry.id))) }) }) })) }), _jsx("div", { className: "border-t border-[var(--bdr)]", children: _jsxs("button", { type: "button", onClick: onAddSection, className: "flex w-full items-center gap-2 px-3.5 py-3 text-[13px] font-medium text-[var(--acc)] transition-colors duration-[var(--motion-fast)] hover:bg-[var(--acc-l)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none focus-visible:ring-inset", children: [_jsx(Plus, { size: 14, "aria-hidden": true }), "Add Section"] }) })] }));
92
+ }
93
+ function SortableSectionRow({ entry, selected, onSelect }) {
94
+ const { attributes, listeners, setNodeRef, transform, transition, isDragging } = useSortable({
95
+ id: entry.id,
96
+ });
97
+ const Icon = entry.icon;
98
+ const style = {
99
+ transform: CSS.Transform.toString(transform),
100
+ transition,
101
+ zIndex: isDragging ? 10 : undefined,
102
+ };
103
+ return (_jsx("li", { ref: setNodeRef, style: style, className: isDragging ? 'shadow-[var(--shd2)]' : undefined, children: _jsxs("div", { className: `flex items-center gap-1.5 border-b border-[var(--bdr)] py-2 pr-2.5 pl-1.5 transition-colors duration-[var(--motion-fast)] ${selected ? 'bg-[var(--acc-l)]' : 'hover:bg-[var(--acc-l)]'}`, children: [_jsx("button", { type: "button", "aria-label": `Drag to reorder ${entry.name}`, ...attributes, ...listeners, className: "shrink-0 cursor-grab touch-none rounded p-1 text-[var(--muted)] transition-colors duration-[var(--motion-fast)] hover:text-[var(--acc)] focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none active:cursor-grabbing", children: _jsx(GripVertical, { size: 15, "aria-hidden": true }) }), _jsxs("button", { type: "button", onClick: () => onSelect(entry.id), "aria-current": selected ? 'true' : undefined, className: "flex min-w-0 flex-1 items-center gap-2.5 rounded text-left focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none", children: [_jsx("span", { "aria-hidden": true, className: "flex h-7 w-7 shrink-0 items-center justify-center rounded-[7px] bg-[var(--acc-l)] text-[var(--acc)]", children: _jsx(Icon, { size: 14 }) }), _jsxs("span", { className: "flex min-w-0 flex-col", children: [_jsx("span", { className: `truncate text-[13px] font-medium ${entry.hidden ? 'text-[var(--muted)] line-through' : 'text-[var(--txt)]'}`, children: entry.name }), _jsx("span", { className: "truncate text-[11px] text-[var(--muted)]", children: entry.meta })] })] })] }) }));
104
+ }
105
+ //# sourceMappingURL=BuilderSectionsPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BuilderSectionsPanel.js","sourceRoot":"","sources":["../../../src/views/page-builder/BuilderSectionsPanel.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"PageBuilder.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/PageBuilder.tsx"],"names":[],"mappings":"AAoBA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,GAAG,CAAA;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AAUD,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,gBAAgB,2CA8Q/F"}
1
+ {"version":3,"file":"PageBuilder.d.ts","sourceRoot":"","sources":["../../../src/views/page-builder/PageBuilder.tsx"],"names":[],"mappings":"AAqBA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,EAAE,MAAM,CAAA;IACtB,MAAM,EAAE,GAAG,CAAA;IACX,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACnC;AA+BD,wBAAgB,WAAW,CAAC,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,EAAE,UAAU,EAAE,EAAE,gBAAgB,2CA2T/F"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { useState, useEffect, useCallback } from 'react';
3
+ import { useState, useEffect, useCallback, useRef } from 'react';
4
4
  import { Loader2, AlertTriangle } from 'lucide-react';
5
5
  import { toast } from 'sonner';
6
6
  import { cmsApi } from '../../lib/api.js';
@@ -9,6 +9,7 @@ import { useBuilderState, } from '../../hooks/useBuilderState.js';
9
9
  import { BuilderToolbar } from './BuilderToolbar.js';
10
10
  import { BottomBar } from './BottomBar.js';
11
11
  import { BuilderCanvas } from './canvas/index.js';
12
+ import { BuilderSectionsPanel } from './BuilderSectionsPanel.js';
12
13
  import { ContextPanel } from './ContextPanel.js';
13
14
  import { AIGenerateDialog } from './AIGenerateDialog.js';
14
15
  const DEVICE_WIDTHS = {
@@ -16,12 +17,36 @@ const DEVICE_WIDTHS = {
16
17
  tablet: '768px',
17
18
  mobile: '375px',
18
19
  };
20
+ const SECTIONS_PANEL_KEY = 'actuate-builder-sections-panel';
21
+ /**
22
+ * Left sections panel default: open on wide viewports (≥1280px), collapsed
23
+ * below so the canvas keeps room. An explicit user choice, persisted in
24
+ * localStorage, always wins over the breakpoint default.
25
+ */
26
+ function initialSectionsCollapsed() {
27
+ try {
28
+ const stored = localStorage.getItem(SECTIONS_PANEL_KEY);
29
+ if (stored === 'open')
30
+ return false;
31
+ if (stored === 'collapsed')
32
+ return true;
33
+ }
34
+ catch {
35
+ /* localStorage unavailable — fall through to the breakpoint default */
36
+ }
37
+ if (typeof window !== 'undefined') {
38
+ return window.innerWidth < 1280;
39
+ }
40
+ return false;
41
+ }
19
42
  export function PageBuilder({ documentId, collectionSlug, config, onNavigate }) {
20
43
  const [loading, setLoading] = useState(!!documentId);
21
44
  const [loadError, setLoadError] = useState(null);
22
45
  const [saving, setSaving] = useState(false);
23
46
  const [status, setStatus] = useState('DRAFT');
24
47
  const [aiDialogOpen, setAiDialogOpen] = useState(false);
48
+ const [sectionsCollapsed, setSectionsCollapsed] = useState(initialSectionsCollapsed);
49
+ const canvasRef = useRef(null);
25
50
  const builder = useBuilderState();
26
51
  const { tree, pageSettings, deviceMode, dirty, canUndo, canRedo, selectedNodeId, selectedNode, activeTab, showGridOverlay, selectNode, setDeviceMode, setActiveTab, setPageSettings, setShowGridOverlay, addSection, addRowToSection, addBlockToColumn, addNodeAtId, removeNodeById, moveNodeById, updateSettings, updateBlock, duplicateNode, moveNodeUp, moveNodeDown, undo, redo, markClean, replaceTree, } = builder;
27
52
  useEffect(() => {
@@ -115,6 +140,30 @@ export function PageBuilder({ documentId, collectionSlug, config, onNavigate })
115
140
  const handleAIAccept = useCallback((generatedTree) => {
116
141
  replaceTree(generatedTree);
117
142
  }, [replaceTree]);
143
+ const toggleSectionsPanel = useCallback(() => {
144
+ setSectionsCollapsed((prev) => {
145
+ const next = !prev;
146
+ try {
147
+ localStorage.setItem(SECTIONS_PANEL_KEY, next ? 'collapsed' : 'open');
148
+ }
149
+ catch {
150
+ /* localStorage unavailable — the choice just won't persist */
151
+ }
152
+ return next;
153
+ });
154
+ }, []);
155
+ // Selecting from the left panel highlights the section on the canvas (the
156
+ // canvas already outlines the selected node) and opens its settings in the
157
+ // right-hand context panel, then scrolls the section into view.
158
+ const handlePanelSelect = useCallback((id) => {
159
+ selectNode(id);
160
+ canvasRef.current
161
+ ?.querySelector(`[data-node-id="${CSS.escape(id)}"]`)
162
+ ?.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
163
+ }, [selectNode]);
164
+ const handlePanelReorder = useCallback((id, toIndex) => {
165
+ moveNodeById(id, tree.id, toIndex);
166
+ }, [moveNodeById, tree.id]);
118
167
  if (loading) {
119
168
  return (_jsx("div", { className: "bg-background flex h-full items-center justify-center", children: _jsx(Loader2, { className: "text-muted-foreground animate-spin", size: 24 }) }));
120
169
  }
@@ -143,6 +192,6 @@ export function PageBuilder({ documentId, collectionSlug, config, onNavigate })
143
192
  ...previewStyle,
144
193
  fontFamily: previewTheme.fontFamily ?? undefined,
145
194
  };
146
- return (_jsxs(ErrorBoundary, { children: [_jsxs("div", { className: "bg-background flex h-full flex-col overflow-hidden", children: [_jsx(BuilderToolbar, { collectionSlug: collectionSlug, pageSettings: pageSettings, status: status, dirty: dirty, saving: saving, canUndo: canUndo, canRedo: canRedo, deviceMode: deviceMode, onNavigate: onNavigate, onTitleChange: (title) => setPageSettings({ title }), onUndo: undo, onRedo: redo, onDeviceMode: setDeviceMode, onSave: handleSave, onPublish: handlePublish, onOpenAI: () => setAiDialogOpen(true) }), _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [_jsx("div", { className: "bg-muted flex-1 overflow-auto", children: _jsx("div", { className: "mx-auto h-full max-w-full transition-all duration-200", style: { width: canvasWidth }, children: _jsx("div", { className: `bg-background page-builder-canvas-shell h-full ${isConstrained ? 'border-border border-x shadow-lg' : ''}`, style: canvasShellStyle, children: _jsx(BuilderCanvas, { tree: tree, selectedNodeId: selectedNodeId, showGridOverlay: showGridOverlay, deviceMode: deviceMode, onSelectNode: selectNode }) }) }) }), _jsx("div", { className: "border-border bg-card w-[35%] max-w-[420px] min-w-[280px] overflow-y-auto border-l", children: _jsx(ContextPanel, { activeTab: activeTab, onTabChange: setActiveTab, selectedNode: selectedNode, tree: tree, pageSettings: pageSettings, onUpdateSettings: updateSettings, onUpdateBlock: updateBlock, onRemoveNode: removeNodeById, onDuplicateNode: duplicateNode, onMoveNodeUp: moveNodeUp, onMoveNodeDown: moveNodeDown, onPageSettingsChange: setPageSettings, onAddRow: addRowToSection, config: config }) })] }), _jsx(BottomBar, { deviceMode: deviceMode, showGridOverlay: showGridOverlay, onAddSection: addSection, onToggleGrid: setShowGridOverlay })] }), _jsx(AIGenerateDialog, { open: aiDialogOpen, onClose: () => setAiDialogOpen(false), onAccept: handleAIAccept })] }));
195
+ return (_jsxs(ErrorBoundary, { children: [_jsxs("div", { className: "bg-background flex h-full flex-col overflow-hidden", children: [_jsx(BuilderToolbar, { collectionSlug: collectionSlug, pageSettings: pageSettings, status: status, dirty: dirty, saving: saving, canUndo: canUndo, canRedo: canRedo, deviceMode: deviceMode, onNavigate: onNavigate, onTitleChange: (title) => setPageSettings({ title }), onUndo: undo, onRedo: redo, onDeviceMode: setDeviceMode, onSave: handleSave, onPublish: handlePublish, onOpenAI: () => setAiDialogOpen(true) }), _jsxs("div", { className: "flex flex-1 overflow-hidden", children: [_jsx(BuilderSectionsPanel, { tree: tree, selectedNodeId: selectedNodeId, collapsed: sectionsCollapsed, onToggleCollapsed: toggleSectionsPanel, onSelect: handlePanelSelect, onReorder: handlePanelReorder, onAddSection: addSection }), _jsx("div", { ref: canvasRef, className: "bg-muted flex-1 overflow-auto", children: _jsx("div", { className: "mx-auto h-full max-w-full transition-all duration-200", style: { width: canvasWidth }, children: _jsx("div", { className: `bg-background page-builder-canvas-shell h-full ${isConstrained ? 'border-border border-x shadow-lg' : ''}`, style: canvasShellStyle, children: _jsx(BuilderCanvas, { tree: tree, selectedNodeId: selectedNodeId, showGridOverlay: showGridOverlay, deviceMode: deviceMode, onSelectNode: selectNode }) }) }) }), _jsx("div", { className: "border-border bg-card w-[35%] max-w-[420px] min-w-[280px] overflow-y-auto border-l", children: _jsx(ContextPanel, { activeTab: activeTab, onTabChange: setActiveTab, selectedNode: selectedNode, tree: tree, pageSettings: pageSettings, onUpdateSettings: updateSettings, onUpdateBlock: updateBlock, onRemoveNode: removeNodeById, onDuplicateNode: duplicateNode, onMoveNodeUp: moveNodeUp, onMoveNodeDown: moveNodeDown, onPageSettingsChange: setPageSettings, onAddRow: addRowToSection, config: config }) })] }), _jsx(BottomBar, { deviceMode: deviceMode, showGridOverlay: showGridOverlay, onAddSection: addSection, onToggleGrid: setShowGridOverlay })] }), _jsx(AIGenerateDialog, { open: aiDialogOpen, onClose: () => setAiDialogOpen(false), onAccept: handleAIAccept })] }));
147
196
  }
148
197
  //# sourceMappingURL=PageBuilder.js.map