@actuate-media/cms-admin 0.21.0 → 0.22.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 (71) hide show
  1. package/dist/AdminRoot.d.ts.map +1 -1
  2. package/dist/AdminRoot.js +24 -0
  3. package/dist/AdminRoot.js.map +1 -1
  4. package/dist/__tests__/layout/sidebar-forms-badge.render.test.d.ts +2 -0
  5. package/dist/__tests__/layout/sidebar-forms-badge.render.test.d.ts.map +1 -0
  6. package/dist/__tests__/layout/sidebar-forms-badge.render.test.js +30 -0
  7. package/dist/__tests__/layout/sidebar-forms-badge.render.test.js.map +1 -0
  8. package/dist/__tests__/layout/sidebar-submenu.render.test.d.ts +2 -0
  9. package/dist/__tests__/layout/sidebar-submenu.render.test.d.ts.map +1 -0
  10. package/dist/__tests__/layout/sidebar-submenu.render.test.js +66 -0
  11. package/dist/__tests__/layout/sidebar-submenu.render.test.js.map +1 -0
  12. package/dist/__tests__/views/forms-list.render.test.d.ts +2 -0
  13. package/dist/__tests__/views/forms-list.render.test.d.ts.map +1 -0
  14. package/dist/__tests__/views/forms-list.render.test.js +122 -0
  15. package/dist/__tests__/views/forms-list.render.test.js.map +1 -0
  16. package/dist/actuate-admin.css +1 -1
  17. package/dist/components/ErrorBoundary.d.ts +1 -1
  18. package/dist/components/forms/Drawer.d.ts +13 -0
  19. package/dist/components/forms/Drawer.d.ts.map +1 -0
  20. package/dist/components/forms/Drawer.js +13 -0
  21. package/dist/components/forms/Drawer.js.map +1 -0
  22. package/dist/components/forms/EmbedPanel.d.ts +7 -0
  23. package/dist/components/forms/EmbedPanel.d.ts.map +1 -0
  24. package/dist/components/forms/EmbedPanel.js +91 -0
  25. package/dist/components/forms/EmbedPanel.js.map +1 -0
  26. package/dist/components/forms/FieldsPanel.d.ts +8 -0
  27. package/dist/components/forms/FieldsPanel.d.ts.map +1 -0
  28. package/dist/components/forms/FieldsPanel.js +123 -0
  29. package/dist/components/forms/FieldsPanel.js.map +1 -0
  30. package/dist/components/forms/FormSchemaDrawer.d.ts +9 -0
  31. package/dist/components/forms/FormSchemaDrawer.d.ts.map +1 -0
  32. package/dist/components/forms/FormSchemaDrawer.js +96 -0
  33. package/dist/components/forms/FormSchemaDrawer.js.map +1 -0
  34. package/dist/components/forms/NotificationsPanel.d.ts +6 -0
  35. package/dist/components/forms/NotificationsPanel.d.ts.map +1 -0
  36. package/dist/components/forms/NotificationsPanel.js +80 -0
  37. package/dist/components/forms/NotificationsPanel.js.map +1 -0
  38. package/dist/components/forms/primitives.d.ts +42 -0
  39. package/dist/components/forms/primitives.d.ts.map +1 -0
  40. package/dist/components/forms/primitives.js +96 -0
  41. package/dist/components/forms/primitives.js.map +1 -0
  42. package/dist/layout/Sidebar.d.ts +5 -0
  43. package/dist/layout/Sidebar.d.ts.map +1 -1
  44. package/dist/layout/Sidebar.js +143 -10
  45. package/dist/layout/Sidebar.js.map +1 -1
  46. package/dist/lib/forms-events.d.ts +17 -0
  47. package/dist/lib/forms-events.d.ts.map +1 -0
  48. package/dist/lib/forms-events.js +20 -0
  49. package/dist/lib/forms-events.js.map +1 -0
  50. package/dist/lib/forms-service.d.ts +80 -0
  51. package/dist/lib/forms-service.d.ts.map +1 -0
  52. package/dist/lib/forms-service.js +144 -0
  53. package/dist/lib/forms-service.js.map +1 -0
  54. package/dist/views/Forms.d.ts.map +1 -1
  55. package/dist/views/Forms.js +119 -16
  56. package/dist/views/Forms.js.map +1 -1
  57. package/package.json +2 -2
  58. package/src/AdminRoot.tsx +22 -0
  59. package/src/__tests__/layout/sidebar-forms-badge.render.test.tsx +50 -0
  60. package/src/__tests__/layout/sidebar-submenu.render.test.tsx +93 -0
  61. package/src/__tests__/views/forms-list.render.test.tsx +141 -0
  62. package/src/components/forms/Drawer.tsx +70 -0
  63. package/src/components/forms/EmbedPanel.tsx +173 -0
  64. package/src/components/forms/FieldsPanel.tsx +385 -0
  65. package/src/components/forms/FormSchemaDrawer.tsx +185 -0
  66. package/src/components/forms/NotificationsPanel.tsx +240 -0
  67. package/src/components/forms/primitives.tsx +200 -0
  68. package/src/layout/Sidebar.tsx +295 -14
  69. package/src/lib/forms-events.ts +32 -0
  70. package/src/lib/forms-service.ts +244 -0
  71. package/src/views/Forms.tsx +343 -104
