@codeandink/payload-ink 0.0.7-alpha.1

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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +64 -0
  3. package/dist/audits/freshness.d.ts +11 -0
  4. package/dist/audits/freshness.d.ts.map +1 -0
  5. package/dist/audits/freshness.js +89 -0
  6. package/dist/audits/freshness.js.map +1 -0
  7. package/dist/audits/seo.d.ts +4 -0
  8. package/dist/audits/seo.d.ts.map +1 -0
  9. package/dist/audits/seo.js +128 -0
  10. package/dist/audits/seo.js.map +1 -0
  11. package/dist/client.d.ts +3 -0
  12. package/dist/client.d.ts.map +1 -0
  13. package/dist/client.js +18 -0
  14. package/dist/client.js.map +1 -0
  15. package/dist/collections/Actions.d.ts +3 -0
  16. package/dist/collections/Actions.d.ts.map +1 -0
  17. package/dist/collections/Actions.js +56 -0
  18. package/dist/collections/Actions.js.map +1 -0
  19. package/dist/collections/Audits.d.ts +3 -0
  20. package/dist/collections/Audits.d.ts.map +1 -0
  21. package/dist/collections/Audits.js +69 -0
  22. package/dist/collections/Audits.js.map +1 -0
  23. package/dist/collections/Insights.d.ts +3 -0
  24. package/dist/collections/Insights.d.ts.map +1 -0
  25. package/dist/collections/Insights.js +99 -0
  26. package/dist/collections/Insights.js.map +1 -0
  27. package/dist/collections/OnboardingProfile.d.ts +3 -0
  28. package/dist/collections/OnboardingProfile.d.ts.map +1 -0
  29. package/dist/collections/OnboardingProfile.js +174 -0
  30. package/dist/collections/OnboardingProfile.js.map +1 -0
  31. package/dist/components/AnalyticsPanel.d.ts +2 -0
  32. package/dist/components/AnalyticsPanel.d.ts.map +1 -0
  33. package/dist/components/AnalyticsPanel.js +151 -0
  34. package/dist/components/AnalyticsPanel.js.map +1 -0
  35. package/dist/components/AuditPanel.d.ts +4 -0
  36. package/dist/components/AuditPanel.d.ts.map +1 -0
  37. package/dist/components/AuditPanel.js +463 -0
  38. package/dist/components/AuditPanel.js.map +1 -0
  39. package/dist/components/AuditsPanel.d.ts +2 -0
  40. package/dist/components/AuditsPanel.d.ts.map +1 -0
  41. package/dist/components/AuditsPanel.js +229 -0
  42. package/dist/components/AuditsPanel.js.map +1 -0
  43. package/dist/components/DigestPanel.d.ts +2 -0
  44. package/dist/components/DigestPanel.d.ts.map +1 -0
  45. package/dist/components/DigestPanel.js +320 -0
  46. package/dist/components/DigestPanel.js.map +1 -0
  47. package/dist/components/FreshnessPanel.d.ts +4 -0
  48. package/dist/components/FreshnessPanel.d.ts.map +1 -0
  49. package/dist/components/FreshnessPanel.js +224 -0
  50. package/dist/components/FreshnessPanel.js.map +1 -0
  51. package/dist/components/InkGradeCell.d.ts +4 -0
  52. package/dist/components/InkGradeCell.d.ts.map +1 -0
  53. package/dist/components/InkGradeCell.js +32 -0
  54. package/dist/components/InkGradeCell.js.map +1 -0
  55. package/dist/components/OnboardingFlow.d.ts +2 -0
  56. package/dist/components/OnboardingFlow.d.ts.map +1 -0
  57. package/dist/components/OnboardingFlow.js +406 -0
  58. package/dist/components/OnboardingFlow.js.map +1 -0
  59. package/dist/components/index.d.ts +8 -0
  60. package/dist/components/index.d.ts.map +1 -0
  61. package/dist/components/index.js +18 -0
  62. package/dist/components/index.js.map +1 -0
  63. package/dist/endpoints/analytics.d.ts +9 -0
  64. package/dist/endpoints/analytics.d.ts.map +1 -0
  65. package/dist/endpoints/analytics.js +68 -0
  66. package/dist/endpoints/analytics.js.map +1 -0
  67. package/dist/endpoints/auditChanges.d.ts +9 -0
  68. package/dist/endpoints/auditChanges.d.ts.map +1 -0
  69. package/dist/endpoints/auditChanges.js +52 -0
  70. package/dist/endpoints/auditChanges.js.map +1 -0
  71. package/dist/endpoints/auditStatus.d.ts +6 -0
  72. package/dist/endpoints/auditStatus.d.ts.map +1 -0
  73. package/dist/endpoints/auditStatus.js +24 -0
  74. package/dist/endpoints/auditStatus.js.map +1 -0
  75. package/dist/endpoints/config.d.ts +8 -0
  76. package/dist/endpoints/config.d.ts.map +1 -0
  77. package/dist/endpoints/config.js +12 -0
  78. package/dist/endpoints/config.js.map +1 -0
  79. package/dist/endpoints/digestPreflight.d.ts +8 -0
  80. package/dist/endpoints/digestPreflight.d.ts.map +1 -0
  81. package/dist/endpoints/digestPreflight.js +79 -0
  82. package/dist/endpoints/digestPreflight.js.map +1 -0
  83. package/dist/endpoints/ga4Test.d.ts +8 -0
  84. package/dist/endpoints/ga4Test.d.ts.map +1 -0
  85. package/dist/endpoints/ga4Test.js +38 -0
  86. package/dist/endpoints/ga4Test.js.map +1 -0
  87. package/dist/endpoints/insights.d.ts +8 -0
  88. package/dist/endpoints/insights.d.ts.map +1 -0
  89. package/dist/endpoints/insights.js +53 -0
  90. package/dist/endpoints/insights.js.map +1 -0
  91. package/dist/endpoints/onboarding.d.ts +4 -0
  92. package/dist/endpoints/onboarding.d.ts.map +1 -0
  93. package/dist/endpoints/onboarding.js +64 -0
  94. package/dist/endpoints/onboarding.js.map +1 -0
  95. package/dist/endpoints/runAudit.d.ts +12 -0
  96. package/dist/endpoints/runAudit.d.ts.map +1 -0
  97. package/dist/endpoints/runAudit.js +174 -0
  98. package/dist/endpoints/runAudit.js.map +1 -0
  99. package/dist/endpoints/runFreshnessAudit.d.ts +13 -0
  100. package/dist/endpoints/runFreshnessAudit.d.ts.map +1 -0
  101. package/dist/endpoints/runFreshnessAudit.js +143 -0
  102. package/dist/endpoints/runFreshnessAudit.js.map +1 -0
  103. package/dist/endpoints/sendDigest.d.ts +10 -0
  104. package/dist/endpoints/sendDigest.d.ts.map +1 -0
  105. package/dist/endpoints/sendDigest.js +259 -0
  106. package/dist/endpoints/sendDigest.js.map +1 -0
  107. package/dist/index.d.ts +4 -0
  108. package/dist/index.d.ts.map +1 -0
  109. package/dist/index.js +6 -0
  110. package/dist/index.js.map +1 -0
  111. package/dist/lib/computeGrade.d.ts +8 -0
  112. package/dist/lib/computeGrade.d.ts.map +1 -0
  113. package/dist/lib/computeGrade.js +48 -0
  114. package/dist/lib/computeGrade.js.map +1 -0
  115. package/dist/plugin.d.ts +28 -0
  116. package/dist/plugin.d.ts.map +1 -0
  117. package/dist/plugin.js +168 -0
  118. package/dist/plugin.js.map +1 -0
  119. package/dist/types.d.ts +99 -0
  120. package/dist/types.d.ts.map +1 -0
  121. package/dist/types.js +3 -0
  122. package/dist/types.js.map +1 -0
  123. package/package.json +75 -0
