@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.
- package/CHANGELOG.md +6 -0
- package/dist/__tests__/lib/seo-service-geo.test.d.ts +2 -0
- package/dist/__tests__/lib/seo-service-geo.test.d.ts.map +1 -0
- package/dist/__tests__/lib/seo-service-geo.test.js +103 -0
- package/dist/__tests__/lib/seo-service-geo.test.js.map +1 -0
- package/dist/__tests__/router/seo-tab-for-path.test.js +4 -0
- package/dist/__tests__/router/seo-tab-for-path.test.js.map +1 -1
- package/dist/__tests__/views/seo-ai-visibility.render.test.d.ts +2 -0
- package/dist/__tests__/views/seo-ai-visibility.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/seo-ai-visibility.render.test.js +244 -0
- package/dist/__tests__/views/seo-ai-visibility.render.test.js.map +1 -0
- package/dist/__tests__/views/seo-geo-settings-card.render.test.d.ts +2 -0
- package/dist/__tests__/views/seo-geo-settings-card.render.test.d.ts.map +1 -0
- package/dist/__tests__/views/seo-geo-settings-card.render.test.js +227 -0
- package/dist/__tests__/views/seo-geo-settings-card.render.test.js.map +1 -0
- package/dist/__tests__/views/seo-settings.render.test.js +16 -4
- package/dist/__tests__/views/seo-settings.render.test.js.map +1 -1
- package/dist/__tests__/views/seo-technical-tab.render.test.js +13 -0
- package/dist/__tests__/views/seo-technical-tab.render.test.js.map +1 -1
- package/dist/lib/seo-service.d.ts +94 -0
- package/dist/lib/seo-service.d.ts.map +1 -1
- package/dist/lib/seo-service.js +33 -0
- package/dist/lib/seo-service.js.map +1 -1
- package/dist/prenta-admin.css +1 -1
- package/dist/views/SEO.d.ts +5 -1
- package/dist/views/SEO.d.ts.map +1 -1
- package/dist/views/SEO.js +12 -7
- package/dist/views/SEO.js.map +1 -1
- package/dist/views/seo/AiVisibilityTab.d.ts +4 -0
- package/dist/views/seo/AiVisibilityTab.d.ts.map +1 -0
- package/dist/views/seo/AiVisibilityTab.js +165 -0
- package/dist/views/seo/AiVisibilityTab.js.map +1 -0
- package/dist/views/seo/TechnicalTab.d.ts +3 -1
- package/dist/views/seo/TechnicalTab.d.ts.map +1 -1
- package/dist/views/seo/TechnicalTab.js +4 -4
- package/dist/views/seo/TechnicalTab.js.map +1 -1
- package/dist/views/settings/SeoGeoSettingsCard.d.ts +12 -0
- package/dist/views/settings/SeoGeoSettingsCard.d.ts.map +1 -0
- package/dist/views/settings/SeoGeoSettingsCard.js +178 -0
- package/dist/views/settings/SeoGeoSettingsCard.js.map +1 -0
- package/dist/views/settings/SeoSettingsTab.d.ts.map +1 -1
- package/dist/views/settings/SeoSettingsTab.js +2 -1
- package/dist/views/settings/SeoSettingsTab.js.map +1 -1
- package/package.json +3 -3
- package/src/__tests__/lib/seo-service-geo.test.ts +118 -0
- package/src/__tests__/router/seo-tab-for-path.test.ts +5 -0
- package/src/__tests__/views/seo-ai-visibility.render.test.tsx +279 -0
- package/src/__tests__/views/seo-geo-settings-card.render.test.tsx +253 -0
- package/src/__tests__/views/seo-settings.render.test.tsx +28 -7
- package/src/__tests__/views/seo-technical-tab.render.test.tsx +15 -0
- package/src/lib/seo-service.ts +105 -0
- package/src/views/SEO.tsx +15 -6
- package/src/views/seo/AiVisibilityTab.tsx +616 -0
- package/src/views/seo/TechnicalTab.tsx +27 -8
- package/src/views/settings/SeoGeoSettingsCard.tsx +310 -0
- package/src/views/settings/SeoSettingsTab.tsx +2 -0
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 —
|
|
5
|
-
* Links / Technical / Redirects / Audit / Proposals). Tab +
|
|
6
|
-
* driven by the `?tab=` query string so audits, issues,
|
|
7
|
-
* and content editors are all linkable. All data flows
|
|
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, { 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 })) })] }) })] })] }));
|
|
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
|
package/dist/views/SEO.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SEO.js","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;GAMG;AACH,OAAO,KAAK,IAAI,MAAM,sBAAsB,CAAA;AAC5C,OAAO,EACL,eAAe,EACf,QAAQ,EACR,SAAS,EACT,cAAc,EACd,cAAc,EACd,SAAS,EACT,GAAG,EACH,KAAK,EACL,KAAK,GACN,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AACjE,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,MAAM,gCAAgC,CAAA;AAC9D,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EAAE,aAAa,EAAiB,MAAM,gBAAgB,CAAA;AAC7D,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAA;AACrF,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAA;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;
|
|
1
|
+
{"version":3,"file":"SEO.js","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"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"}
|
|
@@ -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":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechnicalTab.d.ts","sourceRoot":"","sources":["../../../src/views/seo/TechnicalTab.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"TechnicalTab.d.ts","sourceRoot":"","sources":["../../../src/views/seo/TechnicalTab.tsx"],"names":[],"mappings":"AAibA,wBAAgB,YAAY,CAAC,EAAE,UAAU,EAAE,EAAE;IAAE,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;CAAE,2CAWnF"}
|
|
@@ -120,11 +120,11 @@ const CATEGORY_LABELS = {
|
|
|
120
120
|
retrieval: 'Retrieval',
|
|
121
121
|
other: 'Other',
|
|
122
122
|
};
|
|
123
|
-
function AiCrawlerCard() {
|
|
123
|
+
function AiCrawlerCard({ onNavigate }) {
|
|
124
124
|
const { data, loading, error, refetch } = useSeoResource(fetchAiCrawlerActivity, []);
|
|
125
|
-
return (_jsx(SectionCard, { title: "AI crawler activity", description: "
|
|
125
|
+
return (_jsx(SectionCard, { title: "AI crawler activity", description: "Lifetime fetches of llms.txt, llms-full.txt, and .md pages by known AI crawlers. Daily trends across all pages and AI referrals live in the AI visibility tab.", action: _jsxs("div", { className: "flex shrink-0 items-center gap-2", children: [onNavigate && (_jsx("button", { type: "button", className: btnSecondary, onClick: () => onNavigate('/seo/ai-visibility'), children: "View trends" })), _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"] })] }), children: loading ? (_jsx(SeoLoading, { label: "Loading crawler activity\u2026" })) : error ? (_jsx(SeoErrorState, { message: error, onRetry: refetch })) : !data || !data.enabled ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Crawler tracking is unavailable. Run the latest database migration to enable it." })) : data.rows.length === 0 ? (_jsxs("div", { className: "flex flex-col items-center gap-2 py-8 text-center", children: [_jsx(Bot, { className: "text-muted-foreground h-6 w-6", "aria-hidden": true }), _jsx("p", { className: "text-muted-foreground text-sm", children: "No AI crawler activity recorded yet." })] })) : (_jsxs("div", { className: "space-y-4", children: [_jsxs("dl", { className: "grid grid-cols-3 gap-3 text-sm", children: [_jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "Total hits" }), _jsx("dd", { className: "text-foreground font-medium tabular-nums", children: data.totals.hits })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "Distinct bots" }), _jsx("dd", { className: "text-foreground font-medium tabular-nums", children: data.totals.bots })] }), _jsxs("div", { children: [_jsx("dt", { className: "text-muted-foreground", children: "Honeypot hits" }), _jsx("dd", { className: "text-foreground font-medium tabular-nums", children: data.totals.honeypot })] })] }), _jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full min-w-[640px] text-sm", "aria-label": "AI crawler activity by bot", children: [_jsx("thead", { children: _jsxs("tr", { className: "border-border text-muted-foreground border-b text-left", children: [_jsx("th", { scope: "col", className: "py-2 pr-3 font-medium", children: "Bot" }), _jsx("th", { scope: "col", className: "py-2 pr-3 font-medium", children: "Type" }), _jsx("th", { scope: "col", className: "py-2 pr-3 font-medium", children: "Surface" }), _jsx("th", { scope: "col", className: "py-2 pr-3 text-right font-medium", children: "Hits" }), _jsx("th", { scope: "col", className: "py-2 font-medium", children: "Last seen" })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: data.rows.map((r) => (_jsxs("tr", { children: [_jsx("td", { className: "text-foreground py-2 pr-3 font-medium", children: r.bot }), _jsx("td", { className: "text-muted-foreground py-2 pr-3", children: CATEGORY_LABELS[r.category] ?? r.category }), _jsx("td", { className: "text-muted-foreground py-2 pr-3", children: SURFACE_LABELS[r.surface] ?? r.surface }), _jsx("td", { className: "text-foreground py-2 pr-3 text-right tabular-nums", children: r.hits }), _jsx("td", { className: "text-muted-foreground py-2", children: new Date(r.lastSeenAt).toLocaleDateString() })] }, `${r.bot}:${r.surface}`))) })] }) })] })) }));
|
|
126
126
|
}
|
|
127
|
-
export function TechnicalTab() {
|
|
128
|
-
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-2", children: [_jsx(SitemapCard, {}), _jsx(CrawlCard, {})] }), _jsx(RobotsCard, {}), _jsx(AiCrawlerCard, {})] }));
|
|
127
|
+
export function TechnicalTab({ onNavigate }) {
|
|
128
|
+
return (_jsxs("div", { className: "space-y-4", children: [_jsxs("div", { className: "grid grid-cols-1 gap-4 lg:grid-cols-2", children: [_jsx(SitemapCard, {}), _jsx(CrawlCard, {})] }), _jsx(RobotsCard, {}), _jsx(AiCrawlerCard, { onNavigate: onNavigate })] }));
|
|
129
129
|
}
|
|
130
130
|
//# sourceMappingURL=TechnicalTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TechnicalTab.js","sourceRoot":"","sources":["../../../src/views/seo/TechnicalTab.tsx"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"TechnicalTab.js","sourceRoot":"","sources":["../../../src/views/seo/TechnicalTab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Settings → SEO "AI visibility" card (spec 2026-09-08 §6): the measurement
|
|
3
|
+
* kill switch, daily-bucket retention, and the one-line middleware setup for
|
|
4
|
+
* Next and Astro hosts. Owns its own fetch/save like `SeoAutopilotCard`; every
|
|
5
|
+
* control PUTs a sparse patch immediately, saves queue behind each other, and
|
|
6
|
+
* the card re-reads the server's resolved settings after each success. Takes
|
|
7
|
+
* no `onNavigate`, so it names the AI visibility tab in copy without linking.
|
|
8
|
+
*/
|
|
9
|
+
export declare function SeoGeoSettingsCard({ canEdit }: {
|
|
10
|
+
canEdit: boolean;
|
|
11
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
12
|
+
//# sourceMappingURL=SeoGeoSettingsCard.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SeoGeoSettingsCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/SeoGeoSettingsCard.tsx"],"names":[],"mappings":"AAiCA;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,OAAO,CAAA;CAAE,2CAyKnE"}
|