@xiwebdesign/xicms-core 6.5.0 → 7.1.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 (381) hide show
  1. package/dist/SiteChrome.d.ts +12 -0
  2. package/dist/SiteChrome.js +24 -0
  3. package/dist/SiteChrome.js.map +1 -0
  4. package/dist/XiCMSProvider.d.ts +16 -8
  5. package/dist/XiCMSProvider.js +90 -61
  6. package/dist/XiCMSProvider.js.map +1 -1
  7. package/dist/admin/AdminApp.d.ts +1 -1
  8. package/dist/admin/AdminApp.js +81 -35
  9. package/dist/admin/AdminApp.js.map +1 -1
  10. package/dist/admin/AdminHelp.d.ts +8 -1
  11. package/dist/admin/AdminHelp.js +2 -2
  12. package/dist/admin/AdminHelp.js.map +1 -1
  13. package/dist/admin/CoreVersion.d.ts +13 -0
  14. package/dist/admin/CoreVersion.js +38 -0
  15. package/dist/admin/CoreVersion.js.map +1 -0
  16. package/dist/admin/NewsEditor.js +9 -9
  17. package/dist/admin/SuperadminPanel.js +5 -5
  18. package/dist/admin/blockEditors/GenericEditor.d.ts +2 -2
  19. package/dist/admin/blockEditors/GenericEditor.js +12 -11
  20. package/dist/admin/blockEditors/GenericEditor.js.map +1 -1
  21. package/dist/admin/blockEditors/StyleEditor.d.ts +1 -1
  22. package/dist/admin/blockEditors/StyleEditor.js +2 -2
  23. package/dist/admin/blockEditors/SymbolRefEditor.d.ts +1 -1
  24. package/dist/admin/blockEditors/SymbolRefEditor.js +5 -5
  25. package/dist/admin/blockEditors/index.d.ts +1 -1
  26. package/dist/admin/blockEditors/index.js +10 -10
  27. package/dist/admin/customBlocks/CustomBlocksPanel.js +7 -7
  28. package/dist/admin/editors/RichTextEditor.js +8 -7
  29. package/dist/admin/editors/RichTextEditor.js.map +1 -1
  30. package/dist/admin/editors/fontSizeExtension.js +1 -1
  31. package/dist/admin/editors/fontSizeExtension.js.map +1 -1
  32. package/dist/admin/forms/FormsPanel.js +9 -9
  33. package/dist/admin/index.d.ts +16 -16
  34. package/dist/admin/index.js +16 -16
  35. package/dist/admin/lib/mediaUsage.js +1 -1
  36. package/dist/admin/lib/pagesClient.d.ts +1 -1
  37. package/dist/admin/lib/pagesClient.js +11 -7
  38. package/dist/admin/lib/pagesClient.js.map +1 -1
  39. package/dist/admin/lib/sanitizeDraft.d.ts +9 -0
  40. package/dist/admin/lib/sanitizeDraft.js +28 -0
  41. package/dist/admin/lib/sanitizeDraft.js.map +1 -0
  42. package/dist/admin/lib/symbolsClient.d.ts +1 -1
  43. package/dist/admin/lib/symbolsClient.js +3 -3
  44. package/dist/admin/lib/upload.js +3 -3
  45. package/dist/admin/lib/useNestedDialog.d.ts +15 -0
  46. package/dist/admin/lib/useNestedDialog.js +23 -0
  47. package/dist/admin/lib/useNestedDialog.js.map +1 -0
  48. package/dist/admin/lib/zodFields.d.ts +4 -18
  49. package/dist/admin/lib/zodFields.js +54 -35
  50. package/dist/admin/lib/zodFields.js.map +1 -1
  51. package/dist/admin/media/MediaManager.js +7 -7
  52. package/dist/admin/media/MediaPicker.js +7 -7
  53. package/dist/admin/media/MediaPicker.js.map +1 -1
  54. package/dist/admin/pages/PageEditor.d.ts +1 -1
  55. package/dist/admin/pages/PageEditor.js +13 -13
  56. package/dist/admin/pages/PagesPanel.js +30 -30
  57. package/dist/admin/pages/PagesPanel.js.map +1 -1
  58. package/dist/admin/panelRegistry.js +7 -7
  59. package/dist/admin/patterns/PatternInserter.d.ts +1 -1
  60. package/dist/admin/patterns/PatternInserter.js +5 -5
  61. package/dist/admin/patterns/PatternInserter.js.map +1 -1
  62. package/dist/admin/settings/MailSettings.js +5 -5
  63. package/dist/admin/settings/MailTemplates.d.ts +1 -1
  64. package/dist/admin/settings/MailTemplates.js +5 -5
  65. package/dist/admin/settings/SettingsPanel.js +66 -20
  66. package/dist/admin/settings/SettingsPanel.js.map +1 -1
  67. package/dist/admin/settings/SnapshotsCard.js +5 -5
  68. package/dist/admin/settings/moduleSettingsForm.d.ts +1 -1
  69. package/dist/admin/settings/moduleSettingsForm.js +4 -4
  70. package/dist/admin/settings/moduleSettingsForm.js.map +1 -1
  71. package/dist/admin/shop/CategoriesTab.js +8 -8
  72. package/dist/admin/shop/ConnectionsTab.js +3 -3
  73. package/dist/admin/shop/DiscountsTab.js +8 -8
  74. package/dist/admin/shop/OrdersTab.js +10 -10
  75. package/dist/admin/shop/OrdersTab.js.map +1 -1
  76. package/dist/admin/shop/ProductsTab.js +10 -10
  77. package/dist/admin/shop/ShopPanel.js +9 -9
  78. package/dist/admin/shop/ShopSettingsTab.js +4 -4
  79. package/dist/admin/shop/index.d.ts +2 -2
  80. package/dist/admin/shop/index.js +2 -2
  81. package/dist/admin/shop/lib.js +2 -2
  82. package/dist/admin/stats/StatsPanel.js +2 -2
  83. package/dist/admin/ui/ArrayEditor.js +1 -1
  84. package/dist/admin/ui/PanelIcon.d.ts +3 -0
  85. package/dist/admin/ui/PanelIcon.js +34 -0
  86. package/dist/admin/ui/PanelIcon.js.map +1 -0
  87. package/dist/admin/ui/dialog.d.ts +21 -6
  88. package/dist/admin/ui/dialog.js +55 -34
  89. package/dist/admin/ui/dialog.js.map +1 -1
  90. package/dist/admin/ui/index.d.ts +7 -7
  91. package/dist/admin/ui/index.js +7 -7
  92. package/dist/admin/ui/primitives.js +1 -1
  93. package/dist/admin/ui/tabs.js +1 -1
  94. package/dist/admin/visual/TranslationPanel.d.ts +1 -1
  95. package/dist/admin/visual/TranslationPanel.js +3 -3
  96. package/dist/admin/visual/VisualEditor.js +47 -25
  97. package/dist/admin/visual/VisualEditor.js.map +1 -1
  98. package/dist/admin.css +2 -1
  99. package/dist/agentFiles/catalog.d.ts +2 -2
  100. package/dist/agentFiles/catalog.js +6 -5
  101. package/dist/agentFiles/catalog.js.map +1 -1
  102. package/dist/agentFiles/files.d.ts +5 -5
  103. package/dist/agentFiles/files.js +17 -17
  104. package/dist/agentFiles/files.js.map +1 -1
  105. package/dist/all.d.ts +4 -4
  106. package/dist/all.js +6 -6
  107. package/dist/auth/AuthProvider.d.ts +2 -2
  108. package/dist/auth/AuthProvider.js +51 -28
  109. package/dist/auth/AuthProvider.js.map +1 -1
  110. package/dist/auth/LoginForm.js +1 -1
  111. package/dist/auth/roles.js +4 -1
  112. package/dist/auth/roles.js.map +1 -1
  113. package/dist/blocks/BlockRenderer.d.ts +1 -1
  114. package/dist/blocks/BlockRenderer.js +3 -3
  115. package/dist/blocks/blockStyle.d.ts +1 -1
  116. package/dist/blocks/builtins/Accordion.d.ts +1 -1
  117. package/dist/blocks/builtins/Accordion.js +13 -6
  118. package/dist/blocks/builtins/Accordion.js.map +1 -1
  119. package/dist/blocks/builtins/Agenda.d.ts +1 -1
  120. package/dist/blocks/builtins/Agenda.js +5 -5
  121. package/dist/blocks/builtins/Banner.d.ts +1 -1
  122. package/dist/blocks/builtins/Banner.js +2 -2
  123. package/dist/blocks/builtins/BeforeAfter.d.ts +1 -1
  124. package/dist/blocks/builtins/BeforeAfter.js +4 -4
  125. package/dist/blocks/builtins/BeforeAfter.js.map +1 -1
  126. package/dist/blocks/builtins/Booking.d.ts +1 -1
  127. package/dist/blocks/builtins/Booking.js +5 -5
  128. package/dist/blocks/builtins/Breadcrumbs.d.ts +1 -1
  129. package/dist/blocks/builtins/Breadcrumbs.js +3 -3
  130. package/dist/blocks/builtins/Cards.d.ts +1 -1
  131. package/dist/blocks/builtins/Cards.js +5 -5
  132. package/dist/blocks/builtins/Cards.js.map +1 -1
  133. package/dist/blocks/builtins/Columns.d.ts +1 -1
  134. package/dist/blocks/builtins/Columns.js +4 -4
  135. package/dist/blocks/builtins/Contact.d.ts +3 -3
  136. package/dist/blocks/builtins/Contact.js +4 -4
  137. package/dist/blocks/builtins/Countdown.d.ts +1 -1
  138. package/dist/blocks/builtins/Countdown.js +4 -4
  139. package/dist/blocks/builtins/Countdown.js.map +1 -1
  140. package/dist/blocks/builtins/Cta.d.ts +1 -1
  141. package/dist/blocks/builtins/Cta.js +3 -3
  142. package/dist/blocks/builtins/Downloads.d.ts +1 -1
  143. package/dist/blocks/builtins/Downloads.js +4 -4
  144. package/dist/blocks/builtins/Elements.d.ts +3 -3
  145. package/dist/blocks/builtins/Elements.js +3 -3
  146. package/dist/blocks/builtins/Embed.d.ts +1 -1
  147. package/dist/blocks/builtins/Embed.js +3 -3
  148. package/dist/blocks/builtins/Faq.d.ts +1 -1
  149. package/dist/blocks/builtins/Faq.js +14 -6
  150. package/dist/blocks/builtins/Faq.js.map +1 -1
  151. package/dist/blocks/builtins/FormBlock.d.ts +1 -1
  152. package/dist/blocks/builtins/FormBlock.js +28 -18
  153. package/dist/blocks/builtins/FormBlock.js.map +1 -1
  154. package/dist/blocks/builtins/Gallery.d.ts +2 -2
  155. package/dist/blocks/builtins/Gallery.js +5 -5
  156. package/dist/blocks/builtins/Hero.d.ts +1 -1
  157. package/dist/blocks/builtins/Hero.js +4 -4
  158. package/dist/blocks/builtins/ImageBlock.d.ts +1 -1
  159. package/dist/blocks/builtins/ImageBlock.js +3 -3
  160. package/dist/blocks/builtins/Jobs.d.ts +2 -2
  161. package/dist/blocks/builtins/Jobs.js +5 -5
  162. package/dist/blocks/builtins/Layout.d.ts +2 -2
  163. package/dist/blocks/builtins/Layout.js +4 -4
  164. package/dist/blocks/builtins/MapBlock.d.ts +1 -1
  165. package/dist/blocks/builtins/MapBlock.js +3 -3
  166. package/dist/blocks/builtins/NewsListBlock.d.ts +1 -1
  167. package/dist/blocks/builtins/NewsListBlock.js +4 -4
  168. package/dist/blocks/builtins/Newsletter.d.ts +1 -1
  169. package/dist/blocks/builtins/Newsletter.js +7 -7
  170. package/dist/blocks/builtins/Newsletter.js.map +1 -1
  171. package/dist/blocks/builtins/OpenNowBadge.d.ts +1 -1
  172. package/dist/blocks/builtins/OpenNowBadge.js +8 -3
  173. package/dist/blocks/builtins/OpenNowBadge.js.map +1 -1
  174. package/dist/blocks/builtins/OpeningHours.d.ts +1 -1
  175. package/dist/blocks/builtins/OpeningHours.js +6 -6
  176. package/dist/blocks/builtins/PdfBlock.d.ts +1 -1
  177. package/dist/blocks/builtins/PdfBlock.js +3 -3
  178. package/dist/blocks/builtins/Portfolio.d.ts +1 -1
  179. package/dist/blocks/builtins/Portfolio.js +5 -5
  180. package/dist/blocks/builtins/Pricing.d.ts +2 -2
  181. package/dist/blocks/builtins/Pricing.js +5 -5
  182. package/dist/blocks/builtins/Pricing.js.map +1 -1
  183. package/dist/blocks/builtins/RichTextBlock.d.ts +1 -1
  184. package/dist/blocks/builtins/RichTextBlock.js +2 -2
  185. package/dist/blocks/builtins/RichTextBlock.js.map +1 -1
  186. package/dist/blocks/builtins/Search.d.ts +1 -1
  187. package/dist/blocks/builtins/Search.js +9 -7
  188. package/dist/blocks/builtins/Search.js.map +1 -1
  189. package/dist/blocks/builtins/Sections.d.ts +4 -4
  190. package/dist/blocks/builtins/Sections.js +4 -4
  191. package/dist/blocks/builtins/Slider.d.ts +1 -1
  192. package/dist/blocks/builtins/Slider.js +3 -3
  193. package/dist/blocks/builtins/Spacer.d.ts +1 -1
  194. package/dist/blocks/builtins/Spacer.js +2 -2
  195. package/dist/blocks/builtins/SymbolRef.d.ts +1 -1
  196. package/dist/blocks/builtins/SymbolRef.js +31 -17
  197. package/dist/blocks/builtins/SymbolRef.js.map +1 -1
  198. package/dist/blocks/builtins/Team.d.ts +1 -1
  199. package/dist/blocks/builtins/Team.js +4 -4
  200. package/dist/blocks/builtins/Testimonials.d.ts +2 -2
  201. package/dist/blocks/builtins/Testimonials.js +4 -4
  202. package/dist/blocks/builtins/Video.d.ts +2 -2
  203. package/dist/blocks/builtins/Video.js +4 -4
  204. package/dist/blocks/builtins/Video.js.map +1 -1
  205. package/dist/blocks/builtins/WhatsappChat.d.ts +1 -1
  206. package/dist/blocks/builtins/WhatsappChat.js +2 -2
  207. package/dist/blocks/builtins/Widgets.d.ts +12 -12
  208. package/dist/blocks/builtins/Widgets.js +19 -19
  209. package/dist/blocks/builtins/Widgets.js.map +1 -1
  210. package/dist/blocks/builtins/consentEmbed.js +2 -2
  211. package/dist/blocks/builtins/index.d.ts +40 -40
  212. package/dist/blocks/builtins/index.js +40 -40
  213. package/dist/blocks/builtins/lib/submitForm.js +5 -3
  214. package/dist/blocks/builtins/lib/submitForm.js.map +1 -1
  215. package/dist/blocks/context.d.ts +1 -1
  216. package/dist/blocks/customTemplate/definition.d.ts +3 -3
  217. package/dist/blocks/customTemplate/definition.js +6 -6
  218. package/dist/blocks/customTemplate/definition.js.map +1 -1
  219. package/dist/blocks/customTemplate/interpret.js +1 -1
  220. package/dist/blocks/index.d.ts +5 -5
  221. package/dist/blocks/index.js +5 -5
  222. package/dist/blocks/registry.d.ts +17 -7
  223. package/dist/blocks/registry.js +2 -1
  224. package/dist/blocks/registry.js.map +1 -1
  225. package/dist/components/EditBar.js +3 -3
  226. package/dist/components/FeedbackWidget.js +4 -4
  227. package/dist/components/News.d.ts +1 -1
  228. package/dist/components/News.js +50 -37
  229. package/dist/components/News.js.map +1 -1
  230. package/dist/components/PageView.js +11 -8
  231. package/dist/components/PageView.js.map +1 -1
  232. package/dist/components/ResponsiveImage.d.ts +1 -1
  233. package/dist/components/site/SiteFooter.d.ts +1 -1
  234. package/dist/components/site/SiteFooter.js +2 -2
  235. package/dist/config.d.ts +1 -1
  236. package/dist/demo/DemoStudio.js +3 -3
  237. package/dist/demo/demoStore.d.ts +3 -3
  238. package/dist/demo/index.d.ts +2 -2
  239. package/dist/demo/index.js +2 -2
  240. package/dist/editor/EditorProvider.js +1 -1
  241. package/dist/firebase/admin.d.ts +0 -2
  242. package/dist/firebase/admin.js +0 -6
  243. package/dist/firebase/admin.js.map +1 -1
  244. package/dist/firebase/appcheck.d.ts +1 -1
  245. package/dist/firebase/appcheck.js +5 -3
  246. package/dist/firebase/appcheck.js.map +1 -1
  247. package/dist/firebase/client.d.ts +2 -1
  248. package/dist/firebase/client.js +2 -14
  249. package/dist/firebase/client.js.map +1 -1
  250. package/dist/firebase/config.d.ts +31 -0
  251. package/dist/firebase/config.js +39 -0
  252. package/dist/firebase/config.js.map +1 -0
  253. package/dist/firebase/feedback.js +5 -3
  254. package/dist/firebase/feedback.js.map +1 -1
  255. package/dist/i18n/overlay.d.ts +2 -2
  256. package/dist/i18n/overlay.js +6 -4
  257. package/dist/i18n/overlay.js.map +1 -1
  258. package/dist/index.d.ts +46 -44
  259. package/dist/index.js +39 -33
  260. package/dist/index.js.map +1 -1
  261. package/dist/lock/DemoLock.js +1 -1
  262. package/dist/modules/builtins.d.ts +1 -1
  263. package/dist/modules/builtins.js +53 -55
  264. package/dist/modules/builtins.js.map +1 -1
  265. package/dist/modules/consent/ConsentBanner.js +1 -1
  266. package/dist/modules/consent/useConsent.js +1 -1
  267. package/dist/modules/context.d.ts +1 -1
  268. package/dist/modules/contract.d.ts +1 -1
  269. package/dist/modules/defineModule.d.ts +1 -1
  270. package/dist/modules/index.d.ts +9 -9
  271. package/dist/modules/index.js +8 -8
  272. package/dist/modules/overrides.d.ts +1 -1
  273. package/dist/modules/registry.d.ts +2 -7
  274. package/dist/modules/registry.js +2 -1
  275. package/dist/modules/registry.js.map +1 -1
  276. package/dist/modules/shop/blocks/Cart.d.ts +1 -1
  277. package/dist/modules/shop/blocks/Cart.js +6 -6
  278. package/dist/modules/shop/blocks/Checkout.d.ts +1 -1
  279. package/dist/modules/shop/blocks/Checkout.js +6 -6
  280. package/dist/modules/shop/blocks/Donation.d.ts +1 -1
  281. package/dist/modules/shop/blocks/Donation.js +5 -5
  282. package/dist/modules/shop/blocks/OrderStatus.d.ts +1 -1
  283. package/dist/modules/shop/blocks/OrderStatus.js +5 -5
  284. package/dist/modules/shop/blocks/ProductDetail.d.ts +1 -1
  285. package/dist/modules/shop/blocks/ProductDetail.js +8 -8
  286. package/dist/modules/shop/blocks/ProductGrid.d.ts +3 -3
  287. package/dist/modules/shop/blocks/ProductGrid.js +7 -7
  288. package/dist/modules/shop/blocks/ShopCategories.d.ts +1 -1
  289. package/dist/modules/shop/blocks/ShopCategories.js +6 -6
  290. package/dist/modules/shop/index.d.ts +5 -5
  291. package/dist/modules/shop/index.js +5 -5
  292. package/dist/modules/shop/lib.d.ts +2 -2
  293. package/dist/modules/shop/lib.js +18 -13
  294. package/dist/modules/shop/lib.js.map +1 -1
  295. package/dist/modules/shop/module.d.ts +1 -1
  296. package/dist/modules/shop/module.js +9 -9
  297. package/dist/modules/shop/settings.d.ts +18 -50
  298. package/dist/modules/shop/settings.js +16 -16
  299. package/dist/modules/shop/settings.js.map +1 -1
  300. package/dist/modules/shop/strings.js +1 -1
  301. package/dist/modules/shop/types.d.ts +1 -1
  302. package/dist/modules/types.d.ts +2 -2
  303. package/dist/patterns/builtins.d.ts +1 -1
  304. package/dist/patterns/builtins.js +1 -1
  305. package/dist/patterns/index.d.ts +2 -2
  306. package/dist/patterns/index.js +2 -2
  307. package/dist/render/PageRenderer.d.ts +2 -2
  308. package/dist/render/PageRenderer.js +1 -1
  309. package/dist/render/PublishedPage.d.ts +1 -1
  310. package/dist/render/PublishedPage.js +2 -2
  311. package/dist/schema/blocks.d.ts +6793 -15095
  312. package/dist/schema/blocks.js +335 -355
  313. package/dist/schema/blocks.js.map +1 -1
  314. package/dist/schema/customBlocks.d.ts +10 -29
  315. package/dist/schema/customBlocks.js +14 -13
  316. package/dist/schema/customBlocks.js.map +1 -1
  317. package/dist/schema/fields.d.ts +10 -16
  318. package/dist/schema/fields.js +37 -37
  319. package/dist/schema/fields.js.map +1 -1
  320. package/dist/schema/forms.d.ts +62 -111
  321. package/dist/schema/forms.js +17 -17
  322. package/dist/schema/forms.js.map +1 -1
  323. package/dist/schema/index.d.ts +7 -7
  324. package/dist/schema/index.js +7 -7
  325. package/dist/schema/mail.d.ts +39 -87
  326. package/dist/schema/mail.js +4 -4
  327. package/dist/schema/mail.js.map +1 -1
  328. package/dist/schema/pages.d.ts +152 -674
  329. package/dist/schema/pages.js +26 -15
  330. package/dist/schema/pages.js.map +1 -1
  331. package/dist/schema/seo.d.ts +9 -27
  332. package/dist/schema/seo.js +7 -7
  333. package/dist/schema/seo.js.map +1 -1
  334. package/dist/schema/settings.d.ts +233 -1074
  335. package/dist/schema/settings.js +71 -56
  336. package/dist/schema/settings.js.map +1 -1
  337. package/dist/schema/shop.d.ts +470 -1214
  338. package/dist/schema/shop.js +124 -124
  339. package/dist/schema/shop.js.map +1 -1
  340. package/dist/schema/siteConfig.d.ts +78 -597
  341. package/dist/schema/siteConfig.js +17 -17
  342. package/dist/schema/siteConfig.js.map +1 -1
  343. package/dist/schema/symbols.d.ts +34 -191
  344. package/dist/schema/symbols.js +8 -8
  345. package/dist/schema/symbols.js.map +1 -1
  346. package/dist/server/auth.d.ts +17 -0
  347. package/dist/server/auth.js +11 -0
  348. package/dist/server/auth.js.map +1 -0
  349. package/dist/server/bundle.d.ts +15 -6
  350. package/dist/server/bundle.js +5 -1
  351. package/dist/server/bundle.js.map +1 -1
  352. package/dist/server/draft.d.ts +16 -0
  353. package/dist/server/draft.js +12 -0
  354. package/dist/server/draft.js.map +1 -0
  355. package/dist/server/env.js +8 -8
  356. package/dist/server/env.js.map +1 -1
  357. package/dist/server/index.d.ts +11 -9
  358. package/dist/server/index.js +13 -10
  359. package/dist/server/index.js.map +1 -1
  360. package/dist/server/pages.d.ts +11 -4
  361. package/dist/server/pages.js +43 -15
  362. package/dist/server/pages.js.map +1 -1
  363. package/dist/server/revalidate.js +11 -2
  364. package/dist/server/revalidate.js.map +1 -1
  365. package/dist/server/seo.d.ts +3 -3
  366. package/dist/server/seo.js +1 -1
  367. package/dist/server/shop.d.ts +3 -3
  368. package/dist/server/shop.js +6 -3
  369. package/dist/server/shop.js.map +1 -1
  370. package/dist/server/version.d.ts +16 -0
  371. package/dist/server/version.js +17 -0
  372. package/dist/server/version.js.map +1 -0
  373. package/dist/settings/useSiteSettings.d.ts +2 -2
  374. package/dist/settings/useSiteSettings.js +48 -28
  375. package/dist/settings/useSiteSettings.js.map +1 -1
  376. package/dist/styles.css +30 -4
  377. package/dist/theme/presets.d.ts +1 -1
  378. package/dist/version.d.ts +8 -0
  379. package/dist/version.js +16 -0
  380. package/dist/version.js.map +1 -0
  381. package/package.json +35 -34
