@actuate-media/cms-admin 0.8.2 → 0.10.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 (35) hide show
  1. package/LICENSE +21 -21
  2. package/dist/AdminRoot.d.ts.map +1 -1
  3. package/dist/AdminRoot.js +4 -0
  4. package/dist/AdminRoot.js.map +1 -1
  5. package/dist/actuate-admin.css +1 -1
  6. package/dist/components/SchedulePublishDialog.d.ts +18 -0
  7. package/dist/components/SchedulePublishDialog.d.ts.map +1 -0
  8. package/dist/components/SchedulePublishDialog.js +106 -0
  9. package/dist/components/SchedulePublishDialog.js.map +1 -0
  10. package/dist/components/SharePreviewLinkDialog.d.ts +17 -0
  11. package/dist/components/SharePreviewLinkDialog.d.ts.map +1 -0
  12. package/dist/components/SharePreviewLinkDialog.js +83 -0
  13. package/dist/components/SharePreviewLinkDialog.js.map +1 -0
  14. package/dist/index.d.ts +5 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +3 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/layout/Sidebar.d.ts.map +1 -1
  19. package/dist/layout/Sidebar.js +3 -2
  20. package/dist/layout/Sidebar.js.map +1 -1
  21. package/dist/views/ApiKeys.d.ts +5 -0
  22. package/dist/views/ApiKeys.d.ts.map +1 -0
  23. package/dist/views/ApiKeys.js +154 -0
  24. package/dist/views/ApiKeys.js.map +1 -0
  25. package/dist/views/DocumentEdit.d.ts.map +1 -1
  26. package/dist/views/DocumentEdit.js +15 -3
  27. package/dist/views/DocumentEdit.js.map +1 -1
  28. package/package.json +2 -2
  29. package/src/AdminRoot.tsx +5 -0
  30. package/src/components/SchedulePublishDialog.tsx +241 -0
  31. package/src/components/SharePreviewLinkDialog.tsx +227 -0
  32. package/src/index.ts +5 -0
  33. package/src/layout/Sidebar.tsx +3 -0
  34. package/src/views/ApiKeys.tsx +512 -0
  35. package/src/views/DocumentEdit.tsx +81 -1
