@actuate-media/cms-admin 0.19.0 → 0.21.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 (129) hide show
  1. package/dist/AdminRoot.d.ts.map +1 -1
  2. package/dist/AdminRoot.js +13 -9
  3. package/dist/AdminRoot.js.map +1 -1
  4. package/dist/__tests__/layout/sidebar-posts.test.js +6 -4
  5. package/dist/__tests__/layout/sidebar-posts.test.js.map +1 -1
  6. package/dist/__tests__/lib/seo-service-errors.test.d.ts +2 -0
  7. package/dist/__tests__/lib/seo-service-errors.test.d.ts.map +1 -0
  8. package/dist/__tests__/lib/seo-service-errors.test.js +46 -0
  9. package/dist/__tests__/lib/seo-service-errors.test.js.map +1 -0
  10. package/dist/__tests__/views/use-seo-resource.test.d.ts +2 -0
  11. package/dist/__tests__/views/use-seo-resource.test.d.ts.map +1 -0
  12. package/dist/__tests__/views/use-seo-resource.test.js +56 -0
  13. package/dist/__tests__/views/use-seo-resource.test.js.map +1 -0
  14. package/dist/actuate-admin.css +1 -1
  15. package/dist/components/Breadcrumbs.d.ts.map +1 -1
  16. package/dist/components/Breadcrumbs.js +4 -1
  17. package/dist/components/Breadcrumbs.js.map +1 -1
  18. package/dist/components/seo/Drawer.d.ts +11 -0
  19. package/dist/components/seo/Drawer.d.ts.map +1 -0
  20. package/dist/components/seo/Drawer.js +17 -0
  21. package/dist/components/seo/Drawer.js.map +1 -0
  22. package/dist/components/seo/RedirectEditorDrawer.d.ts +9 -0
  23. package/dist/components/seo/RedirectEditorDrawer.d.ts.map +1 -0
  24. package/dist/components/seo/RedirectEditorDrawer.js +94 -0
  25. package/dist/components/seo/RedirectEditorDrawer.js.map +1 -0
  26. package/dist/components/seo/SeoCopilotDrawer.d.ts +10 -0
  27. package/dist/components/seo/SeoCopilotDrawer.d.ts.map +1 -0
  28. package/dist/components/seo/SeoCopilotDrawer.js +34 -0
  29. package/dist/components/seo/SeoCopilotDrawer.js.map +1 -0
  30. package/dist/components/seo/SeoEditorDrawer.d.ts +8 -0
  31. package/dist/components/seo/SeoEditorDrawer.d.ts.map +1 -0
  32. package/dist/components/seo/SeoEditorDrawer.js +120 -0
  33. package/dist/components/seo/SeoEditorDrawer.js.map +1 -0
  34. package/dist/components/seo/SeoIssueFixDrawer.d.ts +8 -0
  35. package/dist/components/seo/SeoIssueFixDrawer.d.ts.map +1 -0
  36. package/dist/components/seo/SeoIssueFixDrawer.js +111 -0
  37. package/dist/components/seo/SeoIssueFixDrawer.js.map +1 -0
  38. package/dist/components/seo/primitives.d.ts +53 -0
  39. package/dist/components/seo/primitives.d.ts.map +1 -0
  40. package/dist/components/seo/primitives.js +101 -0
  41. package/dist/components/seo/primitives.js.map +1 -0
  42. package/dist/layout/Sidebar.d.ts.map +1 -1
  43. package/dist/layout/Sidebar.js +8 -5
  44. package/dist/layout/Sidebar.js.map +1 -1
  45. package/dist/lib/seo-service.d.ts +322 -0
  46. package/dist/lib/seo-service.d.ts.map +1 -0
  47. package/dist/lib/seo-service.js +331 -0
  48. package/dist/lib/seo-service.js.map +1 -0
  49. package/dist/router/index.d.ts.map +1 -1
  50. package/dist/router/index.js +4 -1
  51. package/dist/router/index.js.map +1 -1
  52. package/dist/views/ApiKeys.d.ts +4 -1
  53. package/dist/views/ApiKeys.d.ts.map +1 -1
  54. package/dist/views/ApiKeys.js +5 -3
  55. package/dist/views/ApiKeys.js.map +1 -1
  56. package/dist/views/Dashboard.js +2 -2
  57. package/dist/views/Dashboard.js.map +1 -1
  58. package/dist/views/MediaBrowser.d.ts.map +1 -1
  59. package/dist/views/MediaBrowser.js +36 -25
  60. package/dist/views/MediaBrowser.js.map +1 -1
  61. package/dist/views/Posts/NewPostTypeInstructions.js +2 -2
  62. package/dist/views/Posts/post-type-presets.d.ts +5 -0
  63. package/dist/views/Posts/post-type-presets.d.ts.map +1 -1
  64. package/dist/views/Posts/post-type-presets.js +10 -64
  65. package/dist/views/Posts/post-type-presets.js.map +1 -1
  66. package/dist/views/SEO.d.ts.map +1 -1
  67. package/dist/views/SEO.js +89 -132
  68. package/dist/views/SEO.js.map +1 -1
  69. package/dist/views/Settings.d.ts +4 -1
  70. package/dist/views/Settings.d.ts.map +1 -1
  71. package/dist/views/Settings.js +45 -6
  72. package/dist/views/Settings.js.map +1 -1
  73. package/dist/views/Users.d.ts +4 -1
  74. package/dist/views/Users.d.ts.map +1 -1
  75. package/dist/views/Users.js +5 -3
  76. package/dist/views/Users.js.map +1 -1
  77. package/dist/views/seo/AuditTab.d.ts +6 -0
  78. package/dist/views/seo/AuditTab.d.ts.map +1 -0
  79. package/dist/views/seo/AuditTab.js +57 -0
  80. package/dist/views/seo/AuditTab.js.map +1 -0
  81. package/dist/views/seo/ContentTab.d.ts +5 -0
  82. package/dist/views/seo/ContentTab.d.ts.map +1 -0
  83. package/dist/views/seo/ContentTab.js +27 -0
  84. package/dist/views/seo/ContentTab.js.map +1 -0
  85. package/dist/views/seo/OverviewTab.d.ts +8 -0
  86. package/dist/views/seo/OverviewTab.d.ts.map +1 -0
  87. package/dist/views/seo/OverviewTab.js +35 -0
  88. package/dist/views/seo/OverviewTab.js.map +1 -0
  89. package/dist/views/seo/RedirectsTab.d.ts +2 -0
  90. package/dist/views/seo/RedirectsTab.d.ts.map +1 -0
  91. package/dist/views/seo/RedirectsTab.js +130 -0
  92. package/dist/views/seo/RedirectsTab.js.map +1 -0
  93. package/dist/views/seo/TechnicalTab.d.ts +2 -0
  94. package/dist/views/seo/TechnicalTab.d.ts.map +1 -0
  95. package/dist/views/seo/TechnicalTab.js +105 -0
  96. package/dist/views/seo/TechnicalTab.js.map +1 -0
  97. package/dist/views/seo/useSeoResource.d.ts +8 -0
  98. package/dist/views/seo/useSeoResource.d.ts.map +1 -0
  99. package/dist/views/seo/useSeoResource.js +55 -0
  100. package/dist/views/seo/useSeoResource.js.map +1 -0
  101. package/package.json +2 -2
  102. package/src/AdminRoot.tsx +13 -9
  103. package/src/__tests__/layout/sidebar-posts.test.ts +6 -4
  104. package/src/__tests__/lib/seo-service-errors.test.ts +60 -0
  105. package/src/__tests__/views/use-seo-resource.test.tsx +68 -0
  106. package/src/components/Breadcrumbs.tsx +4 -1
  107. package/src/components/seo/Drawer.tsx +65 -0
  108. package/src/components/seo/RedirectEditorDrawer.tsx +235 -0
  109. package/src/components/seo/SeoCopilotDrawer.tsx +76 -0
  110. package/src/components/seo/SeoEditorDrawer.tsx +359 -0
  111. package/src/components/seo/SeoIssueFixDrawer.tsx +244 -0
  112. package/src/components/seo/primitives.tsx +240 -0
  113. package/src/layout/Sidebar.tsx +7 -10
  114. package/src/lib/seo-service.ts +660 -0
  115. package/src/router/index.ts +4 -1
  116. package/src/views/ApiKeys.tsx +10 -5
  117. package/src/views/Dashboard.tsx +2 -2
  118. package/src/views/MediaBrowser.tsx +89 -67
  119. package/src/views/Posts/NewPostTypeInstructions.tsx +2 -2
  120. package/src/views/Posts/post-type-presets.ts +15 -64
  121. package/src/views/SEO.tsx +186 -863
  122. package/src/views/Settings.tsx +93 -40
  123. package/src/views/Users.tsx +10 -4
  124. package/src/views/seo/AuditTab.tsx +229 -0
  125. package/src/views/seo/ContentTab.tsx +164 -0
  126. package/src/views/seo/OverviewTab.tsx +257 -0
  127. package/src/views/seo/RedirectsTab.tsx +398 -0
  128. package/src/views/seo/TechnicalTab.tsx +315 -0
  129. package/src/views/seo/useSeoResource.ts +66 -0
