@prenta/admin 1.15.0 → 1.16.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 (56) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/dist/__tests__/lib/seo-service-geo.test.d.ts +2 -0
  3. package/dist/__tests__/lib/seo-service-geo.test.d.ts.map +1 -0
  4. package/dist/__tests__/lib/seo-service-geo.test.js +103 -0
  5. package/dist/__tests__/lib/seo-service-geo.test.js.map +1 -0
  6. package/dist/__tests__/router/seo-tab-for-path.test.js +4 -0
  7. package/dist/__tests__/router/seo-tab-for-path.test.js.map +1 -1
  8. package/dist/__tests__/views/seo-ai-visibility.render.test.d.ts +2 -0
  9. package/dist/__tests__/views/seo-ai-visibility.render.test.d.ts.map +1 -0
  10. package/dist/__tests__/views/seo-ai-visibility.render.test.js +244 -0
  11. package/dist/__tests__/views/seo-ai-visibility.render.test.js.map +1 -0
  12. package/dist/__tests__/views/seo-geo-settings-card.render.test.d.ts +2 -0
  13. package/dist/__tests__/views/seo-geo-settings-card.render.test.d.ts.map +1 -0
  14. package/dist/__tests__/views/seo-geo-settings-card.render.test.js +227 -0
  15. package/dist/__tests__/views/seo-geo-settings-card.render.test.js.map +1 -0
  16. package/dist/__tests__/views/seo-settings.render.test.js +16 -4
  17. package/dist/__tests__/views/seo-settings.render.test.js.map +1 -1
  18. package/dist/__tests__/views/seo-technical-tab.render.test.js +13 -0
  19. package/dist/__tests__/views/seo-technical-tab.render.test.js.map +1 -1
  20. package/dist/lib/seo-service.d.ts +94 -0
  21. package/dist/lib/seo-service.d.ts.map +1 -1
  22. package/dist/lib/seo-service.js +33 -0
  23. package/dist/lib/seo-service.js.map +1 -1
  24. package/dist/prenta-admin.css +1 -1
  25. package/dist/views/SEO.d.ts +5 -1
  26. package/dist/views/SEO.d.ts.map +1 -1
  27. package/dist/views/SEO.js +12 -7
  28. package/dist/views/SEO.js.map +1 -1
  29. package/dist/views/seo/AiVisibilityTab.d.ts +4 -0
  30. package/dist/views/seo/AiVisibilityTab.d.ts.map +1 -0
  31. package/dist/views/seo/AiVisibilityTab.js +165 -0
  32. package/dist/views/seo/AiVisibilityTab.js.map +1 -0
  33. package/dist/views/seo/TechnicalTab.d.ts +3 -1
  34. package/dist/views/seo/TechnicalTab.d.ts.map +1 -1
  35. package/dist/views/seo/TechnicalTab.js +4 -4
  36. package/dist/views/seo/TechnicalTab.js.map +1 -1
  37. package/dist/views/settings/SeoGeoSettingsCard.d.ts +12 -0
  38. package/dist/views/settings/SeoGeoSettingsCard.d.ts.map +1 -0
  39. package/dist/views/settings/SeoGeoSettingsCard.js +178 -0
  40. package/dist/views/settings/SeoGeoSettingsCard.js.map +1 -0
  41. package/dist/views/settings/SeoSettingsTab.d.ts.map +1 -1
  42. package/dist/views/settings/SeoSettingsTab.js +2 -1
  43. package/dist/views/settings/SeoSettingsTab.js.map +1 -1
  44. package/package.json +3 -3
  45. package/src/__tests__/lib/seo-service-geo.test.ts +118 -0
  46. package/src/__tests__/router/seo-tab-for-path.test.ts +5 -0
  47. package/src/__tests__/views/seo-ai-visibility.render.test.tsx +279 -0
  48. package/src/__tests__/views/seo-geo-settings-card.render.test.tsx +253 -0
  49. package/src/__tests__/views/seo-settings.render.test.tsx +28 -7
  50. package/src/__tests__/views/seo-technical-tab.render.test.tsx +15 -0
  51. package/src/lib/seo-service.ts +105 -0
  52. package/src/views/SEO.tsx +15 -6
  53. package/src/views/seo/AiVisibilityTab.tsx +616 -0
  54. package/src/views/seo/TechnicalTab.tsx +27 -8
  55. package/src/views/settings/SeoGeoSettingsCard.tsx +310 -0
  56. package/src/views/settings/SeoSettingsTab.tsx +2 -0