@@ -0,0 +1,96 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { AlertTriangle, Loader2 } from 'lucide-react';
4
+ // ─── Field-type badges ─────────────────────────────────────────────────────
5
+ /** Map a field type onto a semantic colour pair (background + text). */
6
+ function fieldTypeTone(type) {
7
+ switch (type) {
8
+ case 'email':
9
+ case 'url':
10
+ case 'date':
11
+ case 'number':
12
+ return 'bg-info/10 text-info';
13
+ case 'phone':
14
+ case 'textarea':
15
+ return 'bg-primary/10 text-primary';
16
+ case 'select':
17
+ case 'multiselect':
18
+ case 'radio':
19
+ return 'bg-warning/10 text-warning';
20
+ case 'checkbox':
21
+ case 'consent':
22
+ return 'bg-success/10 text-success';
23
+ case 'file':
24
+ return 'bg-destructive/10 text-destructive';
25
+ default:
26
+ return 'bg-muted text-muted-foreground';
27
+ }
28
+ }
29
+ const FIELD_TYPE_LABELS = {
30
+ text: 'TEXT',
31
+ email: 'EMAIL',
32
+ phone: 'PHONE',
33
+ textarea: 'TEXTAREA',
34
+ select: 'SELECT',
35
+ multiselect: 'MULTI',
36
+ radio: 'RADIO',
37
+ checkbox: 'CHECKBOX',
38
+ date: 'DATE',
39
+ number: 'NUMBER',
40
+ url: 'URL',
41
+ hidden: 'HIDDEN',
42
+ file: 'FILE',
43
+ consent: 'CONSENT',
44
+ richtext: 'CONTENT',
45
+ divider: 'DIVIDER',
46
+ honeypot: 'HONEYPOT',
47
+ };
48
+ export function FieldTypeBadge({ type }) {
49
+ return (_jsx("span", { className: `inline-flex items-center rounded-md px-1.5 py-0.5 text-[10px] font-medium tracking-wide uppercase ${fieldTypeTone(type)}`, children: FIELD_TYPE_LABELS[type] ?? type }));
50
+ }
51
+ // ─── Status badges ─────────────────────────────────────────────────────────
52
+ const STATUS_META = {
53
+ active: { label: 'Active', cls: 'bg-success/10 text-success', dot: 'bg-success' },
54
+ draft: { label: 'Draft', cls: 'bg-warning/10 text-warning', dot: 'bg-warning' },
55
+ archived: {
56
+ label: 'Archived',
57
+ cls: 'bg-muted text-muted-foreground',
58
+ dot: 'bg-muted-foreground',
59
+ },
60
+ };
61
+ export function FormStatusBadge({ status }) {
62
+ const meta = STATUS_META[status] ?? STATUS_META.draft;
63
+ return (_jsxs("span", { className: `inline-flex items-center gap-1.5 rounded-full px-2.5 py-0.5 text-xs font-medium ${meta.cls}`, children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full ${meta.dot}`, "aria-hidden": true }), meta.label] }));
64
+ }
65
+ /** Small red count badge for unread submissions. Hidden when count is 0. */
66
+ export function UnreadBadge({ count, className = '' }) {
67
+ if (count <= 0)
68
+ return null;
69
+ return (_jsx("span", { className: `bg-destructive text-destructive-foreground inline-flex min-w-5 items-center justify-center rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums ${className}`, "aria-label": `${count} unread`, children: count > 99 ? '99+' : count }));
70
+ }
71
+ // ─── Summary chips ───────────────────────────────────────────────────────
72
+ export function SummaryChip({ value, label, tone = 'neutral', }) {
73
+ const valueCls = tone === 'success'
74
+ ? 'text-success'
75
+ : tone === 'warning'
76
+ ? 'text-warning'
77
+ : tone === 'destructive'
78
+ ? 'text-destructive'
79
+ : 'text-foreground';
80
+ return (_jsxs("div", { className: "border-border bg-card flex items-baseline gap-1.5 rounded-lg border px-3 py-2", children: [_jsx("span", { className: `text-base font-medium tabular-nums ${valueCls}`, children: value }), _jsx("span", { className: "text-muted-foreground text-sm", children: label })] }));
81
+ }
82
+ // ─── States ──────────────────────────────────────────────────────────────
83
+ export function FormsLoading({ label = 'Loading…' }) {
84
+ return (_jsxs("div", { className: "flex h-64 items-center justify-center", role: "status", "aria-live": "polite", children: [_jsx(Loader2, { className: "text-muted-foreground h-6 w-6 animate-spin", "aria-hidden": true }), _jsx("span", { className: "sr-only", children: label })] }));
85
+ }
86
+ export function FormsEmptyState({ icon, title, description, action, }) {
87
+ return (_jsxs("div", { className: "border-border flex flex-col items-center justify-center rounded-lg border border-dashed px-6 py-12 text-center", children: [icon && (_jsx("div", { className: "text-muted-foreground mb-3", "aria-hidden": true, children: icon })), _jsx("h3", { className: "text-foreground text-base font-medium", children: title }), description && _jsx("p", { className: "text-muted-foreground mt-1 max-w-md text-sm", children: description }), action && _jsx("div", { className: "mt-4", children: action })] }));
88
+ }
89
+ export function FormsErrorState({ message, onRetry }) {
90
+ return (_jsxs("div", { className: "border-destructive/30 bg-destructive/5 flex items-center gap-3 rounded-lg border p-3", role: "alert", children: [_jsx(AlertTriangle, { className: "text-destructive h-5 w-5 shrink-0", "aria-hidden": true }), _jsx("span", { className: "text-destructive flex-1 text-sm", children: message }), onRetry && (_jsx("button", { onClick: onRetry, className: "border-border text-foreground hover:bg-accent rounded-md border px-3 py-1 text-sm transition-colors", children: "Retry" }))] }));
91
+ }
92
+ // ─── Button helpers (token-only) ─────────────────────────────────────────
93
+ export const btnPrimary = 'inline-flex items-center justify-center gap-2 rounded-md bg-primary px-4 py-2 text-base font-medium text-primary-foreground transition-colors hover:bg-primary/90 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-60';
94
+ export const btnSecondary = 'inline-flex items-center justify-center gap-2 rounded-md border border-border bg-card px-4 py-2 text-base font-medium text-foreground transition-colors hover:bg-accent focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring disabled:opacity-60';
95
+ export const btnGhostIcon = 'inline-flex items-center justify-center rounded-md p-2 text-muted-foreground transition-colors hover:bg-accent hover:text-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring';
96
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../../src/components/forms/primitives.tsx"],"names":[],"mappings":"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"}
@@ -19,6 +19,11 @@ export interface NavItem {
19
19
  group?: string;
20
20
  /** Indented children rendered immediately after this item. */
21
21
  children?: NavItem[];
22
+ /**
23
+ * Optional unread/notification count. Rendered as a red pill (expanded)
24
+ * or a dot (collapsed). Falsy / zero values render nothing.
25
+ */
26
+ badge?: number;
22
27
  }
23
28
  /**
24
29
  * Build the sidebar nav tree from the CMS config. If no collections are
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAmI9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb;AAED,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE,YAAY,2CA+Cd;AAoHD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;CACrB;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,EAAE,CA0GpD"}
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AAiCA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AAmI9C,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,OAAO,CAAA;IAClB,gBAAgB,EAAE,MAAM,IAAI,CAAA;IAC5B,WAAW,EAAE,MAAM,CAAA;IACnB,UAAU,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAClC,MAAM,CAAC,EAAE,GAAG,CAAA;CACb;AAED,wBAAgB,OAAO,CAAC,EACtB,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,UAAU,EACV,MAAM,GACP,EAAE,YAAY,2CAgDd;AAkYD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,8DAA8D;IAC9D,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAA;IACpB;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAA;CACf;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,GAAG,GAAG,OAAO,EAAE,CA0GpD"}
@@ -1,6 +1,11 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
- import { LayoutDashboard, FileText, File, Image, Settings, ClipboardList, Search as SearchIcon, Briefcase, FolderOpen, BookOpen, HelpCircle, Newspaper, PanelTop, PanelBottom, Layers, LayoutGrid, Code2, Library, ListTree, Menu as MenuIcon, PanelLeftClose, PanelLeftOpen, } from 'lucide-react';
3
+ import { useEffect, useRef, useState } from 'react';
4
+ import * as DropdownMenu from '@radix-ui/react-dropdown-menu';
5
+ import { useTheme } from '../components/ThemeProvider.js';
6
+ import { fetchFormsSidebarCounts } from '../lib/forms-service.js';
7
+ import { onFormsChanged } from '../lib/forms-events.js';
8
+ import { LayoutDashboard, FileText, File, Image, Settings, ChevronDown, ClipboardList, Search as SearchIcon, Briefcase, FolderOpen, BookOpen, HelpCircle, Newspaper, PanelTop, PanelBottom, Layers, LayoutGrid, Code2, Library, ListTree, Menu as MenuIcon, PanelLeftClose, PanelLeftOpen, } from 'lucide-react';
4
9
  import { ActuateBrandLogo } from '../assets/actuate-logo.js';
5
10
  /**
6
11
  * Compact mark used in the collapsed sidebar — just the "C" symbol from the
@@ -91,9 +96,46 @@ const defaultNavItems = [
91
96
  { path: '/settings', label: 'Settings', icon: Settings, group: 'Settings' },
92
97
  ];
93
98
  export function Sidebar({ collapsed, onToggleCollapse, currentPath, onNavigate, config, }) {
94
- const navItems = buildNavItems(config);
99
+ const formsUnread = useFormsUnread();
100
+ const navItems = applyFormsBadge(buildNavItems(config), formsUnread);
95
101
  return (_jsxs("aside", { className: `bg-sidebar border-sidebar-border flex h-full flex-col border-r transition-all duration-200 ${collapsed ? 'w-20' : 'w-64'}`, children: [_jsx("div", { className: `border-sidebar-border flex h-14 shrink-0 items-center border-b px-4 ${collapsed ? 'justify-center' : ''}`, children: _jsx(BrandLogo, { config: config, collapsed: collapsed }) }), _jsx("nav", { className: "flex-1 space-y-1 overflow-y-auto p-3", "aria-label": "Primary", children: renderNavTree(navItems, { collapsed, currentPath, onNavigate }) }), _jsx("div", { className: "border-sidebar-border hidden shrink-0 border-t p-3 md:block", children: _jsx("button", { onClick: onToggleCollapse, className: `text-sidebar-foreground/80 hover:bg-sidebar-accent hover:text-sidebar-foreground flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-sm transition-colors ${collapsed ? 'justify-center' : ''}`, "aria-label": collapsed ? 'Expand sidebar' : 'Collapse sidebar', title: collapsed ? 'Expand sidebar' : 'Collapse sidebar', children: collapsed ? (_jsx(PanelLeftOpen, { className: "h-4 w-4 shrink-0", "aria-hidden": true })) : (_jsxs(_Fragment, { children: [_jsx(PanelLeftClose, { className: "h-4 w-4 shrink-0", "aria-hidden": true }), _jsx("span", { className: "font-medium", children: "Collapse sidebar" })] })) }) })] }));
96
102
  }
103
+ // ─── Dynamic Forms unread badge ───────────────────────────────────────────
104
+ /**
105
+ * Live total of unread submissions across active forms, surfaced on the Forms
106
+ * nav item. Refreshes on mount and whenever a forms/entries mutation fires the
107
+ * shared event (mark read, archive, notify toggle, …). Best-effort: a failed
108
+ * fetch simply leaves the badge unset rather than surfacing an error in nav.
109
+ */
110
+ function useFormsUnread() {
111
+ const [unread, setUnread] = useState(0);
112
+ useEffect(() => {
113
+ let active = true;
114
+ const load = () => {
115
+ fetchFormsSidebarCounts()
116
+ .then((counts) => {
117
+ if (active)
118
+ setUnread(counts.reduce((sum, c) => sum + (c.unread ?? 0), 0));
119
+ })
120
+ .catch(() => {
121
+ /* keep the last known value; nav must never break on a fetch error */
122
+ });
123
+ };
124
+ load();
125
+ const off = onFormsChanged(load);
126
+ return () => {
127
+ active = false;
128
+ off();
129
+ };
130
+ }, []);
131
+ return unread;
132
+ }
133
+ /** Return a copy of the nav tree with the live unread count on the Forms item. */
134
+ function applyFormsBadge(items, unread) {
135
+ if (unread <= 0)
136
+ return items;
137
+ return items.map((item) => (item.path === '/forms' ? { ...item, badge: unread } : item));
138
+ }
97
139
  function isPathActive(currentPath, itemPath) {
98
140
  // Ignore query string / hash so state-bearing routes (e.g. `/seo?tab=audit`)
99
141
  // still highlight their nav item.
@@ -122,25 +164,116 @@ function renderNavTree(items, ctx) {
122
164
  else if (!item.group) {
123
165
  lastGroup = undefined;
124
166
  }
167
+ const hasChildren = !!item.children && item.children.length > 0;
168
+ // Collapsed parents reveal their children in a hover/focus flyout instead
169
+ // of inline (there's no room for indented rows in the 80px rail).
170
+ if (hasChildren && ctx.collapsed) {
171
+ nodes.push(_jsx(CollapsedFlyout, { item: item, ctx: ctx }, `flyout:${item.path}`));
172
+ continue;
173
+ }
174
+ // Expanded parents with children render as a collapsible section
175
+ // (chevron toggle to contract/expand the submenu).
176
+ if (hasChildren) {
177
+ nodes.push(_jsx(NavSection, { item: item, ctx: ctx }, `section:${item.path}`));
178
+ continue;
179
+ }
125
180
  // Keys are namespaced because a parent and its first child can share
126
181
  // the same path (e.g. the Posts parent and its "All Posts" child are
127
182
  // both `/posts`). Using the raw path as the key collided and made
128
183
  // React warn about — and risk dropping — duplicate siblings.
129
184
  nodes.push(_jsx(NavLink, { item: item, ctx: ctx }, `item:${item.path}`));
130
- if (item.children && item.children.length > 0 && !ctx.collapsed) {
131
- for (const child of item.children) {
132
- nodes.push(_jsx(NavLink, { item: child, ctx: ctx, nested: true }, `child:${item.path}:${child.path}`));
133
- }
134
- }
135
185
  }
136
186
  return nodes;
137
187
  }
138
- function NavLink({ item, ctx, nested = false, }) {
188
+ /**
189
+ * Expanded parent with a collapsible submenu. The label/icon navigates to the
190
+ * parent destination; a trailing chevron toggles the child list open/closed.
191
+ * Defaults to open, and auto-opens when the parent or one of its children is
192
+ * the active route so the current page is never hidden behind a collapsed
193
+ * section.
194
+ */
195
+ function NavSection({ item, ctx }) {
196
+ const Icon = item.icon;
197
+ const isActive = isPathActive(ctx.currentPath, item.path);
198
+ const childActive = item.children.some((c) => isPathActive(ctx.currentPath, c.path));
199
+ const [open, setOpen] = useState(true);
200
+ const childListId = `nav-section-${item.path.replace(/[^a-z0-9]+/gi, '-')}`;
201
+ // Keep the active section visible: if the user is on this section's route
202
+ // (parent or child) it stays expanded regardless of the manual toggle.
203
+ const expanded = open || isActive || childActive;
204
+ return (_jsxs("div", { children: [_jsxs("div", { className: `flex items-center rounded-lg transition-colors ${isActive
205
+ ? 'bg-sidebar-accent text-sidebar-primary'
206
+ : 'text-sidebar-foreground hover:bg-sidebar-accent'}`, children: [_jsxs("button", { onClick: () => ctx.onNavigate(item.path), className: "flex min-w-0 flex-1 items-center gap-3 rounded-lg py-2.5 pr-1 pl-3 text-left", "aria-current": isActive ? 'page' : undefined, children: [_jsx(Icon, { className: "h-5 w-5 shrink-0", "aria-hidden": true }), _jsx("span", { className: "truncate text-sm font-medium", children: item.label })] }), _jsx("button", { onClick: () => setOpen((v) => !v), className: "text-sidebar-foreground/55 hover:text-sidebar-foreground mr-1 flex shrink-0 items-center rounded-md p-1.5 transition-colors", "aria-label": `${expanded ? 'Collapse' : 'Expand'} ${item.label}`, "aria-expanded": expanded, "aria-controls": childListId, children: _jsx(ChevronDown, { className: `h-4 w-4 transition-transform duration-200 ${expanded ? '' : '-rotate-90'}`, "aria-hidden": true }) })] }), expanded && (_jsx("div", { id: childListId, className: "relative", children: item.children.map((child, i) => (_jsx(NavLink, { item: child, ctx: ctx, nested: true, isLast: i === item.children.length - 1 }, `child:${item.path}:${child.path}`))) }))] }));
207
+ }
208
+ function NavLink({ item, ctx, nested = false, isLast = false, }) {
139
209
  const Icon = item.icon;
140
210
  const isActive = isPathActive(ctx.currentPath, item.path);
141
- return (_jsxs("button", { onClick: () => ctx.onNavigate(item.path), className: `flex w-full items-center gap-3 rounded-lg text-left transition-colors ${nested ? 'py-1.5 pr-3 pl-9' : 'px-3 py-2.5'} ${isActive
211
+ const badge = item.badge && item.badge > 0 ? item.badge : 0;
212
+ const button = (_jsxs("button", { onClick: () => ctx.onNavigate(item.path), className: `flex w-full items-center gap-3 rounded-lg text-left transition-colors ${nested ? 'py-1.5 pr-3 pl-9' : 'px-3 py-2.5'} ${isActive
142
213
  ? 'bg-sidebar-accent text-sidebar-primary'
143
- : 'text-sidebar-foreground hover:bg-sidebar-accent'} ${ctx.collapsed ? 'justify-center px-3' : ''}`, title: ctx.collapsed ? item.label : '', "aria-current": isActive ? 'page' : undefined, children: [!nested && _jsx(Icon, { className: "h-5 w-5 shrink-0", "aria-hidden": true }), nested && !ctx.collapsed && (_jsx(Icon, { className: "text-sidebar-foreground/60 h-4 w-4 shrink-0", "aria-hidden": true })), !ctx.collapsed && (_jsx("span", { className: `truncate font-medium ${nested ? 'text-[13px]' : 'text-sm'}`, children: item.label }))] }));
214
+ : 'text-sidebar-foreground hover:bg-sidebar-accent'} ${ctx.collapsed ? 'justify-center px-3' : ''}`, title: ctx.collapsed ? item.label : '', "aria-current": isActive ? 'page' : undefined, children: [_jsxs("span", { className: "relative flex shrink-0 items-center", children: [!nested && _jsx(Icon, { className: "h-5 w-5 shrink-0", "aria-hidden": true }), nested && !ctx.collapsed && (_jsx(Icon, { className: "text-sidebar-foreground/60 h-4 w-4 shrink-0", "aria-hidden": true })), ctx.collapsed && badge > 0 && (_jsx("span", { className: "bg-destructive absolute -top-0.5 -right-0.5 h-2 w-2 rounded-full", "aria-hidden": true }))] }), !ctx.collapsed && (_jsx("span", { className: `truncate font-medium ${nested ? 'text-[13px]' : 'text-sm'}`, children: item.label })), !ctx.collapsed && badge > 0 && (_jsx("span", { className: "bg-destructive text-destructive-foreground ml-auto inline-flex min-w-5 items-center justify-center rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums", "aria-label": `${badge} unread`, children: badge > 99 ? '99+' : badge }))] }));
215
+ if (!nested || ctx.collapsed)
216
+ return button;
217
+ // Curved-elbow tree connector (expanded only). The elbow draws the vertical
218
+ // run from the row top to its vertical center, curves at the bottom-left
219
+ // corner, then runs horizontally into the row. Non-last rows continue the
220
+ // vertical line to the row bottom so it meets the next sibling's elbow.
221
+ // The guide is centered (~21px) under the parent item's 20px icon.
222
+ return (_jsxs("div", { className: "relative", children: [_jsx("span", { "aria-hidden": true, className: "border-sidebar-border absolute top-0 left-[21px] h-1/2 w-[15px] rounded-bl-lg border-b border-l" }), !isLast && (_jsx("span", { "aria-hidden": true, className: "border-sidebar-border absolute top-1/2 bottom-0 left-[21px] border-l" })), button] }));
223
+ }
224
+ /**
225
+ * Collapsed-rail parent: shows the icon button and, on hover or keyboard
226
+ * focus, a flyout listing the parent's children. Built on Radix
227
+ * DropdownMenu so the panel is portaled (escaping the nav's `overflow`
228
+ * clip), positioned, dismissable, and keyboard-navigable. Hover-opening is
229
+ * controlled manually; we suppress Radix's auto-focus when opened by pointer
230
+ * so hovering doesn't steal focus, while keyboard opening still moves focus
231
+ * into the menu.
232
+ */
233
+ function CollapsedFlyout({ item, ctx }) {
234
+ const Icon = item.icon;
235
+ const isActive = isPathActive(ctx.currentPath, item.path);
236
+ const { resolvedTheme } = useTheme();
237
+ const [open, setOpen] = useState(false);
238
+ const openedByPointer = useRef(false);
239
+ const closeTimer = useRef(null);
240
+ const cancelClose = () => {
241
+ if (closeTimer.current) {
242
+ clearTimeout(closeTimer.current);
243
+ closeTimer.current = null;
244
+ }
245
+ };
246
+ const scheduleClose = () => {
247
+ cancelClose();
248
+ closeTimer.current = setTimeout(() => setOpen(false), 120);
249
+ };
250
+ return (_jsxs(DropdownMenu.Root, { open: open, onOpenChange: (next) => {
251
+ if (!next)
252
+ openedByPointer.current = false;
253
+ setOpen(next);
254
+ }, modal: false, children: [_jsx("div", { onMouseEnter: () => {
255
+ openedByPointer.current = true;
256
+ cancelClose();
257
+ setOpen(true);
258
+ }, onMouseLeave: scheduleClose, children: _jsx(DropdownMenu.Trigger, { asChild: true, children: _jsx("button", { onClick: () => ctx.onNavigate(item.path), className: `flex w-full items-center justify-center rounded-lg px-3 py-2.5 transition-colors ${isActive
259
+ ? 'bg-sidebar-accent text-sidebar-primary'
260
+ : 'text-sidebar-foreground hover:bg-sidebar-accent'}`, "aria-label": item.label, title: item.label, "aria-current": isActive ? 'page' : undefined, children: _jsx(Icon, { className: "h-5 w-5 shrink-0", "aria-hidden": true }) }) }) }), _jsx(DropdownMenu.Portal, { children: _jsxs(DropdownMenu.Content, { side: "right", align: "start", sideOffset: 10, onMouseEnter: cancelClose, onMouseLeave: scheduleClose, onCloseAutoFocus: (e) => {
261
+ // After a pointer-driven open, don't yank focus back to the rail
262
+ // trigger (it would leave a stray focus ring once the cursor moves
263
+ // away). Keyboard-driven opens keep the default focus-return.
264
+ if (openedByPointer.current)
265
+ e.preventDefault();
266
+ },
267
+ // Radix portals to <body>, outside the `.actuate-admin` scope where
268
+ // the theme tokens (`--popover`, `--radius`, …) live — without the
269
+ // scope class the panel renders transparent with square corners.
270
+ // Re-assert the scope (and current dark state) on the panel itself so
271
+ // it inherits the tokens regardless of portal position.
272
+ className: `actuate-admin ${resolvedTheme === 'dark' ? 'dark' : ''} bg-popover text-popover-foreground border-border motion-safe:animate-in motion-safe:fade-in z-50 min-w-44 overflow-hidden rounded-lg border p-1 shadow-lg`, children: [_jsx("div", { className: "text-muted-foreground border-border mb-1 border-b px-3 py-2 text-xs font-medium", children: item.label }), item.children.map((child) => {
273
+ const ChildIcon = child.icon;
274
+ const childActive = isPathActive(ctx.currentPath, child.path);
275
+ return (_jsxs(DropdownMenu.Item, { onSelect: () => ctx.onNavigate(child.path), className: `data-highlighted:bg-accent hover:bg-accent flex cursor-pointer items-center gap-2.5 rounded-md px-3 py-2 text-sm font-medium outline-none select-none ${childActive ? 'text-primary' : 'text-foreground'}`, "aria-current": childActive ? 'page' : undefined, children: [_jsx(ChildIcon, { className: "text-muted-foreground h-4 w-4 shrink-0", "aria-hidden": true }), _jsx("span", { className: "truncate", children: child.label })] }, `flyout-item:${item.path}:${child.path}`));
276
+ })] }) })] }));
144
277
  }
145
278
  // ─── Config-driven nav builder ──────────────────────────────────────────────
146
279
  function resolveIcon(collection) {
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Sidebar.js","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * Forms event bus — a minimal pub/sub so views that mutate submission state
3
+ * (mark read/unread, star, archive) or form state (create, notify toggle,
4
+ * archive) can tell the sidebar to refresh its unread badges immediately,
5
+ * without threading a refresh callback through the whole component tree.
6
+ *
7
+ * Deliberately tiny and dependency-free: one event, synchronous fan-out,
8
+ * SSR-safe. Subscribers must unsubscribe on unmount via the returned
9
+ * disposer to avoid leaks.
10
+ */
11
+ type Listener = () => void;
12
+ /** Subscribe to "forms data changed" notifications. Returns an unsubscribe fn. */
13
+ export declare function onFormsChanged(listener: Listener): () => void;
14
+ /** Notify all subscribers that forms/submission counts may have changed. */
15
+ export declare function emitFormsChanged(): void;
16
+ export {};
17
+ //# sourceMappingURL=forms-events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-events.d.ts","sourceRoot":"","sources":["../../src/lib/forms-events.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,KAAK,QAAQ,GAAG,MAAM,IAAI,CAAA;AAI1B,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,IAAI,CAK7D;AAED,4EAA4E;AAC5E,wBAAgB,gBAAgB,IAAI,IAAI,CAQvC"}
@@ -0,0 +1,20 @@
1
+ const listeners = new Set();
2
+ /** Subscribe to "forms data changed" notifications. Returns an unsubscribe fn. */
3
+ export function onFormsChanged(listener) {
4
+ listeners.add(listener);
5
+ return () => {
6
+ listeners.delete(listener);
7
+ };
8
+ }
9
+ /** Notify all subscribers that forms/submission counts may have changed. */
10
+ export function emitFormsChanged() {
11
+ for (const listener of listeners) {
12
+ try {
13
+ listener();
14
+ }
15
+ catch {
16
+ // A misbehaving subscriber must not break sibling subscribers.
17
+ }
18
+ }
19
+ }
20
+ //# sourceMappingURL=forms-events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-events.js","sourceRoot":"","sources":["../../src/lib/forms-events.ts"],"names":[],"mappings":"AAYA,MAAM,SAAS,GAAG,IAAI,GAAG,EAAY,CAAA;AAErC,kFAAkF;AAClF,MAAM,UAAU,cAAc,CAAC,QAAkB;IAC/C,SAAS,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;IACvB,OAAO,GAAG,EAAE;QACV,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAA;IAC5B,CAAC,CAAA;AACH,CAAC;AAED,4EAA4E;AAC5E,MAAM,UAAU,gBAAgB;IAC9B,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,QAAQ,EAAE,CAAA;QACZ,CAAC;QAAC,MAAM,CAAC;YACP,+DAA+D;QACjE,CAAC;IACH,CAAC;AACH,CAAC"}
@@ -0,0 +1,80 @@
1
+ import type { FormDefinition, FormSchemaVersion, FormField, FormNotificationSettings, FormEmbedSettings, FormStatus, FormStats, FormsSidebarCount, FetchFormsParams } from '@actuate-media/cms-core';
2
+ export type { FormDefinition, FormSchemaVersion, FormField, FormFieldType, FormFieldOption, FieldValidationRules, FormNotificationSettings, FormEmbedSettings, FormStatus, FormStats, FormsSidebarCount, } from '@actuate-media/cms-core';
3
+ /**
4
+ * A form as returned by `GET /forms` — the typed definition plus the legacy
5
+ * numeric aliases the list endpoint adds for backward compatibility.
6
+ */
7
+ export interface FormListItem extends FormDefinition {
8
+ /** `fields.length` precomputed by the server. */
9
+ fieldCount?: number;
10
+ /** Alias of `totalEntries`. */
11
+ submissions?: number;
12
+ }
13
+ export interface FormSchemaResult {
14
+ fields: FormField[];
15
+ activeVersionId: string | null;
16
+ versions: FormSchemaVersion[];
17
+ }
18
+ export declare function fetchForms(params?: FetchFormsParams): Promise<FormListItem[]>;
19
+ export declare function fetchFormById(id: string): Promise<FormDefinition | null>;
20
+ export declare function fetchFormStats(): Promise<FormStats>;
21
+ export declare function fetchFormsSidebarCounts(): Promise<FormsSidebarCount[]>;
22
+ export interface CreateFormPayload {
23
+ name: string;
24
+ slug?: string;
25
+ description?: string;
26
+ status?: FormStatus;
27
+ template?: string;
28
+ fields?: FormField[];
29
+ }
30
+ export declare function createForm(payload: CreateFormPayload): Promise<{
31
+ data?: FormDefinition;
32
+ error?: string;
33
+ }>;
34
+ export declare function updateForm(id: string, payload: Partial<Pick<FormDefinition, 'name' | 'slug' | 'description' | 'status'>>): Promise<{
35
+ data?: FormDefinition;
36
+ error?: string;
37
+ }>;
38
+ export declare function duplicateForm(id: string): Promise<{
39
+ data?: FormDefinition;
40
+ error?: string;
41
+ }>;
42
+ /** Move a form to the archived state (hidden from embed pickers, no new submissions). */
43
+ export declare function archiveForm(id: string): Promise<{
44
+ error?: string;
45
+ }>;
46
+ /** Restore an archived form back to draft. */
47
+ export declare function restoreForm(id: string): Promise<{
48
+ error?: string;
49
+ }>;
50
+ export declare function deleteForm(id: string, opts?: {
51
+ force?: boolean;
52
+ }): Promise<{
53
+ error?: string;
54
+ }>;
55
+ export declare function fetchFormSchema(id: string): Promise<FormSchemaResult>;
56
+ export declare function saveFormSchema(id: string, fields: FormField[], notes?: string): Promise<{
57
+ data?: {
58
+ form: FormDefinition;
59
+ version: FormSchemaVersion;
60
+ };
61
+ error?: string;
62
+ }>;
63
+ export declare function fetchNotificationSettings(id: string): Promise<FormNotificationSettings>;
64
+ export declare function updateNotificationSettings(id: string, payload: Partial<FormNotificationSettings>): Promise<{
65
+ data?: FormNotificationSettings;
66
+ error?: string;
67
+ }>;
68
+ /** Lightweight notify on/off toggle used by the forms-list switch. */
69
+ export declare function setNotifyEnabled(id: string, enabled: boolean): Promise<{
70
+ data?: {
71
+ notifyEnabled: boolean;
72
+ };
73
+ error?: string;
74
+ }>;
75
+ export declare function fetchEmbedSettings(id: string): Promise<FormEmbedSettings>;
76
+ export declare function updateEmbedSettings(id: string, payload: Partial<FormEmbedSettings>): Promise<{
77
+ data?: FormEmbedSettings;
78
+ error?: string;
79
+ }>;
80
+ //# sourceMappingURL=forms-service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"forms-service.d.ts","sourceRoot":"","sources":["../../src/lib/forms-service.ts"],"names":[],"mappings":"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"}