@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
@@ -0,0 +1,92 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Entry detail pane — lightweight read-only inspector shown beside the
5
+ * collection documents table (design's Entries split-pane, 400px). Surfaces
6
+ * the entry's key fields, status, and timestamps; the primary action opens
7
+ * the existing full editor route. Not an editor — editing stays in the
8
+ * dedicated editor views.
9
+ */
10
+ import { ExternalLink } from 'lucide-react';
11
+ import { InspectorPaneBody, InspectorPaneFooter, InspectorPaneHeader, InspectorPaneSection, } from '../ui/InspectorPane.js';
12
+ import { StatusBadge } from '../ui/StatusBadge.js';
13
+ const SKIPPED_FIELD_TYPES = new Set(['richText', 'blocks', 'json', 'media', 'relationship']);
14
+ const MAX_FIELDS = 8;
15
+ function statusTone(status) {
16
+ switch (status?.toUpperCase()) {
17
+ case 'PUBLISHED':
18
+ return 'success';
19
+ case 'SCHEDULED':
20
+ return 'warning';
21
+ case 'ARCHIVED':
22
+ return 'muted';
23
+ default:
24
+ return 'neutral';
25
+ }
26
+ }
27
+ function formatDateTime(value) {
28
+ if (typeof value !== 'string' || !value)
29
+ return '—';
30
+ const date = new Date(value);
31
+ if (Number.isNaN(date.getTime()))
32
+ return '—';
33
+ return date.toLocaleDateString(undefined, {
34
+ month: 'short',
35
+ day: 'numeric',
36
+ year: 'numeric',
37
+ hour: 'numeric',
38
+ minute: '2-digit',
39
+ });
40
+ }
41
+ /** Human-readable display value for a scalar-ish field, or null to skip. */
42
+ function displayValue(raw, field) {
43
+ if (raw == null || raw === '')
44
+ return '';
45
+ if (typeof raw === 'boolean')
46
+ return raw ? 'Yes' : 'No';
47
+ if (typeof raw === 'number')
48
+ return String(raw);
49
+ if (typeof raw === 'string') {
50
+ const opt = field.options?.find((o) => o.value === raw);
51
+ return opt?.label ?? raw;
52
+ }
53
+ if (Array.isArray(raw)) {
54
+ const tags = raw
55
+ .map((item) => typeof item === 'string'
56
+ ? item
57
+ : item && typeof item === 'object'
58
+ ? Object.values(item).find((v) => typeof v === 'string')
59
+ : undefined)
60
+ .filter((v) => Boolean(v));
61
+ if (tags.length > 0)
62
+ return tags.join(', ');
63
+ return `${raw.length} item${raw.length === 1 ? '' : 's'}`;
64
+ }
65
+ return null;
66
+ }
67
+ /** Key fields worth showing in the pane: labelled scalars from the config. */
68
+ function keyFields(fields, data) {
69
+ if (!fields || typeof fields !== 'object')
70
+ return [];
71
+ const out = [];
72
+ for (const [name, field] of Object.entries(fields)) {
73
+ if (!field || field.hidden)
74
+ continue;
75
+ if (field.type && SKIPPED_FIELD_TYPES.has(field.type))
76
+ continue;
77
+ const value = displayValue(data[name], field);
78
+ if (value === null)
79
+ continue;
80
+ out.push({ name, label: field.label ?? name, value });
81
+ if (out.length >= MAX_FIELDS)
82
+ break;
83
+ }
84
+ return out;
85
+ }
86
+ export function EntryDetailPane({ doc, collection, singularLabel, onClose, onOpenEditor, }) {
87
+ const title = doc.title || doc.name || `#${doc.id}`;
88
+ const data = (doc.data ?? {});
89
+ const fields = keyFields(collection?.fields, data);
90
+ return (_jsxs(_Fragment, { children: [_jsxs(InspectorPaneHeader, { onClose: onClose, closeLabel: `Close ${singularLabel} details`, children: [_jsx("div", { className: "truncate text-[13.5px] font-semibold text-[var(--txt)]", children: title }), _jsxs("div", { className: "mt-1 flex items-center gap-2", children: [_jsx(StatusBadge, { tone: statusTone(doc.status), children: doc.status ?? 'DRAFT' }), _jsx("span", { className: "text-[11px] text-[var(--muted)]", children: singularLabel })] })] }), _jsxs(InspectorPaneBody, { children: [_jsx(InspectorPaneSection, { title: "Fields", children: fields.length === 0 ? (_jsx("p", { className: "text-[12px] text-[var(--muted)]", children: "No previewable fields." })) : (_jsx("dl", { children: fields.map((f) => (_jsxs("div", { className: "mb-2.5 last:mb-0", children: [_jsx("dt", { className: "text-[10.5px] font-semibold tracking-[0.5px] text-[var(--muted)] uppercase", children: f.label }), f.value ? (_jsx("dd", { className: "mt-0.5 text-[12.5px] break-words text-[var(--txt)]", children: f.value })) : (_jsx("dd", { className: "mt-0.5 text-[12.5px] text-[var(--muted)] italic", children: "Not provided" }))] }, f.name))) })) }), _jsxs(InspectorPaneSection, { title: "Record", children: [_jsxs("div", { className: "flex items-center justify-between gap-3 py-1 text-[12px]", children: [_jsx("span", { className: "text-[var(--muted)]", children: "Created" }), _jsx("span", { className: "text-[var(--sub)]", children: formatDateTime(doc.createdAt) })] }), _jsxs("div", { className: "flex items-center justify-between gap-3 py-1 text-[12px]", children: [_jsx("span", { className: "text-[var(--muted)]", children: "Updated" }), _jsx("span", { className: "text-[var(--sub)]", children: formatDateTime(doc.updatedAt) })] }), _jsxs("div", { className: "flex items-center justify-between gap-3 py-1 text-[12px]", children: [_jsx("span", { className: "text-[var(--muted)]", children: "ID" }), _jsx("span", { className: "font-mono text-[11px] text-[var(--muted)]", children: String(doc.id) })] })] })] }), _jsx(InspectorPaneFooter, { children: _jsxs("button", { type: "button", onClick: onOpenEditor, className: "flex w-full items-center justify-center gap-1.5 rounded-[7px] bg-[var(--acc)] px-3 py-2 text-[13px] font-semibold text-white transition-colors duration-[var(--motion-fast)] hover:opacity-90 focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none", children: [_jsx(ExternalLink, { size: 14, "aria-hidden": true }), "Open full editor"] }) })] }));
91
+ }
92
+ //# sourceMappingURL=EntryDetailPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EntryDetailPane.js","sourceRoot":"","sources":["../../../src/components/collections/EntryDetailPane.tsx"],"names":[],"mappings":"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"}
@@ -99,7 +99,7 @@ function SortableFieldRow({ field, editing, hasSubmissions, onToggleEdit, onUpda
99
99
  function FieldEditor({ field, hasSubmissions, needsOptions, onUpdate, }) {
100
100
  const reqId = useId();
101
101
  const optionsText = (field.options ?? []).map((o) => o.label).join('\n');
102
- return (_jsxs("div", { className: "border-border space-y-3 border-t px-3 py-3", children: [_jsxs("div", { className: "grid grid-cols-1 gap-3 sm:grid-cols-2", children: [_jsx(Labeled, { label: "Label", children: _jsx("input", { type: "text", value: field.label, onChange: (e) => {
102
+ return (_jsxs("div", { className: "border-border space-y-3 border-t px-3 py-3", children: [_jsxs("div", { className: "grid grid-cols-1 gap-3", children: [_jsx(Labeled, { label: "Label", children: _jsx("input", { type: "text", value: field.label, onChange: (e) => {
103
103
  const label = e.target.value;
104
104
  // Auto-derive the key from the label until the form has data and
105
105
  // until the user has clearly customised the key.
@@ -1 +1 @@
1
- {"version":3,"file":"FieldsPanel.js","sourceRoot":"","sources":["../../../src/components/forms/FieldsPanel.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FieldsPanel.js","sourceRoot":"","sources":["../../../src/components/forms/FieldsPanel.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { FormListItem } from '../../lib/forms-service.js';
2
+ export declare function FormSchemaPane({ form, onClose, onSaved, }: {
3
+ form: FormListItem;
4
+ onClose: () => void;
5
+ /** Called after a schema/settings change so the list can refetch. */
6
+ onSaved?: () => void;
7
+ }): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=FormSchemaPane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormSchemaPane.d.ts","sourceRoot":"","sources":["../../../src/components/forms/FormSchemaPane.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAiB9D,wBAAgB,cAAc,CAAC,EAC7B,IAAI,EACJ,OAAO,EACP,OAAO,GACR,EAAE;IACD,IAAI,EAAE,YAAY,CAAA;IAClB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,qEAAqE;IACrE,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB,2CAoJA"}
@@ -0,0 +1,95 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Form Schema pane — inline inspector opened from the Forms list "Schema"
5
+ * action (design's 390px schema panel; previously the `FormSchemaDrawer`
6
+ * overlay). Four tabs: Fields (versioned schema editor), Embed (public
7
+ * snippets + domain restrictions), Notifications (email settings),
8
+ * Integrations (CRM webhooks / Zapier).
9
+ *
10
+ * Saving the Fields tab creates a new schema version server-side; existing
11
+ * submissions keep referencing the version they were captured against, so
12
+ * historical entries never break when the schema changes.
13
+ */
14
+ import * as Tabs from '@radix-ui/react-tabs';
15
+ import { useEffect, useState } from 'react';
16
+ import { toast } from 'sonner';
17
+ import { fetchFormSchema, saveFormSchema } from '../../lib/forms-service.js';
18
+ import { emitFormsChanged } from '../../lib/forms-events.js';
19
+ import { ConfirmDialog } from '../ui/ConfirmDialog.js';
20
+ import { InspectorPaneBody, InspectorPaneFooter, InspectorPaneHeader } from '../ui/InspectorPane.js';
21
+ import { FieldsPanel } from './FieldsPanel.js';
22
+ import { EmbedPanel } from './EmbedPanel.js';
23
+ import { NotificationsPanel } from './NotificationsPanel.js';
24
+ import { WebhooksPanel } from './WebhooksPanel.js';
25
+ import { FormsErrorState, FormsLoading, btnPrimary } from './primitives.js';
26
+ const TABS = [
27
+ { id: 'fields', label: 'Fields' },
28
+ { id: 'embed', label: 'Embed' },
29
+ { id: 'notifications', label: 'Notifications' },
30
+ { id: 'integrations', label: 'Integrations' },
31
+ ];
32
+ export function FormSchemaPane({ form, onClose, onSaved, }) {
33
+ const [tab, setTab] = useState('fields');
34
+ const [fields, setFields] = useState([]);
35
+ const [loading, setLoading] = useState(false);
36
+ const [error, setError] = useState(null);
37
+ const [dirty, setDirty] = useState(false);
38
+ const [saving, setSaving] = useState(false);
39
+ const [confirmDiscard, setConfirmDiscard] = useState(false);
40
+ const formId = form.id;
41
+ const hasSubmissions = (form.totalEntries ?? 0) > 0;
42
+ useEffect(() => {
43
+ setTab('fields');
44
+ setDirty(false);
45
+ setLoading(true);
46
+ setError(null);
47
+ let active = true;
48
+ fetchFormSchema(formId)
49
+ .then((schema) => {
50
+ if (active)
51
+ setFields(schema.fields);
52
+ })
53
+ .catch((e) => {
54
+ if (active)
55
+ setError(e instanceof Error ? e.message : 'Failed to load schema');
56
+ })
57
+ .finally(() => {
58
+ if (active)
59
+ setLoading(false);
60
+ });
61
+ return () => {
62
+ active = false;
63
+ };
64
+ }, [formId]);
65
+ function handleFieldsChange(next) {
66
+ setFields(next);
67
+ setDirty(true);
68
+ }
69
+ async function handleSave() {
70
+ setSaving(true);
71
+ const res = await saveFormSchema(formId, fields.map((f, i) => ({ ...f, sortOrder: i })));
72
+ setSaving(false);
73
+ if (res.error) {
74
+ toast.error(res.error);
75
+ return;
76
+ }
77
+ setDirty(false);
78
+ toast.success('Schema saved.');
79
+ emitFormsChanged();
80
+ onSaved?.();
81
+ }
82
+ function requestClose() {
83
+ if (dirty) {
84
+ setConfirmDiscard(true);
85
+ return;
86
+ }
87
+ onClose();
88
+ }
89
+ return (_jsxs(_Fragment, { children: [_jsxs(InspectorPaneHeader, { onClose: requestClose, closeLabel: "Close schema panel", children: [_jsx("div", { className: "truncate text-[13.5px] font-semibold text-[var(--txt)]", children: form.name }), _jsxs("div", { className: "mt-0.5 truncate font-mono text-[11.5px] text-[var(--muted)]", children: ["/", form.slug] })] }), _jsxs(Tabs.Root, { value: tab, onValueChange: setTab, className: "flex min-h-0 flex-1 flex-col", children: [_jsx(Tabs.List, { className: "flex shrink-0 gap-0.5 overflow-x-auto border-b border-[var(--bdr)] px-2", "aria-label": "Form schema sections", children: TABS.map((t) => (_jsx(Tabs.Trigger, { value: t.id, className: "text-muted-foreground hover:text-foreground data-[state=active]:text-foreground data-[state=active]:border-primary focus-visible:ring-ring -mb-px border-b-2 border-transparent px-2.5 py-2 text-[12.5px] font-medium whitespace-nowrap transition-colors focus-visible:ring-2 focus-visible:outline-none", children: t.label }, t.id))) }), _jsx(InspectorPaneBody, { children: _jsxs("div", { className: "px-4 py-3.5", children: [_jsx(Tabs.Content, { value: "fields", tabIndex: -1, children: loading ? (_jsx(FormsLoading, { label: "Loading schema\u2026" })) : error ? (_jsx(FormsErrorState, { message: error, onRetry: () => setTab('fields') })) : (_jsx(FieldsPanel, { fields: fields, onChange: handleFieldsChange, hasSubmissions: hasSubmissions })) }), _jsx(Tabs.Content, { value: "embed", tabIndex: -1, children: _jsx(EmbedPanel, { formId: formId, slug: form.slug, status: form.status }) }), _jsx(Tabs.Content, { value: "notifications", tabIndex: -1, children: _jsx(NotificationsPanel, { formId: formId, onChanged: onSaved }) }), _jsx(Tabs.Content, { value: "integrations", tabIndex: -1, children: _jsx(WebhooksPanel, { formId: formId, formSlug: form.slug }) })] }) }), tab === 'fields' && (_jsx(InspectorPaneFooter, { children: _jsx("button", { type: "button", className: `${btnPrimary} w-full`, onClick: () => void handleSave(), disabled: saving || loading, children: saving ? 'Saving…' : 'Save Schema' }) }))] }), _jsx(ConfirmDialog, { open: confirmDiscard, onClose: () => setConfirmDiscard(false), onConfirm: () => {
90
+ setDirty(false);
91
+ setConfirmDiscard(false);
92
+ onClose();
93
+ }, title: "Discard unsaved changes?", description: "You have unsaved schema changes. Closing now will discard them.", confirmLabel: "Discard", cancelLabel: "Keep editing", destructive: true })] }));
94
+ }
95
+ //# sourceMappingURL=FormSchemaPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FormSchemaPane.js","sourceRoot":"","sources":["../../../src/components/forms/FormSchemaPane.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export interface SeoEditorPaneProps {
2
+ entityType: string;
3
+ entityId: string;
4
+ onClose: () => void;
5
+ /** Called after a successful save so the list can refetch. */
6
+ onSaved?: () => void;
7
+ }
8
+ export declare function SeoEditorPane({ entityType, entityId, onClose, onSaved }: SeoEditorPaneProps): import("react/jsx-runtime").JSX.Element;
9
+ //# sourceMappingURL=SeoEditorPane.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeoEditorPane.d.ts","sourceRoot":"","sources":["../../../src/components/seo/SeoEditorPane.tsx"],"names":[],"mappings":"AAqHA,MAAM,WAAW,kBAAkB;IACjC,UAAU,EAAE,MAAM,CAAA;IAClB,QAAQ,EAAE,MAAM,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,8DAA8D;IAC9D,OAAO,CAAC,EAAE,MAAM,IAAI,CAAA;CACrB;AAED,wBAAgB,aAAa,CAAC,EAAE,UAAU,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,EAAE,kBAAkB,2CAuZ3F"}
@@ -0,0 +1,175 @@
1
+ 'use client';
2
+ import { jsxs as _jsxs, jsx as _jsx, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * Inline SEO editor pane — design-parity replacement for the old
5
+ * `SeoEditorDrawer` overlay. Rendered inside an `<InspectorPane>` beside the
6
+ * Content SEO list (380px in the handoff). Same fields, validation, AI
7
+ * assists, and `updateSeoFields` save path as the drawer; only the
8
+ * presentation pattern changed.
9
+ */
10
+ import { cloneElement, isValidElement, useEffect, useId, useState } from 'react';
11
+ import { Sparkles, Check, Loader2, Wand2 } from 'lucide-react';
12
+ import { toast } from 'sonner';
13
+ import { fetchSeoContentRecord, updateSeoFields, generateSeoField, SEO_SCHEMA_TYPES, } from '../../lib/seo-service.js';
14
+ import { fixBrandVoiceContent } from '../../lib/brand-voice-client.js';
15
+ import { BrandVoiceAlignmentBadge } from '../BrandVoiceAlignmentBadge.js';
16
+ import { InspectorPaneBody, InspectorPaneFooter, InspectorPaneHeader, InspectorPaneSection, } from '../ui/InspectorPane.js';
17
+ import { Toggle } from '../ui/Toggle.js';
18
+ import { SeoLoading, SeoErrorState, gradeMeta } from './primitives.js';
19
+ const META_TITLE_MAX = 60;
20
+ const META_DESC_MAX = 160;
21
+ const KEY_TAKEAWAY_MAX = 240;
22
+ const LLMS_DESC_MAX = 160;
23
+ function seoBrandChannel(field) {
24
+ if (field === 'metaDescription' || field === 'ogDescription')
25
+ return 'meta_description';
26
+ return undefined;
27
+ }
28
+ const inputCls = 'w-full rounded-[7px] border border-[var(--bdr)] bg-[var(--card)] px-2.5 py-1.5 text-[12.5px] text-[var(--txt)] placeholder:text-[var(--muted)] focus:border-[var(--acc)] focus:outline-none';
29
+ function CharCount({ value, max }) {
30
+ const over = value.length > max;
31
+ return (_jsxs("span", { className: `text-[11px] ${over ? 'text-[var(--err)]' : 'text-[var(--muted)]'}`, children: [value.length, "/", max] }));
32
+ }
33
+ function PaneField({ label, children, hint, }) {
34
+ // Associate the visible label with its control for screen readers. We inject
35
+ // a generated id onto the single child input/textarea (unless it already has
36
+ // one) and point the <label htmlFor> at it.
37
+ const generatedId = useId();
38
+ let control = children;
39
+ if (isValidElement(children) && children.props.id == null) {
40
+ control = cloneElement(children, { id: generatedId });
41
+ }
42
+ const controlId = isValidElement(control) ? control.props.id : undefined;
43
+ return (_jsxs("div", { className: "mb-3 last:mb-0", children: [_jsxs("div", { className: "mb-1 flex items-center justify-between gap-2", children: [_jsx("label", { htmlFor: controlId, className: "text-[11.5px] font-medium text-[var(--sub)]", children: label }), hint] }), control] }));
44
+ }
45
+ function PaneToggleRow({ label, hint, checked, onCheckedChange, }) {
46
+ return (_jsxs("div", { className: "flex items-center justify-between gap-3 py-1.5", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("div", { className: "text-[12.5px] font-medium text-[var(--txt)]", children: label }), _jsx("div", { className: "text-[11px] text-[var(--muted)]", children: hint })] }), _jsx(Toggle, { checked: checked, onCheckedChange: onCheckedChange, "aria-label": label })] }));
47
+ }
48
+ export function SeoEditorPane({ entityType, entityId, onClose, onSaved }) {
49
+ const [record, setRecord] = useState(null);
50
+ const [loading, setLoading] = useState(true);
51
+ const [error, setError] = useState(null);
52
+ const [saving, setSaving] = useState(false);
53
+ const [aiBusy, setAiBusy] = useState(null);
54
+ const [aiFixBusy, setAiFixBusy] = useState(null);
55
+ const [aiAlignments, setAiAlignments] = useState({});
56
+ const [form, setForm] = useState({});
57
+ useEffect(() => {
58
+ let alive = true;
59
+ setLoading(true);
60
+ setError(null);
61
+ fetchSeoContentRecord(entityType, entityId)
62
+ .then((rec) => {
63
+ if (!alive)
64
+ return;
65
+ if (!rec) {
66
+ setError('Could not load this record.');
67
+ return;
68
+ }
69
+ setRecord(rec);
70
+ setForm({
71
+ metaTitle: rec.metaTitle ?? '',
72
+ metaDescription: rec.metaDescription ?? '',
73
+ canonicalUrl: rec.canonicalUrl ?? '',
74
+ focusKeyword: rec.focusKeyword ?? '',
75
+ keyTakeaway: rec.keyTakeaway ?? '',
76
+ ogTitle: rec.ogTitle ?? '',
77
+ ogDescription: rec.ogDescription ?? '',
78
+ structuredDataType: rec.structuredDataType ?? 'WebPage',
79
+ noindex: rec.noindex,
80
+ nofollow: rec.nofollow,
81
+ llmsInclude: rec.llmsInclude ?? 'AUTO',
82
+ llmsDescription: rec.llmsDescription ?? '',
83
+ llmsSection: rec.llmsSection ?? '',
84
+ llmsOptional: rec.llmsOptional ?? false,
85
+ });
86
+ })
87
+ .catch((e) => alive && setError(e instanceof Error ? e.message : 'Failed to load'))
88
+ .finally(() => alive && setLoading(false));
89
+ return () => {
90
+ alive = false;
91
+ };
92
+ }, [entityType, entityId]);
93
+ const update = (patch) => setForm((f) => ({ ...f, ...patch }));
94
+ async function handleAiGenerate(field) {
95
+ setAiBusy(field);
96
+ try {
97
+ const result = await generateSeoField(field, { entityType, entityId });
98
+ if (result.unavailable) {
99
+ toast.error('AI is not configured. Add an AI provider to enable suggestions.');
100
+ return;
101
+ }
102
+ if (result.text) {
103
+ update({ [field]: result.text });
104
+ if (result.brandAlignment) {
105
+ setAiAlignments((prev) => ({ ...prev, [field]: result.brandAlignment }));
106
+ }
107
+ toast.success('AI suggestion applied — review before saving.');
108
+ }
109
+ else {
110
+ toast.error('No suggestion was returned.');
111
+ }
112
+ }
113
+ catch {
114
+ toast.error('AI request failed.');
115
+ }
116
+ finally {
117
+ setAiBusy(null);
118
+ }
119
+ }
120
+ async function handleAiFix(field) {
121
+ const text = form[field] ?? '';
122
+ if (!text.trim())
123
+ return;
124
+ setAiFixBusy(field);
125
+ try {
126
+ const res = await fixBrandVoiceContent({
127
+ content: text,
128
+ channel: seoBrandChannel(field),
129
+ });
130
+ if (!res.ok || !res.result) {
131
+ toast.error(res.error ?? 'Could not fix copy for brand voice.');
132
+ return;
133
+ }
134
+ update({ [field]: res.result.text });
135
+ setAiAlignments((prev) => ({ ...prev, [field]: res.result.afterScore }));
136
+ toast.success('Copy adjusted to match brand voice.');
137
+ }
138
+ finally {
139
+ setAiFixBusy(null);
140
+ }
141
+ }
142
+ function alignmentRow(field) {
143
+ const alignment = aiAlignments[field];
144
+ if (!alignment)
145
+ return null;
146
+ const fixing = aiFixBusy === field;
147
+ return (_jsxs("div", { className: "mt-2 flex flex-wrap items-center gap-2", children: [_jsx(BrandVoiceAlignmentBadge, { alignment: alignment, compact: true }), alignment.score < 85 && (_jsxs("button", { type: "button", onClick: () => void handleAiFix(field), disabled: fixing || aiBusy !== null, className: "inline-flex items-center gap-1 rounded-md px-2 py-0.5 text-[11.5px] 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 disabled:opacity-60", children: [fixing ? (_jsx(Loader2, { className: "h-3.5 w-3.5 animate-spin", "aria-hidden": true })) : (_jsx(Wand2, { className: "h-3.5 w-3.5", "aria-hidden": true })), "Fix for brand voice"] }))] }));
148
+ }
149
+ async function handleSave() {
150
+ setSaving(true);
151
+ const res = await updateSeoFields(entityType, entityId, form);
152
+ setSaving(false);
153
+ if (res.error) {
154
+ toast.error(res.error);
155
+ return;
156
+ }
157
+ toast.success('SEO fields saved.');
158
+ onSaved?.();
159
+ }
160
+ const title = form.metaTitle || record?.title || 'Untitled';
161
+ const desc = form.metaDescription || 'No meta description set. Search engines may generate one.';
162
+ const url = record?.url ?? '';
163
+ function aiButton(field) {
164
+ return (_jsxs("button", { type: "button", onClick: () => void handleAiGenerate(field), disabled: aiBusy !== null, className: "inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[11px] 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 disabled:opacity-60", children: [_jsx(Sparkles, { className: `h-3 w-3 ${aiBusy === field ? 'animate-pulse' : ''}`, "aria-hidden": true }), aiBusy === field ? 'Generating…' : 'AI Generate'] }));
165
+ }
166
+ return (_jsxs(_Fragment, { children: [_jsxs(InspectorPaneHeader, { onClose: onClose, closeLabel: "Close SEO editor", children: [_jsx("div", { className: "truncate text-[13.5px] font-semibold text-[var(--txt)]", children: record?.title ?? 'Edit SEO' }), url && _jsx("div", { className: "mt-0.5 truncate text-[11.5px] text-[var(--muted)]", children: url })] }), _jsx(InspectorPaneBody, { children: loading ? (_jsx("div", { className: "px-4 py-3.5", children: _jsx(SeoLoading, {}) })) : error ? (_jsx("div", { className: "px-4 py-3.5", children: _jsx(SeoErrorState, { message: error }) })) : record ? (_jsxs(_Fragment, { children: [_jsx(InspectorPaneSection, { title: "Google Preview", children: _jsxs("div", { className: "rounded-[7px] border border-[var(--bdr)] bg-[var(--card)] p-3", children: [_jsx("p", { className: "truncate text-[11.5px] text-[var(--suc)]", children: url }), _jsx("p", { className: "text-[15px] leading-snug text-[var(--acc)]", children: title }), _jsx("p", { className: "line-clamp-2 text-[12px] text-[var(--sub)]", children: desc })] }) }), _jsxs(InspectorPaneSection, { title: "Meta Tags", children: [_jsx(PaneField, { label: "Meta title", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(CharCount, { value: form.metaTitle ?? '', max: META_TITLE_MAX }), aiButton('metaTitle')] }), children: _jsx("input", { className: inputCls, value: form.metaTitle ?? '', onChange: (e) => update({ metaTitle: e.target.value }), placeholder: "Page title for search results" }) }), _jsx(PaneField, { label: "Meta description", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(CharCount, { value: form.metaDescription ?? '', max: META_DESC_MAX }), aiButton('metaDescription')] }), children: _jsx("textarea", { className: `${inputCls} min-h-20 resize-y`, value: form.metaDescription ?? '', onChange: (e) => update({ metaDescription: e.target.value }), placeholder: "Short summary shown under the title in search results" }) }), alignmentRow('metaDescription')] }), _jsxs(InspectorPaneSection, { title: "Focus Keyword", children: [_jsx(PaneField, { label: "Target keyword", hint: aiButton('focusKeyword'), children: _jsx("input", { className: inputCls, value: form.focusKeyword ?? '', onChange: (e) => update({ focusKeyword: e.target.value }), placeholder: "Primary keyword this page targets" }) }), _jsx(PaneField, { label: "Key takeaway", hint: _jsxs("span", { className: "flex items-center gap-2", children: [_jsx(CharCount, { value: form.keyTakeaway ?? '', max: KEY_TAKEAWAY_MAX }), aiButton('keyTakeaway')] }), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.keyTakeaway ?? '', onChange: (e) => update({ keyTakeaway: e.target.value }), placeholder: "One or two sentences AI answer engines can quote \u2014 what is this page about?" }) })] }), _jsxs(InspectorPaneSection, { title: "Open Graph", subtitle: "Social sharing", children: [_jsx(PaneField, { label: "OG title", hint: aiButton('ogTitle'), children: _jsx("input", { className: inputCls, value: form.ogTitle ?? '', onChange: (e) => update({ ogTitle: e.target.value }), placeholder: form.metaTitle || 'Title when shared on social media' }) }), _jsx(PaneField, { label: "OG description", hint: aiButton('ogDescription'), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.ogDescription ?? '', onChange: (e) => update({ ogDescription: e.target.value }), placeholder: form.metaDescription || 'Description when shared on social media' }) }), alignmentRow('ogDescription'), _jsxs("div", { className: "mt-3 overflow-hidden rounded-[7px] border border-[var(--bdr)]", children: [record.ogImage ? (
167
+ // eslint-disable-next-line @next/next/no-img-element
168
+ _jsx("img", { src: record.ogImage, alt: `Social preview for ${record.title}`, className: "aspect-[1200/630] w-full bg-[var(--bg)] object-cover" })) : (_jsx("div", { className: "flex aspect-[1200/630] w-full items-center justify-center bg-[var(--bg)] text-[12px] text-[var(--muted)]", children: "No OG image set" })), _jsxs("div", { className: "p-2.5", children: [_jsx("p", { className: "truncate text-[10.5px] text-[var(--muted)] uppercase", children: url.replace(/^https?:\/\//, '').split('/')[0] }), _jsx("p", { className: "truncate text-[12.5px] font-medium text-[var(--txt)]", children: form.ogTitle || title }), _jsx("p", { className: "line-clamp-1 text-[12px] text-[var(--sub)]", children: form.ogDescription || desc })] })] })] }), _jsxs(InspectorPaneSection, { title: "Technical SEO", children: [_jsx(PaneField, { label: "Canonical URL", children: _jsx("input", { className: inputCls, value: form.canonicalUrl ?? '', onChange: (e) => update({ canonicalUrl: e.target.value }), placeholder: url || 'https://example.com/page' }) }), !form.canonicalUrl?.trim() && url ? (_jsxs("p", { className: "mb-3 text-[11px] text-[var(--muted)]", children: ["Auto-canonical: ", record.canonicalUrl ?? url] })) : null, _jsx(PaneField, { label: "Schema type", children: _jsx("select", { className: inputCls, value: form.structuredDataType ?? 'WebPage', onChange: (e) => update({ structuredDataType: e.target.value }), children: SEO_SCHEMA_TYPES.map((t) => (_jsx("option", { value: t, children: t }, t))) }) }), _jsx(PaneToggleRow, { label: "No-index", hint: "Hide this page from search engines", checked: !!form.noindex, onCheckedChange: (v) => update({ noindex: v }) }), _jsx(PaneToggleRow, { label: "No-follow", hint: "Tell crawlers not to follow links on this page", checked: !!form.nofollow, onCheckedChange: (v) => update({ nofollow: v }) })] }), _jsxs(InspectorPaneSection, { title: "AI Discovery", subtitle: "llms.txt", children: [_jsxs("p", { className: "mb-3 text-[11px] text-[var(--muted)]", children: ["Controls how this page appears in the curated ", _jsx("code", { children: "llms.txt" }), " guide that AI agents read. It does not affect search ranking."] }), _jsx(PaneField, { label: "Include in llms.txt", children: _jsxs("select", { className: inputCls, value: form.llmsInclude ?? 'AUTO', onChange: (e) => update({ llmsInclude: e.target.value }), children: [_jsx("option", { value: "AUTO", children: "Auto \u2014 include when eligible" }), _jsx("option", { value: "ALWAYS", children: "Always \u2014 pin it in" }), _jsx("option", { value: "NEVER", children: "Never \u2014 exclude" })] }) }), _jsx(PaneField, { label: "Agent description", hint: _jsx(CharCount, { value: form.llmsDescription ?? '', max: LLMS_DESC_MAX }), children: _jsx("textarea", { className: `${inputCls} min-h-16 resize-y`, value: form.llmsDescription ?? '', onChange: (e) => update({ llmsDescription: e.target.value }), placeholder: form.keyTakeaway ||
169
+ form.metaDescription ||
170
+ 'One line for an AI agent — what this page covers and why it matters.' }) }), _jsx(PaneField, { label: "Section", children: _jsx("input", { className: inputCls, value: form.llmsSection ?? '', onChange: (e) => update({ llmsSection: e.target.value }), placeholder: "Defaults to the content type" }) }), _jsx(PaneToggleRow, { label: "Optional", hint: "Group under \u201COptional\u201D \u2014 agents skip these first when context is tight", checked: !!form.llmsOptional, onCheckedChange: (v) => update({ llmsOptional: v }) })] }), _jsx(InspectorPaneSection, { children: (() => {
171
+ const meta = gradeMeta(record.seoGrade);
172
+ return (_jsxs("div", { className: `flex items-center gap-2 rounded-[7px] px-3 py-2 text-[12.5px] ${meta.bg} ${meta.text}`, children: [_jsx(Check, { className: "h-4 w-4 shrink-0", "aria-hidden": true }), _jsxs("span", { children: ["Current SEO score: ", _jsx("span", { className: "font-medium", children: record.seoScore }), " (", meta.label, ")"] })] }));
173
+ })() })] })) : null }), _jsx(InspectorPaneFooter, { children: _jsx("button", { type: "button", onClick: () => void handleSave(), disabled: saving || loading || !!error, className: "w-full rounded-[7px] bg-[var(--acc)] px-3 py-2 text-[13px] font-semibold text-white transition-colors duration-[var(--motion-fast)] hover:opacity-90 focus-visible:ring-2 focus-visible:ring-[var(--ring)] focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50", children: saving ? 'Saving…' : 'Save Changes' }) })] }));
174
+ }
175
+ //# sourceMappingURL=SeoEditorPane.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeoEditorPane.js","sourceRoot":"","sources":["../../../src/components/seo/SeoEditorPane.tsx"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { HTMLAttributes, ReactNode } from 'react';
2
2
  import { type VariantProps } from '../../lib/cv.js';
3
3
  declare const badge: (props?: ({
4
- tone?: "warning" | "info" | "primary" | "danger" | "neutral" | "success" | undefined;
4
+ tone?: "warning" | "info" | "success" | "danger" | "neutral" | "primary" | undefined;
5
5
  size?: "sm" | "md" | "lg" | undefined;
6
6
  } & {
7
7
  class?: string | false | null | undefined;
@@ -1,7 +1,7 @@
1
1
  import { type ButtonHTMLAttributes, type ReactNode } from 'react';
2
2
  import { type VariantProps } from '../../lib/cv.js';
3
3
  declare const button: (props?: ({
4
- variant?: "link" | "primary" | "secondary" | "danger" | "ghost" | "outline" | undefined;
4
+ variant?: "link" | "danger" | "primary" | "secondary" | "ghost" | "outline" | undefined;
5
5
  size?: "sm" | "md" | "lg" | "icon" | "xs" | undefined;
6
6
  } & {
7
7
  class?: string | false | null | undefined;
@@ -8,7 +8,7 @@ import { type VariantProps } from '../../lib/cv.js';
8
8
  * do not roll per-view status pills.
9
9
  */
10
10
  declare const statusBadge: (props?: ({
11
- tone?: "warning" | "info" | "muted" | "danger" | "neutral" | "success" | undefined;
11
+ tone?: "warning" | "info" | "muted" | "success" | "danger" | "neutral" | undefined;
12
12
  } & {
13
13
  class?: string | false | null | undefined;
14
14
  className?: string | false | null | undefined;
@@ -0,0 +1,18 @@
1
+ /**
2
+ * Signs the user out after `timeoutMs` of no user activity, when enabled by
3
+ * the Settings → Security "Idle auto-logout" policy.
4
+ *
5
+ * Deliberately lightweight: activity events only stamp a ref (no state, no
6
+ * re-renders), and a single coarse interval compares the last-activity stamp
7
+ * against the deadline. Returning to a hidden tab re-checks immediately via
8
+ * `visibilitychange`, so a tab left overnight logs out as soon as it's seen
9
+ * (or at the next interval tick) rather than staying signed in.
10
+ *
11
+ * All listeners and the interval are torn down on unmount or when disabled.
12
+ */
13
+ export declare function useIdleLogout(options: {
14
+ enabled: boolean;
15
+ timeoutMs: number;
16
+ onIdle: () => void;
17
+ }): void;
18
+ //# sourceMappingURL=useIdleLogout.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useIdleLogout.d.ts","sourceRoot":"","sources":["../../src/hooks/useIdleLogout.ts"],"names":[],"mappings":"AAOA;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE;IACrC,OAAO,EAAE,OAAO,CAAA;IAChB,SAAS,EAAE,MAAM,CAAA;IACjB,MAAM,EAAE,MAAM,IAAI,CAAA;CACnB,GAAG,IAAI,CAqDP"}