@codeandink/payload-ink 0.0.7-alpha.2 → 0.0.7-alpha.4

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 (72) hide show
  1. package/dist/collections/Actions.js +1 -1
  2. package/dist/collections/Actions.js.map +1 -1
  3. package/dist/collections/Audits.js +1 -1
  4. package/dist/collections/Audits.js.map +1 -1
  5. package/dist/collections/Insights.js +1 -1
  6. package/dist/collections/Insights.js.map +1 -1
  7. package/dist/collections/OnboardingProfile.d.ts.map +1 -1
  8. package/dist/collections/OnboardingProfile.js +37 -0
  9. package/dist/collections/OnboardingProfile.js.map +1 -1
  10. package/dist/components/AnalyticsPanel.d.ts +3 -1
  11. package/dist/components/AnalyticsPanel.d.ts.map +1 -1
  12. package/dist/components/AnalyticsPanel.js +18 -15
  13. package/dist/components/AnalyticsPanel.js.map +1 -1
  14. package/dist/components/BarInTable.d.ts +9 -0
  15. package/dist/components/BarInTable.d.ts.map +1 -0
  16. package/dist/components/BarInTable.js +17 -0
  17. package/dist/components/BarInTable.js.map +1 -0
  18. package/dist/components/DigestPanel.d.ts +3 -1
  19. package/dist/components/DigestPanel.d.ts.map +1 -1
  20. package/dist/components/DigestPanel.js +19 -16
  21. package/dist/components/DigestPanel.js.map +1 -1
  22. package/dist/components/EnquiriesDashboard.d.ts +2 -0
  23. package/dist/components/EnquiriesDashboard.d.ts.map +1 -0
  24. package/dist/components/EnquiriesDashboard.js +162 -0
  25. package/dist/components/EnquiriesDashboard.js.map +1 -0
  26. package/dist/components/InkNavPanel.d.ts +8 -0
  27. package/dist/components/InkNavPanel.d.ts.map +1 -0
  28. package/dist/components/InkNavPanel.js +78 -0
  29. package/dist/components/InkNavPanel.js.map +1 -0
  30. package/dist/components/IntelligenceTabs.d.ts +2 -0
  31. package/dist/components/IntelligenceTabs.d.ts.map +1 -0
  32. package/dist/components/{AuditsPanel.js → IntelligenceTabs.js} +29 -16
  33. package/dist/components/IntelligenceTabs.js.map +1 -0
  34. package/dist/components/IntelligenceWidget.d.ts +6 -0
  35. package/dist/components/IntelligenceWidget.d.ts.map +1 -0
  36. package/dist/components/IntelligenceWidget.js +53 -0
  37. package/dist/components/IntelligenceWidget.js.map +1 -0
  38. package/dist/components/Sparkline.d.ts +10 -0
  39. package/dist/components/Sparkline.d.ts.map +1 -0
  40. package/dist/components/Sparkline.js +21 -0
  41. package/dist/components/Sparkline.js.map +1 -0
  42. package/dist/components/index.d.ts +6 -1
  43. package/dist/components/index.d.ts.map +1 -1
  44. package/dist/components/index.js +13 -3
  45. package/dist/components/index.js.map +1 -1
  46. package/dist/components/layout.d.ts +2 -0
  47. package/dist/components/layout.d.ts.map +1 -0
  48. package/dist/components/layout.js +7 -0
  49. package/dist/components/layout.js.map +1 -0
  50. package/dist/endpoints/analytics.d.ts +1 -0
  51. package/dist/endpoints/analytics.d.ts.map +1 -1
  52. package/dist/endpoints/analytics.js +35 -0
  53. package/dist/endpoints/analytics.js.map +1 -1
  54. package/dist/endpoints/navCounts.d.ts +3 -0
  55. package/dist/endpoints/navCounts.d.ts.map +1 -0
  56. package/dist/endpoints/navCounts.js +33 -0
  57. package/dist/endpoints/navCounts.js.map +1 -0
  58. package/dist/endpoints/sendDigest.d.ts.map +1 -1
  59. package/dist/endpoints/sendDigest.js +81 -46
  60. package/dist/endpoints/sendDigest.js.map +1 -1
  61. package/dist/plugin.d.ts +10 -0
  62. package/dist/plugin.d.ts.map +1 -1
  63. package/dist/plugin.js +37 -7
  64. package/dist/plugin.js.map +1 -1
  65. package/dist/version.d.ts +2 -0
  66. package/dist/version.d.ts.map +1 -0
  67. package/dist/version.js +8 -0
  68. package/dist/version.js.map +1 -0
  69. package/package.json +1 -1
  70. package/dist/components/AuditsPanel.d.ts +0 -2
  71. package/dist/components/AuditsPanel.d.ts.map +0 -1
  72. package/dist/components/AuditsPanel.js.map +0 -1
