@prenta/admin 1.14.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 (119) hide show
  1. package/CHANGELOG.md +16 -0
  2. package/dist/__tests__/lib/api.test.d.ts +2 -0
  3. package/dist/__tests__/lib/api.test.d.ts.map +1 -0
  4. package/dist/__tests__/lib/api.test.js +58 -0
  5. package/dist/__tests__/lib/api.test.js.map +1 -0
  6. package/dist/__tests__/lib/seo-service-autopilot.test.d.ts +2 -0
  7. package/dist/__tests__/lib/seo-service-autopilot.test.d.ts.map +1 -0
  8. package/dist/__tests__/lib/seo-service-autopilot.test.js +171 -0
  9. package/dist/__tests__/lib/seo-service-autopilot.test.js.map +1 -0
  10. package/dist/__tests__/lib/seo-service-geo.test.d.ts +2 -0
  11. package/dist/__tests__/lib/seo-service-geo.test.d.ts.map +1 -0
  12. package/dist/__tests__/lib/seo-service-geo.test.js +103 -0
  13. package/dist/__tests__/lib/seo-service-geo.test.js.map +1 -0
  14. package/dist/__tests__/lib/seo-service-proposals.test.js +28 -0
  15. package/dist/__tests__/lib/seo-service-proposals.test.js.map +1 -1
  16. package/dist/__tests__/router/seo-tab-for-path.test.js +4 -0
  17. package/dist/__tests__/router/seo-tab-for-path.test.js.map +1 -1
  18. package/dist/__tests__/views/redirects-pane.render.test.js +30 -12
  19. package/dist/__tests__/views/redirects-pane.render.test.js.map +1 -1
  20. package/dist/__tests__/views/seo-ai-visibility.render.test.d.ts +2 -0
  21. package/dist/__tests__/views/seo-ai-visibility.render.test.d.ts.map +1 -0
  22. package/dist/__tests__/views/seo-ai-visibility.render.test.js +244 -0
  23. package/dist/__tests__/views/seo-ai-visibility.render.test.js.map +1 -0
  24. package/dist/__tests__/views/seo-autopilot-applied.render.test.d.ts +2 -0
  25. package/dist/__tests__/views/seo-autopilot-applied.render.test.d.ts.map +1 -0
  26. package/dist/__tests__/views/seo-autopilot-applied.render.test.js +330 -0
  27. package/dist/__tests__/views/seo-autopilot-applied.render.test.js.map +1 -0
  28. package/dist/__tests__/views/seo-autopilot-card.render.test.d.ts +2 -0
  29. package/dist/__tests__/views/seo-autopilot-card.render.test.d.ts.map +1 -0
  30. package/dist/__tests__/views/seo-autopilot-card.render.test.js +512 -0
  31. package/dist/__tests__/views/seo-autopilot-card.render.test.js.map +1 -0
  32. package/dist/__tests__/views/seo-geo-settings-card.render.test.d.ts +2 -0
  33. package/dist/__tests__/views/seo-geo-settings-card.render.test.d.ts.map +1 -0
  34. package/dist/__tests__/views/seo-geo-settings-card.render.test.js +227 -0
  35. package/dist/__tests__/views/seo-geo-settings-card.render.test.js.map +1 -0
  36. package/dist/__tests__/views/seo-proposals-tab.render.test.js +139 -0
  37. package/dist/__tests__/views/seo-proposals-tab.render.test.js.map +1 -1
  38. package/dist/__tests__/views/seo-settings.render.test.js +53 -4
  39. package/dist/__tests__/views/seo-settings.render.test.js.map +1 -1
  40. package/dist/__tests__/views/seo-technical-tab.render.test.js +13 -0
  41. package/dist/__tests__/views/seo-technical-tab.render.test.js.map +1 -1
  42. package/dist/lib/api.d.ts +13 -2
  43. package/dist/lib/api.d.ts.map +1 -1
  44. package/dist/lib/api.js +1 -2
  45. package/dist/lib/api.js.map +1 -1
  46. package/dist/lib/seo-service.d.ts +300 -2
  47. package/dist/lib/seo-service.d.ts.map +1 -1
  48. package/dist/lib/seo-service.js +172 -5
  49. package/dist/lib/seo-service.js.map +1 -1
  50. package/dist/prenta-admin.css +1 -1
  51. package/dist/views/SEO.d.ts +5 -1
  52. package/dist/views/SEO.d.ts.map +1 -1
  53. package/dist/views/SEO.js +12 -7
  54. package/dist/views/SEO.js.map +1 -1
  55. package/dist/views/seo/AiVisibilityTab.d.ts +4 -0
  56. package/dist/views/seo/AiVisibilityTab.d.ts.map +1 -0
  57. package/dist/views/seo/AiVisibilityTab.js +165 -0
  58. package/dist/views/seo/AiVisibilityTab.js.map +1 -0
  59. package/dist/views/seo/AutopilotAppliedSection.d.ts +10 -0
  60. package/dist/views/seo/AutopilotAppliedSection.d.ts.map +1 -0
  61. package/dist/views/seo/AutopilotAppliedSection.js +295 -0
  62. package/dist/views/seo/AutopilotAppliedSection.js.map +1 -0
  63. package/dist/views/seo/ProposalsTab.d.ts.map +1 -1
  64. package/dist/views/seo/ProposalsTab.js +53 -17
  65. package/dist/views/seo/ProposalsTab.js.map +1 -1
  66. package/dist/views/seo/RedirectsTab.d.ts +3 -1
  67. package/dist/views/seo/RedirectsTab.d.ts.map +1 -1
  68. package/dist/views/seo/RedirectsTab.js +14 -19
  69. package/dist/views/seo/RedirectsTab.js.map +1 -1
  70. package/dist/views/seo/TechnicalTab.d.ts +3 -1
  71. package/dist/views/seo/TechnicalTab.d.ts.map +1 -1
  72. package/dist/views/seo/TechnicalTab.js +4 -4
  73. package/dist/views/seo/TechnicalTab.js.map +1 -1
  74. package/dist/views/seo/relative-age.d.ts +7 -0
  75. package/dist/views/seo/relative-age.d.ts.map +1 -0
  76. package/dist/views/seo/relative-age.js +20 -0
  77. package/dist/views/seo/relative-age.js.map +1 -0
  78. package/dist/views/settings/SeoAutopilotCard.d.ts +30 -0
  79. package/dist/views/settings/SeoAutopilotCard.d.ts.map +1 -0
  80. package/dist/views/settings/SeoAutopilotCard.js +375 -0
  81. package/dist/views/settings/SeoAutopilotCard.js.map +1 -0
  82. package/dist/views/settings/SeoGeoSettingsCard.d.ts +12 -0
  83. package/dist/views/settings/SeoGeoSettingsCard.d.ts.map +1 -0
  84. package/dist/views/settings/SeoGeoSettingsCard.js +178 -0
  85. package/dist/views/settings/SeoGeoSettingsCard.js.map +1 -0
  86. package/dist/views/settings/SeoSettingsTab.d.ts.map +1 -1
  87. package/dist/views/settings/SeoSettingsTab.js +3 -1
  88. package/dist/views/settings/SeoSettingsTab.js.map +1 -1
  89. package/dist/views/settings/components.d.ts +3 -1
  90. package/dist/views/settings/components.d.ts.map +1 -1
  91. package/dist/views/settings/components.js +2 -2
  92. package/dist/views/settings/components.js.map +1 -1
  93. package/package.json +3 -3
  94. package/src/__tests__/lib/api.test.ts +76 -0
  95. package/src/__tests__/lib/seo-service-autopilot.test.ts +196 -0
  96. package/src/__tests__/lib/seo-service-geo.test.ts +118 -0
  97. package/src/__tests__/lib/seo-service-proposals.test.ts +29 -0
  98. package/src/__tests__/router/seo-tab-for-path.test.ts +5 -0
  99. package/src/__tests__/views/redirects-pane.render.test.tsx +36 -16
  100. package/src/__tests__/views/seo-ai-visibility.render.test.tsx +279 -0
  101. package/src/__tests__/views/seo-autopilot-applied.render.test.tsx +382 -0
  102. package/src/__tests__/views/seo-autopilot-card.render.test.tsx +610 -0
  103. package/src/__tests__/views/seo-geo-settings-card.render.test.tsx +253 -0
  104. package/src/__tests__/views/seo-proposals-tab.render.test.tsx +161 -0
  105. package/src/__tests__/views/seo-settings.render.test.tsx +68 -7
  106. package/src/__tests__/views/seo-technical-tab.render.test.tsx +15 -0
  107. package/src/lib/api.ts +19 -3
  108. package/src/lib/seo-service.ts +439 -6
  109. package/src/views/SEO.tsx +16 -7
  110. package/src/views/seo/AiVisibilityTab.tsx +616 -0
  111. package/src/views/seo/AutopilotAppliedSection.tsx +597 -0
  112. package/src/views/seo/ProposalsTab.tsx +92 -12
  113. package/src/views/seo/RedirectsTab.tsx +39 -60
  114. package/src/views/seo/TechnicalTab.tsx +27 -8
  115. package/src/views/seo/relative-age.ts +15 -0
  116. package/src/views/settings/SeoAutopilotCard.tsx +826 -0
  117. package/src/views/settings/SeoGeoSettingsCard.tsx +310 -0
  118. package/src/views/settings/SeoSettingsTab.tsx +4 -0
  119. package/src/views/settings/components.tsx +10 -1
