create-cogenta 0.2.1 → 0.5.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 (183) hide show
  1. package/dist/blueprint-defaults.d.ts.map +1 -1
  2. package/dist/blueprint-defaults.js +6 -0
  3. package/dist/blueprint-defaults.js.map +1 -1
  4. package/dist/blueprints/assets/photos/association/community-cleanup.jpg +0 -0
  5. package/dist/blueprints/assets/photos/association/fundraising-dinner.jpg +0 -0
  6. package/dist/blueprints/assets/photos/association/garden-planting.jpg +0 -0
  7. package/dist/blueprints/assets/photos/association/harvest-food-drive.jpg +0 -0
  8. package/dist/blueprints/assets/photos/association/hero.jpg +0 -0
  9. package/dist/blueprints/assets/photos/association/volunteer-orientation.jpg +0 -0
  10. package/dist/blueprints/assets/photos/association/winter-coat-collection.jpg +0 -0
  11. package/dist/blueprints/assets/photos/blog/blog-runs-itself.jpg +0 -0
  12. package/dist/blueprints/assets/photos/blog/desk-setup.jpg +0 -0
  13. package/dist/blueprints/assets/photos/blog/editing.jpg +0 -0
  14. package/dist/blueprints/assets/photos/blog/hero.jpg +0 -0
  15. package/dist/blueprints/assets/photos/blog/notebooks.jpg +0 -0
  16. package/dist/blueprints/assets/photos/blog/plain-text-editor.jpg +0 -0
  17. package/dist/blueprints/assets/photos/blog/reading-nonfiction.jpg +0 -0
  18. package/dist/blueprints/assets/photos/blog/small-tool.jpg +0 -0
  19. package/dist/blueprints/assets/photos/blog/writing-schedule.jpg +0 -0
  20. package/dist/blueprints/assets/photos/magazine/business-2.jpg +0 -0
  21. package/dist/blueprints/assets/photos/magazine/business-3.jpg +0 -0
  22. package/dist/blueprints/assets/photos/magazine/business.jpg +0 -0
  23. package/dist/blueprints/assets/photos/magazine/culture-2.jpg +0 -0
  24. package/dist/blueprints/assets/photos/magazine/culture-3.jpg +0 -0
  25. package/dist/blueprints/assets/photos/magazine/culture.jpg +0 -0
  26. package/dist/blueprints/assets/photos/magazine/news-2.jpg +0 -0
  27. package/dist/blueprints/assets/photos/magazine/news-3.jpg +0 -0
  28. package/dist/blueprints/assets/photos/magazine/news.jpg +0 -0
  29. package/dist/blueprints/assets/photos/magazine/opinion-2.jpg +0 -0
  30. package/dist/blueprints/assets/photos/magazine/opinion-3.jpg +0 -0
  31. package/dist/blueprints/assets/photos/magazine/opinion.jpg +0 -0
  32. package/dist/blueprints/assets/photos/portfolio/adatum-publishing.jpg +0 -0
  33. package/dist/blueprints/assets/photos/portfolio/contoso-mobile-app.jpg +0 -0
  34. package/dist/blueprints/assets/photos/portfolio/fabrikam-annual-report.jpg +0 -0
  35. package/dist/blueprints/assets/photos/portfolio/hero.jpg +0 -0
  36. package/dist/blueprints/assets/photos/portfolio/litware-signage.jpg +0 -0
  37. package/dist/blueprints/assets/photos/portfolio/northwind-rebrand.jpg +0 -0
  38. package/dist/blueprints/assets/photos/portfolio/proseware-launch.jpg +0 -0
  39. package/dist/blueprints/assets/photos/portfolio/tailspin-streaming.jpg +0 -0
  40. package/dist/blueprints/assets/photos/portfolio/wingtip-wayfinding.jpg +0 -0
  41. package/dist/blueprints/assets/photos/restaurant/charred-octopus.jpg +0 -0
  42. package/dist/blueprints/assets/photos/restaurant/chocolate-tart.jpg +0 -0
  43. package/dist/blueprints/assets/photos/restaurant/creme-brulee.jpg +0 -0
  44. package/dist/blueprints/assets/photos/restaurant/hero.jpg +0 -0
  45. package/dist/blueprints/assets/photos/restaurant/house-red.jpg +0 -0
  46. package/dist/blueprints/assets/photos/restaurant/house-white.jpg +0 -0
  47. package/dist/blueprints/assets/photos/restaurant/pan-seared-trout.jpg +0 -0
  48. package/dist/blueprints/assets/photos/restaurant/poached-pear.jpg +0 -0
  49. package/dist/blueprints/assets/photos/restaurant/roasted-beet-salad.jpg +0 -0
  50. package/dist/blueprints/assets/photos/restaurant/slow-roast-duck-leg.jpg +0 -0
  51. package/dist/blueprints/assets/photos/restaurant/soup-of-the-day.jpg +0 -0
  52. package/dist/blueprints/assets/photos/restaurant/sparkling-water.jpg +0 -0
  53. package/dist/blueprints/assets/photos/restaurant/wild-mushroom-risotto.jpg +0 -0
  54. package/dist/blueprints/assets/photos/saas/avatar-1.jpg +0 -0
  55. package/dist/blueprints/assets/photos/saas/hero.jpg +0 -0
  56. package/dist/blueprints/assets/photos/store/camp-blanket.jpg +0 -0
  57. package/dist/blueprints/assets/photos/store/canvas-tote.jpg +0 -0
  58. package/dist/blueprints/assets/photos/store/cast-iron-skillet.jpg +0 -0
  59. package/dist/blueprints/assets/photos/store/ceramic-pour-over-set.jpg +0 -0
  60. package/dist/blueprints/assets/photos/store/enamel-mug.jpg +0 -0
  61. package/dist/blueprints/assets/photos/store/everyday-tee.jpg +0 -0
  62. package/dist/blueprints/assets/photos/store/field-jacket.jpg +0 -0
  63. package/dist/blueprints/assets/photos/store/hero.jpg +0 -0
  64. package/dist/blueprints/assets/photos/store/leather-card-holder.jpg +0 -0
  65. package/dist/blueprints/assets/photos/store/linen-table-runner.jpg +0 -0
  66. package/dist/blueprints/assets/photos/store/trail-tote.jpg +0 -0
  67. package/dist/blueprints/assets/photos/store/wool-beanie.jpg +0 -0
  68. package/dist/blueprints/assets/photos/store/wool-overshirt.jpg +0 -0
  69. package/dist/blueprints/assets/photos/vitrine/avatar-1.jpg +0 -0
  70. package/dist/blueprints/assets/photos/vitrine/avatar-2.jpg +0 -0
  71. package/dist/blueprints/assets/photos/vitrine/avatar-3.jpg +0 -0
  72. package/dist/blueprints/assets/photos/vitrine/dashboard.jpg +0 -0
  73. package/dist/blueprints/assets/photos/vitrine/hero.jpg +0 -0
  74. package/dist/blueprints/association.d.ts +93 -15
  75. package/dist/blueprints/association.d.ts.map +1 -1
  76. package/dist/blueprints/association.js +637 -130
  77. package/dist/blueprints/association.js.map +1 -1
  78. package/dist/blueprints/blog.d.ts +81 -94
  79. package/dist/blueprints/blog.d.ts.map +1 -1
  80. package/dist/blueprints/blog.js +513 -177
  81. package/dist/blueprints/blog.js.map +1 -1
  82. package/dist/blueprints/content-pack.d.ts +83 -2
  83. package/dist/blueprints/content-pack.d.ts.map +1 -1
  84. package/dist/blueprints/content-pack.js +54 -1
  85. package/dist/blueprints/content-pack.js.map +1 -1
  86. package/dist/blueprints/content-packs.d.ts +4 -3
  87. package/dist/blueprints/content-packs.d.ts.map +1 -1
  88. package/dist/blueprints/content-packs.js +6 -3
  89. package/dist/blueprints/content-packs.js.map +1 -1
  90. package/dist/blueprints/demo-media.d.ts +39 -0
  91. package/dist/blueprints/demo-media.d.ts.map +1 -0
  92. package/dist/blueprints/demo-media.js +30 -0
  93. package/dist/blueprints/demo-media.js.map +1 -0
  94. package/dist/blueprints/documentation.d.ts +78 -15
  95. package/dist/blueprints/documentation.d.ts.map +1 -1
  96. package/dist/blueprints/documentation.js +585 -104
  97. package/dist/blueprints/documentation.js.map +1 -1
  98. package/dist/blueprints/magazine.d.ts +81 -15
  99. package/dist/blueprints/magazine.d.ts.map +1 -1
  100. package/dist/blueprints/magazine.js +431 -85
  101. package/dist/blueprints/magazine.js.map +1 -1
  102. package/dist/blueprints/menus.d.ts +25 -0
  103. package/dist/blueprints/menus.d.ts.map +1 -0
  104. package/dist/blueprints/menus.js +33 -0
  105. package/dist/blueprints/menus.js.map +1 -0
  106. package/dist/blueprints/photo-assets.d.ts +3 -0
  107. package/dist/blueprints/photo-assets.d.ts.map +1 -0
  108. package/dist/blueprints/photo-assets.js +33 -0
  109. package/dist/blueprints/photo-assets.js.map +1 -0
  110. package/dist/blueprints/portfolio.d.ts +81 -13
  111. package/dist/blueprints/portfolio.d.ts.map +1 -1
  112. package/dist/blueprints/portfolio.js +605 -102
  113. package/dist/blueprints/portfolio.js.map +1 -1
  114. package/dist/blueprints/registry.d.ts +3 -1
  115. package/dist/blueprints/registry.d.ts.map +1 -1
  116. package/dist/blueprints/registry.js +4 -1
  117. package/dist/blueprints/registry.js.map +1 -1
  118. package/dist/blueprints/restaurant.d.ts +65 -20
  119. package/dist/blueprints/restaurant.d.ts.map +1 -1
  120. package/dist/blueprints/restaurant.js +350 -117
  121. package/dist/blueprints/restaurant.js.map +1 -1
  122. package/dist/blueprints/saas.d.ts +81 -14
  123. package/dist/blueprints/saas.d.ts.map +1 -1
  124. package/dist/blueprints/saas.js +469 -132
  125. package/dist/blueprints/saas.js.map +1 -1
  126. package/dist/blueprints/site-settings-seed.d.ts +17 -0
  127. package/dist/blueprints/site-settings-seed.d.ts.map +1 -0
  128. package/dist/blueprints/site-settings-seed.js +45 -0
  129. package/dist/blueprints/site-settings-seed.js.map +1 -0
  130. package/dist/blueprints/starting-skins.d.ts +19 -0
  131. package/dist/blueprints/starting-skins.d.ts.map +1 -0
  132. package/dist/blueprints/starting-skins.js +301 -0
  133. package/dist/blueprints/starting-skins.js.map +1 -0
  134. package/dist/blueprints/store.d.ts +173 -0
  135. package/dist/blueprints/store.d.ts.map +1 -0
  136. package/dist/blueprints/store.js +643 -0
  137. package/dist/blueprints/store.js.map +1 -0
  138. package/dist/blueprints/vitrine.d.ts +94 -16
  139. package/dist/blueprints/vitrine.d.ts.map +1 -1
  140. package/dist/blueprints/vitrine.js +421 -142
  141. package/dist/blueprints/vitrine.js.map +1 -1
  142. package/dist/demo-art/compositions.d.ts +48 -0
  143. package/dist/demo-art/compositions.d.ts.map +1 -0
  144. package/dist/demo-art/compositions.js +690 -0
  145. package/dist/demo-art/compositions.js.map +1 -0
  146. package/dist/demo-art/index.d.ts +8 -0
  147. package/dist/demo-art/index.d.ts.map +1 -0
  148. package/dist/demo-art/index.js +5 -0
  149. package/dist/demo-art/index.js.map +1 -0
  150. package/dist/demo-art/oklch.d.ts +39 -0
  151. package/dist/demo-art/oklch.d.ts.map +1 -0
  152. package/dist/demo-art/oklch.js +79 -0
  153. package/dist/demo-art/oklch.js.map +1 -0
  154. package/dist/demo-art/png.d.ts +24 -0
  155. package/dist/demo-art/png.d.ts.map +1 -0
  156. package/dist/demo-art/png.js +110 -0
  157. package/dist/demo-art/png.js.map +1 -0
  158. package/dist/demo-art/render.d.ts +228 -0
  159. package/dist/demo-art/render.d.ts.map +1 -0
  160. package/dist/demo-art/render.js +478 -0
  161. package/dist/demo-art/render.js.map +1 -0
  162. package/dist/llm-setup.d.ts +10 -1
  163. package/dist/llm-setup.d.ts.map +1 -1
  164. package/dist/llm-setup.js +12 -2
  165. package/dist/llm-setup.js.map +1 -1
  166. package/dist/playground-reset.d.ts.map +1 -1
  167. package/dist/playground-reset.js +22 -4
  168. package/dist/playground-reset.js.map +1 -1
  169. package/dist/prompts.d.ts +12 -0
  170. package/dist/prompts.d.ts.map +1 -1
  171. package/dist/prompts.js +32 -0
  172. package/dist/prompts.js.map +1 -1
  173. package/dist/recap.d.ts.map +1 -1
  174. package/dist/recap.js +6 -0
  175. package/dist/recap.js.map +1 -1
  176. package/dist/scaffold.d.ts +22 -2
  177. package/dist/scaffold.d.ts.map +1 -1
  178. package/dist/scaffold.js +185 -23
  179. package/dist/scaffold.js.map +1 -1
  180. package/dist/wizard.d.ts.map +1 -1
  181. package/dist/wizard.js +4 -1
  182. package/dist/wizard.js.map +1 -1
  183. package/package.json +14 -11
