@book.dev/sdk 1.60.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (81) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +23 -0
  3. package/dist/account.d.ts +57 -0
  4. package/dist/account.js +104 -0
  5. package/dist/account.js.map +1 -0
  6. package/dist/ai.d.ts +264 -0
  7. package/dist/ai.js +36 -0
  8. package/dist/ai.js.map +1 -0
  9. package/dist/backup.d.ts +52 -0
  10. package/dist/backup.js +35 -0
  11. package/dist/backup.js.map +1 -0
  12. package/dist/bookFolder.d.ts +44 -0
  13. package/dist/bookFolder.js +98 -0
  14. package/dist/bookFolder.js.map +1 -0
  15. package/dist/bookfile.d.ts +42 -0
  16. package/dist/bookfile.js +159 -0
  17. package/dist/bookfile.js.map +1 -0
  18. package/dist/client.d.ts +279 -0
  19. package/dist/client.js +502 -0
  20. package/dist/client.js.map +1 -0
  21. package/dist/connection.d.ts +20 -0
  22. package/dist/connection.js +77 -0
  23. package/dist/connection.js.map +1 -0
  24. package/dist/content.d.ts +38 -0
  25. package/dist/content.js +107 -0
  26. package/dist/content.js.map +1 -0
  27. package/dist/database.d.ts +687 -0
  28. package/dist/database.js +1082 -0
  29. package/dist/database.js.map +1 -0
  30. package/dist/formula.d.ts +41 -0
  31. package/dist/formula.js +469 -0
  32. package/dist/formula.js.map +1 -0
  33. package/dist/forwarding/challenge.d.ts +35 -0
  34. package/dist/forwarding/challenge.js +45 -0
  35. package/dist/forwarding/challenge.js.map +1 -0
  36. package/dist/forwarding/encoding.d.ts +14 -0
  37. package/dist/forwarding/encoding.js +54 -0
  38. package/dist/forwarding/encoding.js.map +1 -0
  39. package/dist/forwarding/forwardingClient.d.ts +76 -0
  40. package/dist/forwarding/forwardingClient.js +128 -0
  41. package/dist/forwarding/forwardingClient.js.map +1 -0
  42. package/dist/forwarding/index.d.ts +5 -0
  43. package/dist/forwarding/index.js +14 -0
  44. package/dist/forwarding/index.js.map +1 -0
  45. package/dist/forwarding/siteKey.d.ts +12 -0
  46. package/dist/forwarding/siteKey.js +36 -0
  47. package/dist/forwarding/siteKey.js.map +1 -0
  48. package/dist/forwarding/tunnelClient.d.ts +56 -0
  49. package/dist/forwarding/tunnelClient.js +206 -0
  50. package/dist/forwarding/tunnelClient.js.map +1 -0
  51. package/dist/forwarding/tunnelProtocol.d.ts +45 -0
  52. package/dist/forwarding/tunnelProtocol.js +29 -0
  53. package/dist/forwarding/tunnelProtocol.js.map +1 -0
  54. package/dist/index.d.ts +23 -0
  55. package/dist/index.js +19 -0
  56. package/dist/index.js.map +1 -0
  57. package/dist/mtime.d.ts +51 -0
  58. package/dist/mtime.js +84 -0
  59. package/dist/mtime.js.map +1 -0
  60. package/dist/pageProperties.d.ts +80 -0
  61. package/dist/pageProperties.js +97 -0
  62. package/dist/pageProperties.js.map +1 -0
  63. package/dist/plugins.d.ts +110 -0
  64. package/dist/plugins.js +113 -0
  65. package/dist/plugins.js.map +1 -0
  66. package/dist/routes.d.ts +89 -0
  67. package/dist/routes.js +89 -0
  68. package/dist/routes.js.map +1 -0
  69. package/dist/sampleDocument.d.ts +25 -0
  70. package/dist/sampleDocument.js +67 -0
  71. package/dist/sampleDocument.js.map +1 -0
  72. package/dist/suggestions.d.ts +126 -0
  73. package/dist/suggestions.js +21 -0
  74. package/dist/suggestions.js.map +1 -0
  75. package/dist/templates.d.ts +35 -0
  76. package/dist/templates.js +555 -0
  77. package/dist/templates.js.map +1 -0
  78. package/dist/types.d.ts +146 -0
  79. package/dist/types.js +16 -0
  80. package/dist/types.js.map +1 -0
  81. package/package.json +33 -0