package/dist/views/SEO.js CHANGED
@@ -1,14 +1,14 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
3
  /**
4
- * SEO Operations Center — seven-tab workflow surface (Overview / Content /
5
- * Links / Technical / Redirects / Audit / Proposals). Tab + deep-link state is
6
- * driven by the `?tab=` query string so audits, issues, redirects, proposals,
7
- * and content editors are all linkable. All data flows through
8
- * `lib/seo-service.ts`.
4
+ * SEO Operations Center — eight-tab workflow surface (Overview / Content /
5
+ * Links / Technical / AI visibility / Redirects / Audit / Proposals). Tab +
6
+ * deep-link state is driven by the `?tab=` query string so audits, issues,
7
+ * redirects, proposals, and content editors are all linkable. All data flows
8
+ * through `lib/seo-service.ts`.
9
9
  */
10
10
  import * as Tabs from '@radix-ui/react-tabs';
11
- import { LayoutDashboard, FileText, Settings2, ArrowRightLeft, ClipboardCheck, RefreshCw, Bot, Link2, Inbox, } from 'lucide-react';
11
+ import { LayoutDashboard, FileText, Settings2, ArrowRightLeft, ClipboardCheck, RefreshCw, Bot, Link2, Inbox, Radar, } from 'lucide-react';
12
12
  import { useCallback, useEffect, useMemo, useState } from 'react';
13
13
  import { toast } from 'sonner';
14
14
  import { parseRouteQuery } from '../router/index.js';
@@ -25,11 +25,13 @@ import { RedirectsTab } from './seo/RedirectsTab.js';
25
25
  import { AuditTab } from './seo/AuditTab.js';
26
26
  import { LinksTab } from './seo/LinksTab.js';
27
27
  import { ProposalsTab } from './seo/ProposalsTab.js';
28
+ import { AiVisibilityTab } from './seo/AiVisibilityTab.js';
28
29
  const TABS = [
29
30
  { id: 'overview', label: 'Overview', icon: LayoutDashboard },
30
31
  { id: 'content', label: 'Content SEO', icon: FileText },
31
32
  { id: 'links', label: 'Links', icon: Link2 },
32
33
  { id: 'technical', label: 'Technical', icon: Settings2 },
34
+ { id: 'ai-visibility', label: 'AI visibility', icon: Radar },
33
35
  { id: 'redirects', label: 'Redirects', icon: ArrowRightLeft },
34
36
  { id: 'audit', label: 'Audit', icon: ClipboardCheck },
35
37
  { id: 'proposals', label: 'Proposals', icon: Inbox },
@@ -54,6 +56,7 @@ export const SEO_DEEP_PATHS = [
54
56
  '/seo/links',
55
57
  '/seo/audit',
56
58
  '/seo/proposals',
59
+ '/seo/ai-visibility',
57
60
  '/seo',
58
61
  ];
59
62
  /** Map an SEO deep path to the tab it should open, or null if it isn't one. */
@@ -75,6 +78,8 @@ export function seoTabForPath(pathname) {
75
78
  return 'audit';
76
79
  case '/seo/proposals':
77
80
  return 'proposals';
81
+ case '/seo/ai-visibility':
82
+ return 'ai-visibility';
78
83
  case '/seo':
79
84
  return 'overview';
80
85
  default:
@@ -162,6 +167,6 @@ export function SEO({ onNavigate, initialTab = 'overview' }) {
162
167
  ? 'bg-muted text-muted-foreground'
163
168
  : 'bg-destructive/10 text-destructive';
164
169
  return (_jsxs(Tabs.Trigger, { value: t.id, className: "text-muted-foreground hover:text-foreground data-[state=active]:text-foreground data-[state=active]:border-primary focus-visible:ring-ring -mb-px flex items-center gap-2 border-b-2 border-transparent px-3 py-2.5 text-sm font-medium transition-colors focus-visible:ring-2 focus-visible:outline-none", children: [_jsx(Icon, { className: "h-4 w-4", "aria-hidden": true }), t.label, badge > 0 && (_jsx("span", { className: `${badgeClass} ml-1 rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums`, children: badge }))] }, t.id));
165
- }) }), _jsx("div", { className: "pt-6", children: _jsxs(ErrorBoundary, { children: [_jsx(Tabs.Content, { value: "overview", tabIndex: -1, children: activeTab === 'overview' && (_jsx(OverviewTab, { resource: overviewResource, onOpenIssue: (issueId) => onNavigate?.(`/seo?tab=audit&issueId=${issueId}`) })) }), _jsx(Tabs.Content, { value: "content", tabIndex: -1, children: activeTab === 'content' && (_jsx(ContentTab, { initialEntityType: deepLink.entityType, initialEntityId: deepLink.entityId, onNavigate: onNavigate })) }), _jsx(Tabs.Content, { value: "links", tabIndex: -1, children: activeTab === 'links' && _jsx(LinksTab, { onNavigate: onNavigate, planInfo: planInfo }) }), _jsx(Tabs.Content, { value: "technical", tabIndex: -1, children: activeTab === 'technical' && _jsx(TechnicalTab, {}) }), _jsx(Tabs.Content, { value: "redirects", tabIndex: -1, children: activeTab === 'redirects' && _jsx(RedirectsTab, {}) }), _jsx(Tabs.Content, { value: "audit", tabIndex: -1, children: activeTab === 'audit' && (_jsx(AuditTab, { refetchKey: refetchKey, initialIssueId: deepLink.issueId, onNavigate: onNavigate, planInfo: planInfo })) }), _jsx(Tabs.Content, { value: "proposals", tabIndex: -1, children: activeTab === 'proposals' && (_jsx(ProposalsTab, { planInfo: planInfo, onChanged: () => setRefetchKey((k) => k + 1), onNavigate: onNavigate })) })] }) })] })] }));
170
+ }) }), _jsx("div", { className: "pt-6", children: _jsxs(ErrorBoundary, { children: [_jsx(Tabs.Content, { value: "overview", tabIndex: -1, children: activeTab === 'overview' && (_jsx(OverviewTab, { resource: overviewResource, onOpenIssue: (issueId) => onNavigate?.(`/seo?tab=audit&issueId=${issueId}`) })) }), _jsx(Tabs.Content, { value: "content", tabIndex: -1, children: activeTab === 'content' && (_jsx(ContentTab, { initialEntityType: deepLink.entityType, initialEntityId: deepLink.entityId, onNavigate: onNavigate })) }), _jsx(Tabs.Content, { value: "links", tabIndex: -1, children: activeTab === 'links' && _jsx(LinksTab, { onNavigate: onNavigate, planInfo: planInfo }) }), _jsx(Tabs.Content, { value: "technical", tabIndex: -1, children: activeTab === 'technical' && _jsx(TechnicalTab, { onNavigate: onNavigate }) }), _jsx(Tabs.Content, { value: "ai-visibility", tabIndex: -1, children: activeTab === 'ai-visibility' && _jsx(AiVisibilityTab, { onNavigate: onNavigate }) }), _jsx(Tabs.Content, { value: "redirects", tabIndex: -1, children: activeTab === 'redirects' && _jsx(RedirectsTab, { onNavigate: onNavigate }) }), _jsx(Tabs.Content, { value: "audit", tabIndex: -1, children: activeTab === 'audit' && (_jsx(AuditTab, { refetchKey: refetchKey, initialIssueId: deepLink.issueId, onNavigate: onNavigate, planInfo: planInfo })) }), _jsx(Tabs.Content, { value: "proposals", tabIndex: -1, children: activeTab === 'proposals' && (_jsx(ProposalsTab, { planInfo: planInfo, onChanged: () => setRefetchKey((k) => k + 1), onNavigate: onNavigate })) })] }) })] })] }));
166
171
  }