package/dist/index.d.ts CHANGED
@@ -4,51 +4,53 @@
4
4
  * - Server-only code (firebase-admin, sanitize, SEO) zit in "@xiwebdesign/xicms-core/server".
5
5
  * - Pure schema's in "@xiwebdesign/xicms-core/schema".
6
6
  */
7
- export { XiCMSProvider } from "./XiCMSProvider";
8
- export { useSiteConfig } from "./config";
7
+ export { XiCMSProvider } from "./XiCMSProvider.js";
8
+ export { useSiteConfig } from "./config.js";
9
9
  export { defineTheme, useTheme } from "@astryxdesign/core/theme";
10
10
  export type { DefinedTheme } from "@astryxdesign/core/theme";
11
11
  export { LinkProvider, useLinkComponent } from "@astryxdesign/core/Link";
12
12
  export type { LinkComponentType } from "@astryxdesign/core/Link";
13
- export { Img, ImageProvider, useImageComponent, InlineImageEditProvider } from "./media/ImageContext";
14
- export type { ImageComponentType, ImgProps } from "./media/ImageContext";
15
- export * from "./blocks/ui";
16
- export { SiteSettingsProvider, useSiteSettings, useMergedSiteConfig, } from "./settings/useSiteSettings";
17
- export { SiteFooter } from "./components/site/SiteFooter";
18
- export { EditorProvider, useEditor } from "./editor/EditorProvider";
19
- export { definePattern, instantiatePattern, collectPatternTypes, builtinPatterns, type Pattern, type PatternBlock, } from "./patterns";
20
- export { builtinThemePresets, type ThemePreset } from "./theme/presets";
21
- export { defineSiteConfig } from "./schema/siteConfig";
22
- export type { SiteConfig, SiteMode } from "./schema/siteConfig";
23
- export { FieldSchema, FieldsSchema, fieldsToZod, fieldsDefaults, isFieldVisible, isRichTextKey } from "./schema/fields";
24
- export type { Field, FieldHints, ShowIf } from "./schema/fields";
25
- export { SymbolSchema } from "./schema/symbols";
26
- export type { SymbolDefinition, StoredSymbol } from "./schema/symbols";
27
- export { CustomBlockSchema } from "./schema/customBlocks";
28
- export type { CustomBlock, CustomBlock as CustomBlockData } from "./schema/customBlocks";
29
- export { customBlockToDefinition } from "./blocks/customTemplate/definition";
30
- export { interpretTemplate, scopeCss } from "./blocks/customTemplate/interpret";
31
- export { siteLocales, parseLocaleSlugs, localizedPath, localizePage, localizeBlocks, pruneTranslations, TranslationsSchema, } from "./i18n/overlay";
32
- export type { Translations, LocaleConfig } from "./i18n/overlay";
33
- export type { ThemeTokens, NavItem, SiteSettings, PublicSiteSettings, FormsSender } from "./schema/settings";
34
- export type { Seo } from "./schema/seo";
35
- export type { Page, PageStatus } from "./schema/pages";
36
- export type { FormDefinition, FormField } from "./schema/forms";
37
- export { AuthProvider, useAuth } from "./auth/AuthProvider";
38
- export { LoginForm } from "./auth/LoginForm";
39
- export { roleForSite, canEdit, canManageSite, isSuperadmin, type Role, type XiClaims, } from "./auth/roles";
40
- export type { NewsArticle, MediaItem, MediaVariant } from "./content/types";
41
- export { EditBar } from "./components/EditBar";
42
- export { ResponsiveImage } from "./components/ResponsiveImage";
43
- export { PageView } from "./components/PageView";
44
- export { NewsList, NewsArticleView, useNews } from "./components/News";
45
- export { defineBlock, createRegistry, mergeRegistry, validateBlocks, buildBlockAddOptions, type BlockDefinition, type BlockRegistry, type BlockRenderProps, type BlockEditorProps, type BlockCategory, } from "./blocks/registry";
46
- export { BlockRenderer } from "./blocks/BlockRenderer";
47
- export { RegistryProvider, useRegistry, BlockDataProvider, useBlockData } from "./blocks/context";
48
- export { builtinBlocks, ConsentEmbed } from "./blocks/builtins";
49
- export { PageRenderer } from "./render/PageRenderer";
50
- export { PublishedPage } from "./render/PublishedPage";
51
- export { defineModule, resolveModules, isModuleActive, ModulesProvider, useModules, useModuleActive, useModuleSettings, applyBlockOverrides, moduleIdForBlockType, builtinModules, validateModuleContract, assertModuleContract, useConsent, ConsentBanner, ConsentGate, ConsentReopenLink, type ConsentState, type ConsentSettings, type ConsentCategory, type ModuleDefinition, type ModuleSiteSetting, type ModulesSiteConfig, type Capability, type ResolvedModules, type BlockOverride, type BlockOverrides, } from "./modules";
52
- export { DemoLock } from "./lock/DemoLock";
53
- export { getFirebaseApp, getFirebaseAuth, getDb, getBucket, isFirebaseConfigured, } from "./firebase/client";
54
- export { initAppCheck } from "./firebase/appcheck";
13
+ export { Img, ImageProvider, useImageComponent, InlineImageEditProvider } from "./media/ImageContext.js";
14
+ export type { ImageComponentType, ImgProps } from "./media/ImageContext.js";
15
+ export * from "./blocks/ui/index.js";
16
+ export { SiteSettingsProvider, useSiteSettings, useMergedSiteConfig, } from "./settings/useSiteSettings.js";
17
+ export { SiteFooter } from "./components/site/SiteFooter.js";
18
+ export { EditorProvider, useEditor } from "./editor/EditorProvider.js";
19
+ export { definePattern, instantiatePattern, collectPatternTypes, builtinPatterns, type Pattern, type PatternBlock, } from "./patterns/index.js";
20
+ export { builtinThemePresets, type ThemePreset } from "./theme/presets.js";
21
+ export { defineSiteConfig } from "./schema/siteConfig.js";
22
+ export type { SiteConfig, SiteMode } from "./schema/siteConfig.js";
23
+ export { FieldSchema, FieldsSchema, fieldsToZod, fieldsDefaults, isFieldVisible, isRichTextKey } from "./schema/fields.js";
24
+ export type { Field, FieldHints, ShowIf } from "./schema/fields.js";
25
+ export { SymbolSchema } from "./schema/symbols.js";
26
+ export type { SymbolDefinition, StoredSymbol } from "./schema/symbols.js";
27
+ export { CustomBlockSchema } from "./schema/customBlocks.js";
28
+ export type { CustomBlock, CustomBlock as CustomBlockData } from "./schema/customBlocks.js";
29
+ export { customBlockToDefinition } from "./blocks/customTemplate/definition.js";
30
+ export { interpretTemplate, scopeCss } from "./blocks/customTemplate/interpret.js";
31
+ export { siteLocales, parseLocaleSlugs, localizedPath, localizePage, localizeBlocks, pruneTranslations, TranslationsSchema, } from "./i18n/overlay.js";
32
+ export type { Translations, LocaleConfig } from "./i18n/overlay.js";
33
+ export type { ThemeTokens, NavItem, SiteSettings, PublicSiteSettings, FormsSender } from "./schema/settings.js";
34
+ export type { Seo } from "./schema/seo.js";
35
+ export type { Page, PageStatus } from "./schema/pages.js";
36
+ export type { FormDefinition, FormField } from "./schema/forms.js";
37
+ export { AuthProvider, useAuth } from "./auth/AuthProvider.js";
38
+ export { LoginForm } from "./auth/LoginForm.js";
39
+ export { roleForSite, canEdit, canManageSite, isSuperadmin, type Role, type XiClaims, } from "./auth/roles.js";
40
+ export type { NewsArticle, MediaItem, MediaVariant } from "./content/types.js";
41
+ export { EditBar } from "./components/EditBar.js";
42
+ export { ResponsiveImage } from "./components/ResponsiveImage.js";
43
+ export { PageView } from "./components/PageView.js";
44
+ export { NewsList, NewsArticleView, useNews } from "./components/News.js";
45
+ export { defineBlock, createRegistry, mergeRegistry, validateBlocks, buildBlockAddOptions, type BlockDefinition, type BlockRegistry, type BlockRenderProps, type BlockEditorProps, type BlockCategory, } from "./blocks/registry.js";
46
+ export { BlockRenderer } from "./blocks/BlockRenderer.js";
47
+ export { RegistryProvider, useRegistry, BlockDataProvider, useBlockData } from "./blocks/context.js";
48
+ export { builtinBlocks, ConsentEmbed } from "./blocks/builtins/index.js";
49
+ export { PageRenderer } from "./render/PageRenderer.js";
50
+ export { PublishedPage } from "./render/PublishedPage.js";
51
+ export { defineModule, resolveModules, isModuleActive, ModulesProvider, useModules, useModuleActive, useModuleSettings, applyBlockOverrides, moduleIdForBlockType, builtinModules, validateModuleContract, assertModuleContract, useConsent, ConsentBanner, ConsentGate, ConsentReopenLink, type ConsentState, type ConsentSettings, type ConsentCategory, type ModuleDefinition, type ModuleSiteSetting, type ModulesSiteConfig, type Capability, type ResolvedModules, type BlockOverride, type BlockOverrides, } from "./modules/index.js";
52
+ export { DemoLock } from "./lock/DemoLock.js";
53
+ export { getFirebaseApp, getFirebaseAuth, getDb, getBucket, isFirebaseConfigured, } from "./firebase/client.js";
54
+ export { initAppCheck } from "./firebase/appcheck.js";
55
+ export { SiteChrome } from "./SiteChrome.js";
56
+ export { CORE_VERSION, CORE_PACKAGE, isNieuwer } from "./version.js";
package/dist/index.js CHANGED
@@ -1,29 +1,29 @@
1
- import { XiCMSProvider } from "./XiCMSProvider";
2
- import { useSiteConfig } from "./config";
1
+ import { XiCMSProvider } from "./XiCMSProvider.js";
2
+ import { useSiteConfig } from "./config.js";
3
3
  import { defineTheme, useTheme } from "@astryxdesign/core/theme";