@@ -0,0 +1,178 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useId, useRef, useState } from 'react';
4
+ import { AlertTriangle, RefreshCw } from 'lucide-react';
5
+ import { toast } from 'sonner';
6
+ import { SEO_GEO_RETENTION, fetchGeoSettings, updateGeoSettings, } from '../../lib/seo-service.js';
7
+ import { Skeleton } from '../../components/ui/Skeleton.js';
8
+ import { SettingsCard, SettingsToggleRow } from './components.js';
9
+ const INPUT_CLASS = 'w-32 rounded-md border border-border bg-input-background px-3 py-2 text-base text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60 aria-invalid:border-destructive';
10
+ /** Horizontally scrollable, so focusable (`tabIndex={0}`) for keyboard scrolling. */
11
+ const SNIPPET_CLASS = 'bg-muted text-foreground focus-visible:ring-ring overflow-x-auto rounded-md p-3 text-sm focus-visible:ring-2 focus-visible:outline-none';
12
+ /**
13
+ * The two host-side one-liners. Kept as plain strings so the test can pin the
14
+ * identifiers (`observeGeoTraffic`, `createAstroRedirectMiddleware`) against
15
+ * the `@prenta/core/site` and `@prenta/core/astro/redirects` exports.
16
+ */
17
+ const NEXT_SNIPPET = `import { applyPublicRedirect, observeGeoTraffic } from '@prenta/core/site'
18
+ // inside proxy(), just before the applyPublicRedirect call:
19
+ observeGeoTraffic(request, { baseUrl: origin, adminPaths: ['/admin'] })`;
20
+ const ASTRO_SNIPPET = `// src/middleware.ts — GEO capture is on by default:
21
+ import { createAstroRedirectMiddleware } from '@prenta/core/astro/redirects'
22
+ export const onRequest = createAstroRedirectMiddleware({ baseUrl: import.meta.env.PRENTA_CMS_URL })`;
23
+ /**
24
+ * Settings → SEO "AI visibility" card (spec 2026-09-08 §6): the measurement
25
+ * kill switch, daily-bucket retention, and the one-line middleware setup for
26
+ * Next and Astro hosts. Owns its own fetch/save like `SeoAutopilotCard`; every
27
+ * control PUTs a sparse patch immediately, saves queue behind each other, and
28
+ * the card re-reads the server's resolved settings after each success. Takes
29
+ * no `onNavigate`, so it names the AI visibility tab in copy without linking.
30
+ */
31
+ export function SeoGeoSettingsCard({ canEdit }) {
32
+ const baseId = useId();
33
+ const [settings, setSettings] = useState(null);
34
+ /** Mirrors `settings` synchronously so a queued save reads the latest resolved values. */
35
+ const settingsRef = useRef(null);
36
+ const [loading, setLoading] = useState(true);
37
+ const [busy, setBusy] = useState(false);
38
+ /** Saves are serialised through this chain instead of being dropped when one is in flight. */
39
+ const saveChainRef = useRef(Promise.resolve());
40
+ const mountedRef = useRef(true);
41
+ useEffect(() => {
42
+ mountedRef.current = true;
43
+ return () => {
44
+ mountedRef.current = false;
45
+ };
46
+ }, []);
47
+ const commitSettings = useCallback((next) => {
48
+ settingsRef.current = next;
49
+ setSettings(next);
50
+ }, []);
51
+ const load = useCallback(async () => {
52
+ setLoading(true);
53
+ const s = await fetchGeoSettings();
54
+ if (!mountedRef.current)
55
+ return;
56
+ if (s)
57
+ commitSettings(s);
58
+ setLoading(false);
59
+ }, [commitSettings]);
60
+ useEffect(() => {
61
+ void load();
62
+ }, [load]);
63
+ /**
64
+ * Re-read without the skeleton after a successful save. The PUT answers only
65
+ * `{ ok }`, so the server-resolved values come from a fresh GET; if that GET
66
+ * fails, the accepted patch is applied locally — it is exactly what the
67
+ * server stored (the card clamps retention the way the server does).
68
+ */
69
+ const refresh = useCallback(async (accepted) => {
70
+ const s = await fetchGeoSettings();
71
+ if (!mountedRef.current)
72
+ return;
73
+ if (s)
74
+ commitSettings(s);
75
+ else if (settingsRef.current)
76
+ commitSettings({ ...settingsRef.current, ...accepted });
77
+ }, [commitSettings]);
78
+ /** Resolves `true` when the server accepted the patch. */
79
+ async function performSave(patch, successMessage) {
80
+ if (!settingsRef.current || !mountedRef.current)
81
+ return false;
82
+ setBusy(true);
83
+ try {
84
+ const res = await updateGeoSettings(patch);
85
+ if (!mountedRef.current)
86
+ return false;
87
+ if (!res.ok) {
88
+ toast.error(res.error ?? 'Failed to update AI visibility settings');
89
+ return false;
90
+ }
91
+ toast.success(successMessage);
92
+ await refresh(patch);
93
+ return true;
94
+ }
95
+ finally {
96
+ if (mountedRef.current)
97
+ setBusy(false);
98
+ }
99
+ }
100
+ /**
101
+ * Queue a sparse patch behind any save already in flight. Callers await the
102
+ * result to know whether to keep or reset a local draft.
103
+ */
104
+ function save(patch, successMessage) {
105
+ const next = saveChainRef.current.then(() => performSave(patch, successMessage));
106
+ saveChainRef.current = next.catch(() => undefined);
107
+ return next;
108
+ }
109
+ if (loading) {
110
+ return (_jsx(SettingsCard, { title: "AI visibility", children: _jsxs("div", { "aria-busy": "true", "aria-live": "polite", children: [_jsx("span", { className: "sr-only", children: "Loading AI visibility settings\u2026" }), _jsx(Skeleton, { lines: 4 })] }) }));
111
+ }
112
+ if (!settings) {
113
+ return (_jsx(SettingsCard, { title: "AI visibility", children: _jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: "Failed to load AI visibility settings." }), _jsxs("button", { type: "button", onClick: () => void load(), className: "border-destructive/40 focus-visible:ring-ring inline-flex items-center gap-2 rounded-md border px-3 py-1 transition-colors hover:opacity-80 focus-visible:ring-2 focus-visible:outline-none", children: [_jsx(RefreshCw, { size: 14, "aria-hidden": "true" }), "Retry"] })] }) }));
114
+ }
115
+ // Controls lock only for read-only users; a save in flight must not steal
116
+ // focus (saves queue), so the card is marked busy instead.
117
+ const disabled = !canEdit;
118
+ return (_jsx(SettingsCard, { title: "AI visibility", description: "Record which AI and search crawlers fetch your pages and which answer engines send visitors. Only bot names, engine names, and your own paths are stored \u2014 never IPs, user agents, or referrer URLs.", busy: busy, children: _jsxs("div", { className: "flex flex-col gap-5", children: [_jsx(SettingsToggleRow, { label: "Record AI crawler and referral activity", description: "When off, the server drops incoming beacons and the AI visibility tab in SEO shows a disabled state. Existing data stays until retention prunes it.", checked: settings.enabled, onChange: (v) => void save({ enabled: v }, v ? 'AI visibility measurement enabled' : 'AI visibility measurement disabled'), disabled: disabled }), _jsx(RetentionField, { id: `${baseId}-retention`, value: settings.retentionDays, disabled: disabled, onCommit: (v) => save({ retentionDays: v }, `Retention set to ${v} days`) }), _jsxs("div", { className: "border-border flex flex-col gap-3 border-t pt-4", children: [_jsxs("div", { children: [_jsx("p", { className: "text-foreground text-base font-medium", children: "Site middleware setup" }), _jsx("p", { className: "text-muted-foreground mt-0.5 text-sm", children: "Counts arrive only once the public site reports them. Add one line to the host that serves your pages." })] }), _jsxs("div", { children: [_jsxs("p", { className: "text-muted-foreground mb-1 text-sm", children: ["Next.js \u2014 ", _jsx("code", { className: "text-foreground", children: "proxy.ts" })] }), _jsx("pre", { className: SNIPPET_CLASS, tabIndex: 0, "aria-label": "Next.js middleware snippet", children: _jsx("code", { children: NEXT_SNIPPET }) })] }), _jsxs("div", { children: [_jsx("p", { className: "text-muted-foreground mb-1 text-sm", children: "Astro" }), _jsx("pre", { className: SNIPPET_CLASS, tabIndex: 0, "aria-label": "Astro middleware snippet", children: _jsx("code", { children: ASTRO_SNIPPET }) })] })] })] }) }));
119
+ }
120
+ /**
121
+ * Retention input that commits on blur (or Enter). The draft is local so typing
122
+ * never fires a PUT per keystroke; an unchanged blur restores the saved value
123
+ * without a request. Out-of-range integers are clamped to 7–365 before they are
124
+ * sent (the server clamps identically). An empty, non-numeric, or fractional
125
+ * draft is a client-side validation failure: it shows an inline error and sends
126
+ * nothing. A rejected commit (`onCommit` resolves `false`) falls back to the
127
+ * last saved value so the input never shows text the server refused.
128
+ */
129
+ function RetentionField({ id, value, disabled, onCommit, }) {
130
+ const [draft, setDraft] = useState(String(value));
131
+ const [syncedValue, setSyncedValue] = useState(value);
132
+ const [error, setError] = useState(null);
133
+ // Adopt a new server value without an effect: reset the draft during render
134
+ // when the prop changes (React's recommended "derive state from props" form).
135
+ if (value !== syncedValue) {
136
+ setSyncedValue(value);
137
+ setDraft(String(value));
138
+ }
139
+ /**
140
+ * Latest confirmed value, readable from a commit's `.then` after later
141
+ * renders. Saves queue, so a second commit can fail after an earlier one
142
+ * changed `value`; reverting to the closed-over `value` would show the
143
+ * pre-first-save number while the server holds the first save.
144
+ */
145
+ const valueRef = useRef(value);
146
+ valueRef.current = value;
147
+ const hintId = `${id}-hint`;
148
+ const errorId = `${id}-error`;
149
+ const { min, max } = SEO_GEO_RETENTION;
150
+ function commit() {
151
+ const n = Number(draft);
152
+ if (draft.trim() === '' || !Number.isInteger(n)) {
153
+ setError('Retention must be a whole number of days');
154
+ return;
155
+ }
156
+ const next = Math.max(min, Math.min(max, n));
157
+ if (next === valueRef.current) {
158
+ setDraft(String(valueRef.current));
159
+ return;
160
+ }
161
+ void onCommit(next).then((ok) => {
162
+ // On success the parent adopts the server value and the derive-from-props
163
+ // branch above resets the draft; on failure revert to the latest confirmed
164
+ // value (not the one closed over when this commit started).
165
+ if (!ok)
166
+ setDraft(String(valueRef.current));
167
+ });
168
+ }
169
+ return (_jsxs("div", { children: [_jsx("label", { htmlFor: id, className: "text-foreground mb-1 block text-sm font-medium", children: "Retention (days)" }), _jsx("input", { id: id, type: "number", inputMode: "numeric", className: INPUT_CLASS, min: min, max: max, step: 1, value: draft, disabled: disabled, "aria-invalid": error ? true : undefined, "aria-describedby": error ? `${hintId} ${errorId}` : hintId, onChange: (e) => {
170
+ setDraft(e.target.value);
171
+ if (error)
172
+ setError(null);
173
+ }, onBlur: commit, onKeyDown: (e) => {
174
+ if (e.key === 'Enter')
175
+ e.currentTarget.blur();
176
+ } }), _jsxs("p", { id: hintId, className: "text-muted-foreground mt-1 text-sm", children: ["Daily counts older than this are deleted by the nightly cleanup. ", min, "\u2013", max, " days."] }), error ? (_jsxs("p", { id: errorId, className: "text-destructive mt-1 flex items-center gap-1 text-sm", children: [_jsx(AlertTriangle, { size: 14, className: "shrink-0", "aria-hidden": "true" }), error] })) : null] }));
177
+ }
178
+ //# sourceMappingURL=SeoGeoSettingsCard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SeoGeoSettingsCard.js","sourceRoot":"","sources":["../../../src/views/settings/SeoGeoSettingsCard.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SeoSettingsTab.d.ts","sourceRoot":"","sources":["../../../src/views/settings/SeoSettingsTab.tsx"],"names":[],"mappings":"AA0EA,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,mBAAmB,2CA2HvE"}
1
+ {"version":3,"file":"SeoSettingsTab.d.ts","sourceRoot":"","sources":["../../../src/views/settings/SeoSettingsTab.tsx"],"names":[],"mappings":"AA2EA,MAAM,WAAW,mBAAmB;IAClC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,2DAA2D;IAC3D,IAAI,CAAC,EAAE,MAAM,CAAA;CACd;AAED,wBAAgB,cAAc,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,EAAE,mBAAmB,2CA4HvE"}
@@ -8,6 +8,7 @@ import { SEOConfigPanel } from '../../components/SEOConfigPanel.js';
8
8
  import { SearchDataCard } from './SearchDataCard.js';
