@actuate-media/cms-admin 0.58.1 → 0.59.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/components/PlanUpgradeCallout.d.ts +7 -0
- package/dist/components/PlanUpgradeCallout.d.ts.map +1 -0
- package/dist/components/PlanUpgradeCallout.js +8 -0
- package/dist/components/PlanUpgradeCallout.js.map +1 -0
- package/dist/components/seo/SeoIssueFixPanel.d.ts +3 -1
- package/dist/components/seo/SeoIssueFixPanel.d.ts.map +1 -1
- package/dist/components/seo/SeoIssueFixPanel.js +8 -3
- package/dist/components/seo/SeoIssueFixPanel.js.map +1 -1
- package/dist/lib/plan.d.ts +12 -0
- package/dist/lib/plan.d.ts.map +1 -0
- package/dist/lib/plan.js +30 -0
- package/dist/lib/plan.js.map +1 -0
- package/dist/views/SEO.d.ts.map +1 -1
- package/dist/views/SEO.js +6 -1
- package/dist/views/SEO.js.map +1 -1
- package/dist/views/seo/AuditTab.d.ts +3 -1
- package/dist/views/seo/AuditTab.d.ts.map +1 -1
- package/dist/views/seo/AuditTab.js +6 -3
- package/dist/views/seo/AuditTab.js.map +1 -1
- package/dist/views/settings/MonthlyUsageCard.d.ts.map +1 -1
- package/dist/views/settings/MonthlyUsageCard.js +1 -1
- package/dist/views/settings/MonthlyUsageCard.js.map +1 -1
- package/package.json +2 -2
- package/src/components/PlanUpgradeCallout.tsx +42 -0
- package/src/components/seo/SeoIssueFixPanel.tsx +37 -18
- package/src/lib/plan.ts +44 -0
- package/src/views/SEO.tsx +7 -0
- package/src/views/seo/AuditTab.tsx +23 -10
- package/src/views/settings/MonthlyUsageCard.tsx +2 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @actuate-media/cms-admin
|
|
2
2
|
|
|
3
|
+
## 0.59.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 5fce703: Enable AI monthly token budget enforcement when a limit is configured. Add plan-tier feature gating for advanced SEO Operations Center features (inline apply, content briefs, research, batch briefs) with admin upgrade messaging and pricing tier documentation.
|
|
8
|
+
|
|
3
9
|
## 0.58.1
|
|
4
10
|
|
|
5
11
|
### Patch Changes
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { PlanFeature } from '../lib/plan.js';
|
|
2
|
+
export declare function PlanUpgradeCallout({ feature, requiredTier, upgradeUrl, }: {
|
|
3
|
+
feature: PlanFeature;
|
|
4
|
+
requiredTier?: string;
|
|
5
|
+
upgradeUrl?: string | null;
|
|
6
|
+
}): import("react/jsx-runtime").JSX.Element;
|
|
7
|
+
//# sourceMappingURL=PlanUpgradeCallout.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanUpgradeCallout.d.ts","sourceRoot":"","sources":["../../src/components/PlanUpgradeCallout.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAA;AAGjD,wBAAgB,kBAAkB,CAAC,EACjC,OAAO,EACP,YAAoB,EACpB,UAAU,GACX,EAAE;IACD,OAAO,EAAE,WAAW,CAAA;IACpB,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAC3B,2CA2BA"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
'use client';
|
|
2
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
3
|
+
import { ArrowUpRight } from 'lucide-react';
|
|
4
|
+
import { planFeatureLabel } from '../lib/plan.js';
|
|
5
|
+
export function PlanUpgradeCallout({ feature, requiredTier = 'pro', upgradeUrl, }) {
|
|
6
|
+
return (_jsxs("div", { className: "border-border bg-muted/40 space-y-2 rounded-md border p-4", role: "status", "aria-live": "polite", children: [_jsxs("p", { className: "text-foreground text-sm font-medium", children: ["Upgrade to unlock ", planFeatureLabel(feature)] }), _jsxs("p", { className: "text-muted-foreground text-sm", children: ["This feature requires the ", requiredTier, " plan. Audits, issue tracking, and export remain available on your current plan."] }), upgradeUrl ? (_jsxs("a", { href: upgradeUrl, target: "_blank", rel: "noopener noreferrer", className: "text-primary inline-flex items-center gap-1 text-sm font-medium hover:underline", children: ["View plans", _jsx(ArrowUpRight, { className: "h-4 w-4", "aria-hidden": true })] })) : null] }));
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=PlanUpgradeCallout.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"PlanUpgradeCallout.js","sourceRoot":"","sources":["../../src/components/PlanUpgradeCallout.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,YAAY,EAAE,MAAM,cAAc,CAAA;AAE3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAA;AAEjD,MAAM,UAAU,kBAAkB,CAAC,EACjC,OAAO,EACP,YAAY,GAAG,KAAK,EACpB,UAAU,GAKX;IACC,OAAO,CACL,eACE,SAAS,EAAC,2DAA2D,EACrE,IAAI,EAAC,QAAQ,eACH,QAAQ,aAElB,aAAG,SAAS,EAAC,qCAAqC,mCAC7B,gBAAgB,CAAC,OAAO,CAAC,IAC1C,EACJ,aAAG,SAAS,EAAC,+BAA+B,2CACf,YAAY,wFAErC,EACH,UAAU,CAAC,CAAC,CAAC,CACZ,aACE,IAAI,EAAE,UAAU,EAChB,MAAM,EAAC,QAAQ,EACf,GAAG,EAAC,qBAAqB,EACzB,SAAS,EAAC,iFAAiF,2BAG3F,KAAC,YAAY,IAAC,SAAS,EAAC,SAAS,wBAAe,IAC9C,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC"}
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
import { type SeoIssue } from '../../lib/seo-service.js';
|
|
2
|
-
|
|
2
|
+
import { type PlanInfo } from '../../lib/plan.js';
|
|
3
|
+
export declare function SeoIssueFixPanel({ issue, expanded, onChanged, onNavigate, onOpenDetails, planInfo, }: {
|
|
3
4
|
issue: SeoIssue;
|
|
4
5
|
expanded: boolean;
|
|
5
6
|
onChanged?: () => void;
|
|
6
7
|
onNavigate?: (path: string) => void;
|
|
7
8
|
onOpenDetails?: () => void;
|
|
9
|
+
planInfo?: PlanInfo | null;
|
|
8
10
|
}): import("react/jsx-runtime").JSX.Element | null;
|
|
9
11
|
export declare function SeoIssueFixToggle({ expanded, fixable, onToggle, }: {
|
|
10
12
|
expanded: boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeoIssueFixPanel.d.ts","sourceRoot":"","sources":["../../../src/components/seo/SeoIssueFixPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAcL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAA;
|
|
1
|
+
{"version":3,"file":"SeoIssueFixPanel.d.ts","sourceRoot":"","sources":["../../../src/components/seo/SeoIssueFixPanel.tsx"],"names":[],"mappings":"AAKA,OAAO,EAcL,KAAK,QAAQ,EAEd,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAoMjE,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,aAAa,EACb,QAAQ,GACT,EAAE;IACD,KAAK,EAAE,QAAQ,CAAA;IACf,QAAQ,EAAE,OAAO,CAAA;IACjB,SAAS,CAAC,EAAE,MAAM,IAAI,CAAA;IACtB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,aAAa,CAAC,EAAE,MAAM,IAAI,CAAA;IAC1B,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC3B,kDA8VA;AAED,wBAAgB,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,EAAE;IACD,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,MAAM,IAAI,CAAA;CACrB,2CAeA"}
|
|
@@ -4,6 +4,8 @@ import { useEffect, useState } from 'react';
|
|
|
4
4
|
import { Check, ChevronDown, Loader2, Sparkles, Wand2 } from 'lucide-react';
|
|
5
5
|
import { toast } from 'sonner';
|
|
6
6
|
import { applySeoIssueFix, fetchSeoIssueFixSuggestion, fetchSeoContentBrief, fetchSeoContentResearch, generateSeoContentBrief, ignoreSeoIssue, isInlineSeoFixIssue, researchAndBriefSeoIssue, supportsSeoContentBrief, supportsSeoContentResearch, } from '../../lib/seo-service.js';
|
|
7
|
+
import { hasPlanFeature } from '../../lib/plan.js';
|
|
8
|
+
import { PlanUpgradeCallout } from '../PlanUpgradeCallout.js';
|
|
7
9
|
import { SeoErrorState, btnPrimary, btnSecondary } from './primitives.js';
|
|
8
10
|
function formatValue(value) {
|
|
9
11
|
if (value === null || value === '')
|
|
@@ -59,10 +61,13 @@ function manualPath(issue) {
|
|
|
59
61
|
return null;
|
|
60
62
|
}
|
|
61
63
|
}
|
|
62
|
-
export function SeoIssueFixPanel({ issue, expanded, onChanged, onNavigate, onOpenDetails, }) {
|
|
64
|
+
export function SeoIssueFixPanel({ issue, expanded, onChanged, onNavigate, onOpenDetails, planInfo, }) {
|
|
63
65
|
const inlineFix = isInlineSeoFixIssue(issue.type);
|
|
64
66
|
const contentBriefEligible = supportsSeoContentBrief(issue.type);
|
|
65
67
|
const researchEligible = supportsSeoContentResearch(issue.type);
|
|
68
|
+
const inlineApplyEnabled = hasPlanFeature(planInfo, 'seo.inlineApply');
|
|
69
|
+
const contentBriefEnabled = hasPlanFeature(planInfo, 'seo.contentBrief');
|
|
70
|
+
const contentResearchEnabled = hasPlanFeature(planInfo, 'seo.contentResearch');
|
|
66
71
|
const [suggestion, setSuggestion] = useState(null);
|
|
67
72
|
const [contentBrief, setContentBrief] = useState(null);
|
|
68
73
|
const [contentResearch, setContentResearch] = useState(null);
|
|
@@ -196,11 +201,11 @@ export function SeoIssueFixPanel({ issue, expanded, onChanged, onNavigate, onOpe
|
|
|
196
201
|
const next = [...competitorUrls];
|
|
197
202
|
next[index] = e.target.value;
|
|
198
203
|
setCompetitorUrls(next);
|
|
199
|
-
}, placeholder: `Competitor URL ${index + 1} (optional)`, className: "border-border bg-input-background text-foreground focus-visible:ring-ring w-full rounded-md border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none" })] }, index)))] })) : null, researchStale && !contentResearch ? (_jsx("p", { className: "text-muted-foreground text-sm", role: "status", children: "Previous topic research is outdated because the page changed." })) : null, contentResearch ? _jsx(ContentResearchCard, { research: contentResearch }) : null, briefStale && !contentBrief ? (_jsx("p", { className: "text-muted-foreground text-sm", role: "status", children: "A previous content brief is outdated because the page changed. Generate a new one." })) : null, contentBrief ? _jsx(ContentBriefCard, { brief: contentBrief }) : null, !contentBrief ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Generate an AI content brief with suggested headings, topics, and GEO guidance for your dev team." })) : null] })) : null, _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [inlineFix && suggestion?.autoFixable ? (_jsxs("button", { type: "button", className: btnPrimary, onClick: handleApprove, disabled: busy, children: [_jsx(Check, { className: "h-4 w-4", "aria-hidden": true }), busy ? 'Applying…' : 'Approve fix'] })) : inlineFix && suggestion?.aiUnavailable ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Configure an AI provider in Settings \u2192 AI to enable generated fixes for this issue." })) : null, contentBriefEligible ? (_jsxs(_Fragment, { children: [researchEligible ? (_jsxs("button", { type: "button", className: !contentBrief && !contentResearch ? btnPrimary : btnSecondary, onClick: handleResearchAndBrief, disabled: busy || researching || generatingBrief, children: [_jsx(Sparkles, { className: `h-4 w-4 ${researching ? 'motion-safe:animate-pulse' : ''}`, "aria-hidden": true }), researching ? 'Researching…' : 'Research & brief'] })) : null, _jsxs("button", { type: "button", className: contentBrief ? btnSecondary : btnPrimary, onClick: handleGenerateBrief, disabled: busy || generatingBrief || researching, children: [_jsx(Wand2, { className: `h-4 w-4 ${generatingBrief ? 'motion-safe:animate-pulse' : ''}`, "aria-hidden": true }), generatingBrief
|
|
204
|
+
}, placeholder: `Competitor URL ${index + 1} (optional)`, className: "border-border bg-input-background text-foreground focus-visible:ring-ring w-full rounded-md border px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none" })] }, index)))] })) : null, researchStale && !contentResearch ? (_jsx("p", { className: "text-muted-foreground text-sm", role: "status", children: "Previous topic research is outdated because the page changed." })) : null, contentResearch ? _jsx(ContentResearchCard, { research: contentResearch }) : null, briefStale && !contentBrief ? (_jsx("p", { className: "text-muted-foreground text-sm", role: "status", children: "A previous content brief is outdated because the page changed. Generate a new one." })) : null, contentBrief ? _jsx(ContentBriefCard, { brief: contentBrief }) : null, !contentBrief ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Generate an AI content brief with suggested headings, topics, and GEO guidance for your dev team." })) : null] })) : null, _jsxs("div", { className: "flex flex-wrap items-center gap-2", children: [inlineFix && suggestion?.autoFixable && inlineApplyEnabled ? (_jsxs("button", { type: "button", className: btnPrimary, onClick: handleApprove, disabled: busy, children: [_jsx(Check, { className: "h-4 w-4", "aria-hidden": true }), busy ? 'Applying…' : 'Approve fix'] })) : inlineFix && suggestion?.autoFixable && !inlineApplyEnabled ? (_jsx(PlanUpgradeCallout, { feature: "seo.inlineApply", upgradeUrl: planInfo?.upgradeUrl })) : inlineFix && suggestion?.aiUnavailable ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "Configure an AI provider in Settings \u2192 AI to enable generated fixes for this issue." })) : null, contentBriefEligible ? (_jsxs(_Fragment, { children: [!contentBriefEnabled || !contentResearchEnabled ? (_jsx(PlanUpgradeCallout, { feature: !contentResearchEnabled ? 'seo.contentResearch' : 'seo.contentBrief', upgradeUrl: planInfo?.upgradeUrl })) : null, researchEligible && contentResearchEnabled ? (_jsxs("button", { type: "button", className: !contentBrief && !contentResearch ? btnPrimary : btnSecondary, onClick: handleResearchAndBrief, disabled: busy || researching || generatingBrief, children: [_jsx(Sparkles, { className: `h-4 w-4 ${researching ? 'motion-safe:animate-pulse' : ''}`, "aria-hidden": true }), researching ? 'Researching…' : 'Research & brief'] })) : null, contentBriefEnabled ? (_jsxs("button", { type: "button", className: contentBrief ? btnSecondary : btnPrimary, onClick: handleGenerateBrief, disabled: busy || generatingBrief || researching, children: [_jsx(Wand2, { className: `h-4 w-4 ${generatingBrief ? 'motion-safe:animate-pulse' : ''}`, "aria-hidden": true }), generatingBrief
|
|
200
205
|
? 'Generating brief…'
|
|
201
206
|
: contentBrief
|
|
202
207
|
? 'Regenerate brief'
|
|
203
|
-
: 'Generate content brief'] })] })) : null, !inlineFix && !contentBriefEligible ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "This issue requires manual follow-up in the admin or codebase." })) : null, manualRoute && onNavigate ? (_jsx("button", { type: "button", className: btnSecondary, onClick: () => onNavigate(manualRoute), disabled: busy, children: "Edit manually" })) : null, _jsx("button", { type: "button", className: btnSecondary, onClick: handleIgnore, disabled: busy, children: "Ignore" }), onOpenDetails ? (_jsx("button", { type: "button", className: "text-primary hover:bg-accent focus-visible:ring-ring rounded-md px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none", onClick: onOpenDetails, disabled: busy, children: "More details" })) : null] })] })) }) }) }));
|
|
208
|
+
: 'Generate content brief'] })) : null] })) : null, !inlineFix && !contentBriefEligible ? (_jsx("p", { className: "text-muted-foreground text-sm", children: "This issue requires manual follow-up in the admin or codebase." })) : null, manualRoute && onNavigate ? (_jsx("button", { type: "button", className: btnSecondary, onClick: () => onNavigate(manualRoute), disabled: busy, children: "Edit manually" })) : null, _jsx("button", { type: "button", className: btnSecondary, onClick: handleIgnore, disabled: busy, children: "Ignore" }), onOpenDetails ? (_jsx("button", { type: "button", className: "text-primary hover:bg-accent focus-visible:ring-ring rounded-md px-3 py-2 text-sm focus-visible:ring-2 focus-visible:outline-none", onClick: onOpenDetails, disabled: busy, children: "More details" })) : null] })] })) }) }) }));
|
|
204
209
|
}
|
|
205
210
|
export function SeoIssueFixToggle({ expanded, fixable, onToggle, }) {
|
|
206
211
|
return (_jsxs("button", { type: "button", onClick: onToggle, "aria-expanded": expanded, className: "text-primary hover:bg-accent focus-visible:ring-ring inline-flex items-center gap-1 rounded-md px-2 py-1 text-sm focus-visible:ring-2 focus-visible:outline-none", children: [fixable ? 'Fix' : 'View', _jsx(ChevronDown, { className: `h-3.5 w-3.5 motion-safe:transition-transform ${expanded ? 'rotate-180' : ''}`, "aria-hidden": true })] }));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SeoIssueFixPanel.js","sourceRoot":"","sources":["../../../src/components/seo/SeoIssueFixPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAA;AAC3C,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AAC3E,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAA;AAC9B,OAAO,EACL,gBAAgB,EAChB,0BAA0B,EAC1B,oBAAoB,EACpB,uBAAuB,EACvB,uBAAuB,EACvB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,uBAAuB,EACvB,0BAA0B,GAM3B,MAAM,0BAA0B,CAAA;AACjC,OAAO,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAA;AAEzE,SAAS,WAAW,CAAC,KAA8B;IACjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,EAAE;QAAE,OAAO,GAAG,CAAA;IAC9C,IAAI,OAAO,KAAK,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;IAC3D,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAA;IACxD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,aAAa,CAAC,EAAE,OAAO,EAAoC;IAClE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAA;IACrC,OAAO,CACL,cAAK,SAAS,EAAC,iDAAiD,YAC9D,iBAAO,SAAS,EAAC,gBAAgB,gBAAY,sBAAsB,aACjE,0BACE,cAAI,SAAS,EAAC,oEAAoE,aAChF,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,4BAA4B,sBAEjD,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,uBAAuB,wBAE5C,EACL,aAAI,KAAK,EAAC,KAAK,EAAC,SAAS,EAAC,uBAAuB,yBAE5C,IACF,GACC,EACR,gBAAO,SAAS,EAAC,wBAAwB,YACtC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAClB,yBACE,aAAI,SAAS,EAAC,4CAA4C,YAAE,CAAC,CAAC,KAAK,GAAM,EACzE,aAAI,SAAS,EAAC,0DAA0D,YACrE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,GACnB,EACL,aAAI,SAAS,EAAC,oDAAoD,YAC/D,WAAW,CAAC,CAAC,CAAC,KAAK,CAAC,GAClB,KAPE,CAAC,CAAC,KAAK,CAQX,CACN,CAAC,GACI,IACF,GACJ,CACP,CAAA;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,EAAE,QAAQ,EAAoC;IACzE,OAAO,CACL,eAAK,SAAS,EAAC,uDAAuD,aACpE,cAAK,SAAS,EAAC,yBAAyB,YACtC,gBAAM,SAAS,EAAC,yGAAyG,aACvH,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,wBAAe,sBAEvC,GACH,EACN,YAAG,SAAS,EAAC,yBAAyB,YAAE,QAAQ,CAAC,OAAO,GAAK,EAC7D,cAAI,SAAS,EAAC,qCAAqC,aAChD,QAAQ,CAAC,YAAY,CAAC,CAAC,CAAC,CACvB,yBACE,eAAM,SAAS,EAAC,uBAAuB,gCAAuB,EAC7D,QAAQ,CAAC,YAAY,IACnB,CACN,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAC7B,yBACE,eAAM,SAAS,EAAC,uBAAuB,mCAA0B,OAChE,QAAQ,CAAC,kBAAkB,cACzB,CACN,CAAC,CAAC,CAAC,IAAI,IACL,EACJ,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC7B,0BACE,YAAG,SAAS,EAAC,0EAA0E,kCAEnF,EACJ,aAAI,SAAS,EAAC,kDAAkD,YAC7D,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAC9B,uBAAgB,IAAI,IAAX,IAAI,CAAa,CAC3B,CAAC,GACC,IACD,CACP,CAAC,CAAC,CAAC,IAAI,EACP,QAAQ,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACnC,0BACE,YAAG,SAAS,EAAC,0EAA0E,+BAEnF,EACJ,aAAI,SAAS,EAAC,kDAAkD,YAC7D,QAAQ,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CACjC,uBAAa,CAAC,IAAL,CAAC,CAAU,CACrB,CAAC,GACC,IACD,CACP,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAA;AACH,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAE,KAAK,EAA8B;IAC7D,OAAO,CACL,eAAK,SAAS,EAAC,uDAAuD,aACpE,cAAK,SAAS,EAAC,yBAAyB,YACtC,gBAAM,SAAS,EAAC,0GAA0G,aACxH,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,wBAAe,wBAEvC,GACH,EACN,YAAG,SAAS,EAAC,yBAAyB,YAAE,KAAK,CAAC,OAAO,GAAK,EAC1D,cAAI,SAAS,EAAC,qCAAqC,aAChD,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACnB,yBACE,eAAM,SAAS,EAAC,uBAAuB,+BAAsB,EAC5D,KAAK,CAAC,WAAW,IACf,CACN,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,eAAe,CAAC,CAAC,CAAC,CACvB,yBACE,eAAM,SAAS,EAAC,uBAAuB,gCAAuB,OAAE,KAAK,CAAC,eAAe,EAAE,GAAG,aAEvF,CACN,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CACxB,yBACE,eAAM,SAAS,EAAC,uBAAuB,+BAAsB,EAC5D,KAAK,CAAC,gBAAgB,IACpB,CACN,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CACf,yBACE,eAAM,SAAS,EAAC,uBAAuB,2BAAkB,EACxD,KAAK,CAAC,OAAO,IACX,CACN,CAAC,CAAC,CAAC,IAAI,IACL,EACJ,KAAK,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CACzB,0BACE,YAAG,SAAS,EAAC,0EAA0E,gCAEnF,EACJ,aAAI,SAAS,EAAC,kDAAkD,YAC7D,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAC3B,uBAAiB,KAAK,IAAb,KAAK,CAAc,CAC7B,CAAC,GACC,IACD,CACP,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAC/B,0BACE,YAAG,SAAS,EAAC,qCAAqC,YAAE,OAAO,CAAC,OAAO,GAAK,EACvE,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAC5B,aAAI,SAAS,EAAC,6DAA6D,YACxE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAC/B,uBAAkB,MAAM,IAAf,MAAM,CAAe,CAC/B,CAAC,GACC,CACN,CAAC,CAAC,CAAC,IAAI,KARA,OAAO,CAAC,OAAO,CASnB,CACP,CAAC,IACE,CACP,CAAA;AACH,CAAC;AAED,SAAS,UAAU,CAAC,KAAe;IACjC,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAA;IAC5B,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAA;IACzB,QAAQ,KAAK,CAAC,aAAa,EAAE,CAAC;QAC5B,KAAK,eAAe,CAAC;QACrB,KAAK,gBAAgB,CAAC;QACtB,KAAK,SAAS,CAAC;QACf,KAAK,eAAe,CAAC;QACrB,KAAK,aAAa;YAChB,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;gBACd,OAAO,+BAA+B,GAAG,aAAa,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAA;YAChF,CAAC;YACD,OAAO,IAAI,CAAA;QACb,KAAK,cAAc;YACjB,IAAI,GAAG,KAAK,MAAM,IAAI,EAAE;gBAAE,OAAO,UAAU,EAAE,EAAE,CAAA;YAC/C,IAAI,GAAG,IAAI,EAAE,EAAE,CAAC;gBACd,OAAO,+BAA+B,GAAG,aAAa,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAA;YAChF,CAAC;YACD,OAAO,IAAI,CAAA;QACb,KAAK,iBAAiB,CAAC;QACvB,KAAK,UAAU,CAAC;QAChB,KAAK,iBAAiB;YACpB,OAAO,oBAAoB,CAAA;QAC7B,KAAK,gBAAgB;YACnB,OAAO,QAAQ,CAAA;QACjB,KAAK,eAAe;YAClB,OAAO,oBAAoB,CAAA;QAC7B;YACE,IAAI,GAAG,KAAK,MAAM,IAAI,EAAE;gBAAE,OAAO,UAAU,EAAE,EAAE,CAAA;YAC/C,OAAO,IAAI,CAAA;IACf,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,SAAS,EACT,UAAU,EACV,aAAa,GAOd;IACC,MAAM,SAAS,GAAG,mBAAmB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IACjD,MAAM,oBAAoB,GAAG,uBAAuB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAChE,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAE/D,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAA+B,IAAI,CAAC,CAAA;IAChF,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAyB,IAAI,CAAC,CAAA;IAC9E,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAA4B,IAAI,CAAC,CAAA;IACvF,MAAM,CAAC,cAAc,EAAE,iBAAiB,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;IAClE,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACnD,MAAM,CAAC,aAAa,EAAE,gBAAgB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACzD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7C,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,QAAQ,CAAgB,IAAI,CAAC,CAAA;IACvD,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IACvC,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC7D,MAAM,CAAC,WAAW,EAAE,cAAc,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAErD,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,aAAa,CAAC,IAAI,CAAC,CAAA;YACnB,eAAe,CAAC,IAAI,CAAC,CAAA;YACrB,kBAAkB,CAAC,IAAI,CAAC,CAAA;YACxB,iBAAiB,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAA;YAC/B,aAAa,CAAC,KAAK,CAAC,CAAA;YACpB,gBAAgB,CAAC,KAAK,CAAC,CAAA;YACvB,QAAQ,CAAC,IAAI,CAAC,CAAA;YACd,OAAM;QACR,CAAC;QAED,IAAI,KAAK,GAAG,IAAI,CAAA;QAChB,UAAU,CAAC,IAAI,CAAC,CAAA;QAChB,QAAQ,CAAC,IAAI,CAAC,CAAA;QAEd,KAAK,UAAU,IAAI;YACjB,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,GAAG,GAAG,MAAM,0BAA0B,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACtD,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAClB,IAAI,GAAG,CAAC,KAAK;oBAAE,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;;oBAC7B,aAAa,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,CAAA;gBAC1C,OAAM;YACR,CAAC;YAED,IAAI,oBAAoB,EAAE,CAAC;gBACzB,MAAM,QAAQ,GAAG,MAAM,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;gBACrD,IAAI,CAAC,KAAK;oBAAE,OAAM;gBAClB,IAAI,QAAQ,CAAC,KAAK;oBAAE,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;qBACvC,CAAC;oBACJ,eAAe,CAAC,QAAQ,CAAC,KAAK,IAAI,IAAI,CAAC,CAAA;oBACvC,aAAa,CAAC,QAAQ,CAAC,KAAK,IAAI,KAAK,CAAC,CAAA;gBACxC,CAAC;gBAED,IAAI,gBAAgB,EAAE,CAAC;oBACrB,MAAM,WAAW,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;oBAC3D,IAAI,CAAC,KAAK;wBAAE,OAAM;oBAClB,IAAI,WAAW,CAAC,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK;wBAAE,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAA;yBAChE,IAAI,CAAC,WAAW,CAAC,KAAK,EAAE,CAAC;wBAC5B,kBAAkB,CAAC,WAAW,CAAC,QAAQ,IAAI,IAAI,CAAC,CAAA;wBAChD,gBAAgB,CAAC,WAAW,CAAC,KAAK,IAAI,KAAK,CAAC,CAAA;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,IAAI,EAAE;aACH,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,IAAI,QAAQ,CAAC,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC;aAClF,OAAO,CAAC,GAAG,EAAE,CAAC,KAAK,IAAI,UAAU,CAAC,KAAK,CAAC,CAAC,CAAA;QAE5C,OAAO,GAAG,EAAE;YACV,KAAK,GAAG,KAAK,CAAA;QACf,CAAC,CAAA;IACH,CAAC,EAAE,CAAC,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,SAAS,EAAE,oBAAoB,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAE3E,SAAS,oBAAoB;QAC3B,OAAO,cAAc;aAClB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,MAAM,CAAC,OAAO,CAAC;aACf,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAChB,CAAC;IAED,KAAK,UAAU,aAAa;QAC1B,IAAI,CAAC,UAAU,EAAE,WAAW;YAAE,OAAM;QACpC,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,MAAM,GAAG,GAAG,MAAM,gBAAgB,CAAC,KAAK,CAAC,EAAE,EAAE,UAAU,CAAC,WAAW,CAAC,CAAA;QACpE,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACtB,OAAM;QACR,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAA;QAChD,SAAS,EAAE,EAAE,CAAA;IACf,CAAC;IAED,KAAK,UAAU,sBAAsB;QACnC,cAAc,CAAC,IAAI,CAAC,CAAA;QACpB,MAAM,GAAG,GAAG,MAAM,wBAAwB,CAAC,KAAK,CAAC,EAAE,EAAE,oBAAoB,EAAE,CAAC,CAAA;QAC5E,cAAc,CAAC,KAAK,CAAC,CAAA;QACrB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACtB,OAAM;QACR,CAAC;QACD,IAAI,GAAG,CAAC,QAAQ,EAAE,CAAC;YACjB,kBAAkB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAA;YAChC,gBAAgB,CAAC,KAAK,CAAC,CAAA;QACzB,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1B,aAAa,CAAC,KAAK,CAAC,CAAA;QACtB,CAAC;QACD,KAAK,CAAC,OAAO,CAAC,wEAAwE,CAAC,CAAA;IACzF,CAAC;IACD,KAAK,UAAU,mBAAmB;QAChC,kBAAkB,CAAC,IAAI,CAAC,CAAA;QACxB,MAAM,GAAG,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QACnD,kBAAkB,CAAC,KAAK,CAAC,CAAA;QACzB,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YACtB,OAAM;QACR,CAAC;QACD,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;YACd,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;YAC1B,aAAa,CAAC,KAAK,CAAC,CAAA;YACpB,KAAK,CAAC,OAAO,CAAC,2DAA2D,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IAED,KAAK,UAAU,YAAY;QACzB,OAAO,CAAC,IAAI,CAAC,CAAA;QACb,MAAM,GAAG,GAAG,MAAM,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC,CAAA;QAC1C,OAAO,CAAC,KAAK,CAAC,CAAA;QACd,IAAI,GAAG,CAAC,KAAK;YAAE,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;QAC5C,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAA;QAC/B,SAAS,EAAE,EAAE,CAAA;IACf,CAAC;IAED,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,CAAA;IAErC,IAAI,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAE1B,OAAO,CACL,uBACE,aAAI,OAAO,EAAE,CAAC,EAAE,SAAS,EAAC,uBAAuB,YAC/C,cAAK,SAAS,EAAC,WAAW,YACvB,OAAO,CAAC,CAAC,CAAC,CACT,eACE,SAAS,EAAC,uDAAuD,EACjE,IAAI,EAAC,QAAQ,eACH,QAAQ,aAElB,KAAC,OAAO,IAAC,SAAS,EAAC,kCAAkC,wBAAe,EACnE,SAAS,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,wBAAwB,IAC5D,CACP,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CACV,KAAC,aAAa,IAAC,OAAO,EAAE,KAAK,GAAI,CAClC,CAAC,CAAC,CAAC,CACF,8BACG,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAC3D,eAAK,SAAS,EAAC,WAAW,aACvB,KAAK,CAAC,WAAW,CAAC,CAAC,CAAC,CACnB,YAAG,SAAS,EAAC,yBAAyB,YAAE,KAAK,CAAC,WAAW,GAAK,CAC/D,CAAC,CAAC,CAAC,IAAI,EACP,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,CACtB,aAAG,SAAS,EAAC,+BAA+B,aAC1C,eAAM,SAAS,EAAC,6BAA6B,kCAAyB,EACrE,KAAK,CAAC,cAAc,IACnB,CACL,CAAC,CAAC,CAAC,IAAI,IACJ,CACP,CAAC,CAAC,CAAC,IAAI,EAEP,SAAS,IAAI,UAAU,CAAC,CAAC,CAAC,CACzB,8BACE,cAAK,SAAS,EAAC,mCAAmC,YAC/C,UAAU,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,CAAC,CAAC,CACzD,gBAAM,SAAS,EAAC,0GAA0G,aACxH,KAAC,QAAQ,IAAC,SAAS,EAAC,SAAS,wBAAe,qBAEvC,CACR,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,KAAK,eAAe,CAAC,CAAC,CAAC,CAC1C,eAAM,SAAS,EAAC,+EAA+E,+BAExF,CACR,CAAC,CAAC,CAAC,IAAI,GACJ,EACN,eAAK,SAAS,EAAC,wBAAwB,aACrC,KAAC,QAAQ,IAAC,SAAS,EAAC,sCAAsC,wBAAe,EACzE,YAAG,SAAS,EAAC,yBAAyB,YAAE,UAAU,CAAC,aAAa,GAAK,IACjE,EACN,KAAC,aAAa,IAAC,OAAO,EAAE,UAAU,CAAC,OAAO,GAAI,IAC7C,CACJ,CAAC,CAAC,CAAC,IAAI,EAEP,oBAAoB,CAAC,CAAC,CAAC,CACtB,8BACG,gBAAgB,CAAC,CAAC,CAAC,CAClB,eAAK,SAAS,EAAC,WAAW,aACxB,YAAG,SAAS,EAAC,+BAA+B,6GAGxC,EACH,cAAc,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CACpC,iBAAmB,SAAS,EAAC,OAAO,aAClC,gBAAM,SAAS,EAAC,+BAA+B,gCAC7B,KAAK,GAAG,CAAC,IACpB,EACP,gBACE,IAAI,EAAC,KAAK,EACV,KAAK,EAAE,KAAK,EACZ,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE;wDACd,MAAM,IAAI,GAAG,CAAC,GAAG,cAAc,CAAC,CAAA;wDAChC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAA;wDAC5B,iBAAiB,CAAC,IAAI,CAAC,CAAA;oDACzB,CAAC,EACD,WAAW,EAAE,kBAAkB,KAAK,GAAG,CAAC,aAAa,EACrD,SAAS,EAAC,sKAAsK,GAChL,KAdQ,KAAK,CAeT,CACT,CAAC,IACE,CACP,CAAC,CAAC,CAAC,IAAI,EACP,aAAa,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CACnC,YAAG,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,QAAQ,8EAEtD,CACL,CAAC,CAAC,CAAC,IAAI,EACP,eAAe,CAAC,CAAC,CAAC,KAAC,mBAAmB,IAAC,QAAQ,EAAE,eAAe,GAAI,CAAC,CAAC,CAAC,IAAI,EAC3E,UAAU,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAC7B,YAAG,SAAS,EAAC,+BAA+B,EAAC,IAAI,EAAC,QAAQ,mGAGtD,CACL,CAAC,CAAC,CAAC,IAAI,EACP,YAAY,CAAC,CAAC,CAAC,KAAC,gBAAgB,IAAC,KAAK,EAAE,YAAY,GAAI,CAAC,CAAC,CAAC,IAAI,EAC/D,CAAC,YAAY,CAAC,CAAC,CAAC,CACf,YAAG,SAAS,EAAC,+BAA+B,kHAGxC,CACL,CAAC,CAAC,CAAC,IAAI,IACP,CACJ,CAAC,CAAC,CAAC,IAAI,EAER,eAAK,SAAS,EAAC,mCAAmC,aAC/C,SAAS,IAAI,UAAU,EAAE,WAAW,CAAC,CAAC,CAAC,CACtC,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,UAAU,EACrB,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,IAAI,aAEd,KAAC,KAAK,IAAC,SAAS,EAAC,SAAS,wBAAe,EACxC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,IAC5B,CACV,CAAC,CAAC,CAAC,SAAS,IAAI,UAAU,EAAE,aAAa,CAAC,CAAC,CAAC,CAC3C,YAAG,SAAS,EAAC,+BAA+B,yGAGxC,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,oBAAoB,CAAC,CAAC,CAAC,CACtB,8BACG,gBAAgB,CAAC,CAAC,CAAC,CAClB,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,CAAC,YAAY,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,YAAY,EACxE,OAAO,EAAE,sBAAsB,EAC/B,QAAQ,EAAE,IAAI,IAAI,WAAW,IAAI,eAAe,aAEhD,KAAC,QAAQ,IACP,SAAS,EAAE,WAAW,WAAW,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,EAAE,wBAEtE,EACD,WAAW,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,kBAAkB,IAC3C,CACV,CAAC,CAAC,CAAC,IAAI,EACR,kBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,UAAU,EACnD,OAAO,EAAE,mBAAmB,EAC5B,QAAQ,EAAE,IAAI,IAAI,eAAe,IAAI,WAAW,aAEhD,KAAC,KAAK,IACJ,SAAS,EAAE,WAAW,eAAe,CAAC,CAAC,CAAC,2BAA2B,CAAC,CAAC,CAAC,EAAE,EAAE,wBAE1E,EACD,eAAe;oDACd,CAAC,CAAC,mBAAmB;oDACrB,CAAC,CAAC,YAAY;wDACZ,CAAC,CAAC,kBAAkB;wDACpB,CAAC,CAAC,wBAAwB,IACvB,IACR,CACJ,CAAC,CAAC,CAAC,IAAI,EAEP,CAAC,SAAS,IAAI,CAAC,oBAAoB,CAAC,CAAC,CAAC,CACrC,YAAG,SAAS,EAAC,+BAA+B,+EAExC,CACL,CAAC,CAAC,CAAC,IAAI,EAEP,WAAW,IAAI,UAAU,CAAC,CAAC,CAAC,CAC3B,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,GAAG,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EACtC,QAAQ,EAAE,IAAI,8BAGP,CACV,CAAC,CAAC,CAAC,IAAI,EACR,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAE,YAAY,EACvB,OAAO,EAAE,YAAY,EACrB,QAAQ,EAAE,IAAI,uBAGP,EACR,aAAa,CAAC,CAAC,CAAC,CACf,iBACE,IAAI,EAAC,QAAQ,EACb,SAAS,EAAC,mIAAmI,EAC7I,OAAO,EAAE,aAAa,EACtB,QAAQ,EAAE,IAAI,6BAGP,CACV,CAAC,CAAC,CAAC,IAAI,IACJ,IACL,CACJ,GACG,GACH,GACF,CACN,CAAA;AACH,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,EAChC,QAAQ,EACR,OAAO,EACP,QAAQ,GAKT;IACC,OAAO,CACL,kBACE,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,QAAQ,mBACF,QAAQ,EACvB,SAAS,EAAC,kKAAkK,aAE3K,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EACzB,KAAC,WAAW,IACV,SAAS,EAAE,gDAAgD,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,EAAE,wBAEzF,IACK,CACV,CAAA;AACH,CAAC"}
|
|
1
|
+
{"version":3,"file":"SeoIssueFixPanel.js","sourceRoot":"","sources":["../../../src/components/seo/SeoIssueFixPanel.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
export type PlanTier = 'starter' | 'pro' | 'enterprise';
|
|
2
|
+
export type PlanFeature = 'seo.inlineApply' | 'seo.contentBrief' | 'seo.contentResearch' | 'seo.batchContentBriefs';
|
|
3
|
+
export interface PlanInfo {
|
|
4
|
+
tier: PlanTier;
|
|
5
|
+
features: PlanFeature[];
|
|
6
|
+
upgradeUrl: string | null;
|
|
7
|
+
}
|
|
8
|
+
export declare function fetchPlanInfo(): Promise<PlanInfo | null>;
|
|
9
|
+
/** When plan info is unavailable, assume full access (self-hosted default). */
|
|
10
|
+
export declare function hasPlanFeature(plan: PlanInfo | null | undefined, feature: PlanFeature): boolean;
|
|
11
|
+
export declare function planFeatureLabel(feature: PlanFeature): string;
|
|
12
|
+
//# sourceMappingURL=plan.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.d.ts","sourceRoot":"","sources":["../../src/lib/plan.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG,SAAS,GAAG,KAAK,GAAG,YAAY,CAAA;AAEvD,MAAM,MAAM,WAAW,GACnB,iBAAiB,GACjB,kBAAkB,GAClB,qBAAqB,GACrB,wBAAwB,CAAA;AAE5B,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAE,QAAQ,CAAA;IACd,QAAQ,EAAE,WAAW,EAAE,CAAA;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAA;CAC1B;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,CAI9D;AAED,+EAA+E;AAC/E,wBAAgB,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,GAAG,SAAS,EAAE,OAAO,EAAE,WAAW,GAAG,OAAO,CAG/F;AAED,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,WAAW,GAAG,MAAM,CAe7D"}
|
package/dist/lib/plan.js
ADDED
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { cmsApi } from './api.js';
|
|
2
|
+
export async function fetchPlanInfo() {
|
|
3
|
+
const res = await cmsApi('/plan');
|
|
4
|
+
if (res.error || !res.data)
|
|
5
|
+
return null;
|
|
6
|
+
return res.data;
|
|
7
|
+
}
|
|
8
|
+
/** When plan info is unavailable, assume full access (self-hosted default). */
|
|
9
|
+
export function hasPlanFeature(plan, feature) {
|
|
10
|
+
if (!plan)
|
|
11
|
+
return true;
|
|
12
|
+
return plan.features.includes(feature);
|
|
13
|
+
}
|
|
14
|
+
export function planFeatureLabel(feature) {
|
|
15
|
+
switch (feature) {
|
|
16
|
+
case 'seo.inlineApply':
|
|
17
|
+
return 'SEO inline apply';
|
|
18
|
+
case 'seo.contentBrief':
|
|
19
|
+
return 'SEO content briefs';
|
|
20
|
+
case 'seo.contentResearch':
|
|
21
|
+
return 'SEO topic research';
|
|
22
|
+
case 'seo.batchContentBriefs':
|
|
23
|
+
return 'SEO batch content briefs';
|
|
24
|
+
default: {
|
|
25
|
+
const _exhaustive = feature;
|
|
26
|
+
return _exhaustive;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=plan.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"plan.js","sourceRoot":"","sources":["../../src/lib/plan.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAA;AAgBjC,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAW,OAAO,CAAC,CAAA;IAC3C,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACvC,OAAO,GAAG,CAAC,IAAI,CAAA;AACjB,CAAC;AAED,+EAA+E;AAC/E,MAAM,UAAU,cAAc,CAAC,IAAiC,EAAE,OAAoB;IACpF,IAAI,CAAC,IAAI;QAAE,OAAO,IAAI,CAAA;IACtB,OAAO,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAA;AACxC,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,OAAoB;IACnD,QAAQ,OAAO,EAAE,CAAC;QAChB,KAAK,iBAAiB;YACpB,OAAO,kBAAkB,CAAA;QAC3B,KAAK,kBAAkB;YACrB,OAAO,oBAAoB,CAAA;QAC7B,KAAK,qBAAqB;YACxB,OAAO,oBAAoB,CAAA;QAC7B,KAAK,wBAAwB;YAC3B,OAAO,0BAA0B,CAAA;QACnC,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,OAAO,CAAA;YAClC,OAAO,WAAW,CAAA;QACpB,CAAC;IACH,CAAC;AACH,CAAC"}
|
package/dist/views/SEO.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SEO.d.ts","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"SEO.d.ts","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"AAgCA,MAAM,WAAW,QAAQ;IACvB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,UAAU,CAAC,EAAE,MAAM,CAAA;CACpB;AAsCD,wBAAgB,GAAG,CAAC,EAAE,UAAU,EAAE,UAAuB,EAAE,EAAE,QAAQ,2CAiKpE"}
|
package/dist/views/SEO.js
CHANGED
|
@@ -12,6 +12,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react';
|
|
|
12
12
|
import { toast } from 'sonner';
|
|
13
13
|
import { ErrorBoundary } from '../components/ErrorBoundary.js';
|
|
14
14
|
import { fetchSeoOverview, runSeoAudit } from '../lib/seo-service.js';
|
|
15
|
+
import { fetchPlanInfo } from '../lib/plan.js';
|
|
15
16
|
import { ScorePill, btnPrimary, btnSecondary } from '../components/seo/primitives.js';
|
|
16
17
|
import { SeoCopilotDrawer } from '../components/seo/SeoCopilotDrawer.js';
|
|
17
18
|
import { useSeoResource } from './seo/useSeoResource.js';
|
|
@@ -51,6 +52,10 @@ export function SEO({ onNavigate, initialTab = 'overview' }) {
|
|
|
51
52
|
const [auditing, setAuditing] = useState(false);
|
|
52
53
|
const [copilotOpen, setCopilotOpen] = useState(false);
|
|
53
54
|
const [deepLink, setDeepLink] = useState(initialUrl);
|
|
55
|
+
const [planInfo, setPlanInfo] = useState(null);
|
|
56
|
+
useEffect(() => {
|
|
57
|
+
void fetchPlanInfo().then(setPlanInfo);
|
|
58
|
+
}, []);
|
|
54
59
|
// Overview resource is owned here so the header score pill and the Overview
|
|
55
60
|
// tab share a single request; `refetchKey` re-runs it after an audit.
|
|
56
61
|
const overviewResource = useSeoResource(fetchSeoOverview, [refetchKey]);
|
|
@@ -95,6 +100,6 @@ export function SEO({ onNavigate, initialTab = 'overview' }) {
|
|
|
95
100
|
const Icon = t.icon;
|
|
96
101
|
const badge = t.id === 'audit' ? badgeCounts.audit : 0;
|
|
97
102
|
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: "bg-destructive/10 text-destructive ml-1 rounded-full px-1.5 py-0.5 text-xs font-medium tabular-nums", children: badge }))] }, t.id));
|
|
98
|
-
}) }), _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}`), onConnectSearchConsole: () => toast.info('Google Search Console integration is coming soon. Demo performance data is available in local development.') })) }), _jsx(Tabs.Content, { value: "content", tabIndex: -1, children: activeTab === 'content' && (_jsx(ContentTab, { initialEntityType: deepLink.entityType, initialEntityId: deepLink.entityId })) }), _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 })) })] }) })] })] }));
|
|
103
|
+
}) }), _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}`), onConnectSearchConsole: () => toast.info('Google Search Console integration is coming soon. Demo performance data is available in local development.') })) }), _jsx(Tabs.Content, { value: "content", tabIndex: -1, children: activeTab === 'content' && (_jsx(ContentTab, { initialEntityType: deepLink.entityType, initialEntityId: deepLink.entityId })) }), _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 })) })] }) })] })] }));
|
|
99
104
|
}
|
|
100
105
|
//# 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":"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
|
|
1
|
+
{"version":3,"file":"SEO.js","sourceRoot":"","sources":["../../src/views/SEO.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
1
|
+
import { type PlanInfo } from '../../lib/plan.js';
|
|
2
|
+
export declare function AuditTab({ refetchKey, initialIssueId, onNavigate, planInfo, }: {
|
|
2
3
|
refetchKey?: number;
|
|
3
4
|
initialIssueId?: string | null;
|
|
4
5
|
onNavigate?: (path: string) => void;
|
|
6
|
+
planInfo?: PlanInfo | null;
|
|
5
7
|
}): import("react/jsx-runtime").JSX.Element;
|
|
6
8
|
//# sourceMappingURL=AuditTab.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditTab.d.ts","sourceRoot":"","sources":["../../../src/views/seo/AuditTab.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"AuditTab.d.ts","sourceRoot":"","sources":["../../../src/views/seo/AuditTab.tsx"],"names":[],"mappings":"AA6BA,OAAO,EAAkB,KAAK,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAkEjE,wBAAgB,QAAQ,CAAC,EACvB,UAAc,EACd,cAAc,EACd,UAAU,EACV,QAAQ,GACT,EAAE;IACD,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;IAC9B,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IACnC,QAAQ,CAAC,EAAE,QAAQ,GAAG,IAAI,CAAA;CAC3B,2CAmQA"}
|
|
@@ -7,6 +7,8 @@ import { fetchSeoIssues, fetchSeoAuditRuns, batchGenerateSeoContentBriefs, expor
|
|
|
7
7
|
import { SectionCard, SeoLoading, SeoEmptyState, SeoErrorState, severityMeta, SeoStatusBadge, btnSecondary, } from '../../components/seo/primitives.js';
|
|
8
8
|
import { SeoIssueFixDrawer } from '../../components/seo/SeoIssueFixDrawer.js';
|
|
9
9
|
import { SeoIssueFixPanel, SeoIssueFixToggle } from '../../components/seo/SeoIssueFixPanel.js';
|
|
10
|
+
import { PlanUpgradeCallout } from '../../components/PlanUpgradeCallout.js';
|
|
11
|
+
import { hasPlanFeature } from '../../lib/plan.js';
|
|
10
12
|
import { useSeoResource } from './useSeoResource.js';
|
|
11
13
|
const SEVERITY_FILTERS = [
|
|
12
14
|
{ id: 'all', label: 'All' },
|
|
@@ -38,7 +40,7 @@ function AuditSummaryCards({ refetchKey }) {
|
|
|
38
40
|
const last = (data ?? [])[0];
|
|
39
41
|
return (_jsxs("div", { className: "grid grid-cols-2 gap-4 lg:grid-cols-4", children: [_jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsxs("p", { className: "text-muted-foreground flex items-center gap-1.5 text-sm", children: [_jsx(Clock, { className: "h-3.5 w-3.5", "aria-hidden": true }), " Last audit"] }), _jsx("p", { className: "text-foreground mt-1 text-sm font-medium", children: loading ? '…' : last ? new Date(last.startedAt).toLocaleString() : 'Never' })] }), _jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("p", { className: "text-muted-foreground text-sm", children: "Pages scanned" }), _jsx("p", { className: "text-foreground mt-1 text-2xl font-medium tabular-nums", children: last?.pagesScanned ?? 0 })] }), _jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("p", { className: "text-muted-foreground text-sm", children: "Issues found" }), _jsx("p", { className: "text-foreground mt-1 text-2xl font-medium tabular-nums", children: last?.issuesFound ?? 0 })] }), _jsxs("div", { className: "border-border bg-card rounded-lg border p-4", children: [_jsx("p", { className: "text-muted-foreground text-sm", children: "Site score" }), _jsx("p", { className: "text-foreground mt-1 text-2xl font-medium tabular-nums", children: last?.siteScoreAfter ?? '—' })] })] }));
|
|
40
42
|
}
|
|
41
|
-
export function AuditTab({ refetchKey = 0, initialIssueId, onNavigate, }) {
|
|
43
|
+
export function AuditTab({ refetchKey = 0, initialIssueId, onNavigate, planInfo, }) {
|
|
42
44
|
const [severity, setSeverity] = useState('all');
|
|
43
45
|
const [status, setStatus] = useState('open');
|
|
44
46
|
const [expandedIssueId, setExpandedIssueId] = useState(initialIssueId ?? null);
|
|
@@ -49,6 +51,7 @@ export function AuditTab({ refetchKey = 0, initialIssueId, onNavigate, }) {
|
|
|
49
51
|
const { data, loading, error, refetch } = useSeoResource(() => fetchSeoIssues(query), [severity, status, refetchKey]);
|
|
50
52
|
const issues = data ?? [];
|
|
51
53
|
const briefEligibleCount = useMemo(() => issues.filter((i) => supportsSeoContentBrief(i.type)).length, [issues]);
|
|
54
|
+
const batchBriefsEnabled = hasPlanFeature(planInfo, 'seo.batchContentBriefs');
|
|
52
55
|
function toggleExpanded(issueId) {
|
|
53
56
|
setExpandedIssueId((current) => (current === issueId ? null : issueId));
|
|
54
57
|
}
|
|
@@ -119,14 +122,14 @@ export function AuditTab({ refetchKey = 0, initialIssueId, onNavigate, }) {
|
|
|
119
122
|
? 'bg-primary text-primary-foreground'
|
|
120
123
|
: 'text-muted-foreground hover:bg-accent hover:text-foreground'}`, children: f.label }, f.id))) }), _jsx("div", { className: "flex flex-wrap gap-1", role: "group", "aria-label": "Filter by status", children: STATUS_FILTERS.map((f) => (_jsx("button", { type: "button", "aria-pressed": status === f.id, onClick: () => setStatus(f.id), className: `focus-visible:ring-ring rounded-md px-3 py-1.5 text-sm font-medium transition-colors focus-visible:ring-2 focus-visible:outline-none ${status === f.id
|
|
121
124
|
? 'bg-accent text-foreground'
|
|
122
|
-
: 'text-muted-foreground hover:bg-accent hover:text-foreground'}`, children: f.label }, f.id))) })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [_jsxs("button", { type: "button", className: btnSecondary, onClick: handleBatchGenerateBriefs, disabled: batchGenerating || loading || briefEligibleCount === 0, "aria-busy": batchGenerating, children: [_jsx(Sparkles, { className: "h-4 w-4", "aria-hidden": true }), batchGenerating ? 'Generating…' : 'Generate briefs'] }), _jsxs("button", { type: "button", className: btnSecondary, onClick: handleExportBrief, disabled: exportingBrief || loading, "aria-busy": exportingBrief, children: [_jsx(FileDown, { className: "h-4 w-4", "aria-hidden": true }), exportingBrief ? 'Exporting…' : 'Export fix brief'] })] })] }), loading ? (_jsx(SeoLoading, { label: "Loading issues\u2026" })) : error ? (_jsx(SeoErrorState, { message: error, onRetry: refetch })) : issues.length === 0 ? (_jsx(SeoEmptyState, { icon: status === 'open' ? _jsx(CheckCircle2, { size: 24 }) : _jsx(ClipboardCheck, { size: 24 }), title: status === 'open' ? 'No open issues' : 'No issues match', description: status === 'open'
|
|
125
|
+
: 'text-muted-foreground hover:bg-accent hover:text-foreground'}`, children: f.label }, f.id))) })] }), _jsxs("div", { className: "flex flex-wrap gap-2", children: [batchBriefsEnabled ? (_jsxs("button", { type: "button", className: btnSecondary, onClick: handleBatchGenerateBriefs, disabled: batchGenerating || loading || briefEligibleCount === 0, "aria-busy": batchGenerating, children: [_jsx(Sparkles, { className: "h-4 w-4", "aria-hidden": true }), batchGenerating ? 'Generating…' : 'Generate briefs'] })) : (_jsx(PlanUpgradeCallout, { feature: "seo.batchContentBriefs", upgradeUrl: planInfo?.upgradeUrl })), _jsxs("button", { type: "button", className: btnSecondary, onClick: handleExportBrief, disabled: exportingBrief || loading, "aria-busy": exportingBrief, children: [_jsx(FileDown, { className: "h-4 w-4", "aria-hidden": true }), exportingBrief ? 'Exporting…' : 'Export fix brief'] })] })] }), loading ? (_jsx(SeoLoading, { label: "Loading issues\u2026" })) : error ? (_jsx(SeoErrorState, { message: error, onRetry: refetch })) : issues.length === 0 ? (_jsx(SeoEmptyState, { icon: status === 'open' ? _jsx(CheckCircle2, { size: 24 }) : _jsx(ClipboardCheck, { size: 24 }), title: status === 'open' ? 'No open issues' : 'No issues match', description: status === 'open'
|
|
123
126
|
? 'Run an audit to scan for new issues, or adjust the filters.'
|
|
124
127
|
: 'Try a different severity or status filter.' })) : (_jsx("div", { className: "overflow-x-auto", children: _jsxs("table", { className: "w-full text-sm", "aria-label": "SEO issues", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-muted-foreground border-border border-b text-left", children: [_jsx("th", { className: "py-2 pr-4 font-medium", children: "Severity" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Issue" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Page" }), _jsx("th", { className: "py-2 pr-4 font-medium", children: "Status" }), _jsx("th", { className: "py-2 text-right font-medium", children: _jsx("span", { className: "sr-only", children: "Actions" }) })] }) }), _jsx("tbody", { className: "divide-border divide-y", children: issues.map((issue) => {
|
|
125
128
|
const meta = severityMeta(issue.severity);
|
|
126
129
|
const expanded = expandedIssueId === issue.id;
|
|
127
130
|
return (_jsxs(Fragment, { children: [_jsxs("tr", { className: `hover:bg-accent/40 ${expanded ? 'bg-accent/20' : ''}`, children: [_jsx("td", { className: "py-2.5 pr-4", children: _jsxs("span", { className: `inline-flex items-center gap-1.5 text-sm ${meta.text}`, children: [_jsx("span", { className: `h-1.5 w-1.5 rounded-full ${meta.dot}`, "aria-hidden": true }), meta.label] }) }), _jsxs("td", { className: "py-2.5 pr-4", children: [_jsx("span", { className: "text-foreground block font-medium", children: issue.title }), _jsx("span", { className: "text-muted-foreground block capitalize", children: issue.category })] }), _jsx("td", { className: "text-muted-foreground py-2.5 pr-4", children: _jsx("span", { className: "block truncate", children: issue.entityTitle || issue.url || '—' }) }), _jsx("td", { className: "py-2.5 pr-4", children: _jsx(SeoStatusBadge, { label: issue.status, tone: issueStatusTone(issue.status) }) }), _jsx("td", { className: "py-2.5 text-right", children: _jsx(SeoIssueFixToggle, { expanded: expanded, fixable: issue.fixable ||
|
|
128
131
|
isInlineSeoFixIssue(issue.type) ||
|
|
129
|
-
supportsSeoContentBrief(issue.type), onToggle: () => toggleExpanded(issue.id) }) })] }), _jsx(SeoIssueFixPanel, { issue: issue, expanded: expanded, onChanged: handleChanged, onNavigate: onNavigate, onOpenDetails: () => setDetailIssueId(issue.id) })] }, issue.id));
|
|
132
|
+
supportsSeoContentBrief(issue.type), onToggle: () => toggleExpanded(issue.id) }) })] }), _jsx(SeoIssueFixPanel, { issue: issue, expanded: expanded, onChanged: handleChanged, onNavigate: onNavigate, onOpenDetails: () => setDetailIssueId(issue.id), planInfo: planInfo })] }, issue.id));
|
|
130
133
|
}) })] }) }))] }), _jsx(SeoIssueFixDrawer, { open: detailIssueId !== null, onOpenChange: (o) => !o && setDetailIssueId(null), issueId: detailIssueId, onChanged: handleChanged, onNavigate: onNavigate })] }));
|
|
131
134
|
}
|
|
132
135
|
//# sourceMappingURL=AuditTab.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AuditTab.js","sourceRoot":"","sources":["../../../src/views/seo/AuditTab.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"AuditTab.js","sourceRoot":"","sources":["../../../src/views/seo/AuditTab.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthlyUsageCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAYrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,
|
|
1
|
+
{"version":3,"file":"MonthlyUsageCard.d.ts","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAYrD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,OAAO,GACR,EAAE;IACD,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,iBAAiB,EAAE,MAAM,CAAA;IACzB,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACtC,WAAW,EAAE,MAAM,GAAG,IAAI,CAAA;IAC1B,OAAO,EAAE,OAAO,CAAA;CACjB,2CAiFA"}
|
|
@@ -25,6 +25,6 @@ export function MonthlyUsageCard({ usage, monthlyTokenLimit, onChangeLimit, budg
|
|
|
25
25
|
const periodLabel = usage?.periodStart
|
|
26
26
|
? new Date(usage.periodStart).toLocaleDateString(undefined, { month: 'long', year: 'numeric' })
|
|
27
27
|
: 'This month';
|
|
28
|
-
return (_jsx(SettingsCard, { title: "Monthly Usage", description: `Token usage for ${periodLabel}. Aggregated from completed AI runs.`, children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-foreground font-medium", children: [formatTokens(used), " tokens used"] }), limit && limit > 0 && (_jsxs("span", { className: "text-muted-foreground", children: ["of ", formatTokens(limit)] }))] }), pct !== null ? (_jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", role: "progressbar", "aria-valuenow": pct, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": `${pct}% of monthly token budget used`, children: _jsx("div", { className: `h-full rounded-full transition-all ${over ? 'bg-destructive' : 'bg-brand'}`, style: { width: `${pct}%` } }) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "No monthly limit set. Usage is tracked but not capped." })), over && (_jsx("p", { className: "text-destructive mt-1 text-sm", role: "status", children: "Usage has exceeded the monthly limit." }))] }), _jsxs("div", { children: [_jsx("label", { htmlFor: limitId, className: LABEL_CLASS, children: "Monthly token limit" }), _jsx("input", { id: limitId, type: "text", inputMode: "numeric", value: monthlyTokenLimit, disabled: !canEdit, placeholder: "No limit", "aria-invalid": Boolean(budgetError), "aria-describedby": budgetError ? `${limitId}-error` : undefined, onChange: (e) => onChangeLimit(e.target.value), className: INPUT_CLASS }), budgetError ? (_jsx("p", { id: `${limitId}-error`, className: "text-destructive mt-1 text-sm", children: budgetError })) : (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "Leave blank for no limit.
|
|
28
|
+
return (_jsx(SettingsCard, { title: "Monthly Usage", description: `Token usage for ${periodLabel}. Aggregated from completed AI runs.`, children: _jsxs("div", { className: "space-y-4", children: [_jsxs("div", { children: [_jsxs("div", { className: "mb-1 flex items-center justify-between text-sm", children: [_jsxs("span", { className: "text-foreground font-medium", children: [formatTokens(used), " tokens used"] }), limit && limit > 0 && (_jsxs("span", { className: "text-muted-foreground", children: ["of ", formatTokens(limit)] }))] }), pct !== null ? (_jsx("div", { className: "bg-muted h-2 w-full overflow-hidden rounded-full", role: "progressbar", "aria-valuenow": pct, "aria-valuemin": 0, "aria-valuemax": 100, "aria-valuetext": `${pct}% of monthly token budget used`, children: _jsx("div", { className: `h-full rounded-full transition-all ${over ? 'bg-destructive' : 'bg-brand'}`, style: { width: `${pct}%` } }) })) : (_jsx("p", { className: "text-muted-foreground text-sm", children: "No monthly limit set. Usage is tracked but not capped." })), over && (_jsx("p", { className: "text-destructive mt-1 text-sm", role: "status", children: "Usage has exceeded the monthly limit." }))] }), _jsxs("div", { children: [_jsx("label", { htmlFor: limitId, className: LABEL_CLASS, children: "Monthly token limit" }), _jsx("input", { id: limitId, type: "text", inputMode: "numeric", value: monthlyTokenLimit, disabled: !canEdit, placeholder: "No limit", "aria-invalid": Boolean(budgetError), "aria-describedby": budgetError ? `${limitId}-error` : undefined, onChange: (e) => onChangeLimit(e.target.value), className: INPUT_CLASS }), budgetError ? (_jsx("p", { id: `${limitId}-error`, className: "text-destructive mt-1 text-sm", children: budgetError })) : (_jsx("p", { className: "text-muted-foreground mt-1 text-sm", children: "Leave blank for no limit. When set, new AI requests are blocked with HTTP 429 after the limit is reached." }))] })] }) }));
|
|
29
29
|
}
|
|
30
30
|
//# sourceMappingURL=MonthlyUsageCard.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MonthlyUsageCard.js","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"MonthlyUsageCard.js","sourceRoot":"","sources":["../../../src/views/settings/MonthlyUsageCard.tsx"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@actuate-media/cms-admin",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.59.0",
|
|
4
4
|
"repository": {
|
|
5
5
|
"type": "git",
|
|
6
6
|
"url": "https://github.com/actuate-media/actuatecms.git",
|
|
@@ -90,7 +90,7 @@
|
|
|
90
90
|
"tailwindcss": "^4.0.0",
|
|
91
91
|
"typescript": "^5.7.0",
|
|
92
92
|
"vitest": "^4.1.0",
|
|
93
|
-
"@actuate-media/cms-core": "0.
|
|
93
|
+
"@actuate-media/cms-core": "0.80.0",
|
|
94
94
|
"@actuate-media/component-blocks": "0.2.1"
|
|
95
95
|
},
|
|
96
96
|
"scripts": {
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
'use client'
|
|
2
|
+
|
|
3
|
+
import { ArrowUpRight } from 'lucide-react'
|
|
4
|
+
import type { PlanFeature } from '../lib/plan.js'
|
|
5
|
+
import { planFeatureLabel } from '../lib/plan.js'
|
|
6
|
+
|
|
7
|
+
export function PlanUpgradeCallout({
|
|
8
|
+
feature,
|
|
9
|
+
requiredTier = 'pro',
|
|
10
|
+
upgradeUrl,
|
|
11
|
+
}: {
|
|
12
|
+
feature: PlanFeature
|
|
13
|
+
requiredTier?: string
|
|
14
|
+
upgradeUrl?: string | null
|
|
15
|
+
}) {
|
|
16
|
+
return (
|
|
17
|
+
<div
|
|
18
|
+
className="border-border bg-muted/40 space-y-2 rounded-md border p-4"
|
|
19
|
+
role="status"
|
|
20
|
+
aria-live="polite"
|
|
21
|
+
>
|
|
22
|
+
<p className="text-foreground text-sm font-medium">
|
|
23
|
+
Upgrade to unlock {planFeatureLabel(feature)}
|
|
24
|
+
</p>
|
|
25
|
+
<p className="text-muted-foreground text-sm">
|
|
26
|
+
This feature requires the {requiredTier} plan. Audits, issue tracking, and export remain
|
|
27
|
+
available on your current plan.
|
|
28
|
+
</p>
|
|
29
|
+
{upgradeUrl ? (
|
|
30
|
+
<a
|
|
31
|
+
href={upgradeUrl}
|
|
32
|
+
target="_blank"
|
|
33
|
+
rel="noopener noreferrer"
|
|
34
|
+
className="text-primary inline-flex items-center gap-1 text-sm font-medium hover:underline"
|
|
35
|
+
>
|
|
36
|
+
View plans
|
|
37
|
+
<ArrowUpRight className="h-4 w-4" aria-hidden />
|
|
38
|
+
</a>
|
|
39
|
+
) : null}
|
|
40
|
+
</div>
|
|
41
|
+
)
|
|
42
|
+
}
|
|
@@ -20,6 +20,8 @@ import {
|
|
|
20
20
|
type SeoIssue,
|
|
21
21
|
type SeoIssueFixSuggestion,
|
|
22
22
|
} from '../../lib/seo-service.js'
|
|
23
|
+
import { hasPlanFeature, type PlanInfo } from '../../lib/plan.js'
|
|
24
|
+
import { PlanUpgradeCallout } from '../PlanUpgradeCallout.js'
|
|
23
25
|
import { SeoErrorState, btnPrimary, btnSecondary } from './primitives.js'
|
|
24
26
|
|
|
25
27
|
function formatValue(value: string | boolean | null): string {
|
|
@@ -220,16 +222,21 @@ export function SeoIssueFixPanel({
|
|
|
220
222
|
onChanged,
|
|
221
223
|
onNavigate,
|
|
222
224
|
onOpenDetails,
|
|
225
|
+
planInfo,
|
|
223
226
|
}: {
|
|
224
227
|
issue: SeoIssue
|
|
225
228
|
expanded: boolean
|
|
226
229
|
onChanged?: () => void
|
|
227
230
|
onNavigate?: (path: string) => void
|
|
228
231
|
onOpenDetails?: () => void
|
|
232
|
+
planInfo?: PlanInfo | null
|
|
229
233
|
}) {
|
|
230
234
|
const inlineFix = isInlineSeoFixIssue(issue.type)
|
|
231
235
|
const contentBriefEligible = supportsSeoContentBrief(issue.type)
|
|
232
236
|
const researchEligible = supportsSeoContentResearch(issue.type)
|
|
237
|
+
const inlineApplyEnabled = hasPlanFeature(planInfo, 'seo.inlineApply')
|
|
238
|
+
const contentBriefEnabled = hasPlanFeature(planInfo, 'seo.contentBrief')
|
|
239
|
+
const contentResearchEnabled = hasPlanFeature(planInfo, 'seo.contentResearch')
|
|
233
240
|
|
|
234
241
|
const [suggestion, setSuggestion] = useState<SeoIssueFixSuggestion | null>(null)
|
|
235
242
|
const [contentBrief, setContentBrief] = useState<SeoContentBrief | null>(null)
|
|
@@ -468,7 +475,7 @@ export function SeoIssueFixPanel({
|
|
|
468
475
|
) : null}
|
|
469
476
|
|
|
470
477
|
<div className="flex flex-wrap items-center gap-2">
|
|
471
|
-
{inlineFix && suggestion?.autoFixable ? (
|
|
478
|
+
{inlineFix && suggestion?.autoFixable && inlineApplyEnabled ? (
|
|
472
479
|
<button
|
|
473
480
|
type="button"
|
|
474
481
|
className={btnPrimary}
|
|
@@ -478,6 +485,8 @@ export function SeoIssueFixPanel({
|
|
|
478
485
|
<Check className="h-4 w-4" aria-hidden />
|
|
479
486
|
{busy ? 'Applying…' : 'Approve fix'}
|
|
480
487
|
</button>
|
|
488
|
+
) : inlineFix && suggestion?.autoFixable && !inlineApplyEnabled ? (
|
|
489
|
+
<PlanUpgradeCallout feature="seo.inlineApply" upgradeUrl={planInfo?.upgradeUrl} />
|
|
481
490
|
) : inlineFix && suggestion?.aiUnavailable ? (
|
|
482
491
|
<p className="text-muted-foreground text-sm">
|
|
483
492
|
Configure an AI provider in Settings → AI to enable generated fixes for this
|
|
@@ -487,7 +496,15 @@ export function SeoIssueFixPanel({
|
|
|
487
496
|
|
|
488
497
|
{contentBriefEligible ? (
|
|
489
498
|
<>
|
|
490
|
-
{
|
|
499
|
+
{!contentBriefEnabled || !contentResearchEnabled ? (
|
|
500
|
+
<PlanUpgradeCallout
|
|
501
|
+
feature={
|
|
502
|
+
!contentResearchEnabled ? 'seo.contentResearch' : 'seo.contentBrief'
|
|
503
|
+
}
|
|
504
|
+
upgradeUrl={planInfo?.upgradeUrl}
|
|
505
|
+
/>
|
|
506
|
+
) : null}
|
|
507
|
+
{researchEligible && contentResearchEnabled ? (
|
|
491
508
|
<button
|
|
492
509
|
type="button"
|
|
493
510
|
className={!contentBrief && !contentResearch ? btnPrimary : btnSecondary}
|
|
@@ -501,22 +518,24 @@ export function SeoIssueFixPanel({
|
|
|
501
518
|
{researching ? 'Researching…' : 'Research & brief'}
|
|
502
519
|
</button>
|
|
503
520
|
) : null}
|
|
504
|
-
|
|
505
|
-
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
519
|
-
|
|
521
|
+
{contentBriefEnabled ? (
|
|
522
|
+
<button
|
|
523
|
+
type="button"
|
|
524
|
+
className={contentBrief ? btnSecondary : btnPrimary}
|
|
525
|
+
onClick={handleGenerateBrief}
|
|
526
|
+
disabled={busy || generatingBrief || researching}
|
|
527
|
+
>
|
|
528
|
+
<Wand2
|
|
529
|
+
className={`h-4 w-4 ${generatingBrief ? 'motion-safe:animate-pulse' : ''}`}
|
|
530
|
+
aria-hidden
|
|
531
|
+
/>
|
|
532
|
+
{generatingBrief
|
|
533
|
+
? 'Generating brief…'
|
|
534
|
+
: contentBrief
|
|
535
|
+
? 'Regenerate brief'
|
|
536
|
+
: 'Generate content brief'}
|
|
537
|
+
</button>
|
|
538
|
+
) : null}
|
|
520
539
|
</>
|
|
521
540
|
) : null}
|
|
522
541
|
|
package/src/lib/plan.ts
ADDED
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { cmsApi } from './api.js'
|
|
2
|
+
|
|
3
|
+
export type PlanTier = 'starter' | 'pro' | 'enterprise'
|
|
4
|
+
|
|
5
|
+
export type PlanFeature =
|
|
6
|
+
| 'seo.inlineApply'
|
|
7
|
+
| 'seo.contentBrief'
|
|
8
|
+
| 'seo.contentResearch'
|
|
9
|
+
| 'seo.batchContentBriefs'
|
|
10
|
+
|
|
11
|
+
export interface PlanInfo {
|
|
12
|
+
tier: PlanTier
|
|
13
|
+
features: PlanFeature[]
|
|
14
|
+
upgradeUrl: string | null
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export async function fetchPlanInfo(): Promise<PlanInfo | null> {
|
|
18
|
+
const res = await cmsApi<PlanInfo>('/plan')
|
|
19
|
+
if (res.error || !res.data) return null
|
|
20
|
+
return res.data
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/** When plan info is unavailable, assume full access (self-hosted default). */
|
|
24
|
+
export function hasPlanFeature(plan: PlanInfo | null | undefined, feature: PlanFeature): boolean {
|
|
25
|
+
if (!plan) return true
|
|
26
|
+
return plan.features.includes(feature)
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
export function planFeatureLabel(feature: PlanFeature): string {
|
|
30
|
+
switch (feature) {
|
|
31
|
+
case 'seo.inlineApply':
|
|
32
|
+
return 'SEO inline apply'
|
|
33
|
+
case 'seo.contentBrief':
|
|
34
|
+
return 'SEO content briefs'
|
|
35
|
+
case 'seo.contentResearch':
|
|
36
|
+
return 'SEO topic research'
|
|
37
|
+
case 'seo.batchContentBriefs':
|
|
38
|
+
return 'SEO batch content briefs'
|
|
39
|
+
default: {
|
|
40
|
+
const _exhaustive: never = feature
|
|
41
|
+
return _exhaustive
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
}
|
package/src/views/SEO.tsx
CHANGED
|
@@ -20,6 +20,7 @@ import { useCallback, useEffect, useMemo, useState } from 'react'
|
|
|
20
20
|
import { toast } from 'sonner'
|
|
21
21
|
import { ErrorBoundary } from '../components/ErrorBoundary.js'
|
|
22
22
|
import { fetchSeoOverview, runSeoAudit } from '../lib/seo-service.js'
|
|
23
|
+
import { fetchPlanInfo, type PlanInfo } from '../lib/plan.js'
|
|
23
24
|
import { ScorePill, btnPrimary, btnSecondary } from '../components/seo/primitives.js'
|
|
24
25
|
import { SeoCopilotDrawer } from '../components/seo/SeoCopilotDrawer.js'
|
|
25
26
|
import { useSeoResource } from './seo/useSeoResource.js'
|
|
@@ -77,6 +78,11 @@ export function SEO({ onNavigate, initialTab = 'overview' }: SEOProps) {
|
|
|
77
78
|
const [auditing, setAuditing] = useState(false)
|
|
78
79
|
const [copilotOpen, setCopilotOpen] = useState(false)
|
|
79
80
|
const [deepLink, setDeepLink] = useState<UrlState>(initialUrl)
|
|
81
|
+
const [planInfo, setPlanInfo] = useState<PlanInfo | null>(null)
|
|
82
|
+
|
|
83
|
+
useEffect(() => {
|
|
84
|
+
void fetchPlanInfo().then(setPlanInfo)
|
|
85
|
+
}, [])
|
|
80
86
|
|
|
81
87
|
// Overview resource is owned here so the header score pill and the Overview
|
|
82
88
|
// tab share a single request; `refetchKey` re-runs it after an audit.
|
|
@@ -217,6 +223,7 @@ export function SEO({ onNavigate, initialTab = 'overview' }: SEOProps) {
|
|
|
217
223
|
refetchKey={refetchKey}
|
|
218
224
|
initialIssueId={deepLink.issueId}
|
|
219
225
|
onNavigate={onNavigate}
|
|
226
|
+
planInfo={planInfo}
|
|
220
227
|
/>
|
|
221
228
|
)}
|
|
222
229
|
</Tabs.Content>
|
|
@@ -26,6 +26,8 @@ import {
|
|
|
26
26
|
} from '../../components/seo/primitives.js'
|
|
27
27
|
import { SeoIssueFixDrawer } from '../../components/seo/SeoIssueFixDrawer.js'
|
|
28
28
|
import { SeoIssueFixPanel, SeoIssueFixToggle } from '../../components/seo/SeoIssueFixPanel.js'
|
|
29
|
+
import { PlanUpgradeCallout } from '../../components/PlanUpgradeCallout.js'
|
|
30
|
+
import { hasPlanFeature, type PlanInfo } from '../../lib/plan.js'
|
|
29
31
|
import { useSeoResource } from './useSeoResource.js'
|
|
30
32
|
|
|
31
33
|
const SEVERITY_FILTERS: { id: SeoSeverity | 'all'; label: string }[] = [
|
|
@@ -95,10 +97,12 @@ export function AuditTab({
|
|
|
95
97
|
refetchKey = 0,
|
|
96
98
|
initialIssueId,
|
|
97
99
|
onNavigate,
|
|
100
|
+
planInfo,
|
|
98
101
|
}: {
|
|
99
102
|
refetchKey?: number
|
|
100
103
|
initialIssueId?: string | null
|
|
101
104
|
onNavigate?: (path: string) => void
|
|
105
|
+
planInfo?: PlanInfo | null
|
|
102
106
|
}) {
|
|
103
107
|
const [severity, setSeverity] = useState<SeoSeverity | 'all'>('all')
|
|
104
108
|
const [status, setStatus] = useState<SeoIssueStatus | 'all'>('open')
|
|
@@ -119,6 +123,7 @@ export function AuditTab({
|
|
|
119
123
|
() => issues.filter((i) => supportsSeoContentBrief(i.type)).length,
|
|
120
124
|
[issues],
|
|
121
125
|
)
|
|
126
|
+
const batchBriefsEnabled = hasPlanFeature(planInfo, 'seo.batchContentBriefs')
|
|
122
127
|
|
|
123
128
|
function toggleExpanded(issueId: string) {
|
|
124
129
|
setExpandedIssueId((current) => (current === issueId ? null : issueId))
|
|
@@ -231,16 +236,23 @@ export function AuditTab({
|
|
|
231
236
|
</div>
|
|
232
237
|
</div>
|
|
233
238
|
<div className="flex flex-wrap gap-2">
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
239
|
+
{batchBriefsEnabled ? (
|
|
240
|
+
<button
|
|
241
|
+
type="button"
|
|
242
|
+
className={btnSecondary}
|
|
243
|
+
onClick={handleBatchGenerateBriefs}
|
|
244
|
+
disabled={batchGenerating || loading || briefEligibleCount === 0}
|
|
245
|
+
aria-busy={batchGenerating}
|
|
246
|
+
>
|
|
247
|
+
<Sparkles className="h-4 w-4" aria-hidden />
|
|
248
|
+
{batchGenerating ? 'Generating…' : 'Generate briefs'}
|
|
249
|
+
</button>
|
|
250
|
+
) : (
|
|
251
|
+
<PlanUpgradeCallout
|
|
252
|
+
feature="seo.batchContentBriefs"
|
|
253
|
+
upgradeUrl={planInfo?.upgradeUrl}
|
|
254
|
+
/>
|
|
255
|
+
)}
|
|
244
256
|
<button
|
|
245
257
|
type="button"
|
|
246
258
|
className={btnSecondary}
|
|
@@ -330,6 +342,7 @@ export function AuditTab({
|
|
|
330
342
|
onChanged={handleChanged}
|
|
331
343
|
onNavigate={onNavigate}
|
|
332
344
|
onOpenDetails={() => setDetailIssueId(issue.id)}
|
|
345
|
+
planInfo={planInfo}
|
|
333
346
|
/>
|
|
334
347
|
</Fragment>
|
|
335
348
|
)
|
|
@@ -104,7 +104,8 @@ export function MonthlyUsageCard({
|
|
|
104
104
|
</p>
|
|
105
105
|
) : (
|
|
106
106
|
<p className="text-muted-foreground mt-1 text-sm">
|
|
107
|
-
Leave blank for no limit.
|
|
107
|
+
Leave blank for no limit. When set, new AI requests are blocked with HTTP 429 after
|
|
108
|
+
the limit is reached.
|
|
108
109
|
</p>
|
|
109
110
|
)}
|
|
110
111
|
</div>
|