@@ -0,0 +1,162 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.EnquiriesDashboard = EnquiriesDashboard;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const Sparkline_js_1 = require("./Sparkline.js");
8
+ const BarInTable_js_1 = require("./BarInTable.js");
9
+ const version_js_1 = require("../version.js");
10
+ const layout_js_1 = require("./layout.js");
11
+ const ink = {
12
+ bg: '#0a0a0a',
13
+ surface: '#141414',
14
+ surfaceElev: '#1c1c1c',
15
+ border: '#262626',
16
+ borderStrong: '#3a3a3a',
17
+ text: '#fafafa',
18
+ textMuted: '#a3a3a3',
19
+ textSubtle: '#737373',
20
+ accent: '#a3e635',
21
+ up: '#a3e635',
22
+ down: '#f87171',
23
+ };
24
+ const mono = "'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
25
+ const tabularNums = { fontVariantNumeric: 'tabular-nums lining-nums' };
26
+ function weekRangeLabel() {
27
+ const to = new Date();
28
+ const from = new Date(to);
29
+ from.setDate(to.getDate() - 6);
30
+ const fmt = (d) => d.toLocaleDateString('en-GB', { day: 'numeric', month: 'short' });
31
+ return `Week of ${fmt(from)}–${fmt(to)}`;
32
+ }
33
+ function DeltaChip({ value }) {
34
+ const direction = value > 0 ? 'up' : value < 0 ? 'down' : 'flat';
35
+ const color = direction === 'up' ? ink.up : direction === 'down' ? ink.down : ink.textSubtle;
36
+ const arrow = direction === 'up' ? '▲' : direction === 'down' ? '▼' : '–';
37
+ return ((0, jsx_runtime_1.jsxs)("span", { style: { fontSize: '13px', fontWeight: 500, color, ...tabularNums }, children: [arrow, " ", Math.abs(value), " ", (0, jsx_runtime_1.jsx)("span", { style: { color: ink.textSubtle, fontWeight: 400 }, children: "vs last week" })] }));
38
+ }
39
+ function EnquiriesDashboard() {
40
+ const [data, setData] = (0, react_1.useState)(null);
41
+ const [error, setError] = (0, react_1.useState)(null);
42
+ const [loading, setLoading] = (0, react_1.useState)(true);
43
+ const [fetchedAt, setFetchedAt] = (0, react_1.useState)(null);
44
+ const [, setTick] = (0, react_1.useState)(0);
45
+ (0, react_1.useEffect)(() => {
46
+ let cancelled = false;
47
+ fetch('/api/ink/analytics/enquiries')
48
+ .then(async (r) => {
49
+ const body = await r.json();
50
+ if (!r.ok)
51
+ throw new Error(body.error ?? `Failed (${r.status})`);
52
+ return body;
53
+ })
54
+ .then((body) => {
55
+ if (cancelled)
56
+ return;
57
+ setData(body);
58
+ setFetchedAt(Date.now());
59
+ })
60
+ .catch((err) => {
61
+ if (cancelled)
62
+ return;
63
+ setError(err instanceof Error ? err.message : 'Unknown error');
64
+ })
65
+ .finally(() => {
66
+ if (!cancelled)
67
+ setLoading(false);
68
+ });
69
+ return () => {
70
+ cancelled = true;
71
+ };
72
+ }, []);
73
+ (0, react_1.useEffect)(() => {
74
+ const interval = setInterval(() => setTick((t) => t + 1), 60_000);
75
+ return () => clearInterval(interval);
76
+ }, []);
77
+ const updatedLabel = (() => {
78
+ if (!fetchedAt)
79
+ return null;
80
+ const minutes = Math.max(0, Math.round((Date.now() - fetchedAt) / 60_000));
81
+ if (minutes === 0)
82
+ return 'Updated just now.';
83
+ return `Updated ${minutes} minute${minutes === 1 ? '' : 's'} ago.`;
84
+ })();
85
+ if (loading) {
86
+ return ((0, jsx_runtime_1.jsx)("div", { style: dashboardShellStyle, children: (0, jsx_runtime_1.jsx)("p", { style: { fontSize: '12px', color: ink.textMuted, margin: 0 }, children: "Loading enquiries\u2026" }) }));
87
+ }
88
+ if (error) {
89
+ return ((0, jsx_runtime_1.jsx)("div", { style: dashboardShellStyle, children: (0, jsx_runtime_1.jsxs)("p", { style: { fontSize: '12px', color: ink.down, margin: 0 }, children: ["ERROR > ", error] }) }));
90
+ }
91
+ // Tenant hasn't configured conversion mappings — nothing false or
92
+ // misleading to show, so this block just doesn't render at all.
93
+ if (!data || !data.configured)
94
+ return null;
95
+ const maxAttribution = Math.max(...data.attribution.map((a) => a.count), 1);
96
+ const isEmpty = data.total === 0;
97
+ const priorWeeksAvg = (() => {
98
+ if (!isEmpty)
99
+ return 0;
100
+ const weekCount = data.byType[0]?.sparkline.length ?? 0;
101
+ if (weekCount <= 1)
102
+ return 0;
103
+ let sum = 0;
104
+ for (let w = 0; w < weekCount - 1; w++) {
105
+ sum += data.byType.reduce((acc, t) => acc + (t.sparkline[w] ?? 0), 0);
106
+ }
107
+ return Math.round(sum / (weekCount - 1));
108
+ })();
109
+ return ((0, jsx_runtime_1.jsxs)("div", { style: dashboardShellStyle, children: [(0, jsx_runtime_1.jsxs)("div", { style: {
110
+ display: 'flex',
111
+ justifyContent: 'space-between',
112
+ alignItems: 'center',
113
+ borderBottom: `1px solid ${ink.border}`,
114
+ paddingBottom: '12px',
115
+ marginBottom: '24px',
116
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '12px' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: '11px', letterSpacing: '0.15em', color: ink.textMuted, fontWeight: 700 }, children: "INK" }), (0, jsx_runtime_1.jsx)("span", { style: { color: ink.textSubtle }, children: "/" }), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: '11px', letterSpacing: '0.1em', color: ink.text, textTransform: 'uppercase' }, children: "Enquiries" })] }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', gap: '10px' }, children: [data.estimated && ((0, jsx_runtime_1.jsx)("span", { style: {
117
+ fontSize: '10px',
118
+ letterSpacing: '0.1em',
119
+ textTransform: 'uppercase',
120
+ color: ink.textSubtle,
121
+ border: `1px solid ${ink.borderStrong}`,
122
+ padding: '3px 8px',
123
+ }, children: "Estimated" })), (0, jsx_runtime_1.jsxs)("span", { style: { fontSize: '10px', color: ink.textSubtle }, children: ["v", version_js_1.INK_VERSION] })] })] }), (0, jsx_runtime_1.jsxs)("div", { style: { marginBottom: '32px' }, children: [isEmpty ? ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '16px' }, children: (0, jsx_runtime_1.jsx)("span", { style: { fontSize: '72px', fontWeight: 500, lineHeight: 1, color: ink.text, letterSpacing: '-0.02em', ...tabularNums }, children: "0" }) }), (0, jsx_runtime_1.jsxs)("p", { style: { margin: '10px 0 0', fontSize: '12px', color: ink.textMuted }, children: ["No enquiries yet this week.", priorWeeksAvg > 0 && ` Prior-week baseline: ${priorWeeksAvg} avg.`] })] })) : ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '16px', flexWrap: 'wrap' }, children: [(0, jsx_runtime_1.jsx)("span", { style: {
124
+ fontSize: '88px',
125
+ fontWeight: 500,
126
+ lineHeight: 1,
127
+ color: ink.text,
128
+ letterSpacing: '-0.02em',
129
+ ...tabularNums,
130
+ }, children: data.total }), (0, jsx_runtime_1.jsx)(DeltaChip, { value: data.delta })] })), (0, jsx_runtime_1.jsxs)("p", { style: { margin: '10px 0 0', fontSize: '12px', color: ink.textSubtle }, children: [weekRangeLabel(), updatedLabel ? ` · ${updatedLabel}` : ''] })] }), (0, jsx_runtime_1.jsx)("div", { style: {
131
+ display: 'grid',
132
+ gridTemplateColumns: `repeat(${Math.max(data.byType.length, 1)}, 1fr)`,
133
+ gap: '16px',
134
+ marginBottom: '32px',
135
+ }, children: data.byType.map((t) => ((0, jsx_runtime_1.jsxs)("div", { style: { background: ink.surface, border: `1px solid ${ink.border}`, padding: '16px' }, children: [(0, jsx_runtime_1.jsx)("p", { style: { margin: 0, fontSize: '11px', letterSpacing: '0.12em', textTransform: 'uppercase', color: ink.textSubtle, fontWeight: 700 }, children: t.label }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '10px', margin: '8px 0' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: '40px', fontWeight: 500, color: ink.text, lineHeight: 1, ...tabularNums }, children: t.count }), (0, jsx_runtime_1.jsx)(DeltaChip, { value: t.delta })] }), (0, jsx_runtime_1.jsx)(Sparkline_js_1.Sparkline, { values: t.sparkline, color: ink.accent })] }, t.type))) }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("p", { style: { margin: '0 0 10px', fontSize: '10px', letterSpacing: '0.15em', textTransform: 'uppercase', color: ink.textSubtle, fontWeight: 700 }, children: "What drove them" }), (0, jsx_runtime_1.jsxs)("div", { style: { background: ink.surfaceElev, border: `1px solid ${ink.border}` }, children: [data.attribution.length === 0 && ((0, jsx_runtime_1.jsx)("p", { style: { fontSize: '12px', color: ink.textSubtle, margin: 0, padding: '14px' }, children: "No attributed enquiries in this window." })), data.attribution.map((row, i) => ((0, jsx_runtime_1.jsxs)("div", { title: row.pageUrl, style: {
136
+ display: 'grid',
137
+ gridTemplateColumns: '1fr auto auto 100px',
138
+ alignItems: 'center',
139
+ gap: '14px',
140
+ padding: '10px 14px',
141
+ borderBottom: i < data.attribution.length - 1 ? `1px solid ${ink.border}` : 'none',
142
+ fontSize: '12px',
143
+ }, children: [(0, jsx_runtime_1.jsx)("span", { style: { color: ink.text, overflow: 'hidden', textOverflow: 'ellipsis', whiteSpace: 'nowrap' }, children: row.pageTitle || row.pageUrl }), (0, jsx_runtime_1.jsx)("span", { style: {
144
+ fontSize: '10px',
145
+ letterSpacing: '0.08em',
146
+ textTransform: 'uppercase',
147
+ color: ink.textMuted,
148
+ border: `1px solid ${ink.borderStrong}`,
149
+ padding: '2px 6px',
150
+ whiteSpace: 'nowrap',
151
+ }, children: row.type }), (0, jsx_runtime_1.jsx)("span", { style: { color: ink.text, minWidth: '24px', textAlign: 'right', ...tabularNums }, children: row.count }), (0, jsx_runtime_1.jsx)(BarInTable_js_1.BarInTable, { value: row.count, max: maxAttribution, color: ink.accent })] }, `${row.pageUrl}-${i}`)))] })] })] }));
152
+ }
153
+ const dashboardShellStyle = {
154
+ background: ink.bg,
155
+ color: ink.text,
156
+ fontFamily: mono,
157
+ padding: '28px',
158
+ border: `1px solid ${ink.border}`,
159
+ maxWidth: layout_js_1.PANEL_WIDTH,
160
+ margin: '24px 0 16px',
161
+ };
162
+ //# sourceMappingURL=EnquiriesDashboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"EnquiriesDashboard.js","sourceRoot":"","sources":["../../src/components/EnquiriesDashboard.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Bottom-of-sidebar ambient status, not a second nav — the collections
3
+ * already appear grouped under "INK — Intelligence" natively, and the raw
4
+ * collection list/edit views aren't where anything gets *actioned* anyway.
5
+ * The one click target here is the dashboard, where AuditPanel etc. live.
6
+ */
7
+ export declare function InkNavPanel(): import("react/jsx-runtime").JSX.Element;
8
+ //# sourceMappingURL=InkNavPanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkNavPanel.d.ts","sourceRoot":"","sources":["../../src/components/InkNavPanel.tsx"],"names":[],"mappings":"AAsBA;;;;;GAKG;AACH,wBAAgB,WAAW,4CAsF1B"}
@@ -0,0 +1,78 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.InkNavPanel = InkNavPanel;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const ACCENT = 'var(--theme-success-500)';
8
+ const COUNTS_POLL_MS = 20_000;
9
+ function formatLastAudit(iso) {
10
+ if (!iso)
11
+ return 'No audits yet';
12
+ const d = new Date(iso);
13
+ const day = d.toLocaleDateString('en-GB', { weekday: 'short' });
14
+ const time = d.toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' });
15
+ return `Last audit: ${day} ${time}`;
16
+ }
17
+ /**
18
+ * Bottom-of-sidebar ambient status, not a second nav — the collections
19
+ * already appear grouped under "INK — Intelligence" natively, and the raw
20
+ * collection list/edit views aren't where anything gets *actioned* anyway.
21
+ * The one click target here is the dashboard, where AuditPanel etc. live.
22
+ */
23
+ function InkNavPanel() {
24
+ const [counts, setCounts] = (0, react_1.useState)(null);
25
+ (0, react_1.useEffect)(() => {
26
+ let cancelled = false;
27
+ function load() {
28
+ fetch('/api/ink/nav-counts')
29
+ .then((r) => (r.ok ? r.json() : null))
30
+ .then((data) => {
31
+ if (!cancelled && data)
32
+ setCounts(data);
33
+ })
34
+ .catch(() => {
35
+ // best-effort — badges just stay stale until the next poll
36
+ });
37
+ }
38
+ load();
39
+ const interval = setInterval(load, COUNTS_POLL_MS);
40
+ return () => {
41
+ cancelled = true;
42
+ clearInterval(interval);
43
+ };
44
+ }, []);
45
+ const openCount = (counts?.unreadInsights ?? 0) + (counts?.openActions ?? 0);
46
+ return ((0, jsx_runtime_1.jsxs)("a", { href: "/admin", style: {
47
+ display: 'block',
48
+ borderLeft: `3px solid ${ACCENT}`,
49
+ background: `color-mix(in srgb, ${ACCENT} 3%, transparent)`,
50
+ padding: '12px 14px',
51
+ margin: '8px 0 0',
52
+ textDecoration: 'none',
53
+ }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between' }, children: [(0, jsx_runtime_1.jsx)("p", { style: {
54
+ margin: 0,
55
+ fontSize: '11px',
56
+ letterSpacing: '0.08em',
57
+ textTransform: 'uppercase',
58
+ color: 'var(--theme-elevation-500)',
59
+ fontWeight: 600,
60
+ }, children: "INK \u2014 Intelligence" }), openCount > 0 && ((0, jsx_runtime_1.jsx)("span", { style: {
61
+ fontSize: '11px',
62
+ lineHeight: 1,
63
+ fontWeight: 600,
64
+ color: 'var(--theme-elevation-0)',
65
+ background: ACCENT,
66
+ padding: '2px 6px',
67
+ minWidth: '16px',
68
+ textAlign: 'center',
69
+ }, children: openCount }))] }), (0, jsx_runtime_1.jsxs)("p", { style: { margin: '6px 0 0', fontSize: '11px', color: 'var(--theme-elevation-500)' }, children: [counts ? formatLastAudit(counts.lastAuditAt) : 'Loading…', counts?.latestGrade && ((0, jsx_runtime_1.jsx)("span", { style: {
70
+ marginLeft: '6px',
71
+ padding: '1px 5px',
72
+ fontSize: '10px',
73
+ fontWeight: 700,
74
+ color: ACCENT,
75
+ border: `1px solid ${ACCENT}`,
76
+ }, children: counts.latestGrade }))] })] }));
77
+ }
78
+ //# sourceMappingURL=InkNavPanel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InkNavPanel.js","sourceRoot":"","sources":["../../src/components/InkNavPanel.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;AA4BZ,kCAsFC;;AAjHD,iCAAkD;AAUlD,MAAM,MAAM,GAAG,0BAA0B,CAAA;AACzC,MAAM,cAAc,GAAG,MAAM,CAAA;AAE7B,SAAS,eAAe,CAAC,GAAkB;IACzC,IAAI,CAAC,GAAG;QAAE,OAAO,eAAe,CAAA;IAChC,MAAM,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC,CAAA;IACvB,MAAM,GAAG,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAA;IAC/D,MAAM,IAAI,GAAG,CAAC,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;IAClF,OAAO,eAAe,GAAG,IAAI,IAAI,EAAE,CAAA;AACrC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,WAAW;IACzB,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,IAAA,gBAAQ,EAAmB,IAAI,CAAC,CAAA;IAE5D,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,IAAI,SAAS,GAAG,KAAK,CAAA;QACrB,SAAS,IAAI;YACX,KAAK,CAAC,qBAAqB,CAAC;iBACzB,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;iBACrC,IAAI,CAAC,CAAC,IAAsB,EAAE,EAAE;gBAC/B,IAAI,CAAC,SAAS,IAAI,IAAI;oBAAE,SAAS,CAAC,IAAI,CAAC,CAAA;YACzC,CAAC,CAAC;iBACD,KAAK,CAAC,GAAG,EAAE;gBACV,2DAA2D;YAC7D,CAAC,CAAC,CAAA;QACN,CAAC;QACD,IAAI,EAAE,CAAA;QACN,MAAM,QAAQ,GAAG,WAAW,CAAC,IAAI,EAAE,cAAc,CAAC,CAAA;QAClD,OAAO,GAAG,EAAE;YACV,SAAS,GAAG,IAAI,CAAA;YAChB,aAAa,CAAC,QAAQ,CAAC,CAAA;QACzB,CAAC,CAAA;IACH,CAAC,EAAE,EAAE,CAAC,CAAA;IAEN,MAAM,SAAS,GAAG,CAAC,MAAM,EAAE,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC,MAAM,EAAE,WAAW,IAAI,CAAC,CAAC,CAAA;IAE5E,OAAO,CACL,+BACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAE;YACL,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,aAAa,MAAM,EAAE;YACjC,UAAU,EAAE,sBAAsB,MAAM,mBAAmB;YAC3D,OAAO,EAAE,WAAW;YACpB,MAAM,EAAE,SAAS;YACjB,cAAc,EAAE,MAAM;SACvB,aAED,iCAAK,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,cAAc,EAAE,eAAe,EAAE,aACpF,8BACE,KAAK,EAAE;4BACL,MAAM,EAAE,CAAC;4BACT,QAAQ,EAAE,MAAM;4BAChB,aAAa,EAAE,QAAQ;4BACvB,aAAa,EAAE,WAAW;4BAC1B,KAAK,EAAE,4BAA4B;4BACnC,UAAU,EAAE,GAAG;yBAChB,wCAGC,EACH,SAAS,GAAG,CAAC,IAAI,CAChB,iCACE,KAAK,EAAE;4BACL,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,CAAC;4BACb,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,0BAA0B;4BACjC,UAAU,EAAE,MAAM;4BAClB,OAAO,EAAE,SAAS;4BAClB,QAAQ,EAAE,MAAM;4BAChB,SAAS,EAAE,QAAQ;yBACpB,YAEA,SAAS,GACL,CACR,IACG,EACN,+BAAG,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,4BAA4B,EAAE,aACnF,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,UAAU,EACzD,MAAM,EAAE,WAAW,IAAI,CACtB,iCACE,KAAK,EAAE;4BACL,UAAU,EAAE,KAAK;4BACjB,OAAO,EAAE,SAAS;4BAClB,QAAQ,EAAE,MAAM;4BAChB,UAAU,EAAE,GAAG;4BACf,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,aAAa,MAAM,EAAE;yBAC9B,YAEA,MAAM,CAAC,WAAW,GACd,CACR,IACC,IACF,CACL,CAAA;AACH,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare function IntelligenceTabs(): import("react/jsx-runtime").JSX.Element;
2
+ //# sourceMappingURL=IntelligenceTabs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntelligenceTabs.d.ts","sourceRoot":"","sources":["../../src/components/IntelligenceTabs.tsx"],"names":[],"mappings":"AAmDA,wBAAgB,gBAAgB,4CAwF/B"}
@@ -1,11 +1,14 @@
1
1
  'use client';