@@ -0,0 +1,331 @@
1
+ /**
2
+ * SEO service — typed client over the cms-core SEO REST endpoints.
3
+ *
4
+ * Every SEO admin component reads/writes through this module (never raw
5
+ * `cmsApi` / `fetch`), so the network contract lives in one place. Fetchers
6
+ * return typed data with safe fallbacks; mutations return `{ error?: string }`.
7
+ *
8
+ * Endpoint paths here are the contract implemented by cms-core
9
+ * `packages/cms-core/src/api/handlers.ts` across phases 2-3 and 6.
10
+ */
11
+ import { cmsApi } from './api.js';
12
+ /**
13
+ * `cmsApi` never throws — it returns `{ error, status }` on a network/HTTP
14
+ * failure. Read (GET) fetchers below must re-surface that as a thrown error so
15
+ * `useSeoResource` can distinguish "request failed" from "empty result".
16
+ * Without this, a failed `/seo/overview` would fall through to the empty
17
+ * fallback (a fake score of 0 / grade "Critical") and the error/retry UI would
18
+ * be permanently unreachable. Mutations intentionally return `{ error }` and do
19
+ * not use this.
20
+ */
21
+ function throwIfError(res) {
22
+ if (res.error)
23
+ throw new Error(res.error);
24
+ }
25
+ const EMPTY_OVERVIEW = {
26
+ siteScore: { score: 0, grade: 'critical', delta: null, breakdown: [] },
27
+ metrics: [],
28
+ issues: [],
29
+ issuesSummary: { total: 0, critical: 0, warning: 0, info: 0 },
30
+ quickWins: [],
31
+ searchPerformance: [],
32
+ searchConsoleConnected: false,
33
+ lastAuditRunId: null,
34
+ };
35
+ export async function fetchSeoOverview() {
36
+ const res = await cmsApi('/seo/overview');
37
+ throwIfError(res);
38
+ return res.data ?? EMPTY_OVERVIEW;
39
+ }
40
+ export async function fetchSearchPerformance(params = {}) {
41
+ const qs = params.limit ? `?limit=${params.limit}` : '';
42
+ const res = await cmsApi(`/seo/search-performance${qs}`);
43
+ throwIfError(res);
44
+ return res.data?.rows ?? [];
45
+ }
46
+ export async function fetchSeoContentRecords() {
47
+ const res = await cmsApi('/seo/content');
48
+ throwIfError(res);
49
+ return res.data?.records ?? [];
50
+ }
51
+ export async function fetchSeoContentRecord(entityType, entityId) {
52
+ const res = await cmsApi(`/seo/content/${entityType}/${encodeURIComponent(entityId)}`);
53
+ throwIfError(res);
54
+ return res.data ?? null;
55
+ }
56
+ export async function updateSeoFields(entityType, entityId, payload) {
57
+ const res = await cmsApi(`/seo/content/${entityType}/${encodeURIComponent(entityId)}`, {
58
+ method: 'PUT',
59
+ body: JSON.stringify(payload),
60
+ });
61
+ return res.error ? { error: res.error } : {};
62
+ }
63
+ /** Pure search/filter over the content records (decoupled from network for tests). */
64
+ export function applyContentSeoQuery(records, query) {
65
+ const search = (query.search ?? '').trim().toLowerCase();
66
+ const filter = query.filter ?? 'all';
67
+ return records.filter((r) => {
68
+ if (filter === 'pages' && r.entityType !== 'page')
69
+ return false;
70
+ if (filter === 'posts' && r.entityType !== 'post')
71
+ return false;
72
+ if (search) {
73
+ const haystack = [
74
+ r.title,
75
+ r.url,
76
+ r.metaTitle ?? '',
77
+ r.metaDescription ?? '',
78
+ String(r.seoScore),
79
+ r.entityType,
80
+ ]
81
+ .join(' ')
82
+ .toLowerCase();
83
+ if (!haystack.includes(search))
84
+ return false;
85
+ }
86
+ return true;
87
+ });
88
+ }
89
+ export async function runSeoAudit(scope = 'full') {
90
+ const res = await cmsApi('/seo/audit', {
91
+ method: 'POST',
92
+ body: JSON.stringify({ scope }),
93
+ });
94
+ if (res.error)
95
+ return { error: res.error };
96
+ return { run: res.data };
97
+ }
98
+ export async function fetchSeoAuditRuns() {
99
+ const res = await cmsApi('/seo/audits');
100
+ throwIfError(res);
101
+ return res.data?.runs ?? [];
102
+ }
103
+ export async function fetchSeoAuditRun(auditRunId) {
104
+ const res = await cmsApi(`/seo/audits/${encodeURIComponent(auditRunId)}`);
105
+ throwIfError(res);
106
+ return res.data ?? null;
107
+ }
108
+ export async function fetchSeoIssues(query = {}) {
109
+ const params = new URLSearchParams();
110
+ if (query.severity && query.severity !== 'all')
111
+ params.set('severity', query.severity);
112
+ if (query.category && query.category !== 'all')
113
+ params.set('category', query.category);
114
+ if (query.status && query.status !== 'all')
115
+ params.set('status', query.status);
116
+ if (query.auditRunId)
117
+ params.set('auditRunId', query.auditRunId);
118
+ const qs = params.toString();
119
+ const res = await cmsApi(`/seo/issues${qs ? `?${qs}` : ''}`);
120
+ throwIfError(res);
121
+ return res.data?.issues ?? [];
122
+ }
123
+ export async function fetchSeoIssue(issueId) {
124
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}`);
125
+ throwIfError(res);
126
+ return res.data ?? null;
127
+ }
128
+ export async function resolveSeoIssue(issueId) {
129
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/resolve`, { method: 'POST' });
130
+ return res.error ? { error: res.error } : {};
131
+ }
132
+ export async function ignoreSeoIssue(issueId) {
133
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/ignore`, { method: 'POST' });
134
+ return res.error ? { error: res.error } : {};
135
+ }
136
+ export async function reopenSeoIssue(issueId) {
137
+ const res = await cmsApi(`/seo/issues/${encodeURIComponent(issueId)}/reopen`, { method: 'POST' });
138
+ return res.error ? { error: res.error } : {};
139
+ }
140
+ export async function fetchSitemapStatus() {
141
+ const res = await cmsApi('/seo/sitemap/status');
142
+ throwIfError(res);
143
+ return res.data ?? null;
144
+ }
145
+ export async function regenerateSitemap() {
146
+ const res = await cmsApi('/seo/sitemap/regenerate', { method: 'POST' });
147
+ if (res.error)
148
+ return { error: res.error };
149
+ return { status: res.data };
150
+ }
151
+ export async function fetchCrawlSettings() {
152
+ const res = await cmsApi('/seo/crawl-settings');
153
+ throwIfError(res);
154
+ return res.data ?? null;
155
+ }
156
+ export async function updateCrawlSettings(payload) {
157
+ const res = await cmsApi('/seo/crawl-settings', {
158
+ method: 'PUT',
159
+ body: JSON.stringify(payload),
160
+ });
161
+ return res.error ? { error: res.error } : {};
162
+ }
163
+ export async function fetchRobotsTxt() {
164
+ const res = await cmsApi('/seo/robots');
165
+ throwIfError(res);
166
+ return res.data ?? null;
167
+ }
168
+ export async function updateRobotsTxt(body) {
169
+ const res = await cmsApi('/seo/robots', { method: 'PUT', body: JSON.stringify({ body }) });
170
+ return res.error ? { error: res.error } : {};
171
+ }
172
+ /** Client-side robots.txt validation (mirrors server-side checks). */
173
+ export function validateRobotsTxt(body) {
174
+ const errors = [];
175
+ const warnings = [];
176
+ const lines = body.split(/\r?\n/);
177
+ let blocksEntireSite = false;
178
+ let sawUserAgent = false;
179
+ let starAgent = false;
180
+ for (const raw of lines) {
181
+ const line = raw.trim();
182
+ if (!line || line.startsWith('#'))
183
+ continue;
184
+ const colon = line.indexOf(':');
185
+ if (colon === -1) {
186
+ errors.push(`Invalid directive (missing ":"): "${line}"`);
187
+ continue;
188
+ }
189
+ const directive = line.slice(0, colon).trim().toLowerCase();
190
+ const value = line.slice(colon + 1).trim();
191
+ if (directive === 'user-agent') {
192
+ sawUserAgent = true;
193
+ starAgent = value === '*';
194
+ }
195
+ else if (directive === 'disallow') {
196
+ if (value === '/' && starAgent)
197
+ blocksEntireSite = true;
198
+ }
199
+ else if (!['allow', 'sitemap', 'crawl-delay', 'host'].includes(directive)) {
200
+ warnings.push(`Unknown directive: "${directive}"`);
201
+ }
202
+ }
203
+ if (!sawUserAgent)
204
+ errors.push('No User-agent directive found.');
205
+ if (blocksEntireSite) {
206
+ warnings.push('This configuration blocks the entire site from all crawlers.');
207
+ }
208
+ return { valid: errors.length === 0, blocksEntireSite, errors, warnings };
209
+ }
210
+ export async function fetchRedirectOverview() {
211
+ const res = await cmsApi('/seo/redirects/overview');
212
+ throwIfError(res);
213
+ return (res.data ?? {
214
+ activeRedirects: 0,
215
+ staleRedirects: 0,
216
+ notFoundCount: 0,
217
+ notFoundHits: 0,
218
+ chainsAndLoops: 0,
219
+ trafficRecovered: 0,
220
+ });
221
+ }
222
+ export async function fetchRedirectRules() {
223
+ const res = await cmsApi('/seo/redirects');
224
+ throwIfError(res);
225
+ return res.data?.rules ?? [];
226
+ }
227
+ export async function createRedirectRule(payload) {
228
+ const res = await cmsApi('/seo/redirects', { method: 'POST', body: JSON.stringify(payload) });
229
+ return res.error ? { error: res.error } : {};
230
+ }
231
+ export async function updateRedirectRule(redirectId, payload) {
232
+ const res = await cmsApi(`/seo/redirects/${encodeURIComponent(redirectId)}`, {
233
+ method: 'PUT',
234
+ body: JSON.stringify(payload),
235
+ });
236
+ return res.error ? { error: res.error } : {};
237
+ }
238
+ export async function deleteRedirectRule(redirectId) {
239
+ const res = await cmsApi(`/seo/redirects/${encodeURIComponent(redirectId)}`, {
240
+ method: 'DELETE',
241
+ });
242
+ return res.error ? { error: res.error } : {};
243
+ }
244
+ export async function fetchRedirectChains() {
245
+ const res = await cmsApi('/seo/redirects/chains');
246
+ throwIfError(res);
247
+ return res.data?.chains ?? [];
248
+ }
249
+ export async function flattenRedirectChain(chainId) {
250
+ const res = await cmsApi('/seo/redirects/flatten', {
251
+ method: 'POST',
252
+ body: JSON.stringify({ chainId }),
253
+ });
254
+ return res.error ? { error: res.error } : {};
255
+ }
256
+ export async function fetchRedirectSuggestions() {
257
+ const res = await cmsApi('/seo/redirects/suggestions');
258
+ throwIfError(res);
259
+ return res.data?.suggestions ?? [];
260
+ }
261
+ export async function generate404RecoverySuggestions() {
262
+ const res = await cmsApi('/seo/redirects/suggest', { method: 'POST' });
263
+ return res.error ? { error: res.error } : {};
264
+ }
265
+ export async function acceptRedirectSuggestion(suggestionId) {
266
+ const res = await cmsApi(`/seo/redirects/suggestions/${encodeURIComponent(suggestionId)}/accept`, {
267
+ method: 'POST',
268
+ });
269
+ return res.error ? { error: res.error } : {};
270
+ }
271
+ export async function dismissRedirectSuggestion(suggestionId) {
272
+ const res = await cmsApi(`/seo/redirects/suggestions/${encodeURIComponent(suggestionId)}/dismiss`, { method: 'POST' });
273
+ return res.error ? { error: res.error } : {};
274
+ }
275
+ export async function exportRedirectsCsv() {
276
+ const res = await cmsApi('/seo/redirects/export');
277
+ if (res.error)
278
+ return { error: res.error };
279
+ return { csv: res.data?.csv ?? '' };
280
+ }
281
+ export async function importRedirectsCsv(csv) {
282
+ const res = await cmsApi('/seo/redirects/import', {
283
+ method: 'POST',
284
+ body: JSON.stringify({ csv }),
285
+ });
286
+ if (res.error)
287
+ return { error: res.error };
288
+ return { imported: res.data?.imported ?? 0, errors: res.data?.errors ?? [] };
289
+ }
290
+ /**
291
+ * AI SEO endpoints report unavailability with two statuses: 501 (plugin-ai not
292
+ * installed) and 503 (installed but the provider isn't configured). Both map to
293
+ * the same graceful "AI unavailable" UX.
294
+ */
295
+ function isAiUnavailable(status) {
296
+ return status === 501 || status === 503;
297
+ }
298
+ export async function generateSeoField(field, context) {
299
+ const res = await cmsApi('/ai/seo/generate-field', {
300
+ method: 'POST',
301
+ body: JSON.stringify({ field, ...context }),
302
+ });
303
+ if (isAiUnavailable(res.status))
304
+ return { unavailable: true };
305
+ return res.data ?? {};
306
+ }
307
+ export async function explainSeoIssue(issueId) {
308
+ const res = await cmsApi('/ai/seo/explain-issue', {
309
+ method: 'POST',
310
+ body: JSON.stringify({ issueId }),
311
+ });
312
+ if (isAiUnavailable(res.status))
313
+ return { unavailable: true };
314
+ return res.data ?? {};
315
+ }
316
+ export async function generateStructuredData(context) {
317
+ const res = await cmsApi('/ai/seo/generate-schema', {
318
+ method: 'POST',
319
+ body: JSON.stringify(context),
320
+ });
321
+ if (isAiUnavailable(res.status))
322
+ return { unavailable: true };
323
+ return res.data ?? {};
324
+ }
325
+ export async function summarizeSeoAudit() {
326
+ const res = await cmsApi('/ai/seo/summarize', { method: 'POST' });
327
+ if (isAiUnavailable(res.status))
328
+ return { unavailable: true };
329
+ return res.data ?? {};
330
+ }
331
+ //# sourceMappingURL=seo-service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"seo-service.js","sourceRoot":"","sources":["../../src/lib/seo-service.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB;AAUD,wBAAgB,cAAc,CAAC,QAAQ,SAAW,EAAE,UAAU,SAAM;;qBAsB9B,MAAM;0BAkB9B,MAAM,KAAG,WAAW,GAAG,IAAI;sBANF,MAAM;EAqC5C"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAIA,UAAU,WAAW;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;CACtB;AAUD,wBAAgB,cAAc,CAAC,QAAQ,SAAW,EAAE,UAAU,SAAM;;qBAsB9B,MAAM;0BAkB9B,MAAM,KAAG,WAAW,GAAG,IAAI;sBANF,MAAM;EAwC5C"}
@@ -41,8 +41,11 @@ export function useAdminRouter(basePath = '/admin', serverPath = '/') {
41
41
  return normalizedPath === '/' ? baseRef.current : `${baseRef.current}${normalizedPath}`;
42
42
  }, []);
43
43
  const matchRoute = useCallback((pattern) => {
44
+ // Match against the path only — query string / hash are state-bearing
45
+ // (e.g. `/seo?tab=audit`) and must not defeat route matching.
46
+ const pathname = currentPath.split('?')[0].split('#')[0];
44
47
  const patternParts = pattern.split('/').filter(Boolean);
45
- const pathParts = currentPath.split('/').filter(Boolean);
48
+ const pathParts = pathname.split('/').filter(Boolean);
46
49
  if (pattern === '/' && pathParts.length === 0) {
47
50
  return {};
48
51
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/router/index.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAEZ,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAMhE,SAAS,SAAS,CAAC,QAAgB,EAAE,QAAgB;IACnD,IAAI,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC5C,OAAO,IAAI,KAAK,EAAE,IAAI,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;IACrF,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,QAAQ,GAAG,QAAQ,EAAE,UAAU,GAAG,GAAG;IAClE,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAA;IAC1D,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAA;IAChC,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAA;IAE1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,OAAO,MAAM,KAAK,WAAW,EAAE,CAAC;YAClC,MAAM,WAAW,GAAG,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;YACjE,IAAI,WAAW,KAAK,WAAW,EAAE,CAAC;gBAChC,cAAc,CAAC,WAAW,CAAC,CAAA;YAC7B,CAAC;QACH,CAAC;IACH,CAAC,EAAE,EAAE,CAAC,CAAA,CAAC,kDAAkD;IAEzD,SAAS,CAAC,GAAG,EAAE;QACb,SAAS,UAAU;YACjB,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,CAAC,CAAC,CAAA;QACtE,CAAC;QACD,MAAM,CAAC,gBAAgB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;QAC/C,OAAO,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,CAAC,UAAU,EAAE,UAAU,CAAC,CAAA;IACjE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,QAAQ,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QAC5C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/D,cAAc,CAAC,cAAc,CAAC,CAAA;QAE9B,MAAM,OAAO,GAAG,cAAc,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,cAAc,EAAE,CAAA;QAChG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,CAAA;IACtE,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,2EAA2E;IAC3E,yEAAyE;IACzE,0EAA0E;IAC1E,oBAAoB;IACpB,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,IAAY,EAAE,EAAE;QAC7C,MAAM,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAA;QAC/D,OAAO,cAAc,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,OAAO,GAAG,cAAc,EAAE,CAAA;IACzF,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,UAAU,GAAG,WAAW,CAC5B,CAAC,OAAe,EAAsB,EAAE;QACtC,sEAAsE;QACtE,8DAA8D;QAC9D,MAAM,QAAQ,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,CAAA;QAC1D,MAAM,YAAY,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QACvD,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;QAErD,IAAI,OAAO,KAAK,GAAG,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAA;QACX,CAAC;QAED,IAAI,YAAY,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM,EAAE,CAAC;YAC7C,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,MAAM,GAAgB,EAAE,CAAA;QAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC7C,MAAM,WAAW,GAAG,YAAY,CAAC,CAAC,CAAE,CAAA;YACpC,MAAM,QAAQ,GAAG,SAAS,CAAC,CAAC,CAAE,CAAA;YAE9B,IAAI,WAAW,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,QAAQ,CAAA;YACzC,CAAC;iBAAM,IAAI,WAAW,KAAK,QAAQ,EAAE,CAAC;gBACpC,OAAO,IAAI,CAAA;YACb,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC,EACD,CAAC,WAAW,CAAC,CACd,CAAA;IAED,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,CAAA;AACzD,CAAC"}
@@ -1,5 +1,8 @@
1
1
  export interface ApiKeysProps {
2
2
  onNavigate?: (path: string) => void;
3
+ /** When rendered inside the Settings tab shell, drop the page padding and
4
+ * demote the heading so it reads as a section rather than a second page. */
5
+ embedded?: boolean;
3
6
  }
4
- export declare function ApiKeys(_props: ApiKeysProps): import("react/jsx-runtime").JSX.Element;
7
+ export declare function ApiKeys({ embedded }?: ApiKeysProps): import("react/jsx-runtime").JSX.Element;
5
8
  //# sourceMappingURL=ApiKeys.d.ts.map
@@ -1 +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"}
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;IACnC;gFAC4E;IAC5E,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAiDD,wBAAgB,OAAO,CAAC,EAAE,QAAgB,EAAE,GAAE,YAAiB,2CA8K9D"}
@@ -35,11 +35,13 @@ function formatDate(value) {
35
35
  return value;
36
36
  }
37
37
  }
38
- export function ApiKeys(_props) {
38
+ export function ApiKeys({ embedded = false } = {}) {
39
39
  const { data, loading, error, refetch } = useApiData('/api-keys');
40
40
  const [showCreate, setShowCreate] = useState(false);
41
41
  const [createdKey, setCreatedKey] = useState(null);
42
42
  const keys = data ?? [];
43
+ const rootPadding = embedded ? '' : 'p-4 sm:p-6';
44
+ const Heading = embedded ? 'h2' : 'h1';
43
45
  const handleRevoke = async (id, name) => {
44
46
  if (!confirm(`Revoke API key "${name}"? This cannot be undone.`))
45
47
  return;
@@ -59,9 +61,9 @@ export function ApiKeys(_props) {
59
61
  }
60
62
  };
61
63
  if (loading) {
62
- return (_jsx("div", { className: "flex h-64 items-center justify-center p-4 sm:p-6", children: _jsx(Loader2, { className: "h-6 w-6 animate-spin text-blue-600" }) }));
64
+ return (_jsx("div", { className: `flex h-64 items-center justify-center ${embedded ? '' : 'p-4 sm:p-6'}`, children: _jsx(Loader2, { className: "h-6 w-6 animate-spin text-blue-600" }) }));
63
65
  }
64
- return (_jsxs("div", { className: "p-4 sm:p-6", children: [_jsxs("div", { className: "mb-6 flex flex-col justify-between gap-3 sm:flex-row sm:items-center", children: [_jsxs("div", { children: [_jsxs("h1", { className: "flex items-center gap-2 text-xl font-semibold text-gray-900 sm:text-2xl", children: [_jsx(KeyRound, { className: "h-5 w-5 text-gray-500" }), "API Keys"] }), _jsxs("p", { className: "mt-1 text-sm text-gray-500", children: ["Long-lived credentials for programmatic access. Use the", ' ', _jsx("code", { className: "rounded bg-gray-100 px-1 py-0.5 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 rounded-lg bg-blue-600 px-4 py-2 text-sm text-white transition-colors hover:bg-blue-700", children: [_jsx(Plus, { className: "h-4 w-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: "h-5 w-5 shrink-0 text-red-600" }), _jsx("span", { className: "flex-1 text-sm text-red-800", children: error }), _jsx("button", { onClick: refetch, className: "rounded-lg border border-red-300 px-3 py-1 text-sm text-red-700 transition-colors hover:bg-red-100", children: "Retry" })] })), keys.length === 0 ? (_jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-10 text-center", children: [_jsx(KeyRound, { className: "mx-auto mb-3 h-8 w-8 text-gray-300" }), _jsx("p", { className: "mb-1 text-sm text-gray-500", children: "No API keys yet" }), _jsx("p", { className: "mb-4 text-xs text-gray-400", 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 rounded-lg bg-blue-600 px-4 py-2 text-sm text-white transition-colors hover:bg-blue-700", children: [_jsx(Plus, { className: "h-4 w-4" }), "Create your first API key"] })] })) : (_jsx("div", { className: "overflow-hidden rounded-lg border border-gray-200 bg-white", children: _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "border-b border-gray-200 bg-gray-50", 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) => {
66
+ return (_jsxs("div", { className: rootPadding, children: [_jsxs("div", { className: "mb-6 flex flex-col justify-between gap-3 sm:flex-row sm:items-center", children: [_jsxs("div", { children: [_jsxs(Heading, { className: "flex items-center gap-2 text-xl font-semibold text-gray-900 sm:text-2xl", children: [_jsx(KeyRound, { className: "h-5 w-5 text-gray-500" }), "API Keys"] }), _jsxs("p", { className: "mt-1 text-sm text-gray-500", children: ["Long-lived credentials for programmatic access. Use the", ' ', _jsx("code", { className: "rounded bg-gray-100 px-1 py-0.5 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 rounded-lg bg-blue-600 px-4 py-2 text-sm text-white transition-colors hover:bg-blue-700", children: [_jsx(Plus, { className: "h-4 w-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: "h-5 w-5 shrink-0 text-red-600" }), _jsx("span", { className: "flex-1 text-sm text-red-800", children: error }), _jsx("button", { onClick: refetch, className: "rounded-lg border border-red-300 px-3 py-1 text-sm text-red-700 transition-colors hover:bg-red-100", children: "Retry" })] })), keys.length === 0 ? (_jsxs("div", { className: "rounded-lg border border-gray-200 bg-white p-10 text-center", children: [_jsx(KeyRound, { className: "mx-auto mb-3 h-8 w-8 text-gray-300" }), _jsx("p", { className: "mb-1 text-sm text-gray-500", children: "No API keys yet" }), _jsx("p", { className: "mb-4 text-xs text-gray-400", 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 rounded-lg bg-blue-600 px-4 py-2 text-sm text-white transition-colors hover:bg-blue-700", children: [_jsx(Plus, { className: "h-4 w-4" }), "Create your first API key"] })] })) : (_jsx("div", { className: "overflow-hidden rounded-lg border border-gray-200 bg-white", children: _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full", children: [_jsx("thead", { className: "border-b border-gray-200 bg-gray-50", 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
67
  const revoked = !!k.revokedAt;
66
68
  const expired = k.expiresAt && new Date(k.expiresAt).getTime() < Date.now();
67
69
  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 font-mono text-sm text-gray-700", children: [k.keyPrefix, "\u2026"] }), _jsx("td", { className: "max-w-xs px-4 py-3 text-sm text-gray-700", 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 rounded-full bg-red-100 px-2 py-0.5 text-xs font-medium text-red-700", children: "Revoked" })) : expired ? (_jsx("span", { className: "inline-flex rounded-full bg-amber-100 px-2 py-0.5 text-xs font-medium text-amber-700", children: "Expired" })) : (_jsx("span", { className: "inline-flex rounded-full bg-green-100 px-2 py-0.5 text-xs font-medium 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: "rounded p-1.5 transition-colors hover:bg-red-50", title: "Revoke", children: _jsx(Trash2, { className: "h-4 w-4 text-red-600" }) })) })] }, k.id));
@@ -1 +1 @@
1
- {"version":3,"file":"ApiKeys.js","sourceRoot":"","sources":["../../src/views/ApiKeys.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ApiKeys.js","sourceRoot":"","sources":["../../src/views/ApiKeys.tsx"],"names":[],"mappings":"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"}
@@ -300,7 +300,7 @@ export function Dashboard({ config, session, onNavigate }) {
300
300
  { label: 'New Page', icon: Plus, onClick: () => nav(`/${pagesSlug}/new`) },
301
301
  { label: 'Upload Media', icon: Upload, onClick: () => nav('/media') },
302
302
  { label: 'New Form', icon: Plus, onClick: () => nav('/forms') },
303
- { label: 'View API', icon: Globe, onClick: () => nav('/api-keys') },
303
+ { label: 'View API', icon: Globe, onClick: () => nav('/settings?tab=api-keys') },
304
304
  ];
305
305
  return items;
306
306
  }, [collections, onNavigate]); // eslint-disable-line react-hooks/exhaustive-deps
@@ -438,7 +438,7 @@ export function Dashboard({ config, session, onNavigate }) {
438
438
  ? 'text-red-600 dark:text-red-400'
439
439
  : iss.tone === 'warn'
440
440
  ? 'text-warning'
441
- : 'text-muted-foreground'}`, children: iss.count }), _jsx(ChevronRight, { className: "text-muted-foreground/60 h-3.5 w-3.5 shrink-0" })] }) }, i))) }))] })] })] }), _jsxs("section", { className: "bg-card border-border overflow-hidden rounded-xl border shadow-sm", children: [_jsxs("header", { className: "border-border flex items-center justify-between border-b px-4 py-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-foreground text-sm font-semibold", children: "Delivery API" }), _jsx("p", { className: "text-muted-foreground mt-0.5 text-xs", children: "Headless content delivery \u00B7 last 24 hours" })] }), _jsxs("button", { className: "text-brand inline-flex items-center gap-1 text-xs font-medium hover:underline", onClick: () => nav('/api-keys'), children: ["API docs ", _jsx(ExternalLink, { className: "h-3 w-3" })] })] }), _jsx(DeliveryGrid, { delivery: delivery, loading: deliveryLoading })] })] }));
441
+ : 'text-muted-foreground'}`, children: iss.count }), _jsx(ChevronRight, { className: "text-muted-foreground/60 h-3.5 w-3.5 shrink-0" })] }) }, i))) }))] })] })] }), _jsxs("section", { className: "bg-card border-border overflow-hidden rounded-xl border shadow-sm", children: [_jsxs("header", { className: "border-border flex items-center justify-between border-b px-4 py-3", children: [_jsxs("div", { className: "min-w-0", children: [_jsx("h2", { className: "text-foreground text-sm font-semibold", children: "Delivery API" }), _jsx("p", { className: "text-muted-foreground mt-0.5 text-xs", children: "Headless content delivery \u00B7 last 24 hours" })] }), _jsxs("button", { className: "text-brand inline-flex items-center gap-1 text-xs font-medium hover:underline", onClick: () => nav('/settings?tab=api-keys'), children: ["API docs ", _jsx(ExternalLink, { className: "h-3 w-3" })] })] }), _jsx(DeliveryGrid, { delivery: delivery, loading: deliveryLoading })] })] }));
442
442
  }
443
443
  // ─── Delivery API grid ──────────────────────────────────────────────────────
444
444
  function DeliveryGrid({ delivery, loading }) {