4
4
  import { LinkProvider, useLinkComponent } from "@astryxdesign/core/Link";
5
- import { Img, ImageProvider, useImageComponent, InlineImageEditProvider } from "./media/ImageContext";
6
- export * from "./blocks/ui";
5
+ import { Img, ImageProvider, useImageComponent, InlineImageEditProvider } from "./media/ImageContext.js";
6
+ export * from "./blocks/ui/index.js";
7
7
  import {
8
8
  SiteSettingsProvider,
9
9
  useSiteSettings,
10
10
  useMergedSiteConfig
11
- } from "./settings/useSiteSettings";
12
- import { SiteFooter } from "./components/site/SiteFooter";
13
- import { EditorProvider, useEditor } from "./editor/EditorProvider";
11
+ } from "./settings/useSiteSettings.js";
12
+ import { SiteFooter } from "./components/site/SiteFooter.js";
13
+ import { EditorProvider, useEditor } from "./editor/EditorProvider.js";
14
14
  import {
15
15
  definePattern,
16
16
  instantiatePattern,
17
17
  collectPatternTypes,
18
18
  builtinPatterns
19
- } from "./patterns";
20
- import { builtinThemePresets } from "./theme/presets";
21
- import { defineSiteConfig } from "./schema/siteConfig";
22
- import { FieldSchema, FieldsSchema, fieldsToZod, fieldsDefaults, isFieldVisible, isRichTextKey } from "./schema/fields";
23
- import { SymbolSchema } from "./schema/symbols";
24
- import { CustomBlockSchema } from "./schema/customBlocks";
25
- import { customBlockToDefinition } from "./blocks/customTemplate/definition";
26
- import { interpretTemplate, scopeCss } from "./blocks/customTemplate/interpret";
19
+ } from "./patterns/index.js";
20
+ import { builtinThemePresets } from "./theme/presets.js";
21
+ import { defineSiteConfig } from "./schema/siteConfig.js";
22
+ import { FieldSchema, FieldsSchema, fieldsToZod, fieldsDefaults, isFieldVisible, isRichTextKey } from "./schema/fields.js";
23
+ import { SymbolSchema } from "./schema/symbols.js";
24
+ import { CustomBlockSchema } from "./schema/customBlocks.js";
25
+ import { customBlockToDefinition } from "./blocks/customTemplate/definition.js";
26
+ import { interpretTemplate, scopeCss } from "./blocks/customTemplate/interpret.js";
27
27
  import {
28
28
  siteLocales,
29
29
  parseLocaleSlugs,
@@ -32,31 +32,31 @@ import {
32
32
  localizeBlocks,
33
33
  pruneTranslations,
34
34
  TranslationsSchema
35
- } from "./i18n/overlay";
36
- import { AuthProvider, useAuth } from "./auth/AuthProvider";
37
- import { LoginForm } from "./auth/LoginForm";
35
+ } from "./i18n/overlay.js";
36
+ import { AuthProvider, useAuth } from "./auth/AuthProvider.js";
37
+ import { LoginForm } from "./auth/LoginForm.js";
38
38
  import {
39
39
  roleForSite,
40
40
  canEdit,
41
41
  canManageSite,
42
42
  isSuperadmin
43
- } from "./auth/roles";
44
- import { EditBar } from "./components/EditBar";
45
- import { ResponsiveImage } from "./components/ResponsiveImage";
46
- import { PageView } from "./components/PageView";
47
- import { NewsList, NewsArticleView, useNews } from "./components/News";
43
+ } from "./auth/roles.js";
44
+ import { EditBar } from "./components/EditBar.js";
45
+ import { ResponsiveImage } from "./components/ResponsiveImage.js";
46
+ import { PageView } from "./components/PageView.js";
47
+ import { NewsList, NewsArticleView, useNews } from "./components/News.js";
48
48
  import {
49
49
  defineBlock,
50
50
  createRegistry,
51
51
  mergeRegistry,
52
52
  validateBlocks,
53
53
  buildBlockAddOptions
54
- } from "./blocks/registry";
55
- import { BlockRenderer } from "./blocks/BlockRenderer";
56
- import { RegistryProvider, useRegistry, BlockDataProvider, useBlockData } from "./blocks/context";
57
- import { builtinBlocks, ConsentEmbed } from "./blocks/builtins";
58
- import { PageRenderer } from "./render/PageRenderer";
59
- import { PublishedPage } from "./render/PublishedPage";
54
+ } from "./blocks/registry.js";
55
+ import { BlockRenderer } from "./blocks/BlockRenderer.js";
56
+ import { RegistryProvider, useRegistry, BlockDataProvider, useBlockData } from "./blocks/context.js";
57
+ import { builtinBlocks, ConsentEmbed } from "./blocks/builtins/index.js";
58
+ import { PageRenderer } from "./render/PageRenderer.js";
59
+ import { PublishedPage } from "./render/PublishedPage.js";
60
60
  import {
61
61
  defineModule,
62
62
  resolveModules,
@@ -74,20 +74,24 @@ import {
74
74
  ConsentBanner,
75
75
  ConsentGate,
76
76
  ConsentReopenLink
77
- } from "./modules";
78
- import { DemoLock } from "./lock/DemoLock";
77
+ } from "./modules/index.js";
78
+ import { DemoLock } from "./lock/DemoLock.js";
79
79
  import {
80
80
  getFirebaseApp,
81
81
  getFirebaseAuth,
82
82
  getDb,
83
83
  getBucket,
84
84
  isFirebaseConfigured
85
- } from "./firebase/client";
86
- import { initAppCheck } from "./firebase/appcheck";
85
+ } from "./firebase/client.js";
86
+ import { initAppCheck } from "./firebase/appcheck.js";
87
+ import { SiteChrome } from "./SiteChrome.js";
88
+ import { CORE_VERSION, CORE_PACKAGE, isNieuwer } from "./version.js";
87
89
  export {
88
90
  AuthProvider,
89
91
  BlockDataProvider,
90
92
  BlockRenderer,
93
+ CORE_PACKAGE,
94
+ CORE_VERSION,
91
95
  ConsentBanner,
92
96
  ConsentEmbed,
93
97
  ConsentGate,
@@ -111,6 +115,7 @@ export {
111
115
  PublishedPage,
112
116
  RegistryProvider,
113
117
  ResponsiveImage,
118
+ SiteChrome,
114
119
  SiteFooter,
115
120
  SiteSettingsProvider,
116
121
  SymbolSchema,
@@ -145,6 +150,7 @@ export {
145
150
  isFieldVisible,
146
151
  isFirebaseConfigured,
147
152
  isModuleActive,
153
+ isNieuwer,
148
154
  isRichTextKey,
149
155
  isSuperadmin,
150
156
  localizeBlocks,
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Publieke runtime-API van @xiwebdesign/xicms-core (lichte client/runtime laag).\n * - Admin (TipTap/Radix) zit in \"@xiwebdesign/xicms-core/admin\".\n * - Server-only code (firebase-admin, sanitize, SEO) zit in \"@xiwebdesign/xicms-core/server\".\n * - Pure schema's in \"@xiwebdesign/xicms-core/schema\".\n */\n\n// Provider & config\nexport { XiCMSProvider } from \"./XiCMSProvider\";\nexport { useSiteConfig } from \"./config\";\n\n// Theming & design-primitieven (maatwerk zonder core te forken).\n// - `defineTheme` maakt een eigen Astryx-thema (tokens + component-overrides) → geef door als\n// XiCMSProvider `astryxTheme`-prop.\n// - De `ui`-primitieven (Card/Stack/Grid/Heading/Text/Btn…) zijn de bouwstenen waarop de ingebouwde\n// blokken draaien; gebruik ze in eigen blokken voor een consistent maar te herstijlen uiterlijk.\nexport { defineTheme, useTheme } from \"@astryxdesign/core/theme\";\nexport type { DefinedTheme } from \"@astryxdesign/core/theme\";\n// Framework-router-integratie: geef `next/link` door als XiCMSProvider `linkComponent`-prop\n// (soepele client-nav + prefetch op alle Astryx-knoppen/links). `useLinkComponent` voor eigen blokken.\nexport { LinkProvider, useLinkComponent } from \"@astryxdesign/core/Link\";\nexport type { LinkComponentType } from \"@astryxdesign/core/Link\";\n// Beeldoptimalisatie: geef `next/image` door als XiCMSProvider `imageComponent`-prop. `Img` is de\n// wrapper die de blokken gebruiken; `useImageComponent` voor eigen blokken.\nexport { Img, ImageProvider, useImageComponent, InlineImageEditProvider } from \"./media/ImageContext\";\nexport type { ImageComponentType, ImgProps } from \"./media/ImageContext\";\nexport * from \"./blocks/ui\";\nexport {\n SiteSettingsProvider,\n useSiteSettings,\n useMergedSiteConfig,\n} from \"./settings/useSiteSettings\";\nexport { SiteFooter } from \"./components/site/SiteFooter\";\nexport { EditorProvider, useEditor } from \"./editor/EditorProvider\";\nexport {\n definePattern,\n instantiatePattern,\n collectPatternTypes,\n builtinPatterns,\n type Pattern,\n type PatternBlock,\n} from \"./patterns\";\nexport { builtinThemePresets, type ThemePreset } from \"./theme/presets\";\nexport { defineSiteConfig } from \"./schema/siteConfig\";\nexport type { SiteConfig, SiteMode } from \"./schema/siteConfig\";\n// 5.0: Field-IR (primo-port), symbolen en custom blocks.\nexport { FieldSchema, FieldsSchema, fieldsToZod, fieldsDefaults, isFieldVisible, isRichTextKey } from \"./schema/fields\";\nexport type { Field, FieldHints, ShowIf } from \"./schema/fields\";\nexport { SymbolSchema } from \"./schema/symbols\";\nexport type { SymbolDefinition, StoredSymbol } from \"./schema/symbols\";\nexport { CustomBlockSchema } from \"./schema/customBlocks\";\nexport type { CustomBlock, CustomBlock as CustomBlockData } from \"./schema/customBlocks\";\nexport { customBlockToDefinition } from \"./blocks/customTemplate/definition\";\nexport { interpretTemplate, scopeCss } from \"./blocks/customTemplate/interpret\";\n// 5.0: localisatie — overlay-model (primo's locale-per-waarde, additief vertaald).\nexport {\n siteLocales,\n parseLocaleSlugs,\n localizedPath,\n localizePage,\n localizeBlocks,\n pruneTranslations,\n TranslationsSchema,\n} from \"./i18n/overlay\";\nexport type { Translations, LocaleConfig } from \"./i18n/overlay\";\nexport type { ThemeTokens, NavItem, SiteSettings, PublicSiteSettings, FormsSender } from \"./schema/settings\";\nexport type { Seo } from \"./schema/seo\";\nexport type { Page, PageStatus } from \"./schema/pages\";\nexport type { FormDefinition, FormField } from \"./schema/forms\";\n\n// Auth\nexport { AuthProvider, useAuth } from \"./auth/AuthProvider\";\nexport { LoginForm } from \"./auth/LoginForm\";\nexport {\n roleForSite,\n canEdit,\n canManageSite,\n isSuperadmin,\n type Role,\n type XiClaims,\n} from \"./auth/roles\";\n\n// De legacy inline-laag (ContentProvider/useContent + EditableText/EditableRichText/EditableImage,\n// het v1 platte `cms/content`-model) is in 5.0 VERWIJDERD, zoals bij de deprecatie aangekondigd.\n// Inline bewerken loopt via het block-model: markeer tekstvelden met `data-xicms-edit` in de Render.\nexport type { NewsArticle, MediaItem, MediaVariant } from \"./content/types\";\n\nexport { EditBar } from \"./components/EditBar\";\nexport { ResponsiveImage } from \"./components/ResponsiveImage\";\nexport { PageView } from \"./components/PageView\";\nexport { NewsList, NewsArticleView, useNews } from \"./components/News\";\n\n// Block-systeem (runtime: registry + renderer; editors zitten in /admin)\nexport {\n defineBlock,\n createRegistry,\n mergeRegistry,\n validateBlocks,\n buildBlockAddOptions,\n type BlockDefinition,\n type BlockRegistry,\n type BlockRenderProps,\n type BlockEditorProps,\n type BlockCategory,\n} from \"./blocks/registry\";\nexport { BlockRenderer } from \"./blocks/BlockRenderer\";\nexport { RegistryProvider, useRegistry, BlockDataProvider, useBlockData } from \"./blocks/context\";\nexport { builtinBlocks, ConsentEmbed } from \"./blocks/builtins\";\nexport { PageRenderer } from \"./render/PageRenderer\";\nexport { PublishedPage } from \"./render/PublishedPage\";\n\n// Module-systeem (XiCMS 3.0): modules bundelen blocks + instellingen; per site aan/uit + te stylen.\nexport {\n defineModule,\n resolveModules,\n isModuleActive,\n ModulesProvider,\n useModules,\n useModuleActive,\n useModuleSettings,\n applyBlockOverrides,\n moduleIdForBlockType,\n builtinModules,\n validateModuleContract,\n assertModuleContract,\n useConsent,\n ConsentBanner,\n ConsentGate,\n ConsentReopenLink,\n type ConsentState,\n type ConsentSettings,\n type ConsentCategory,\n type ModuleDefinition,\n type ModuleSiteSetting,\n type ModulesSiteConfig,\n type Capability,\n type ResolvedModules,\n type BlockOverride,\n type BlockOverrides,\n} from \"./modules\";\n\n// Demo-lock\nexport { DemoLock } from \"./lock/DemoLock\";\n\n// Demo-bewerkmodus (lokaal-only) leeft op het subpad `@xiwebdesign/xicms-core/demo` — dit zijn\n// demo-store-internals die niet in de publieke runtime-API thuishoren (klantsites gebruiken ze nooit;\n// alleen de XiCMS.nl-showcase). DemoStudio wordt intern door XiCMSProvider gerenderd.\n\n// Firebase (client)\nexport {\n getFirebaseApp,\n getFirebaseAuth,\n getDb,\n getBucket,\n isFirebaseConfigured,\n} from \"./firebase/client\";\nexport { initAppCheck } from \"./firebase/appcheck\";\n"],"mappings":"AAQA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAO9B,SAAS,aAAa,gBAAgB;AAItC,SAAS,cAAc,wBAAwB;AAI/C,SAAS,KAAK,eAAe,mBAAmB,+BAA+B;AAE/E,cAAc;AACd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB,iBAAiB;AAC1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,2BAA6C;AACtD,SAAS,wBAAwB;AAGjC,SAAS,aAAa,cAAc,aAAa,gBAAgB,gBAAgB,qBAAqB;AAEtG,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAElC,SAAS,+BAA+B;AACxC,SAAS,mBAAmB,gBAAgB;AAE5C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQP,SAAS,cAAc,eAAe;AACtC,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAOP,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AACzB,SAAS,UAAU,iBAAiB,eAAe;AAGnD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AACP,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB,aAAa,mBAAmB,oBAAoB;AAC/E,SAAS,eAAe,oBAAoB;AAC5C,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAG9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAWK;AAGP,SAAS,gBAAgB;AAOzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;","names":[]}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * Publieke runtime-API van @xiwebdesign/xicms-core (lichte client/runtime laag).\n * - Admin (TipTap/Radix) zit in \"@xiwebdesign/xicms-core/admin\".\n * - Server-only code (firebase-admin, sanitize, SEO) zit in \"@xiwebdesign/xicms-core/server\".\n * - Pure schema's in \"@xiwebdesign/xicms-core/schema\".\n */\n\n// Provider & config\nexport { XiCMSProvider } from \"./XiCMSProvider\";\nexport { useSiteConfig } from \"./config\";\n\n// Theming & design-primitieven (maatwerk zonder core te forken).\n// - `defineTheme` maakt een eigen Astryx-thema (tokens + component-overrides) → geef door als\n// XiCMSProvider `astryxTheme`-prop.\n// - De `ui`-primitieven (Card/Stack/Grid/Heading/Text/Btn…) zijn de bouwstenen waarop de ingebouwde\n// blokken draaien; gebruik ze in eigen blokken voor een consistent maar te herstijlen uiterlijk.\nexport { defineTheme, useTheme } from \"@astryxdesign/core/theme\";\nexport type { DefinedTheme } from \"@astryxdesign/core/theme\";\n// Framework-router-integratie: geef `next/link` door als XiCMSProvider `linkComponent`-prop\n// (soepele client-nav + prefetch op alle Astryx-knoppen/links). `useLinkComponent` voor eigen blokken.\nexport { LinkProvider, useLinkComponent } from \"@astryxdesign/core/Link\";\nexport type { LinkComponentType } from \"@astryxdesign/core/Link\";\n// Beeldoptimalisatie: geef `next/image` door als XiCMSProvider `imageComponent`-prop. `Img` is de\n// wrapper die de blokken gebruiken; `useImageComponent` voor eigen blokken.\nexport { Img, ImageProvider, useImageComponent, InlineImageEditProvider } from \"./media/ImageContext\";\nexport type { ImageComponentType, ImgProps } from \"./media/ImageContext\";\nexport * from \"./blocks/ui\";\nexport {\n SiteSettingsProvider,\n useSiteSettings,\n useMergedSiteConfig,\n} from \"./settings/useSiteSettings\";\nexport { SiteFooter } from \"./components/site/SiteFooter\";\nexport { EditorProvider, useEditor } from \"./editor/EditorProvider\";\nexport {\n definePattern,\n instantiatePattern,\n collectPatternTypes,\n builtinPatterns,\n type Pattern,\n type PatternBlock,\n} from \"./patterns\";\nexport { builtinThemePresets, type ThemePreset } from \"./theme/presets\";\nexport { defineSiteConfig } from \"./schema/siteConfig\";\nexport type { SiteConfig, SiteMode } from \"./schema/siteConfig\";\n// 5.0: Field-IR (primo-port), symbolen en custom blocks.\nexport { FieldSchema, FieldsSchema, fieldsToZod, fieldsDefaults, isFieldVisible, isRichTextKey } from \"./schema/fields\";\nexport type { Field, FieldHints, ShowIf } from \"./schema/fields\";\nexport { SymbolSchema } from \"./schema/symbols\";\nexport type { SymbolDefinition, StoredSymbol } from \"./schema/symbols\";\nexport { CustomBlockSchema } from \"./schema/customBlocks\";\nexport type { CustomBlock, CustomBlock as CustomBlockData } from \"./schema/customBlocks\";\nexport { customBlockToDefinition } from \"./blocks/customTemplate/definition\";\nexport { interpretTemplate, scopeCss } from \"./blocks/customTemplate/interpret\";\n// 5.0: localisatie — overlay-model (primo's locale-per-waarde, additief vertaald).\nexport {\n siteLocales,\n parseLocaleSlugs,\n localizedPath,\n localizePage,\n localizeBlocks,\n pruneTranslations,\n TranslationsSchema,\n} from \"./i18n/overlay\";\nexport type { Translations, LocaleConfig } from \"./i18n/overlay\";\nexport type { ThemeTokens, NavItem, SiteSettings, PublicSiteSettings, FormsSender } from \"./schema/settings\";\nexport type { Seo } from \"./schema/seo\";\nexport type { Page, PageStatus } from \"./schema/pages\";\nexport type { FormDefinition, FormField } from \"./schema/forms\";\n\n// Auth\nexport { AuthProvider, useAuth } from \"./auth/AuthProvider\";\nexport { LoginForm } from \"./auth/LoginForm\";\nexport {\n roleForSite,\n canEdit,\n canManageSite,\n isSuperadmin,\n type Role,\n type XiClaims,\n} from \"./auth/roles\";\n\n// De legacy inline-laag (ContentProvider/useContent + EditableText/EditableRichText/EditableImage,\n// het v1 platte `cms/content`-model) is in 5.0 VERWIJDERD, zoals bij de deprecatie aangekondigd.\n// Inline bewerken loopt via het block-model: markeer tekstvelden met `data-xicms-edit` in de Render.\nexport type { NewsArticle, MediaItem, MediaVariant } from \"./content/types\";\n\nexport { EditBar } from \"./components/EditBar\";\nexport { ResponsiveImage } from \"./components/ResponsiveImage\";\nexport { PageView } from \"./components/PageView\";\nexport { NewsList, NewsArticleView, useNews } from \"./components/News\";\n\n// Block-systeem (runtime: registry + renderer; editors zitten in /admin)\nexport {\n defineBlock,\n createRegistry,\n mergeRegistry,\n validateBlocks,\n buildBlockAddOptions,\n type BlockDefinition,\n type BlockRegistry,\n type BlockRenderProps,\n type BlockEditorProps,\n type BlockCategory,\n} from \"./blocks/registry\";\nexport { BlockRenderer } from \"./blocks/BlockRenderer\";\nexport { RegistryProvider, useRegistry, BlockDataProvider, useBlockData } from \"./blocks/context\";\nexport { builtinBlocks, ConsentEmbed } from \"./blocks/builtins\";\nexport { PageRenderer } from \"./render/PageRenderer\";\nexport { PublishedPage } from \"./render/PublishedPage\";\n\n// Module-systeem (XiCMS 3.0): modules bundelen blocks + instellingen; per site aan/uit + te stylen.\nexport {\n defineModule,\n resolveModules,\n isModuleActive,\n ModulesProvider,\n useModules,\n useModuleActive,\n useModuleSettings,\n applyBlockOverrides,\n moduleIdForBlockType,\n builtinModules,\n validateModuleContract,\n assertModuleContract,\n useConsent,\n ConsentBanner,\n ConsentGate,\n ConsentReopenLink,\n type ConsentState,\n type ConsentSettings,\n type ConsentCategory,\n type ModuleDefinition,\n type ModuleSiteSetting,\n type ModulesSiteConfig,\n type Capability,\n type ResolvedModules,\n type BlockOverride,\n type BlockOverrides,\n} from \"./modules\";\n\n// Demo-lock\nexport { DemoLock } from \"./lock/DemoLock\";\n\n// Demo-bewerkmodus (lokaal-only) leeft op het subpad `@xiwebdesign/xicms-core/demo` — dit zijn\n// demo-store-internals die niet in de publieke runtime-API thuishoren (klantsites gebruiken ze nooit;\n// alleen de XiCMS.nl-showcase). DemoStudio wordt intern door XiCMSProvider gerenderd.\n\n// Firebase (client)\nexport {\n getFirebaseApp,\n getFirebaseAuth,\n getDb,\n getBucket,\n isFirebaseConfigured,\n} from \"./firebase/client\";\nexport { initAppCheck } from \"./firebase/appcheck\";\nexport { SiteChrome } from \"./SiteChrome\";\nexport { CORE_VERSION, CORE_PACKAGE, isNieuwer } from \"./version\";\n"],"mappings":"AAQA,SAAS,qBAAqB;AAC9B,SAAS,qBAAqB;AAO9B,SAAS,aAAa,gBAAgB;AAItC,SAAS,cAAc,wBAAwB;AAI/C,SAAS,KAAK,eAAe,mBAAmB,+BAA+B;AAE/E,cAAc;AACd;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,kBAAkB;AAC3B,SAAS,gBAAgB,iBAAiB;AAC1C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AACP,SAAS,2BAA6C;AACtD,SAAS,wBAAwB;AAGjC,SAAS,aAAa,cAAc,aAAa,gBAAgB,gBAAgB,qBAAqB;AAEtG,SAAS,oBAAoB;AAE7B,SAAS,yBAAyB;AAElC,SAAS,+BAA+B;AACxC,SAAS,mBAAmB,gBAAgB;AAE5C;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AAQP,SAAS,cAAc,eAAe;AACtC,SAAS,iBAAiB;AAC1B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAGK;AAOP,SAAS,eAAe;AACxB,SAAS,uBAAuB;AAChC,SAAS,gBAAgB;AACzB,SAAS,UAAU,iBAAiB,eAAe;AAGnD;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAMK;AACP,SAAS,qBAAqB;AAC9B,SAAS,kBAAkB,aAAa,mBAAmB,oBAAoB;AAC/E,SAAS,eAAe,oBAAoB;AAC5C,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB;AAG9B;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OAWK;AAGP,SAAS,gBAAgB;AAOzB;AAAA,EACE;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACK;AACP,SAAS,oBAAoB;AAC7B,SAAS,kBAAkB;AAC3B,SAAS,cAAc,cAAc,iBAAiB;","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useState } from "react";
4
- import { useSiteConfig } from "../config";
4
+ import { useSiteConfig } from "../config.js";
5
5
  function DemoLock() {
6
6
  const { mode, contactEmail, name } = useSiteConfig();
7
7
  const [open, setOpen] = useState(true);
@@ -1,4 +1,4 @@
1
- import type { ModuleDefinition } from "./types";
1
+ import type { ModuleDefinition } from "./types.js";
2
2
  /**
3
3
  * Basis-bouwstenen — altijd aanwezig (niet uit te zetten). Bevat ook de indelingsblokken
4
4
  * (kolommen, "Met zijbalk") waarmee je widgets naast je hoofdinhoud plaatst, plus de
@@ -1,43 +1,43 @@
1
- import { z } from "zod";
2
- import { defineModule } from "./defineModule";
3
- import { heroBlock } from "../blocks/builtins/Hero";
4
- import { richTextBlock } from "../blocks/builtins/RichTextBlock";
5
- import { imageBlock } from "../blocks/builtins/ImageBlock";
6
- import { ctaBlock } from "../blocks/builtins/Cta";
7
- import { columnsBlock } from "../blocks/builtins/Columns";
8
- import { spacerBlock } from "../blocks/builtins/Spacer";
9
- import { galleryBlock } from "../blocks/builtins/Gallery";
10
- import { faqBlock } from "../blocks/builtins/Faq";
11
- import { openingHoursBlock } from "../blocks/builtins/OpeningHours";
12
- import { pricingBlock } from "../blocks/builtins/Pricing";
13
- import { newsListBlock } from "../blocks/builtins/NewsListBlock";
14
- import { formBlock } from "../blocks/builtins/FormBlock";
15
- import { testimonialsBlock } from "../blocks/builtins/Testimonials";
16
- import { teamBlock } from "../blocks/builtins/Team";
17
- import { agendaBlock } from "../blocks/builtins/Agenda";
18
- import { searchBlock } from "../blocks/builtins/Search";
19
- import { featureBlock, countersBlock, logosBlock, timelineBlock } from "../blocks/builtins/Sections";
20
- import { symbolRefBlock } from "../blocks/builtins/SymbolRef";
21
- import { videoBlock } from "../blocks/builtins/Video";
22
- import { bannerBlock } from "../blocks/builtins/Banner";
23
- import { contactBlock, socialBlock } from "../blocks/builtins/Contact";
24
- import { mapBlock } from "../blocks/builtins/MapBlock";
25
- import { newsletterBlock } from "../blocks/builtins/Newsletter";
26
- import { bookingBlock } from "../blocks/builtins/Booking";
27
- import { buttonsBlock, quoteBlock, dividerBlock } from "../blocks/builtins/Elements";
28
- import { accordionBlock } from "../blocks/builtins/Accordion";
29
- import { embedBlock } from "../blocks/builtins/Embed";
30
- import { withSidebarBlock, tabsBlock } from "../blocks/builtins/Layout";
31
- import { cardsBlock } from "../blocks/builtins/Cards";
32
- import { downloadsBlock } from "../blocks/builtins/Downloads";
33
- import { pdfBlock } from "../blocks/builtins/PdfBlock";
34
- import { countdownBlock } from "../blocks/builtins/Countdown";
35
- import { sliderBlock } from "../blocks/builtins/Slider";
36
- import { whatsappChatBlock } from "../blocks/builtins/WhatsappChat";
37
- import { beforeAfterBlock } from "../blocks/builtins/BeforeAfter";
38
- import { portfolioBlock } from "../blocks/builtins/Portfolio";
39
- import { jobsBlock } from "../blocks/builtins/Jobs";
40
- import { breadcrumbsBlock } from "../blocks/builtins/Breadcrumbs";
1
+ import * as z from "zod/mini";
2
+ import { defineModule } from "./defineModule.js";
3
+ import { heroBlock } from "../blocks/builtins/Hero.js";
4
+ import { richTextBlock } from "../blocks/builtins/RichTextBlock.js";
5
+ import { imageBlock } from "../blocks/builtins/ImageBlock.js";
6
+ import { ctaBlock } from "../blocks/builtins/Cta.js";
7
+ import { columnsBlock } from "../blocks/builtins/Columns.js";
8
+ import { spacerBlock } from "../blocks/builtins/Spacer.js";
9
+ import { galleryBlock } from "../blocks/builtins/Gallery.js";
10
+ import { faqBlock } from "../blocks/builtins/Faq.js";
11
+ import { openingHoursBlock } from "../blocks/builtins/OpeningHours.js";
12
+ import { pricingBlock } from "../blocks/builtins/Pricing.js";
13
+ import { newsListBlock } from "../blocks/builtins/NewsListBlock.js";
14
+ import { formBlock } from "../blocks/builtins/FormBlock.js";
15
+ import { testimonialsBlock } from "../blocks/builtins/Testimonials.js";
16
+ import { teamBlock } from "../blocks/builtins/Team.js";
17
+ import { agendaBlock } from "../blocks/builtins/Agenda.js";
18
+ import { searchBlock } from "../blocks/builtins/Search.js";
19
+ import { featureBlock, countersBlock, logosBlock, timelineBlock } from "../blocks/builtins/Sections.js";
20
+ import { symbolRefBlock } from "../blocks/builtins/SymbolRef.js";
21
+ import { videoBlock } from "../blocks/builtins/Video.js";
22
+ import { bannerBlock } from "../blocks/builtins/Banner.js";
23
+ import { contactBlock, socialBlock } from "../blocks/builtins/Contact.js";
24
+ import { mapBlock } from "../blocks/builtins/MapBlock.js";
25
+ import { newsletterBlock } from "../blocks/builtins/Newsletter.js";
26
+ import { bookingBlock } from "../blocks/builtins/Booking.js";
27
+ import { buttonsBlock, quoteBlock, dividerBlock } from "../blocks/builtins/Elements.js";
28
+ import { accordionBlock } from "../blocks/builtins/Accordion.js";
29
+ import { embedBlock } from "../blocks/builtins/Embed.js";
30
+ import { withSidebarBlock, tabsBlock } from "../blocks/builtins/Layout.js";
31
+ import { cardsBlock } from "../blocks/builtins/Cards.js";
32
+ import { downloadsBlock } from "../blocks/builtins/Downloads.js";
33
+ import { pdfBlock } from "../blocks/builtins/PdfBlock.js";
34
+ import { countdownBlock } from "../blocks/builtins/Countdown.js";
35
+ import { sliderBlock } from "../blocks/builtins/Slider.js";
36
+ import { whatsappChatBlock } from "../blocks/builtins/WhatsappChat.js";
37
+ import { beforeAfterBlock } from "../blocks/builtins/BeforeAfter.js";
38
+ import { portfolioBlock } from "../blocks/builtins/Portfolio.js";
39
+ import { jobsBlock } from "../blocks/builtins/Jobs.js";
40
+ import { breadcrumbsBlock } from "../blocks/builtins/Breadcrumbs.js";
41
41
  import {
42
42
  newsWidget,
43
43
  agendaWidget,
@@ -51,7 +51,7 @@ import {
51
51
  cardsWidget,
52
52
  downloadsWidget,
53
53
  countdownWidget
54
- } from "../blocks/builtins/Widgets";
54
+ } from "../blocks/builtins/Widgets.js";
55
55
  const CORE_VERSION = "5.0.0";
56
56
  const contentModule = defineModule({
57
57
  id: "content",
@@ -70,8 +70,8 @@ const galleryModule = defineModule({
70
70
  // Per-site instelbaar door de agent/klant (modules.gallery.config) zonder core te forken.
71
71
  // `.describe()` = het label dat de klant in /beheer ziet.
72
72
  settingsSchema: z.object({
73
- columns: z.number().int().min(1).max(6).default(3).describe("Kolommen"),
74
- lightbox: z.boolean().default(true).describe("Lightbox bij klikken")
73
+ columns: z._default(z.int().check(z.minimum(1)).check(z.maximum(6)), 3).register(z.globalRegistry, { description: "Kolommen" }),
74
+ lightbox: z._default(z.boolean(), true).register(z.globalRegistry, { description: "Lightbox bij klikken" })
75
75
  }),
76
76
  defaultSettings: { columns: 3, lightbox: true }
77
77
  });
@@ -360,18 +360,16 @@ const consentModule = defineModule({
360
360
  description: "Toestemmingsbanner + consent-opslag; stelt niet-essenti\xEBle scripts uit.",
361
361
  defaultEnabled: false,
362
362
  settingsSchema: z.object({
363
- message: z.string().default("We gebruiken cookies om de site te verbeteren. Kies hieronder je voorkeuren.").describe("Bannertekst"),
364
- privacyUrl: z.string().optional().describe("Link naar privacyverklaring"),
365
- version: z.string().optional().describe("Beleidsversie (wijzig \u2192 banner opnieuw tonen)"),
366
- showReopen: z.boolean().default(true).describe("Zwevend cookie-knopje om keuze te wijzigen"),
367
- categories: z.array(
368
- z.object({
369
- id: z.string(),
370
- label: z.string(),
371
- description: z.string().optional(),
372
- required: z.boolean().default(false)
373
- })
374
- ).default([
363
+ message: z._default(z.string(), "We gebruiken cookies om de site te verbeteren. Kies hieronder je voorkeuren.").register(z.globalRegistry, { description: "Bannertekst" }),
364
+ privacyUrl: z.optional(z.string()).register(z.globalRegistry, { description: "Link naar privacyverklaring" }),
365
+ version: z.optional(z.string()).register(z.globalRegistry, { description: "Beleidsversie (wijzig \u2192 banner opnieuw tonen)" }),
366
+ showReopen: z._default(z.boolean(), true).register(z.globalRegistry, { description: "Zwevend cookie-knopje om keuze te wijzigen" }),
367
+ categories: z._default(z.array(z.object({
368
+ id: z.string(),
369
+ label: z.string(),
370
+ description: z.optional(z.string()),
371
+ required: z._default(z.boolean(), false)
372
+ })), [
375
373
  { id: "necessary", label: "Noodzakelijk", description: "Nodig om de site te laten werken.", required: true },
376
374
  { id: "analytics", label: "Statistieken", description: "Anonieme statistieken om de site te verbeteren.", required: false },
377
375
  { id: "marketing", label: "Marketing", description: "Externe embeds zoals video's en kaarten.", required: false }
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/modules/builtins.ts"],"sourcesContent":["/**\n * Ingebouwde modules (XiCMS 3.0). Elke \"feature\" van 2.x is hier een first-class module geworden,\n * zodat hij per site aan/uit kan en los te verbeteren is. De bijbehorende admin-panelen staan in\n * `@xiwebdesign/xicms-core/admin` (paneel-registry), gekoppeld via dezelfde `id`/`featureKey`.\n *\n * Backward compatible: zonder `SiteConfig.modules`/`features` zijn alle modules actief — identiek\n * aan 2.x. De `content`-module is `core: true` en kan niet uitgezet worden (de basis-bouwstenen).\n */\nimport { z } from \"zod\";\nimport { defineModule } from \"./defineModule\";\nimport type { ModuleDefinition } from \"./types\";\n\nimport { heroBlock } from \"../blocks/builtins/Hero\";\nimport { richTextBlock } from \"../blocks/builtins/RichTextBlock\";\nimport { imageBlock } from \"../blocks/builtins/ImageBlock\";\nimport { ctaBlock } from \"../blocks/builtins/Cta\";\nimport { columnsBlock } from \"../blocks/builtins/Columns\";\nimport { spacerBlock } from \"../blocks/builtins/Spacer\";\nimport { galleryBlock } from \"../blocks/builtins/Gallery\";\nimport { faqBlock } from \"../blocks/builtins/Faq\";\nimport { openingHoursBlock } from \"../blocks/builtins/OpeningHours\";\nimport { pricingBlock } from \"../blocks/builtins/Pricing\";\nimport { newsListBlock } from \"../blocks/builtins/NewsListBlock\";\nimport { formBlock } from \"../blocks/builtins/FormBlock\";\nimport { testimonialsBlock } from \"../blocks/builtins/Testimonials\";\nimport { teamBlock } from \"../blocks/builtins/Team\";\nimport { agendaBlock } from \"../blocks/builtins/Agenda\";\nimport { searchBlock } from \"../blocks/builtins/Search\";\nimport { featureBlock, countersBlock, logosBlock, timelineBlock } from \"../blocks/builtins/Sections\";\nimport { symbolRefBlock } from \"../blocks/builtins/SymbolRef\";\nimport { videoBlock } from \"../blocks/builtins/Video\";\nimport { bannerBlock } from \"../blocks/builtins/Banner\";\nimport { contactBlock, socialBlock } from \"../blocks/builtins/Contact\";\nimport { mapBlock } from \"../blocks/builtins/MapBlock\";\nimport { newsletterBlock } from \"../blocks/builtins/Newsletter\";\nimport { bookingBlock } from \"../blocks/builtins/Booking\";\nimport { buttonsBlock, quoteBlock, dividerBlock } from \"../blocks/builtins/Elements\";\nimport { accordionBlock } from \"../blocks/builtins/Accordion\";\nimport { embedBlock } from \"../blocks/builtins/Embed\";\nimport { withSidebarBlock, tabsBlock } from \"../blocks/builtins/Layout\";\nimport { cardsBlock } from \"../blocks/builtins/Cards\";\nimport { downloadsBlock } from \"../blocks/builtins/Downloads\";\nimport { pdfBlock } from \"../blocks/builtins/PdfBlock\";\nimport { countdownBlock } from \"../blocks/builtins/Countdown\";\nimport { sliderBlock } from \"../blocks/builtins/Slider\";\nimport { whatsappChatBlock } from \"../blocks/builtins/WhatsappChat\";\nimport { beforeAfterBlock } from \"../blocks/builtins/BeforeAfter\";\nimport { portfolioBlock } from \"../blocks/builtins/Portfolio\";\nimport { jobsBlock } from \"../blocks/builtins/Jobs\";\nimport { breadcrumbsBlock } from \"../blocks/builtins/Breadcrumbs\";\nimport {\n newsWidget,\n agendaWidget,\n openingHoursWidget,\n contactWidget,\n socialWidget as socialWidgetBlock,\n newsletterWidget,\n ctaWidget,\n galleryWidget,\n testimonialsWidget,\n cardsWidget,\n downloadsWidget,\n countdownWidget,\n} from \"../blocks/builtins/Widgets\";\n\nconst CORE_VERSION = \"5.0.0\";\n\n/**\n * Basis-bouwstenen — altijd aanwezig (niet uit te zetten). Bevat ook de indelingsblokken\n * (kolommen, \"Met zijbalk\") waarmee je widgets naast je hoofdinhoud plaatst, plus de\n * compacte CTA-widget.\n */\nexport const contentModule = defineModule({\n id: \"content\",\n version: CORE_VERSION,\n label: \"Basisinhoud\",\n description: \"Kern-bouwstenen: hero, tekst, afbeelding, CTA, kolommen, zijbalk, witruimte.\",\n core: true,\n blocks: [heroBlock, richTextBlock, imageBlock, ctaBlock, columnsBlock, withSidebarBlock, spacerBlock, buttonsBlock, quoteBlock, dividerBlock, ctaWidget, symbolRefBlock],\n});\n\nexport const galleryModule = defineModule({\n id: \"gallery\",\n version: CORE_VERSION,\n label: \"Fotogalerij\",\n description: \"Galerij-block met grid en (optioneel) lightbox + compacte fotostrip-widget.\",\n blocks: [galleryBlock, galleryWidget],\n // Per-site instelbaar door de agent/klant (modules.gallery.config) zonder core te forken.\n // `.describe()` = het label dat de klant in /beheer ziet.\n settingsSchema: z.object({\n columns: z.number().int().min(1).max(6).default(3).describe(\"Kolommen\"),\n lightbox: z.boolean().default(true).describe(\"Lightbox bij klikken\"),\n }),\n defaultSettings: { columns: 3, lightbox: true },\n});\n\nexport const faqModule = defineModule({\n id: \"faq\",\n version: CORE_VERSION,\n label: \"FAQ\",\n description: \"Veelgestelde vragen (accordeon) met optionele zoek + FAQ-JSON-LD.\",\n blocks: [faqBlock],\n});\n\nexport const openingHoursModule = defineModule({\n id: \"openingHours\",\n version: CORE_VERSION,\n label: \"Openingstijden\",\n description: \"Openingstijden-tabel + compacte widget met 'vandaag' gemarkeerd.\",\n blocks: [openingHoursBlock, openingHoursWidget],\n});\n\nexport const pricingModule = defineModule({\n id: \"pricing\",\n version: CORE_VERSION,\n label: \"Prijzen\",\n blocks: [pricingBlock],\n});\n\nexport const pagesModule = defineModule({\n id: \"pages\",\n version: CORE_VERSION,\n label: \"Pagina's\",\n featureKey: \"pages\",\n description: \"Paginabouwer (draft → publish + versiegeschiedenis).\",\n});\n\nexport const newsModule = defineModule({\n id: \"news\",\n version: CORE_VERSION,\n label: \"Nieuws\",\n featureKey: \"news\",\n description: \"Nieuwsartikelen + nieuwslijst-block + 'laatste nieuws'-widget voor de zijbalk.\",\n blocks: [newsListBlock, newsWidget],\n});\n\nexport const mediaModule = defineModule({\n id: \"media\",\n version: CORE_VERSION,\n label: \"Media\",\n featureKey: \"media\",\n description: \"Mediabeheer met compressie + webp/srcset-varianten.\",\n requires: [{ kind: \"function\", name: \"onMediaUpload\" }, { kind: \"storage\", prefix: \"sites/\" }],\n});\n\nexport const formsModule = defineModule({\n id: \"forms\",\n version: CORE_VERSION,\n label: \"Formulieren\",\n featureKey: \"forms\",\n description: \"Formulierbouwer + inzendingen + e-mailnotificatie.\",\n blocks: [formBlock],\n requires: [\n { kind: \"function\", name: \"submitForm\" },\n { kind: \"firestore\", collection: \"forms\" },\n ],\n});\n\nexport const statsModule = defineModule({\n id: \"stats\",\n version: CORE_VERSION,\n label: \"Statistieken\",\n featureKey: \"stats\",\n description: \"Privacy-vriendelijke bezoekersstatistieken (geen cookies).\",\n requires: [{ kind: \"function\", name: \"trackView\" }],\n});\n\nexport const settingsModule = defineModule({\n id: \"settings\",\n version: CORE_VERSION,\n label: \"Instellingen\",\n core: true,\n description: \"Site-instellingen (nav, thema, SEO, formulier-afzender) — alleen siteadmin.\",\n});\n\n// Opt-in modules (defaultEnabled: false): worden bij installatie of later aangezet via\n// `modules: { <id>: true }`. Geen extra backend nodig — data leeft in de page-blocks.\nexport const testimonialsModule = defineModule({\n id: \"testimonials\",\n version: CORE_VERSION,\n label: \"Reviews\",\n description: \"Klantquotes/reviews met sterren, optionele Review-JSON-LD + compacte review-widget.\",\n defaultEnabled: false,\n blocks: [testimonialsBlock, testimonialsWidget],\n});\n\nexport const teamModule = defineModule({\n id: \"team\",\n version: CORE_VERSION,\n label: \"Team\",\n description: \"Team-/medewerkersoverzicht met foto, functie en bio.\",\n defaultEnabled: false,\n blocks: [teamBlock],\n});\n\nexport const agendaModule = defineModule({\n id: \"agenda\",\n version: CORE_VERSION,\n label: \"Agenda\",\n description: \"Evenementen/agenda (chronologisch) met Event-JSON-LD + 'komende agenda'-widget.\",\n defaultEnabled: false,\n blocks: [agendaBlock, agendaWidget],\n});\n\nexport const searchModule = defineModule({\n id: \"search\",\n version: CORE_VERSION,\n label: \"Zoeken\",\n description: \"Site-zoekblok dat gepubliceerde pagina's (en nieuws) client-side doorzoekt.\",\n defaultEnabled: false,\n blocks: [searchBlock],\n});\n\nexport const featureModule = defineModule({\n id: \"feature\",\n version: CORE_VERSION,\n label: \"Beeld + tekst\",\n description: \"Feature-sectie met afbeelding links/rechts en tekst.\",\n defaultEnabled: false,\n blocks: [featureBlock],\n});\n\nexport const countersModule = defineModule({\n id: \"counters\",\n version: CORE_VERSION,\n label: \"Tellers\",\n description: \"Statistiek-tellers (bv. “100+ klanten”).\",\n defaultEnabled: false,\n blocks: [countersBlock],\n});\n\nexport const logosModule = defineModule({\n id: \"logos\",\n version: CORE_VERSION,\n label: \"Logo's\",\n description: \"Partner-/klantlogo-strip.\",\n defaultEnabled: false,\n blocks: [logosBlock],\n});\n\nexport const timelineModule = defineModule({\n id: \"timeline\",\n version: CORE_VERSION,\n label: \"Tijdlijn\",\n description: \"Stappen/proces als tijdlijn.\",\n defaultEnabled: false,\n blocks: [timelineBlock],\n});\n\nexport const videoModule = defineModule({\n id: \"video\",\n version: CORE_VERSION,\n label: \"Video\",\n description: \"YouTube/Vimeo/MP4-embed (consent-gated).\",\n defaultEnabled: false,\n blocks: [videoBlock],\n});\n\nexport const bannerModule = defineModule({\n id: \"banner\",\n version: CORE_VERSION,\n label: \"Aankondiging\",\n description: \"Aankondigingsbalk, optioneel sluitbaar.\",\n defaultEnabled: false,\n blocks: [bannerBlock],\n});\n\nexport const contactModule = defineModule({\n id: \"contact\",\n version: CORE_VERSION,\n label: \"Contact + kaart + social\",\n description: \"Contactgegevens (JSON-LD), kaart (consent-gated), social-links + compacte widgets.\",\n defaultEnabled: false,\n blocks: [contactBlock, mapBlock, socialBlock, contactWidget, socialWidgetBlock],\n});\n\nexport const newsletterModule = defineModule({\n id: \"newsletter\",\n version: CORE_VERSION,\n label: \"Nieuwsbrief\",\n description: \"Aanmeldformulier via een externe provider-URL + compacte nieuwsbrief-widget.\",\n defaultEnabled: false,\n blocks: [newsletterBlock, newsletterWidget],\n});\n\nexport const bookingModule = defineModule({\n id: \"booking\",\n version: CORE_VERSION,\n label: \"Afspraak/booking\",\n description: \"Boekings-embed (bv. Calendly), consent-gated.\",\n defaultEnabled: false,\n blocks: [bookingBlock],\n});\n\nexport const accordionModule = defineModule({\n id: \"accordion\",\n version: CORE_VERSION,\n label: \"Accordeon\",\n description: \"Generieke in-/uitklapbare panelen.\",\n defaultEnabled: false,\n blocks: [accordionBlock],\n});\n\nexport const embedModule = defineModule({\n id: \"embed\",\n version: CORE_VERSION,\n label: \"Embed\",\n description: \"Generieke responsive iframe-embed (consent-gated).\",\n defaultEnabled: false,\n blocks: [embedBlock],\n});\n\n/* ── Nieuwe modules (3.1) — veelgebruikt op websites, volwaardig + widget waar zinvol ── */\n\nexport const cardsModule = defineModule({\n id: \"cards\",\n version: CORE_VERSION,\n label: \"Diensten / kaarten\",\n description: \"Diensten-/featurekaarten in een grid (icoon of beeld) + compacte 'uitgelicht'-widget.\",\n defaultEnabled: false,\n blocks: [cardsBlock, cardsWidget],\n});\n\nexport const tabsModule = defineModule({\n id: \"tabs\",\n version: CORE_VERSION,\n label: \"Tabbladen\",\n description: \"Tabblad-indeling: per tab een eigen set blokken (bv. beschrijving / specificaties).\",\n defaultEnabled: false,\n blocks: [tabsBlock],\n});\n\nexport const downloadsModule = defineModule({\n id: \"downloads\",\n version: CORE_VERSION,\n label: \"Downloads\",\n description: \"Lijst met downloadbare documenten (brochures, prijslijsten) + compacte widget.\",\n defaultEnabled: false,\n blocks: [downloadsBlock, downloadsWidget],\n});\n\nexport const pdfModule = defineModule({\n id: \"pdf\",\n version: CORE_VERSION,\n label: \"PDF-lezer\",\n description: \"Inline PDF-lezer voor menukaarten/documenten; meerdere PDF's met tabs, zelf te vervangen.\",\n defaultEnabled: false,\n blocks: [pdfBlock],\n});\n\nexport const countdownModule = defineModule({\n id: \"countdown\",\n version: CORE_VERSION,\n label: \"Aftelteller\",\n description: \"Tikkende countdown naar een datum (lancering, evenement, aanbieding) + widget.\",\n defaultEnabled: false,\n blocks: [countdownBlock, countdownWidget],\n});\n\nexport const sliderModule = defineModule({\n id: \"slider\",\n version: CORE_VERSION,\n label: \"Carrousel / slider\",\n description: \"Beeld-/contentcarrousel met dots, pijlen en optioneel autoplay (reduced-motion-veilig).\",\n defaultEnabled: false,\n blocks: [sliderBlock],\n});\n\n/* ── 4.16: nieuwe modules (allemaal opt-in) ──────────────────────────────── */\n\nexport const whatsappModule = defineModule({\n id: \"whatsapp\",\n version: CORE_VERSION,\n label: \"WhatsApp-knop\",\n description: \"Zwevende WhatsApp-/chatknop — laagdrempelig contact (wa.me-link, geen consent nodig).\",\n defaultEnabled: false,\n blocks: [whatsappChatBlock],\n});\n\nexport const beforeAfterModule = defineModule({\n id: \"beforeAfter\",\n version: CORE_VERSION,\n label: \"Voor / na\",\n description: \"Voor/na-vergelijker met sleepbare scheiding — sterk voor hoveniers, schilders, salons.\",\n defaultEnabled: false,\n blocks: [beforeAfterBlock],\n});\n\nexport const portfolioModule = defineModule({\n id: \"portfolio\",\n version: CORE_VERSION,\n label: \"Portfolio / projecten\",\n description: \"Projecten/cases-grid met categorie-filter en lightbox.\",\n defaultEnabled: false,\n blocks: [portfolioBlock],\n});\n\nexport const jobsModule = defineModule({\n id: \"jobs\",\n version: CORE_VERSION,\n label: \"Vacatures\",\n description: \"Vacature-overzicht met JobPosting-JSON-LD (vindbaar via Google Jobs).\",\n defaultEnabled: false,\n blocks: [jobsBlock],\n});\n\nexport const breadcrumbsModule = defineModule({\n id: \"breadcrumbs\",\n version: CORE_VERSION,\n label: \"Kruimelpad\",\n description: \"Kruimelpad afgeleid van de URL, met BreadcrumbList-JSON-LD (SEO).\",\n defaultEnabled: false,\n blocks: [breadcrumbsBlock],\n});\n\n/* ── 5.5: webwinkel + donaties ───────────────────────────────────────────────\n * 6.0: de shop-module zit NIET meer in de default-bundel. Hij is opt-in via de\n * subpath `@xiwebdesign/xicms-core/modules/shop` (+ `/admin/shop`, `/server/shop`),\n * of via de backward-compat-barrel `@xiwebdesign/xicms-core/all`. Zo landt shop-code\n * alleen in de build van sites die 'm daadwerkelijk aanzetten. */\n\nexport const consentModule = defineModule({\n id: \"consent\",\n version: CORE_VERSION,\n label: \"Cookie-consent (AVG)\",\n description: \"Toestemmingsbanner + consent-opslag; stelt niet-essentiële scripts uit.\",\n defaultEnabled: false,\n settingsSchema: z.object({\n message: z\n .string()\n .default(\"We gebruiken cookies om de site te verbeteren. Kies hieronder je voorkeuren.\")\n .describe(\"Bannertekst\"),\n privacyUrl: z.string().optional().describe(\"Link naar privacyverklaring\"),\n version: z.string().optional().describe(\"Beleidsversie (wijzig → banner opnieuw tonen)\"),\n showReopen: z.boolean().default(true).describe(\"Zwevend cookie-knopje om keuze te wijzigen\"),\n categories: z\n .array(\n z.object({\n id: z.string(),\n label: z.string(),\n description: z.string().optional(),\n required: z.boolean().default(false),\n }),\n )\n .default([\n { id: \"necessary\", label: \"Noodzakelijk\", description: \"Nodig om de site te laten werken.\", required: true },\n { id: \"analytics\", label: \"Statistieken\", description: \"Anonieme statistieken om de site te verbeteren.\", required: false },\n { id: \"marketing\", label: \"Marketing\", description: \"Externe embeds zoals video's en kaarten.\", required: false },\n ]),\n }),\n defaultSettings: {},\n});\n\n/** Alle ingebouwde modules (volgorde bepaalt block- en tab-volgorde). */\nexport const builtinModules: ModuleDefinition[] = [\n contentModule,\n pagesModule,\n newsModule,\n mediaModule,\n galleryModule,\n faqModule,\n openingHoursModule,\n pricingModule,\n formsModule,\n statsModule,\n settingsModule,\n testimonialsModule,\n teamModule,\n agendaModule,\n searchModule,\n featureModule,\n countersModule,\n logosModule,\n timelineModule,\n videoModule,\n bannerModule,\n contactModule,\n newsletterModule,\n bookingModule,\n accordionModule,\n embedModule,\n cardsModule,\n tabsModule,\n downloadsModule,\n pdfModule,\n countdownModule,\n sliderModule,\n whatsappModule,\n beforeAfterModule,\n portfolioModule,\n jobsModule,\n breadcrumbsModule,\n consentModule,\n];\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/modules/builtins.ts"],"sourcesContent":["/**\n * Ingebouwde modules (XiCMS 3.0). Elke \"feature\" van 2.x is hier een first-class module geworden,\n * zodat hij per site aan/uit kan en los te verbeteren is. De bijbehorende admin-panelen staan in\n * `@xiwebdesign/xicms-core/admin` (paneel-registry), gekoppeld via dezelfde `id`/`featureKey`.\n *\n * Backward compatible: zonder `SiteConfig.modules`/`features` zijn alle modules actief — identiek\n * aan 2.x. De `content`-module is `core: true` en kan niet uitgezet worden (de basis-bouwstenen).\n */\nimport * as z from \"zod/mini\";\nimport { defineModule } from \"./defineModule\";\nimport type { ModuleDefinition } from \"./types\";\n\nimport { heroBlock } from \"../blocks/builtins/Hero\";\nimport { richTextBlock } from \"../blocks/builtins/RichTextBlock\";\nimport { imageBlock } from \"../blocks/builtins/ImageBlock\";\nimport { ctaBlock } from \"../blocks/builtins/Cta\";\nimport { columnsBlock } from \"../blocks/builtins/Columns\";\nimport { spacerBlock } from \"../blocks/builtins/Spacer\";\nimport { galleryBlock } from \"../blocks/builtins/Gallery\";\nimport { faqBlock } from \"../blocks/builtins/Faq\";\nimport { openingHoursBlock } from \"../blocks/builtins/OpeningHours\";\nimport { pricingBlock } from \"../blocks/builtins/Pricing\";\nimport { newsListBlock } from \"../blocks/builtins/NewsListBlock\";\nimport { formBlock } from \"../blocks/builtins/FormBlock\";\nimport { testimonialsBlock } from \"../blocks/builtins/Testimonials\";\nimport { teamBlock } from \"../blocks/builtins/Team\";\nimport { agendaBlock } from \"../blocks/builtins/Agenda\";\nimport { searchBlock } from \"../blocks/builtins/Search\";\nimport { featureBlock, countersBlock, logosBlock, timelineBlock } from \"../blocks/builtins/Sections\";\nimport { symbolRefBlock } from \"../blocks/builtins/SymbolRef\";\nimport { videoBlock } from \"../blocks/builtins/Video\";\nimport { bannerBlock } from \"../blocks/builtins/Banner\";\nimport { contactBlock, socialBlock } from \"../blocks/builtins/Contact\";\nimport { mapBlock } from \"../blocks/builtins/MapBlock\";\nimport { newsletterBlock } from \"../blocks/builtins/Newsletter\";\nimport { bookingBlock } from \"../blocks/builtins/Booking\";\nimport { buttonsBlock, quoteBlock, dividerBlock } from \"../blocks/builtins/Elements\";\nimport { accordionBlock } from \"../blocks/builtins/Accordion\";\nimport { embedBlock } from \"../blocks/builtins/Embed\";\nimport { withSidebarBlock, tabsBlock } from \"../blocks/builtins/Layout\";\nimport { cardsBlock } from \"../blocks/builtins/Cards\";\nimport { downloadsBlock } from \"../blocks/builtins/Downloads\";\nimport { pdfBlock } from \"../blocks/builtins/PdfBlock\";\nimport { countdownBlock } from \"../blocks/builtins/Countdown\";\nimport { sliderBlock } from \"../blocks/builtins/Slider\";\nimport { whatsappChatBlock } from \"../blocks/builtins/WhatsappChat\";\nimport { beforeAfterBlock } from \"../blocks/builtins/BeforeAfter\";\nimport { portfolioBlock } from \"../blocks/builtins/Portfolio\";\nimport { jobsBlock } from \"../blocks/builtins/Jobs\";\nimport { breadcrumbsBlock } from \"../blocks/builtins/Breadcrumbs\";\nimport {\n newsWidget,\n agendaWidget,\n openingHoursWidget,\n contactWidget,\n socialWidget as socialWidgetBlock,\n newsletterWidget,\n ctaWidget,\n galleryWidget,\n testimonialsWidget,\n cardsWidget,\n downloadsWidget,\n countdownWidget,\n} from \"../blocks/builtins/Widgets\";\n\nconst CORE_VERSION = \"5.0.0\";\n\n/**\n * Basis-bouwstenen — altijd aanwezig (niet uit te zetten). Bevat ook de indelingsblokken\n * (kolommen, \"Met zijbalk\") waarmee je widgets naast je hoofdinhoud plaatst, plus de\n * compacte CTA-widget.\n */\nexport const contentModule = defineModule({\n id: \"content\",\n version: CORE_VERSION,\n label: \"Basisinhoud\",\n description: \"Kern-bouwstenen: hero, tekst, afbeelding, CTA, kolommen, zijbalk, witruimte.\",\n core: true,\n blocks: [heroBlock, richTextBlock, imageBlock, ctaBlock, columnsBlock, withSidebarBlock, spacerBlock, buttonsBlock, quoteBlock, dividerBlock, ctaWidget, symbolRefBlock],\n});\n\nexport const galleryModule = defineModule({\n id: \"gallery\",\n version: CORE_VERSION,\n label: \"Fotogalerij\",\n description: \"Galerij-block met grid en (optioneel) lightbox + compacte fotostrip-widget.\",\n blocks: [galleryBlock, galleryWidget],\n // Per-site instelbaar door de agent/klant (modules.gallery.config) zonder core te forken.\n // `.describe()` = het label dat de klant in /beheer ziet.\n settingsSchema: z.object({\n columns: z._default(z.int().check(z.minimum(1)).check(z.maximum(6)), 3).register(z.globalRegistry, { description: \"Kolommen\" }),\n lightbox: z._default(z.boolean(), true).register(z.globalRegistry, { description: \"Lightbox bij klikken\" }),\n }),\n defaultSettings: { columns: 3, lightbox: true },\n});\n\nexport const faqModule = defineModule({\n id: \"faq\",\n version: CORE_VERSION,\n label: \"FAQ\",\n description: \"Veelgestelde vragen (accordeon) met optionele zoek + FAQ-JSON-LD.\",\n blocks: [faqBlock],\n});\n\nexport const openingHoursModule = defineModule({\n id: \"openingHours\",\n version: CORE_VERSION,\n label: \"Openingstijden\",\n description: \"Openingstijden-tabel + compacte widget met 'vandaag' gemarkeerd.\",\n blocks: [openingHoursBlock, openingHoursWidget],\n});\n\nexport const pricingModule = defineModule({\n id: \"pricing\",\n version: CORE_VERSION,\n label: \"Prijzen\",\n blocks: [pricingBlock],\n});\n\nexport const pagesModule = defineModule({\n id: \"pages\",\n version: CORE_VERSION,\n label: \"Pagina's\",\n featureKey: \"pages\",\n description: \"Paginabouwer (draft → publish + versiegeschiedenis).\",\n});\n\nexport const newsModule = defineModule({\n id: \"news\",\n version: CORE_VERSION,\n label: \"Nieuws\",\n featureKey: \"news\",\n description: \"Nieuwsartikelen + nieuwslijst-block + 'laatste nieuws'-widget voor de zijbalk.\",\n blocks: [newsListBlock, newsWidget],\n});\n\nexport const mediaModule = defineModule({\n id: \"media\",\n version: CORE_VERSION,\n label: \"Media\",\n featureKey: \"media\",\n description: \"Mediabeheer met compressie + webp/srcset-varianten.\",\n requires: [{ kind: \"function\", name: \"onMediaUpload\" }, { kind: \"storage\", prefix: \"sites/\" }],\n});\n\nexport const formsModule = defineModule({\n id: \"forms\",\n version: CORE_VERSION,\n label: \"Formulieren\",\n featureKey: \"forms\",\n description: \"Formulierbouwer + inzendingen + e-mailnotificatie.\",\n blocks: [formBlock],\n requires: [\n { kind: \"function\", name: \"submitForm\" },\n { kind: \"firestore\", collection: \"forms\" },\n ],\n});\n\nexport const statsModule = defineModule({\n id: \"stats\",\n version: CORE_VERSION,\n label: \"Statistieken\",\n featureKey: \"stats\",\n description: \"Privacy-vriendelijke bezoekersstatistieken (geen cookies).\",\n requires: [{ kind: \"function\", name: \"trackView\" }],\n});\n\nexport const settingsModule = defineModule({\n id: \"settings\",\n version: CORE_VERSION,\n label: \"Instellingen\",\n core: true,\n description: \"Site-instellingen (nav, thema, SEO, formulier-afzender) — alleen siteadmin.\",\n});\n\n// Opt-in modules (defaultEnabled: false): worden bij installatie of later aangezet via\n// `modules: { <id>: true }`. Geen extra backend nodig — data leeft in de page-blocks.\nexport const testimonialsModule = defineModule({\n id: \"testimonials\",\n version: CORE_VERSION,\n label: \"Reviews\",\n description: \"Klantquotes/reviews met sterren, optionele Review-JSON-LD + compacte review-widget.\",\n defaultEnabled: false,\n blocks: [testimonialsBlock, testimonialsWidget],\n});\n\nexport const teamModule = defineModule({\n id: \"team\",\n version: CORE_VERSION,\n label: \"Team\",\n description: \"Team-/medewerkersoverzicht met foto, functie en bio.\",\n defaultEnabled: false,\n blocks: [teamBlock],\n});\n\nexport const agendaModule = defineModule({\n id: \"agenda\",\n version: CORE_VERSION,\n label: \"Agenda\",\n description: \"Evenementen/agenda (chronologisch) met Event-JSON-LD + 'komende agenda'-widget.\",\n defaultEnabled: false,\n blocks: [agendaBlock, agendaWidget],\n});\n\nexport const searchModule = defineModule({\n id: \"search\",\n version: CORE_VERSION,\n label: \"Zoeken\",\n description: \"Site-zoekblok dat gepubliceerde pagina's (en nieuws) client-side doorzoekt.\",\n defaultEnabled: false,\n blocks: [searchBlock],\n});\n\nexport const featureModule = defineModule({\n id: \"feature\",\n version: CORE_VERSION,\n label: \"Beeld + tekst\",\n description: \"Feature-sectie met afbeelding links/rechts en tekst.\",\n defaultEnabled: false,\n blocks: [featureBlock],\n});\n\nexport const countersModule = defineModule({\n id: \"counters\",\n version: CORE_VERSION,\n label: \"Tellers\",\n description: \"Statistiek-tellers (bv. “100+ klanten”).\",\n defaultEnabled: false,\n blocks: [countersBlock],\n});\n\nexport const logosModule = defineModule({\n id: \"logos\",\n version: CORE_VERSION,\n label: \"Logo's\",\n description: \"Partner-/klantlogo-strip.\",\n defaultEnabled: false,\n blocks: [logosBlock],\n});\n\nexport const timelineModule = defineModule({\n id: \"timeline\",\n version: CORE_VERSION,\n label: \"Tijdlijn\",\n description: \"Stappen/proces als tijdlijn.\",\n defaultEnabled: false,\n blocks: [timelineBlock],\n});\n\nexport const videoModule = defineModule({\n id: \"video\",\n version: CORE_VERSION,\n label: \"Video\",\n description: \"YouTube/Vimeo/MP4-embed (consent-gated).\",\n defaultEnabled: false,\n blocks: [videoBlock],\n});\n\nexport const bannerModule = defineModule({\n id: \"banner\",\n version: CORE_VERSION,\n label: \"Aankondiging\",\n description: \"Aankondigingsbalk, optioneel sluitbaar.\",\n defaultEnabled: false,\n blocks: [bannerBlock],\n});\n\nexport const contactModule = defineModule({\n id: \"contact\",\n version: CORE_VERSION,\n label: \"Contact + kaart + social\",\n description: \"Contactgegevens (JSON-LD), kaart (consent-gated), social-links + compacte widgets.\",\n defaultEnabled: false,\n blocks: [contactBlock, mapBlock, socialBlock, contactWidget, socialWidgetBlock],\n});\n\nexport const newsletterModule = defineModule({\n id: \"newsletter\",\n version: CORE_VERSION,\n label: \"Nieuwsbrief\",\n description: \"Aanmeldformulier via een externe provider-URL + compacte nieuwsbrief-widget.\",\n defaultEnabled: false,\n blocks: [newsletterBlock, newsletterWidget],\n});\n\nexport const bookingModule = defineModule({\n id: \"booking\",\n version: CORE_VERSION,\n label: \"Afspraak/booking\",\n description: \"Boekings-embed (bv. Calendly), consent-gated.\",\n defaultEnabled: false,\n blocks: [bookingBlock],\n});\n\nexport const accordionModule = defineModule({\n id: \"accordion\",\n version: CORE_VERSION,\n label: \"Accordeon\",\n description: \"Generieke in-/uitklapbare panelen.\",\n defaultEnabled: false,\n blocks: [accordionBlock],\n});\n\nexport const embedModule = defineModule({\n id: \"embed\",\n version: CORE_VERSION,\n label: \"Embed\",\n description: \"Generieke responsive iframe-embed (consent-gated).\",\n defaultEnabled: false,\n blocks: [embedBlock],\n});\n\n/* ── Nieuwe modules (3.1) — veelgebruikt op websites, volwaardig + widget waar zinvol ── */\n\nexport const cardsModule = defineModule({\n id: \"cards\",\n version: CORE_VERSION,\n label: \"Diensten / kaarten\",\n description: \"Diensten-/featurekaarten in een grid (icoon of beeld) + compacte 'uitgelicht'-widget.\",\n defaultEnabled: false,\n blocks: [cardsBlock, cardsWidget],\n});\n\nexport const tabsModule = defineModule({\n id: \"tabs\",\n version: CORE_VERSION,\n label: \"Tabbladen\",\n description: \"Tabblad-indeling: per tab een eigen set blokken (bv. beschrijving / specificaties).\",\n defaultEnabled: false,\n blocks: [tabsBlock],\n});\n\nexport const downloadsModule = defineModule({\n id: \"downloads\",\n version: CORE_VERSION,\n label: \"Downloads\",\n description: \"Lijst met downloadbare documenten (brochures, prijslijsten) + compacte widget.\",\n defaultEnabled: false,\n blocks: [downloadsBlock, downloadsWidget],\n});\n\nexport const pdfModule = defineModule({\n id: \"pdf\",\n version: CORE_VERSION,\n label: \"PDF-lezer\",\n description: \"Inline PDF-lezer voor menukaarten/documenten; meerdere PDF's met tabs, zelf te vervangen.\",\n defaultEnabled: false,\n blocks: [pdfBlock],\n});\n\nexport const countdownModule = defineModule({\n id: \"countdown\",\n version: CORE_VERSION,\n label: \"Aftelteller\",\n description: \"Tikkende countdown naar een datum (lancering, evenement, aanbieding) + widget.\",\n defaultEnabled: false,\n blocks: [countdownBlock, countdownWidget],\n});\n\nexport const sliderModule = defineModule({\n id: \"slider\",\n version: CORE_VERSION,\n label: \"Carrousel / slider\",\n description: \"Beeld-/contentcarrousel met dots, pijlen en optioneel autoplay (reduced-motion-veilig).\",\n defaultEnabled: false,\n blocks: [sliderBlock],\n});\n\n/* ── 4.16: nieuwe modules (allemaal opt-in) ──────────────────────────────── */\n\nexport const whatsappModule = defineModule({\n id: \"whatsapp\",\n version: CORE_VERSION,\n label: \"WhatsApp-knop\",\n description: \"Zwevende WhatsApp-/chatknop — laagdrempelig contact (wa.me-link, geen consent nodig).\",\n defaultEnabled: false,\n blocks: [whatsappChatBlock],\n});\n\nexport const beforeAfterModule = defineModule({\n id: \"beforeAfter\",\n version: CORE_VERSION,\n label: \"Voor / na\",\n description: \"Voor/na-vergelijker met sleepbare scheiding — sterk voor hoveniers, schilders, salons.\",\n defaultEnabled: false,\n blocks: [beforeAfterBlock],\n});\n\nexport const portfolioModule = defineModule({\n id: \"portfolio\",\n version: CORE_VERSION,\n label: \"Portfolio / projecten\",\n description: \"Projecten/cases-grid met categorie-filter en lightbox.\",\n defaultEnabled: false,\n blocks: [portfolioBlock],\n});\n\nexport const jobsModule = defineModule({\n id: \"jobs\",\n version: CORE_VERSION,\n label: \"Vacatures\",\n description: \"Vacature-overzicht met JobPosting-JSON-LD (vindbaar via Google Jobs).\",\n defaultEnabled: false,\n blocks: [jobsBlock],\n});\n\nexport const breadcrumbsModule = defineModule({\n id: \"breadcrumbs\",\n version: CORE_VERSION,\n label: \"Kruimelpad\",\n description: \"Kruimelpad afgeleid van de URL, met BreadcrumbList-JSON-LD (SEO).\",\n defaultEnabled: false,\n blocks: [breadcrumbsBlock],\n});\n\n/* ── 5.5: webwinkel + donaties ───────────────────────────────────────────────\n * 6.0: de shop-module zit NIET meer in de default-bundel. Hij is opt-in via de\n * subpath `@xiwebdesign/xicms-core/modules/shop` (+ `/admin/shop`, `/server/shop`),\n * of via de backward-compat-barrel `@xiwebdesign/xicms-core/all`. Zo landt shop-code\n * alleen in de build van sites die 'm daadwerkelijk aanzetten. */\n\nexport const consentModule = defineModule({\n id: \"consent\",\n version: CORE_VERSION,\n label: \"Cookie-consent (AVG)\",\n description: \"Toestemmingsbanner + consent-opslag; stelt niet-essentiële scripts uit.\",\n defaultEnabled: false,\n settingsSchema: z.object({\n message: z._default(z.string(), \"We gebruiken cookies om de site te verbeteren. Kies hieronder je voorkeuren.\").register(z.globalRegistry, { description: \"Bannertekst\" }),\n privacyUrl: z.optional(z.string()).register(z.globalRegistry, { description: \"Link naar privacyverklaring\" }),\n version: z.optional(z.string()).register(z.globalRegistry, { description: \"Beleidsversie (wijzig → banner opnieuw tonen)\" }),\n showReopen: z._default(z.boolean(), true).register(z.globalRegistry, { description: \"Zwevend cookie-knopje om keuze te wijzigen\" }),\n categories: z._default(z.array(z.object({\n id: z.string(),\n label: z.string(),\n description: z.optional(z.string()),\n required: z._default(z.boolean(), false),\n })), [\n { id: \"necessary\", label: \"Noodzakelijk\", description: \"Nodig om de site te laten werken.\", required: true },\n { id: \"analytics\", label: \"Statistieken\", description: \"Anonieme statistieken om de site te verbeteren.\", required: false },\n { id: \"marketing\", label: \"Marketing\", description: \"Externe embeds zoals video's en kaarten.\", required: false },\n ]),\n }),\n defaultSettings: {},\n});\n\n/** Alle ingebouwde modules (volgorde bepaalt block- en tab-volgorde). */\nexport const builtinModules: ModuleDefinition[] = [\n contentModule,\n pagesModule,\n newsModule,\n mediaModule,\n galleryModule,\n faqModule,\n openingHoursModule,\n pricingModule,\n formsModule,\n statsModule,\n settingsModule,\n testimonialsModule,\n teamModule,\n agendaModule,\n searchModule,\n featureModule,\n countersModule,\n logosModule,\n timelineModule,\n videoModule,\n bannerModule,\n contactModule,\n newsletterModule,\n bookingModule,\n accordionModule,\n embedModule,\n cardsModule,\n tabsModule,\n downloadsModule,\n pdfModule,\n countdownModule,\n sliderModule,\n whatsappModule,\n beforeAfterModule,\n portfolioModule,\n jobsModule,\n breadcrumbsModule,\n consentModule,\n];\n"],"mappings":"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","names":[]}
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import { Fragment, jsx, jsxs } from "react/jsx-runtime";
3
3
  import { useEffect, useRef, useState } from "react";