@@ -1,13 +1,21 @@
1
+ import { CogentaError } from '@cogenta/core';
1
2
  import { createContentStore, defineCollection, f, validateCollectionSet, } from '@cogenta/schema';
2
- import { definePageCollection, richTextParagraph, toBlockZoneEntry, } from './content-pack.js';
3
+ import { avatarArt, coverArt, heroArt } from '../demo-art/compositions.js';
4
+ import { definePageCollection, richTextParagraph, SEO_FIELDS, toBlockZoneEntry, } from './content-pack.js';
5
+ import { STARTING_SKINS } from './starting-skins.js';
3
6
  /**
4
- * The `restaurant` blueprint's content model (L9 task 8, batch B): a
5
- * `menuItem` collection, grouped by `category` rather than a separate
6
- * category collection (the same restraint `magazine`'s `section` field
7
- * uses one grouping mechanism, not two). Routed even though nothing
8
- * deep-links to an individual item today, so the home page's live menu
9
- * list (`collectionList`) can build a real link for each entry, exactly
10
- * like every other blueprint's routed, listed collection.
7
+ * The `restaurant` blueprint (L25 task A0b/Phase 1): a `menu_item`
8
+ * collection grouped by `category` rather than a separate category
9
+ * collection, the same restraint `store`'s `product` and `magazine`'s
10
+ * `article` already use plus a genuinely rich single-page home that
11
+ * `@cogenta/theme-restaurant` renders as a real, priced, grouped menu
12
+ * (never a card grid: contract B is frozen, a "menu" block would need an
13
+ * RFC `docs/lots/L25-templates-pro.md` "pièges connus").
14
+ *
15
+ * Rewritten in full for L25 (its L9-task-8 predecessor seeded three home
16
+ * blocks and no visuals at all): twelve dishes across four categories, a
17
+ * real hero/gallery/testimonial/hours composition, real menus and site
18
+ * settings, and `@cogenta/theme-restaurant` as the default theme.
11
19
  */
