@prenta/core 1.1.1 → 2.2.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 (109) hide show
  1. package/CHANGELOG.md +18 -0
  2. package/dist/api/handlers.d.ts.map +1 -1
  3. package/dist/api/handlers.js +0 -2
  4. package/dist/api/handlers.js.map +1 -1
  5. package/dist/api/routes/media.d.ts.map +1 -1
  6. package/dist/api/routes/media.js +73 -104
  7. package/dist/api/routes/media.js.map +1 -1
  8. package/dist/api/routes/saved-sections.d.ts.map +1 -1
  9. package/dist/api/routes/saved-sections.js +20 -300
  10. package/dist/api/routes/saved-sections.js.map +1 -1
  11. package/dist/appearance/resolve.js +1 -1
  12. package/dist/appearance/resolve.js.map +1 -1
  13. package/dist/collections/presets.d.ts +2 -2
  14. package/dist/collections/presets.js +2 -2
  15. package/dist/config/runtime.d.ts +1 -2
  16. package/dist/config/runtime.d.ts.map +1 -1
  17. package/dist/config/runtime.js.map +1 -1
  18. package/dist/config/types.d.ts +0 -3
  19. package/dist/config/types.d.ts.map +1 -1
  20. package/dist/db/model-types.d.ts +67 -26
  21. package/dist/db/model-types.d.ts.map +1 -1
  22. package/dist/generated/browser.d.ts +16 -0
  23. package/dist/generated/client.d.ts +16 -0
  24. package/dist/generated/commonInputTypes.d.ts +30 -0
  25. package/dist/generated/internal/class.d.ts +33 -0
  26. package/dist/generated/internal/class.js +4 -4
  27. package/dist/generated/internal/prismaNamespace.d.ts +294 -1
  28. package/dist/generated/internal/prismaNamespace.js +55 -1
  29. package/dist/generated/internal/prismaNamespaceBrowser.d.ts +60 -0
  30. package/dist/generated/internal/prismaNamespaceBrowser.js +55 -1
  31. package/dist/generated/models/DocumentCRDT.d.ts +1110 -0
  32. package/dist/generated/models/DocumentCRDT.js +1 -0
  33. package/dist/generated/models/DocumentComment.d.ts +1722 -0
  34. package/dist/generated/models/DocumentComment.js +1 -0
  35. package/dist/generated/models/DocumentNotification.d.ts +1289 -0
  36. package/dist/generated/models/DocumentNotification.js +1 -0
  37. package/dist/generated/models/User.d.ts +552 -0
  38. package/dist/generated/models.d.ts +3 -0
  39. package/dist/index.d.ts +4 -2
  40. package/dist/index.d.ts.map +1 -1
  41. package/dist/index.js +3 -2
  42. package/dist/index.js.map +1 -1
  43. package/dist/media/index.d.ts +2 -0
  44. package/dist/media/index.d.ts.map +1 -1
  45. package/dist/media/index.js +1 -0
  46. package/dist/media/index.js.map +1 -1
  47. package/dist/media/optimize.d.ts.map +1 -1
  48. package/dist/media/optimize.js +19 -12
  49. package/dist/media/optimize.js.map +1 -1
  50. package/dist/media/reoptimize.d.ts +61 -0
  51. package/dist/media/reoptimize.d.ts.map +1 -0
  52. package/dist/media/reoptimize.js +371 -0
  53. package/dist/media/reoptimize.js.map +1 -0
  54. package/dist/sections/index.d.ts +1 -2
  55. package/dist/sections/index.d.ts.map +1 -1
  56. package/dist/sections/index.js +1 -2
  57. package/dist/sections/index.js.map +1 -1
  58. package/dist/sections/types.d.ts +2 -3
  59. package/dist/sections/types.d.ts.map +1 -1
  60. package/dist/sections/types.js +2 -3
  61. package/dist/sections/types.js.map +1 -1
  62. package/dist/security/api-key-enhanced.d.ts +2 -2
  63. package/package.json +1 -6
  64. package/prisma/migrations/0013_document_collab_models/migration.sql +68 -0
  65. package/prisma/schema.prisma +66 -5
  66. package/dist/api/routes/page-templates.d.ts +0 -3
  67. package/dist/api/routes/page-templates.d.ts.map +0 -1
  68. package/dist/api/routes/page-templates.js +0 -265
  69. package/dist/api/routes/page-templates.js.map +0 -1
  70. package/dist/page-builder/a11y-fix.d.ts +0 -20
  71. package/dist/page-builder/a11y-fix.d.ts.map +0 -1
  72. package/dist/page-builder/a11y-fix.js +0 -182
  73. package/dist/page-builder/a11y-fix.js.map +0 -1
  74. package/dist/page-builder/ai-pipeline.d.ts +0 -43
  75. package/dist/page-builder/ai-pipeline.d.ts.map +0 -1
  76. package/dist/page-builder/ai-pipeline.js +0 -165
  77. package/dist/page-builder/ai-pipeline.js.map +0 -1
  78. package/dist/page-builder/blocks.d.ts +0 -27
  79. package/dist/page-builder/blocks.d.ts.map +0 -1
  80. package/dist/page-builder/blocks.js +0 -313
  81. package/dist/page-builder/blocks.js.map +0 -1
  82. package/dist/page-builder/design-scorer.d.ts +0 -27
  83. package/dist/page-builder/design-scorer.d.ts.map +0 -1
  84. package/dist/page-builder/design-scorer.js +0 -612
  85. package/dist/page-builder/design-scorer.js.map +0 -1
  86. package/dist/page-builder/index.d.ts +0 -16
  87. package/dist/page-builder/index.d.ts.map +0 -1
  88. package/dist/page-builder/index.js +0 -18
  89. package/dist/page-builder/index.js.map +0 -1
  90. package/dist/page-builder/schema.d.ts +0 -107
  91. package/dist/page-builder/schema.d.ts.map +0 -1
  92. package/dist/page-builder/schema.js +0 -90
  93. package/dist/page-builder/schema.js.map +0 -1
  94. package/dist/page-builder/templates.d.ts +0 -9
  95. package/dist/page-builder/templates.d.ts.map +0 -1
  96. package/dist/page-builder/templates.js +0 -742
  97. package/dist/page-builder/templates.js.map +0 -1
  98. package/dist/page-builder/tree.d.ts +0 -17
  99. package/dist/page-builder/tree.d.ts.map +0 -1
  100. package/dist/page-builder/tree.js +0 -160
  101. package/dist/page-builder/tree.js.map +0 -1
  102. package/dist/page-builder/types.d.ts +0 -112
  103. package/dist/page-builder/types.d.ts.map +0 -1
  104. package/dist/page-builder/types.js +0 -4
  105. package/dist/page-builder/types.js.map +0 -1
  106. package/dist/page-builder/validate.d.ts +0 -6
  107. package/dist/page-builder/validate.d.ts.map +0 -1
  108. package/dist/page-builder/validate.js +0 -87
  109. package/dist/page-builder/validate.js.map +0 -1