4
- import { consentDecided, useConsent } from "./useConsent";
4
+ import { consentDecided, useConsent } from "./useConsent.js";
5
5
  const DEFAULT_CATEGORIES = [
6
6
  { id: "necessary", label: "Noodzakelijk", required: true, description: "Nodig om de site te laten werken. Altijd actief." },
7
7
  { id: "analytics", label: "Statistieken", description: "Anonieme bezoekersstatistieken om de site te verbeteren." },
@@ -1,6 +1,6 @@
1
1
  "use client";
2
2
  import { useCallback, useEffect, useState } from "react";
3
- import { useModuleSettings } from "../context";
3
+ import { useModuleSettings } from "../context.js";
4
4
  const STORAGE_KEY = "xicms-consent";
5
5
  const EMPTY = { categories: {}, decidedAt: null };
6
6
  function normalizeConsentState(value) {
@@ -4,7 +4,7 @@
4
4
  * — zonder de modulecode te forken.
5
5
  */
6
6
  import { type ReactNode } from "react";
7
- import type { ResolvedModules } from "./registry";
7
+ import type { ResolvedModules } from "./registry.js";
8
8
  export declare function ModulesProvider({ value, children, }: {
9
9
  value: ResolvedModules;
10
10
  children: ReactNode;
@@ -3,7 +3,7 @@
3
3
  * door een klantsite om zijn eigen modules te valideren (`assertModuleContract([mijnModule])`).
4
4
  * Geeft een lijst problemen terug (leeg = ok).
5
5
  */
6
- import type { ModuleDefinition } from "./types";
6
+ import type { ModuleDefinition } from "./types.js";
7
7
  export declare function validateModuleContract(defs: ModuleDefinition[]): string[];
8
8
  /** Gooit als het contract niet klopt (handig in een test of bij opstart). */
9
9
  export declare function assertModuleContract(defs: ModuleDefinition[]): void;