2
2
  "use strict";
3
3
  Object.defineProperty(exports, "__esModule", { value: true });
4
- exports.AuditsPanel = AuditsPanel;
4
+ exports.IntelligenceTabs = IntelligenceTabs;
5
5
  const jsx_runtime_1 = require("react/jsx-runtime");
6
6
  const react_1 = require("react");
7
7
  const AuditPanel_js_1 = require("./AuditPanel.js");
8
8
  const FreshnessPanel_js_1 = require("./FreshnessPanel.js");
9
+ const AnalyticsPanel_js_1 = require("./AnalyticsPanel.js");
10
+ const DigestPanel_js_1 = require("./DigestPanel.js");
11
+ const layout_js_1 = require("./layout.js");
9
12
  const ink = {
10
13
  bg: '#0a0a0a',
11
14
  surface: '#141414',
@@ -14,6 +17,7 @@ const ink = {
14
17
  text: '#fafafa',
15
18
  textMuted: '#a3a3a3',
16
19
  textSubtle: '#737373',
20
+ accent: '#a3e635',
17
21
  };
18
22
  const gradeColor = {
19
23
  A: '#22c55e',
@@ -23,8 +27,15 @@ const gradeColor = {
23
27
  F: '#ef4444',
24
28
  };
25
29
  const mono = "'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
26
- function AuditsPanel() {
27
- const [tab, setTab] = (0, react_1.useState)('seo');
30
+ const TABS = [
31
+ { key: 'analytics', label: 'Analytics' },
32
+ { key: 'seo', label: 'SEO' },
33
+ { key: 'insights', label: 'Insights' },
34
+ { key: 'freshness', label: 'Freshness' },
35
+ { key: 'digest', label: 'Digest' },
36
+ ];
37
+ function IntelligenceTabs() {
38
+ const [tab, setTab] = (0, react_1.useState)('analytics');
28
39
  const [seoGrade, setSeoGrade] = (0, react_1.useState)(null);
29
40
  const [freshGrade, setFreshGrade] = (0, react_1.useState)(null);
30
41
  (0, react_1.useEffect)(() => {
@@ -49,38 +60,39 @@ function AuditsPanel() {
49
60
  cancelled = true;
50
61
  };
51
62
  }, []);
63
+ const grades = { seo: seoGrade, freshness: freshGrade };
52
64
  return ((0, jsx_runtime_1.jsxs)("div", { style: {
53
65
  background: ink.bg,
54
66
  color: ink.text,
55
67
  fontFamily: mono,
56
68
  padding: '24px',
57
69
  border: `1px solid ${ink.border}`,
58
- maxWidth: '780px',
59
- margin: '24px 0',
70
+ maxWidth: layout_js_1.PANEL_WIDTH,
71
+ margin: '16px 0 24px',
60
72
  }, children: [(0, jsx_runtime_1.jsx)("div", { style: {
61
73
  display: 'flex',
62
74
  justifyContent: 'space-between',
63
75
  alignItems: 'center',
64
76
  borderBottom: `1px solid ${ink.border}`,
65
77
  paddingBottom: '12px',
66
- }, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '12px' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: '11px', letterSpacing: '0.15em', color: ink.textMuted, fontWeight: 700 }, children: "INK" }), (0, jsx_runtime_1.jsx)("span", { style: { color: ink.textSubtle }, children: "/" }), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: '11px', letterSpacing: '0.1em', color: ink.text, textTransform: 'uppercase' }, children: "Intelligence" })] }) }), (0, jsx_runtime_1.jsxs)("div", { style: {
78
+ }, children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '12px' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: '11px', letterSpacing: '0.15em', color: ink.textMuted, fontWeight: 700 }, children: "INK" }), (0, jsx_runtime_1.jsx)("span", { style: { color: ink.textSubtle }, children: "/" }), (0, jsx_runtime_1.jsx)("span", { style: { fontSize: '11px', letterSpacing: '0.1em', color: ink.text, textTransform: 'uppercase' }, children: "Intelligence" })] }) }), (0, jsx_runtime_1.jsx)("div", { style: {
67
79
  display: 'flex',
68
- gap: '0',
80
+ gap: '4px',
69
81
  borderBottom: `1px solid ${ink.border}`,
70
- marginTop: '8px',
71
- }, children: [(0, jsx_runtime_1.jsx)(TabButton, { label: "SEO", grade: seoGrade, active: tab === 'seo', onClick: () => setTab('seo') }), (0, jsx_runtime_1.jsx)(TabButton, { label: "Freshness", grade: freshGrade, active: tab === 'freshness', onClick: () => setTab('freshness') }), (0, jsx_runtime_1.jsx)(TabButton, { label: "Insights", grade: null, active: tab === 'insights', onClick: () => setTab('insights') })] }), (0, jsx_runtime_1.jsxs)("div", { style: { paddingTop: '20px' }, children: [tab === 'seo' && (0, jsx_runtime_1.jsx)(AuditPanel_js_1.AuditPanel, { embedded: true }), tab === 'freshness' && (0, jsx_runtime_1.jsx)(FreshnessPanel_js_1.FreshnessPanel, { embedded: true }), tab === 'insights' && (0, jsx_runtime_1.jsx)(InsightsTab, {})] }), (0, jsx_runtime_1.jsx)(CollectionLinks, {})] }));
82
+ marginTop: '14px',
83
+ }, children: TABS.map((t) => ((0, jsx_runtime_1.jsx)(TabButton, { label: t.label, grade: grades[t.key] ?? null, active: tab === t.key, onClick: () => setTab(t.key) }, t.key))) }), (0, jsx_runtime_1.jsxs)("div", { style: { paddingTop: '24px' }, children: [tab === 'seo' && (0, jsx_runtime_1.jsx)(AuditPanel_js_1.AuditPanel, { embedded: true }), tab === 'freshness' && (0, jsx_runtime_1.jsx)(FreshnessPanel_js_1.FreshnessPanel, { embedded: true }), tab === 'insights' && (0, jsx_runtime_1.jsx)(InsightsTab, {}), tab === 'analytics' && (0, jsx_runtime_1.jsx)(AnalyticsPanel_js_1.AnalyticsPanel, { embedded: true }), tab === 'digest' && (0, jsx_runtime_1.jsx)(DigestPanel_js_1.DigestPanel, { embedded: true })] }), (0, jsx_runtime_1.jsx)(CollectionLinks, {})] }));
72
84
  }