12
20
  export const menuItem = defineCollection({
13
21
  name: 'menu_item',
@@ -18,7 +26,12 @@ export const menuItem = defineCollection({
18
26
  slug: f.slug({ from: 'name', unique: true }),
19
27
  description: f.text({ max: 300, multiline: true }),
20
28
  price: f.number({ required: true, min: 0 }),
21
- category: f.select({ options: ['Starters', 'Mains', 'Desserts'], required: true }),
29
+ category: f.select({
30
+ options: ['Starters', 'Mains', 'Desserts', 'Drinks'],
31
+ required: true,
32
+ }),
33
+ photo: f.media({ accept: ['image'] }),
34
+ ...SEO_FIELDS,
22
35
  },
23
36
  indexes: [['slug'], ['category']],
24
37
  permissions: {
@@ -35,146 +48,355 @@ export const RESTAURANT_DEMO_MENU_ITEMS = [
35
48
  {
36
49
  name: 'Roasted beet salad',
37
50
  slug: 'roasted-beet-salad',
38
- description: 'Beets, goat cheese, walnuts, a light citrus dressing.',
51
+ description: 'Beets from the Tuesday market stalls, roasted slowly, with whipped goat cheese, toasted walnuts and a citrus dressing sharpened with a little sherry vinegar.',
39
52
  price: 9.5,
40
53
  category: 'Starters',
41
54
  },
42
55
  {
43
56
  name: 'Soup of the day',
44
57
  slug: 'soup-of-the-day',
45
- description: 'Changes with the season, always made from scratch.',
58
+ description: 'Whatever the stalls had this morning, simmered down to something simple — ask the server which vegetable won today.',
46
59
  price: 7,
47
60
  category: 'Starters',
48
61
  },
62
+ {
63
+ name: 'Charred octopus',
64
+ slug: 'charred-octopus',
65
+ description: 'Octopus charred hard over the grill for a smoky edge, smoked paprika, a potato purée finished with a thread of olive oil and a squeeze of lemon.',
66
+ price: 13,
67
+ category: 'Starters',
68
+ },
49
69
  {
50
70
  name: 'Pan-seared trout',
51
71
  slug: 'pan-seared-trout',
52
- description: 'Local trout, brown butter, seasonal vegetables.',
72
+ description: 'Trout from the Saône, pan-seared skin-side down until it crackles, brown butter, capers, and whatever root vegetables the market had that week.',
53
73
  price: 22,
54
74
  category: 'Mains',
55
75
  },
56
76
  {
57
77
  name: 'Wild mushroom risotto',
58
78
  slug: 'wild-mushroom-risotto',
59
- description: 'Arborio rice, a mix of wild mushrooms, parmesan.',
79
+ description: 'Arborio rice cooked slowly with a mix of wild mushrooms bought that week, finished with parmesan and a knob of butter off the heat.',
60
80
  price: 18,
61
81
  category: 'Mains',
62
82
  },
83
+ {
84
+ name: 'Slow-roast duck leg',
85
+ slug: 'slow-roast-duck-leg',
86
+ description: 'Duck leg confit overnight in its own fat, braised red cabbage with apple, and a juniper and red wine jus.',
87
+ price: 26,
88
+ category: 'Mains',
89
+ },
63
90
  {
64
91
  name: 'Chocolate tart',
65
92
  slug: 'chocolate-tart',
66
- description: 'Dark chocolate, sea salt, a short pastry crust.',
93
+ description: 'Dark chocolate ganache set in a short, buttery pastry crust, with a pinch of sea salt to cut the sweetness.',
67
94
  price: 8,
68
95
  category: 'Desserts',
69
96
  },
97
+ {
98
+ name: 'Poached pear',
99
+ slug: 'poached-pear',
100
+ description: 'A whole pear poached slowly in red wine and cinnamon, served with a spoon of mascarpone cream.',
101
+ price: 7.5,
102
+ category: 'Desserts',
103
+ },
104
+ {
105
+ name: 'Crème brûlée',
106
+ slug: 'creme-brulee',
107
+ description: 'Vanilla bean custard set overnight, with a caramelised sugar crust cracked at the table.',
108
+ price: 7,
109
+ category: 'Desserts',
110
+ },
111
+ {
112
+ name: 'House red, glass',
113
+ slug: 'house-red-glass',
114
+ description: 'A Rhône blend poured straight from the barrel — ask which producer is pouring this month.',
115
+ price: 6,
116
+ category: 'Drinks',
117
+ },
118
+ {
119
+ name: 'House white, glass',
120
+ slug: 'house-white-glass',
121
+ description: 'Crisp and dry, chilled to the glass, changes with what is drinking well this season.',
122
+ price: 6,
123
+ category: 'Drinks',
124
+ },
125
+ {
126
+ name: 'Sparkling water',
127
+ slug: 'sparkling-water',
128
+ description: 'Still or sparkling, brought to the table in a shared bottle.',
129
+ price: 3,
130
+ category: 'Drinks',
131
+ },
70
132
  ];
71
133
  const BLOCK_VERSION = '1.0.0';
72
- function proseParagraph(key, text) {
73
- return {
74
- _key: key,
75
- _type: 'prose',
76
- _version: BLOCK_VERSION,
77
- body: [
78
- {
79
- _key: `${key}-block`,
80
- _type: 'block',
81
- style: 'normal',
82
- children: [{ _key: `${key}-span`, _type: 'span', text, marks: [] }],
83
- markDefs: [],
84
- },
85
- ],
86
- };
134
+ function proseBlock(key, paragraphs) {
135
+ const body = paragraphs.map((text, index) => ({
136
+ _key: `${key}-p${index}`,
137
+ _type: 'block',
138
+ style: 'normal',
139
+ children: [{ _key: `${key}-p${index}-s`, _type: 'span', text, marks: [] }],
140
+ markDefs: [],
141
+ }));
142
+ return { _key: key, _type: 'prose', _version: BLOCK_VERSION, body };
143
+ }
144
+ /** A bullet list of opening-hours rows — contract A's rich text has no table node, so a simple list is the honest, structured equivalent (fiche L25, "no HTML in a block", R3). */
145
+ function hoursAnswer(key, rows) {
146
+ return rows.map((text, index) => ({
147
+ _key: `${key}-r${index}`,
148
+ _type: 'block',
149
+ style: 'normal',
150
+ listItem: 'bullet',
151
+ level: 1,
152
+ children: [{ _key: `${key}-r${index}-s`, _type: 'span', text, marks: [] }],
153
+ markDefs: [],
154
+ }));
87
155
  }
88
156
  /**
89
- * `home` (hero + a live list of menu highlights + a cta to reserve) and
90
- * `contact` (prose with hours and location plain text fields, contract A
91
- * has no dedicated "opening hours" field kind and none is warranted for
92
- * two lines of text).
157
+ * The home page's nine blocks (L25 Annexe brief): hero, "Our story",
158
+ * the priced menu, a gallery, the numbers, a testimonial, hours &
159
+ * location, a map, and the closing call to action. Every block's `_key`
160
+ * doubles as a real DOM anchor (`@cogenta/theme-restaurant`'s
161
+ * `renderPage`) — the header/footer menus below link straight into them,
162
+ * so the site reads as one considered page rather than a maze of empty
163
+ * stubs.
164
+ *
165
+ * A function of `media` (`SeedContext.media`), not a static const: the
166
+ * hero/gallery/testimonial media fields need ids `seedDemoMedia` only
167
+ * knows at scaffold time.
93
168
  */
94
- export const RESTAURANT_DEMO_PAGES = [
95
- {
96
- title: 'Home',
97
- slug: 'home',
98
- blocks: [
99
- {
100
- _key: 'demo-home-hero',
101
- _type: 'hero',
102
- _version: BLOCK_VERSION,
103
- eyebrow: 'Restaurant',
104
- title: 'Seasonal, simple, close to home',
105
- subtitle: 'Scaffolded by create-cogenta from the "restaurant" blueprint, with a real demo menu already in place.',
106
- actions: [{ label: 'Reserve a table', target: { href: '/contact' }, emphasis: 'primary' }],
107
- },
108
- {
109
- _key: 'demo-home-menu',
110
- _type: 'collectionList',
111
- _version: BLOCK_VERSION,
112
- title: 'From the menu',
113
- collection: 'menu_item',
114
- sort: { field: 'createdAt', direction: 'asc' },
115
- limit: 10,
116
- layout: 'grid',
117
- },
118
- {
119
- _key: 'demo-home-kitchen',
120
- _type: 'featureGrid',
121
- _version: BLOCK_VERSION,
122
- title: 'How we cook',
123
- items: [
124
- {
125
- _key: 'demo-kitchen-1',
126
- icon: 'market',
127
- title: 'Bought that morning',
128
- text: 'The menu is written after the market, not before it. That is why it changes twice a week.',
129
- },
130
- {
131
- _key: 'demo-kitchen-2',
132
- icon: 'fire',
133
- title: 'Cooked to order',
134
- text: 'Nothing is held under a lamp. Twenty minutes on a full service is normal, and worth it.',
135
- },
136
- {
137
- _key: 'demo-kitchen-3',
138
- icon: 'leaf',
139
- title: 'Always one of each',
140
- text: 'A vegetarian main and a dessert without gluten, every service, without needing to be asked.',
141
- },
142
- ],
169
+ export function buildRestaurantHomeBlocks(media) {
170
+ const galleryItems = [1, 2, 3, 4, 5, 6]
171
+ .map((n) => media[`gallery-${n}`])
172
+ .filter((id) => id !== undefined)
173
+ .map((id, index) => ({ _key: `home-gallery-${index}`, media: id }));
174
+ return [
175
+ {
176
+ _key: 'home-hero',
177
+ _type: 'hero',
178
+ _version: BLOCK_VERSION,
179
+ eyebrow: 'Est. 1994 · Lyon',
180
+ title: 'Amaranthe',
181
+ subtitle: 'Seasonal cooking, two streets from the market, since 1994.',
182
+ ...(media.hero === undefined ? {} : { media: media.hero }),
183
+ actions: [
184
+ { label: 'Reserve a table', target: { href: '/#home-cta' }, emphasis: 'primary' },
185
+ { label: 'View the menu', target: { href: '/#home-menu' } },
186
+ ],
187
+ },
188
+ proseBlock('home-story', [
189
+ 'Amaranthe opened in 1994, two streets from the market, with a kitchen built around what the stalls had that morning rather than a fixed idea of what a restaurant menu should say.',
190
+ "The idea was simple, and at the time unfashionable: no set menu printed a season in advance, no dish held hostage to a supplier's contract. Three chefs walk to the market before the ovens are even lit, buy what looks right, and write the day's menu on the way back.",
191
+ "Thirty years on, the room still seats thirty-two, the walk to the market is still five minutes, and the menu is still written after buying, never before. A handful of dishes — the crème brûlée, the duck confit — have stayed close to their first version for a reason: some things, once right, don't need reinventing.",
192
+ "What changes is what's on the plate. A hard frost one October meant three weeks of nothing but root vegetables, and no apology for it; a good mushroom season means the risotto changes weekly. The market decides the menu, not the other way around, and that is still the only rule in the kitchen.",
193
+ ]),
194
+ {
195
+ _key: 'home-menu',
196
+ _type: 'collectionList',
197
+ _version: BLOCK_VERSION,
198
+ title: 'The menu',
199
+ collection: 'menu_item',
200
+ sort: { field: 'createdAt', direction: 'asc' },
201
+ limit: 12,
202
+ layout: 'grid',
203
+ },
204
+ // A `gallery` needs at least one item (contract B) — with no media
205
+ // seeded (`buildRestaurantHomeBlocks({})`, exercised directly by
206
+ // `blueprint-demo-blocks.test.ts`) the block is left out entirely
207
+ // rather than emitted empty and invalid.
208
+ ...(galleryItems.length === 0
209
+ ? []
210
+ : [
211
+ {
212
+ _key: 'home-gallery',
213
+ _type: 'gallery',
214
+ _version: BLOCK_VERSION,
215
+ layout: 'masonry',
216
+ items: galleryItems,
217
+ },
218
+ ]),
219
+ {
220
+ _key: 'home-stats',
221
+ _type: 'stats',
222
+ _version: BLOCK_VERSION,
223
+ items: [
224
+ { _key: 'home-stats-1', value: '1994', label: 'Serving since' },
225
+ { _key: 'home-stats-2', value: '3', label: 'Chefs' },
226
+ { _key: 'home-stats-3', value: '32', label: 'Seats' },
227
+ { _key: 'home-stats-4', value: '1', label: 'Michelin mention' },
228
+ ],
229
+ },
230
+ {
231
+ _key: 'home-testimonial',
232
+ _type: 'testimonial',
233
+ _version: BLOCK_VERSION,
234
+ quote: richTextParagraph('home-testimonial-quote', 'A quietly confident kitchen — the kind of unhurried evening we keep coming back for.'),
235
+ attribution: {
236
+ name: 'M. Bernard',
237
+ role: 'Guestbook, 2026',
238
+ ...(media.avatar === undefined ? {} : { avatar: media.avatar }),
143
239
  },
144
- ],
145
- },
146
- {
147
- title: 'Contact',
148
- slug: 'contact',
149
- blocks: [
150
- proseParagraph('demo-contact-prose', 'This is a demo restaurant site, scaffolded by create-cogenta from the "restaurant" blueprint. Its menu and this page were seeded by the installer so there is real content to look at from the first run.'),
151
- proseParagraph('demo-contact-hours', 'Open Tuesday to Sunday, 18:00 to 23:00. 12 Market Street. Reservations recommended on weekends.'),
152
- {
153
- _key: 'demo-contact-faq',
154
- _type: 'faq',
155
- _version: BLOCK_VERSION,
156
- title: 'Before you book',
157
- items: [
158
- {
159
- _key: 'demo-contact-faq-1',
160
- question: 'Can you cater for allergies?',
161
- answer: richTextParagraph('demo-contact-faq-1-a', 'Tell us when you book rather than on the night — most of the menu can be adjusted with a few hours of notice, and almost none of it can be adjusted at 20:30.'),
162
- },
163
- {
164
- _key: 'demo-contact-faq-2',
165
- question: 'Do you take large tables?',
166
- answer: richTextParagraph('demo-contact-faq-2-a', 'Up to ten, on Tuesday to Thursday. The room seats thirty-two, so a party of ten on a Saturday is a third of the service.'),
167
- },
168
- {
169
- _key: 'demo-contact-faq-3',
170
- question: 'Is there parking?',
171
- answer: richTextParagraph('demo-contact-faq-3-a', 'Not our own. The market car park two streets away is free after 19:00, which is when most people arrive anyway.'),
172
- },
173
- ],
174
- },
175
- ],
240
+ },
241
+ {
242
+ _key: 'home-hours',
243
+ _type: 'accordion',
244
+ _version: BLOCK_VERSION,
245
+ title: 'Hours & location',
246
+ items: [
247
+ {
248
+ _key: 'home-hours-1',
249
+ question: 'Opening hours',
250
+ answer: hoursAnswer('home-hours-1', [
251
+ 'Tuesday – Thursday: 18:00–22:30',
252
+ 'Friday Saturday: 18:00–23:00',
253
+ 'Sunday: 12:00–15:00',
254
+ 'Closed Monday',
255
+ ]),
256
+ },
257
+ {
258
+ _key: 'home-hours-2',
259
+ question: 'Address',
260
+ answer: richTextParagraph('home-hours-2-a', '12 Rue du Marché, 69001 Lyon.'),
261
+ },
262
+ {
263
+ _key: 'home-hours-3',
264
+ question: 'Parking',
265
+ answer: richTextParagraph('home-hours-3-a', 'No dedicated parking. The Presqu’île car park is a five-minute walk and free after 19:00.'),
266
+ },
267
+ ],
268
+ },
269
+ {
270
+ _key: 'home-map',
271
+ _type: 'embed',
272
+ _version: BLOCK_VERSION,
273
+ provider: 'other',
274
+ url: 'https://www.openstreetmap.org/?mlat=45.767&mlon=4.834#map=16/45.767/4.834',
275
+ ratio: '16:9',
276
+ consentRequired: true,
277
+ },
278
+ {
279
+ _key: 'home-cta',
280
+ _type: 'cta',
281
+ _version: BLOCK_VERSION,
282
+ title: 'Book now',
283
+ text: 'Reservations recommended on weekends.',
284
+ actions: [
285
+ {
286
+ label: 'Book now',
287
+ target: { href: 'mailto:reservations@amaranthe.example' },
288
+ emphasis: 'primary',
289
+ },
290
+ { label: 'Call us', target: { href: 'tel:+33472000000' } },
291
+ ],
292
+ },
293
+ ];
294
+ }
295
+ export function buildRestaurantDemoPages(media) {
296
+ return [
297
+ { title: 'Home', slug: 'home', blocks: buildRestaurantHomeBlocks(media) },
298
+ {
299
+ title: 'Privacy',
300
+ slug: 'privacy',
301
+ blocks: [
302
+ proseBlock('privacy-body', [
303
+ 'Amaranthe collects only what a reservation needs: a name, a phone number, and a party size. Nothing is sold, shared, or used for anything beyond confirming your table.',
304
+ 'That information is kept only as long as it takes to seat you — reservation records are cleared at the end of each service, not archived into a mailing list you never asked to join.',
305
+ 'This site sets no tracking cookies and runs no advertising. If you have a question about what we hold, or want it removed sooner, ask any member of staff or write to reservations@amaranthe.example.',
306
+ ]),
307
+ ],
308
+ },
309
+ ];
310
+ }
311
+ /**
312
+ * `restaurant`'s own starting skin (`starting-skins.js`) — asserted
313
+ * present with a real check, not a `!`, since `STARTING_SKINS` is keyed by
314
+ * blueprint id and TypeScript cannot see that this particular key is
315
+ * always populated.
316
+ */
317
+ function restaurantPalette() {
318
+ const skin = STARTING_SKINS.restaurant;
319
+ if (skin === undefined) {
320
+ throw new CogentaError({
321
+ code: 'BLUEPRINT_REGISTRY_CORRUPT',
322
+ message: 'STARTING_SKINS.restaurant is missing.',
323
+ hint: 'The "restaurant" entry must stay declared in starting-skins.ts for this blueprint to render its demo art.',
324
+ });
325
+ }
326
+ return skin.color;
327
+ }
328
+ /**
329
+ * Procedural demo visuals (L25 D1): a warm, elegant hero backdrop, one
330
+ * cover photo per dish (`coverArt`, keyed by slug so `seedRestaurantDemoContent`
331
+ * can look each one up without caring what id the media store assigned
332
+ * it), six gallery images, and one avatar for the guestbook testimonial.
333
+ */
334
+ /** Bundled photography (`assets/photos/restaurant/`), keyed by the same slug `RESTAURANT_DEMO_MENU_ITEMS` uses — two slugs (`house-red-glass`/`house-white-glass`) shortened for the filename, the rest identical. */
335
+ const RESTAURANT_DISH_PHOTOS = {
336
+ 'roasted-beet-salad': 'restaurant/roasted-beet-salad.jpg',
337
+ 'soup-of-the-day': 'restaurant/soup-of-the-day.jpg',
338
+ 'charred-octopus': 'restaurant/charred-octopus.jpg',
339
+ 'pan-seared-trout': 'restaurant/pan-seared-trout.jpg',
340
+ 'wild-mushroom-risotto': 'restaurant/wild-mushroom-risotto.jpg',
341
+ 'slow-roast-duck-leg': 'restaurant/slow-roast-duck-leg.jpg',
342
+ 'chocolate-tart': 'restaurant/chocolate-tart.jpg',
343
+ 'poached-pear': 'restaurant/poached-pear.jpg',
344
+ 'creme-brulee': 'restaurant/creme-brulee.jpg',
345
+ 'house-red-glass': 'restaurant/house-red.jpg',
346
+ 'house-white-glass': 'restaurant/house-white.jpg',
347
+ 'sparkling-water': 'restaurant/sparkling-water.jpg',
348
+ };
349
+ export const RESTAURANT_MEDIA_SPECS = [
350
+ {
351
+ name: 'hero',
352
+ spec: heroArt(restaurantPalette(), 'radial', 7),
353
+ alt: 'The dining room, warm evening light',
354
+ photo: 'restaurant/hero.jpg',
355
+ },
356
+ ...RESTAURANT_DEMO_MENU_ITEMS.map((demo, index) => {
357
+ const photo = RESTAURANT_DISH_PHOTOS[demo.slug];
358
+ return {
359
+ name: `dish-${demo.slug}`,
360
+ spec: coverArt(restaurantPalette(), 100 + index),
361
+ alt: `${demo.name}, plated`,
362
+ ...(photo === undefined ? {} : { photo }),
363
+ };
364
+ }),
365
+ ...[1, 2, 3, 4, 5, 6].map((n) => ({
366
+ name: `gallery-${n}`,
367
+ spec: coverArt(restaurantPalette(), 200 + n),
368
+ alt: 'The dining room, an abstract composition',
369
+ })),
370
+ {
371
+ name: 'avatar',
372
+ spec: avatarArt(restaurantPalette(), 301),
373
+ alt: 'An abstract avatar composition, standing in for a guest photo',
176
374
  },
177
375
  ];
376
+ /** Header/footer navigation and the header "Reserve" button (L25 D4) — every link an in-page anchor into the home page's own blocks, except the real "Privacy" page. */
377
+ export const RESTAURANT_MENUS = {
378
+ header: [
379
+ { label: 'Menu', url: '/#home-menu' },
380
+ { label: 'Our story', url: '/#home-story' },
381
+ { label: 'Gallery', url: '/#home-gallery' },
382
+ { label: 'Contact', url: '/#home-hours' },
383
+ ],
384
+ footer: [
385
+ { label: 'Menu', url: '/#home-menu' },
386
+ { label: 'Reservations', url: '/#home-cta' },
387
+ { label: 'Privacy', url: '/privacy' },
388
+ ],
389
+ headerAction: { label: 'Reserve', url: '/#home-cta' },
390
+ };
391
+ export const RESTAURANT_SITE_SETTINGS = {
392
+ 'general.tagline': 'Seasonal cooking, since 1994.',
393
+ 'general.socialLinks': [
394
+ { label: 'Instagram', url: 'https://instagram.com/example' },
395
+ { label: 'Facebook', url: 'https://facebook.com/example' },
396
+ { label: 'Reviews', url: 'https://example.com/reviews' },
397
+ ],
398
+ 'general.footerNote': 'Amaranthe · 12 Rue du Marché, 69001 Lyon · +33 4 72 00 00 00',
399
+ };
178
400
  export const RESTAURANT_RECOMMENDED_AGENTS = [
179
401
  {
180
402
  name: 'seoAgent',
@@ -189,12 +411,18 @@ export const RESTAURANT_RECOMMENDED_AGENTS = [
189
411
  ];
190
412
  /**
191
413
  * Inserts the `restaurant` blueprint's demo content through the real
192
- * `ContentStore` — never mocked (house rule).
414
+ * `ContentStore` — never mocked (house rule). Each dish's `photo` and the
415
+ * home page's hero/gallery/testimonial media come from `ctx.media`
416
+ * (`seedDemoMedia`/`RESTAURANT_MEDIA_SPECS`) — absent (a caller that never
417
+ * ran `seedDemoMedia`) simply leaves those fields unset, since none of
418
+ * them is `required` on its collection/block.
193
419
  */
194
- async function seedRestaurantDemoContent(db, defaultLocale, adminId) {
420
+ async function seedRestaurantDemoContent(ctx) {
421
+ const { db, defaultLocale, adminId, media } = ctx;
195
422
  const menuItemStore = createContentStore({ db, collection: menuItem, defaultLocale });
196
423
  const pageStore = createContentStore({ db, collection: page, defaultLocale });
197
424
  for (const demo of RESTAURANT_DEMO_MENU_ITEMS) {
425
+ const photo = media[`dish-${demo.slug}`];
198
426
  await menuItemStore.create({
199
427
  status: 'published',
200
428
  createdBy: adminId,
@@ -204,10 +432,11 @@ async function seedRestaurantDemoContent(db, defaultLocale, adminId) {
204
432
  description: demo.description,
205
433
  price: demo.price,
206
434
  category: demo.category,
435
+ ...(photo === undefined ? {} : { photo }),
207
436
  },
208
437
  });
209
438
  }
210
- for (const demo of RESTAURANT_DEMO_PAGES) {
439
+ for (const demo of buildRestaurantDemoPages(media)) {
211
440
  await pageStore.create({
212
441
  status: 'published',
213
442
  createdBy: adminId,
@@ -220,5 +449,9 @@ export const restaurantContentPack = {
220
449
  collections: RESTAURANT_COLLECTIONS,
221
450
  recommendedAgents: RESTAURANT_RECOMMENDED_AGENTS,
222
451
  seedDemoContent: seedRestaurantDemoContent,
452
+ defaultTheme: '@cogenta/theme-restaurant',
453
+ menus: RESTAURANT_MENUS,
454
+ siteSettings: RESTAURANT_SITE_SETTINGS,
455
+ mediaSpecs: RESTAURANT_MEDIA_SPECS,
223
456
  };
224
457
  //# sourceMappingURL=restaurant.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"restaurant.js","sourceRoot":"","sources":["../../src/blueprints/restaurant.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"restaurant.js","sourceRoot":"","sources":["../../src/blueprints/restaurant.ts"],"names":[],"mappings":"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"}