167
172
  //# sourceMappingURL=SEO.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"SEO.js","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"SEO.js","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export declare function AiVisibilityTab({ onNavigate }: {
2
+ onNavigate?: (path: string) => void;
3
+ }): import("react/jsx-runtime").JSX.Element | null;
4
+ //# sourceMappingURL=AiVisibilityTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiVisibilityTab.d.ts","sourceRoot":"","sources":["../../../src/views/seo/AiVisibilityTab.tsx"],"names":[],"mappings":"AAqfA,wBAAgB,eAAe,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,kDAkHtF"}
@@ -0,0 +1,165 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
3
+ /**
4
+ * SEO → AI visibility (spec 2026-09-08 §6): daily AI/search crawler trend,
5
+ * AI-engine referral visits, and the pages behind both. Data is self-reported
6
+ * by the site middleware via `POST /geo/beacon`; the tab says so. Everything
7
+ * flows through `fetchSeoGeo` in `lib/seo-service.ts`.
8
+ */
9
+ import { useMemo, useState } from 'react';
10
+ import { Bar, BarChart, CartesianGrid, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis, } from 'recharts';
11
+ import { Bot, ExternalLink, Minus, RefreshCw, ShieldAlert, ShieldCheck, ShieldOff, TrendingDown, TrendingUp, } from 'lucide-react';
12
+ import { fetchSeoGeo, } from '../../lib/seo-service.js';
13
+ import { sourceEditPath } from '../../lib/collection-routes.js';
14
+ import { SectionCard, SeoEmptyState, SeoErrorState, SeoLoading, btnSecondary, } from '../../components/seo/primitives.js';
15
+ import { relativeAge } from './relative-age.js';
16
+ import { useSeoResource } from './useSeoResource.js';
17
+ const WINDOWS = [
18
+ { days: 7, label: '7 days' },
19
+ { days: 28, label: '28 days' },
20
+ { days: 90, label: '90 days' },
21
+ ];
22
+ const CATEGORY_LABEL = {
23
+ training: 'AI training',
24
+ retrieval: 'AI retrieval',
25
+ search: 'Search',
26
+ };
27
+ /** Bots drawn as their own stacked series; the rest fold into "Other". */
28
+ const CHART_SERIES = 5;
29
+ /**
30
+ * recharts paints SVG `fill`s, which Tailwind utilities cannot reach, so the
31
+ * chart tokens are referenced as CSS variables. They are the theme's own
32
+ * `--chart-*` series colours and follow dark mode.
33
+ */
34
+ const CHART_TOKENS = [
35
+ 'var(--chart-1)',
36
+ 'var(--chart-2)',
37
+ 'var(--chart-3)',
38
+ 'var(--chart-4)',
39
+ 'var(--chart-5)',
40
+ ];
41
+ const CHART_OTHER_TOKEN = 'var(--muted-foreground)';
42
+ const CHART_TOOLTIP_STYLE = {
43
+ background: 'var(--card)',
44
+ border: '1px solid var(--border)',
45
+ borderRadius: 'var(--radius-md)',
46
+ color: 'var(--foreground)',
47
+ fontSize: 12,
48
+ };
49
+ const SEO_SETTINGS_PATH = '/settings?tab=seo';
50
+ const EM_DASH = '—';
51
+ const th = 'py-2 pr-3 font-medium';
52
+ const thRight = 'py-2 pr-3 text-right font-medium';
53
+ const headRow = 'border-border text-muted-foreground border-b text-left';
54
+ const tdNum = 'text-foreground py-2 pr-3 text-right tabular-nums';
55
+ // ─── Cells ───────────────────────────────────────────────────────────────
56
+ /** Percentage change vs the prior window; `null` prev means "no full baseline". */
57
+ function Delta({ current, prev }) {
58
+ if (prev === null) {
59
+ return (_jsxs("span", { className: "text-muted-foreground", title: "No full prior window yet", children: [_jsx("span", { "aria-hidden": true, children: EM_DASH }), _jsx("span", { className: "sr-only", children: "No full prior window yet" })] }));
60
+ }
61
+ if (prev === 0 && current > 0)
62
+ return _jsx("span", { className: "text-muted-foreground", children: "new" });
63
+ const pct = prev === 0 ? 0 : Math.round(((current - prev) / prev) * 100);
64
+ const Icon = pct > 0 ? TrendingUp : pct < 0 ? TrendingDown : Minus;
65
+ const tone = pct > 0 ? 'text-success' : pct < 0 ? 'text-destructive' : 'text-muted-foreground';
66
+ return (_jsxs("span", { className: `inline-flex items-center gap-1 tabular-nums ${tone}`, children: [_jsx(Icon, { className: "h-4 w-4", "aria-hidden": true }), pct > 0 ? '+' : '', pct, "%"] }));
67
+ }
68
+ function PolicyLabel({ policy }) {
69
+ switch (policy) {
70
+ case 'allowed':
71
+ return (_jsxs("span", { className: "text-muted-foreground inline-flex items-center gap-1", children: [_jsx(ShieldCheck, { className: "h-4 w-4", "aria-hidden": true }), " Allowed"] }));
72
+ case 'blocked':
73
+ return (_jsxs("span", { className: "text-muted-foreground inline-flex items-center gap-1", children: [_jsx(ShieldOff, { className: "h-4 w-4", "aria-hidden": true }), " Blocked"] }));
74
+ case 'blocked_still_crawling':
75
+ return (_jsxs("span", { className: "text-destructive inline-flex items-center gap-1", children: [_jsx(ShieldAlert, { className: "h-4 w-4", "aria-hidden": true }), " Blocked \u2014 still crawling"] }));
76
+ default: {
77
+ const _exhaustive = policy;
78
+ return _exhaustive;
79
+ }
80
+ }
81
+ }
82
+ /**
83
+ * A path, promoted to an "open in editor" button only when the server joined
84
+ * it to a document *and* the host gave us a navigator.
85
+ */
86
+ function PathCell({ path, entityId, entityTitle, collection, onNavigate, }) {
87
+ if (!entityId || !onNavigate)
88
+ return _jsx("span", { className: "text-foreground break-all", children: path });
89
+ return (_jsxs("button", { type: "button", className: "text-foreground hover:text-primary focus-visible:ring-ring inline-flex items-center gap-1 rounded-sm text-left break-all underline-offset-2 hover:underline focus-visible:ring-2 focus-visible:outline-none", onClick: () => onNavigate(sourceEditPath(collection, entityId)), "aria-label": `Open ${entityTitle ?? path} in editor`, children: [path, _jsx(ExternalLink, { className: "h-3.5 w-3.5 shrink-0", "aria-hidden": true })] }));
90
+ }
91
+ // ─── Controls ────────────────────────────────────────────────────────────
92
+ /**
93
+ * Segmented window picker — the same `role="group"` + `aria-pressed` toggle
94
+ * pattern as the Audit / Content filters. Never disabled while loading:
95
+ * `useSeoResource` discards stale responses, and disabling the focused
96
+ * button would drop keyboard focus to `<body>` mid-request.
97
+ */
98
+ function WindowSwitch({ value, onChange, }) {
99
+ return (_jsx("div", { role: "group", "aria-label": "Window", className: "border-border inline-flex rounded-md border p-0.5", children: WINDOWS.map((w) => (_jsx("button", { type: "button", "aria-pressed": value === w.days, className: `focus-visible:ring-ring rounded-sm px-3 py-1 text-sm font-medium transition-colors focus-visible:ring-2 focus-visible:outline-none ${value === w.days
100
+ ? 'bg-primary text-primary-foreground'
101
+ : 'text-muted-foreground hover:bg-accent hover:text-foreground'}`, onClick: () => onChange(w.days), children: w.label }, w.days))) }));
102
+ }
103
+ // ─── Chart ───────────────────────────────────────────────────────────────
104
+ function CrawlChart({ series, bots, }) {
105
+ const { top, data, hasOther } = useMemo(() => {
106
+ const top = bots.slice(0, CHART_SERIES).map((b) => b.bot);
107
+ const hasOther = bots.length > CHART_SERIES;
108
+ const data = series.map((day) => {
109
+ const row = { date: day.date.slice(5) };
110
+ let other = 0;
111
+ for (const [bot, hits] of Object.entries(day.hits)) {
112
+ if (top.includes(bot))
113
+ row[bot] = hits;
114
+ else
115
+ other += hits;
116
+ }
117
+ if (hasOther)
118
+ row.Other = other;
119
+ return row;
120
+ });
121
+ return { top, data, hasOther };
122
+ }, [series, bots]);
123
+ return (
124
+ // The Crawlers table below carries the same numbers for assistive tech.
125
+ _jsx("div", { className: "h-56 w-full", role: "img", "aria-label": "Daily crawler hits by bot", children: _jsx(ResponsiveContainer, { width: "100%", height: "100%", children: _jsxs(BarChart, { data: data, children: [_jsx(CartesianGrid, { strokeDasharray: "3 3", stroke: "var(--border)" }), _jsx(XAxis, { dataKey: "date", tick: { fontSize: 12, fill: 'var(--muted-foreground)' } }), _jsx(YAxis, { allowDecimals: false, tick: { fontSize: 12, fill: 'var(--muted-foreground)' }, width: 32 }), _jsx(Tooltip, { contentStyle: CHART_TOOLTIP_STYLE, cursor: { fill: 'var(--accent)' } }), _jsx(Legend, { wrapperStyle: { fontSize: 12 } }), top.map((bot, i) => (_jsx(Bar, { dataKey: bot, stackId: "hits", fill: CHART_TOKENS[i % CHART_TOKENS.length] }, bot))), hasOther && _jsx(Bar, { dataKey: "Other", stackId: "hits", fill: CHART_OTHER_TOKEN })] }) }) }));
126
+ }
127
+ // ─── Sections ────────────────────────────────────────────────────────────
128
+ function CrawlSection({ crawl }) {
129
+ return (_jsx(SectionCard, { title: "Crawl trend", description: "Daily hits by AI training, AI retrieval, and search crawlers (Googlebot, Bingbot \u2014 counted so AI answer surfaces backed by web search are visible; the AI robots policy never blocks these).", children: _jsxs("div", { className: "space-y-4", children: [_jsxs("dl", { role: "group", "aria-label": "Crawl summary", className: "grid grid-cols-2 gap-3 text-sm sm:grid-cols-3", children: [_jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "Crawler hits" }), _jsx("dd", { className: "text-foreground font-medium tabular-nums", children: crawl.total.hits })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "\u0394 vs prior" }), _jsx("dd", { children: _jsx(Delta, { current: crawl.total.hits, prev: crawl.total.prevHits }) })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "Distinct bots" }), _jsx("dd", { className: "text-foreground font-medium tabular-nums", children: crawl.bots.length })] })] }), _jsx(CrawlChart, { series: crawl.series, bots: crawl.bots }), _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[640px] text-sm", "aria-label": "Crawlers", children: [_jsx("thead", { children: _jsxs("tr", { className: headRow, children: [_jsx("th", { scope: "col", className: th, children: "Bot" }), _jsx("th", { scope: "col", className: th, children: "Type" }), _jsx("th", { scope: "col", className: thRight, children: "Hits" }), _jsx("th", { scope: "col", className: thRight, children: "\u0394 vs prior" }), _jsx("th", { scope: "col", className: th, children: "Last seen" }), _jsx("th", { scope: "col", className: th, children: "Policy" })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: crawl.bots.map((b) => (_jsxs("tr", { children: [_jsx("td", { className: "text-foreground py-2 pr-3 font-medium", children: b.bot }), _jsx("td", { className: "text-muted-foreground py-2 pr-3", children: CATEGORY_LABEL[b.category] }), _jsx("td", { className: tdNum, children: b.hits }), _jsx("td", { className: "py-2 pr-3 text-right", children: _jsx(Delta, { current: b.hits, prev: b.prevHits }) }), _jsx("td", { className: "text-muted-foreground py-2 pr-3 tabular-nums", children: b.lastSeenAt ?? EM_DASH }), _jsx("td", { className: "py-2", children: _jsx(PolicyLabel, { policy: b.policy }) })] }, b.bot))) })] }) })] }) }));
130
+ }
131
+ function ReferralsSection({ referrals, onNavigate, }) {
132
+ return (_jsx(SectionCard, { title: "AI referrals", description: "Visits that arrived from an answer engine (Referer or utm_source).", children: _jsxs("div", { className: "space-y-4", children: [_jsxs("dl", { role: "group", "aria-label": "Referral summary", className: "grid grid-cols-2 gap-3 text-sm sm:grid-cols-3", children: [_jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "Visits" }), _jsx("dd", { className: "text-foreground font-medium tabular-nums", children: referrals.total.visits })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "\u0394 vs prior" }), _jsx("dd", { children: _jsx(Delta, { current: referrals.total.visits, prev: referrals.total.prevVisits }) })] })] }), referrals.engines.length > 0 && (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[480px] text-sm", "aria-label": "Engines", children: [_jsx("thead", { children: _jsxs("tr", { className: headRow, children: [_jsx("th", { scope: "col", className: th, children: "Engine" }), _jsx("th", { scope: "col", className: thRight, children: "Visits" }), _jsx("th", { scope: "col", className: thRight, children: "\u0394 vs prior" })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: referrals.engines.map((e) => (_jsxs("tr", { children: [_jsx("td", { className: "text-foreground py-2 pr-3 font-medium", children: e.engine }), _jsx("td", { className: tdNum, children: e.visits }), _jsx("td", { className: "py-2 pr-3 text-right", children: _jsx(Delta, { current: e.visits, prev: e.prevVisits }) })] }, e.engine))) })] }) })), referrals.topPaths.length > 0 && (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[640px] text-sm", "aria-label": "Top cited pages", children: [_jsx("thead", { children: _jsxs("tr", { className: headRow, children: [_jsx("th", { scope: "col", className: th, children: "Path" }), _jsx("th", { scope: "col", className: thRight, children: "Visits" }), _jsx("th", { scope: "col", className: th, children: "Engines" })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: referrals.topPaths.map((p) => (_jsxs("tr", { children: [_jsx("td", { className: "py-2 pr-3", children: _jsx(PathCell, { path: p.path, entityId: p.entityId, entityTitle: p.entityTitle, collection: p.collection, onNavigate: onNavigate }) }), _jsx("td", { className: tdNum, children: p.visits }), _jsx("td", { className: "text-muted-foreground py-2", children: p.engines.join(', ') })] }, p.path))) })] }) })), referrals.otherVisits > 0 && (_jsxs("p", { className: "text-muted-foreground text-sm", children: [referrals.otherVisits, " visits on paths beyond the daily cap."] }))] }) }));
133
+ }
134
+ function TopCrawledSection({ crawl, onNavigate, }) {
135
+ return (_jsxs(SectionCard, { title: "Top crawled pages", description: "Paths most fetched by AI and search crawlers in this window.", children: [_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[640px] text-sm", "aria-label": "Top crawled pages", children: [_jsx("thead", { children: _jsxs("tr", { className: headRow, children: [_jsx("th", { scope: "col", className: th, children: "Path" }), _jsx("th", { scope: "col", className: thRight, children: "Hits" }), _jsx("th", { scope: "col", className: th, children: "Bots" })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: crawl.topPaths.map((p) => (_jsxs("tr", { children: [_jsx("td", { className: "py-2 pr-3", children: _jsx(PathCell, { path: p.path, entityId: p.entityId, entityTitle: p.entityTitle, collection: p.collection, onNavigate: onNavigate }) }), _jsx("td", { className: tdNum, children: p.hits }), _jsx("td", { className: "text-muted-foreground py-2", children: p.bots.join(', ') })] }, p.path))) })] }) }), crawl.otherHits > 0 && (_jsxs("p", { className: "text-muted-foreground mt-3 text-sm", children: [crawl.otherHits, " hits on paths beyond the daily cap."] }))] }));
136
+ }
137
+ // ─── Tab ─────────────────────────────────────────────────────────────────
138
+ export function AiVisibilityTab({ onNavigate }) {
139
+ const [days, setDays] = useState(28);
140
+ const { data, loading, error, refetch } = useSeoResource(() => fetchSeoGeo(days), [days]);
141
+ const header = (_jsxs("div", { className: "flex flex-wrap items-center justify-between gap-3", children: [_jsxs("div", { className: "flex flex-wrap items-center gap-3", children: [_jsx(WindowSwitch, { value: days, onChange: setDays }), data?.firstSeenAt && (_jsxs("span", { className: "text-muted-foreground text-sm", children: ["First seen ", relativeAge(data.firstSeenAt) || data.firstSeenAt] }))] }), _jsxs("button", { type: "button", className: btnSecondary, onClick: () => refetch(), disabled: loading, children: [_jsx(RefreshCw, { className: `h-4 w-4 ${loading ? 'motion-safe:animate-spin' : ''}`, "aria-hidden": true }), "Refresh"] })] }));
142
+ if (loading && !data) {
143
+ return (_jsxs("div", { className: "space-y-4", children: [header, _jsx(SeoLoading, { label: "Loading AI visibility\u2026" })] }));
144
+ }
145
+ if (error) {
146
+ return (_jsxs("div", { className: "space-y-4", children: [header, _jsx(SeoErrorState, { message: error, onRetry: refetch })] }));
147
+ }
148
+ if (!data)
149
+ return null;
150
+ // Both setup-ish empty states send the editor to Settings → SEO (the kill
151
+ // switch and the middleware snippet live on the same card).
152
+ const settingsAction = (label) => onNavigate && (_jsx("button", { type: "button", className: btnSecondary, onClick: () => onNavigate(SEO_SETTINGS_PATH), children: label }));
153
+ if (!data.enabled) {
154
+ // `unavailable` = the tables are not in the schema; the setting cannot
155
+ // fix that, so no settings action is offered for it.
156
+ const unavailable = data.disabledReason === 'unavailable';
157
+ return (_jsxs("div", { className: "space-y-4", children: [header, unavailable ? (_jsx(SeoEmptyState, { icon: _jsx(Bot, { size: 24 }), title: "GEO tables not migrated", description: "Run `prisma migrate deploy` (migration `0018_geo_daily`) on the CMS database, then reload." })) : (_jsx(SeoEmptyState, { icon: _jsx(Bot, { size: 24 }), title: "Measurement is off", description: "Turn on AI visibility measurement in Settings \u2192 SEO to start recording AI crawler hits and AI-engine referrals.", action: settingsAction('Open SEO settings') }))] }));
158
+ }
159
+ if (data.firstSeenAt === null) {
160
+ return (_jsxs("div", { className: "space-y-4", children: [header, _jsx(SeoEmptyState, { icon: _jsx(Bot, { size: 24 }), title: "The site middleware is not reporting yet", description: "Add observeGeoTraffic to your site's proxy.ts (Next) or use createAstroRedirectMiddleware (Astro). Counts appear here as soon as the first AI or search crawler visits.", action: settingsAction('Show middleware snippet') })] }));
161
+ }
162
+ const hasRows = data.crawl.bots.length > 0 || data.referrals.engines.length > 0;
163
+ return (_jsxs("div", { className: "space-y-4", children: [header, _jsx("p", { className: "text-muted-foreground text-sm", children: "Counts are self-reported by your middleware; they show real bot names on real paths but are not audited traffic." }), !hasRows ? (_jsx(SeoEmptyState, { icon: _jsx(Bot, { size: 24 }), title: "No AI crawler or referral activity in this window", description: "Try a longer window." })) : (_jsxs(_Fragment, { children: [_jsx(CrawlSection, { crawl: data.crawl }), _jsx(ReferralsSection, { referrals: data.referrals, onNavigate: onNavigate }), data.crawl.topPaths.length > 0 && (_jsx(TopCrawledSection, { crawl: data.crawl, onNavigate: onNavigate }))] }))] }));
164
+ }
165
+ //# sourceMappingURL=AiVisibilityTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiVisibilityTab.js","sourceRoot":"","sources":["../../../src/views/seo/AiVisibilityTab.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;GAKG;AACH,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACzC,OAAO,EACL,GAAG,EACH,QAAQ,EACR,aAAa,EACb,MAAM,EACN,mBAAmB,EACnB,OAAO,EACP,KAAK,EACL,KAAK,GACN,MAAM,UAAU,CAAA;AACjB,OAAO,EACL,GAAG,EACH,YAAY,EACZ,KAAK,EACL,SAAS,EACT,WAAW,EACX,WAAW,EACX,SAAS,EACT,YAAY,EACZ,UAAU,GACX,MAAM,cAAc,CAAA;AACrB,OAAO,EACL,WAAW,GAMZ,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAA;AAC/D,OAAO,EACL,WAAW,EACX,aAAa,EACb,aAAa,EACb,UAAU,EACV,YAAY,GACb,MAAM,oCAAoC,CAAA;AAC3C,OAAO,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAC/C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AAEpD,MAAM,OAAO,GAAuD;IAClE,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE;IAC5B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;IAC9B,EAAE,IAAI,EAAE,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE;CAC/B,CAAA;AACD,MAAM,cAAc,GAAsC;IACxD,QAAQ,EAAE,aAAa;IACvB,SAAS,EAAE,cAAc;IACzB,MAAM,EAAE,QAAQ;CACjB,CAAA;AACD,0EAA0E;AAC1E,MAAM,YAAY,GAAG,CAAC,CAAA;AACtB;;;;GAIG;AACH,MAAM,YAAY,GAAG;IACnB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;CACR,CAAA;AACV,MAAM,iBAAiB,GAAG,yBAAyB,CAAA;AACnD,MAAM,mBAAmB,GAAG;IAC1B,UAAU,EAAE,aAAa;IACzB,MAAM,EAAE,yBAAyB;IACjC,YAAY,EAAE,kBAAkB;IAChC,KAAK,EAAE,mBAAmB;IAC1B,QAAQ,EAAE,EAAE;CACJ,CAAA;AACV,MAAM,iBAAiB,GAAG,mBAAmB,CAAA;AAC7C,MAAM,OAAO,GAAG,GAAG,CAAA;AAEnB,MAAM,EAAE,GAAG,uBAAuB,CAAA;AAClC,MAAM,OAAO,GAAG,kCAAkC,CAAA;AAClD,MAAM,OAAO,GAAG,wDAAwD,CAAA;AACxE,MAAM,KAAK,GAAG,mDAAmD,CAAA;AAEjE,4EAA4E;AAE5E,mFAAmF;AACnF,SAAS,KAAK,CAAC,EAAE,OAAO,EAAE,IAAI,EAA4C;IACxE,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,CACL,gBAAM,SAAS,EAAC,uBAAuB,EAAC,KAAK,EAAC,0BAA0B,aACtE,8CAAmB,OAAO,GAAQ,EAClC,eAAM,SAAS,EAAC,SAAS,yCAAgC,IACpD,CACR,CAAA;IACH,CAAC;IACD,IAAI,IAAI,KAAK,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,eAAM,SAAS,EAAC,uBAAuB,oBAAW,CAAA;IACxF,MAAM,GAAG,GAAG,IAAI,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,GAAG,CAAC,CAAA;IACxE,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK,CAAA;IAClE,MAAM,IAAI,GAAG,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,uBAAuB,CAAA;IAC9F,OAAO,CACL,gBAAM,SAAS,EAAE,+CAA+C,IAAI,EAAE,aACpE,KAAC,IAAI,IAAC,SAAS,EAAC,SAAS,wBAAe,EACvC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAClB,GAAG,SACC,CACR,CAAA;AACH,CAAC;AAED,SAAS,WAAW,CAAC,EAAE,MAAM,EAA+B;IAC1D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,SAAS;YACZ,OAAO,CACL,gBAAM,SAAS,EAAC,sDAAsD,aACpE,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,wBAAe,gBAC1C,CACR,CAAA;QACH,KAAK,SAAS;YACZ,OAAO,CACL,gBAAM,SAAS,EAAC,sDAAsD,aACpE,KAAC,SAAS,IAAC,SAAS,EAAC,SAAS,wBAAe,gBACxC,CACR,CAAA;QACH,KAAK,wBAAwB;YAC3B,OAAO,CACL,gBAAM,SAAS,EAAC,iDAAiD,aAC/D,KAAC,WAAW,IAAC,SAAS,EAAC,SAAS,wBAAe,sCAC1C,CACR,CAAA;QACH,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,MAAM,CAAA;YACjC,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,SAAS,QAAQ,CAAC,EAChB,IAAI,EACJ,QAAQ,EACR,WAAW,EACX,UAAU,EACV,UAAU,GAC2D;IACrE,IAAI,CAAC,QAAQ,IAAI,CAAC,UAAU;QAAE,OAAO,eAAM,SAAS,EAAC,2BAA2B,YAAE,IAAI,GAAQ,CAAA;IAC9F,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,6MAA6M,EACvN,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,cAAc,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,gBACnD,QAAQ,WAAW,IAAI,IAAI,YAAY,aAElD,IAAI,EACL,KAAC,YAAY,IAAC,SAAS,EAAC,sBAAsB,wBAAe,IACtD,CACV,CAAA;AACH,CAAC;AAED,4EAA4E;AAE5E;;;;;GAKG;AACH,SAAS,YAAY,CAAC,EACpB,KAAK,EACL,QAAQ,GAIT;IACC,OAAO,CACL,cACE,IAAI,EAAC,OAAO,gBACD,QAAQ,EACnB,SAAS,EAAC,mDAAmD,YAE5D,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,iBAEE,IAAI,EAAC,QAAQ,kBACC,KAAK,KAAK,CAAC,CAAC,IAAI,EAC9B,SAAS,EAAE,sIACT,KAAK,KAAK,CAAC,CAAC,IAAI;gBACd,CAAC,CAAC,oCAAoC;gBACtC,CAAC,CAAC,6DACN,EAAE,EACF,OAAO,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,YAE9B,CAAC,CAAC,KAAK,IAVH,CAAC,CAAC,IAAI,CAWJ,CACV,CAAC,GACE,CACP,CAAA;AACH,CAAC;AAED,4EAA4E;AAE5E,SAAS,UAAU,CAAC,EAClB,MAAM,EACN,IAAI,GAIL;IACC,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,YAAY,CAAA;QAC3C,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YAC9B,MAAM,GAAG,GAAoC,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;YACxE,IAAI,KAAK,GAAG,CAAC,CAAA;YACb,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC;oBAAE,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,CAAA;;oBACjC,KAAK,IAAI,IAAI,CAAA;YACpB,CAAC;YACD,IAAI,QAAQ;gBAAE,GAAG,CAAC,KAAK,GAAG,KAAK,CAAA;YAC/B,OAAO,GAAG,CAAA;QACZ,CAAC,CAAC,CAAA;QACF,OAAO,EAAE,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChC,CAAC,EAAE,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAA;IAElB,OAAO;IACL,wEAAwE;IACxE,cAAK,SAAS,EAAC,aAAa,EAAC,IAAI,EAAC,KAAK,gBAAY,2BAA2B,YAC5E,KAAC,mBAAmB,IAAC,KAAK,EAAC,MAAM,EAAC,MAAM,EAAC,MAAM,YAC7C,MAAC,QAAQ,IAAC,IAAI,EAAE,IAAI,aAClB,KAAC,aAAa,IAAC,eAAe,EAAC,KAAK,EAAC,MAAM,EAAC,eAAe,GAAG,EAC9D,KAAC,KAAK,IAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,GAAI,EACjF,KAAC,KAAK,IACJ,aAAa,EAAE,KAAK,EACpB,IAAI,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,IAAI,EAAE,yBAAyB,EAAE,EACvD,KAAK,EAAE,EAAE,GACT,EACF,KAAC,OAAO,IAAC,YAAY,EAAE,mBAAmB,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,GAAI,EACjF,KAAC,MAAM,IAAC,YAAY,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,GAAI,EACzC,GAAG,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CACnB,KAAC,GAAG,IAEF,OAAO,EAAE,GAAG,EACZ,OAAO,EAAC,MAAM,EACd,IAAI,EAAE,YAAY,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,IAHtC,GAAG,CAIR,CACH,CAAC,EACD,QAAQ,IAAI,KAAC,GAAG,IAAC,OAAO,EAAC,OAAO,EAAC,OAAO,EAAC,MAAM,EAAC,IAAI,EAAE,iBAAiB,GAAI,IACnE,GACS,GAClB,CACP,CAAA;AACH,CAAC;AAED,4EAA4E;AAE5E,SAAS,YAAY,CAAC,EAAE,KAAK,EAAoC;IAC/D,OAAO,CACL,KAAC,WAAW,IACV,KAAK,EAAC,aAAa,EACnB,WAAW,EAAC,mMAA8L,YAE1M,eAAK,SAAS,EAAC,WAAW,aACxB,cACE,IAAI,EAAC,OAAO,gBACD,eAAe,EAC1B,SAAS,EAAC,+CAA+C,aAEzD,0BACE,aAAI,SAAS,EAAC,uBAAuB,6BAAkB,EACvD,aAAI,SAAS,EAAC,0CAA0C,YAAE,KAAK,CAAC,KAAK,CAAC,IAAI,GAAM,IAC5E,EACN,0BACE,aAAI,SAAS,EAAC,uBAAuB,gCAAgB,EACrD,uBACE,KAAC,KAAK,IAAC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAI,GAC7D,IACD,EACN,0BACE,aAAI,SAAS,EAAC,uBAAuB,8BAAmB,EACxD,aAAI,SAAS,EAAC,0CAA0C,YAAE,KAAK,CAAC,IAAI,CAAC,MAAM,GAAM,IAC7E,IACH,EACL,KAAC,UAAU,IAAC,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,GAAI,EACtD,cAAK,SAAS,EAAC,iBAAiB,YAC9B,iBAAO,SAAS,EAAC,8BAA8B,gBAAY,UAAU,aACnE,0BACE,cAAI,SAAS,EAAE,OAAO,aACpB,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,oBAExB,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,qBAExB,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,OAAO,qBAE7B,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,OAAO,gCAE7B,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,0BAExB,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,uBAExB,IACF,GACC,EACR,gBAAO,SAAS,EAAC,wBAAwB,YACtC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACrB,yBACE,aAAI,SAAS,EAAC,uCAAuC,YAAE,CAAC,CAAC,GAAG,GAAM,EAClE,aAAI,SAAS,EAAC,iCAAiC,YAAE,cAAc,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAM,EACjF,aAAI,SAAS,EAAE,KAAK,YAAG,CAAC,CAAC,IAAI,GAAM,EACnC,aAAI,SAAS,EAAC,sBAAsB,YAClC,KAAC,KAAK,IAAC,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,QAAQ,GAAI,GACzC,EACL,aAAI,SAAS,EAAC,8CAA8C,YACzD,CAAC,CAAC,UAAU,IAAI,OAAO,GACrB,EACL,aAAI,SAAS,EAAC,MAAM,YAClB,KAAC,WAAW,IAAC,MAAM,EAAE,CAAC,CAAC,MAAM,GAAI,GAC9B,KAZE,CAAC,CAAC,GAAG,CAaT,CACN,CAAC,GACI,IACF,GACJ,IACF,GACM,CACf,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EACxB,SAAS,EACT,UAAU,GAIX;IACC,OAAO,CACL,KAAC,WAAW,IACV,KAAK,EAAC,cAAc,EACpB,WAAW,EAAC,oEAAoE,YAEhF,eAAK,SAAS,EAAC,WAAW,aACxB,cACE,IAAI,EAAC,OAAO,gBACD,kBAAkB,EAC7B,SAAS,EAAC,+CAA+C,aAEzD,0BACE,aAAI,SAAS,EAAC,uBAAuB,uBAAY,EACjD,aAAI,SAAS,EAAC,0CAA0C,YAAE,SAAS,CAAC,KAAK,CAAC,MAAM,GAAM,IAClF,EACN,0BACE,aAAI,SAAS,EAAC,uBAAuB,gCAAgB,EACrD,uBACE,KAAC,KAAK,IAAC,OAAO,EAAE,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE,IAAI,EAAE,SAAS,CAAC,KAAK,CAAC,UAAU,GAAI,GACzE,IACD,IACH,EACJ,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,IAAI,CAC/B,cAAK,SAAS,EAAC,iBAAiB,YAC9B,iBAAO,SAAS,EAAC,8BAA8B,gBAAY,SAAS,aAClE,0BACE,cAAI,SAAS,EAAE,OAAO,aACpB,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,uBAExB,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,OAAO,uBAE7B,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,OAAO,gCAE7B,IACF,GACC,EACR,gBAAO,SAAS,EAAC,wBAAwB,YACtC,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC5B,yBACE,aAAI,SAAS,EAAC,uCAAuC,YAAE,CAAC,CAAC,MAAM,GAAM,EACrE,aAAI,SAAS,EAAE,KAAK,YAAG,CAAC,CAAC,MAAM,GAAM,EACrC,aAAI,SAAS,EAAC,sBAAsB,YAClC,KAAC,KAAK,IAAC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,UAAU,GAAI,GAC7C,KALE,CAAC,CAAC,MAAM,CAMZ,CACN,CAAC,GACI,IACF,GACJ,CACP,EACA,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CAChC,cAAK,SAAS,EAAC,iBAAiB,YAC9B,iBAAO,SAAS,EAAC,8BAA8B,gBAAY,iBAAiB,aAC1E,0BACE,cAAI,SAAS,EAAE,OAAO,aACpB,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,qBAExB,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,OAAO,uBAE7B,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,wBAExB,IACF,GACC,EACR,gBAAO,SAAS,EAAC,wBAAwB,YACtC,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAC7B,yBACE,aAAI,SAAS,EAAC,WAAW,YACvB,KAAC,QAAQ,IACP,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,WAAW,EAAE,CAAC,CAAC,WAAW,EAC1B,UAAU,EAAE,CAAC,CAAC,UAAU,EACxB,UAAU,EAAE,UAAU,GACtB,GACC,EACL,aAAI,SAAS,EAAE,KAAK,YAAG,CAAC,CAAC,MAAM,GAAM,EACrC,aAAI,SAAS,EAAC,4BAA4B,YAAE,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAM,KAX/D,CAAC,CAAC,IAAI,CAYV,CACN,CAAC,GACI,IACF,GACJ,CACP,EACA,SAAS,CAAC,WAAW,GAAG,CAAC,IAAI,CAC5B,aAAG,SAAS,EAAC,+BAA+B,aACzC,SAAS,CAAC,WAAW,8CACpB,CACL,IACG,GACM,CACf,CAAA;AACH,CAAC;AAED,SAAS,iBAAiB,CAAC,EACzB,KAAK,EACL,UAAU,GAIX;IACC,OAAO,CACL,MAAC,WAAW,IACV,KAAK,EAAC,mBAAmB,EACzB,WAAW,EAAC,8DAA8D,aAE1E,cAAK,SAAS,EAAC,iBAAiB,YAC9B,iBAAO,SAAS,EAAC,8BAA8B,gBAAY,mBAAmB,aAC5E,0BACE,cAAI,SAAS,EAAE,OAAO,aACpB,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,qBAExB,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,OAAO,qBAE7B,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAE,EAAE,qBAExB,IACF,GACC,EACR,gBAAO,SAAS,EAAC,wBAAwB,YACtC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACzB,yBACE,aAAI,SAAS,EAAC,WAAW,YACvB,KAAC,QAAQ,IACP,IAAI,EAAE,CAAC,CAAC,IAAI,EACZ,QAAQ,EAAE,CAAC,CAAC,QAAQ,EACpB,WAAW,EAAE,CAAC,CAAC,WAAW,EAC1B,UAAU,EAAE,CAAC,CAAC,UAAU,EACxB,UAAU,EAAE,UAAU,GACtB,GACC,EACL,aAAI,SAAS,EAAE,KAAK,YAAG,CAAC,CAAC,IAAI,GAAM,EACnC,aAAI,SAAS,EAAC,4BAA4B,YAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,GAAM,KAX5D,CAAC,CAAC,IAAI,CAYV,CACN,CAAC,GACI,IACF,GACJ,EACL,KAAK,CAAC,SAAS,GAAG,CAAC,IAAI,CACtB,aAAG,SAAS,EAAC,oCAAoC,aAC9C,KAAK,CAAC,SAAS,4CACd,CACL,IACW,CACf,CAAA;AACH,CAAC;AAED,4EAA4E;AAE5E,MAAM,UAAU,eAAe,CAAC,EAAE,UAAU,EAA2C;IACrF,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAa,EAAE,CAAC,CAAA;IAChD,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,cAAc,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAA;IAEzF,MAAM,MAAM,GAAG,CACb,eAAK,SAAS,EAAC,mDAAmD,aAChE,eAAK,SAAS,EAAC,mCAAmC,aAChD,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,GAAI,EAC/C,IAAI,EAAE,WAAW,IAAI,CACpB,gBAAM,SAAS,EAAC,+BAA+B,4BACjC,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,WAAW,IACxD,CACR,IACG,EACN,kBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,EAAE,EAAE,QAAQ,EAAE,OAAO,aACxF,KAAC,SAAS,IAAC,SAAS,EAAE,WAAW,OAAO,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,EAAE,EAAE,wBAAgB,eAErF,IACL,CACP,CAAA;IAED,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,CAAC;QACrB,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACvB,MAAM,EACP,KAAC,UAAU,IAAC,KAAK,EAAC,6BAAwB,GAAG,IACzC,CACP,CAAA;IACH,CAAC;IACD,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACvB,MAAM,EACP,KAAC,aAAa,IAAC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,GAAI,IAC/C,CACP,CAAA;IACH,CAAC;IACD,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IAEtB,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,cAAc,GAAG,CAAC,KAAa,EAAE,EAAE,CACvC,UAAU,IAAI,CACZ,iBAAQ,IAAI,EAAC,QAAQ,EAAC,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,YACxF,KAAK,GACC,CACV,CAAA;IAEH,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAClB,uEAAuE;QACvE,qDAAqD;QACrD,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,KAAK,aAAa,CAAA;QACzD,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACvB,MAAM,EACN,WAAW,CAAC,CAAC,CAAC,CACb,KAAC,aAAa,IACZ,IAAI,EAAE,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,EACvB,KAAK,EAAC,yBAAyB,EAC/B,WAAW,EAAC,4FAA4F,GACxG,CACH,CAAC,CAAC,CAAC,CACF,KAAC,aAAa,IACZ,IAAI,EAAE,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,EACvB,KAAK,EAAC,oBAAoB,EAC1B,WAAW,EAAC,sHAAiH,EAC7H,MAAM,EAAE,cAAc,CAAC,mBAAmB,CAAC,GAC3C,CACH,IACG,CACP,CAAA;IACH,CAAC;IAED,IAAI,IAAI,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAC9B,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACvB,MAAM,EACP,KAAC,aAAa,IACZ,IAAI,EAAE,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,EACvB,KAAK,EAAC,0CAA0C,EAChD,WAAW,EAAC,yKAAyK,EACrL,MAAM,EAAE,cAAc,CAAC,yBAAyB,CAAC,GACjD,IACE,CACP,CAAA;IACH,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAA;IAE/E,OAAO,CACL,eAAK,SAAS,EAAC,WAAW,aACvB,MAAM,EACP,YAAG,SAAS,EAAC,+BAA+B,iIAGxC,EAEH,CAAC,OAAO,CAAC,CAAC,CAAC,CACV,KAAC,aAAa,IACZ,IAAI,EAAE,KAAC,GAAG,IAAC,IAAI,EAAE,EAAE,GAAI,EACvB,KAAK,EAAC,mDAAmD,EACzD,WAAW,EAAC,sBAAsB,GAClC,CACH,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,YAAY,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,GAAI,EACnC,KAAC,gBAAgB,IAAC,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,GAAI,EACtE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,IAAI,CACjC,KAAC,iBAAiB,IAAC,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,UAAU,EAAE,UAAU,GAAI,CACjE,IACA,CACJ,IACG,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,10 @@
1
+ export declare function AutopilotAppliedSection({ onNavigate, onChanged, refreshKey, }: {
2
+ onNavigate?: (path: string) => void;
3
+ /**
4
+ * Fired after a successful revert. The server reopens the originating issue
5
+ * or redirect suggestion, so the parent inbox / overview must refetch.
6
+ */
7
+ onChanged?: () => void;
8
+ refreshKey?: number;
9
+ }): import("react/jsx-runtime").JSX.Element;
10
+ //# sourceMappingURL=AutopilotAppliedSection.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AutopilotAppliedSection.d.ts","sourceRoot":"","sources":["../../../src/views/seo/AutopilotAppliedSection.tsx"],"names":[],"mappings":"AAiNA,wBAAgB,uBAAuB,CAAC,EACtC,UAAU,EACV,SAAS,EACT,UAAc,GACf,EAAE;IACD,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB,2CAuXA"}