@@ -0,0 +1,106 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useEffect, useState } from 'react';
4
+ import { Calendar, Clock, Loader2, X } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { cmsApi } from '../lib/api.js';
7
+ /**
8
+ * Convert a Date or ISO string to the `YYYY-MM-DDTHH:mm` shape that the
9
+ * `<input type="datetime-local">` element expects, in the user's local
10
+ * timezone (the input is timezone-naive but we present + parse it as local).
11
+ */
12
+ function toLocalDateTimeInput(value) {
13
+ if (!value)
14
+ return '';
15
+ const d = typeof value === 'string' ? new Date(value) : value;
16
+ if (Number.isNaN(d.getTime()))
17
+ return '';
18
+ const pad = (n) => String(n).padStart(2, '0');
19
+ return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}T${pad(d.getHours())}:${pad(d.getMinutes())}`;
20
+ }
21
+ /** Round "now + 1 hour" to the next quarter-hour for a friendly default. */
22
+ function defaultScheduleTime() {
23
+ const d = new Date(Date.now() + 60 * 60 * 1000);
24
+ d.setMinutes(Math.ceil(d.getMinutes() / 15) * 15, 0, 0);
25
+ return toLocalDateTimeInput(d);
26
+ }
27
+ export function SchedulePublishDialog({ collectionSlug, documentId, scheduledAt, scheduledUnpublishAt, open, onClose, onScheduled, }) {
28
+ const [publishAt, setPublishAt] = useState('');
29
+ const [unpublishAt, setUnpublishAt] = useState('');
30
+ const [includeUnpublish, setIncludeUnpublish] = useState(false);
31
+ const [saving, setSaving] = useState(false);
32
+ const [cancelling, setCancelling] = useState(false);
33
+ const hasExistingSchedule = Boolean(scheduledAt || scheduledUnpublishAt);
34
+ useEffect(() => {
35
+ if (!open)
36
+ return;
37
+ setPublishAt(scheduledAt ? toLocalDateTimeInput(scheduledAt) : defaultScheduleTime());
38
+ setUnpublishAt(scheduledUnpublishAt ? toLocalDateTimeInput(scheduledUnpublishAt) : '');
39
+ setIncludeUnpublish(Boolean(scheduledUnpublishAt));
40
+ }, [open, scheduledAt, scheduledUnpublishAt]);
41
+ async function handleSave() {
42
+ if (!publishAt && !(includeUnpublish && unpublishAt)) {
43
+ toast.error('Pick a publish or unpublish time');
44
+ return;
45
+ }
46
+ // datetime-local is parsed by the browser as local time; new Date() on
47
+ // that string respects the user's timezone and serialises to a UTC
48
+ // ISO string the server can compare against `Date.now()` cleanly.
49
+ const publishDate = publishAt ? new Date(publishAt) : null;
50
+ const unpublishDate = includeUnpublish && unpublishAt ? new Date(unpublishAt) : null;
51
+ if (publishDate && publishDate.getTime() <= Date.now()) {
52
+ toast.error('Publish time must be in the future');
53
+ return;
54
+ }
55
+ if (unpublishDate && unpublishDate.getTime() <= Date.now()) {
56
+ toast.error('Unpublish time must be in the future');
57
+ return;
58
+ }
59
+ if (publishDate && unpublishDate && unpublishDate <= publishDate) {
60
+ toast.error('Unpublish time must be after publish time');
61
+ return;
62
+ }
63
+ setSaving(true);
64
+ const res = await cmsApi(`/collections/${collectionSlug}/${documentId}/schedule`, {
65
+ method: 'POST',
66
+ body: JSON.stringify({
67
+ scheduledAt: publishDate ? publishDate.toISOString() : null,
68
+ scheduledUnpublishAt: unpublishDate ? unpublishDate.toISOString() : null,
69
+ }),
70
+ });
71
+ setSaving(false);
72
+ if (res.error) {
73
+ toast.error(res.error);
74
+ return;
75
+ }
76
+ toast.success(publishDate ? 'Publish scheduled' : 'Unpublish scheduled');
77
+ onScheduled?.({
78
+ status: res.data?.status ?? 'SCHEDULED',
79
+ scheduledAt: res.data?.scheduledAt ?? (publishDate ? publishDate.toISOString() : null),
80
+ scheduledUnpublishAt: res.data?.scheduledUnpublishAt ?? (unpublishDate ? unpublishDate.toISOString() : null),
81
+ });
82
+ onClose();
83
+ }
84
+ async function handleCancelSchedule() {
85
+ setCancelling(true);
86
+ const res = await cmsApi(`/collections/${collectionSlug}/${documentId}/schedule`, {
87
+ method: 'DELETE',
88
+ });
89
+ setCancelling(false);
90
+ if (res.error) {
91
+ toast.error(res.error);
92
+ return;
93
+ }
94
+ toast.success('Schedule cancelled');
95
+ onScheduled?.({
96
+ status: res.data?.status ?? 'DRAFT',
97
+ scheduledAt: null,
98
+ scheduledUnpublishAt: null,
99
+ });
100
+ onClose();
101
+ }
102
+ if (!open)
103
+ return null;
104
+ return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", children: [_jsx("div", { className: "fixed inset-0 bg-black/40", onClick: onClose }), _jsxs("div", { className: "relative w-full max-w-md rounded-lg bg-white shadow-xl", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Calendar, { className: "h-5 w-5 text-gray-600" }), _jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Schedule publishing" })] }), _jsx("button", { onClick: onClose, className: "rounded-lg p-1.5 transition-colors hover:bg-gray-100", children: _jsx(X, { className: "h-5 w-5 text-gray-500" }) })] }), _jsxs("div", { className: "space-y-4 px-4 py-4", children: [_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { className: "text-sm font-medium text-gray-700", children: "Publish at" }), _jsxs("div", { className: "relative", children: [_jsx(Clock, { className: "pointer-events-none absolute left-2.5 top-2.5 h-4 w-4 text-gray-400" }), _jsx("input", { type: "datetime-local", value: publishAt, onChange: (e) => setPublishAt(e.target.value), min: toLocalDateTimeInput(new Date(Date.now() + 60 * 1000)), className: "w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500" })] }), _jsx("p", { className: "text-xs text-gray-500", children: "The document will move from DRAFT to PUBLISHED at this time (your local timezone)." })] }), _jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-700", children: [_jsx("input", { type: "checkbox", checked: includeUnpublish, onChange: (e) => setIncludeUnpublish(e.target.checked), className: "h-4 w-4 rounded border-gray-300 text-blue-600 focus:ring-blue-500" }), "Also schedule an unpublish"] }), includeUnpublish && (_jsxs("div", { className: "space-y-1.5", children: [_jsx("label", { className: "text-sm font-medium text-gray-700", children: "Unpublish at" }), _jsxs("div", { className: "relative", children: [_jsx(Clock, { className: "pointer-events-none absolute left-2.5 top-2.5 h-4 w-4 text-gray-400" }), _jsx("input", { type: "datetime-local", value: unpublishAt, onChange: (e) => setUnpublishAt(e.target.value), min: publishAt || toLocalDateTimeInput(new Date(Date.now() + 60 * 1000)), className: "w-full rounded-md border border-gray-300 bg-white py-2 pl-9 pr-3 text-sm focus:border-blue-500 focus:outline-none focus:ring-1 focus:ring-blue-500" })] })] }))] }), _jsxs("div", { className: "flex items-center justify-between gap-2 border-t border-gray-200 px-4 py-3", children: [hasExistingSchedule ? (_jsxs("button", { onClick: handleCancelSchedule, disabled: cancelling || saving, className: "inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm font-medium text-red-700 hover:bg-red-50 disabled:opacity-50", children: [cancelling ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin" })) : (_jsx(X, { className: "h-4 w-4" })), "Cancel schedule"] })) : (_jsx("span", {})), _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("button", { onClick: onClose, className: "rounded-md px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-100", children: "Close" }), _jsxs("button", { onClick: handleSave, disabled: saving || cancelling, className: "inline-flex items-center gap-1.5 rounded-md bg-blue-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50", children: [saving ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin" })) : (_jsx(Calendar, { className: "h-4 w-4" })), hasExistingSchedule ? 'Reschedule' : 'Schedule'] })] })] })] })] }));
105
+ }
106
+ //# sourceMappingURL=SchedulePublishDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SchedulePublishDialog.js","sourceRoot":"","sources":["../../src/components/SchedulePublishDialog.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ export interface SharePreviewLinkDialogProps {
2
+ collectionSlug: string;
3
+ documentId: string;
4
+ /** Document slug, used to build a friendly preview URL. */
5
+ documentSlug?: string | null;
6
+ /**
7
+ * Optional site URL (https://...) to prepend. If omitted we just emit the
8
+ * relative path and ask the admin to share it however they want.
9
+ */
10
+ siteUrl?: string;
11
+ /** Custom URL prefix for this collection (e.g. /blog). Defaults to slug. */
12
+ urlPrefix?: string;
13
+ open: boolean;
14
+ onClose: () => void;
15
+ }
16
+ export declare function SharePreviewLinkDialog({ collectionSlug, documentId, documentSlug, siteUrl, urlPrefix, open, onClose, }: SharePreviewLinkDialogProps): import("react/jsx-runtime").JSX.Element | null;
17
+ //# sourceMappingURL=SharePreviewLinkDialog.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharePreviewLinkDialog.d.ts","sourceRoot":"","sources":["../../src/components/SharePreviewLinkDialog.tsx"],"names":[],"mappings":"AAOA,MAAM,WAAW,2BAA2B;IAC1C,cAAc,EAAE,MAAM,CAAA;IACtB,UAAU,EAAE,MAAM,CAAA;IAClB,2DAA2D;IAC3D,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC5B;;;OAGG;IACH,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,IAAI,EAAE,OAAO,CAAA;IACb,OAAO,EAAE,MAAM,IAAI,CAAA;CACpB;AAyCD,wBAAgB,sBAAsB,CAAC,EACrC,cAAc,EACd,UAAU,EACV,YAAY,EACZ,OAAO,EACP,SAAS,EACT,IAAI,EACJ,OAAO,GACR,EAAE,2BAA2B,kDA4J7B"}
@@ -0,0 +1,83 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useState } from 'react';
4
+ import { Check, Copy, Link2, Loader2, Share2, X } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { cmsApi } from '../lib/api.js';
7
+ const TTL_CHOICES = [
8
+ { label: '1 hour', seconds: 60 * 60, hint: 'Quick review' },
9
+ { label: '1 day', seconds: 24 * 60 * 60, hint: 'Single workday' },
10
+ { label: '7 days', seconds: 7 * 24 * 60 * 60, hint: 'Client review' },
11
+ { label: '30 days', seconds: 30 * 24 * 60 * 60, hint: 'Long-running staging' },
12
+ ];
13
+ function buildPreviewUrl({ siteUrl, urlPrefix, collectionSlug, documentSlug, token, }) {
14
+ const base = (siteUrl ?? '').replace(/\/+$/, '');
15
+ // Build the same path /resolve would match: <urlPrefix>/<slug>, or
16
+ // /<slug> for top-level page collections. If there's no slug yet we
17
+ // fall back to /admin's preview endpoint as a safety net.
18
+ const slug = documentSlug?.toString().trim() ?? '';
19
+ if (!slug) {
20
+ return `${base}/preview/${collectionSlug}/_?token=${encodeURIComponent(token)}`;
21
+ }
22
+ const prefix = (urlPrefix ?? collectionSlug).replace(/^\/+|\/+$/g, '');
23
+ const path = prefix ? `/${prefix}/${slug}` : `/${slug}`;
24
+ return `${base}${path}?preview=${encodeURIComponent(token)}`;
25
+ }
26
+ export function SharePreviewLinkDialog({ collectionSlug, documentId, documentSlug, siteUrl, urlPrefix, open, onClose, }) {
27
+ const [ttl, setTtl] = useState(TTL_CHOICES[2].seconds);
28
+ const [token, setToken] = useState('');
29
+ const [previewUrl, setPreviewUrl] = useState('');
30
+ const [expiresAt, setExpiresAt] = useState('');
31
+ const [generating, setGenerating] = useState(false);
32
+ const [copied, setCopied] = useState(false);
33
+ async function generate() {
34
+ setGenerating(true);
35
+ const res = await cmsApi('/preview/token', {
36
+ method: 'POST',
37
+ body: JSON.stringify({
38
+ collection: collectionSlug,
39
+ documentId,
40
+ ttlSeconds: ttl,
41
+ }),
42
+ });
43
+ setGenerating(false);
44
+ if (res.error || !res.data) {
45
+ toast.error(res.error ?? 'Failed to create preview token');
46
+ return;
47
+ }
48
+ const data = res.data;
49
+ setToken(data.token);
50
+ setExpiresAt(data.expiresAt ?? '');
51
+ const url = buildPreviewUrl({
52
+ siteUrl,
53
+ urlPrefix,
54
+ collectionSlug,
55
+ documentSlug: data.slug ?? documentSlug,
56
+ token: data.token,
57
+ });
58
+ setPreviewUrl(url);
59
+ setCopied(false);
60
+ }
61
+ async function copyToClipboard() {
62
+ if (!previewUrl)
63
+ return;
64
+ try {
65
+ await navigator.clipboard.writeText(previewUrl);
66
+ setCopied(true);
67
+ toast.success('Preview link copied');
68
+ setTimeout(() => setCopied(false), 2000);
69
+ }
70
+ catch {
71
+ toast.error("Couldn't copy to clipboard");
72
+ }
73
+ }
74
+ if (!open)
75
+ return null;
76
+ return (_jsxs("div", { className: "fixed inset-0 z-50 flex items-center justify-center p-4", children: [_jsx("div", { className: "fixed inset-0 bg-black/40", onClick: onClose }), _jsxs("div", { className: "relative w-full max-w-lg rounded-lg bg-white shadow-xl", children: [_jsxs("div", { className: "flex items-center justify-between border-b border-gray-200 px-4 py-3", children: [_jsxs("div", { className: "flex items-center gap-2", children: [_jsx(Share2, { className: "h-5 w-5 text-gray-600" }), _jsx("h2", { className: "text-lg font-semibold text-gray-900", children: "Share preview link" })] }), _jsx("button", { onClick: onClose, className: "rounded-lg p-1.5 transition-colors hover:bg-gray-100", children: _jsx(X, { className: "h-5 w-5 text-gray-500" }) })] }), _jsxs("div", { className: "space-y-4 px-4 py-4", children: [_jsx("p", { className: "text-sm text-gray-600", children: "Generate a signed URL that lets anyone with the link view the current draft of this document \u2014 even if it's never been published." }), _jsxs("div", { className: "space-y-2", children: [_jsx("label", { className: "text-sm font-medium text-gray-700", children: "Link lifetime" }), _jsx("div", { className: "grid grid-cols-2 gap-2", children: TTL_CHOICES.map((choice) => {
77
+ const selected = ttl === choice.seconds;
78
+ return (_jsxs("button", { onClick: () => setTtl(choice.seconds), className: `rounded-md border px-3 py-2 text-left text-sm transition-colors ${selected
79
+ ? 'border-blue-500 bg-blue-50 text-blue-900'
80
+ : 'border-gray-200 hover:border-gray-300 hover:bg-gray-50'}`, children: [_jsx("div", { className: "font-medium", children: choice.label }), _jsx("div", { className: "text-xs text-gray-500", children: choice.hint })] }, choice.seconds));
81
+ }) }), _jsx("p", { className: "text-xs text-gray-500", children: "Preview tokens can't be revoked individually \u2014 pick the shortest TTL that fits." })] }), previewUrl ? (_jsxs("div", { className: "space-y-2 rounded-lg border border-gray-200 bg-gray-50 p-3", children: [_jsx("label", { className: "text-xs font-medium uppercase tracking-wide text-gray-500", children: "Preview URL" }), _jsxs("div", { className: "flex items-stretch gap-2", children: [_jsx("input", { readOnly: true, value: previewUrl, onFocus: (e) => e.currentTarget.select(), className: "flex-1 rounded-md border border-gray-300 bg-white px-2 py-1.5 font-mono text-xs" }), _jsxs("button", { onClick: copyToClipboard, className: "inline-flex items-center gap-1.5 rounded-md bg-gray-900 px-3 py-1.5 text-xs font-medium text-white hover:bg-gray-700", children: [copied ? _jsx(Check, { className: "h-3.5 w-3.5" }) : _jsx(Copy, { className: "h-3.5 w-3.5" }), copied ? 'Copied' : 'Copy'] })] }), expiresAt && (_jsxs("p", { className: "text-xs text-gray-500", children: ["Expires ", new Date(expiresAt).toLocaleString()] }))] })) : null] }), _jsxs("div", { className: "flex items-center justify-end gap-2 border-t border-gray-200 px-4 py-3", children: [_jsx("button", { onClick: onClose, className: "rounded-md px-3 py-1.5 text-sm text-gray-700 hover:bg-gray-100", children: "Close" }), _jsxs("button", { onClick: generate, disabled: generating, className: "inline-flex items-center gap-1.5 rounded-md bg-blue-600 px-3 py-1.5 text-sm font-medium text-white hover:bg-blue-700 disabled:opacity-50", children: [generating ? (_jsx(Loader2, { className: "h-4 w-4 animate-spin" })) : (_jsx(Link2, { className: "h-4 w-4" })), previewUrl ? 'Generate new link' : 'Generate link'] })] })] })] }));
82
+ }
83
+ //# sourceMappingURL=SharePreviewLinkDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SharePreviewLinkDialog.js","sourceRoot":"","sources":["../../src/components/SharePreviewLinkDialog.tsx"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -19,6 +19,7 @@ export { FormSubmissions } from './views/FormSubmissions.js';
19
19
  export { Redirects } from './views/Redirects.js';
20
20
  export { Users } from './views/Users.js';
21
21
  export { Settings } from './views/Settings.js';
22
+ export { ApiKeys } from './views/ApiKeys.js';
22
23
  export { SEO } from './views/SEO.js';
23
24
  export { SetupWizard } from './views/SetupWizard.js';
24
25
  export type { SetupWizardProps } from './views/SetupWizard.js';
@@ -44,6 +45,10 @@ export type { SEOData, SEOPanelProps } from './components/SEOPanel.js';
44
45
  export { LivePreview } from './components/LivePreview.js';
45
46
  export { VersionHistory } from './components/VersionHistory.js';
46
47
  export type { VersionHistoryProps } from './components/VersionHistory.js';
48
+ export { SchedulePublishDialog } from './components/SchedulePublishDialog.js';
49
+ export type { SchedulePublishDialogProps } from './components/SchedulePublishDialog.js';
50
+ export { SharePreviewLinkDialog } from './components/SharePreviewLinkDialog.js';
51
+ export type { SharePreviewLinkDialogProps } from './components/SharePreviewLinkDialog.js';
47
52
  export { MediaPickerModal } from './components/MediaPickerModal.js';
48
53
  export type { MediaPickerModalProps } from './components/MediaPickerModal.js';
49
54
  export { ThemeProvider, useTheme } from './components/ThemeProvider.js';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,YAAY,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAA;AAEpD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AACrD,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAC7C,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AACvD,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAC3C,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,YAAY,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAA;AAC5D,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AACpD,YAAY,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAA;AAC9D,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,YAAY,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAA;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,YAAY,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAA;AACpE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,YAAY,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,YAAY,EACV,YAAY,EACZ,cAAc,EACd,UAAU,EACV,QAAQ,EACR,YAAY,IAAI,mBAAmB,GACpC,MAAM,4BAA4B,CAAA;AAEnC,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AACvD,YAAY,EACV,eAAe,EACf,UAAU,EACV,eAAe,EACf,WAAW,GACZ,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AACnD,YAAY,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACtE,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAC7E,YAAY,EAAE,0BAA0B,EAAE,MAAM,uCAAuC,CAAA;AACvF,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAC/E,YAAY,EAAE,2BAA2B,EAAE,MAAM,wCAAwC,CAAA;AACzF,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,YAAY,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAC1E,YAAY,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAA;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAA"}
package/dist/index.js CHANGED
@@ -14,6 +14,7 @@ export { FormSubmissions } from './views/FormSubmissions.js';
14
14
  export { Redirects } from './views/Redirects.js';
15
15
  export { Users } from './views/Users.js';
16
16
  export { Settings } from './views/Settings.js';
17
+ export { ApiKeys } from './views/ApiKeys.js';
17
18
  export { SEO } from './views/SEO.js';
18
19
  export { SetupWizard } from './views/SetupWizard.js';
19
20
  export { Login } from './views/Login.js';
@@ -31,6 +32,8 @@ export { TipTapEditor } from './components/TipTapEditor.js';
31
32
  export { SEOPanel } from './components/SEOPanel.js';
32
33
  export { LivePreview } from './components/LivePreview.js';
33
34
  export { VersionHistory } from './components/VersionHistory.js';
35
+ export { SchedulePublishDialog } from './components/SchedulePublishDialog.js';
36
+ export { SharePreviewLinkDialog } from './components/SharePreviewLinkDialog.js';
34
37
  export { MediaPickerModal } from './components/MediaPickerModal.js';
35
38
  export { ThemeProvider, useTheme } from './components/ThemeProvider.js';
36
39
  export { FocalPointPicker } from './components/FocalPointPicker.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAS5D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAOvD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAG1C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAE3C,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAA;AAE7C,OAAO,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAA;AAG3C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AACtD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAA;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,oBAAoB,CAAA;AAC5C,OAAO,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAA;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAA;AAEpD,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AAExC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAE1D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAA;AAEtD,OAAO,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAA;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAS5D,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAA;AAC7D,OAAO,EAAE,UAAU,EAAE,MAAM,4BAA4B,CAAA;AAOvD,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAA;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAA;AAEnD,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAE/D,OAAO,EAAE,qBAAqB,EAAE,MAAM,uCAAuC,CAAA;AAE7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAA;AAE/E,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AAEnE,OAAO,EAAE,aAAa,EAAE,QAAQ,EAAE,MAAM,+BAA+B,CAAA;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,kCAAkC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,mCAAmC,CAAA;AACrE,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAA;AAE1E,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAA;AAEtE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAA;AAClE,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AA6H9C,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,2CAsEd;AAQD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
1
+ {"version":3,"file":"Sidebar.d.ts","sourceRoot":"","sources":["../../src/layout/Sidebar.tsx"],"names":[],"mappings":"AA0BA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,cAAc,CAAA;AA8H9C,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,2CAsEd;AAQD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,IAAI,EAAE,UAAU,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;CACf"}
@@ -1,6 +1,6 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { LayoutDashboard, FileText, File, Image, Settings, ChevronLeft, ChevronRight, ClipboardList, Users, Search as SearchIcon, Briefcase, FolderOpen, BookOpen, HelpCircle, Newspaper, PanelTop, PanelBottom, Layers, Code2, LayoutTemplate, Library, } from 'lucide-react';
3
+ import { LayoutDashboard, FileText, File, Image, Settings, ChevronLeft, ChevronRight, ClipboardList, Users, Search as SearchIcon, Briefcase, FolderOpen, BookOpen, HelpCircle, Newspaper, PanelTop, PanelBottom, Layers, Code2, LayoutTemplate, Library, KeyRound, } from 'lucide-react';
4
4
  function ActuateLogo({ className }) {
5
5
  return (_jsxs("svg", { viewBox: "0 0 40 44", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, "aria-hidden": "true", children: [_jsx("polygon", { points: "20,2 6,18 12,18 20,8 28,18 34,18", fill: "#E8646A" }), _jsx("rect", { x: "11", y: "20", width: "4", height: "22", rx: "1", fill: "#E8646A" }), _jsx("rect", { x: "18", y: "20", width: "4", height: "22", rx: "1", fill: "#E8646A" }), _jsx("rect", { x: "25", y: "20", width: "4", height: "22", rx: "1", fill: "#E8646A" })] }));
6
6
  }
@@ -45,6 +45,7 @@ const defaultNavItems = [
45
45
  { path: '/forms', label: 'Forms', icon: ClipboardList },
46
46
  { path: '/seo', label: 'SEO', icon: SearchIcon },
47
47
  { path: '/users', label: 'Users', icon: Users },
48
+ { path: '/api-keys', label: 'API Keys', icon: KeyRound },
48
49
  { path: '/settings', label: 'Settings', icon: Settings },
49
50
  ];
50
51
  export function Sidebar({ collapsed, onToggleCollapse, currentPath, onNavigate, config, }) {
@@ -102,7 +103,7 @@ function buildNavItems(config) {
102
103
  });
103
104
  }
104
105
  }
105
- items.push({ path: '/page-builder/new', label: 'Page Builder', icon: LayoutTemplate, group: 'Pages' }, { path: '/saved-sections', label: 'Saved Sections', icon: Library, group: 'Pages' }, { path: '/page-templates', label: 'Templates', icon: Layers, group: 'Pages' }, { path: '/media', label: 'Media', icon: Image }, { path: '/forms', label: 'Forms', icon: ClipboardList }, { path: '/seo', label: 'SEO', icon: SearchIcon }, { path: '/script-tags', label: 'Script Tags', icon: Code2 }, { path: '/users', label: 'Users', icon: Users }, { path: '/settings', label: 'Settings', icon: Settings });
106
+ items.push({ path: '/page-builder/new', label: 'Page Builder', icon: LayoutTemplate, group: 'Pages' }, { path: '/saved-sections', label: 'Saved Sections', icon: Library, group: 'Pages' }, { path: '/page-templates', label: 'Templates', icon: Layers, group: 'Pages' }, { path: '/media', label: 'Media', icon: Image }, { path: '/forms', label: 'Forms', icon: ClipboardList }, { path: '/seo', label: 'SEO', icon: SearchIcon }, { path: '/script-tags', label: 'Script Tags', icon: Code2 }, { path: '/users', label: 'Users', icon: Users }, { path: '/api-keys', label: 'API Keys', icon: KeyRound }, { path: '/settings', label: 'Settings', icon: Settings });
106
107
  return items;
107
108
  }
108
109
  //# sourceMappingURL=Sidebar.js.map
@@ -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,5 @@
1
+ export interface ApiKeysProps {
2
+ onNavigate?: (path: string) => void;
3
+ }
4
+ export declare function ApiKeys(_props: ApiKeysProps): import("react/jsx-runtime").JSX.Element;
5
+ //# sourceMappingURL=ApiKeys.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiKeys.d.ts","sourceRoot":"","sources":["../../src/views/ApiKeys.tsx"],"names":[],"mappings":"AAmBA,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CACpC;AAiDD,wBAAgB,OAAO,CAAC,MAAM,EAAE,YAAY,2CA4K3C"}
@@ -0,0 +1,154 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import * as Dialog from '@radix-ui/react-dialog';
4
+ import { Copy, KeyRound, Loader2, Plus, Shield, Trash2, AlertTriangle, Eye, EyeOff, } from 'lucide-react';
5
+ import { useState } from 'react';
6
+ import { toast } from 'sonner';
7
+ import { useApiData } from '../lib/useApiData.js';
8
+ import { cmsApi } from '../lib/api.js';
9
+ function formatScopes(scopes) {
10
+ if (scopes.admin)
11
+ return 'Full admin';
12
+ const parts = [];
13
+ if (scopes.collections?.length) {
14
+ const cols = scopes.collections.includes('*')
15
+ ? 'all collections'
16
+ : scopes.collections.join(', ');
17
+ const acts = scopes.actions?.join('/') ?? 'read';
18
+ parts.push(`${acts} on ${cols}`);
19
+ }
20
+ if (scopes.globals?.length)
21
+ parts.push(`globals: ${scopes.globals.join(', ')}`);
22
+ if (scopes.media)
23
+ parts.push('media');
24
+ if (scopes.pageBuilder)
25
+ parts.push('pageBuilder');
26
+ return parts.length > 0 ? parts.join(' · ') : 'No scopes';
27
+ }
28
+ function formatDate(value) {
29
+ if (!value)
30
+ return '—';
31
+ try {
32
+ return new Date(value).toLocaleString();
33
+ }
34
+ catch {
35
+ return value;
36
+ }
37
+ }
38
+ export function ApiKeys(_props) {
39
+ const { data, loading, error, refetch } = useApiData('/api-keys');
40
+ const [showCreate, setShowCreate] = useState(false);
41
+ const [createdKey, setCreatedKey] = useState(null);
42
+ const keys = data ?? [];
43
+ const handleRevoke = async (id, name) => {
44
+ if (!confirm(`Revoke API key "${name}"? This cannot be undone.`))
45
+ return;
46
+ const password = prompt('Confirm your password to revoke this API key:');
47
+ if (!password)
48
+ return;
49
+ const res = await cmsApi(`/api-keys/${id}`, {
50
+ method: 'DELETE',
51
+ headers: { 'x-reauth-password': password },
52
+ });
53
+ if (res.error) {
54
+ toast.error(res.error);
55
+ }
56
+ else {
57
+ toast.success('API key revoked');
58
+ refetch();
59
+ }
60
+ };
61
+ if (loading) {
62
+ return (_jsx("div", { className: "p-4 sm:p-6 flex items-center justify-center h-64", children: _jsx(Loader2, { className: "w-6 h-6 animate-spin text-blue-600" }) }));
63
+ }
64
+ return (_jsxs("div", { className: "p-4 sm:p-6", children: [_jsxs("div", { className: "flex flex-col sm:flex-row sm:items-center justify-between gap-3 mb-6", children: [_jsxs("div", { children: [_jsxs("h1", { className: "text-xl sm:text-2xl font-semibold text-gray-900 flex items-center gap-2", children: [_jsx(KeyRound, { className: "w-5 h-5 text-gray-500" }), "API Keys"] }), _jsxs("p", { className: "text-sm text-gray-500 mt-1", children: ["Long-lived credentials for programmatic access. Use the", ' ', _jsx("code", { className: "px-1 py-0.5 rounded bg-gray-100 text-xs", children: "Authorization: Bearer" }), ' ', "header instead of session cookies. API key requests skip CSRF."] })] }), _jsxs("button", { type: "button", onClick: () => setShowCreate(true), className: "inline-flex items-center justify-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors text-sm", children: [_jsx(Plus, { className: "w-4 h-4" }), "New API Key"] })] }), error && (_jsxs("div", { className: "mb-4 flex items-center gap-3 rounded-lg border border-red-200 bg-red-50 p-3", children: [_jsx(AlertTriangle, { className: "w-5 h-5 text-red-600 shrink-0" }), _jsx("span", { className: "text-sm text-red-800 flex-1", children: error }), _jsx("button", { onClick: refetch, className: "px-3 py-1 text-sm text-red-700 border border-red-300 rounded-lg hover:bg-red-100 transition-colors", children: "Retry" })] })), keys.length === 0 ? (_jsxs("div", { className: "bg-white rounded-lg border border-gray-200 p-10 text-center", children: [_jsx(KeyRound, { className: "w-8 h-8 text-gray-300 mx-auto mb-3" }), _jsx("p", { className: "text-sm text-gray-500 mb-1", children: "No API keys yet" }), _jsx("p", { className: "text-xs text-gray-400 mb-4", children: "Create one to let AI agents, CI jobs, or external integrations call the CMS API." }), _jsxs("button", { type: "button", onClick: () => setShowCreate(true), className: "inline-flex items-center justify-center gap-2 px-4 py-2 bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors text-sm", children: [_jsx(Plus, { className: "w-4 h-4" }), "Create your first API key"] })] })) : (_jsx("div", { className: "bg-white rounded-lg border border-gray-200 overflow-hidden", children: _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "bg-gray-50 border-b border-gray-200", children: _jsxs("tr", { children: [_jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-700", children: "Name" }), _jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-700", children: "Token" }), _jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-700", children: "Scopes" }), _jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-700", children: "Last used" }), _jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-700", children: "Expires" }), _jsx("th", { className: "px-4 py-2 text-left text-xs font-medium text-gray-700", children: "Status" }), _jsx("th", { className: "px-4 py-2" })] }) }), _jsx("tbody", { className: "divide-y divide-gray-200", children: keys.map((k) => {
65
+ const revoked = !!k.revokedAt;
66
+ const expired = k.expiresAt && new Date(k.expiresAt).getTime() < Date.now();
67
+ return (_jsxs("tr", { className: revoked || expired ? 'opacity-60' : undefined, children: [_jsxs("td", { className: "px-4 py-3 text-sm", children: [_jsx("div", { className: "font-medium text-gray-900", children: k.name }), k.user && (_jsxs("div", { className: "text-xs text-gray-500", children: ["created by ", k.user.name ?? k.user.email] }))] }), _jsxs("td", { className: "px-4 py-3 text-sm font-mono text-gray-700", children: [k.keyPrefix, "\u2026"] }), _jsx("td", { className: "px-4 py-3 text-sm text-gray-700 max-w-xs", children: formatScopes(k.scopes) }), _jsx("td", { className: "px-4 py-3 text-sm text-gray-600", children: formatDate(k.lastUsedAt) }), _jsx("td", { className: "px-4 py-3 text-sm text-gray-600", children: formatDate(k.expiresAt) }), _jsx("td", { className: "px-4 py-3", children: revoked ? (_jsx("span", { className: "inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-red-100 text-red-700", children: "Revoked" })) : expired ? (_jsx("span", { className: "inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-amber-100 text-amber-700", children: "Expired" })) : (_jsx("span", { className: "inline-flex px-2 py-0.5 rounded-full text-xs font-medium bg-green-100 text-green-700", children: "Active" })) }), _jsx("td", { className: "px-4 py-3 text-right", children: !revoked && (_jsx("button", { type: "button", onClick: () => handleRevoke(k.id, k.name), className: "p-1.5 hover:bg-red-50 rounded transition-colors", title: "Revoke", children: _jsx(Trash2, { className: "w-4 h-4 text-red-600" }) })) })] }, k.id));
68
+ }) })] }) }) })), _jsx(CreateApiKeyDialog, { open: showCreate, onClose: () => setShowCreate(false), onCreated: (created) => {
69
+ setShowCreate(false);
70
+ setCreatedKey(created);
71
+ refetch();
72
+ } }), createdKey && _jsx(RevealKeyDialog, { created: createdKey, onClose: () => setCreatedKey(null) })] }));
73
+ }
74
+ function CreateApiKeyDialog({ open, onClose, onCreated }) {
75
+ const [name, setName] = useState('');
76
+ const [preset, setPreset] = useState('content');
77
+ const [pageBuilder, setPageBuilder] = useState(true);
78
+ const [media, setMedia] = useState(true);
79
+ const [expiresInDays, setExpiresInDays] = useState('');
80
+ const [password, setPassword] = useState('');
81
+ const [submitting, setSubmitting] = useState(false);
82
+ function buildScopes() {
83
+ if (preset === 'admin')
84
+ return { admin: true };
85
+ if (preset === 'readonly') {
86
+ return {
87
+ collections: ['*'],
88
+ actions: ['read'],
89
+ globals: ['*'],
90
+ media: false,
91
+ pageBuilder: false,
92
+ };
93
+ }
94
+ if (preset === 'content') {
95
+ return {
96
+ collections: ['*'],
97
+ actions: ['read', 'create', 'update'],
98
+ globals: ['*'],
99
+ media,
100
+ pageBuilder,
101
+ };
102
+ }
103
+ return {
104
+ collections: ['*'],
105
+ actions: ['read'],
106
+ media,
107
+ pageBuilder,
108
+ };
109
+ }
110
+ async function handleSubmit(e) {
111
+ e.preventDefault();
112
+ if (!name.trim())
113
+ return toast.error('Name is required');
114
+ if (!password)
115
+ return toast.error('Password confirmation is required');
116
+ setSubmitting(true);
117
+ try {
118
+ const scopes = buildScopes();
119
+ const body = { name: name.trim(), scopes };
120
+ const days = parseInt(expiresInDays, 10);
121
+ if (!isNaN(days) && days > 0) {
122
+ body.expiresAt = new Date(Date.now() + days * 24 * 60 * 60 * 1000).toISOString();
123
+ }
124
+ const res = await cmsApi('/api-keys', {
125
+ method: 'POST',
126
+ headers: { 'x-reauth-password': password, 'Content-Type': 'application/json' },
127
+ body: JSON.stringify(body),
128
+ });
129
+ if (res.error || !res.data) {
130
+ toast.error(res.error ?? 'Failed to create API key');
131
+ return;
132
+ }
133
+ const { key, ...record } = res.data;
134
+ onCreated({ key, record: record });
135
+ setName('');
136
+ setPassword('');
137
+ setExpiresInDays('');
138
+ }
139
+ finally {
140
+ setSubmitting(false);
141
+ }
142
+ }
143
+ return (_jsx(Dialog.Root, { open: open, onOpenChange: (o) => !o && onClose(), children: _jsxs(Dialog.Portal, { children: [_jsx(Dialog.Overlay, { className: "fixed inset-0 bg-black/40 z-40" }), _jsxs(Dialog.Content, { className: "fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white rounded-lg shadow-xl w-full max-w-md p-6 z-50", children: [_jsxs(Dialog.Title, { className: "text-lg font-semibold text-gray-900 mb-4 flex items-center gap-2", children: [_jsx(Shield, { className: "w-5 h-5 text-blue-600" }), "New API Key"] }), _jsxs("form", { onSubmit: handleSubmit, className: "space-y-4", children: [_jsxs("div", { children: [_jsx("label", { className: "text-sm font-medium text-gray-700 block mb-1", children: "Name" }), _jsx("input", { type: "text", value: name, onChange: (e) => setName(e.target.value), placeholder: "e.g. AI agent \u2014 production", className: "w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500", required: true, maxLength: 100 })] }), _jsxs("div", { children: [_jsx("label", { className: "text-sm font-medium text-gray-700 block mb-2", children: "Preset" }), _jsx("div", { className: "grid grid-cols-2 gap-2", children: ['content', 'readonly', 'admin', 'custom'].map((p) => (_jsxs("button", { type: "button", onClick: () => setPreset(p), className: `px-3 py-2 text-sm rounded-lg border transition-colors text-left ${preset === p
144
+ ? 'border-blue-500 bg-blue-50 text-blue-900'
145
+ : 'border-gray-300 bg-white text-gray-700 hover:bg-gray-50'}`, children: [_jsx("div", { className: "font-medium capitalize", children: p }), _jsxs("div", { className: "text-xs text-gray-500", children: [p === 'content' && 'Read/create/update content', p === 'readonly' && 'Read-only access', p === 'admin' && 'Full admin access', p === 'custom' && 'Pick capabilities'] })] }, p))) })] }), (preset === 'content' || preset === 'custom') && (_jsxs("div", { className: "space-y-2 rounded-lg border border-gray-200 p-3 bg-gray-50", children: [_jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-700", children: [_jsx("input", { type: "checkbox", checked: media, onChange: (e) => setMedia(e.target.checked), className: "rounded border-gray-300" }), "Allow media uploads"] }), _jsxs("label", { className: "flex items-center gap-2 text-sm text-gray-700", children: [_jsx("input", { type: "checkbox", checked: pageBuilder, onChange: (e) => setPageBuilder(e.target.checked), className: "rounded border-gray-300" }), "Allow AI page generation"] })] })), _jsxs("div", { children: [_jsx("label", { className: "text-sm font-medium text-gray-700 block mb-1", children: "Expires in (days)" }), _jsx("input", { type: "number", min: 1, placeholder: "Never (leave blank)", value: expiresInDays, onChange: (e) => setExpiresInDays(e.target.value), className: "w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500" })] }), _jsxs("div", { children: [_jsx("label", { className: "text-sm font-medium text-gray-700 block mb-1", children: "Confirm password" }), _jsx("input", { type: "password", value: password, onChange: (e) => setPassword(e.target.value), className: "w-full px-3 py-2 text-sm border border-gray-300 rounded-lg focus:outline-none focus:ring-2 focus:ring-blue-500", required: true }), _jsx("p", { className: "text-xs text-gray-500 mt-1", children: "Creating an API key is a sensitive action and requires re-authentication." })] }), _jsxs("div", { className: "flex items-center justify-end gap-2 pt-2", children: [_jsx("button", { type: "button", onClick: onClose, className: "px-4 py-2 text-sm border border-gray-300 rounded-lg hover:bg-gray-50 transition-colors", children: "Cancel" }), _jsx("button", { type: "submit", disabled: submitting, className: "px-4 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors disabled:opacity-50", children: submitting ? 'Creating…' : 'Create key' })] })] })] })] }) }));
146
+ }
147
+ function RevealKeyDialog({ created, onClose, }) {
148
+ const [shown, setShown] = useState(false);
149
+ return (_jsx(Dialog.Root, { open: true, onOpenChange: (o) => !o && onClose(), children: _jsxs(Dialog.Portal, { children: [_jsx(Dialog.Overlay, { className: "fixed inset-0 bg-black/40 z-40" }), _jsxs(Dialog.Content, { className: "fixed top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 bg-white rounded-lg shadow-xl w-full max-w-md p-6 z-50", children: [_jsxs(Dialog.Title, { className: "text-lg font-semibold text-gray-900 mb-2 flex items-center gap-2", children: [_jsx(Shield, { className: "w-5 h-5 text-green-600" }), "API key created"] }), _jsx(Dialog.Description, { className: "text-sm text-gray-600 mb-4", children: "Copy this key now \u2014 it will not be shown again. Treat it like a password." }), _jsxs("div", { className: "rounded-lg border border-amber-200 bg-amber-50 p-3 mb-4 flex items-start gap-2", children: [_jsx(AlertTriangle, { className: "w-4 h-4 text-amber-600 shrink-0 mt-0.5" }), _jsx("p", { className: "text-xs text-amber-900", children: "We only store a hash of this key. If you lose it, you'll need to revoke and create a new one." })] }), _jsxs("div", { className: "flex items-center gap-2 mb-4", children: [_jsx("code", { className: "flex-1 px-3 py-2 bg-gray-100 rounded text-sm font-mono break-all", children: shown ? created.key : '•'.repeat(Math.min(48, created.key.length)) }), _jsx("button", { type: "button", onClick: () => setShown((s) => !s), className: "p-2 border border-gray-300 rounded hover:bg-gray-50", title: shown ? 'Hide' : 'Show', children: shown ? _jsx(EyeOff, { className: "w-4 h-4" }) : _jsx(Eye, { className: "w-4 h-4" }) }), _jsx("button", { type: "button", onClick: () => {
150
+ navigator.clipboard.writeText(created.key);
151
+ toast.success('Copied to clipboard');
152
+ }, className: "p-2 border border-gray-300 rounded hover:bg-gray-50", title: "Copy", children: _jsx(Copy, { className: "w-4 h-4" }) })] }), _jsx("div", { className: "flex justify-end", children: _jsx("button", { type: "button", onClick: onClose, className: "px-4 py-2 text-sm bg-blue-600 text-white rounded-lg hover:bg-blue-700 transition-colors", children: "I've saved it" }) })] })] }) }));
153
+ }
154
+ //# sourceMappingURL=ApiKeys.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ApiKeys.js","sourceRoot":"","sources":["../../src/views/ApiKeys.tsx"],"names":[],"mappings":"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"}