@parhelia/core 0.4.12873 → 0.4.12875

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/config/config.js +9 -2
  2. package/dist/config/config.js.map +1 -1
  3. package/dist/editor/client/EditorShell.js +8 -3
  4. package/dist/editor/client/EditorShell.js.map +1 -1
  5. package/dist/editor/client/editContext.d.ts +5 -0
  6. package/dist/editor/client/editContext.js.map +1 -1
  7. package/dist/editor/reviews/commentTargetPicker.d.ts +4 -0
  8. package/dist/editor/reviews/commentTargetPicker.js +4 -0
  9. package/dist/editor/reviews/commentTargetPicker.js.map +1 -1
  10. package/dist/editor/services/analyticsService.d.ts +131 -0
  11. package/dist/editor/services/analyticsService.js +17 -0
  12. package/dist/editor/services/analyticsService.js.map +1 -0
  13. package/dist/editor/settings/panels/McpAccessPanel.d.ts +3 -3
  14. package/dist/editor/settings/panels/McpAccessPanel.js +18 -38
  15. package/dist/editor/settings/panels/McpAccessPanel.js.map +1 -1
  16. package/dist/editor/settings/panels/McpGrantList.d.ts +8 -0
  17. package/dist/editor/settings/panels/McpGrantList.js +21 -0
  18. package/dist/editor/settings/panels/McpGrantList.js.map +1 -0
  19. package/dist/editor/settings/panels/McpServerPanel.d.ts +7 -0
  20. package/dist/editor/settings/panels/McpServerPanel.js +84 -0
  21. package/dist/editor/settings/panels/McpServerPanel.js.map +1 -0
  22. package/dist/editor/settings/panels/index.d.ts +1 -0
  23. package/dist/editor/settings/panels/index.js +1 -0
  24. package/dist/editor/settings/panels/index.js.map +1 -1
  25. package/dist/editor/sidebar/analytics/PagePerformance.d.ts +6 -0
  26. package/dist/editor/sidebar/analytics/PagePerformance.js +142 -0
  27. package/dist/editor/sidebar/analytics/PagePerformance.js.map +1 -0
  28. package/dist/editor/sidebar/analytics/analyticsFormat.d.ts +10 -0
  29. package/dist/editor/sidebar/analytics/analyticsFormat.js +57 -0
  30. package/dist/editor/sidebar/analytics/analyticsFormat.js.map +1 -0
  31. package/dist/editor/ui/PublishDialog.d.ts +5 -1
  32. package/dist/editor/ui/PublishDialog.js +98 -17
  33. package/dist/editor/ui/PublishDialog.js.map +1 -1
  34. package/dist/editor/ui/WorkboxItemsTable.d.ts +17 -2
  35. package/dist/editor/ui/WorkboxItemsTable.js +26 -12
  36. package/dist/editor/ui/WorkboxItemsTable.js.map +1 -1
  37. package/dist/editor/ui/publishReadiness.d.ts +11 -1
  38. package/dist/editor/ui/publishReadiness.js +34 -30
  39. package/dist/editor/ui/publishReadiness.js.map +1 -1
  40. package/dist/revision.d.ts +2 -2
  41. package/dist/revision.js +2 -2
  42. package/package.json +1 -1