@@ -0,0 +1,555 @@
1
+ const emptySnapshot = (blocks) => ({
2
+ editorjs: { blocks },
3
+ values: [],
4
+ names: [],
5
+ });
6
+ /** A local `YYYY-MM-DD` day string offset by `days` from today. */
7
+ const day = (days) => {
8
+ const d = new Date();
9
+ d.setDate(d.getDate() + days);
10
+ return `${d.getFullYear()}-${String(d.getMonth() + 1).padStart(2, '0')}-${String(d.getDate()).padStart(2, '0')}`;
11
+ };
12
+ // ════════════════════════════════════════════════════════════════════════════
13
+ // Block-doc artifacts
14
+ //
15
+ // Authoring notes (the reactive contract, from blockeditor/kit/scope.ts):
16
+ // • Every input block publishes a value under its `name` (or one derived from
17
+ // `label`). All inputs are gathered *before* code runs, so a chart can read
18
+ // an input no matter where it sits — even inside a column.
19
+ // • LIVE code (`code` + `props.live`) and the charts/status/progress that read
20
+ // its output are evaluated in document (depth-first) order: a consumer must
21
+ // appear AFTER the code it reads. So each slide leads with a small "engine"
22
+ // of collapsed code, then a two-column inputs/results layout below it.
23
+ // • `collapsed: true` hides the code by default (the live readout still shows).
24
+ // • Top-level `divider`s cut slides; top-level `notes` are speaker-only.
25
+ // ════════════════════════════════════════════════════════════════════════════
26
+ // ── 🛒 Grocery price tracker ─────────────────────────────────────────────────
27
+ const GROCERY_BLOCKS = [
28
+ // Slide 1 — title
29
+ { id: 'g-tag', type: 'paragraph', text: [{ t: 'A weekly basket, priced across three shops — ' }, { t: 'live', a: { b: true } }, { t: '. Drag a shop’s total and the cheapest pick, your savings, and the budget light all recompute.' }] },
30
+ { id: 'g-call', type: 'callout', text: [{ t: 'Nothing here is a screenshot. The numbers are computed by code blocks tucked below each slide — click one to see (and change) the maths.' }], props: { variant: 'info' } },
31
+ { id: 'g-notes-1', type: 'notes', text: [{ t: 'Open the “…” menu → Present. Each divider is a slide; these notes only show in the presenter view.' }] },
32
+ { id: 'g-div-1', type: 'divider' },
33
+ // Slide 2 — compare shops
34
+ { id: 'g-h2', type: 'heading', text: [{ t: 'This week’s shop' }], props: { level: 2 } },
35
+ // engine (collapsed)
36
+ { id: 'g-best', type: 'code', text: [{ t: 'Math.min(aldi, tesco, ocado)' }], props: { live: true, name: 'best', language: 'js', collapsed: true } },
37
+ { id: 'g-store', type: 'code', text: [{ t: 'const m = {Aldi: aldi, Tesco: tesco, Ocado: ocado};\nreturn Object.keys(m).sort((a, b) => m[a] - m[b])[0];' }], props: { live: true, name: 'store', language: 'js', collapsed: true } },
38
+ { id: 'g-saving', type: 'code', text: [{ t: 'Math.max(aldi, tesco, ocado) - best' }], props: { live: true, name: 'saving', language: 'js', collapsed: true } },
39
+ { id: 'g-headline', type: 'code', text: [{ t: '"Cheapest: " + store + " at £" + best + " — £" + saving + " less than the priciest shop"' }], props: { live: true, name: 'headline', language: 'js', collapsed: true } },
40
+ {
41
+ id: 'g-cols',
42
+ type: 'columns',
43
+ children: [
44
+ {
45
+ id: 'g-col-l',
46
+ type: 'column',
47
+ props: { span: 5 },
48
+ children: [
49
+ { id: 'g-budget', type: 'number', props: { name: 'budget', label: 'Weekly budget (£)', value: 120, min: 40, max: 300, step: 5 } },
50
+ { id: 'g-aldi', type: 'slider', props: { name: 'aldi', label: 'Aldi basket', value: 86, min: 30, max: 200 } },
51
+ { id: 'g-tesco', type: 'slider', props: { name: 'tesco', label: 'Tesco basket', value: 99, min: 30, max: 200 } },
52
+ { id: 'g-ocado', type: 'slider', props: { name: 'ocado', label: 'Ocado basket', value: 112, min: 30, max: 200 } },
53
+ ],
54
+ },
55
+ {
56
+ id: 'g-col-r',
57
+ type: 'column',
58
+ props: { span: 7 },
59
+ children: [
60
+ { id: 'g-bar', type: 'kitchart', props: { kind: 'bar', title: 'Basket by shop (£)', labels: 'Aldi, Tesco, Ocado', source: '[aldi, tesco, ocado]' } },
61
+ { id: 'g-status', type: 'statuslight', props: { label: 'Within the weekly budget', source: 'budget - best', okAt: 0, warnAt: -20 } },
62
+ { id: 'g-prog', type: 'progressbar', props: { label: 'Budget used by the cheapest shop', source: 'best / budget', max: 1, format: 'percent' } },
63
+ ],
64
+ },
65
+ ],
66
+ },
67
+ { id: 'g-line', type: 'kitchart', props: { kind: 'line', title: 'Cheapest-basket trend (£)', labels: 'W‑3, W‑2, W‑1, Now', source: '[Math.round(best * 1.18), Math.round(best * 1.07), Math.round(best * 0.98), best]' } },
68
+ { id: 'g-notes-2', type: 'notes', text: [{ t: 'Demo the budget light: push the budget below the cheapest basket and it flips amber, then red.' }] },
69
+ { id: 'g-div-2', type: 'divider' },
70
+ // Slide 3 — shop smarter
71
+ { id: 'g-h3', type: 'heading', text: [{ t: 'Shop smarter' }], props: { level: 2 } },
72
+ {
73
+ id: 'g-cols2',
74
+ type: 'columns',
75
+ children: [
76
+ {
77
+ id: 'g-col2-l',
78
+ type: 'column',
79
+ props: { span: 6 },
80
+ children: [
81
+ { id: 'g-tip', type: 'tooltipcard', props: { term: 'Unit price', tip: 'Price per kg or per litre — compare that, not the sticker price, or pack sizes fool you.' } },
82
+ { id: 'g-li1', type: 'list', text: [{ t: 'Compare own-label vs branded — usually 15–20% cheaper.' }], props: { kind: 'bullet' } },
83
+ { id: 'g-li2', type: 'list', text: [{ t: 'Buy staples in the cheapest shop; top up fresh nearby.' }], props: { kind: 'bullet' } },
84
+ { id: 'g-li3', type: 'list', text: [{ t: 'Re-price the basket monthly — prices drift.' }], props: { kind: 'bullet' } },
85
+ ],
86
+ },
87
+ {
88
+ id: 'g-col2-r',
89
+ type: 'column',
90
+ props: { span: 6 },
91
+ children: [
92
+ { id: 'g-link', type: 'linkcard', props: { title: 'Compare unit prices', description: 'Track grocery prices across UK supermarkets.', url: 'https://www.trolley.co.uk' } },
93
+ ],
94
+ },
95
+ ],
96
+ },
97
+ {
98
+ id: 'g-table',
99
+ type: 'table',
100
+ props: { header: true },
101
+ children: [
102
+ { id: 'g-tr0', type: 'row', children: [{ id: 'g-c00', type: 'cell', text: [{ t: 'Item' }] }, { id: 'g-c01', type: 'cell', text: [{ t: 'Aldi' }] }, { id: 'g-c02', type: 'cell', text: [{ t: 'Tesco' }] }, { id: 'g-c03', type: 'cell', text: [{ t: 'Ocado' }] }] },
103
+ { id: 'g-tr1', type: 'row', children: [{ id: 'g-c10', type: 'cell', text: [{ t: 'Milk (2L)' }] }, { id: 'g-c11', type: 'cell', text: [{ t: '£1.45' }] }, { id: 'g-c12', type: 'cell', text: [{ t: '£1.65' }] }, { id: 'g-c13', type: 'cell', text: [{ t: '£1.70' }] }] },
104
+ { id: 'g-tr2', type: 'row', children: [{ id: 'g-c20', type: 'cell', text: [{ t: 'Eggs (12)' }] }, { id: 'g-c21', type: 'cell', text: [{ t: '£1.99' }] }, { id: 'g-c22', type: 'cell', text: [{ t: '£2.30' }] }, { id: 'g-c23', type: 'cell', text: [{ t: '£2.55' }] }] },
105
+ { id: 'g-tr3', type: 'row', children: [{ id: 'g-c30', type: 'cell', text: [{ t: 'Coffee (200g)' }] }, { id: 'g-c31', type: 'cell', text: [{ t: '£3.49' }] }, { id: 'g-c32', type: 'cell', text: [{ t: '£3.80' }] }, { id: 'g-c33', type: 'cell', text: [{ t: '£4.20' }] }] },
106
+ ],
107
+ },
108
+ { id: 'g-call2', type: 'callout', text: [{ t: 'Swap one branded staple for the shop’s own label and a £100 basket usually drops to £80–£85.' }], props: { variant: 'success' } },
109
+ { id: 'g-notes-3', type: 'notes', text: [{ t: 'Close on the habit, not the app: re-price monthly, shop the cheapest staples, top up fresh locally.' }] },
110
+ ];
111
+ // (🗂️ Project task board and 📚 Reading list are databases — see below.)
112
+ // ── 📋 Project intake ────────────────────────────────────────────────────────
113
+ // A guided brief: a gated accordion (each stage unlocks the next) whose
114
+ // auto-computed completion (`intake.ratio` / `intake.complete`) drives a
115
+ // progress bar and a status light, plus a live effort-vs-impact prioritisation.
116
+ const PROJECT_INTAKE_BLOCKS = [
117
+ // Slide 1 — title
118
+ { id: 'i-tag', type: 'paragraph', text: [{ t: 'Tell us about the work. Each stage ' }, { t: 'unlocks the next', a: { b: true } }, { t: ' once it’s filled in — the bar tracks how far along you are.' }] },
119
+ { id: 'i-call', type: 'callout', text: [{ t: 'Fill the brief, then check the prioritisation slide to see if it’s worth doing now.' }], props: { variant: 'info' } },
120
+ { id: 'i-notes-1', type: 'notes', text: [{ t: 'Use this live in intake calls — fill it in together so scope and priority are agreed before anyone writes code.' }] },
121
+ { id: 'i-div-1', type: 'divider' },
122
+ // Slide 2 — the brief (gated wizard)
123
+ { id: 'i-h2', type: 'heading', text: [{ t: 'The brief' }], props: { level: 2 } },
124
+ { id: 'i-progress', type: 'progressbar', props: { label: 'Completed', source: 'intake.ratio', max: 1, format: 'percent' } },
125
+ {
126
+ id: 'i-acc',
127
+ type: 'accordion',
128
+ props: { name: 'intake', gated: true },
129
+ children: [
130
+ {
131
+ id: 'i-basics',
132
+ type: 'accordionsection',
133
+ props: { label: 'Basics' },
134
+ children: [
135
+ { id: 'i-basics-p', type: 'paragraph', text: [{ t: 'What kind of project is this, and what’s the one-line goal?' }] },
136
+ {
137
+ id: 'i-type',
138
+ type: 'choicecards',
139
+ props: {
140
+ name: 'projectType',
141
+ value: null,
142
+ opts: [
143
+ { label: 'New feature', value: 'feature', icon: '✨', color: 'blue' },
144
+ { label: 'Bug fix', value: 'bugfix', icon: '🐞', color: 'red' },
145
+ { label: 'Research spike', value: 'research', icon: '🔬', color: 'purple' },
146
+ { label: 'Migration', value: 'migration', icon: '📦', color: 'orange' },
147
+ ],
148
+ },
149
+ },
150
+ { id: 'i-summary', type: 'longtext', props: { name: 'summary', value: '', placeholder: 'One sentence: what does done look like?' } },
151
+ ],
152
+ },
153
+ {
154
+ id: 'i-scope',
155
+ type: 'accordionsection',
156
+ props: { label: 'Scope', collapsed: true },
157
+ children: [
158
+ { id: 'i-scope-p', type: 'paragraph', text: [{ t: 'Where does it land, and who needs to be in the loop?' }] },
159
+ {
160
+ id: 'i-platform',
161
+ type: 'searchselect',
162
+ props: {
163
+ name: 'platform',
164
+ value: null,
165
+ opts: [
166
+ { label: 'Web', value: 'web' },
167
+ { label: 'Desktop', value: 'desktop' },
168
+ { label: 'Mobile', value: 'mobile' },
169
+ { label: 'API', value: 'api' },
170
+ { label: 'All surfaces', value: 'all' },
171
+ ],
172
+ },
173
+ },
174
+ { id: 'i-teams', type: 'tagfield', props: { name: 'teams', selected: [], freeEntry: true, opts: [{ label: 'Design' }, { label: 'Engineering' }, { label: 'Product' }, { label: 'Data' }, { label: 'Support' }] } },
175
+ ],
176
+ },
177
+ {
178
+ id: 'i-details',
179
+ type: 'accordionsection',
180
+ props: { label: 'Details', collapsed: true },
181
+ children: [
182
+ { id: 'i-details-p', type: 'paragraph', text: [{ t: 'Spell out the requirements and confirm the pre-flight checks.' }] },
183
+ { id: 'i-req', type: 'richtext', props: { name: 'requirements', runs: [], placeholder: 'Requirements, constraints, links…' } },
184
+ { id: 'i-check-spec', type: 'todo', text: [{ t: 'Spec reviewed with the lead' }], props: { checked: false } },
185
+ { id: 'i-check-est', type: 'todo', text: [{ t: 'Rough estimate agreed' }], props: { checked: false } },
186
+ ],
187
+ },
188
+ ],
189
+ },
190
+ { id: 'i-notes-2', type: 'notes', text: [{ t: 'Don’t skip Scope — naming the platform and teams up front is what stops the surprise re-scoping later.' }] },
191
+ { id: 'i-div-2', type: 'divider' },
192
+ // Slide 3 — prioritisation
193
+ { id: 'i-h3', type: 'heading', text: [{ t: 'Worth doing now?' }], props: { level: 2 } },
194
+ { id: 'i-verdict', type: 'code', text: [{ t: 'impact >= effort * 1.5 ? "Do it now" : impact >= effort ? "Schedule it" : "Park it"' }], props: { live: true, name: 'verdict', language: 'js', collapsed: true } },
195
+ {
196
+ id: 'i-cols',
197
+ type: 'columns',
198
+ children: [
199
+ {
200
+ id: 'i-col-l',
201
+ type: 'column',
202
+ props: { span: 5 },
203
+ children: [
204
+ { id: 'i-impact', type: 'slider', props: { name: 'impact', label: 'Impact', value: 7, min: 1, max: 10 } },
205
+ { id: 'i-effort', type: 'slider', props: { name: 'effort', label: 'Effort', value: 4, min: 1, max: 10 } },
206
+ ],
207
+ },
208
+ {
209
+ id: 'i-col-r',
210
+ type: 'column',
211
+ props: { span: 7 },
212
+ children: [
213
+ { id: 'i-status', type: 'statuslight', props: { label: 'Quick win', source: 'impact - effort', okAt: 3, warnAt: 0 } },
214
+ { id: 'i-bar', type: 'kitchart', props: { kind: 'bar', title: 'Effort vs impact', labels: 'Effort, Impact', source: '[effort, impact]' } },
215
+ ],
216
+ },
217
+ ],
218
+ },
219
+ { id: 'i-tip', type: 'tooltipcard', props: { term: 'Quick win', tip: 'High impact for low effort — the top-left of an effort/impact grid. Do these first.' } },
220
+ { id: 'i-notes-3', type: 'notes', text: [{ t: 'The verdict is a heuristic, not a mandate — use it to start the conversation, not end it.' }] },
221
+ { id: 'i-div-3', type: 'divider' },
222
+ // Slide 4 — submit
223
+ { id: 'i-h4', type: 'heading', text: [{ t: 'Ready to submit' }], props: { level: 2 } },
224
+ { id: 'i-submit-status', type: 'statuslight', props: { label: 'All required fields complete', source: 'intake.complete', okAt: 1, warnAt: 1 } },
225
+ { id: 'i-call2', type: 'callout', text: [{ t: 'When the light turns green, every stage is filled — share this page with the team to kick off.' }], props: { variant: 'success' } },
226
+ { id: 'i-notes-4', type: 'notes', text: [{ t: 'Hand-off close: green light → assign an owner and a target date, then move it onto the task board.' }] },
227
+ ];
228
+ // ── 💰 Savings & investing ───────────────────────────────────────────────────
229
+ const SAVINGS_BLOCKS = [
230
+ // Slide 1 — title
231
+ { id: 's-tag', type: 'paragraph', text: [{ t: 'A plan in two parts: a ' }, { t: 'safety net', a: { b: true } }, { t: ' first, then watch contributions ' }, { t: 'compound', a: { b: true } }, { t: ' toward a goal.' }] },
232
+ { id: 's-call', type: 'callout', text: [{ t: 'Drag the contribution, rate and horizon — the projection, goal light and shortfall all recompute. The maths sits in a code block you can open.' }], props: { variant: 'info' } },
233
+ { id: 's-notes-1', type: 'notes', text: [{ t: 'Caveat up front: illustrative compounding, not advice. Real returns vary and aren’t guaranteed.' }] },
234
+ { id: 's-div-1', type: 'divider' },
235
+ // Slide 2 — the projection
236
+ { id: 's-h2', type: 'heading', text: [{ t: 'Your money, compounding' }], props: { level: 2 } },
237
+ { id: 's-proj', type: 'code', text: [{ t: 'const r = rate / 100;\nlet bal = initial;\nconst Invested = [Math.round(initial)], Projected = [Math.round(initial)];\nfor (let y = 1; y <= years; y++) {\n bal = (bal + monthly * 12) * (1 + r);\n Invested.push(Math.round(initial + monthly * 12 * y));\n Projected.push(Math.round(bal));\n}\nreturn {Invested, Projected};' }], props: { live: true, name: 'projection', language: 'js', collapsed: true } },
238
+ { id: 's-final', type: 'code', text: [{ t: 'projection.Projected[projection.Projected.length - 1]' }], props: { live: true, name: 'final', language: 'js', collapsed: true } },
239
+ { id: 's-headline', type: 'code', text: [{ t: '"After " + years + " years: £" + Math.round(final).toLocaleString() + " — you put in £" + Math.round(initial + monthly * 12 * years).toLocaleString()' }], props: { live: true, name: 'headline', language: 'js', collapsed: true } },
240
+ {
241
+ id: 's-cols',
242
+ type: 'columns',
243
+ children: [
244
+ {
245
+ id: 's-col-l',
246
+ type: 'column',
247
+ props: { span: 5 },
248
+ children: [
249
+ { id: 's-initial', type: 'number', props: { name: 'initial', label: 'Starting savings (£)', value: 2000, min: 0, max: 100000, step: 500 } },
250
+ { id: 's-monthly', type: 'slider', props: { name: 'monthly', label: 'Monthly contribution (£)', value: 300, min: 0, max: 2000 } },
251
+ { id: 's-rate', type: 'slider', props: { name: 'rate', label: 'Annual return (%)', value: 6, min: 0, max: 12 } },
252
+ { id: 's-years', type: 'slider', props: { name: 'years', label: 'Years', value: 20, min: 1, max: 40 } },
253
+ { id: 's-goal', type: 'number', props: { name: 'goal', label: 'Goal (£)', value: 150000, min: 0, max: 1000000, step: 5000 } },
254
+ ],
255
+ },
256
+ {
257
+ id: 's-col-r',
258
+ type: 'column',
259
+ props: { span: 7 },
260
+ children: [
261
+ { id: 's-area', type: 'kitchart', props: { kind: 'area', title: 'Balance by year', source: 'projection' } },
262
+ { id: 's-status', type: 'statuslight', props: { label: 'On track for your goal', source: 'final - goal', okAt: 0, warnAt: -60000 } },
263
+ { id: 's-prog', type: 'progressbar', props: { label: 'Progress to goal', source: 'final / goal', max: 1, format: 'percent' } },
264
+ ],
265
+ },
266
+ ],
267
+ },
268
+ { id: 's-notes-2', type: 'notes', text: [{ t: 'The gap between the two curves is growth doing the work. Drag the rate slider to show how much the return matters over 20 years.' }] },
269
+ { id: 's-div-2', type: 'divider' },
270
+ // Slide 3 — safety net first
271
+ { id: 's-h3', type: 'heading', text: [{ t: 'Safety net first' }], props: { level: 2 } },
272
+ { id: 's-months', type: 'code', text: [{ t: 'Math.round(savings / expenses * 10) / 10' }], props: { live: true, name: 'months', language: 'js', collapsed: true } },
273
+ {
274
+ id: 's-cols2',
275
+ type: 'columns',
276
+ children: [
277
+ {
278
+ id: 's-col2-l',
279
+ type: 'column',
280
+ props: { span: 5 },
281
+ children: [
282
+ { id: 's-savings', type: 'number', props: { name: 'savings', label: 'Easy-access savings (£)', value: 8000, min: 0, max: 100000, step: 500 } },
283
+ { id: 's-expenses', type: 'number', props: { name: 'expenses', label: 'Monthly expenses (£)', value: 1800, min: 200, max: 10000, step: 100 } },
284
+ ],
285
+ },
286
+ {
287
+ id: 's-col2-r',
288
+ type: 'column',
289
+ props: { span: 7 },
290
+ children: [
291
+ { id: 's-emergency', type: 'statuslight', props: { label: 'Emergency fund', source: 'savings / expenses', okAt: 6, warnAt: 3 } },
292
+ { id: 's-emprog', type: 'progressbar', props: { label: 'Months covered (target 6)', source: 'savings / expenses / 6', max: 1, format: 'percent' } },
293
+ { id: 's-runway', type: 'kitchart', props: { kind: 'bar', title: 'Months of runway', labels: 'You, Target', source: '[months, 6]' } },
294
+ ],
295
+ },
296
+ ],
297
+ },
298
+ { id: 's-call2', type: 'callout', text: [{ t: 'Aim for 3–6 months of expenses in easy-access savings before investing the rest. The light goes green at six.' }], props: { variant: 'warn' } },
299
+ { id: 's-notes-3', type: 'notes', text: [{ t: 'Order of operations: safety net → high-interest debt → invest. Don’t skip to the fun slide first.' }] },
300
+ { id: 's-div-3', type: 'divider' },
301
+ // Slide 4 — recap
302
+ { id: 's-h4', type: 'heading', text: [{ t: 'The plan' }], props: { level: 2 } },
303
+ { id: 's-quote', type: 'quote', text: [{ t: 'Do not save what is left after spending; spend what is left after saving.' }] },
304
+ { id: 's-link', type: 'linkcard', props: { title: 'How compound interest works', description: 'A plain-English primer.', url: 'https://www.investor.gov/financial-tools-calculators/calculators/compound-interest-calculator' } },
305
+ { id: 's-notes-4', type: 'notes', text: [{ t: 'One ask to close on: automate the monthly contribution so the plan happens without willpower.' }] },
306
+ ];
307
+ // ════════════════════════════════════════════════════════════════════════════
308
+ // Databases (the task board, reading list, and the swimlane + map e2e fixtures)
309
+ // ════════════════════════════════════════════════════════════════════════════
310
+ // ── 🗂️ Project task board ────────────────────────────────────────────────────
311
+ // A kanban: a `status` property drives the board columns; priority, assignee,
312
+ // due date and a bar-style effort number round it out. Opens on the board.
313
+ const TASK_BOARD_SCHEMA = {
314
+ properties: [
315
+ {
316
+ id: 'p_status',
317
+ name: 'Status',
318
+ type: 'status',
319
+ options: [
320
+ { id: 'opt_todo', label: 'Backlog', color: 'gray', group: 'todo' },
321
+ { id: 'opt_doing', label: 'In progress', color: 'blue', group: 'in_progress' },
322
+ { id: 'opt_done', label: 'Done', color: 'green', group: 'complete' },
323
+ ],
324
+ },
325
+ {
326
+ id: 'p_priority',
327
+ name: 'Priority',
328
+ type: 'select',
329
+ options: [
330
+ { id: 'opt_high', label: 'High', color: 'red' },
331
+ { id: 'opt_med', label: 'Medium', color: 'yellow' },
332
+ { id: 'opt_low', label: 'Low', color: 'gray' },
333
+ ],
334
+ },
335
+ { id: 'p_assignee', name: 'Assignee', type: 'text' },
336
+ { id: 'p_due', name: 'Due', type: 'date' },
337
+ { id: 'p_effort', name: 'Effort', type: 'number', numberDisplay: 'bar', numberTarget: 8 },
338
+ ],
339
+ views: [
340
+ // Board first → the page opens as a kanban grouped by status; a table backs it.
341
+ { id: 'v_board', name: 'Board', type: 'board', filters: [], sorts: [], groupByPropertyId: 'p_status' },
342
+ { id: 'v_table', name: 'Table', type: 'table', filters: [], sorts: [] },
343
+ ],
344
+ };
345
+ const TASK_BOARD_ROWS = [
346
+ { name: 'Draft the API contract', properties: { p_status: 'opt_doing', p_priority: 'opt_high', p_assignee: 'Ada', p_due: day(2), p_effort: 3 } },
347
+ { name: 'Build the onboarding flow', properties: { p_status: 'opt_doing', p_priority: 'opt_med', p_assignee: 'Lin', p_due: day(4), p_effort: 5 } },
348
+ { name: 'Spike: auth options', properties: { p_status: 'opt_todo', p_priority: 'opt_high', p_assignee: 'Ada', p_due: day(1), p_effort: 2 } },
349
+ { name: 'Write the migration plan', properties: { p_status: 'opt_todo', p_priority: 'opt_low', p_assignee: 'Sam', p_due: day(6), p_effort: 5 } },
350
+ { name: 'Wire up billing', properties: { p_status: 'opt_todo', p_priority: 'opt_med', p_assignee: 'Lin', p_due: day(9), p_effort: 8 } },
351
+ { name: 'Set up CI', properties: { p_status: 'opt_done', p_priority: 'opt_med', p_assignee: 'Sam', p_effort: 3 } },
352
+ { name: 'Design review', properties: { p_status: 'opt_done', p_priority: 'opt_low', p_assignee: 'Ada', p_effort: 1 } },
353
+ ];
354
+ // ── 📚 Reading list ──────────────────────────────────────────────────────────
355
+ // A shelf-grouped gallery of books, with authors and star ratings; a table backs it.
356
+ const READING_SCHEMA = {
357
+ properties: [
358
+ {
359
+ id: 'p_shelf',
360
+ name: 'Shelf',
361
+ type: 'select',
362
+ options: [
363
+ { id: 'opt_toread', label: 'To read', color: 'gray' },
364
+ { id: 'opt_reading', label: 'Reading', color: 'blue' },
365
+ { id: 'opt_done', label: 'Finished', color: 'green' },
366
+ ],
367
+ },
368
+ { id: 'p_author', name: 'Author', type: 'text' },
369
+ { id: 'p_rating', name: 'Rating', type: 'rating' },
370
+ { id: 'p_cover', name: 'Cover', type: 'files' },
371
+ ],
372
+ views: [
373
+ { id: 'v_gallery', name: 'Gallery', type: 'gallery', filters: [], sorts: [], groupByPropertyId: 'p_shelf', coverPropertyId: 'p_cover' },
374
+ { id: 'v_table', name: 'Table', type: 'table', filters: [], sorts: [] },
375
+ ],
376
+ };
377
+ const READING_ROWS = [
378
+ { name: 'The Design of Everyday Things', properties: { p_shelf: 'opt_reading', p_author: 'Don Norman', p_rating: 4 } },
379
+ { name: 'Project Hail Mary', properties: { p_shelf: 'opt_reading', p_author: 'Andy Weir', p_rating: 5 } },
380
+ { name: 'Thinking, Fast and Slow', properties: { p_shelf: 'opt_toread', p_author: 'Daniel Kahneman' } },
381
+ { name: 'Designing Data-Intensive Applications', properties: { p_shelf: 'opt_toread', p_author: 'Martin Kleppmann' } },
382
+ { name: 'The Pragmatic Programmer', properties: { p_shelf: 'opt_done', p_author: 'Hunt & Thomas', p_rating: 5 } },
383
+ { name: 'Deep Work', properties: { p_shelf: 'opt_done', p_author: 'Cal Newport', p_rating: 4 } },
384
+ ];
385
+ // ── Product roadmap ──────────────────────────────────────────────────────────
386
+ const ROADMAP_SCHEMA = {
387
+ properties: [
388
+ {
389
+ id: 'p_stage',
390
+ name: 'Stage',
391
+ type: 'status',
392
+ options: [
393
+ { id: 'opt_idea', label: 'Idea', color: 'gray', group: 'todo' },
394
+ { id: 'opt_build', label: 'Building', color: 'blue', group: 'in_progress' },
395
+ { id: 'opt_shipped', label: 'Shipped', color: 'green', group: 'complete' },
396
+ ],
397
+ },
398
+ {
399
+ id: 'p_area',
400
+ name: 'Area',
401
+ type: 'select',
402
+ options: [
403
+ { id: 'opt_core', label: 'Core', color: 'blue' },
404
+ { id: 'opt_growth', label: 'Growth', color: 'pink' },
405
+ { id: 'opt_infra', label: 'Infra', color: 'orange' },
406
+ ],
407
+ },
408
+ { id: 'p_when', name: 'When', type: 'date', dateRange: true },
409
+ ],
410
+ views: [
411
+ // Timeline bands by Area (Gantt swimlanes); board columns by Stage with a
412
+ // second Area swimlane (horizontal lanes). Both demonstrate the swimlane
413
+ // grouping out of the box off the same `p_area` select.
414
+ { id: 'v_timeline', name: 'Timeline', type: 'timeline', filters: [], sorts: [], datePropertyId: 'p_when', groupByPropertyId: 'p_area' },
415
+ { id: 'v_board', name: 'Board', type: 'board', filters: [], sorts: [], groupByPropertyId: 'p_stage', subGroupByPropertyId: 'p_area' },
416
+ { id: 'v_table', name: 'Table', type: 'table', filters: [], sorts: [] },
417
+ ],
418
+ };
419
+ const ROADMAP_ROWS = [
420
+ { name: 'Self-serve onboarding', properties: { p_stage: 'opt_build', p_area: 'opt_growth', p_when: { start: day(-7), end: day(14) } } },
421
+ { name: 'Realtime collaboration', properties: { p_stage: 'opt_idea', p_area: 'opt_core', p_when: { start: day(21), end: day(60) } } },
422
+ { name: 'Usage analytics dashboard', properties: { p_stage: 'opt_idea', p_area: 'opt_growth', p_when: { start: day(10), end: day(30) } } },
423
+ { name: 'Single sign-on', properties: { p_stage: 'opt_shipped', p_area: 'opt_infra', p_when: { start: day(-30), end: day(-10) } } },
424
+ ];
425
+ // ── Field map ────────────────────────────────────────────────────────────────
426
+ // A location database: a `location` property places each site on the map view,
427
+ // a `select` (Region) colours the markers, and an `Address` text property lets
428
+ // the unplaced row be geocoded into coords. One row (Lisbon) carries only an
429
+ // address — no coords — to exercise the unplaced/geocode affordance.
430
+ const FIELD_MAP_SCHEMA = {
431
+ properties: [
432
+ {
433
+ id: 'p_region',
434
+ name: 'Region',
435
+ type: 'select',
436
+ options: [
437
+ { id: 'opt_americas', label: 'Americas', color: 'blue' },
438
+ { id: 'opt_emea', label: 'EMEA', color: 'green' },
439
+ { id: 'opt_apac', label: 'APAC', color: 'orange' },
440
+ ],
441
+ },
442
+ {
443
+ id: 'p_kind',
444
+ name: 'Kind',
445
+ type: 'select',
446
+ options: [
447
+ { id: 'opt_hq', label: 'HQ', color: 'purple' },
448
+ { id: 'opt_office', label: 'Office', color: 'gray' },
449
+ { id: 'opt_partner', label: 'Partner', color: 'yellow' },
450
+ ],
451
+ },
452
+ { id: 'p_address', name: 'Address', type: 'text' },
453
+ { id: 'p_place', name: 'Location', type: 'location' },
454
+ { id: 'p_headcount', name: 'Headcount', type: 'number' },
455
+ ],
456
+ views: [
457
+ // Markers placed off `p_place`, coloured by Region, clustered when dense; an
458
+ // Address property is offered for geocoding the one row with no coords.
459
+ {
460
+ id: 'v_map',
461
+ name: 'Map',
462
+ type: 'map',
463
+ filters: [],
464
+ sorts: [],
465
+ geoPropertyId: 'p_place',
466
+ addressPropertyId: 'p_address',
467
+ groupByPropertyId: 'p_region',
468
+ mapClustered: true,
469
+ },
470
+ { id: 'v_table', name: 'Table', type: 'table', filters: [], sorts: [] },
471
+ ],
472
+ };
473
+ const FIELD_MAP_ROWS = [
474
+ // Americas
475
+ { name: 'San Francisco HQ', properties: { p_region: 'opt_americas', p_kind: 'opt_hq', p_headcount: 180, p_address: '1 Market St, San Francisco, CA', p_place: { lat: 37.7937, lng: -122.3965, label: 'San Francisco HQ', address: '1 Market St, San Francisco, CA' } } },
476
+ { name: 'New York office', properties: { p_region: 'opt_americas', p_kind: 'opt_office', p_headcount: 95, p_address: '11 Madison Ave, New York, NY', p_place: { lat: 40.7414, lng: -73.9876, label: 'New York office' } } },
477
+ { name: 'São Paulo partner', properties: { p_region: 'opt_americas', p_kind: 'opt_partner', p_headcount: 20, p_address: 'Av. Paulista, São Paulo', p_place: { lat: -23.5614, lng: -46.6559, label: 'São Paulo partner' } } },
478
+ // EMEA
479
+ { name: 'London office', properties: { p_region: 'opt_emea', p_kind: 'opt_office', p_headcount: 70, p_address: '30 St Mary Axe, London', p_place: { lat: 51.5144, lng: -0.0803, label: 'London office' } } },
480
+ { name: 'Berlin office', properties: { p_region: 'opt_emea', p_kind: 'opt_office', p_headcount: 48, p_address: 'Unter den Linden, Berlin', p_place: { lat: 52.5170, lng: 13.3889, label: 'Berlin office' } } },
481
+ // Lisbon: address only, NO coords — the map's unplaced/geocode case.
482
+ { name: 'Lisbon partner', properties: { p_region: 'opt_emea', p_kind: 'opt_partner', p_headcount: 12, p_address: 'Praça do Comércio, Lisbon, Portugal' } },
483
+ // APAC
484
+ { name: 'Singapore office', properties: { p_region: 'opt_apac', p_kind: 'opt_office', p_headcount: 60, p_address: 'Marina Bay, Singapore', p_place: { lat: 1.2834, lng: 103.8607, label: 'Singapore office' } } },
485
+ { name: 'Tokyo office', properties: { p_region: 'opt_apac', p_kind: 'opt_office', p_headcount: 85, p_address: 'Chiyoda, Tokyo', p_place: { lat: 35.6814, lng: 139.7670, label: 'Tokyo office' } } },
486
+ { name: 'Sydney partner', properties: { p_region: 'opt_apac', p_kind: 'opt_partner', p_headcount: 15, p_address: 'Circular Quay, Sydney', p_place: { lat: -33.8610, lng: 151.2100, label: 'Sydney partner' } } },
487
+ ];
488
+ // ── The gallery ──────────────────────────────────────────────────────────────
489
+ /** Create a block-editor template page from a JSON block projection. */
490
+ const createBlockDocPage = (blocks) => (client, name) => client.savePage({ name, data: { editorjs: { blocks: [] }, values: [], names: [], editor: 'blocks', blockdoc: { blocks } } });
491
+ /** Create a database template: host page + database + sample rows. Row pages
492
+ * share the workspace-unique name space, so re-instantiating a template would
493
+ * 409 on its sample rows — suffix each on collision (untitled as a last resort). */
494
+ const createDatabasePage = (schema, rows) => async (client, name) => {
495
+ const page = await client.savePage({ name, data: emptySnapshot([]) });
496
+ const db = await client.createDatabase({ pageId: page.id, name, schema });
497
+ for (const row of rows) {
498
+ let rowName = row.name;
499
+ for (let attempt = 2;; attempt += 1) {
500
+ try {
501
+ await client.createRow(db.id, { ...row, name: rowName });
502
+ break;
503
+ }
504
+ catch {
505
+ if (attempt > 5) {
506
+ await client.createRow(db.id, { ...row, name: null });
507
+ break;
508
+ }
509
+ rowName = `${row.name} ${attempt}`;
510
+ }
511
+ }
512
+ }
513
+ return page;
514
+ };
515
+ export const PAGE_TEMPLATES = [
516
+ { id: 'grocery-tracker', icon: '🛒', pageName: 'Grocery price tracker', create: createBlockDocPage(GROCERY_BLOCKS) },
517
+ { id: 'task-board', icon: '🗂️', pageName: 'Project task board', create: createDatabasePage(TASK_BOARD_SCHEMA, TASK_BOARD_ROWS) },
518
+ { id: 'reading-list', icon: '📚', pageName: 'Reading list', create: createDatabasePage(READING_SCHEMA, READING_ROWS) },
519
+ { id: 'project-intake', icon: '📋', pageName: 'Project intake', create: createBlockDocPage(PROJECT_INTAKE_BLOCKS) },
520
+ { id: 'savings-planner', icon: '💰', pageName: 'Savings & investing', create: createBlockDocPage(SAVINGS_BLOCKS) },
521
+ { id: 'roadmap', icon: '🗺️', pageName: 'Product roadmap', create: createDatabasePage(ROADMAP_SCHEMA, ROADMAP_ROWS) },
522
+ { id: 'field-map', icon: '📍', pageName: 'Field map', create: createDatabasePage(FIELD_MAP_SCHEMA, FIELD_MAP_ROWS) },
523
+ ];
524
+ /** Page names are unique among live pages — pick `name`, `name 2`, `name 3`… */
525
+ async function availableName(client, base) {
526
+ const taken = new Set((await client.listPages()).map((p) => p.name).filter(Boolean));
527
+ if (!taken.has(base))
528
+ return base;
529
+ for (let n = 2;; n += 1) {
530
+ const candidate = `${base} ${n}`;
531
+ if (!taken.has(candidate))
532
+ return candidate;
533
+ }
534
+ }
535
+ /**
536
+ * Instantiate a template: resolve a free page name (retrying past races on the
537
+ * unique-name constraint) and build the page through the client.
538
+ */
539
+ export async function instantiateTemplate(client, template) {
540
+ let name = await availableName(client, template.pageName);
541
+ for (let attempt = 0;; attempt += 1) {
542
+ try {
543
+ return await template.create(client, name);
544
+ }
545
+ catch (err) {
546
+ // A concurrent create can win the name between the check and the save;
547
+ // step the suffix and retry a few times before giving up.
548
+ if (attempt >= 4)
549
+ throw err;
550
+ name = await availableName(client, `${template.pageName}`);
551
+ name = name === template.pageName ? `${template.pageName} 2` : name;
552
+ }
553
+ }
554
+ }
555
+ //# sourceMappingURL=templates.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"templates.js","sourceRoot":"","sources":["../src/templates.ts"],"names":[],"mappings":"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"}