@@ -0,0 +1,406 @@
1
+ 'use client';
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || (function () {
20
+ var ownKeys = function(o) {
21
+ ownKeys = Object.getOwnPropertyNames || function (o) {
22
+ var ar = [];
23
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
24
+ return ar;
25
+ };
26
+ return ownKeys(o);
27
+ };
28
+ return function (mod) {
29
+ if (mod && mod.__esModule) return mod;
30
+ var result = {};
31
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
32
+ __setModuleDefault(result, mod);
33
+ return result;
34
+ };
35
+ })();
36
+ Object.defineProperty(exports, "__esModule", { value: true });
37
+ exports.OnboardingFlow = OnboardingFlow;
38
+ const jsx_runtime_1 = require("react/jsx-runtime");
39
+ const react_1 = __importStar(require("react"));
40
+ const initialState = {
41
+ siteName: '',
42
+ audiences: [{ segment: '', description: '' }],
43
+ objectives: [{ objective: '' }],
44
+ conversionEvents: [],
45
+ brandVoice: '',
46
+ cadence: 'weekly',
47
+ competitors: [],
48
+ digestRecipients: [{ email: '' }],
49
+ guardrails: [],
50
+ ga4PropertyId: '',
51
+ gaConnectionVerifiedAt: '',
52
+ };
53
+ const voicePresets = [
54
+ 'Warm, plain-spoken, encouraging — sounds like a friend who knows the subject.',
55
+ 'Editorial and considered — confident phrasing, full sentences, no slang.',
56
+ 'Direct and pragmatic — short sentences, active verbs, no fluff.',
57
+ 'Playful and curious — wry humour welcome, never sarcastic.',
58
+ ];
59
+ const stepTitles = [
60
+ { title: 'Welcome to INK', help: 'A few questions so every recommendation we surface is scored against your goals — not generic SEO checklists.' },
61
+ { title: 'Who are you serving?', help: 'Name your audience segments. The first one should be the most important.' },
62
+ { title: 'What are your top objectives?', help: 'Up to three. Everything INK suggests will be ranked against these.' },
63
+ { title: 'What counts as a conversion?', help: 'Optional. List the events that signal real success — sign-ups, ticket sales, enquiries.' },
64
+ { title: 'How do you sound?', help: 'INK rewrites copy in your voice. Describe it, or pick a starting point.' },
65
+ { title: 'When and where do digests land?', help: 'Weekly is the default and what we recommend for most teams.' },
66
+ { title: 'Anything we should know?', help: 'Optional. Competitor URLs help with context. Guardrails are rules INK must never break.' },
67
+ { title: 'Connect Google Analytics', help: 'INK pulls traffic data from your GA4 property to rank pages and write the weekly digest. Add the email below as a Viewer on your property.' },
68
+ { title: 'Review and save', help: 'You can edit any of this later in the INK → Onboarding Profile collection.' },
69
+ ];
70
+ const colors = {
71
+ bg: '#0a0a0a',
72
+ card: '#141414',
73
+ border: '#262626',
74
+ borderStrong: '#3a3a3a',
75
+ text: '#fafafa',
76
+ textMuted: '#a3a3a3',
77
+ textSubtle: '#737373',
78
+ accent: '#fafafa',
79
+ accentText: '#0a0a0a',
80
+ danger: '#f87171',
81
+ success: '#a3e635',
82
+ progress: '#fafafa',
83
+ progressBg: '#262626',
84
+ };
85
+ const mono = "'JetBrains Mono', 'Fira Code', ui-monospace, SFMono-Regular, Menlo, Consolas, monospace";
86
+ function OnboardingFlow() {
87
+ const [status, setStatus] = (0, react_1.useState)('loading');
88
+ const [step, setStep] = (0, react_1.useState)(0);
89
+ const [form, setForm] = (0, react_1.useState)(initialState);
90
+ const [submitting, setSubmitting] = (0, react_1.useState)(false);
91
+ const [submitError, setSubmitError] = (0, react_1.useState)(null);
92
+ (0, react_1.useEffect)(() => {
93
+ let cancelled = false;
94
+ fetch('/api/ink/onboarding/status')
95
+ .then((r) => r.json())
96
+ .then((data) => {
97
+ if (cancelled)
98
+ return;
99
+ setStatus(data.configured ? 'complete' : 'pending');
100
+ })
101
+ .catch(() => {
102
+ if (!cancelled)
103
+ setStatus('pending');
104
+ });
105
+ return () => {
106
+ cancelled = true;
107
+ };
108
+ }, []);
109
+ if (status === 'loading' || status === 'complete')
110
+ return null;
111
+ const totalSteps = stepTitles.length;
112
+ const { title, help } = stepTitles[step];
113
+ function update(key, value) {
114
+ setForm((prev) => ({ ...prev, [key]: value }));
115
+ }
116
+ function canAdvance() {
117
+ switch (step) {
118
+ case 0:
119
+ return form.siteName.trim().length > 0;
120
+ case 1:
121
+ return form.audiences.some((a) => a.segment.trim().length > 0);
122
+ case 2:
123
+ return form.objectives.some((o) => o.objective.trim().length > 0);
124
+ case 3:
125
+ return true;
126
+ case 4:
127
+ return form.brandVoice.trim().length > 0;
128
+ case 5:
129
+ return form.digestRecipients.some((r) => /.+@.+\..+/.test(r.email));
130
+ case 6:
131
+ return true;
132
+ case 7:
133
+ return /^\d{6,}$/.test(form.ga4PropertyId.trim());
134
+ case 8:
135
+ return true;
136
+ default:
137
+ return true;
138
+ }
139
+ }
140
+ async function submit() {
141
+ setSubmitting(true);
142
+ setSubmitError(null);
143
+ try {
144
+ const cleaned = {
145
+ ...form,
146
+ audiences: form.audiences.filter((a) => a.segment.trim()),
147
+ objectives: form.objectives.filter((o) => o.objective.trim()),
148
+ conversionEvents: form.conversionEvents.filter((e) => e.eventName.trim()),
149
+ competitors: form.competitors.filter((c) => c.url.trim()),
150
+ digestRecipients: form.digestRecipients.filter((r) => /.+@.+\..+/.test(r.email)),
151
+ guardrails: form.guardrails.filter((g) => g.rule.trim()),
152
+ ga4PropertyId: form.ga4PropertyId.trim(),
153
+ };
154
+ if (!form.gaConnectionVerifiedAt) {
155
+ delete cleaned.gaConnectionVerifiedAt;
156
+ }
157
+ const res = await fetch('/api/ink/onboarding', {
158
+ method: 'POST',
159
+ headers: { 'Content-Type': 'application/json' },
160
+ body: JSON.stringify(cleaned),
161
+ });
162
+ const data = await res.json();
163
+ if (!res.ok)
164
+ throw new Error(data.error ?? 'Save failed');
165
+ setStatus('complete');
166
+ }
167
+ catch (err) {
168
+ setSubmitError(err instanceof Error ? err.message : 'Save failed');
169
+ }
170
+ finally {
171
+ setSubmitting(false);
172
+ }
173
+ }
174
+ return ((0, jsx_runtime_1.jsx)("div", { style: { background: colors.bg, padding: '32px 0', marginBottom: '24px', fontFamily: mono }, children: (0, jsx_runtime_1.jsxs)("div", { style: {
175
+ maxWidth: '640px',
176
+ margin: '0 auto',
177
+ background: colors.card,
178
+ border: `1px solid ${colors.border}`,
179
+ overflow: 'hidden',
180
+ }, children: [(0, jsx_runtime_1.jsx)(Progress, { step: step, total: totalSteps }), (0, jsx_runtime_1.jsxs)("div", { style: { padding: '32px' }, children: [(0, jsx_runtime_1.jsxs)("div", { style: { marginBottom: '28px' }, children: [(0, jsx_runtime_1.jsxs)("p", { style: { margin: 0, fontSize: '10px', letterSpacing: '0.15em', textTransform: 'uppercase', color: colors.textSubtle, fontWeight: 700 }, children: ["INK / STEP ", String(step + 1).padStart(2, '0'), " OF ", String(totalSteps).padStart(2, '0')] }), (0, jsx_runtime_1.jsx)("h2", { style: { margin: '10px 0 8px', fontSize: '22px', fontWeight: 700, color: colors.text, lineHeight: 1.25, fontFamily: mono }, children: title }), (0, jsx_runtime_1.jsx)("p", { style: { margin: 0, fontSize: '13px', color: colors.textMuted, lineHeight: 1.6 }, children: help })] }), (0, jsx_runtime_1.jsx)("div", { style: { minHeight: '180px' }, children: renderStep(step, form, update) }), submitError && ((0, jsx_runtime_1.jsx)("p", { style: { color: colors.danger, fontSize: '13px', marginTop: '16px' }, children: submitError })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', justifyContent: 'space-between', alignItems: 'center', marginTop: '32px', paddingTop: '20px', borderTop: `1px solid ${colors.border}` }, children: [(0, jsx_runtime_1.jsx)("button", { onClick: () => setStep((s) => Math.max(0, s - 1)), disabled: step === 0 || submitting, style: {
181
+ background: 'transparent',
182
+ color: step === 0 ? colors.textSubtle : colors.text,
183
+ border: 'none',
184
+ fontSize: '14px',
185
+ fontWeight: 500,
186
+ cursor: step === 0 ? 'not-allowed' : 'pointer',
187
+ padding: '8px 4px',
188
+ }, children: "\u2190 Back" }), step < totalSteps - 1 ? ((0, jsx_runtime_1.jsx)("button", { onClick: () => setStep((s) => Math.min(totalSteps - 1, s + 1)), disabled: !canAdvance() || submitting, style: primaryButtonStyle(!canAdvance() || submitting), children: "CONTINUE \u2192" })) : ((0, jsx_runtime_1.jsx)("button", { onClick: submit, disabled: submitting, style: primaryButtonStyle(submitting), children: submitting ? 'SAVING…' : 'FINISH SETUP' }))] })] })] }) }));
189
+ }
190
+ function Progress({ step, total }) {
191
+ const pct = ((step + 1) / total) * 100;
192
+ return ((0, jsx_runtime_1.jsx)("div", { style: { height: '4px', background: colors.progressBg, width: '100%' }, children: (0, jsx_runtime_1.jsx)("div", { style: { height: '100%', width: `${pct}%`, background: colors.progress, transition: 'width 200ms ease' } }) }));
193
+ }
194
+ function renderStep(step, form, update) {
195
+ switch (step) {
196
+ case 0:
197
+ return ((0, jsx_runtime_1.jsx)(Field, { label: "Site name", children: (0, jsx_runtime_1.jsx)("input", { type: "text", value: form.siteName, onChange: (e) => update('siteName', e.target.value), placeholder: "e.g. Sister Manchester", style: inputStyle, autoFocus: true }) }));
198
+ case 1:
199
+ return ((0, jsx_runtime_1.jsx)(ArrayField, { items: form.audiences, onChange: (items) => update('audiences', items), addLabel: "Add another audience", empty: { segment: '', description: '' }, renderRow: (item, set) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("input", { type: "text", value: item.segment, onChange: (e) => set({ ...item, segment: e.target.value }), placeholder: "Audience segment", style: inputStyle }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: item.description, onChange: (e) => set({ ...item, description: e.target.value }), placeholder: "One-line description (optional)", style: { ...inputStyle, marginTop: '8px' } })] })) }));
200
+ case 2:
201
+ return ((0, jsx_runtime_1.jsx)(ArrayField, { items: form.objectives, onChange: (items) => update('objectives', items.slice(0, 3)), addLabel: form.objectives.length < 3 ? 'Add another objective' : null, empty: { objective: '' }, renderRow: (item, set) => ((0, jsx_runtime_1.jsx)("input", { type: "text", value: item.objective, onChange: (e) => set({ ...item, objective: e.target.value }), placeholder: "e.g. Drive event-space hire enquiries", style: inputStyle })), hint: "Maximum three. The first should be your most important." }));
202
+ case 3:
203
+ return ((0, jsx_runtime_1.jsx)(ArrayField, { items: form.conversionEvents, onChange: (items) => update('conversionEvents', items), addLabel: "Add a conversion event", empty: { eventName: '', description: '' }, emptyState: "No conversion events yet. Add one, or skip this step.", hint: "The event name must match exactly what your site fires to GA4 (case-sensitive). Description is for context \u2014 INK uses it when writing about conversions.", renderRow: (item, set) => ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("input", { type: "text", value: item.eventName, onChange: (e) => set({ ...item, eventName: e.target.value }), placeholder: "GA4 event name \u2014 e.g. member_join_click", style: inputStyle }), (0, jsx_runtime_1.jsx)("input", { type: "text", value: item.description, onChange: (e) => set({ ...item, description: e.target.value }), placeholder: "What this conversion means (optional)", style: { ...inputStyle, marginTop: '8px' } })] })) }));
204
+ case 4:
205
+ return ((0, jsx_runtime_1.jsxs)(Field, { label: "Brand voice", children: [(0, jsx_runtime_1.jsx)("textarea", { value: form.brandVoice, onChange: (e) => update('brandVoice', e.target.value), placeholder: "Describe how the brand sounds. Tone, sentence length, formality, words to avoid.", rows: 4, style: { ...inputStyle, resize: 'vertical', minHeight: '110px' } }), (0, jsx_runtime_1.jsxs)("div", { style: { marginTop: '12px' }, children: [(0, jsx_runtime_1.jsx)("p", { style: { margin: '0 0 8px', fontSize: '12px', color: colors.textSubtle, fontWeight: 600, letterSpacing: '0.04em', textTransform: 'uppercase' }, children: "Starting points" }), (0, jsx_runtime_1.jsx)("div", { style: { display: 'flex', flexDirection: 'column', gap: '6px' }, children: voicePresets.map((preset) => ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => update('brandVoice', preset), style: {
206
+ textAlign: 'left',
207
+ background: form.brandVoice === preset ? '#1c1c1c' : 'transparent',
208
+ border: `1px solid ${form.brandVoice === preset ? colors.borderStrong : colors.border}`,
209
+ borderRadius: 0,
210
+ padding: '10px 12px',
211
+ fontSize: '12px',
212
+ color: colors.text,
213
+ cursor: 'pointer',
214
+ lineHeight: 1.5,
215
+ fontFamily: mono,
216
+ }, children: preset }, preset))) })] })] }));
217
+ case 5:
218
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(Field, { label: "Digest cadence", children: (0, jsx_runtime_1.jsx)("div", { style: { display: 'grid', gridTemplateColumns: 'repeat(3, 1fr)', gap: '8px' }, children: ['weekly', 'fortnightly', 'monthly'].map((c) => {
219
+ const active = form.cadence === c;
220
+ return ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => update('cadence', c), style: {
221
+ background: active ? colors.accent : 'transparent',
222
+ color: active ? colors.accentText : colors.text,
223
+ border: `1px solid ${active ? colors.accent : colors.border}`,
224
+ borderRadius: 0,
225
+ padding: '10px 12px',
226
+ fontSize: '11px',
227
+ fontWeight: 700,
228
+ letterSpacing: '0.1em',
229
+ cursor: 'pointer',
230
+ textTransform: 'uppercase',
231
+ fontFamily: mono,
232
+ }, children: c }, c));
233
+ }) }) }), (0, jsx_runtime_1.jsx)("div", { style: { marginTop: '20px' }, children: (0, jsx_runtime_1.jsx)(ArrayField, { label: "Digest recipients", items: form.digestRecipients, onChange: (items) => update('digestRecipients', items), addLabel: "Add another recipient", empty: { email: '' }, renderRow: (item, set) => ((0, jsx_runtime_1.jsx)("input", { type: "email", value: item.email, onChange: (e) => set({ ...item, email: e.target.value }), placeholder: "name@example.com", style: inputStyle })) }) })] }));
234
+ case 6:
235
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(ArrayField, { label: "Competitors", items: form.competitors, onChange: (items) => update('competitors', items), addLabel: "Add a competitor", empty: { url: '' }, emptyState: "None yet. Skip if you'd rather not say.", renderRow: (item, set) => ((0, jsx_runtime_1.jsx)("input", { type: "url", value: item.url, onChange: (e) => set({ ...item, url: e.target.value }), placeholder: "https://example.com", style: inputStyle })) }), (0, jsx_runtime_1.jsx)("div", { style: { marginTop: '24px' }, children: (0, jsx_runtime_1.jsx)(ArrayField, { label: "Guardrails", items: form.guardrails, onChange: (items) => update('guardrails', items), addLabel: "Add a guardrail", empty: { rule: '' }, emptyState: "Optional. e.g. \u2018Never use the word synergy.\u2019", renderRow: (item, set) => ((0, jsx_runtime_1.jsx)("input", { type: "text", value: item.rule, onChange: (e) => set({ ...item, rule: e.target.value }), placeholder: "A rule INK must never break", style: inputStyle })) }) })] }));
236
+ case 7:
237
+ return ((0, jsx_runtime_1.jsx)(GaConnectStep, { propertyId: form.ga4PropertyId, verifiedAt: form.gaConnectionVerifiedAt, onChange: (propertyId, verifiedAt) => {
238
+ update('ga4PropertyId', propertyId);
239
+ if (verifiedAt !== undefined)
240
+ update('gaConnectionVerifiedAt', verifiedAt);
241
+ } }));
242
+ case 8:
243
+ return (0, jsx_runtime_1.jsx)(ReviewStep, { form: form });
244
+ default:
245
+ return null;
246
+ }
247
+ }
248
+ function GaConnectStep({ propertyId, verifiedAt, onChange, }) {
249
+ const [accessEmail, setAccessEmail] = react_1.default.useState(null);
250
+ const [testState, setTestState] = react_1.default.useState(verifiedAt ? 'ok' : 'idle');
251
+ const [testMessage, setTestMessage] = react_1.default.useState(null);
252
+ const [copied, setCopied] = react_1.default.useState(false);
253
+ react_1.default.useEffect(() => {
254
+ fetch('/api/ink/config')
255
+ .then((r) => (r.ok ? r.json() : null))
256
+ .then((data) => {
257
+ if (data?.gaAccessEmail)
258
+ setAccessEmail(data.gaAccessEmail);
259
+ })
260
+ .catch(() => { });
261
+ }, []);
262
+ async function copyEmail() {
263
+ if (!accessEmail)
264
+ return;
265
+ try {
266
+ await navigator.clipboard.writeText(accessEmail);
267
+ setCopied(true);
268
+ setTimeout(() => setCopied(false), 1800);
269
+ }
270
+ catch {
271
+ // ignore
272
+ }
273
+ }
274
+ async function test() {
275
+ setTestState('testing');
276
+ setTestMessage(null);
277
+ try {
278
+ const res = await fetch(`/api/ink/ga4-test?propertyId=${encodeURIComponent(propertyId.trim())}`);
279
+ const data = await res.json();
280
+ if (data?.ok) {
281
+ setTestState('ok');
282
+ setTestMessage(`Connected — ${data.sessions?.toLocaleString?.() ?? data.sessions} sessions in last 7d.`);
283
+ onChange(propertyId, new Date().toISOString());
284
+ }
285
+ else {
286
+ setTestState('error');
287
+ setTestMessage(data?.error ?? 'Connection failed.');
288
+ onChange(propertyId, '');
289
+ }
290
+ }
291
+ catch (err) {
292
+ setTestState('error');
293
+ setTestMessage(err instanceof Error ? err.message : 'Connection failed.');
294
+ onChange(propertyId, '');
295
+ }
296
+ }
297
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: '20px' }, children: [(0, jsx_runtime_1.jsxs)(Field, { label: "Step 1 \u2014 Add this email to your GA4 property", children: [(0, jsx_runtime_1.jsxs)("div", { style: {
298
+ background: '#1c1c1c',
299
+ border: `1px solid ${colors.border}`,
300
+ padding: '12px 14px',
301
+ display: 'flex',
302
+ alignItems: 'center',
303
+ gap: '12px',
304
+ justifyContent: 'space-between',
305
+ }, children: [(0, jsx_runtime_1.jsx)("code", { style: { fontFamily: mono, fontSize: '13px', color: colors.text }, children: accessEmail ?? 'loading…' }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: copyEmail, disabled: !accessEmail, style: {
306
+ background: 'transparent',
307
+ border: `1px solid ${colors.borderStrong}`,
308
+ borderRadius: 0,
309
+ padding: '6px 12px',
310
+ fontSize: '10px',
311
+ fontWeight: 700,
312
+ letterSpacing: '0.1em',
313
+ textTransform: 'uppercase',
314
+ color: colors.text,
315
+ fontFamily: mono,
316
+ cursor: accessEmail ? 'pointer' : 'not-allowed',
317
+ }, children: copied ? '✓ Copied' : 'Copy' })] }), (0, jsx_runtime_1.jsxs)("p", { style: { margin: '10px 0 0', fontSize: '12px', color: colors.textMuted, lineHeight: 1.55 }, children: ["In GA4: ", (0, jsx_runtime_1.jsx)("span", { style: { color: colors.text }, children: "Admin \u2192 Property Access Management \u2192 + Add users" }), ' ', "\u2192 paste this email \u2192 role ", (0, jsx_runtime_1.jsx)("span", { style: { color: colors.text }, children: "Viewer" }), " \u2192 uncheck \"Notify by email\" \u2192 Add."] })] }), (0, jsx_runtime_1.jsxs)(Field, { label: "Step 2 \u2014 Paste your GA4 property ID", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", value: propertyId, onChange: (e) => {
318
+ onChange(e.target.value, '');
319
+ setTestState('idle');
320
+ setTestMessage(null);
321
+ }, placeholder: "e.g. 337097713", inputMode: "numeric", style: inputStyle }), (0, jsx_runtime_1.jsx)("p", { style: { margin: '8px 0 0', fontSize: '12px', color: colors.textSubtle, lineHeight: 1.55 }, children: "Numeric only \u2014 find it in GA4 \u2192 Admin \u2192 Property settings. Not the G-prefixed Measurement ID." })] }), (0, jsx_runtime_1.jsx)(Field, { label: "Step 3 \u2014 Test the connection", children: (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', gap: '12px', alignItems: 'center', flexWrap: 'wrap' }, children: [(0, jsx_runtime_1.jsx)("button", { type: "button", onClick: test, disabled: testState === 'testing' || !/^\d{6,}$/.test(propertyId.trim()), style: {
322
+ background: testState === 'ok' ? 'transparent' : colors.accent,
323
+ color: testState === 'ok' ? colors.success : colors.accentText,
324
+ border: testState === 'ok' ? `1px solid ${colors.success}` : 'none',
325
+ padding: '9px 18px',
326
+ fontSize: '11px',
327
+ fontWeight: 700,
328
+ letterSpacing: '0.1em',
329
+ textTransform: 'uppercase',
330
+ fontFamily: mono,
331
+ cursor: testState === 'testing' || !/^\d{6,}$/.test(propertyId.trim()) ? 'not-allowed' : 'pointer',
332
+ }, children: testState === 'testing'
333
+ ? 'Testing…'
334
+ : testState === 'ok'
335
+ ? '✓ Connected'
336
+ : 'Test connection' }), testMessage && ((0, jsx_runtime_1.jsx)("span", { style: {
337
+ fontSize: '12px',
338
+ color: testState === 'ok' ? colors.success : colors.danger,
339
+ flex: 1,
340
+ }, children: testMessage }))] }) })] }));
341
+ }
342
+ function Field({ label, children }) {
343
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { style: { display: 'block', fontSize: '10px', fontWeight: 700, letterSpacing: '0.15em', textTransform: 'uppercase', color: colors.textMuted, marginBottom: '10px', fontFamily: mono }, children: label }), children] }));
344
+ }
345
+ function ArrayField(props) {
346
+ const { items, onChange, empty, renderRow, addLabel, label, hint, emptyState } = props;
347
+ return ((0, jsx_runtime_1.jsxs)("div", { children: [label && ((0, jsx_runtime_1.jsx)("label", { style: { display: 'block', fontSize: '10px', fontWeight: 700, letterSpacing: '0.15em', textTransform: 'uppercase', color: colors.textMuted, marginBottom: '10px', fontFamily: mono }, children: label })), (0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: '12px' }, children: [items.length === 0 && emptyState && ((0, jsx_runtime_1.jsx)("p", { style: { margin: 0, fontSize: '13px', color: colors.textSubtle, fontStyle: 'italic' }, children: emptyState })), items.map((item, i) => ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', alignItems: 'flex-start', gap: '8px' }, children: [(0, jsx_runtime_1.jsx)("div", { style: { flex: 1 }, children: renderRow(item, (next) => {
348
+ const copy = [...items];
349
+ copy[i] = next;
350
+ onChange(copy);
351
+ }) }), (0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => onChange(items.filter((_, idx) => idx !== i)), "aria-label": "Remove", style: {
352
+ background: 'transparent',
353
+ border: 'none',
354
+ color: colors.textSubtle,
355
+ fontSize: '18px',
356
+ cursor: 'pointer',
357
+ lineHeight: 1,
358
+ padding: '8px',
359
+ }, children: "\u00D7" })] }, i)))] }), addLabel && ((0, jsx_runtime_1.jsxs)("button", { type: "button", onClick: () => onChange([...items, { ...empty }]), style: {
360
+ marginTop: '12px',
361
+ background: 'transparent',
362
+ border: `1px dashed ${colors.borderStrong}`,
363
+ borderRadius: 0,
364
+ color: colors.textMuted,
365
+ fontSize: '11px',
366
+ letterSpacing: '0.08em',
367
+ padding: '10px 12px',
368
+ cursor: 'pointer',
369
+ width: '100%',
370
+ fontFamily: mono,
371
+ textTransform: 'uppercase',
372
+ }, children: ["+ ", addLabel] })), hint && (0, jsx_runtime_1.jsx)("p", { style: { margin: '10px 0 0', fontSize: '12px', color: colors.textSubtle }, children: hint })] }));
373
+ }
374
+ function ReviewStep({ form }) {
375
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'flex', flexDirection: 'column', gap: '14px', fontSize: '13px' }, children: [(0, jsx_runtime_1.jsx)(ReviewRow, { label: "Site", value: form.siteName }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Audiences", value: form.audiences.filter((a) => a.segment).map((a) => a.segment).join(', ') }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Objectives", value: form.objectives.filter((o) => o.objective).map((o) => o.objective).join(' · ') }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Conversions", value: form.conversionEvents.map((e) => e.eventName).filter(Boolean).join(', ') || '—' }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Voice", value: form.brandVoice, multiline: true }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Cadence", value: form.cadence, capitalize: true }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Digest to", value: form.digestRecipients.map((r) => r.email).filter(Boolean).join(', ') }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Competitors", value: form.competitors.map((c) => c.url).filter(Boolean).join(', ') || '—' }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "Guardrails", value: form.guardrails.map((g) => g.rule).filter(Boolean).join(' · ') || '—' }), (0, jsx_runtime_1.jsx)(ReviewRow, { label: "GA4 property", value: form.gaConnectionVerifiedAt ? `${form.ga4PropertyId} ✓ verified` : form.ga4PropertyId || '— not set' })] }));
376
+ }
377
+ function ReviewRow({ label, value, multiline, capitalize }) {
378
+ return ((0, jsx_runtime_1.jsxs)("div", { style: { display: 'grid', gridTemplateColumns: '110px 1fr', gap: '12px', alignItems: multiline ? 'flex-start' : 'center' }, children: [(0, jsx_runtime_1.jsx)("span", { style: { color: colors.textSubtle, fontSize: '10px', textTransform: 'uppercase', letterSpacing: '0.15em', fontWeight: 700, fontFamily: mono }, children: label }), (0, jsx_runtime_1.jsx)("span", { style: { color: colors.text, lineHeight: 1.55, textTransform: capitalize ? 'capitalize' : 'none', fontSize: '13px', fontFamily: mono }, children: value || '—' })] }));
379
+ }
380
+ const inputStyle = {
381
+ width: '100%',
382
+ border: `1px solid ${colors.border}`,
383
+ borderRadius: 0,
384
+ padding: '10px 12px',
385
+ fontSize: '13px',
386
+ color: colors.text,
387
+ background: '#0a0a0a',
388
+ boxSizing: 'border-box',
389
+ outline: 'none',
390
+ fontFamily: mono,
391
+ };
392
+ function primaryButtonStyle(disabled) {
393
+ return {
394
+ background: disabled ? colors.borderStrong : colors.accent,
395
+ color: disabled ? colors.textSubtle : colors.accentText,
396
+ border: 'none',
397
+ borderRadius: 0,
398
+ padding: '10px 20px',
399
+ fontSize: '11px',
400
+ fontWeight: 700,
401
+ letterSpacing: '0.1em',
402
+ fontFamily: mono,
403
+ cursor: disabled ? 'not-allowed' : 'pointer',
404
+ };
405
+ }
406
+ //# sourceMappingURL=OnboardingFlow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OnboardingFlow.js","sourceRoot":"","sources":["../../src/components/OnboardingFlow.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export { AuditPanel } from './AuditPanel.js';
2
+ export { OnboardingFlow } from './OnboardingFlow.js';
3
+ export { AnalyticsPanel } from './AnalyticsPanel.js';
4
+ export { FreshnessPanel } from './FreshnessPanel.js';
5
+ export { AuditsPanel } from './AuditsPanel.js';
6
+ export { DigestPanel } from './DigestPanel.js';
7
+ export { InkGradeCell } from './InkGradeCell.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InkGradeCell = exports.DigestPanel = exports.AuditsPanel = exports.FreshnessPanel = exports.AnalyticsPanel = exports.OnboardingFlow = exports.AuditPanel = void 0;
4
+ var AuditPanel_js_1 = require("./AuditPanel.js");
5
+ Object.defineProperty(exports, "AuditPanel", { enumerable: true, get: function () { return AuditPanel_js_1.AuditPanel; } });
6
+ var OnboardingFlow_js_1 = require("./OnboardingFlow.js");
7
+ Object.defineProperty(exports, "OnboardingFlow", { enumerable: true, get: function () { return OnboardingFlow_js_1.OnboardingFlow; } });
8
+ var AnalyticsPanel_js_1 = require("./AnalyticsPanel.js");
9
+ Object.defineProperty(exports, "AnalyticsPanel", { enumerable: true, get: function () { return AnalyticsPanel_js_1.AnalyticsPanel; } });
10
+ var FreshnessPanel_js_1 = require("./FreshnessPanel.js");
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; } });
14
+ var DigestPanel_js_1 = require("./DigestPanel.js");
15
+ Object.defineProperty(exports, "DigestPanel", { enumerable: true, get: function () { return DigestPanel_js_1.DigestPanel; } });
16
+ var InkGradeCell_js_1 = require("./InkGradeCell.js");
17
+ Object.defineProperty(exports, "InkGradeCell", { enumerable: true, get: function () { return InkGradeCell_js_1.InkGradeCell; } });
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/components/index.ts"],"names":[],"mappings":";;;AAAA,iDAA4C;AAAnC,2GAAA,UAAU,OAAA;AACnB,yDAAoD;AAA3C,mHAAA,cAAc,OAAA;AACvB,yDAAoD;AAA3C,mHAAA,cAAc,OAAA;AACvB,yDAAoD;AAA3C,mHAAA,cAAc,OAAA;AACvB,mDAA8C;AAArC,6GAAA,WAAW,OAAA;AACpB,mDAA8C;AAArC,6GAAA,WAAW,OAAA;AACpB,qDAAgD;AAAvC,+GAAA,YAAY,OAAA"}
@@ -0,0 +1,9 @@
1
+ import type { PayloadHandler } from 'payload';
2
+ type Options = {
3
+ serviceUrl: string;
4
+ apiKey: string;
5
+ };
6
+ export declare function makeRealtimeHandler(options: Options): PayloadHandler;
7
+ export declare function makeAnalyticsHandler(options: Options): PayloadHandler;
8
+ export {};
9
+ //# sourceMappingURL=analytics.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.d.ts","sourceRoot":"","sources":["../../src/endpoints/analytics.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAE7C,KAAK,OAAO,GAAG;IACb,UAAU,EAAE,MAAM,CAAA;IAClB,MAAM,EAAE,MAAM,CAAA;CACf,CAAA;AAQD,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAsBpE;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAyCrE"}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.makeRealtimeHandler = makeRealtimeHandler;
4
+ exports.makeAnalyticsHandler = makeAnalyticsHandler;
5
+ async function getPropertyId(payload) {
6
+ const r = await payload.find({ collection: 'ink-onboarding-profile', limit: 1, depth: 0 });
7
+ const profile = r.docs[0];
8
+ return profile?.ga4PropertyId ?? process.env.INK_GA4_PROPERTY_ID ?? null;
9
+ }
10
+ function makeRealtimeHandler(options) {
11
+ return async (req) => {
12
+ const propertyId = await getPropertyId(req.payload);
13
+ if (!propertyId) {
14
+ return Response.json({ error: 'No GA4 property ID configured.' }, { status: 400 });
15
+ }
16
+ try {
17
+ const res = await fetch(`${options.serviceUrl}/v1/analytics/realtime`, {
18
+ method: 'POST',
19
+ headers: { 'Content-Type': 'application/json', 'x-api-key': options.apiKey },
20
+ body: JSON.stringify({ propertyId }),
21
+ });
22
+ const data = await res.json();
23
+ if (!res.ok)
24
+ return Response.json(data, { status: res.status });
25
+ return Response.json(data);
26
+ }
27
+ catch (err) {
28
+ return Response.json({ error: err instanceof Error ? err.message : 'Realtime call failed' }, { status: 500 });
29
+ }
30
+ };
31
+ }
32
+ function makeAnalyticsHandler(options) {
33
+ return async (req) => {
34
+ const { payload } = req;
35
+ const profileResult = await payload.find({
36
+ collection: 'ink-onboarding-profile',
37
+ limit: 1,
38
+ depth: 0,
39
+ });
40
+ const profile = profileResult.docs[0];
41
+ const propertyId = profile?.ga4PropertyId ?? process.env.INK_GA4_PROPERTY_ID;
42
+ if (!propertyId) {
43
+ return Response.json({ error: 'No GA4 property ID configured. Add it in INK → Onboarding Profile.' }, { status: 400 });
44
+ }
45
+ const url = new URL(req.url ?? 'http://localhost');
46
+ const days = Number(url.searchParams.get('days') ?? '7');
47
+ try {
48
+ const res = await fetch(`${options.serviceUrl}/v1/analytics/summary`, {
49
+ method: 'POST',
50
+ headers: {
51
+ 'Content-Type': 'application/json',
52
+ 'x-api-key': options.apiKey,
53
+ },
54
+ body: JSON.stringify({ propertyId, days }),
55
+ });
56
+ const data = await res.json();
57
+ if (!res.ok) {
58
+ return Response.json(data, { status: res.status });
59
+ }
60
+ return Response.json(data);
61
+ }
62
+ catch (err) {
63
+ const message = err instanceof Error ? err.message : 'Analytics call failed';
64
+ return Response.json({ error: message }, { status: 500 });
65
+ }
66
+ };
67
+ }
68
+ //# sourceMappingURL=analytics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"analytics.js","sourceRoot":"","sources":["../../src/endpoints/analytics.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { PayloadHandler } from 'payload';
2
+ import type { AuditTarget } from '../types.js';
3
+ type Options = {
4
+ auditTargets: AuditTarget[];
5
+ type: 'seo' | 'freshness';
6
+ };
7
+ export declare function makeAuditChangesHandler(options: Options): PayloadHandler;
8
+ export {};
9
+ //# sourceMappingURL=auditChanges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auditChanges.d.ts","sourceRoot":"","sources":["../../src/endpoints/auditChanges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAA;AAC7C,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AAE9C,KAAK,OAAO,GAAG;IACb,YAAY,EAAE,WAAW,EAAE,CAAA;IAC3B,IAAI,EAAE,KAAK,GAAG,WAAW,CAAA;CAC1B,CAAA;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,cAAc,CAqDxE"}