@@ -0,0 +1,142 @@
1
+ "use client";
2
+ import { Fragment as _Fragment, jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import { ExternalLink, Info, RefreshCw, TrendingDown, TrendingUp } from "lucide-react";
5
+ import { useEditContext } from "../../client/editContext";
6
+ import { usePageViewState } from "../../page-viewer/pageViewContext";
7
+ import { SimpleToolbar } from "../../ui/SimpleToolbar";
8
+ import { SimpleIconButton } from "../../ui/SimpleIconButton";
9
+ import { LoadingState } from "../../ui/LoadingState";
10
+ import { Alert, AlertDescription, AlertTitle } from "../../../components/ui/alert";
11
+ import { cn } from "../../../lib/utils";
12
+ import { getPageAnalytics, } from "../../services/analyticsService";
13
+ import { changeTone, formatChange, formatCount, formatDate, formatMetricValue, share, } from "./analyticsFormat";
14
+ /**
15
+ * "How much is this page used?" — GA4 metrics for the current item, site and language, plus
16
+ * Search Console when configured. Every number shows its definition and window; "no data" is
17
+ * never shown as zero.
18
+ */
19
+ export function PagePerformance() {
20
+ const editContext = useEditContext();
21
+ const pageContext = editContext?.workspaceId === "editor"
22
+ ? editContext.getActiveSlotContext()?.primaryPageViewContext
23
+ : undefined;
24
+ const siteName = usePageViewState(pageContext, (state) => state.site?.name);
25
+ const descriptor = editContext?.currentItemDescriptor;
26
+ const [report, setReport] = useState();
27
+ const [error, setError] = useState();
28
+ const [loading, setLoading] = useState(false);
29
+ const [reloadKey, setReloadKey] = useState(0);
30
+ const itemId = descriptor?.id;
31
+ const language = descriptor?.language;
32
+ useEffect(() => {
33
+ if (!itemId || !language)
34
+ return;
35
+ const controller = new AbortController();
36
+ setLoading(true);
37
+ setError(undefined);
38
+ getPageAnalytics(itemId, language, siteName, controller.signal)
39
+ .then((data) => {
40
+ if (!controller.signal.aborted)
41
+ setReport(data);
42
+ })
43
+ .catch((e) => {
44
+ if (!controller.signal.aborted) {
45
+ setReport(undefined);
46
+ setError(e instanceof Error ? e.message : String(e));
47
+ }
48
+ })
49
+ .finally(() => {
50
+ if (!controller.signal.aborted)
51
+ setLoading(false);
52
+ });
53
+ return () => controller.abort();
54
+ }, [itemId, language, siteName, reloadKey]);
55
+ const reload = useCallback(() => setReloadKey((k) => k + 1), []);
56
+ if (!editContext)
57
+ return null;
58
+ if (editContext.user?.isLimitedPreviewUser)
59
+ return null;
60
+ return (_jsxs("div", { className: "absolute inset-0 flex flex-col", "data-testid": "page-performance-panel", children: [_jsxs(SimpleToolbar, { children: [_jsx("span", { className: "text-neutral-grey-50 truncate px-1 text-xs", children: report?.window
61
+ ? `${formatDate(report.window.current.startDate)} – ${formatDate(report.window.current.endDate)} vs previous ${report.window.days} days`
62
+ : "Last 28 complete days" }), _jsx("div", { className: "ml-auto" }), _jsx(SimpleIconButton, { onClick: reload, icon: _jsx(RefreshCw, { className: cn("h-4 w-4", loading && "animate-spin"), strokeWidth: 1 }), label: "Reload", "data-testid": "page-performance-reload" })] }), _jsx("div", { className: "flex-1 overflow-y-auto p-3 text-sm", children: !itemId ? (_jsx(EmptyState, { children: "Open a page to see how it is used." })) : loading && !report ? (_jsx(LoadingState, { variant: "fill", message: "Loading analytics\u2026" })) : error ? (_jsxs(Alert, { variant: "destructive", children: [_jsx(AlertTitle, { children: "Analytics could not be loaded" }), _jsx(AlertDescription, { children: error })] })) : report ? (_jsx(ReportView, { report: report })) : null })] }));
63
+ }
64
+ function ReportView({ report }) {
65
+ const hasGa4 = report.status === "ok";
66
+ return (_jsxs("div", { className: "flex flex-col gap-4", children: [!hasGa4 && _jsx(StatusAlert, { status: report.status, message: report.message, source: "GA4" }), hasGa4 && (_jsxs(_Fragment, { children: [_jsx("div", { className: "grid grid-cols-2 gap-2", children: report.headline.map((metric) => (_jsx(MetricTile, { metric: metric }, metric.key))) }), _jsxs(Section, { title: "Daily views", children: [_jsx(TrendChart, { points: report.trend, publishDates: report.publishEvents.map((p) => p.date) }), report.publishEvents.some((p) => report.trend.some((t) => t.date === p.date)) && (_jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: "Purple marks: published from Parhelia. Shown as context, not as the cause of a change." }))] }), report.keyEvents.length > 0 && (_jsx(Section, { title: "Key events on this page", children: _jsx("table", { className: "w-full text-xs", children: _jsx("tbody", { children: report.keyEvents.map((event) => (_jsxs("tr", { className: "border-border-default border-b last:border-0", children: [_jsx("td", { className: "py-1 font-mono", children: event.name }), _jsx("td", { className: "py-1 text-right", children: formatCount(event.current) }), _jsxs("td", { className: "text-neutral-grey-50 py-1 pl-2 text-right", children: ["prev. ", formatCount(event.previous ?? 0)] })] }, event.name))) }) }) })), _jsx(Section, { title: "Traffic sources", children: _jsx(Breakdown, { rows: report.channels }) }), _jsx(Section, { title: "Devices", children: _jsx(Breakdown, { rows: report.devices }) }), report.countries.length > 0 && (_jsx(Section, { title: "Countries", children: _jsx(Breakdown, { rows: report.countries }) })), _jsx(Section, { title: "Sessions including this page", hint: "These describe whole sessions in which this page was viewed, not this page's effectiveness.", children: _jsx("div", { className: "flex flex-col gap-1", children: report.sessionContext.map((metric) => (_jsx(MetricRow, { metric: metric }, metric.key))) }) }), (report.scroll90Events ?? 0) > 0 || report.outboundClicks.length > 0 ? (_jsxs(Section, { title: "Interactions", children: [report.scroll90Events !== undefined && (_jsxs("div", { className: "flex justify-between text-xs", title: "Enhanced measurement fires scroll once, at 90% depth.", children: [_jsx("span", { children: "Scrolled to 90%" }), _jsx("span", { children: formatCount(report.scroll90Events) })] })), report.outboundClicks.length > 0 && (_jsx("div", { className: "text-neutral-grey-50 mt-1 text-xs", children: "Outbound clicks" })), report.outboundClicks.map((click) => (_jsxs("div", { className: "flex justify-between gap-2 text-xs", children: [_jsx("span", { className: "truncate", title: click.name, children: click.name }), _jsx("span", { children: formatCount(click.current) })] }, click.name)))] })) : null, _jsx(Quality, { report: report })] })), report.search && _jsx(SearchSection, { search: report.search }), report.clarity && _jsx(ClaritySection, { clarity: report.clarity }), _jsx(Footer, { report: report })] }));
67
+ }
68
+ function MetricTile({ metric }) {
69
+ const tone = changeTone(metric);
70
+ const change = formatChange(metric.changePercent);
71
+ return (_jsxs("div", { className: "border-border-default rounded-md border p-2", title: `${metric.definition}${metric.denominator ? ` Divided by ${metric.denominator}.` : ""}`, "data-testid": `page-performance-metric-${metric.key}`, children: [_jsx("div", { className: "text-neutral-grey-50 text-xs", children: metric.label }), _jsx("div", { className: "text-lg font-medium", children: formatMetricValue(metric.current, metric.unit) }), _jsxs("div", { className: "flex items-center gap-1 text-xs", children: [change && (_jsxs("span", { className: cn("flex items-center gap-0.5", tone === "up" && "text-feedback-green", tone === "down" && "text-feedback-red", tone === "flat" && "text-neutral-grey-50"), children: [tone === "up" && _jsx(TrendingUp, { className: "h-3 w-3", strokeWidth: 1.5 }), tone === "down" && _jsx(TrendingDown, { className: "h-3 w-3", strokeWidth: 1.5 }), change] })), _jsxs("span", { className: "text-neutral-grey-50", children: ["prev. ", formatMetricValue(metric.previous, metric.unit)] })] })] }));
72
+ }
73
+ function MetricRow({ metric }) {
74
+ const change = formatChange(metric.changePercent);
75
+ return (_jsxs("div", { className: "flex justify-between gap-2 text-xs", title: metric.definition, children: [_jsx("span", { children: metric.label.replace(" (sessions including this page)", "") }), _jsxs("span", { children: [formatMetricValue(metric.current, metric.unit), change && _jsxs("span", { className: "text-neutral-grey-50 ml-1", children: ["(", change, ")"] })] })] }));
76
+ }
77
+ function TrendChart({ points, publishDates, }) {
78
+ if (points.length === 0)
79
+ return _jsx(EmptyState, { children: "No daily data." });
80
+ const width = 280;
81
+ const height = 64;
82
+ const max = Math.max(1, ...points.map((p) => p.views));
83
+ const step = points.length > 1 ? width / (points.length - 1) : width;
84
+ const coordinates = points.map((p, i) => [i * step, height - (p.views / max) * (height - 4) - 2]);
85
+ const line = coordinates.map(([x, y]) => `${x.toFixed(1)},${y.toFixed(1)}`).join(" ");
86
+ const markers = points
87
+ .map((p, i) => (publishDates.includes(p.date) ? i * step : null))
88
+ .filter((x) => x !== null);
89
+ return (_jsxs("div", { children: [_jsxs("svg", { viewBox: `0 0 ${width} ${height}`, className: "text-highlight-100 h-16 w-full", preserveAspectRatio: "none", role: "img", "aria-label": "Daily page views", children: [markers.map((x) => (_jsx("line", { x1: x, x2: x, y1: 0, y2: height, stroke: "currentColor", strokeOpacity: 0.35, strokeDasharray: "2 2" }, x))), _jsx("polyline", { points: line, fill: "none", stroke: "currentColor", strokeWidth: 1.5, vectorEffect: "non-scaling-stroke" }), points.map((p, i) => (_jsx("rect", { x: i * step - step / 2, y: 0, width: step, height: height, fill: "transparent", children: _jsx("title", { children: `${formatDate(p.date)}: ${formatCount(p.views)} views, ${formatCount(p.users)} users` }) }, p.date)))] }), _jsxs("div", { className: "text-neutral-grey-50 flex justify-between text-[10px]", children: [_jsx("span", { children: formatDate(points[0].date) }), _jsxs("span", { children: ["max ", formatCount(max), " views/day"] }), _jsx("span", { children: formatDate(points[points.length - 1].date) })] })] }));
90
+ }
91
+ function Breakdown({ rows }) {
92
+ if (rows.length === 0)
93
+ return _jsx(EmptyState, { children: "No data." });
94
+ const total = rows.reduce((sum, r) => sum + r.views, 0);
95
+ return (_jsx("div", { className: "flex flex-col gap-1", children: rows.map((row) => (_jsxs("div", { className: "text-xs", title: `${formatCount(row.views)} views, ${formatCount(row.users)} users`, children: [_jsxs("div", { className: "flex justify-between", children: [_jsx("span", { className: "truncate", children: row.label }), _jsxs("span", { className: "text-neutral-grey-50", children: [formatCount(row.views), " \u00B7 ", share(row.views, total), "%"] })] }), _jsx("div", { className: "bg-neutral-grey-5 h-1 rounded", children: _jsx("div", { className: "bg-highlight-100 h-1 rounded", style: { width: `${share(row.views, total)}%` } }) })] }, row.label))) }));
96
+ }
97
+ function SearchSection({ search }) {
98
+ return (_jsx(Section, { title: "Google Search", hint: search.current
99
+ ? `${formatDate(search.current.startDate)} – ${formatDate(search.current.endDate)}, final data`
100
+ : undefined, children: search.status !== "ok" ? (_jsx(StatusAlert, { status: search.status, message: search.message, source: "Search Console" })) : (_jsxs("div", { className: "flex flex-col gap-3", children: [_jsx("div", { className: "grid grid-cols-2 gap-2", children: search.totals.map((metric) => (_jsx(MetricTile, { metric: metric }, metric.key))) }), search.topQueries.length > 0 && (_jsxs("div", { children: [_jsxs("table", { className: "w-full text-xs", "data-testid": "page-performance-queries", children: [_jsx("thead", { children: _jsxs("tr", { className: "text-neutral-grey-50 text-left", children: [_jsx("th", { className: "py-1 font-normal", children: "Top queries" }), _jsx("th", { className: "py-1 text-right font-normal", children: "Clicks" }), _jsx("th", { className: "py-1 text-right font-normal", children: "Impr." }), _jsx("th", { className: "py-1 text-right font-normal", children: "CTR" }), _jsx("th", { className: "py-1 text-right font-normal", children: "Pos." })] }) }), _jsx("tbody", { children: search.topQueries.map((q) => (_jsxs("tr", { className: "border-border-default border-t", children: [_jsx("td", { className: "max-w-0 truncate py-1 pr-1", title: q.query, children: q.query }), _jsx("td", { className: "py-1 text-right", children: formatCount(q.clicks) }), _jsx("td", { className: "py-1 text-right", children: formatCount(q.impressions) }), _jsx("td", { className: "py-1 text-right", children: formatMetricValue(q.ctr, "ratio") }), _jsx("td", { className: "py-1 text-right", children: formatMetricValue(q.position, "position") })] }, q.query))) })] }), _jsx("p", { className: "text-neutral-grey-50 mt-1 text-xs", children: "Top rows only: Google hides rare queries, so these do not add up to the totals." })] })), search.searchConsoleUrl && _jsx(ExternalLinkRow, { href: search.searchConsoleUrl, children: "Open in Search Console" })] })) }));
101
+ }
102
+ /** Behaviour signals from Microsoft Clarity: the last few days only, so no comparison. */
103
+ function ClaritySection({ clarity }) {
104
+ return (_jsx(Section, { title: "Clarity", hint: `Last ${clarity.days} days, no comparison period. Shares are of this page's Clarity sessions.`, children: _jsxs("div", { className: "flex flex-col gap-2", "data-testid": "page-performance-clarity", children: [clarity.status !== "ok" ? (_jsx(StatusAlert, { status: clarity.status, message: clarity.message, source: "Clarity" })) : (_jsxs(_Fragment, { children: [_jsxs("div", { className: "flex flex-col gap-1 text-xs", children: [_jsx(Row, { label: "Sessions", value: formatMetricValue(clarity.sessions, "count") }), _jsx(Row, { label: "Average scroll depth", value: clarity.averageScrollDepthPercent === undefined ? "—" : `${Math.round(clarity.averageScrollDepthPercent)}%` }), clarity.activeTimeSeconds !== undefined && (_jsx(Row, { label: "Active time", value: formatMetricValue(clarity.activeTimeSeconds, "seconds") })), clarity.signals.map((signal) => (_jsx("div", { title: signal.definition, children: _jsx(Row, { label: signal.label, value: signal.sessionsPercent === undefined
105
+ ? formatMetricValue(signal.count, "count")
106
+ : `${formatMetricValue(signal.sessionsPercent / 100, "ratio")} of sessions` }) }, signal.key)))] }), clarity.notes.map((note) => (_jsx("p", { className: "text-neutral-grey-50 text-xs", children: note }, note)))] })), _jsxs("div", { className: "flex flex-wrap gap-3", children: [clarity.heatmapUrl && _jsx(ExternalLinkRow, { href: clarity.heatmapUrl, children: "Heatmap" }), clarity.recordingsUrl && _jsx(ExternalLinkRow, { href: clarity.recordingsUrl, children: "Recordings" })] })] }) }));
107
+ }
108
+ function Row({ label, value }) {
109
+ return (_jsxs("div", { className: "flex justify-between gap-2", children: [_jsx("span", { children: label }), _jsx("span", { children: value })] }));
110
+ }
111
+ function Quality({ report }) {
112
+ const notes = report.quality.notes;
113
+ const timeZoneNote = report.window && !report.window.timeZoneResolved
114
+ ? "Dates are shown in UTC; the property's time zone is unknown on this server."
115
+ : null;
116
+ if (notes.length === 0 && !timeZoneNote)
117
+ return null;
118
+ return (_jsxs(Alert, { variant: "info", children: [_jsx(Info, { className: "h-4 w-4", strokeWidth: 1.5 }), _jsx(AlertTitle, { children: "About these numbers" }), _jsx(AlertDescription, { children: _jsxs("ul", { className: "list-disc pl-4", children: [notes.map((note) => (_jsx("li", { children: note }, note))), timeZoneNote && _jsx("li", { children: timeZoneNote })] }) })] }));
119
+ }
120
+ function StatusAlert({ status, message, source, }) {
121
+ const title = status === "not-configured"
122
+ ? `${source} is not set up for this site`
123
+ : status === "no-url"
124
+ ? "This page has no public URL"
125
+ : status === "no-data"
126
+ ? `${source} has no data for this page`
127
+ : `${source} is unavailable`;
128
+ return (_jsxs(Alert, { variant: status === "error" ? "destructive" : status === "no-data" ? "default" : "warning", children: [_jsx(AlertTitle, { children: title }), message && _jsx(AlertDescription, { children: message })] }));
129
+ }
130
+ function Footer({ report }) {
131
+ return (_jsxs("div", { className: "text-neutral-grey-50 flex flex-col gap-1 border-t pt-2 text-xs", children: [report.page?.pageUrls && report.page.pageUrls.length > 0 && (_jsxs("div", { title: report.page.pageUrls.join("\n"), children: ["Matched URL: ", _jsx("span", { className: "break-all", children: report.page.pageUrls[0] }), report.page.host && _jsxs(_Fragment, { children: [" on host ", report.page.host] })] })), report.window?.lastCompleteDay && (_jsxs("div", { children: ["Data through ", formatDate(report.window.lastCompleteDay), " (today and yesterday are still being processed)."] })), report.ga4ReportUrl && _jsx(ExternalLinkRow, { href: report.ga4ReportUrl, children: "Open Google Analytics" })] }));
132
+ }
133
+ function ExternalLinkRow({ href, children }) {
134
+ return (_jsxs("a", { href: href, target: "_blank", rel: "noopener noreferrer", className: "text-highlight-100 inline-flex items-center gap-1 text-xs hover:underline", children: [children, _jsx(ExternalLink, { className: "h-3 w-3", strokeWidth: 1.5 })] }));
135
+ }
136
+ function Section({ title, hint, children }) {
137
+ return (_jsxs("section", { className: "flex flex-col gap-2", children: [_jsxs("div", { children: [_jsx("h3", { className: "text-xs font-medium uppercase tracking-wide", children: title }), hint && _jsx("p", { className: "text-neutral-grey-50 text-xs", children: hint })] }), children] }));
138
+ }
139
+ function EmptyState({ children }) {
140
+ return _jsx("div", { className: "text-neutral-grey-50 py-4 text-center text-xs", children: children });
141
+ }
142
+ //# sourceMappingURL=PagePerformance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"PagePerformance.js","sourceRoot":"","sources":["../../../../src/editor/sidebar/analytics/PagePerformance.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { AnalyticsMetric } from "../../services/analyticsService";
2
+ /** "No data" (undefined) is shown as an em dash, never as 0. */
3
+ export declare function formatMetricValue(value: number | undefined | null, unit: AnalyticsMetric["unit"]): string;
4
+ export declare function formatDuration(seconds: number): string;
5
+ export declare function formatChange(changePercent: number | undefined | null): string | null;
6
+ /** For average position a falling number is an improvement. */
7
+ export declare function changeTone(metric: Pick<AnalyticsMetric, "changePercent" | "unit">): "up" | "down" | "flat";
8
+ export declare function formatDate(isoDate: string | undefined): string;
9
+ export declare function formatCount(value: number): string;
10
+ export declare function share(value: number, total: number): number;
@@ -0,0 +1,57 @@
1
+ const integer = new Intl.NumberFormat("en-US", { maximumFractionDigits: 0 });
2
+ const decimal = new Intl.NumberFormat("en-US", { maximumFractionDigits: 1 });
3
+ /** "No data" (undefined) is shown as an em dash, never as 0. */
4
+ export function formatMetricValue(value, unit) {
5
+ if (value === undefined || value === null || Number.isNaN(value))
6
+ return "—";
7
+ switch (unit) {
8
+ case "seconds":
9
+ return formatDuration(value);
10
+ case "ratio":
11
+ return `${decimal.format(value * 100)}%`;
12
+ case "position":
13
+ return decimal.format(value);
14
+ default:
15
+ return integer.format(value);
16
+ }
17
+ }
18
+ export function formatDuration(seconds) {
19
+ if (seconds < 60)
20
+ return `${Math.round(seconds)}s`;
21
+ const minutes = Math.floor(seconds / 60);
22
+ const rest = Math.round(seconds % 60);
23
+ return rest === 0 ? `${minutes}m` : `${minutes}m ${rest}s`;
24
+ }
25
+ export function formatChange(changePercent) {
26
+ if (changePercent === undefined || changePercent === null)
27
+ return null;
28
+ const sign = changePercent > 0 ? "+" : "";
29
+ return `${sign}${decimal.format(changePercent)}%`;
30
+ }
31
+ /** For average position a falling number is an improvement. */
32
+ export function changeTone(metric) {
33
+ const change = metric.changePercent;
34
+ if (change === undefined || change === null || Math.abs(change) < 0.5)
35
+ return "flat";
36
+ const better = metric.unit === "position" ? change < 0 : change > 0;
37
+ return better ? "up" : "down";
38
+ }
39
+ export function formatDate(isoDate) {
40
+ if (!isoDate)
41
+ return "";
42
+ const [year, month, day] = isoDate.split("-").map(Number);
43
+ if (!year || !month || !day)
44
+ return isoDate;
45
+ return new Date(Date.UTC(year, month - 1, day)).toLocaleDateString(undefined, {
46
+ month: "short",
47
+ day: "numeric",
48
+ timeZone: "UTC",
49
+ });
50
+ }
51
+ export function formatCount(value) {
52
+ return integer.format(value);
53
+ }
54
+ export function share(value, total) {
55
+ return total > 0 ? Math.round((value / total) * 100) : 0;
56
+ }
57
+ //# sourceMappingURL=analyticsFormat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analyticsFormat.js","sourceRoot":"","sources":["../../../../src/editor/sidebar/analytics/analyticsFormat.ts"],"names":[],"mappings":"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"}
@@ -8,7 +8,11 @@ type PublishDialogProps = DialogProps<PublishItemOperation | null>;
8
8
  * not yet published, so datasource, layout and media changes go out with the