9
9
  import { SeoAutopilotCard } from './SeoAutopilotCard.js';
10
10
  import { SeoDigestCard } from './SeoDigestCard.js';
11
+ import { SeoGeoSettingsCard } from './SeoGeoSettingsCard.js';
11
12
  import { ConfirmDangerousSettingDialog, SettingsCard, SettingsSaveBar, SettingsSourceBadge, SettingsToggleRow, SettingsValidationSummary, } from './components.js';
12
13
  import { META_DESCRIPTION_MAX, META_DESCRIPTION_MIN, useSeoSettings, validateTitleTemplateClient, } from './useSeoSettings.js';
13
14
  const INPUT_CLASS = 'w-full rounded-md border border-border bg-input-background px-3 py-2 text-base text-foreground focus-visible:ring-2 focus-visible:ring-ring focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-60';
@@ -48,7 +49,7 @@ export function SeoSettingsTab({ onNavigate, role }) {
48
49
  if (seo.loading) {
49
50
  return (_jsxs("div", { className: "space-y-4", "aria-busy": "true", "aria-live": "polite", children: [_jsx("span", { className: "sr-only", children: "Loading SEO settings\u2026" }), [0, 1, 2, 3].map((i) => (_jsxs("div", { className: "border-border bg-card rounded-lg border p-6", children: [_jsx("div", { className: "bg-muted mb-4 h-4 w-40 animate-pulse rounded" }), _jsxs("div", { className: "space-y-3", children: [_jsx("div", { className: "bg-muted h-9 w-full animate-pulse rounded" }), _jsx("div", { className: "bg-muted h-9 w-full animate-pulse rounded" })] })] }, i)))] }));
50
51
  }
51
- return (_jsxs("div", { className: "space-y-4", children: [_jsx(SeoWorkspaceCallout, { onNavigate: onNavigate }), seo.loadError && (_jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: seo.loadError }), _jsx("button", { type: "button", onClick: seo.refetch, className: "border-destructive/40 rounded-md border px-3 py-1 transition-colors hover:opacity-80", children: "Retry" })] })), !canEdit && (_jsxs("div", { className: "border-border bg-muted text-muted-foreground flex items-center gap-2 rounded-lg border p-4 text-sm", children: [_jsx(Info, { size: 16, className: "shrink-0", "aria-hidden": "true" }), "You have read-only access to SEO defaults. Only administrators can make changes."] })), _jsx(SettingsValidationSummary, { issues: seo.issues }), !seo.siteUrl ? (_jsxs("div", { role: "status", className: "border-warning/30 bg-warning/10 text-warning flex items-start gap-2 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "mt-0.5 shrink-0", "aria-hidden": "true" }), "Set the public site URL in Settings \u2192 General. View site and Share stay disabled until it is set."] })) : siteUrlMatchesAdminOrigin(seo.siteUrl) ? (_jsxs("div", { role: "status", className: "border-warning/30 bg-warning/10 text-warning flex items-start gap-2 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "mt-0.5 shrink-0", "aria-hidden": "true" }), "This origin is the admin, not the public site. Set the public site URL to the live apex \u2014 View site and Share stay disabled while it matches this CMS host."] })) : null, _jsx(MetaDefaultsCard, { seo: seo, canEdit: canEdit }), _jsx(OrganizationCard, { seo: seo, canEdit: canEdit }), _jsx(SearchEngineVerificationCard, { seo: seo, canEdit: canEdit }), _jsx(SearchDataCard, { canEdit: canEdit }), _jsx(SeoAutopilotCard, { canEdit: canEdit, onNavigate: onNavigate }), _jsx(SeoDigestCard, { canEdit: canEdit }), _jsx(SitemapDefaultsCard, { seo: seo, canEdit: canEdit, onNavigate: onNavigate }), _jsxs("details", { className: "border-border bg-card group rounded-lg border", children: [_jsxs("summary", { className: "text-foreground flex cursor-pointer list-none items-center justify-between p-4 text-base font-medium", children: [_jsx("span", { children: "Advanced & per-collection SEO" }), _jsx("span", { className: "text-muted-foreground text-sm font-normal group-open:hidden", children: "Show" }), _jsx("span", { className: "text-muted-foreground hidden text-sm font-normal group-open:inline", children: "Hide" })] }), _jsxs("div", { className: "border-border border-t p-4", children: [_jsx("p", { className: "text-muted-foreground mb-4 text-sm", children: "Site name, social handle, per-collection schema, and route toggles. These share the same SEO configuration as the defaults above." }), _jsx(SEOConfigPanel, {})] })] }), seo.saveState === 'error' && seo.saveError && (_jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: seo.saveError }), _jsx("button", { type: "button", onClick: seo.save, className: "border-destructive/40 rounded-md border px-3 py-1 transition-colors hover:opacity-80", children: "Retry" })] })), _jsx(SettingsSaveBar, { dirty: seo.dirty, canEdit: canEdit, hasErrors: seo.hasErrors, saveState: seo.saveState, onSave: seo.save, onReset: seo.reset })] }));
52
+ return (_jsxs("div", { className: "space-y-4", children: [_jsx(SeoWorkspaceCallout, { onNavigate: onNavigate }), seo.loadError && (_jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: seo.loadError }), _jsx("button", { type: "button", onClick: seo.refetch, className: "border-destructive/40 rounded-md border px-3 py-1 transition-colors hover:opacity-80", children: "Retry" })] })), !canEdit && (_jsxs("div", { className: "border-border bg-muted text-muted-foreground flex items-center gap-2 rounded-lg border p-4 text-sm", children: [_jsx(Info, { size: 16, className: "shrink-0", "aria-hidden": "true" }), "You have read-only access to SEO defaults. Only administrators can make changes."] })), _jsx(SettingsValidationSummary, { issues: seo.issues }), !seo.siteUrl ? (_jsxs("div", { role: "status", className: "border-warning/30 bg-warning/10 text-warning flex items-start gap-2 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "mt-0.5 shrink-0", "aria-hidden": "true" }), "Set the public site URL in Settings \u2192 General. View site and Share stay disabled until it is set."] })) : siteUrlMatchesAdminOrigin(seo.siteUrl) ? (_jsxs("div", { role: "status", className: "border-warning/30 bg-warning/10 text-warning flex items-start gap-2 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "mt-0.5 shrink-0", "aria-hidden": "true" }), "This origin is the admin, not the public site. Set the public site URL to the live apex \u2014 View site and Share stay disabled while it matches this CMS host."] })) : null, _jsx(MetaDefaultsCard, { seo: seo, canEdit: canEdit }), _jsx(OrganizationCard, { seo: seo, canEdit: canEdit }), _jsx(SearchEngineVerificationCard, { seo: seo, canEdit: canEdit }), _jsx(SearchDataCard, { canEdit: canEdit }), _jsx(SeoGeoSettingsCard, { canEdit: canEdit }), _jsx(SeoAutopilotCard, { canEdit: canEdit, onNavigate: onNavigate }), _jsx(SeoDigestCard, { canEdit: canEdit }), _jsx(SitemapDefaultsCard, { seo: seo, canEdit: canEdit, onNavigate: onNavigate }), _jsxs("details", { className: "border-border bg-card group rounded-lg border", children: [_jsxs("summary", { className: "text-foreground flex cursor-pointer list-none items-center justify-between p-4 text-base font-medium", children: [_jsx("span", { children: "Advanced & per-collection SEO" }), _jsx("span", { className: "text-muted-foreground text-sm font-normal group-open:hidden", children: "Show" }), _jsx("span", { className: "text-muted-foreground hidden text-sm font-normal group-open:inline", children: "Hide" })] }), _jsxs("div", { className: "border-border border-t p-4", children: [_jsx("p", { className: "text-muted-foreground mb-4 text-sm", children: "Site name, social handle, per-collection schema, and route toggles. These share the same SEO configuration as the defaults above." }), _jsx(SEOConfigPanel, {})] })] }), seo.saveState === 'error' && seo.saveError && (_jsxs("div", { role: "alert", className: "border-destructive/30 bg-destructive/10 text-destructive flex items-center gap-3 rounded-lg border p-4 text-sm", children: [_jsx(AlertTriangle, { size: 16, className: "shrink-0", "aria-hidden": "true" }), _jsx("span", { className: "flex-1", children: seo.saveError }), _jsx("button", { type: "button", onClick: seo.save, className: "border-destructive/40 rounded-md border px-3 py-1 transition-colors hover:opacity-80", children: "Retry" })] })), _jsx(SettingsSaveBar, { dirty: seo.dirty, canEdit: canEdit, hasErrors: seo.hasErrors, saveState: seo.saveState, onSave: seo.save, onReset: seo.reset })] }));
52
53
  }