73
85
  function TabButton({ label, grade, active, onClick, }) {
74
86
  return ((0, jsx_runtime_1.jsxs)("button", { onClick: onClick, style: {
75
- background: 'transparent',
87
+ background: active ? ink.surface : 'transparent',
76
88
  border: 'none',
77
- borderBottom: active ? `2px solid ${ink.text}` : `2px solid transparent`,
89
+ borderTop: `3px solid ${active ? ink.accent : 'transparent'}`,
90
+ borderBottom: 'none',
78
91
  marginBottom: '-1px',
79
- padding: '10px 18px 10px 0',
80
- marginRight: '24px',
92
+ padding: '14px 22px',
81
93
  fontFamily: mono,
82
- fontSize: '11px',
83
- letterSpacing: '0.15em',
94
+ fontSize: '13px',
95
+ letterSpacing: '0.06em',
84
96
  textTransform: 'uppercase',
85
97
  fontWeight: 700,
86
98
  color: active ? ink.text : ink.textMuted,
@@ -88,6 +100,7 @@ function TabButton({ label, grade, active, onClick, }) {
88
100
  display: 'flex',
89
101
  alignItems: 'center',
90
102
  gap: '8px',
103
+ transition: 'color 0.15s ease, background 0.15s ease',
91
104
  }, children: [label, grade && ((0, jsx_runtime_1.jsx)("span", { style: {
92
105
  background: gradeColor[grade] ?? ink.borderStrong,
93
106
  color: '#000',
@@ -226,4 +239,4 @@ function CollectionLinks() {
226
239
  fontFamily: mono,
227
240
  }, children: ["\u2192 ", l.label] }, l.href))) }));
228
241
  }
229
- //# sourceMappingURL=AuditsPanel.js.map
242
+ //# sourceMappingURL=IntelligenceTabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntelligenceTabs.js","sourceRoot":"","sources":["../../src/components/IntelligenceTabs.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /** Dashboard-widget-grid tile (Payload's modular dashboard system, not the
2
+ * beforeDashboard slot EnquiriesDashboard lives in). Exists mainly so the
3
+ * widget grid isn't empty when the default "collections" widget is hidden
4
+ * — deliberately compact, the real detail already lives in EnquiriesDashboard. */
5
+ export declare function IntelligenceWidget(): import("react/jsx-runtime").JSX.Element;
6
+ //# sourceMappingURL=IntelligenceWidget.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntelligenceWidget.d.ts","sourceRoot":"","sources":["../../src/components/IntelligenceWidget.tsx"],"names":[],"mappings":"AA6BA;;;kFAGkF;AAClF,wBAAgB,kBAAkB,4CA+CjC"}
@@ -0,0 +1,53 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.IntelligenceWidget = IntelligenceWidget;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ const react_1 = require("react");
7
+ const ink = {
8
+ bg: '#0a0a0a',
9
+ surface: '#141414',
10
+ border: '#262626',
11
+ text: '#fafafa',
12
+ textMuted: '#a3a3a3',
13
+ textSubtle: '#737373',
14
+ accent: '#a3e635',
15
+ };
16
+ function formatLastAudit(iso) {
17
+ if (!iso)
18
+ return 'No audits yet';
19
+ const d = new Date(iso);
20
+ const day = d.toLocaleDateString('en-GB', { weekday: 'short' });
21
+ const time = d.toLocaleTimeString('en-GB', { hour: '2-digit', minute: '2-digit' });
22
+ return `${day} ${time}`;
23
+ }
24
+ /** Dashboard-widget-grid tile (Payload's modular dashboard system, not the
25
+ * beforeDashboard slot EnquiriesDashboard lives in). Exists mainly so the
26
+ * widget grid isn't empty when the default "collections" widget is hidden
27
+ * — deliberately compact, the real detail already lives in EnquiriesDashboard. */
28
+ function IntelligenceWidget() {
29
+ const [counts, setCounts] = (0, react_1.useState)(null);
30
+ (0, react_1.useEffect)(() => {
31
+ let cancelled = false;
32
+ fetch('/api/ink/nav-counts')
33
+ .then((r) => (r.ok ? r.json() : null))
34
+ .then((data) => {
35
+ if (!cancelled && data)
36
+ setCounts(data);
37
+ })
38
+ .catch(() => { });
39
+ return () => {
40
+ cancelled = true;
41
+ };
42
+ }, []);
43
+ const openCount = (counts?.unreadInsights ?? 0) + (counts?.openActions ?? 0);
44
+ return ((0, jsx_runtime_1.jsxs)("a", { href: "/admin", style: {
45
+ display: 'block',
46
+ background: ink.bg,
47
+ border: `1px solid ${ink.border}`,
48
+ padding: '16px',
49
+ textDecoration: 'none',
50
+ fontFamily: "'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace",
51
+ }, children: [(0, jsx_runtime_1.jsx)("p", { style: { margin: 0, fontSize: '11px', letterSpacing: '0.12em', textTransform: 'uppercase', color: ink.textSubtle, fontWeight: 700 }, children: "INK \u2014 Intelligence" }), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'baseline', gap: '10px', margin: '10px 0' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: '32px', fontWeight: 500, color: ink.text, lineHeight: 1 }, children: counts?.latestGrade ?? '—' }), openCount > 0 && ((0, jsx_runtime_1.jsxs)("span", { style: { fontSize: '11px', color: ink.accent }, children: [openCount, " open"] }))] }), (0, jsx_runtime_1.jsx)("p", { style: { margin: 0, fontSize: '11px', color: ink.textMuted }, children: counts ? `Last audit: ${formatLastAudit(counts.lastAuditAt)}` : 'Loading…' })] }));
52
+ }
53
+ //# sourceMappingURL=IntelligenceWidget.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"IntelligenceWidget.js","sourceRoot":"","sources":["../../src/components/IntelligenceWidget.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ type SparklineProps = {
2
+ values: number[];
3
+ color?: string;
4
+ width?: number;
5
+ height?: number;
6
+ };
7
+ /** Tufte-style line sparkline. No axes, no gridlines — just the shape. */
8
+ export declare function Sparkline({ values, color, width, height }: SparklineProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
10
+ //# sourceMappingURL=Sparkline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sparkline.d.ts","sourceRoot":"","sources":["../../src/components/Sparkline.tsx"],"names":[],"mappings":"AAGA,KAAK,cAAc,GAAG;IACpB,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB,CAAA;AAED,0EAA0E;AAC1E,wBAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAiB,EAAE,KAAW,EAAE,MAAW,EAAE,EAAE,cAAc,2CAqBhG"}
@@ -0,0 +1,21 @@
1
+ 'use client';
2
+ "use strict";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.Sparkline = Sparkline;
5
+ const jsx_runtime_1 = require("react/jsx-runtime");
6
+ /** Tufte-style line sparkline. No axes, no gridlines — just the shape. */
7
+ function Sparkline({ values, color = '#a3e635', width = 120, height = 28 }) {
8
+ const max = Math.max(...values, 1);
9
+ const min = Math.min(...values, 0);
10
+ const range = max - min || 1;
11
+ const stepX = values.length > 1 ? width / (values.length - 1) : width;
12
+ const points = values.map((v, i) => {
13
+ const x = i * stepX;
14
+ const y = height - ((v - min) / range) * height;
15
+ return { x, y };
16
+ });
17
+ const path = points.map((p, i) => `${i === 0 ? 'M' : 'L'}${p.x.toFixed(1)},${p.y.toFixed(1)}`).join(' ');
18
+ const last = points[points.length - 1];
19
+ return ((0, jsx_runtime_1.jsxs)("svg", { width: width, height: height, viewBox: `0 0 ${width} ${height}`, style: { display: 'block', overflow: 'visible' }, children: [(0, jsx_runtime_1.jsx)("path", { d: path, fill: "none", stroke: color, strokeWidth: 1.5, strokeLinejoin: "round", strokeLinecap: "round" }), last && (0, jsx_runtime_1.jsx)("circle", { cx: last.x, cy: last.y, r: 3, fill: color })] }));
20
+ }
21
+ //# sourceMappingURL=Sparkline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Sparkline.js","sourceRoot":"","sources":["../../src/components/Sparkline.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;;AAWZ,8BAqBC;;AAtBD,0EAA0E;AAC1E,SAAgB,SAAS,CAAC,EAAE,MAAM,EAAE,KAAK,GAAG,SAAS,EAAE,KAAK,GAAG,GAAG,EAAE,MAAM,GAAG,EAAE,EAAkB;IAC/F,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAA;IAClC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,EAAE,CAAC,CAAC,CAAA;IAClC,MAAM,KAAK,GAAG,GAAG,GAAG,GAAG,IAAI,CAAC,CAAA;IAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAA;IAErE,MAAM,MAAM,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QACjC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAA;QACnB,MAAM,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,GAAG,KAAK,CAAC,GAAG,MAAM,CAAA;QAC/C,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAA;IACjB,CAAC,CAAC,CAAA;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;IACxG,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAA;IAEtC,OAAO,CACL,iCAAK,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,MAAM,EAAE,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,aACpH,iCAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAC,MAAM,EAAC,MAAM,EAAE,KAAK,EAAE,WAAW,EAAE,GAAG,EAAE,cAAc,EAAC,OAAO,EAAC,aAAa,EAAC,OAAO,GAAG,EAC1G,IAAI,IAAI,mCAAQ,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,IAAI,EAAE,KAAK,GAAI,IAC1D,CACP,CAAA;AACH,CAAC"}
@@ -2,7 +2,12 @@ export { AuditPanel } from './AuditPanel.js';
2
2
  export { OnboardingFlow } from './OnboardingFlow.js';
3
3
  export { AnalyticsPanel } from './AnalyticsPanel.js';
4
4
  export { FreshnessPanel } from './FreshnessPanel.js';
5
- export { AuditsPanel } from './AuditsPanel.js';
5
+ export { IntelligenceTabs } from './IntelligenceTabs.js';
6
6
  export { DigestPanel } from './DigestPanel.js';
7
7
  export { InkGradeCell } from './InkGradeCell.js';
8
+ export { EnquiriesDashboard } from './EnquiriesDashboard.js';
9
+ export { Sparkline } from './Sparkline.js';
10
+ export { BarInTable } from './BarInTable.js';
11
+ export { InkNavPanel } from './InkNavPanel.js';
12
+ export { IntelligenceWidget } from './IntelligenceWidget.js';
8
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAA;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAChD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA;AAC5D,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAA;AAC1C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.InkGradeCell = exports.DigestPanel = exports.AuditsPanel = exports.FreshnessPanel = exports.AnalyticsPanel = exports.OnboardingFlow = exports.AuditPanel = void 0;
3
+ exports.IntelligenceWidget = exports.InkNavPanel = exports.BarInTable = exports.Sparkline = exports.EnquiriesDashboard = exports.InkGradeCell = exports.DigestPanel = exports.IntelligenceTabs = exports.FreshnessPanel = exports.AnalyticsPanel = exports.OnboardingFlow = exports.AuditPanel = void 0;
4
4
  var AuditPanel_js_1 = require("./AuditPanel.js");
5
5
  Object.defineProperty(exports, "AuditPanel", { enumerable: true, get: function () { return AuditPanel_js_1.AuditPanel; } });
6
6
  var OnboardingFlow_js_1 = require("./OnboardingFlow.js");
@@ -9,10 +9,20 @@ var AnalyticsPanel_js_1 = require("./AnalyticsPanel.js");
9
9
  Object.defineProperty(exports, "AnalyticsPanel", { enumerable: true, get: function () { return AnalyticsPanel_js_1.AnalyticsPanel; } });
10
10
  var FreshnessPanel_js_1 = require("./FreshnessPanel.js");
11
11
  Object.defineProperty(exports, "FreshnessPanel", { enumerable: true, get: function () { return FreshnessPanel_js_1.FreshnessPanel; } });
12
- var AuditsPanel_js_1 = require("./AuditsPanel.js");
13
- Object.defineProperty(exports, "AuditsPanel", { enumerable: true, get: function () { return AuditsPanel_js_1.AuditsPanel; } });
12
+ var IntelligenceTabs_js_1 = require("./IntelligenceTabs.js");
13
+ Object.defineProperty(exports, "IntelligenceTabs", { enumerable: true, get: function () { return IntelligenceTabs_js_1.IntelligenceTabs; } });
14
14
  var DigestPanel_js_1 = require("./DigestPanel.js");
15
15
  Object.defineProperty(exports, "DigestPanel", { enumerable: true, get: function () { return DigestPanel_js_1.DigestPanel; } });
16
16
  var InkGradeCell_js_1 = require("./InkGradeCell.js");
17
17
  Object.defineProperty(exports, "InkGradeCell", { enumerable: true, get: function () { return InkGradeCell_js_1.InkGradeCell; } });
18
+ var EnquiriesDashboard_js_1 = require("./EnquiriesDashboard.js");
19
+ Object.defineProperty(exports, "EnquiriesDashboard", { enumerable: true, get: function () { return EnquiriesDashboard_js_1.EnquiriesDashboard; } });
20
+ var Sparkline_js_1 = require("./Sparkline.js");
21
+ Object.defineProperty(exports, "Sparkline", { enumerable: true, get: function () { return Sparkline_js_1.Sparkline; } });
22
+ var BarInTable_js_1 = require("./BarInTable.js");
23
+ Object.defineProperty(exports, "BarInTable", { enumerable: true, get: function () { return BarInTable_js_1.BarInTable; } });
24
+ var InkNavPanel_js_1 = require("./InkNavPanel.js");
25
+ Object.defineProperty(exports, "InkNavPanel", { enumerable: true, get: function () { return InkNavPanel_js_1.InkNavPanel; } });
26
+ var IntelligenceWidget_js_1 = require("./IntelligenceWidget.js");
27
+ Object.defineProperty(exports, "IntelligenceWidget", { enumerable: true, get: function () { return IntelligenceWidget_js_1.IntelligenceWidget; } });
18
28
  //# sourceMappingURL=index.js.map