9
9
  * page. An "Include subitems" option additionally publishes everything below
10
10
  * the page; related items that the deep publish already covers are then left
11
- * out of the batch. Per-row workflow commands act inline; the list refreshes
11
+ * out of the batch. Every row the batch would publish has a checkbox, so the
12
+ * user can leave the page or single related items out; deselecting the page
13
+ * also turns off "Include subitems". Rows that cannot be chosen (already
14
+ * published, blocked, covered by the subitems) show a disabled checkbox with
15
+ * the reason. Per-row workflow commands act inline; the list refreshes
12
16
  * in place as workboxItems updates and is shown with the current item first,
13
17
  * then related items by template and item path. A live summary explains
14
18
  * which items will stay behind, why, and what visitors will see, and a hint
@@ -13,8 +13,8 @@ import { Checkbox } from "../../components/ui/checkbox";
13
13
  import { StyledDialogTitle } from "../../components/ui/styled-dialog-title";
14
14
  import { DynamicRenderingsPublishWarning } from "./DynamicRenderingsPublishWarning";
15
15
  import { Spinner } from "./Spinner";
16
- import { WorkboxItemsTable } from "./WorkboxItemsTable";
17
- import { findCurrentWorkboxItem, getPublishReadiness, getPublishValidationSummary, sortWorkboxItemsForPublish, } from "./publishReadiness";
16
+ import { WorkboxItemsTable, } from "./WorkboxItemsTable";
17
+ import { findCurrentWorkboxItem, getPublishReadiness, getPublishReasonText, getPublishValidationSummary, getWorkboxItemKey, sortWorkboxItemsForPublish, } from "./publishReadiness";
18
18
  import { PublishReadinessSummary } from "./PublishReadinessSummary";