53
54
  // ---------------------------------------------------------------------------
54
55
  // Full SEO workspace callout
@@ -1 +1 @@
1
- {"version":3,"file":"SeoSettingsTab.js","sourceRoot":"","sources":["../../../src/views/settings/SeoSettingsTab.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SeoSettingsTab.js","sourceRoot":"","sources":["../../../src/views/settings/SeoSettingsTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,IAAI,EACJ,OAAO,EACP,SAAS,EACT,MAAM,EACN,MAAM,EACN,CAAC,GACF,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,yBAAyB,EAAE,MAAM,2BAA2B,CAAA;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAA;AACvE,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACnE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAA;AAClD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EACL,6BAA6B,EAC7B,YAAY,EACZ,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,yBAAyB,GAC1B,MAAM,iBAAiB,CAAA;AACxB,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,cAAc,EACd,2BAA2B,GAG5B,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,GACf,wNAAwN,CAAA;AAC1N,MAAM,WAAW,GAAG,kEAAkE,CAAA;AAEtF,MAAM,gBAAgB,GAAG;IACvB,QAAQ;IACR,QAAQ;IACR,QAAQ;IACR,aAAa;IACb,UAAU;IACV,QAAQ;IACR,YAAY;IACZ,OAAO;CACR,CAAA;AAED,uDAAuD;AACvD,SAAS,YAAY,CAAC,QAAgB,EAAE,QAAgB;IACtD,MAAM,GAAG,GAAG,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,QAAQ,CAAA;IACjE,MAAM,IAAI,GAA2B;QACnC,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,QAAQ,IAAI,WAAW;QAC7B,IAAI,EAAE,MAAM;QACZ,SAAS,EAAE,GAAG;QACd,MAAM,EAAE,UAAU;QAClB,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3C,QAAQ,EAAE,MAAM;QAChB,GAAG,EAAE,OAAO;KACb,CAAA;IACD,OAAO,GAAG;SACP,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,CAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACpD,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC;SAC5B,IAAI,EAAE,CAAA;AACX,CAAC;AAQD,MAAM,UAAU,cAAc,CAAC,EAAE,UAAU,EAAE,IAAI,EAAuB;IACtE,MAAM,OAAO,GAAG,IAAI,KAAK,OAAO,CAAA;IAChC,MAAM,GAAG,GAAG,cAAc,CAAC,OAAO,CAAC,CAAA;IAEnC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;QAChB,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,eAAW,MAAM,eAAW,QAAQ,aAC5D,eAAM,SAAS,EAAC,SAAS,2CAA6B,EACrD,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACvB,eAAa,SAAS,EAAC,6CAA6C,aAClE,cAAK,SAAS,EAAC,8CAA8C,GAAG,EAChE,eAAK,SAAS,EAAC,WAAW,aACxB,cAAK,SAAS,EAAC,2CAA2C,GAAG,EAC7D,cAAK,SAAS,EAAC,2CAA2C,GAAG,IACzD,KALE,CAAC,CAML,CACP,CAAC,IACE,CACP,CAAA;IACH,CAAC;IAED,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,mBAAmB,IAAC,UAAU,EAAE,UAAU,GAAI,EAE9C,GAAG,CAAC,SAAS,IAAI,CAChB,eACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,gHAAgH,aAE1H,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,UAAU,iBAAa,MAAM,GAAG,EACnE,eAAM,SAAS,EAAC,QAAQ,YAAE,GAAG,CAAC,SAAS,GAAQ,EAC/C,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,CAAC,OAAO,EACpB,SAAS,EAAC,sFAAsF,sBAGzF,IACL,CACP,EAEA,CAAC,OAAO,IAAI,CACX,eAAK,SAAS,EAAC,oGAAoG,aACjH,KAAC,IAAI,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,UAAU,iBAAa,MAAM,GAAG,wFAEtD,CACP,EAED,KAAC,yBAAyB,IAAC,MAAM,EAAE,GAAG,CAAC,MAAM,GAAI,EAEhD,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CACd,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mGAAmG,aAE7G,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,iBAAiB,iBAAa,MAAM,GAAG,8GAGtE,CACP,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAC3C,eACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mGAAmG,aAE7G,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,iBAAiB,iBAAa,MAAM,GAAG,wKAGtE,CACP,CAAC,CAAC,CAAC,IAAI,EAER,KAAC,gBAAgB,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAI,EAChD,KAAC,gBAAgB,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAI,EAChD,KAAC,4BAA4B,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,GAAI,EAC5D,KAAC,cAAc,IAAC,OAAO,EAAE,OAAO,GAAI,EACpC,KAAC,kBAAkB,IAAC,OAAO,EAAE,OAAO,GAAI,EACxC,KAAC,gBAAgB,IAAC,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAI,EAC9D,KAAC,aAAa,IAAC,OAAO,EAAE,OAAO,GAAI,EACnC,KAAC,mBAAmB,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,UAAU,GAAI,EAE3E,mBAAS,SAAS,EAAC,+CAA+C,aAChE,mBAAS,SAAS,EAAC,sGAAsG,aACvH,2DAA8C,EAC9C,eAAM,SAAS,EAAC,6DAA6D,qBAAY,EACzF,eAAM,SAAS,EAAC,oEAAoE,qBAE7E,IACC,EACV,eAAK,SAAS,EAAC,4BAA4B,aACzC,YAAG,SAAS,EAAC,oCAAoC,kJAG7C,EACJ,KAAC,cAAc,KAAG,IACd,IACE,EAET,GAAG,CAAC,SAAS,KAAK,OAAO,IAAI,GAAG,CAAC,SAAS,IAAI,CAC7C,eACE,IAAI,EAAC,OAAO,EACZ,SAAS,EAAC,gHAAgH,aAE1H,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,UAAU,iBAAa,MAAM,GAAG,EACnE,eAAM,SAAS,EAAC,QAAQ,YAAE,GAAG,CAAC,SAAS,GAAQ,EAC/C,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,CAAC,IAAI,EACjB,SAAS,EAAC,sFAAsF,sBAGzF,IACL,CACP,EAED,KAAC,eAAe,IACd,KAAK,EAAE,GAAG,CAAC,KAAK,EAChB,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,SAAS,EAAE,GAAG,CAAC,SAAS,EACxB,MAAM,EAAE,GAAG,CAAC,IAAI,EAChB,OAAO,EAAE,GAAG,CAAC,KAAK,GAClB,IACE,CACP,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,SAAS,mBAAmB,CAAC,EAAE,UAAU,EAA2C;IAClF,OAAO,CACL,eAAK,SAAS,EAAC,0EAA0E,aACvF,eAAM,SAAS,EAAC,uFAAuF,YACrG,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,GAClC,EACP,eAAK,SAAS,EAAC,QAAQ,aACrB,YAAG,SAAS,EAAC,uCAAuC,oDAAwC,EAC5F,YAAG,SAAS,EAAC,+BAA+B,0HAGxC,IACA,EACN,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,EAAE,CAAC,MAAM,CAAC,EACnC,SAAS,EAAC,2JAA2J,aAErK,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,gBAEtC,IACL,CACP,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,gBAAgB;AAChB,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,EAA6C;IACnF,MAAM,UAAU,GAAG,KAAK,EAAE,CAAA;IAC1B,MAAM,MAAM,GAAG,KAAK,EAAE,CAAA;IACtB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;IAC/C,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,eAAe,CAAC,CAAA;IACrE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,wBAAwB,CAAC,CAAA;IAC1E,MAAM,aAAa,GAAG,2BAA2B,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;IAErE,MAAM,OAAO,GAAG,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,CAAC,MAAM,CAAA;IACzD,MAAM,cAAc,GAClB,OAAO,GAAG,oBAAoB,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,OAAO,GAAG,oBAAoB,CAAC;QAC/E,CAAC,CAAC,cAAc;QAChB,CAAC,CAAC,uBAAuB,CAAA;IAE7B,MAAM,gBAAgB,GAAG,OAAO,CAAC,aAAa,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAC7E,MAAM,YAAY,GAAG,OAAO,CAAC,sBAAsB,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAClF,MAAM,aAAa,GAAG,OAAO,CAAC,cAAc,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAE3E,OAAO,CACL,MAAC,YAAY,IACX,KAAK,EAAC,eAAe,EACrB,WAAW,EAAC,iGAAiG,aAE7G,eAAK,SAAS,EAAC,WAAW,aAExB,0BACE,iBAAO,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,WAAW,+BAEhD,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,aAAa,GAAI,IAC9C,EACR,gBACE,EAAE,EAAE,UAAU,EACd,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,aAAa,EACzB,QAAQ,EAAE,CAAC,gBAAgB,EAC3B,WAAW,EAAC,sBAAiB,kBACf,aAAa,EAAE,QAAQ,KAAK,OAAO,EACjD,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC1D,SAAS,EAAE,WAAW,GACtB,EACF,aAAG,SAAS,EAAC,oCAAoC,yBACtC,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,0DACjC,EACH,aAAa,CAAC,CAAC,CAAC,CACf,YAAG,SAAS,EAAC,+BAA+B,YAAE,aAAa,CAAC,OAAO,GAAK,CACzE,CAAC,CAAC,CAAC,CACF,aAAa,CAAC,KAAK,IAAI,CACrB,aAAG,SAAS,EAAC,oCAAoC,yBACtC,GAAG,EACZ,eAAM,SAAS,EAAC,6BAA6B,YAC1C,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,GAC1C,IACL,CACL,CACF,IACG,EAGN,0BACE,iBAAO,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,yCAE5C,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,sBAAsB,GAAI,IACvD,EACR,mBACE,EAAE,EAAE,MAAM,EACV,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,IAAI,CAAC,sBAAsB,EAClC,QAAQ,EAAE,CAAC,YAAY,sBACL,GAAG,MAAM,QAAQ,EACnC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,wBAAwB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EACnE,SAAS,EAAE,GAAG,WAAW,WAAW,GACpC,EACF,eAAK,SAAS,EAAC,8CAA8C,aAC3D,YAAG,SAAS,EAAC,+BAA+B,4EAExC,EACJ,gBAAM,EAAE,EAAE,GAAG,MAAM,QAAQ,EAAE,SAAS,EAAE,WAAW,cAAc,EAAE,aAChE,OAAO,OAAG,oBAAoB,IAC1B,IACH,EACL,SAAS,IAAI,YAAG,SAAS,EAAC,2BAA2B,YAAE,SAAS,CAAC,OAAO,GAAK,IAC1E,EAGN,0BACE,gBAAM,SAAS,EAAE,WAAW,2CAE1B,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,cAAc,GAAI,IAChD,EACP,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,8GAA8G,YAC1H,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;wCACrB,qDAAqD;wCACrD,cACE,GAAG,EAAE,IAAI,CAAC,cAAc,EACxB,GAAG,EAAC,8BAA8B,EAClC,SAAS,EAAC,4BAA4B,GACtC,CACH,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,uBAAuB,iBAAa,MAAM,GAAG,CAC7E,GACG,EACN,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAK,SAAS,EAAC,yBAAyB,aACtC,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAClC,QAAQ,EAAE,CAAC,aAAa,EACxB,SAAS,EAAC,sLAAsL,aAEhM,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,EACtC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,IAC1C,EACR,IAAI,CAAC,cAAc,IAAI,aAAa,IAAI,CACvC,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE;4DACZ,QAAQ,CAAC,gBAAgB,EAAE,EAAE,CAAC,CAAA;4DAC9B,QAAQ,CAAC,2BAA2B,EAAE,EAAE,CAAC,CAAA;wDAC3C,CAAC,EACD,SAAS,EAAC,8HAA8H,aAExI,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,cAE3B,CACV,IACG,EACN,YAAG,SAAS,EAAC,+BAA+B,0CAAyB,IACjE,IACF,IACF,IACF,EAGN,KAAC,cAAc,IACb,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,QAAQ,CAAC,EACrD,GAAG,EAAE,GAAG,CAAC,OAAO,IAAI,qBAAqB,EACzC,WAAW,EACT,IAAI,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,6CAA6C,EAErF,KAAK,EAAE,IAAI,CAAC,cAAc,EAC1B,QAAQ,EAAE,GAAG,CAAC,QAAQ,GACtB,EAEF,KAAC,gBAAgB,IACf,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,EAClD,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,2BAA2B,EAAE,IAAI,CAAC,EAAE,CAAC,GACtE,IACW,CAChB,CAAA;AACH,CAAC;AAED,SAAS,cAAc,CAAC,EACtB,KAAK,EACL,GAAG,EACH,WAAW,EACX,KAAK,EACL,QAAQ,GAOT;IACC,OAAO,CACL,eAAK,SAAS,EAAC,4DAA4D,aACzE,eAAK,SAAS,EAAC,qCAAqC,aAClD,YAAG,SAAS,EAAC,wEAAwE,+BAEjF,EACJ,YAAG,SAAS,EAAC,+BAA+B,YAAE,GAAG,GAAK,EACtD,YAAG,SAAS,EAAC,4CAA4C,YAAE,KAAK,GAAK,EACrE,YAAG,SAAS,EAAC,4CAA4C,YAAE,WAAW,GAAK,IACvE,EACN,eAAK,SAAS,EAAC,iDAAiD,aAC9D,cAAK,SAAS,EAAC,2DAA2D,YACvE,KAAK,CAAC,CAAC,CAAC;wBACP,qDAAqD;wBACrD,cAAK,GAAG,EAAE,KAAK,EAAE,GAAG,EAAC,sBAAsB,EAAC,SAAS,EAAC,4BAA4B,GAAG,CACtF,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,uBAAuB,iBAAa,MAAM,GAAG,CAC7E,GACG,EACN,eAAK,SAAS,EAAC,KAAK,aAClB,YAAG,SAAS,EAAC,kDAAkD,YAC5D,QAAQ,IAAI,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,GAChC,EACJ,YAAG,SAAS,EAAC,8CAA8C,YAAE,KAAK,GAAK,EACvE,YAAG,SAAS,EAAC,4CAA4C,YAAE,WAAW,GAAK,IACvE,IACF,IACF,CACP,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,4BAA4B;AAC5B,8EAA8E;AAE9E,SAAS,gBAAgB,CAAC,EAAE,GAAG,EAAE,OAAO,EAA6C;IACnF,MAAM,MAAM,GAAG,KAAK,EAAE,CAAA;IACtB,MAAM,KAAK,GAAG,KAAK,EAAE,CAAA;IACrB,MAAM,QAAQ,GAAG,KAAK,EAAE,CAAA;IACxB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAEnD,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,GAAG,CAAA;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,CAAA;IACpE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,iBAAiB,CAAC,CAAA;IAClE,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,kBAAkB,CAAC,CAAA;IACpE,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,oBAAoB,CAAC,CAAA;IAExE,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAC5E,MAAM,WAAW,GAAG,OAAO,CAAC,eAAe,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,gBAAgB,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAC5E,MAAM,cAAc,GAAG,OAAO,CAAC,kBAAkB,EAAE,QAAQ,KAAK,KAAK,IAAI,OAAO,CAAA;IAEhF,OAAO,CACL,MAAC,YAAY,IACX,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,0HAA0H,aAEtI,eAAK,SAAS,EAAC,WAAW,aACxB,0BACE,iBAAO,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,WAAW,kCAE5C,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,GAAI,IACjD,EACR,gBACE,EAAE,EAAE,MAAM,EACV,IAAI,EAAC,MAAM,EACX,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAC5B,QAAQ,EAAE,CAAC,YAAY,EACvB,WAAW,EAAE,QAAQ,IAAI,mBAAmB,EAC5C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7D,SAAS,EAAE,WAAW,GACtB,EACF,YAAG,SAAS,EAAC,oCAAoC,oDAAwC,EACxF,SAAS,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,SAAS,CAAC,OAAO,GAAK,IAC9E,EAEN,0BACE,iBAAO,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,WAAW,iCAE3C,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,eAAe,GAAI,IAChD,EACR,gBACE,EAAE,EAAE,KAAK,EACT,IAAI,EAAC,KAAK,EACV,KAAK,EAAE,IAAI,CAAC,eAAe,EAC3B,QAAQ,EAAE,CAAC,WAAW,EACtB,WAAW,EAAE,OAAO,IAAI,qBAAqB,kBAC/B,QAAQ,EAAE,QAAQ,KAAK,OAAO,EAC5C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,iBAAiB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC5D,SAAS,EAAE,WAAW,GACtB,EACF,YAAG,SAAS,EAAC,oCAAoC,oFAE7C,EACH,QAAQ,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,QAAQ,CAAC,OAAO,GAAK,IAC5E,EAEN,0BACE,gBAAM,SAAS,EAAE,WAAW,kCAE1B,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,gBAAgB,GAAI,IAClD,EACP,eAAK,SAAS,EAAC,yBAAyB,aACtC,cAAK,SAAS,EAAC,8GAA8G,YAC1H,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC;wCACvB,qDAAqD;wCACrD,cACE,GAAG,EAAE,IAAI,CAAC,gBAAgB,EAC1B,GAAG,EAAC,2BAA2B,EAC/B,SAAS,EAAC,kCAAkC,GAC5C,CACH,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,uBAAuB,iBAAa,MAAM,GAAG,CAC7E,GACG,EACN,eAAK,SAAS,EAAC,qBAAqB,aAClC,eAAK,SAAS,EAAC,yBAAyB,aACtC,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,IAAI,CAAC,EAClC,QAAQ,EAAE,CAAC,YAAY,EACvB,SAAS,EAAC,sLAAsL,aAEhM,KAAC,MAAM,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,EACtC,IAAI,CAAC,gBAAgB,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,aAAa,IAChD,EACR,IAAI,CAAC,gBAAgB,IAAI,YAAY,IAAI,CACxC,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,EAAE,CAAC,EAC/C,SAAS,EAAC,8HAA8H,aAExI,KAAC,CAAC,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,cAE3B,CACV,IACG,EACN,YAAG,SAAS,EAAC,+BAA+B,+CAAmC,IAC3E,IACF,EACL,SAAS,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,SAAS,CAAC,OAAO,GAAK,IAC9E,EAEN,0BACE,iBAAO,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,yCAE9C,KAAC,mBAAmB,IAAC,IAAI,EAAE,OAAO,CAAC,kBAAkB,GAAI,IACnD,EACR,mBACE,EAAE,EAAE,QAAQ,EACZ,IAAI,EAAE,CAAC,EACP,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAC9B,QAAQ,EAAE,CAAC,cAAc,EACzB,WAAW,EAAE,yEAAyE,kBACxE,WAAW,EAAE,QAAQ,KAAK,OAAO,EAC/C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,oBAAoB,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAC/D,SAAS,EAAE,GAAG,WAAW,6BAA6B,GACtD,EACF,YAAG,SAAS,EAAC,oCAAoC,uFAE7C,EACH,WAAW,IAAI,YAAG,SAAS,EAAC,+BAA+B,YAAE,WAAW,CAAC,OAAO,GAAK,IAClF,IACF,EAEN,KAAC,gBAAgB,IACf,IAAI,EAAE,UAAU,EAChB,OAAO,EAAE,GAAG,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,EACnC,MAAM,EAAC,SAAS,EAChB,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,GACpD,IACW,CAChB,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,6BAA6B;AAC7B,8EAA8E;AAE9E,SAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,KAAK,EACL,WAAW,EACX,KAAK,EACL,QAAQ,EACR,QAAQ,GAQT;IACC,MAAM,EAAE,GAAG,KAAK,EAAE,CAAA;IAClB,MAAM,QAAQ,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAA;IACxC,OAAO,CACL,0BACE,iBAAO,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,WAAW,aACvC,KAAK,EACL,QAAQ,IAAI,CACX,gBAAM,SAAS,EAAC,qHAAqH,aACnI,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,iBAAa,MAAM,GAAG,aAEjE,CACR,IACK,EACR,gBACE,EAAE,EAAE,EAAE,EACN,IAAI,EAAC,MAAM,EACX,YAAY,EAAC,KAAK,EAClB,UAAU,EAAE,KAAK,EACjB,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,QAAQ,EAClB,WAAW,EAAE,WAAW,EACxB,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAChD,SAAS,EAAE,WAAW,GACtB,IACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,4BAA4B,CAAC,EAAE,GAAG,EAAE,OAAO,EAA6C;IAC/F,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,GAAG,CAAA;IAC9B,MAAM,QAAQ,GAAG,CAAC,GAA0B,EAAE,KAAa,EAAE,EAAE,CAAC,QAAQ,CAAC,GAAG,EAAE,KAAc,CAAC,CAAA;IAE7F,OAAO,CACL,MAAC,YAAY,IACX,KAAK,EAAC,4BAA4B,EAClC,WAAW,EAAC,mIAA8H,aAE1I,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,iBAAiB,IAChB,KAAK,EAAC,uBAAuB,EAC7B,KAAK,EAAC,oBAAoB,EAC1B,WAAW,EAAC,gCAA2B,EACvC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,GAClB,EACF,KAAC,iBAAiB,IAChB,KAAK,EAAC,sBAAsB,EAC5B,KAAK,EAAC,kBAAkB,EACxB,WAAW,EAAC,qBAAgB,EAC5B,KAAK,EAAE,IAAI,CAAC,gBAAgB,EAC5B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,GAClB,IACE,EAEN,mBAAS,SAAS,EAAC,YAAY,aAC7B,mBAAS,SAAS,EAAC,6DAA6D,aAC9E,eAAM,SAAS,EAAC,mBAAmB,+BAAsB,EACzD,eAAM,SAAS,EAAC,0BAA0B,gCAAuB,IACzD,EACV,eAAK,SAAS,EAAC,gBAAgB,aAC7B,KAAC,iBAAiB,IAChB,KAAK,EAAC,QAAQ,EACd,KAAK,EAAC,oBAAoB,EAC1B,WAAW,EAAC,2BAAsB,EAClC,KAAK,EAAE,IAAI,CAAC,kBAAkB,EAC9B,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,GAClB,EACF,KAAC,iBAAiB,IAChB,KAAK,EAAC,WAAW,EACjB,KAAK,EAAC,uBAAuB,EAC7B,WAAW,EAAC,uBAAkB,EAC9B,KAAK,EAAE,IAAI,CAAC,qBAAqB,EACjC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,GAClB,EACF,KAAC,iBAAiB,IAChB,KAAK,EAAC,8BAA8B,EACpC,KAAK,EAAC,4BAA4B,EAClC,WAAW,EAAC,oCAA+B,EAC3C,KAAK,EAAE,IAAI,CAAC,0BAA0B,EACtC,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,CAAC,OAAO,GAClB,IACE,IACE,IACG,CAChB,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,mBAAmB;AACnB,8EAA8E;AAE9E,SAAS,mBAAmB,CAAC,EAC3B,GAAG,EACH,OAAO,EACP,UAAU,GAKX;IACC,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3D,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,GAAG,GAAG,CAAA;IAE/F,SAAS,mBAAmB,CAAC,KAAc;QACzC,0EAA0E;QAC1E,IAAI,CAAC,KAAK,IAAI,YAAY,EAAE,CAAC;YAC3B,iBAAiB,CAAC,IAAI,CAAC,CAAA;YACvB,OAAM;QACR,CAAC;QACD,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;IACxC,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,EAAE,eAAe;QAC5C,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,eAAe,CAAC,CAAC,cAAc,EAAE;QACpD,CAAC,CAAC,OAAO,CAAA;IAEX,OAAO,CACL,MAAC,YAAY,IACX,KAAK,EAAC,SAAS,EACf,WAAW,EAAC,kFAAkF,aAE7F,CAAC,OAAO,IAAI,CACX,eAAK,SAAS,EAAC,wGAAwG,aACrH,KAAC,aAAa,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,iBAAiB,iBAAa,MAAM,GAAG,oGAEtE,CACP,EAED,eAAK,SAAS,EAAC,WAAW,aACxB,KAAC,iBAAiB,IAChB,KAAK,EAAC,2BAA2B,EACjC,WAAW,EAAC,oDAAoD,EAChE,OAAO,EAAE,IAAI,CAAC,mBAAmB,EACjC,QAAQ,EAAE,CAAC,OAAO,EAClB,QAAQ,EAAE,mBAAmB,GAC7B,EACF,KAAC,iBAAiB,IAChB,KAAK,EAAC,gCAAgC,EACtC,WAAW,EAAC,kDAAkD,EAC9D,OAAO,EAAE,IAAI,CAAC,aAAa,EAC3B,QAAQ,EAAE,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,mBAAmB,EAC/C,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC,CAAC,GAC7C,IACE,EAEN,eAAK,SAAS,EAAC,4CAA4C,aACzD,eAAK,SAAS,EAAC,iDAAiD,aAC9D,eAAM,SAAS,EAAC,uBAAuB,4BAAmB,EACzD,OAAO,EAAE,UAAU,CAAC,CAAC,CAAC,CACrB,aACE,IAAI,EAAE,OAAO,CAAC,UAAU,EACxB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,YAAY,EAChB,SAAS,EAAC,uEAAuE,6BAGjF,KAAC,YAAY,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,IAC3C,CACL,CAAC,CAAC,CAAC,CACF,eAAM,SAAS,EAAC,6BAA6B,6BAAoB,CAClE,IACG,EACN,KAAC,UAAU,IAAC,KAAK,EAAC,gBAAgB,EAAC,KAAK,EAAE,aAAa,GAAI,EAC3D,KAAC,UAAU,IAAC,KAAK,EAAC,eAAe,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,IAAI,GAAG,CAAC,GAAI,EAClF,KAAC,UAAU,IAAC,KAAK,EAAC,eAAe,EAAC,KAAK,EAAE,MAAM,CAAC,OAAO,EAAE,aAAa,IAAI,GAAG,CAAC,GAAI,EAClF,eAAK,SAAS,EAAC,8CAA8C,aAC3D,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,iBAAiB,EAC1B,QAAQ,EAAE,CAAC,OAAO,IAAI,YAAY,EAClC,SAAS,EAAC,sLAAsL,aAE/L,YAAY,CAAC,CAAC,CAAC,CACd,KAAC,OAAO,IAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,cAAc,iBAAa,MAAM,GAAG,CAClE,CAAC,CAAC,CAAC,CACF,KAAC,SAAS,IAAC,IAAI,EAAE,EAAE,iBAAc,MAAM,GAAG,CAC3C,sBAEM,EACR,UAAU,IAAI,CACb,iBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAC/C,SAAS,EAAC,oCAAoC,+CAGvC,CACV,IACG,IACF,EAEN,KAAC,6BAA6B,IAC5B,IAAI,EAAE,cAAc,EACpB,KAAK,EAAC,iDAAiD,EACvD,WAAW,EAAC,6GAA6G,EACzH,YAAY,EAAC,UAAU,EACvB,SAAS,EAAE,GAAG,EAAE;oBACd,QAAQ,CAAC,qBAAqB,EAAE,KAAK,CAAC,CAAA;oBACtC,iBAAiB,CAAC,KAAK,CAAC,CAAA;gBAC1B,CAAC,EACD,QAAQ,EAAE,GAAG,EAAE,CAAC,iBAAiB,CAAC,KAAK,CAAC,GACxC,IACW,CAChB,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,EAAE,KAAK,EAAE,KAAK,EAAoC;IACpE,OAAO,CACL,eAAK,SAAS,EAAC,iDAAiD,aAC9D,eAAM,SAAS,EAAC,uBAAuB,YAAE,KAAK,GAAQ,EACtD,eAAM,SAAS,EAAC,6BAA6B,YAAE,KAAK,GAAQ,IACxD,CACP,CAAA;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@prenta/admin",
3
- "version": "1.15.0",
3
+ "version": "1.16.0",
4
4
  "license": "MIT",
5
5
  "repository": {
6
6
  "type": "git",
@@ -99,7 +99,7 @@
99
99
  "typescript": "^5.7.0",
100
100
  "vitest": "^4.1.0",
101
101
  "@prenta/component-blocks": "0.3.1",
102
- "@prenta/core": "5.7.0",
102
+ "@prenta/core": "5.9.0",
103
103
  "@prenta/plugin-ai": "1.0.0",
104
104
  "@prenta/plugin-blocks": "0.2.0",
105
105
  "@prenta/plugin-commerce": "0.2.1",
@@ -107,7 +107,7 @@
107
107
  "@prenta/plugin-media": "0.2.0",
108
108
  "@prenta/plugin-navigation": "0.3.0",
109
109
  "@prenta/plugin-seo": "0.1.2",
110
- "@prenta/sections-react": "0.17.36"
110
+ "@prenta/sections-react": "0.17.39"
111
111
  },
112
112
  "scripts": {
113
113
  "build": "tsc --project tsconfig.json && npx @tailwindcss/cli -i src/styles/build-input.css -o dist/prenta-admin.css --minify",
@@ -0,0 +1,118 @@
1
+ import { beforeEach, describe, expect, it, vi } from 'vitest'
2
+ import type { SeoGeoReport } from '../../lib/seo-service.js'
3
+
4
+ /**
5
+ * Wire-level tests for the AI visibility (GEO measurement) service wrapper.
6
+ * The render test replaces `seo-service` wholesale, so the URL and the
7
+ * envelope handling are pinned here against a mocked `cmsApi`.
8
+ */
9
+ const cmsApi = vi.fn()
10
+ vi.mock('../../lib/api.js', () => ({ cmsApi: (...args: unknown[]) => cmsApi(...args) }))
11
+
12
+ const svc = await import('../../lib/seo-service.js')
13
+
14
+ const REPORT: SeoGeoReport = {
15
+ enabled: true,
16
+ window: { from: '2026-09-04', to: '2026-09-10', days: 7 },
17
+ firstSeenAt: null,
18
+ crawl: { total: { hits: 0, prevHits: null }, series: [], bots: [], topPaths: [], otherHits: 0 },
19
+ referrals: { total: { visits: 0, prevVisits: null }, engines: [], topPaths: [], otherVisits: 0 },
20
+ }
21
+
22
+ beforeEach(() => {
23
+ // Block body on purpose: `mockReset()` returns the mock, and vitest would
24
+ // run a returned function as after-test cleanup.
25
+ cmsApi.mockReset()
26
+ })
27
+
28
+ describe('fetchSeoGeo', () => {
29
+ it('GETs /seo/geo?days=N and unwraps the body', async () => {
30
+ cmsApi.mockResolvedValueOnce({ status: 200, data: REPORT })
31
+ await expect(svc.fetchSeoGeo(7)).resolves.toEqual(REPORT)
32
+ expect(cmsApi).toHaveBeenLastCalledWith('/seo/geo?days=7')
33
+
34
+ cmsApi.mockResolvedValueOnce({
35
+ status: 200,
36
+ data: { ...REPORT, window: { ...REPORT.window, days: 28 } },
37
+ })
38
+ const r = await svc.fetchSeoGeo(28)
39
+ expect(cmsApi).toHaveBeenLastCalledWith('/seo/geo?days=28')
40
+ expect(r.window.days).toBe(28)
41
+ })
42
+
43
+ it('throws on error envelopes', async () => {
44
+ cmsApi.mockResolvedValueOnce({ error: 'nope', status: 500 })
45
+ await expect(svc.fetchSeoGeo(28)).rejects.toThrow('nope')
46
+ })
47
+
48
+ it('rejects a malformed body instead of handing it to the UI', async () => {
49
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { enabled: 'yes' } })
50
+ await expect(svc.fetchSeoGeo(90)).rejects.toThrow('Unexpected AI visibility response')
51
+ cmsApi.mockResolvedValueOnce({ status: 200 })
52
+ await expect(svc.fetchSeoGeo(90)).rejects.toThrow('Unexpected AI visibility response')
53
+ })
54
+
55
+ it('rejects a body from an older server that lacks crawl.total', async () => {
56
+ const crawlWithoutTotal: Partial<SeoGeoReport['crawl']> = { ...REPORT.crawl }
57
+ delete crawlWithoutTotal.total
58
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { ...REPORT, crawl: crawlWithoutTotal } })
59
+ await expect(svc.fetchSeoGeo(28)).rejects.toThrow('Unexpected AI visibility response')
60
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { ...REPORT, crawl: undefined } })
61
+ await expect(svc.fetchSeoGeo(28)).rejects.toThrow('Unexpected AI visibility response')
62
+ })
63
+ })
64
+
65
+ // Mirrors `GET|PUT /seo/geo-settings` in `cms-core/src/api/routes/seo-geo.ts`:
66
+ // GET answers `{ data: { enabled, retentionDays } }`; PUT takes a sparse
67
+ // `{ enabled?, retentionDays? }` and answers `{ data: { ok: true } }` or a
68
+ // 400 `{ error }` envelope.
69
+ describe('fetchGeoSettings', () => {
70
+ it('GETs /seo/geo-settings and unwraps the body', async () => {
71
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { enabled: false, retentionDays: 30 } })
72
+ await expect(svc.fetchGeoSettings()).resolves.toEqual({ enabled: false, retentionDays: 30 })
73
+ expect(cmsApi).toHaveBeenCalledTimes(1)
74
+ expect(cmsApi).toHaveBeenLastCalledWith('/seo/geo-settings')
75
+ })
76
+
77
+ it('returns null on an error envelope (404 / GEO tables not migrated)', async () => {
78
+ cmsApi.mockResolvedValueOnce({ error: 'Not found', status: 404 })
79
+ await expect(svc.fetchGeoSettings()).resolves.toBeNull()
80
+ cmsApi.mockResolvedValueOnce({ error: 'Request failed (500)', status: 500 })
81
+ await expect(svc.fetchGeoSettings()).resolves.toBeNull()
82
+ })
83
+
84
+ it('returns null on a malformed body instead of handing it to the card', async () => {
85
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { enabled: 'yes', retentionDays: 90 } })
86
+ await expect(svc.fetchGeoSettings()).resolves.toBeNull()
87
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { enabled: true, retentionDays: '90' } })
88
+ await expect(svc.fetchGeoSettings()).resolves.toBeNull()
89
+ cmsApi.mockResolvedValueOnce({ status: 200 })
90
+ await expect(svc.fetchGeoSettings()).resolves.toBeNull()
91
+ })
92
+ })
93
+
94
+ describe('updateGeoSettings', () => {
95
+ it('PUTs the sparse patch as JSON and reports ok', async () => {
96
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { ok: true } })
97
+ await expect(svc.updateGeoSettings({ enabled: false })).resolves.toEqual({ ok: true })
98
+ expect(cmsApi).toHaveBeenLastCalledWith('/seo/geo-settings', {
99
+ method: 'PUT',
100
+ body: JSON.stringify({ enabled: false }),
101
+ })
102
+
103
+ cmsApi.mockResolvedValueOnce({ status: 200, data: { ok: true } })
104
+ await svc.updateGeoSettings({ retentionDays: 30 })
105
+ expect(cmsApi).toHaveBeenLastCalledWith('/seo/geo-settings', {
106
+ method: 'PUT',
107
+ body: JSON.stringify({ retentionDays: 30 }),
108
+ })
109
+ })
110
+
111
+ it('surfaces the validation error verbatim', async () => {
112
+ cmsApi.mockResolvedValueOnce({ error: 'retentionDays must be an integer', status: 400 })
113
+ await expect(svc.updateGeoSettings({ retentionDays: 1.5 })).resolves.toEqual({
114
+ ok: false,
115
+ error: 'retentionDays must be an integer',
116
+ })
117
+ })
118
+ })
@@ -21,6 +21,11 @@ describe('seoTabForPath', () => {
21
21
  expect(seoTabForPath('/seo/proposals')).toBe('proposals')
22
22
  })
23
23
 
24
+ it('routes the AI visibility deep link (Technical → "View trends") to its tab', () => {
25
+ expect(SEO_DEEP_PATHS).toContain('/seo/ai-visibility')
26
+ expect(seoTabForPath('/seo/ai-visibility')).toBe('ai-visibility')
27
+ })
28
+
24
29
  it('returns null for non-SEO paths so they fall through', () => {
25
30
  expect(seoTabForPath('/dashboard')).toBeNull()
26
31
  expect(seoTabForPath('/media')).toBeNull()