@@ -1,742 +0,0 @@
1
- function section(id, children) {
2
- return { id, type: 'section', settings: {}, children };
3
- }
4
- function container(id, children) {
5
- return { id, type: 'container', settings: { maxWidth: '1200px' }, children };
6
- }
7
- function row(id, children) {
8
- return { id, type: 'row', settings: { gap: '24px' }, children };
9
- }
10
- function col(id, width, children) {
11
- return { id, type: 'column', settings: { width }, children };
12
- }
13
- function block(id, blockType, variant, data) {
14
- return {
15
- id,
16
- type: 'block',
17
- settings: { blockType, ...(variant ? { variant } : {}) },
18
- data: data ?? {},
19
- };
20
- }
21
- // ─── Blank ───────────────────────────────────────────────────────────────────
22
- const blankTree = {
23
- id: 'blank-page',
24
- type: 'page',
25
- children: [
26
- section('blank-section-1', [
27
- container('blank-container-1', [row('blank-row-1', [col('blank-col-1', 12, [])])]),
28
- ]),
29
- ],
30
- };
31
- // ─── Landing ─────────────────────────────────────────────────────────────────
32
- const landingTree = {
33
- id: 'landing-page',
34
- type: 'page',
35
- children: [
36
- section('landing-hero-section', [
37
- container('landing-hero-container', [
38
- row('landing-hero-row', [
39
- col('landing-hero-col', 12, [
40
- block('landing-hero-heading', 'heading', 'h1', { text: '' }),
41
- block('landing-hero-text', 'text', 'lead', { text: '' }),
42
- block('landing-hero-button', 'button', 'primary', { text: '', url: '' }),
43
- ]),
44
- ]),
45
- ]),
46
- ]),
47
- section('landing-features-section', [
48
- container('landing-features-container', [
49
- row('landing-features-row', [
50
- col('landing-feature-col-1', 4, [
51
- block('landing-feature-1-icon', 'icon', undefined, { icon: '' }),
52
- block('landing-feature-1-heading', 'heading', 'h3', { text: '' }),
53
- block('landing-feature-1-text', 'text', undefined, { text: '' }),
54
- ]),
55
- col('landing-feature-col-2', 4, [
56
- block('landing-feature-2-icon', 'icon', undefined, { icon: '' }),
57
- block('landing-feature-2-heading', 'heading', 'h3', { text: '' }),
58
- block('landing-feature-2-text', 'text', undefined, { text: '' }),
59
- ]),
60
- col('landing-feature-col-3', 4, [
61
- block('landing-feature-3-icon', 'icon', undefined, { icon: '' }),
62
- block('landing-feature-3-heading', 'heading', 'h3', { text: '' }),
63
- block('landing-feature-3-text', 'text', undefined, { text: '' }),
64
- ]),
65
- ]),
66
- ]),
67
- ]),
68
- section('landing-cta-section', [
69
- container('landing-cta-container', [
70
- row('landing-cta-row', [
71
- col('landing-cta-col', 12, [
72
- block('landing-cta-heading', 'heading', 'h2', { text: '' }),
73
- block('landing-cta-text', 'text', undefined, { text: '' }),
74
- block('landing-cta-button', 'button', 'primary', { text: '', url: '' }),
75
- ]),
76
- ]),
77
- ]),
78
- ]),
79
- section('landing-testimonials-section', [
80
- container('landing-testimonials-container', [
81
- row('landing-testimonials-row', [
82
- col('landing-testimonial-col-1', 4, [
83
- block('landing-testimonial-1', 'testimonial', undefined, {
84
- quote: '',
85
- author: '',
86
- role: '',
87
- }),
88
- ]),
89
- col('landing-testimonial-col-2', 4, [
90
- block('landing-testimonial-2', 'testimonial', undefined, {
91
- quote: '',
92
- author: '',
93
- role: '',
94
- }),
95
- ]),
96
- col('landing-testimonial-col-3', 4, [
97
- block('landing-testimonial-3', 'testimonial', undefined, {
98
- quote: '',
99
- author: '',
100
- role: '',
101
- }),
102
- ]),
103
- ]),
104
- ]),
105
- ]),
106
- section('landing-final-cta-section', [
107
- container('landing-final-cta-container', [
108
- row('landing-final-cta-row', [
109
- col('landing-final-cta-col', 12, [
110
- block('landing-final-cta-heading', 'heading', 'h2', { text: '' }),
111
- block('landing-final-cta-button', 'button', 'primary', { text: '', url: '' }),
112
- ]),
113
- ]),
114
- ]),
115
- ]),
116
- ],
117
- };
118
- // ─── About ───────────────────────────────────────────────────────────────────
119
- const aboutTree = {
120
- id: 'about-page',
121
- type: 'page',
122
- children: [
123
- section('about-hero-section', [
124
- container('about-hero-container', [
125
- row('about-hero-row', [
126
- col('about-hero-col', 12, [
127
- block('about-hero-heading', 'heading', 'h1', { text: '' }),
128
- block('about-hero-text', 'text', 'lead', { text: '' }),
129
- ]),
130
- ]),
131
- ]),
132
- ]),
133
- section('about-mission-section', [
134
- container('about-mission-container', [
135
- row('about-mission-row', [
136
- col('about-mission-col', 12, [
137
- block('about-mission-heading', 'heading', 'h2', { text: '' }),
138
- block('about-mission-text', 'text', undefined, { text: '' }),
139
- ]),
140
- ]),
141
- ]),
142
- ]),
143
- section('about-team-section', [
144
- container('about-team-container', [
145
- row('about-team-row', [
146
- col('about-team-col-1', 3, [
147
- block('about-team-1-image', 'image', undefined, { src: '', alt: '' }),
148
- block('about-team-1-name', 'heading', 'h4', { text: '' }),
149
- block('about-team-1-role', 'text', 'caption', { text: '' }),
150
- ]),
151
- col('about-team-col-2', 3, [
152
- block('about-team-2-image', 'image', undefined, { src: '', alt: '' }),
153
- block('about-team-2-name', 'heading', 'h4', { text: '' }),
154
- block('about-team-2-role', 'text', 'caption', { text: '' }),
155
- ]),
156
- col('about-team-col-3', 3, [
157
- block('about-team-3-image', 'image', undefined, { src: '', alt: '' }),
158
- block('about-team-3-name', 'heading', 'h4', { text: '' }),
159
- block('about-team-3-role', 'text', 'caption', { text: '' }),
160
- ]),
161
- col('about-team-col-4', 3, [
162
- block('about-team-4-image', 'image', undefined, { src: '', alt: '' }),
163
- block('about-team-4-name', 'heading', 'h4', { text: '' }),
164
- block('about-team-4-role', 'text', 'caption', { text: '' }),
165
- ]),
166
- ]),
167
- ]),
168
- ]),
169
- section('about-stats-section', [
170
- container('about-stats-container', [
171
- row('about-stats-row', [
172
- col('about-stats-col-1', 3, [
173
- block('about-stat-1', 'stat', undefined, { value: '', label: '' }),
174
- ]),
175
- col('about-stats-col-2', 3, [
176
- block('about-stat-2', 'stat', undefined, { value: '', label: '' }),
177
- ]),
178
- col('about-stats-col-3', 3, [
179
- block('about-stat-3', 'stat', undefined, { value: '', label: '' }),
180
- ]),
181
- col('about-stats-col-4', 3, [
182
- block('about-stat-4', 'stat', undefined, { value: '', label: '' }),
183
- ]),
184
- ]),
185
- ]),
186
- ]),
187
- section('about-cta-section', [
188
- container('about-cta-container', [
189
- row('about-cta-row', [
190
- col('about-cta-col', 12, [
191
- block('about-cta-heading', 'heading', 'h2', { text: '' }),
192
- block('about-cta-text', 'text', undefined, { text: '' }),
193
- block('about-cta-button', 'button', 'primary', { text: '', url: '' }),
194
- ]),
195
- ]),
196
- ]),
197
- ]),
198
- ],
199
- };
200
- // ─── Contact ─────────────────────────────────────────────────────────────────
201
- const contactTree = {
202
- id: 'contact-page',
203
- type: 'page',
204
- children: [
205
- section('contact-hero-section', [
206
- container('contact-hero-container', [
207
- row('contact-hero-row', [
208
- col('contact-hero-col', 12, [
209
- block('contact-hero-heading', 'heading', 'h1', { text: '' }),
210
- block('contact-hero-text', 'text', undefined, { text: '' }),
211
- ]),
212
- ]),
213
- ]),
214
- ]),
215
- section('contact-form-section', [
216
- container('contact-form-container', [
217
- row('contact-form-row', [
218
- col('contact-form-col', 8, [block('contact-form', 'form', 'contact', { fields: [] })]),
219
- col('contact-info-col', 4, [
220
- block('contact-info-heading', 'heading', 'h3', { text: '' }),
221
- block('contact-info-address', 'text', undefined, { text: '' }),
222
- block('contact-info-phone', 'text', undefined, { text: '' }),
223
- block('contact-info-email', 'text', undefined, { text: '' }),
224
- ]),
225
- ]),
226
- ]),
227
- ]),
228
- section('contact-map-section', [
229
- container('contact-map-container', [
230
- row('contact-map-row', [
231
- col('contact-map-col', 12, [
232
- block('contact-map', 'map', undefined, { lat: 0, lng: 0, zoom: 14 }),
233
- ]),
234
- ]),
235
- ]),
236
- ]),
237
- ],
238
- };
239
- // ─── Location ────────────────────────────────────────────────────────────────
240
- const locationTree = {
241
- id: 'location-page',
242
- type: 'page',
243
- children: [
244
- section('location-hero-section', [
245
- container('location-hero-container', [
246
- row('location-hero-row', [
247
- col('location-hero-col', 12, [
248
- block('location-hero-heading', 'heading', 'h1', { text: '' }),
249
- block('location-hero-text', 'text', 'lead', { text: '' }),
250
- ]),
251
- ]),
252
- ]),
253
- ]),
254
- section('location-services-section', [
255
- container('location-services-container', [
256
- row('location-services-row', [
257
- col('location-service-col-1', 4, [
258
- block('location-service-1-icon', 'icon', undefined, { icon: '' }),
259
- block('location-service-1-heading', 'heading', 'h3', { text: '' }),
260
- block('location-service-1-text', 'text', undefined, { text: '' }),
261
- ]),
262
- col('location-service-col-2', 4, [
263
- block('location-service-2-icon', 'icon', undefined, { icon: '' }),
264
- block('location-service-2-heading', 'heading', 'h3', { text: '' }),
265
- block('location-service-2-text', 'text', undefined, { text: '' }),
266
- ]),
267
- col('location-service-col-3', 4, [
268
- block('location-service-3-icon', 'icon', undefined, { icon: '' }),
269
- block('location-service-3-heading', 'heading', 'h3', { text: '' }),
270
- block('location-service-3-text', 'text', undefined, { text: '' }),
271
- ]),
272
- ]),
273
- ]),
274
- ]),
275
- section('location-testimonials-section', [
276
- container('location-testimonials-container', [
277
- row('location-testimonials-row', [
278
- col('location-testimonial-col-1', 6, [
279
- block('location-testimonial-1', 'testimonial', undefined, {
280
- quote: '',
281
- author: '',
282
- role: '',
283
- }),
284
- ]),
285
- col('location-testimonial-col-2', 6, [
286
- block('location-testimonial-2', 'testimonial', undefined, {
287
- quote: '',
288
- author: '',
289
- role: '',
290
- }),
291
- ]),
292
- ]),
293
- ]),
294
- ]),
295
- section('location-faq-section', [
296
- container('location-faq-container', [
297
- row('location-faq-row', [
298
- col('location-faq-col', 12, [
299
- block('location-faq-heading', 'heading', 'h2', { text: '' }),
300
- block('location-faq', 'accordion', undefined, { items: [] }),
301
- ]),
302
- ]),
303
- ]),
304
- ]),
305
- section('location-contact-section', [
306
- container('location-contact-container', [
307
- row('location-contact-row', [
308
- col('location-contact-info-col', 6, [
309
- block('location-contact-heading', 'heading', 'h3', { text: '' }),
310
- block('location-contact-address', 'text', undefined, { text: '' }),
311
- block('location-contact-phone', 'text', undefined, { text: '' }),
312
- block('location-contact-hours', 'text', undefined, { text: '' }),
313
- ]),
314
- col('location-contact-map-col', 6, [
315
- block('location-contact-map', 'map', undefined, { lat: 0, lng: 0, zoom: 14 }),
316
- ]),
317
- ]),
318
- ]),
319
- ]),
320
- ],
321
- };
322
- // ─── Blog Post ───────────────────────────────────────────────────────────────
323
- const blogPostTree = {
324
- id: 'blog-post-page',
325
- type: 'page',
326
- children: [
327
- section('blog-post-hero-section', [
328
- container('blog-post-hero-container', [
329
- row('blog-post-hero-row', [
330
- col('blog-post-hero-col', 12, [
331
- block('blog-post-hero-heading', 'heading', 'h1', { text: '' }),
332
- block('blog-post-hero-meta', 'text', 'caption', { text: '' }),
333
- ]),
334
- ]),
335
- ]),
336
- ]),
337
- section('blog-post-content-section', [
338
- container('blog-post-content-container', [
339
- row('blog-post-content-row', [
340
- col('blog-post-content-col', 12, [
341
- block('blog-post-content', 'richText', undefined, { content: '' }),
342
- ]),
343
- ]),
344
- ]),
345
- ]),
346
- section('blog-post-author-section', [
347
- container('blog-post-author-container', [
348
- row('blog-post-author-row', [
349
- col('blog-post-author-avatar-col', 2, [
350
- block('blog-post-author-avatar', 'image', 'avatar', { src: '', alt: '' }),
351
- ]),
352
- col('blog-post-author-bio-col', 10, [
353
- block('blog-post-author-name', 'heading', 'h4', { text: '' }),
354
- block('blog-post-author-bio', 'text', undefined, { text: '' }),
355
- ]),
356
- ]),
357
- ]),
358
- ]),
359
- section('blog-post-related-section', [
360
- container('blog-post-related-container', [
361
- row('blog-post-related-row', [
362
- col('blog-post-related-col-1', 4, [
363
- block('blog-post-related-1', 'card', undefined, {
364
- title: '',
365
- excerpt: '',
366
- image: '',
367
- url: '',
368
- }),
369
- ]),
370
- col('blog-post-related-col-2', 4, [
371
- block('blog-post-related-2', 'card', undefined, {
372
- title: '',
373
- excerpt: '',
374
- image: '',
375
- url: '',
376
- }),
377
- ]),
378
- col('blog-post-related-col-3', 4, [
379
- block('blog-post-related-3', 'card', undefined, {
380
- title: '',
381
- excerpt: '',
382
- image: '',
383
- url: '',
384
- }),
385
- ]),
386
- ]),
387
- ]),
388
- ]),
389
- ],
390
- };
391
- // ─── Case Study ──────────────────────────────────────────────────────────────
392
- const caseStudyTree = {
393
- id: 'case-study-page',
394
- type: 'page',
395
- children: [
396
- section('case-study-hero-section', [
397
- container('case-study-hero-container', [
398
- row('case-study-hero-row', [
399
- col('case-study-hero-col', 12, [
400
- block('case-study-hero-eyebrow', 'text', 'caption', { text: 'Case study' }),
401
- block('case-study-hero-heading', 'heading', 'h1', { text: '' }),
402
- block('case-study-hero-summary', 'text', 'lead', { text: '' }),
403
- block('case-study-hero-image', 'image', undefined, { src: '', alt: '' }),
404
- ]),
405
- ]),
406
- ]),
407
- ]),
408
- section('case-study-metrics-section', [
409
- container('case-study-metrics-container', [
410
- row('case-study-metrics-row', [
411
- col('case-study-metric-col-1', 4, [
412
- block('case-study-metric-1', 'stat', undefined, { value: '', label: '' }),
413
- ]),
414
- col('case-study-metric-col-2', 4, [
415
- block('case-study-metric-2', 'stat', undefined, { value: '', label: '' }),
416
- ]),
417
- col('case-study-metric-col-3', 4, [
418
- block('case-study-metric-3', 'stat', undefined, { value: '', label: '' }),
419
- ]),
420
- ]),
421
- ]),
422
- ]),
423
- section('case-study-challenge-section', [
424
- container('case-study-challenge-container', [
425
- row('case-study-challenge-row', [
426
- col('case-study-challenge-col', 12, [
427
- block('case-study-challenge-heading', 'heading', 'h2', { text: 'Challenge' }),
428
- block('case-study-challenge-text', 'richText', undefined, { content: '' }),
429
- ]),
430
- ]),
431
- ]),
432
- ]),
433
- section('case-study-solution-section', [
434
- container('case-study-solution-container', [
435
- row('case-study-solution-row', [
436
- col('case-study-solution-col', 12, [
437
- block('case-study-solution-heading', 'heading', 'h2', { text: 'Solution' }),
438
- block('case-study-solution-text', 'richText', undefined, { content: '' }),
439
- ]),
440
- ]),
441
- ]),
442
- ]),
443
- section('case-study-results-section', [
444
- container('case-study-results-container', [
445
- row('case-study-results-row', [
446
- col('case-study-results-col', 12, [
447
- block('case-study-results-heading', 'heading', 'h2', { text: 'Results' }),
448
- block('case-study-results-text', 'richText', undefined, { content: '' }),
449
- ]),
450
- ]),
451
- ]),
452
- ]),
453
- section('case-study-quote-section', [
454
- container('case-study-quote-container', [
455
- row('case-study-quote-row', [
456
- col('case-study-quote-col', 12, [
457
- block('case-study-quote', 'testimonial', undefined, {
458
- quote: '',
459
- author: '',
460
- role: '',
461
- }),
462
- ]),
463
- ]),
464
- ]),
465
- ]),
466
- section('case-study-cta-section', [
467
- container('case-study-cta-container', [
468
- row('case-study-cta-row', [
469
- col('case-study-cta-col', 12, [
470
- block('case-study-cta-heading', 'heading', 'h2', { text: '' }),
471
- block('case-study-cta-text', 'text', undefined, { text: '' }),
472
- block('case-study-cta-button', 'button', 'primary', { text: '', url: '' }),
473
- ]),
474
- ]),
475
- ]),
476
- ]),
477
- ],
478
- };
479
- // ─── Portfolio ────────────────────────────────────────────────────────────────
480
- const portfolioTree = {
481
- id: 'portfolio-page',
482
- type: 'page',
483
- children: [
484
- section('portfolio-hero-section', [
485
- container('portfolio-hero-container', [
486
- row('portfolio-hero-row', [
487
- col('portfolio-hero-col', 12, [
488
- block('portfolio-hero-eyebrow', 'text', 'caption', { text: '' }),
489
- block('portfolio-hero-heading', 'heading', 'h1', { text: '' }),
490
- block('portfolio-hero-summary', 'text', 'lead', { text: '' }),
491
- ]),
492
- ]),
493
- ]),
494
- ]),
495
- section('portfolio-cover-section', [
496
- container('portfolio-cover-container', [
497
- row('portfolio-cover-row', [
498
- col('portfolio-cover-col', 12, [
499
- block('portfolio-cover-image', 'image', undefined, { src: '', alt: '' }),
500
- ]),
501
- ]),
502
- ]),
503
- ]),
504
- section('portfolio-info-section', [
505
- container('portfolio-info-container', [
506
- row('portfolio-info-row', [
507
- col('portfolio-info-client-col', 4, [
508
- block('portfolio-info-client-label', 'text', 'caption', { text: 'Client' }),
509
- block('portfolio-info-client', 'text', undefined, { text: '' }),
510
- ]),
511
- col('portfolio-info-role-col', 4, [
512
- block('portfolio-info-role-label', 'text', 'caption', { text: 'Role' }),
513
- block('portfolio-info-role', 'text', undefined, { text: '' }),
514
- ]),
515
- col('portfolio-info-date-col', 4, [
516
- block('portfolio-info-date-label', 'text', 'caption', { text: 'Completed' }),
517
- block('portfolio-info-date', 'text', undefined, { text: '' }),
518
- ]),
519
- ]),
520
- ]),
521
- ]),
522
- section('portfolio-description-section', [
523
- container('portfolio-description-container', [
524
- row('portfolio-description-row', [
525
- col('portfolio-description-col', 12, [
526
- block('portfolio-description-heading', 'heading', 'h2', { text: 'About the project' }),
527
- block('portfolio-description-text', 'richText', undefined, { content: '' }),
528
- ]),
529
- ]),
530
- ]),
531
- ]),
532
- section('portfolio-gallery-section', [
533
- container('portfolio-gallery-container', [
534
- row('portfolio-gallery-row-1', [
535
- col('portfolio-gallery-col-1', 6, [
536
- block('portfolio-gallery-1', 'image', undefined, { src: '', alt: '' }),
537
- ]),
538
- col('portfolio-gallery-col-2', 6, [
539
- block('portfolio-gallery-2', 'image', undefined, { src: '', alt: '' }),
540
- ]),
541
- ]),
542
- row('portfolio-gallery-row-2', [
543
- col('portfolio-gallery-col-3', 12, [
544
- block('portfolio-gallery-3', 'image', undefined, { src: '', alt: '' }),
545
- ]),
546
- ]),
547
- ]),
548
- ]),
549
- section('portfolio-cta-section', [
550
- container('portfolio-cta-container', [
551
- row('portfolio-cta-row', [
552
- col('portfolio-cta-col', 12, [
553
- block('portfolio-cta-heading', 'heading', 'h2', { text: 'View live project' }),
554
- block('portfolio-cta-button', 'button', 'primary', { text: 'Visit', url: '' }),
555
- ]),
556
- ]),
557
- ]),
558
- ]),
559
- ],
560
- };
561
- // ─── Service ──────────────────────────────────────────────────────────────────
562
- const serviceTree = {
563
- id: 'service-page',
564
- type: 'page',
565
- children: [
566
- section('service-hero-section', [
567
- container('service-hero-container', [
568
- row('service-hero-row', [
569
- col('service-hero-text-col', 7, [
570
- block('service-hero-eyebrow', 'text', 'caption', { text: 'Service' }),
571
- block('service-hero-heading', 'heading', 'h1', { text: '' }),
572
- block('service-hero-text', 'text', 'lead', { text: '' }),
573
- block('service-hero-cta', 'button', 'primary', { text: '', url: '' }),
574
- ]),
575
- col('service-hero-image-col', 5, [
576
- block('service-hero-image', 'image', undefined, { src: '', alt: '' }),
577
- ]),
578
- ]),
579
- ]),
580
- ]),
581
- section('service-description-section', [
582
- container('service-description-container', [
583
- row('service-description-row', [
584
- col('service-description-col', 12, [
585
- block('service-description-heading', 'heading', 'h2', {
586
- text: "What's included",
587
- }),
588
- block('service-description-text', 'richText', undefined, { content: '' }),
589
- ]),
590
- ]),
591
- ]),
592
- ]),
593
- section('service-benefits-section', [
594
- container('service-benefits-container', [
595
- row('service-benefits-row', [
596
- col('service-benefit-col-1', 4, [
597
- block('service-benefit-1-icon', 'icon', undefined, { icon: '' }),
598
- block('service-benefit-1-heading', 'heading', 'h3', { text: '' }),
599
- block('service-benefit-1-text', 'text', undefined, { text: '' }),
600
- ]),
601
- col('service-benefit-col-2', 4, [
602
- block('service-benefit-2-icon', 'icon', undefined, { icon: '' }),
603
- block('service-benefit-2-heading', 'heading', 'h3', { text: '' }),
604
- block('service-benefit-2-text', 'text', undefined, { text: '' }),
605
- ]),
606
- col('service-benefit-col-3', 4, [
607
- block('service-benefit-3-icon', 'icon', undefined, { icon: '' }),
608
- block('service-benefit-3-heading', 'heading', 'h3', { text: '' }),
609
- block('service-benefit-3-text', 'text', undefined, { text: '' }),
610
- ]),
611
- ]),
612
- ]),
613
- ]),
614
- section('service-pricing-section', [
615
- container('service-pricing-container', [
616
- row('service-pricing-row', [
617
- col('service-pricing-col', 12, [
618
- block('service-pricing-heading', 'heading', 'h2', { text: 'Pricing' }),
619
- block('service-pricing-text', 'text', undefined, { text: '' }),
620
- block('service-pricing-cta', 'button', 'primary', { text: 'Get a quote', url: '' }),
621
- ]),
622
- ]),
623
- ]),
624
- ]),
625
- section('service-faq-section', [
626
- container('service-faq-container', [
627
- row('service-faq-row', [
628
- col('service-faq-col', 12, [
629
- block('service-faq-heading', 'heading', 'h2', { text: 'Common questions' }),
630
- block('service-faq', 'accordion', undefined, { items: [] }),
631
- ]),
632
- ]),
633
- ]),
634
- ]),
635
- ],
636
- };
637
- // ─── Team Member ──────────────────────────────────────────────────────────────
638
- const teamMemberTree = {
639
- id: 'team-member-page',
640
- type: 'page',
641
- children: [
642
- section('team-member-hero-section', [
643
- container('team-member-hero-container', [
644
- row('team-member-hero-row', [
645
- col('team-member-photo-col', 4, [
646
- block('team-member-photo', 'image', 'avatar', { src: '', alt: '' }),
647
- ]),
648
- col('team-member-intro-col', 8, [
649
- block('team-member-name', 'heading', 'h1', { text: '' }),
650
- block('team-member-role', 'text', 'lead', { text: '' }),
651
- block('team-member-tagline', 'text', undefined, { text: '' }),
652
- ]),
653
- ]),
654
- ]),
655
- ]),
656
- section('team-member-bio-section', [
657
- container('team-member-bio-container', [
658
- row('team-member-bio-row', [
659
- col('team-member-bio-col', 12, [
660
- block('team-member-bio-heading', 'heading', 'h2', { text: 'About' }),
661
- block('team-member-bio-text', 'richText', undefined, { content: '' }),
662
- ]),
663
- ]),
664
- ]),
665
- ]),
666
- section('team-member-contact-section', [
667
- container('team-member-contact-container', [
668
- row('team-member-contact-row', [
669
- col('team-member-contact-col', 12, [
670
- block('team-member-contact-heading', 'heading', 'h2', { text: 'Connect' }),
671
- block('team-member-email', 'text', undefined, { text: '' }),
672
- block('team-member-social', 'text', undefined, { text: '' }),
673
- ]),
674
- ]),
675
- ]),
676
- ]),
677
- ],
678
- };
679
- // ─── Export ──────────────────────────────────────────────────────────────────
680
- export const BUILT_IN_TEMPLATES = {
681
- blank: {
682
- name: 'Blank Page',
683
- description: 'Empty page with a single section ready for content',
684
- category: 'utility',
685
- tree: blankTree,
686
- },
687
- landing: {
688
- name: 'Landing Page',
689
- description: 'Hero, features cards, CTA, testimonials, and final CTA',
690
- category: 'landing',
691
- tree: landingTree,
692
- },
693
- about: {
694
- name: 'About Page',
695
- description: 'Hero, mission text, team cards, stats, and CTA',
696
- category: 'content',
697
- tree: aboutTree,
698
- },
699
- contact: {
700
- name: 'Contact Page',
701
- description: 'Hero, two-column form with contact info, and map embed',
702
- category: 'utility',
703
- tree: contactTree,
704
- },
705
- location: {
706
- name: 'Location Page',
707
- description: 'Hero, services cards, testimonials, FAQ, and contact info with map',
708
- category: 'landing',
709
- tree: locationTree,
710
- },
711
- 'blog-post': {
712
- name: 'Blog Post',
713
- description: 'Hero with meta, long-form content, author bio, and related posts',
714
- category: 'content',
715
- tree: blogPostTree,
716
- },
717
- 'case-study': {
718
- name: 'Case Study',
719
- description: 'Hero, key metrics, challenge/solution/results sections, pull quote, and CTA',
720
- category: 'content',
721
- tree: caseStudyTree,
722
- },
723
- portfolio: {
724
- name: 'Portfolio Item',
725
- description: 'Hero, cover image, client/role/date strip, description, gallery grid, and live-project CTA',
726
- category: 'content',
727
- tree: portfolioTree,
728
- },
729
- service: {
730
- name: 'Service Page',
731
- description: 'Hero with image + CTA, description, benefits grid, pricing, and FAQ accordion',
732
- category: 'landing',
733
- tree: serviceTree,
734
- },
735
- 'team-member': {
736
- name: 'Team Member',
737
- description: 'Avatar + headline hero, full bio, and contact / social links',
738
- category: 'content',
739
- tree: teamMemberTree,
740
- },
741
- };
742
- //# sourceMappingURL=templates.js.map