19
19
  import { usePublishingItem } from "./usePublishingItem";
20
20
  /**
@@ -24,7 +24,11 @@ import { usePublishingItem } from "./usePublishingItem";
24
24
  * not yet published, so datasource, layout and media changes go out with the
25
25
  * page. An "Include subitems" option additionally publishes everything below
26
26
  * the page; related items that the deep publish already covers are then left
27
- * out of the batch. Per-row workflow commands act inline; the list refreshes
27
+ * out of the batch. Every row the batch would publish has a checkbox, so the
28
+ * user can leave the page or single related items out; deselecting the page
29
+ * also turns off "Include subitems". Rows that cannot be chosen (already
30
+ * published, blocked, covered by the subitems) show a disabled checkbox with
31
+ * the reason. Per-row workflow commands act inline; the list refreshes
28
32
  * in place as workboxItems updates and is shown with the current item first,
29
33
  * then related items by template and item path. A live summary explains
30
34
  * which items will stay behind, why, and what visitors will see, and a hint
@@ -36,6 +40,9 @@ export function PublishDialog({ onClose }) {
36
40
  const editContext = useEditContext();
37
41
  const [isPublishing, setIsPublishing] = useState(false);
38
42
  const [includeSubitems, setIncludeSubitems] = useState(false);
43
+ // Deselected row keys rather than selected ones, so rows that appear or
44
+ // become ready while the dialog is open are included by default.
45
+ const [excludedKeys, setExcludedKeys] = useState(() => new Set());
39
46
  const publishingItem = usePublishingItem(editContext?.item);
40
47
  const currentPublishItem = publishingItem.item;
41
48
  const currentPublishDescriptor = publishingItem.isEmbedded
@@ -46,13 +53,71 @@ export function PublishDialog({ onClose }) {
46
53
  if (!editContext)
47
54
  return null;
48
55
  const currentPublishWorkboxItem = findCurrentWorkboxItem(workboxItems, currentPublishDescriptor);
56
+ // A page without a row of its own cannot be deselected.
57
+ const pageKey = currentPublishWorkboxItem
58
+ ? getWorkboxItemKey(currentPublishWorkboxItem.item)
59
+ : undefined;
60
+ const pageSelected = !pageKey || !excludedKeys.has(pageKey);
61
+ // The deep publish hangs off the page, so it goes when the page does.
62
+ const publishSubitems = includeSubitems && pageSelected;
49
63
  const readiness = getPublishReadiness({
50
64
  workboxItems,
51
65
  currentItem: currentPublishDescriptor,
52
66
  pagePath: currentPublishItem?.path || currentPublishWorkboxItem?.path,
53
- includeSubitems,
67
+ includeSubitems: publishSubitems,
68
+ excludedKeys,
54
69
  });
55
70
  const blockedByWorkflowState = readiness.currentPage?.blockedByWorkflow ?? false;
71
+ const hasSelection = pageSelected || readiness.batchDescriptors.length > 0;
72
+ const entriesByKey = new Map(readiness.entries.map((entry) => [entry.key, entry]));
73
+ const selection = {
74
+ getState: (row) => {
75
+ const key = getWorkboxItemKey(row.item);
76
+ if (key === pageKey) {
77
+ return blockedByWorkflowState
78
+ ? {
79
+ checked: false,
80
+ selectable: false,
81
+ title: "Move this page to a final workflow state to publish it.",
82
+ }
83
+ : { checked: pageSelected, selectable: true };
84
+ }
85
+ const entry = entriesByKey.get(key);
86
+ if (!entry)
87
+ return { checked: false, selectable: false };
88
+ if (entry.coveredBySubitems) {
89
+ return {
90
+ checked: true,
91
+ selectable: false,
92
+ title: "Published with the subitems of this page.",
93
+ };
94
+ }
95
+ if (entry.selectable) {
96
+ return { checked: !entry.excluded, selectable: true };
97
+ }
98
+ return {
99
+ checked: false,
100
+ selectable: false,
101
+ title: entry.item.isPublished
102
+ ? "Already published."
103
+ : entry.reason
104
+ ? getPublishReasonText(entry.reason, entry.affectedTargets, entry.targetCount)
105
+ : "Not ready to publish.",
106
+ };
107
+ },
108
+ onChange: (rows, checked) => setExcludedKeys((current) => {
109
+ const next = new Set(current);
110
+ rows.forEach((row) => {
111
+ const key = getWorkboxItemKey(row.item);
112
+ if (checked)
113
+ next.delete(key);
114
+ else
115
+ next.add(key);
116
+ });
117
+ return next;
118
+ }),
119
+ disabled: isPublishing || editContext.readonly,
120
+ };
56
121
  const validationSummary = getPublishValidationSummary(workboxItems, editContext.validationResult);
57
122
  const openValidationSidebar = () => {
58
123
  editContext.openSidebar("validation");
@@ -65,16 +130,21 @@ export function PublishDialog({ onClose }) {
65
130
  currentPublishItem?.canWriteItem !== false &&
66
131
  currentPublishItem?.canWriteLanguage !== false &&
67
132
  !editContext.readonly &&
68
- !blockedByWorkflowState;
133
+ !blockedByWorkflowState &&
134
+ hasSelection;
69
135
  const publishButtonTooltip = !currentPublishDescriptor
70
136
  ? "No current item is available to publish."
71
137
  : blockedByWorkflowState
72
138
  ? `Move this item to a final workflow state before publishing${currentPublishWorkboxItem?.workflowState
73
139
  ? ` (currently "${currentPublishWorkboxItem.workflowState}")`
74
140
  : ""}.`
75
- : includeSubitems
76
- ? "Publish the current item and everything below it."
77
- : "Publish the current item.";
141
+ : !hasSelection
142
+ ? "Select at least one item to publish."
143
+ : !pageSelected
144
+ ? "Publish the selected related items."
145
+ : publishSubitems
146
+ ? "Publish the current item and everything below it."
147
+ : "Publish the current item.";
78
148
  const publishCurrentItem = async () => {
79
149
  if (!currentPublishDescriptor || !canPublishCurrentItem)
80
150
  return;
@@ -102,29 +172,38 @@ export function PublishDialog({ onClose }) {
102
172
  workboxItems,
103
173
  currentItem: item.descriptor,
104
174
  pagePath: item.path || currentPublishWorkboxItem?.path,
105
- includeSubitems,
175
+ includeSubitems: publishSubitems,
176
+ excludedKeys,
106
177
  });
107
178
  const relatedItems = batch.batchDescriptors;
108
- const items = [item.descriptor, ...relatedItems];
179
+ const items = pageSelected
180
+ ? [item.descriptor, ...relatedItems]
181
+ : relatedItems;
182
+ if (items.length === 0)
183
+ return;
109
184
  const languages = [
110
185
  ...new Set(items.map((descriptor) => descriptor.language)),
111
186
  ];
112
- const subject = `${item.displayName || item.name}${includeSubitems ? " with subitems" : ""}`;
187
+ const pageName = item.displayName || item.name;
188
+ const subject = `${pageName}${publishSubitems ? " with subitems" : ""}`;
189
+ const relatedText = `${relatedItems.length} related item${relatedItems.length === 1 ? "" : "s"}`;
113
190
  const operation = {
114
191
  type: "publish-item",
115
192
  id: uuid(),
116
193
  date: new Date().toISOString(),
117
- title: relatedItems.length === 0
118
- ? `Publish ${subject}`
119
- : `Publish ${subject} and ${relatedItems.length} related item${relatedItems.length === 1 ? "" : "s"}`,
120
- description: `smart publish of ${items.length} item${items.length === 1 ? "" : "s"}${includeSubitems ? " with subitems" : ""} to ${targetDatabases.length} target(s)`,
194
+ title: !pageSelected
195
+ ? `Publish ${relatedText} of ${pageName}`
196
+ : relatedItems.length === 0
197
+ ? `Publish ${subject}`
198
+ : `Publish ${subject} and ${relatedText}`,
199
+ description: `smart publish of ${items.length} item${items.length === 1 ? "" : "s"}${publishSubitems ? " with subitems" : ""} to ${targetDatabases.length} target(s)`,
121
200
  mainItem: item.descriptor,
122
201
  item: item.descriptor,
123
202
  items,
124
203
  targetDatabases,
125
204
  languages,
126
205
  publishMode: "smart",
127
- includeSubitems,
206
+ includeSubitems: publishSubitems,
128
207
  publishRelatedItems: false,
129
208
  canUndo: false,
130
209
  };
@@ -155,6 +234,8 @@ export function PublishDialog({ onClose }) {
155
234
  ? "One listed item has validation issues."
156
235
  : `${validationSummary.itemCount} listed items have validation issues.` }), _jsxs(AlertDescription, { children: ["Publishing is still possible, but the", " ", validationSummary.issueCount === 1
157
236
  ? "issue"
158
- : `${validationSummary.issueCount} issues`, " ", "will go live as well. Review and fix", " ", validationSummary.issueCount === 1 ? "it" : "them", " in the", " ", _jsx(Button, { variant: "link", className: "h-auto p-0 text-sm font-medium", onClick: openValidationSidebar, "data-testid": "publish-validation-hint-link", children: "Validation sidebar" }), "."] })] })), !publishingItem.isLoading && !publishingItem.error && (_jsx(DynamicRenderingsPublishWarning, { page: currentPublishDescriptor, className: "mb-4" })), _jsx("div", { className: "min-h-[12rem]", children: _jsx(WorkboxItemsTable, { items: workboxItems, isLoading: editContext.isWorkboxLoading, emptyMessage: "No items to publish.", onValidationAction: () => onClose(null) }) })] }), _jsxs(DialogFooter, { className: "mt-auto shrink-0 border-t bg-white px-6 py-4 sm:items-center", children: [_jsxs("label", { className: "flex cursor-pointer items-center gap-3 sm:mr-auto", "data-testid": "publish-dialog-include-subitems-option", children: [_jsx(Checkbox, { checked: includeSubitems, onCheckedChange: (checked) => setIncludeSubitems(!!checked), disabled: isPublishing || editContext.readonly, "data-testid": "publish-dialog-include-subitems" }), _jsxs("span", { children: [_jsx("span", { className: "block text-sm font-medium", children: "Include subitems" }), _jsx("span", { className: "text-2xs text-muted-foreground block", children: "Also publish everything below this page." })] })] }), _jsx(Button, { variant: "outline", onClick: () => onClose(null), children: "Close" }), _jsx(Button, { onClick: publishCurrentItem, disabled: !canPublishCurrentItem, title: publishButtonTooltip, "data-testid": "publish-dialog-submit", children: isPublishing ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { size: "sm" }), " Publishing..."] })) : (_jsxs(_Fragment, { children: [_jsx(Rocket, { className: "h-3.5 w-3.5", strokeWidth: 1 }), "Publish"] })) })] })] }) }));
237
+ : `${validationSummary.issueCount} issues`, " ", "will go live as well. Review and fix", " ", validationSummary.issueCount === 1 ? "it" : "them", " in the", " ", _jsx(Button, { variant: "link", className: "h-auto p-0 text-sm font-medium", onClick: openValidationSidebar, "data-testid": "publish-validation-hint-link", children: "Validation sidebar" }), "."] })] })), !publishingItem.isLoading && !publishingItem.error && (_jsx(DynamicRenderingsPublishWarning, { page: currentPublishDescriptor, className: "mb-4" })), _jsx("div", { className: "min-h-[12rem]", children: _jsx(WorkboxItemsTable, { items: workboxItems, isLoading: editContext.isWorkboxLoading, emptyMessage: "No items to publish.", selection: selection, onValidationAction: () => onClose(null) }) })] }), _jsxs(DialogFooter, { className: "mt-auto shrink-0 border-t bg-white px-6 py-4 sm:items-center", children: [_jsxs("label", { className: "flex cursor-pointer items-center gap-3 sm:mr-auto", "data-testid": "publish-dialog-include-subitems-option", children: [_jsx(Checkbox, { checked: publishSubitems, onCheckedChange: (checked) => setIncludeSubitems(!!checked), disabled: isPublishing || editContext.readonly || !pageSelected, "data-testid": "publish-dialog-include-subitems" }), _jsxs("span", { children: [_jsx("span", { className: "block text-sm font-medium", children: "Include subitems" }), _jsx("span", { className: "text-2xs text-muted-foreground block", children: pageSelected
238
+ ? "Also publish everything below this page."
239
+ : "Select this page to also publish everything below it." })] })] }), _jsx(Button, { variant: "outline", onClick: () => onClose(null), children: "Close" }), _jsx(Button, { onClick: publishCurrentItem, disabled: !canPublishCurrentItem, title: publishButtonTooltip, "data-testid": "publish-dialog-submit", children: isPublishing ? (_jsxs(_Fragment, { children: [_jsx(Spinner, { size: "sm" }), " Publishing..."] })) : (_jsxs(_Fragment, { children: [_jsx(Rocket, { className: "h-3.5 w-3.5", strokeWidth: 1 }), "Publish"] })) })] })] }) }));
159
240
  }
160
241
  //# sourceMappingURL=PublishDialog.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PublishDialog.js","sourceRoot":"","sources":["../../../src/editor/ui/PublishDialog.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PublishDialog.js","sourceRoot":"","sources":["../../../src/editor/ui/PublishDialog.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAC;;AAEb,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAC1C,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAE/B,OAAO,EAAe,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,4BAA4B,CAAC;AAErE,OAAO,EACL,MAAM,EACN,aAAa,EACb,YAAY,GACb,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,MAAM,2BAA2B,CAAC;AAChF,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,QAAQ,EAAE,MAAM,8BAA8B,CAAC;AACxD,OAAO,EAAE,iBAAiB,EAAE,MAAM,yCAAyC,CAAC;AAC5E,OAAO,EAAE,+BAA+B,EAAE,MAAM,mCAAmC,CAAC;AACpF,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EACL,iBAAiB,GAElB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EACL,sBAAsB,EACtB,mBAAmB,EACnB,oBAAoB,EACpB,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAIxD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,aAAa,CAAC,EAAE,OAAO,EAAsB;IAC3D,MAAM,WAAW,GAAG,cAAc,EAAE,CAAC;IACrC,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxD,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC9D,wEAAwE;IACxE,iEAAiE;IACjE,MAAM,CAAC,YAAY,EAAE,eAAe,CAAC,GAAG,QAAQ,CAC9C,GAAG,EAAE,CAAC,IAAI,GAAG,EAAE,CAChB,CAAC;IACF,MAAM,cAAc,GAAG,iBAAiB,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAE5D,MAAM,kBAAkB,GAAG,cAAc,CAAC,IAAI,CAAC;IAC/C,MAAM,wBAAwB,GAAG,cAAc,CAAC,UAAU;QACxD,CAAC,CAAC,kBAAkB,EAAE,UAAU;QAChC,CAAC,CAAC,WAAW,EAAE,qBAAqB,CAAC;IACvC,MAAM,oBAAoB,GAAG,WAAW,EAAE,YAAY,CAAC;IACvD,MAAM,YAAY,GAAG,OAAO,CAC1B,GAAG,EAAE,CACH,0BAA0B,CACxB,oBAAoB,IAAI,EAAE,EAC1B,wBAAwB,CACzB,EACH,CAAC,oBAAoB,EAAE,wBAAwB,CAAC,CACjD,CAAC;IAEF,IAAI,CAAC,WAAW;QAAE,OAAO,IAAI,CAAC;IAE9B,MAAM,yBAAyB,GAAG,sBAAsB,CACtD,YAAY,EACZ,wBAAwB,CACzB,CAAC;IAEF,wDAAwD;IACxD,MAAM,OAAO,GAAG,yBAAyB;QACvC,CAAC,CAAC,iBAAiB,CAAC,yBAAyB,CAAC,IAAI,CAAC;QACnD,CAAC,CAAC,SAAS,CAAC;IACd,MAAM,YAAY,GAAG,CAAC,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC5D,sEAAsE;IACtE,MAAM,eAAe,GAAG,eAAe,IAAI,YAAY,CAAC;IAExD,MAAM,SAAS,GAAG,mBAAmB,CAAC;QACpC,YAAY;QACZ,WAAW,EAAE,wBAAwB;QACrC,QAAQ,EAAE,kBAAkB,EAAE,IAAI,IAAI,yBAAyB,EAAE,IAAI;QACrE,eAAe,EAAE,eAAe;QAChC,YAAY;KACb,CAAC,CAAC;IACH,MAAM,sBAAsB,GAC1B,SAAS,CAAC,WAAW,EAAE,iBAAiB,IAAI,KAAK,CAAC;IACpD,MAAM,YAAY,GAAG,YAAY,IAAI,SAAS,CAAC,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC;IAC3E,MAAM,YAAY,GAAG,IAAI,GAAG,CAC1B,SAAS,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CACrD,CAAC;IAEF,MAAM,SAAS,GAAyB;QACtC,QAAQ,EAAE,CAAC,GAAG,EAAE,EAAE;YAChB,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACxC,IAAI,GAAG,KAAK,OAAO,EAAE,CAAC;gBACpB,OAAO,sBAAsB;oBAC3B,CAAC,CAAC;wBACE,OAAO,EAAE,KAAK;wBACd,UAAU,EAAE,KAAK;wBACjB,KAAK,EAAE,yDAAyD;qBACjE;oBACH,CAAC,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YAClD,CAAC;YACD,MAAM,KAAK,GAAG,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACpC,IAAI,CAAC,KAAK;gBAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC;YACzD,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;gBAC5B,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,UAAU,EAAE,KAAK;oBACjB,KAAK,EAAE,2CAA2C;iBACnD,CAAC;YACJ,CAAC;YACD,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;gBACrB,OAAO,EAAE,OAAO,EAAE,CAAC,KAAK,CAAC,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;YACxD,CAAC;YACD,OAAO;gBACL,OAAO,EAAE,KAAK;gBACd,UAAU,EAAE,KAAK;gBACjB,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,WAAW;oBAC3B,CAAC,CAAC,oBAAoB;oBACtB,CAAC,CAAC,KAAK,CAAC,MAAM;wBACZ,CAAC,CAAC,oBAAoB,CAClB,KAAK,CAAC,MAAM,EACZ,KAAK,CAAC,eAAe,EACrB,KAAK,CAAC,WAAW,CAClB;wBACH,CAAC,CAAC,uBAAuB;aAC9B,CAAC;QACJ,CAAC;QACD,QAAQ,EAAE,CAAC,IAAI,EAAE,OAAO,EAAE,EAAE,CAC1B,eAAe,CAAC,CAAC,OAAO,EAAE,EAAE;YAC1B,MAAM,IAAI,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,CAAC;YAC9B,IAAI,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,EAAE;gBACnB,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;gBACxC,IAAI,OAAO;oBAAE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;;oBACzB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACrB,CAAC,CAAC,CAAC;YACH,OAAO,IAAI,CAAC;QACd,CAAC,CAAC;QACJ,QAAQ,EAAE,YAAY,IAAI,WAAW,CAAC,QAAQ;KAC/C,CAAC;IACF,MAAM,iBAAiB,GAAG,2BAA2B,CACnD,YAAY,EACZ,WAAW,CAAC,gBAAgB,CAC7B,CAAC;IAEF,MAAM,qBAAqB,GAAG,GAAG,EAAE;QACjC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChB,CAAC,CAAC;IAEF,MAAM,qBAAqB,GACzB,CAAC,CAAC,wBAAwB;QAC1B,CAAC,YAAY;QACb,CAAC,cAAc,CAAC,SAAS;QACzB,CAAC,cAAc,CAAC,KAAK;QACrB,kBAAkB,EAAE,YAAY,KAAK,KAAK;QAC1C,kBAAkB,EAAE,gBAAgB,KAAK,KAAK;QAC9C,CAAC,WAAW,CAAC,QAAQ;QACrB,CAAC,sBAAsB;QACvB,YAAY,CAAC;IAEf,MAAM,oBAAoB,GAAG,CAAC,wBAAwB;QACpD,CAAC,CAAC,0CAA0C;QAC5C,CAAC,CAAC,sBAAsB;YACtB,CAAC,CAAC,6DACE,yBAAyB,EAAE,aAAa;gBACtC,CAAC,CAAC,gBAAgB,yBAAyB,CAAC,aAAa,IAAI;gBAC7D,CAAC,CAAC,EACN,GAAG;YACL,CAAC,CAAC,CAAC,YAAY;gBACb,CAAC,CAAC,sCAAsC;gBACxC,CAAC,CAAC,CAAC,YAAY;oBACb,CAAC,CAAC,qCAAqC;oBACvC,CAAC,CAAC,eAAe;wBACf,CAAC,CAAC,mDAAmD;wBACrD,CAAC,CAAC,2BAA2B,CAAC;IAExC,MAAM,kBAAkB,GAAG,KAAK,IAAI,EAAE;QACpC,IAAI,CAAC,wBAAwB,IAAI,CAAC,qBAAqB;YAAE,OAAO;QAEhE,eAAe,CAAC,IAAI,CAAC,CAAC;QACtB,IAAI,CAAC;YACH,MAAM,IAAI,GACR,kBAAkB;gBAClB,CAAC,MAAM,WAAW,CAAC,eAAe,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC,CAAC;YACxE,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;gBACnD,OAAO;YACT,CAAC;YAED,MAAM,MAAM,GAAG,MAAM,uBAAuB,CAAC,IAAI,CAAC,UAAU,EAAE;gBAC5D,wBAAwB,EAAE,IAAI;aAC/B,CAAC,CAAC;YACH,IAAI,MAAM,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;gBAC9C,KAAK,CAAC,KAAK,CACT,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,IAAI,iCAAiC,CACtE,CAAC;gBACF,OAAO;YACT,CAAC;YAED,MAAM,eAAe,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,GAAG,CAC/D,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAClC,CAAC;YACF,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACjC,KAAK,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;gBAClE,OAAO;YACT,CAAC;YAED,MAAM,KAAK,GAAG,mBAAmB,CAAC;gBAChC,YAAY;gBACZ,WAAW,EAAE,IAAI,CAAC,UAAU;gBAC5B,QAAQ,EAAE,IAAI,CAAC,IAAI,IAAI,yBAAyB,EAAE,IAAI;gBACtD,eAAe,EAAE,eAAe;gBAChC,YAAY;aACb,CAAC,CAAC;YACH,MAAM,YAAY,GAAG,KAAK,CAAC,gBAAgB,CAAC;YAC5C,MAAM,KAAK,GAAG,YAAY;gBACxB,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,YAAY,CAAC;gBACpC,CAAC,CAAC,YAAY,CAAC;YACjB,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YAC/B,MAAM,SAAS,GAAG;gBAChB,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;aAC3D,CAAC;YAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,IAAI,IAAI,CAAC,IAAI,CAAC;YAC/C,MAAM,OAAO,GAAG,GAAG,QAAQ,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACxE,MAAM,WAAW,GAAG,GAAG,YAAY,CAAC,MAAM,gBACxC,YAAY,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GACnC,EAAE,CAAC;YACH,MAAM,SAAS,GAAyB;gBACtC,IAAI,EAAE,cAAc;gBACpB,EAAE,EAAE,IAAI,EAAE;gBACV,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBAC9B,KAAK,EAAE,CAAC,YAAY;oBAClB,CAAC,CAAC,WAAW,WAAW,OAAO,QAAQ,EAAE;oBACzC,CAAC,CAAC,YAAY,CAAC,MAAM,KAAK,CAAC;wBACzB,CAAC,CAAC,WAAW,OAAO,EAAE;wBACtB,CAAC,CAAC,WAAW,OAAO,QAAQ,WAAW,EAAE;gBAC7C,WAAW,EAAE,oBAAoB,KAAK,CAAC,MAAM,QAC3C,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAC5B,GAAG,eAAe,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC,EAAE,OACxC,eAAe,CAAC,MAClB,YAAY;gBACZ,QAAQ,EAAE,IAAI,CAAC,UAAU;gBACzB,IAAI,EAAE,IAAI,CAAC,UAAU;gBACrB,KAAK;gBACL,eAAe;gBACf,SAAS;gBACT,WAAW,EAAE,OAAO;gBACpB,eAAe,EAAE,eAAe;gBAChC,mBAAmB,EAAE,KAAK;gBAC1B,OAAO,EAAE,KAAK;aACf,CAAC;YAEF,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,UAAU,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC;YACrE,uEAAuE;YACvE,yEAAyE;YACzE,OAAO,CAAC,QAAQ,CAAC,CAAC;QACpB,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAC;QAC1C,CAAC;gBAAS,CAAC;YACT,eAAe,CAAC,KAAK,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,CAAC;IAEF,OAAO,CACL,KAAC,MAAM,IACL,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,CAAC,IAAI,EAAE,EAAE;YACrB,IAAI,CAAC,IAAI;gBAAE,OAAO,CAAC,IAAI,CAAC,CAAC;QAC3B,CAAC,YAED,MAAC,aAAa,IACZ,SAAS,EAAC,iFAAiF,EAC3F,KAAK,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,EAC5B,eAAe,EAAE,IAAI,iBACT,gBAAgB,aAE5B,KAAC,iBAAiB,IAChB,IAAI,EAAE,KAAC,MAAM,IAAC,WAAW,EAAE,CAAC,GAAI,EAChC,KAAK,EAAC,SAAS,EACf,QAAQ,EAAE,kBAAkB,EAAE,WAAW,IAAI,kBAAkB,EAAE,IAAI,GACrE,EAEF,eAAK,SAAS,EAAC,wDAAwD,aACpE,cAAc,CAAC,UAAU,IAAI,CAC5B,YAAG,SAAS,EAAC,oCAAoC,YAC9C,cAAc,CAAC,KAAK;gCACnB,CAAC,cAAc,CAAC,SAAS;oCACvB,CAAC,CAAC,yCAAyC;oCAC3C,CAAC,CAAC,2HAA2H,CAAC,GAChI,CACL,EACA,CAAC,cAAc,CAAC,SAAS;4BACxB,CAAC,cAAc,CAAC,KAAK;4BACrB,CAAC,WAAW,CAAC,gBAAgB,IAAI,CAC/B,KAAC,uBAAuB,IAAC,SAAS,EAAE,SAAS,EAAE,SAAS,EAAC,MAAM,GAAG,CACnE,EACF,CAAC,cAAc,CAAC,SAAS;4BACxB,CAAC,cAAc,CAAC,KAAK;4BACrB,CAAC,WAAW,CAAC,gBAAgB;4BAC7B,iBAAiB,CAAC,SAAS,GAAG,CAAC,IAAI,CACjC,MAAC,KAAK,IACJ,OAAO,EAAC,SAAS,EACjB,SAAS,EAAC,MAAM,iBACJ,yBAAyB,aAErC,KAAC,WAAW,IAAC,WAAW,EAAE,GAAG,EAAE,SAAS,EAAC,SAAS,GAAG,EACrD,KAAC,UAAU,IAAC,SAAS,EAAC,cAAc,YACjC,iBAAiB,CAAC,SAAS,KAAK,CAAC;wCAChC,CAAC,CAAC,wCAAwC;wCAC1C,CAAC,CAAC,GAAG,iBAAiB,CAAC,SAAS,uCAAuC,GAC9D,EACb,MAAC,gBAAgB,wDACuB,GAAG,EACxC,iBAAiB,CAAC,UAAU,KAAK,CAAC;4CACjC,CAAC,CAAC,OAAO;4CACT,CAAC,CAAC,GAAG,iBAAiB,CAAC,UAAU,SAAS,EAAE,GAAG,0CACZ,GAAG,EACvC,iBAAiB,CAAC,UAAU,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,aAAS,GAAG,EAC/D,KAAC,MAAM,IACL,OAAO,EAAC,MAAM,EACd,SAAS,EAAC,gCAAgC,EAC1C,OAAO,EAAE,qBAAqB,iBAClB,8BAA8B,mCAGnC,SAEQ,IACb,CACT,EACF,CAAC,cAAc,CAAC,SAAS,IAAI,CAAC,cAAc,CAAC,KAAK,IAAI,CACrD,KAAC,+BAA+B,IAC9B,IAAI,EAAE,wBAAwB,EAC9B,SAAS,EAAC,MAAM,GAChB,CACH,EACD,cAAK,SAAS,EAAC,eAAe,YAC5B,KAAC,iBAAiB,IAChB,KAAK,EAAE,YAAY,EACnB,SAAS,EAAE,WAAW,CAAC,gBAAgB,EACvC,YAAY,EAAC,sBAAsB,EACnC,SAAS,EAAE,SAAS,EACpB,kBAAkB,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,GACvC,GACE,IACF,EAEN,MAAC,YAAY,IAAC,SAAS,EAAC,8DAA8D,aACpF,iBACE,SAAS,EAAC,mDAAmD,iBACjD,wCAAwC,aAEpD,KAAC,QAAQ,IACP,OAAO,EAAE,eAAe,EACxB,eAAe,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,kBAAkB,CAAC,CAAC,CAAC,OAAO,CAAC,EAC3D,QAAQ,EAAE,YAAY,IAAI,WAAW,CAAC,QAAQ,IAAI,CAAC,YAAY,iBACnD,iCAAiC,GAC7C,EACF,2BACE,eAAM,SAAS,EAAC,2BAA2B,iCAEpC,EACP,eAAM,SAAS,EAAC,sCAAsC,YACnD,YAAY;gDACX,CAAC,CAAC,0CAA0C;gDAC5C,CAAC,CAAC,uDAAuD,GACtD,IACF,IACD,EACR,KAAC,MAAM,IAAC,OAAO,EAAC,SAAS,EAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,sBAE7C,EACT,KAAC,MAAM,IACL,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,CAAC,qBAAqB,EAChC,KAAK,EAAE,oBAAoB,iBACf,uBAAuB,YAElC,YAAY,CAAC,CAAC,CAAC,CACd,8BACE,KAAC,OAAO,IAAC,IAAI,EAAC,IAAI,GAAG,sBACpB,CACJ,CAAC,CAAC,CAAC,CACF,8BACE,KAAC,MAAM,IAAC,SAAS,EAAC,aAAa,EAAC,WAAW,EAAE,CAAC,GAAI,eAEjD,CACJ,GACM,IACI,IACD,GACT,CACV,CAAC;AACJ,CAAC"}
@@ -1,16 +1,31 @@
1
1
  import { type ReactNode } from "react";
2
2
  import { WorkboxItem } from "../../types";
3
+ export type WorkboxItemSelectionState = {
4
+ checked: boolean;
5
+ /** False shows the checkbox disabled in its fixed state, explained by `title`. */
6
+ selectable: boolean;
7
+ title?: string;
8
+ };
9
+ /** Adds a leading checkbox column; the header toggles every selectable row. */
10
+ export type WorkboxItemSelection = {
11
+ getState: (item: WorkboxItem) => WorkboxItemSelectionState;
12
+ onChange: (items: WorkboxItem[], checked: boolean) => void;
13
+ /** Disables every checkbox, e.g. while the selection is being submitted. */
14
+ disabled?: boolean;
15
+ };
3
16
  /**
4
17
  * Presentational table of workbox items shared by the Workbox sidebar and the
5
18
  * Publish dialog. Renders the Item / State / Actions / Validation columns,
6
19
  * lazily resolves missing item icons, and exposes per-row workflow command
7
- * buttons. Loading and empty states are handled internally.
20
+ * buttons. An optional selection adds a leading checkbox per row. Loading and
21
+ * empty states are handled internally.
8
22
  */
9
- export declare function WorkboxItemsTable({ items, isLoading, emptyMessage, headerNotice, onAfterWorkflowCommand, onValidationAction, }: {
23
+ export declare function WorkboxItemsTable({ items, isLoading, emptyMessage, headerNotice, selection, onAfterWorkflowCommand, onValidationAction, }: {
10
24
  items: WorkboxItem[];
11
25
  isLoading: boolean;
12
26
  emptyMessage: string;
13
27
  headerNotice?: ReactNode;
28
+ selection?: WorkboxItemSelection;
14
29
  onAfterWorkflowCommand?: () => void;
15
30
  /**
16
31
  * Fired after an action in a row's validation popover (fix with agent,