@xiwebdesign/xicms-core 4.17.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (436) hide show
  1. package/dist/XiCMSProvider.d.ts +58 -0
  2. package/dist/XiCMSProvider.js +165 -0
  3. package/dist/XiCMSProvider.js.map +1 -0
  4. package/dist/admin/AdminApp.d.ts +4 -0
  5. package/dist/admin/AdminApp.js +62 -0
  6. package/dist/admin/AdminApp.js.map +1 -0
  7. package/dist/admin/AdminHelp.d.ts +2 -0
  8. package/dist/admin/AdminHelp.js +65 -0
  9. package/dist/admin/AdminHelp.js.map +1 -0
  10. package/dist/admin/NewsEditor.d.ts +2 -0
  11. package/dist/admin/NewsEditor.js +171 -0
  12. package/dist/admin/NewsEditor.js.map +1 -0
  13. package/dist/admin/SuperadminPanel.d.ts +4 -0
  14. package/dist/admin/SuperadminPanel.js +101 -0
  15. package/dist/admin/SuperadminPanel.js.map +1 -0
  16. package/dist/admin/blockEditors/StyleEditor.d.ts +10 -0
  17. package/dist/admin/blockEditors/StyleEditor.js +78 -0
  18. package/dist/admin/blockEditors/StyleEditor.js.map +1 -0
  19. package/dist/admin/blockEditors/index.d.ts +16 -0
  20. package/dist/admin/blockEditors/index.js +1602 -0
  21. package/dist/admin/blockEditors/index.js.map +1 -0
  22. package/dist/admin/editors/RichTextEditor.d.ts +10 -0
  23. package/dist/admin/editors/RichTextEditor.js +86 -0
  24. package/dist/admin/editors/RichTextEditor.js.map +1 -0
  25. package/dist/admin/forms/FormsPanel.d.ts +3 -0
  26. package/dist/admin/forms/FormsPanel.js +203 -0
  27. package/dist/admin/forms/FormsPanel.js.map +1 -0
  28. package/dist/admin/index.d.ts +21 -0
  29. package/dist/admin/index.js +38 -0
  30. package/dist/admin/index.js.map +1 -0
  31. package/dist/admin/lib/compressImage.d.ts +12 -0
  32. package/dist/admin/lib/compressImage.js +53 -0
  33. package/dist/admin/lib/compressImage.js.map +1 -0
  34. package/dist/admin/lib/mediaUsage.d.ts +9 -0
  35. package/dist/admin/lib/mediaUsage.js +25 -0
  36. package/dist/admin/lib/mediaUsage.js.map +1 -0
  37. package/dist/admin/lib/pagesClient.d.ts +38 -0
  38. package/dist/admin/lib/pagesClient.js +143 -0
  39. package/dist/admin/lib/pagesClient.js.map +1 -0
  40. package/dist/admin/lib/slugify.d.ts +2 -0
  41. package/dist/admin/lib/slugify.js +7 -0
  42. package/dist/admin/lib/slugify.js.map +1 -0
  43. package/dist/admin/lib/upload.d.ts +13 -0
  44. package/dist/admin/lib/upload.js +40 -0
  45. package/dist/admin/lib/upload.js.map +1 -0
  46. package/dist/admin/lib/zodFields.d.ts +27 -0
  47. package/dist/admin/lib/zodFields.js +48 -0
  48. package/dist/admin/lib/zodFields.js.map +1 -0
  49. package/dist/admin/media/MediaManager.d.ts +3 -0
  50. package/dist/admin/media/MediaManager.js +132 -0
  51. package/dist/admin/media/MediaManager.js.map +1 -0
  52. package/dist/admin/media/MediaPicker.d.ts +24 -0
  53. package/dist/admin/media/MediaPicker.js +93 -0
  54. package/dist/admin/media/MediaPicker.js.map +1 -0
  55. package/dist/admin/pages/PageEditor.d.ts +5 -0
  56. package/dist/admin/pages/PageEditor.js +239 -0
  57. package/dist/admin/pages/PageEditor.js.map +1 -0
  58. package/dist/admin/pages/PagesPanel.d.ts +3 -0
  59. package/dist/admin/pages/PagesPanel.js +92 -0
  60. package/dist/admin/pages/PagesPanel.js.map +1 -0
  61. package/dist/admin/panelRegistry.d.ts +20 -0
  62. package/dist/admin/panelRegistry.js +23 -0
  63. package/dist/admin/panelRegistry.js.map +1 -0
  64. package/dist/admin/patterns/PatternInserter.d.ts +10 -0
  65. package/dist/admin/patterns/PatternInserter.js +58 -0
  66. package/dist/admin/patterns/PatternInserter.js.map +1 -0
  67. package/dist/admin/settings/SettingsPanel.d.ts +3 -0
  68. package/dist/admin/settings/SettingsPanel.js +304 -0
  69. package/dist/admin/settings/SettingsPanel.js.map +1 -0
  70. package/dist/admin/settings/moduleSettingsForm.d.ts +12 -0
  71. package/dist/admin/settings/moduleSettingsForm.js +45 -0
  72. package/dist/admin/settings/moduleSettingsForm.js.map +1 -0
  73. package/dist/admin/stats/StatsPanel.d.ts +4 -0
  74. package/dist/admin/stats/StatsPanel.js +80 -0
  75. package/dist/admin/stats/StatsPanel.js.map +1 -0
  76. package/dist/admin/ui/ArrayEditor.d.ts +16 -0
  77. package/dist/admin/ui/ArrayEditor.js +38 -0
  78. package/dist/admin/ui/ArrayEditor.js.map +1 -0
  79. package/dist/admin/ui/ConfirmDialog.d.ts +22 -0
  80. package/dist/admin/ui/ConfirmDialog.js +47 -0
  81. package/dist/admin/ui/ConfirmDialog.js.map +1 -0
  82. package/dist/admin/ui/cn.d.ts +3 -0
  83. package/dist/admin/ui/cn.js +9 -0
  84. package/dist/admin/ui/cn.js.map +1 -0
  85. package/dist/admin/ui/dialog.d.ts +9 -0
  86. package/dist/admin/ui/dialog.js +47 -0
  87. package/dist/admin/ui/dialog.js.map +1 -0
  88. package/dist/admin/ui/index.d.ts +7 -0
  89. package/dist/admin/ui/index.js +29 -0
  90. package/dist/admin/ui/index.js.map +1 -0
  91. package/dist/admin/ui/primitives.d.ts +37 -0
  92. package/dist/admin/ui/primitives.js +137 -0
  93. package/dist/admin/ui/primitives.js.map +1 -0
  94. package/dist/admin/ui/select.d.ts +11 -0
  95. package/dist/admin/ui/select.js +27 -0
  96. package/dist/admin/ui/select.js.map +1 -0
  97. package/dist/admin/ui/switch.d.ts +6 -0
  98. package/dist/admin/ui/switch.js +22 -0
  99. package/dist/admin/ui/switch.js.map +1 -0
  100. package/dist/admin/ui/tabs.d.ts +5 -0
  101. package/dist/admin/ui/tabs.js +36 -0
  102. package/dist/admin/ui/tabs.js.map +1 -0
  103. package/dist/admin/ui/toast.d.ts +19 -0
  104. package/dist/admin/ui/toast.js +24 -0
  105. package/dist/admin/ui/toast.js.map +1 -0
  106. package/dist/admin/visual/VisualEditor.d.ts +10 -0
  107. package/dist/admin/visual/VisualEditor.js +597 -0
  108. package/dist/admin/visual/VisualEditor.js.map +1 -0
  109. package/dist/admin/visual/reorder.d.ts +6 -0
  110. package/dist/admin/visual/reorder.js +12 -0
  111. package/dist/admin/visual/reorder.js.map +1 -0
  112. package/dist/admin.css +1 -0
  113. package/dist/auth/AuthProvider.d.ts +30 -0
  114. package/dist/auth/AuthProvider.js +110 -0
  115. package/dist/auth/AuthProvider.js.map +1 -0
  116. package/dist/auth/LoginForm.d.ts +4 -0
  117. package/dist/auth/LoginForm.js +122 -0
  118. package/dist/auth/LoginForm.js.map +1 -0
  119. package/dist/auth/roles.d.ts +15 -0
  120. package/dist/auth/roles.js +21 -0
  121. package/dist/auth/roles.js.map +1 -0
  122. package/dist/blocks/BlockErrorBoundary.d.ts +32 -0
  123. package/dist/blocks/BlockErrorBoundary.js +39 -0
  124. package/dist/blocks/BlockErrorBoundary.js.map +1 -0
  125. package/dist/blocks/BlockRenderer.d.ts +15 -0
  126. package/dist/blocks/BlockRenderer.js +24 -0
  127. package/dist/blocks/BlockRenderer.js.map +1 -0
  128. package/dist/blocks/blockStyle.d.ts +14 -0
  129. package/dist/blocks/blockStyle.js +14 -0
  130. package/dist/blocks/blockStyle.js.map +1 -0
  131. package/dist/blocks/builtins/Accordion.d.ts +2 -0
  132. package/dist/blocks/builtins/Accordion.js +45 -0
  133. package/dist/blocks/builtins/Accordion.js.map +1 -0
  134. package/dist/blocks/builtins/Agenda.d.ts +23 -0
  135. package/dist/blocks/builtins/Agenda.js +102 -0
  136. package/dist/blocks/builtins/Agenda.js.map +1 -0
  137. package/dist/blocks/builtins/Banner.d.ts +2 -0
  138. package/dist/blocks/builtins/Banner.js +45 -0
  139. package/dist/blocks/builtins/Banner.js.map +1 -0
  140. package/dist/blocks/builtins/BeforeAfter.d.ts +2 -0
  141. package/dist/blocks/builtins/BeforeAfter.js +44 -0
  142. package/dist/blocks/builtins/BeforeAfter.js.map +1 -0
  143. package/dist/blocks/builtins/Booking.d.ts +2 -0
  144. package/dist/blocks/builtins/Booking.js +27 -0
  145. package/dist/blocks/builtins/Booking.js.map +1 -0
  146. package/dist/blocks/builtins/Breadcrumbs.d.ts +10 -0
  147. package/dist/blocks/builtins/Breadcrumbs.js +73 -0
  148. package/dist/blocks/builtins/Breadcrumbs.js.map +1 -0
  149. package/dist/blocks/builtins/Cards.d.ts +2 -0
  150. package/dist/blocks/builtins/Cards.js +94 -0
  151. package/dist/blocks/builtins/Cards.js.map +1 -0
  152. package/dist/blocks/builtins/Columns.d.ts +2 -0
  153. package/dist/blocks/builtins/Columns.js +22 -0
  154. package/dist/blocks/builtins/Columns.js.map +1 -0
  155. package/dist/blocks/builtins/Contact.d.ts +7 -0
  156. package/dist/blocks/builtins/Contact.js +121 -0
  157. package/dist/blocks/builtins/Contact.js.map +1 -0
  158. package/dist/blocks/builtins/Countdown.d.ts +18 -0
  159. package/dist/blocks/builtins/Countdown.js +65 -0
  160. package/dist/blocks/builtins/Countdown.js.map +1 -0
  161. package/dist/blocks/builtins/Cta.d.ts +2 -0
  162. package/dist/blocks/builtins/Cta.js +52 -0
  163. package/dist/blocks/builtins/Cta.js.map +1 -0
  164. package/dist/blocks/builtins/Downloads.d.ts +2 -0
  165. package/dist/blocks/builtins/Downloads.js +32 -0
  166. package/dist/blocks/builtins/Downloads.js.map +1 -0
  167. package/dist/blocks/builtins/Elements.d.ts +4 -0
  168. package/dist/blocks/builtins/Elements.js +64 -0
  169. package/dist/blocks/builtins/Elements.js.map +1 -0
  170. package/dist/blocks/builtins/Embed.d.ts +2 -0
  171. package/dist/blocks/builtins/Embed.js +30 -0
  172. package/dist/blocks/builtins/Embed.js.map +1 -0
  173. package/dist/blocks/builtins/Faq.d.ts +6 -0
  174. package/dist/blocks/builtins/Faq.js +110 -0
  175. package/dist/blocks/builtins/Faq.js.map +1 -0
  176. package/dist/blocks/builtins/FormBlock.d.ts +2 -0
  177. package/dist/blocks/builtins/FormBlock.js +221 -0
  178. package/dist/blocks/builtins/FormBlock.js.map +1 -0
  179. package/dist/blocks/builtins/Gallery.d.ts +23 -0
  180. package/dist/blocks/builtins/Gallery.js +177 -0
  181. package/dist/blocks/builtins/Gallery.js.map +1 -0
  182. package/dist/blocks/builtins/Hero.d.ts +2 -0
  183. package/dist/blocks/builtins/Hero.js +47 -0
  184. package/dist/blocks/builtins/Hero.js.map +1 -0
  185. package/dist/blocks/builtins/ImageBlock.d.ts +2 -0
  186. package/dist/blocks/builtins/ImageBlock.js +24 -0
  187. package/dist/blocks/builtins/ImageBlock.js.map +1 -0
  188. package/dist/blocks/builtins/Jobs.d.ts +8 -0
  189. package/dist/blocks/builtins/Jobs.js +65 -0
  190. package/dist/blocks/builtins/Jobs.js.map +1 -0
  191. package/dist/blocks/builtins/Layout.d.ts +3 -0
  192. package/dist/blocks/builtins/Layout.js +67 -0
  193. package/dist/blocks/builtins/Layout.js.map +1 -0
  194. package/dist/blocks/builtins/MapBlock.d.ts +2 -0
  195. package/dist/blocks/builtins/MapBlock.js +31 -0
  196. package/dist/blocks/builtins/MapBlock.js.map +1 -0
  197. package/dist/blocks/builtins/NewsListBlock.d.ts +2 -0
  198. package/dist/blocks/builtins/NewsListBlock.js +24 -0
  199. package/dist/blocks/builtins/NewsListBlock.js.map +1 -0
  200. package/dist/blocks/builtins/Newsletter.d.ts +2 -0
  201. package/dist/blocks/builtins/Newsletter.js +84 -0
  202. package/dist/blocks/builtins/Newsletter.js.map +1 -0
  203. package/dist/blocks/builtins/OpenNowBadge.d.ts +9 -0
  204. package/dist/blocks/builtins/OpenNowBadge.js +20 -0
  205. package/dist/blocks/builtins/OpenNowBadge.js.map +1 -0
  206. package/dist/blocks/builtins/OpeningHours.d.ts +2 -0
  207. package/dist/blocks/builtins/OpeningHours.js +47 -0
  208. package/dist/blocks/builtins/OpeningHours.js.map +1 -0
  209. package/dist/blocks/builtins/PdfBlock.d.ts +2 -0
  210. package/dist/blocks/builtins/PdfBlock.js +97 -0
  211. package/dist/blocks/builtins/PdfBlock.js.map +1 -0
  212. package/dist/blocks/builtins/Portfolio.d.ts +2 -0
  213. package/dist/blocks/builtins/Portfolio.js +94 -0
  214. package/dist/blocks/builtins/Portfolio.js.map +1 -0
  215. package/dist/blocks/builtins/Pricing.d.ts +6 -0
  216. package/dist/blocks/builtins/Pricing.js +77 -0
  217. package/dist/blocks/builtins/Pricing.js.map +1 -0
  218. package/dist/blocks/builtins/RichTextBlock.d.ts +2 -0
  219. package/dist/blocks/builtins/RichTextBlock.js +18 -0
  220. package/dist/blocks/builtins/RichTextBlock.js.map +1 -0
  221. package/dist/blocks/builtins/Search.d.ts +2 -0
  222. package/dist/blocks/builtins/Search.js +99 -0
  223. package/dist/blocks/builtins/Search.js.map +1 -0
  224. package/dist/blocks/builtins/Sections.d.ts +5 -0
  225. package/dist/blocks/builtins/Sections.js +183 -0
  226. package/dist/blocks/builtins/Sections.js.map +1 -0
  227. package/dist/blocks/builtins/Slider.d.ts +2 -0
  228. package/dist/blocks/builtins/Slider.js +131 -0
  229. package/dist/blocks/builtins/Slider.js.map +1 -0
  230. package/dist/blocks/builtins/Spacer.d.ts +2 -0
  231. package/dist/blocks/builtins/Spacer.js +19 -0
  232. package/dist/blocks/builtins/Spacer.js.map +1 -0
  233. package/dist/blocks/builtins/Team.d.ts +2 -0
  234. package/dist/blocks/builtins/Team.js +70 -0
  235. package/dist/blocks/builtins/Team.js.map +1 -0
  236. package/dist/blocks/builtins/Testimonials.d.ts +8 -0
  237. package/dist/blocks/builtins/Testimonials.js +82 -0
  238. package/dist/blocks/builtins/Testimonials.js.map +1 -0
  239. package/dist/blocks/builtins/Video.d.ts +9 -0
  240. package/dist/blocks/builtins/Video.js +77 -0
  241. package/dist/blocks/builtins/Video.js.map +1 -0
  242. package/dist/blocks/builtins/WhatsappChat.d.ts +8 -0
  243. package/dist/blocks/builtins/WhatsappChat.js +51 -0
  244. package/dist/blocks/builtins/WhatsappChat.js.map +1 -0
  245. package/dist/blocks/builtins/Widgets.d.ts +13 -0
  246. package/dist/blocks/builtins/Widgets.js +308 -0
  247. package/dist/blocks/builtins/Widgets.js.map +1 -0
  248. package/dist/blocks/builtins/consentEmbed.d.ts +17 -0
  249. package/dist/blocks/builtins/consentEmbed.js +31 -0
  250. package/dist/blocks/builtins/consentEmbed.js.map +1 -0
  251. package/dist/blocks/builtins/index.d.ts +46 -0
  252. package/dist/blocks/builtins/index.js +121 -0
  253. package/dist/blocks/builtins/index.js.map +1 -0
  254. package/dist/blocks/builtins/lib/bookingUrl.d.ts +8 -0
  255. package/dist/blocks/builtins/lib/bookingUrl.js +50 -0
  256. package/dist/blocks/builtins/lib/bookingUrl.js.map +1 -0
  257. package/dist/blocks/builtins/lib/fileIcon.d.ts +2 -0
  258. package/dist/blocks/builtins/lib/fileIcon.js +45 -0
  259. package/dist/blocks/builtins/lib/fileIcon.js.map +1 -0
  260. package/dist/blocks/builtins/lib/ics.d.ts +17 -0
  261. package/dist/blocks/builtins/lib/ics.js +50 -0
  262. package/dist/blocks/builtins/lib/ics.js.map +1 -0
  263. package/dist/blocks/builtins/lib/openingHours.d.ts +20 -0
  264. package/dist/blocks/builtins/lib/openingHours.js +79 -0
  265. package/dist/blocks/builtins/lib/openingHours.js.map +1 -0
  266. package/dist/blocks/builtins/lib/searchRank.d.ts +22 -0
  267. package/dist/blocks/builtins/lib/searchRank.js +45 -0
  268. package/dist/blocks/builtins/lib/searchRank.js.map +1 -0
  269. package/dist/blocks/builtins/lib/submitForm.d.ts +6 -0
  270. package/dist/blocks/builtins/lib/submitForm.js +14 -0
  271. package/dist/blocks/builtins/lib/submitForm.js.map +1 -0
  272. package/dist/blocks/context.d.ts +8 -0
  273. package/dist/blocks/context.js +20 -0
  274. package/dist/blocks/context.js.map +1 -0
  275. package/dist/blocks/index.d.ts +9 -0
  276. package/dist/blocks/index.js +21 -0
  277. package/dist/blocks/index.js.map +1 -0
  278. package/dist/blocks/registry.d.ts +75 -0
  279. package/dist/blocks/registry.js +71 -0
  280. package/dist/blocks/registry.js.map +1 -0
  281. package/dist/blocks/ui/index.d.ts +35 -0
  282. package/dist/blocks/ui/index.js +48 -0
  283. package/dist/blocks/ui/index.js.map +1 -0
  284. package/dist/components/EditBar.d.ts +2 -0
  285. package/dist/components/EditBar.js +20 -0
  286. package/dist/components/EditBar.js.map +1 -0
  287. package/dist/components/EditableImage.d.ts +18 -0
  288. package/dist/components/EditableImage.js +62 -0
  289. package/dist/components/EditableImage.js.map +1 -0
  290. package/dist/components/EditableRichText.d.ts +14 -0
  291. package/dist/components/EditableRichText.js +26 -0
  292. package/dist/components/EditableRichText.js.map +1 -0
  293. package/dist/components/EditableText.d.ts +21 -0
  294. package/dist/components/EditableText.js +25 -0
  295. package/dist/components/EditableText.js.map +1 -0
  296. package/dist/components/News.d.ts +38 -0
  297. package/dist/components/News.js +128 -0
  298. package/dist/components/News.js.map +1 -0
  299. package/dist/components/PageView.d.ts +8 -0
  300. package/dist/components/PageView.js +28 -0
  301. package/dist/components/PageView.js.map +1 -0
  302. package/dist/components/ResponsiveImage.d.ts +16 -0
  303. package/dist/components/ResponsiveImage.js +39 -0
  304. package/dist/components/ResponsiveImage.js.map +1 -0
  305. package/dist/components/site/SiteFooter.d.ts +12 -0
  306. package/dist/components/site/SiteFooter.js +34 -0
  307. package/dist/components/site/SiteFooter.js.map +1 -0
  308. package/dist/config.d.ts +8 -0
  309. package/dist/config.js +17 -0
  310. package/dist/config.js.map +1 -0
  311. package/dist/content/ContentProvider.d.ts +23 -0
  312. package/dist/content/ContentProvider.js +86 -0
  313. package/dist/content/ContentProvider.js.map +1 -0
  314. package/dist/content/types.d.ts +41 -0
  315. package/dist/content/types.js +1 -0
  316. package/dist/content/types.js.map +1 -0
  317. package/dist/demo/DemoStudio.d.ts +7 -0
  318. package/dist/demo/DemoStudio.js +54 -0
  319. package/dist/demo/DemoStudio.js.map +1 -0
  320. package/dist/demo/demoStore.d.ts +26 -0
  321. package/dist/demo/demoStore.js +115 -0
  322. package/dist/demo/demoStore.js.map +1 -0
  323. package/dist/editor/EditorProvider.d.ts +12 -0
  324. package/dist/editor/EditorProvider.js +22 -0
  325. package/dist/editor/EditorProvider.js.map +1 -0
  326. package/dist/firebase/admin.d.ts +7 -0
  327. package/dist/firebase/admin.js +31 -0
  328. package/dist/firebase/admin.js.map +1 -0
  329. package/dist/firebase/appcheck.d.ts +6 -0
  330. package/dist/firebase/appcheck.js +23 -0
  331. package/dist/firebase/appcheck.js.map +1 -0
  332. package/dist/firebase/client.d.ts +9 -0
  333. package/dist/firebase/client.js +44 -0
  334. package/dist/firebase/client.js.map +1 -0
  335. package/dist/firebase/region.d.ts +5 -0
  336. package/dist/firebase/region.js +7 -0
  337. package/dist/firebase/region.js.map +1 -0
  338. package/dist/index.d.ts +54 -0
  339. package/dist/index.js +172 -0
  340. package/dist/index.js.map +1 -0
  341. package/dist/layers.css +13 -0
  342. package/dist/lock/DemoLock.d.ts +5 -0
  343. package/dist/lock/DemoLock.js +35 -0
  344. package/dist/lock/DemoLock.js.map +1 -0
  345. package/dist/media/ImageContext.d.ts +41 -0
  346. package/dist/media/ImageContext.js +74 -0
  347. package/dist/media/ImageContext.js.map +1 -0
  348. package/dist/modules/builtins.d.ts +46 -0
  349. package/dist/modules/builtins.js +462 -0
  350. package/dist/modules/builtins.js.map +1 -0
  351. package/dist/modules/consent/ConsentBanner.d.ts +42 -0
  352. package/dist/modules/consent/ConsentBanner.js +119 -0
  353. package/dist/modules/consent/ConsentBanner.js.map +1 -0
  354. package/dist/modules/consent/useConsent.d.ts +28 -0
  355. package/dist/modules/consent/useConsent.js +52 -0
  356. package/dist/modules/consent/useConsent.js.map +1 -0
  357. package/dist/modules/context.d.ts +20 -0
  358. package/dist/modules/context.js +31 -0
  359. package/dist/modules/context.js.map +1 -0
  360. package/dist/modules/contract.d.ts +9 -0
  361. package/dist/modules/contract.js +38 -0
  362. package/dist/modules/contract.js.map +1 -0
  363. package/dist/modules/defineModule.d.ts +11 -0
  364. package/dist/modules/defineModule.js +7 -0
  365. package/dist/modules/defineModule.js.map +1 -0
  366. package/dist/modules/index.d.ts +13 -0
  367. package/dist/modules/index.js +44 -0
  368. package/dist/modules/index.js.map +1 -0
  369. package/dist/modules/overrides.d.ts +17 -0
  370. package/dist/modules/overrides.js +25 -0
  371. package/dist/modules/overrides.js.map +1 -0
  372. package/dist/modules/registry.d.ts +40 -0
  373. package/dist/modules/registry.js +79 -0
  374. package/dist/modules/registry.js.map +1 -0
  375. package/dist/modules/types.d.ts +66 -0
  376. package/dist/modules/types.js +1 -0
  377. package/dist/modules/types.js.map +1 -0
  378. package/dist/patterns/builtins.d.ts +31 -0
  379. package/dist/patterns/builtins.js +415 -0
  380. package/dist/patterns/builtins.js.map +1 -0
  381. package/dist/patterns/index.d.ts +6 -0
  382. package/dist/patterns/index.js +9 -0
  383. package/dist/patterns/index.js.map +1 -0
  384. package/dist/patterns/patterns.d.ts +28 -0
  385. package/dist/patterns/patterns.js +53 -0
  386. package/dist/patterns/patterns.js.map +1 -0
  387. package/dist/render/PageRenderer.d.ts +13 -0
  388. package/dist/render/PageRenderer.js +14 -0
  389. package/dist/render/PageRenderer.js.map +1 -0
  390. package/dist/render/PublishedPage.d.ts +13 -0
  391. package/dist/render/PublishedPage.js +16 -0
  392. package/dist/render/PublishedPage.js.map +1 -0
  393. package/dist/schema/blocks.d.ts +15052 -0
  394. package/dist/schema/blocks.js +794 -0
  395. package/dist/schema/blocks.js.map +1 -0
  396. package/dist/schema/forms.d.ts +111 -0
  397. package/dist/schema/forms.js +47 -0
  398. package/dist/schema/forms.js.map +1 -0
  399. package/dist/schema/index.d.ts +11 -0
  400. package/dist/schema/index.js +16 -0
  401. package/dist/schema/index.js.map +1 -0
  402. package/dist/schema/pages.d.ts +674 -0
  403. package/dist/schema/pages.js +37 -0
  404. package/dist/schema/pages.js.map +1 -0
  405. package/dist/schema/seo.d.ts +29 -0
  406. package/dist/schema/seo.js +17 -0
  407. package/dist/schema/seo.js.map +1 -0
  408. package/dist/schema/settings.d.ts +1126 -0
  409. package/dist/schema/settings.js +128 -0
  410. package/dist/schema/settings.js.map +1 -0
  411. package/dist/schema/siteConfig.d.ts +722 -0
  412. package/dist/schema/siteConfig.js +39 -0
  413. package/dist/schema/siteConfig.js.map +1 -0
  414. package/dist/server/env.d.ts +10 -0
  415. package/dist/server/env.js +36 -0
  416. package/dist/server/env.js.map +1 -0
  417. package/dist/server/index.d.ts +10 -0
  418. package/dist/server/index.js +51 -0
  419. package/dist/server/index.js.map +1 -0
  420. package/dist/server/pages.d.ts +15 -0
  421. package/dist/server/pages.js +99 -0
  422. package/dist/server/pages.js.map +1 -0
  423. package/dist/server/sanitize.d.ts +2 -0
  424. package/dist/server/sanitize.js +55 -0
  425. package/dist/server/sanitize.js.map +1 -0
  426. package/dist/server/seo.d.ts +116 -0
  427. package/dist/server/seo.js +179 -0
  428. package/dist/server/seo.js.map +1 -0
  429. package/dist/settings/useSiteSettings.d.ts +25 -0
  430. package/dist/settings/useSiteSettings.js +68 -0
  431. package/dist/settings/useSiteSettings.js.map +1 -0
  432. package/dist/styles.css +2495 -0
  433. package/dist/theme/presets.d.ts +12 -0
  434. package/dist/theme/presets.js +147 -0
  435. package/dist/theme/presets.js.map +1 -0
  436. package/package.json +112 -0
@@ -0,0 +1,794 @@
1
+ import { z } from "zod";
2
+ const BlockStyleSchema = z.object({
3
+ paddingY: z.enum(["none", "sm", "md", "lg", "xl"]).optional(),
4
+ background: z.string().max(40).optional(),
5
+ width: z.enum(["container", "full", "narrow"]).optional(),
6
+ align: z.enum(["left", "center", "right"]).optional(),
7
+ anchorId: z.string().max(60).optional(),
8
+ /** Subtiele binnenkomst-animatie bij scrollen (progressief + respecteert reduced-motion). */
9
+ animate: z.enum(["fade", "up"]).optional()
10
+ });
11
+ const blockBase = {
12
+ _key: z.string().min(1).max(64),
13
+ /** Optionele gedeelde blokstijl (ruimte/achtergrond/breedte/uitlijning/anker). */
14
+ _style: BlockStyleSchema.optional()
15
+ };
16
+ const BlockBaseSchema = z.object({ ...blockBase, _type: z.string().min(1).max(60) }).passthrough();
17
+ const ref = z.string().max(256);
18
+ const richText = z.string().max(1e5);
19
+ const shortText = z.string().max(2e3);
20
+ const ButtonSchema = z.object({
21
+ label: shortText.default(""),
22
+ href: z.string().max(2e3).default("#"),
23
+ variant: z.enum(["primary", "secondary", "outline"]).default("primary")
24
+ });
25
+ const HeroBlockSchema = z.object({
26
+ ...blockBase,
27
+ _type: z.literal("hero"),
28
+ /** Kicker/eyebrow: klein regeltje bóven de titel (bv. "Hoveniers sinds 2001"). */
29
+ eyebrow: shortText.optional().describe("Regeltje boven de titel"),
30
+ title: shortText.default(""),
31
+ subtitle: shortText.optional(),
32
+ imageId: ref.optional(),
33
+ imageUrl: z.string().max(2e3).optional(),
34
+ /** Videoachtergrond (mp4/webm); overschrijft de afbeelding als gezet. */
35
+ videoUrl: z.string().max(2e3).optional(),
36
+ align: z.enum(["left", "center"]).default("left"),
37
+ /** Verticale uitlijning van de inhoud binnen de hero. */
38
+ vAlign: z.enum(["top", "center", "bottom"]).default("center"),
39
+ /** Hoogte: sm/md/lg of volledige viewport. */
40
+ minHeight: z.enum(["auto", "sm", "md", "lg", "full"]).default("auto"),
41
+ /** Donkere/gekleurde overlay over het beeld voor leesbaar contrast. */
42
+ overlayColor: z.string().max(40).optional(),
43
+ overlayOpacity: z.number().min(0).max(100).default(0),
44
+ /** Gradient-overlay (donker onderaan → transparant boven) voor leesbare tekst op foto's. */
45
+ overlayGradient: z.boolean().default(false).describe("Gradient-overlay"),
46
+ /** Ingebouwde call-to-action-knoppen. */
47
+ buttons: z.array(ButtonSchema).max(3).default([])
48
+ });
49
+ const RichTextBlockSchema = z.object({
50
+ ...blockBase,
51
+ _type: z.literal("richText"),
52
+ html: richText.default("")
53
+ });
54
+ const ImageBlockSchema = z.object({
55
+ ...blockBase,
56
+ _type: z.literal("image"),
57
+ mediaId: ref.optional(),
58
+ url: z.string().max(2e3).optional(),
59
+ alt: shortText.default(""),
60
+ caption: shortText.optional(),
61
+ /** Maak de afbeelding klikbaar. */
62
+ href: z.string().max(2e3).optional(),
63
+ /** Uitlijning binnen de kolom. */
64
+ align: z.enum(["left", "center", "right"]).default("center"),
65
+ /** Forceer een beeldverhouding (anders natuurlijk). */
66
+ aspectRatio: z.enum(["auto", "16/9", "4/3", "1/1", "3/2"]).default("auto")
67
+ });
68
+ const GalleryBlockSchema = z.object({
69
+ ...blockBase,
70
+ _type: z.literal("gallery"),
71
+ items: z.array(
72
+ z.object({
73
+ mediaId: ref.optional(),
74
+ url: z.string().max(2e3).optional(),
75
+ alt: shortText.default(""),
76
+ // Update-veilig toegevoegd (Galerij+): optioneel bijschrift onder de foto / in de lightbox.
77
+ caption: shortText.optional(),
78
+ /** Categorie/label voor de filterbalk (bv. "tuinen", "bestrating"). */
79
+ tag: shortText.optional()
80
+ })
81
+ ).max(60).default([]),
82
+ /** Filterbalk op item-tags tonen (alleen zichtbaar als er tags zijn). */
83
+ showFilter: z.boolean().default(false).describe("Filterbalk op tags"),
84
+ /** Aantal kolommen in het grid (0 = volg de module-instelling). */
85
+ columns: z.number().int().min(0).max(6).default(0),
86
+ /** Klikken opent een lightbox (0 = volg de module-instelling). */
87
+ lightbox: z.enum(["inherit", "on", "off"]).default("inherit"),
88
+ /** Beeldverhouding van de thumbnails. "auto" behoudt de eigen verhouding. */
89
+ aspectRatio: z.enum(["1/1", "4/3", "3/2", "16/9", "auto"]).default("1/1")
90
+ });
91
+ const CtaBlockSchema = z.object({
92
+ ...blockBase,
93
+ _type: z.literal("cta"),
94
+ title: shortText.default(""),
95
+ text: shortText.optional(),
96
+ buttonLabel: shortText.default("Neem contact op"),
97
+ buttonHref: z.string().max(2e3).default("#contact"),
98
+ /** Stijl van de hoofdknop. */
99
+ buttonVariant: z.enum(["primary", "secondary", "outline"]).default("primary"),
100
+ /** Optionele tweede knop. */
101
+ button2Label: shortText.optional(),
102
+ button2Href: z.string().max(2e3).optional(),
103
+ /** Achtergrondkleur (CSS-waarde); leeg = thema-default. */
104
+ backgroundColor: z.string().max(40).optional(),
105
+ /** Toon de CTA als vaste balk onderaan het scherm (sticky). */
106
+ sticky: z.boolean().default(false)
107
+ });
108
+ const FaqBlockSchema = z.object({
109
+ ...blockBase,
110
+ _type: z.literal("faq"),
111
+ heading: shortText.optional(),
112
+ items: z.array(z.object({
113
+ q: shortText.default(""),
114
+ a: shortText.default(""),
115
+ /** Optioneel rich-text-antwoord (HTML, met links/lijsten); wint van `a` als gezet. */
116
+ aHtml: richText.optional()
117
+ })).max(50).default([]),
118
+ /** FAQ+: toon een zoekveld dat de vragen filtert (handig bij lange lijsten). */
119
+ searchable: z.boolean().default(false),
120
+ /** FAQ+: voeg FAQPage-JSON-LD toe voor rich results in Google. */
121
+ jsonLd: z.boolean().default(false),
122
+ /** Of items standaard open staan. Default dicht (gebruikelijke FAQ-UX). */
123
+ defaultOpen: z.boolean().default(false)
124
+ });
125
+ const OpeningHoursBlockSchema = z.object({
126
+ ...blockBase,
127
+ _type: z.literal("openingHours"),
128
+ heading: shortText.optional(),
129
+ rows: z.array(z.object({ day: shortText.default(""), hours: shortText.default("") })).max(14).default([]),
130
+ /** Live "Nu geopend/gesloten"-badge (werkt bij herkenbare tijden zoals "09:00 – 17:00"). */
131
+ showStatus: z.boolean().default(false).describe("'Nu geopend'-badge tonen"),
132
+ /** OpeningHoursSpecification-JSON-LD voor zoekmachines. */
133
+ jsonLd: z.boolean().default(false).describe("JSON-LD (openingstijden)")
134
+ });
135
+ const PricingBlockSchema = z.object({
136
+ ...blockBase,
137
+ _type: z.literal("pricing"),
138
+ heading: shortText.optional(),
139
+ items: z.array(
140
+ z.object({
141
+ label: shortText.default(""),
142
+ price: shortText.default(""),
143
+ detail: shortText.optional(),
144
+ /** Inbegrepen features (lijst met vinkjes). */
145
+ features: z.array(shortText).max(20).optional(),
146
+ /** Per-tier knop. */
147
+ ctaLabel: shortText.optional(),
148
+ ctaHref: z.string().max(2e3).optional(),
149
+ /** Markeer als uitgelichte tier. */
150
+ highlighted: z.boolean().default(false),
151
+ /** bv. "/maand". */
152
+ billingPeriod: shortText.optional()
153
+ })
154
+ ).max(30).default([]),
155
+ note: shortText.optional(),
156
+ /** ISO-valutacode voor de JSON-LD (bv. "EUR", "USD"). */
157
+ currency: z.string().max(8).default("EUR").describe("Valuta (ISO-code)"),
158
+ /** Voeg Product/Offer-JSON-LD toe. */
159
+ jsonLd: z.boolean().default(false)
160
+ });
161
+ const NewsListBlockSchema = z.object({
162
+ ...blockBase,
163
+ _type: z.literal("newsList"),
164
+ heading: shortText.optional(),
165
+ limit: z.number().int().min(1).max(50).default(6),
166
+ /** Toon eerst dit aantal en de rest via "Meer laden" (0 = alles ineens, huidig gedrag). */
167
+ pageSize: z.number().int().min(0).max(24).default(0).describe("Per pagina (0 = alles)"),
168
+ basePath: z.string().max(200).default("/nieuws")
169
+ });
170
+ const FormBlockSchema = z.object({
171
+ ...blockBase,
172
+ _type: z.literal("form"),
173
+ formId: ref,
174
+ heading: shortText.optional()
175
+ });
176
+ const SpacerBlockSchema = z.object({
177
+ ...blockBase,
178
+ _type: z.literal("spacer"),
179
+ size: z.enum(["sm", "md", "lg", "xl"]).default("md")
180
+ });
181
+ const TestimonialsBlockSchema = z.object({
182
+ ...blockBase,
183
+ _type: z.literal("testimonials"),
184
+ heading: shortText.optional(),
185
+ items: z.array(
186
+ z.object({
187
+ quote: shortText.default(""),
188
+ author: shortText.default(""),
189
+ role: shortText.optional(),
190
+ rating: z.number().int().min(1).max(5).optional(),
191
+ avatarUrl: z.string().max(2e3).optional()
192
+ })
193
+ ).max(40).default([]),
194
+ /** Weergave: lijst (kaarten) of grid. */
195
+ layout: z.enum(["list", "grid"]).default("grid"),
196
+ /** Voeg Review-JSON-LD toe (rich results). */
197
+ jsonLd: z.boolean().default(false)
198
+ });
199
+ const TeamBlockSchema = z.object({
200
+ ...blockBase,
201
+ _type: z.literal("team"),
202
+ heading: shortText.optional(),
203
+ members: z.array(
204
+ z.object({
205
+ name: shortText.default(""),
206
+ role: shortText.optional(),
207
+ photoUrl: z.string().max(2e3).optional(),
208
+ bio: shortText.optional(),
209
+ email: z.string().max(320).optional(),
210
+ phone: shortText.optional(),
211
+ social: z.array(z.object({ platform: shortText, href: z.string().max(2e3) })).max(6).optional(),
212
+ /** Afdeling/team voor groepering (bv. "Keuken", "Bediening"). */
213
+ department: shortText.optional()
214
+ })
215
+ ).max(60).default([]),
216
+ /** Voeg Person-JSON-LD per lid toe. */
217
+ jsonLd: z.boolean().default(false),
218
+ /** Groepeer leden per afdeling (kopje per afdeling). */
219
+ groupByDepartment: z.boolean().default(false).describe("Groeperen per afdeling")
220
+ });
221
+ const AgendaBlockSchema = z.object({
222
+ ...blockBase,
223
+ _type: z.literal("agenda"),
224
+ heading: shortText.optional(),
225
+ events: z.array(
226
+ z.object({
227
+ title: shortText.default(""),
228
+ /** ISO-datum of -datetime, bv. "2026-07-01" of "2026-07-01T19:30". */
229
+ start: z.string().max(40).default(""),
230
+ end: z.string().max(40).optional(),
231
+ location: shortText.optional(),
232
+ description: shortText.optional(),
233
+ url: z.string().max(2e3).optional()
234
+ })
235
+ ).max(100).default([]),
236
+ /** Verberg events waarvan de startdatum in het verleden ligt. */
237
+ hidePast: z.boolean().default(true),
238
+ /** Voeg Event-JSON-LD toe. */
239
+ jsonLd: z.boolean().default(false)
240
+ });
241
+ const SearchBlockSchema = z.object({
242
+ ...blockBase,
243
+ _type: z.literal("search"),
244
+ placeholder: shortText.default("Zoeken\u2026"),
245
+ /** Ook nieuwsartikelen doorzoeken (naast pagina's). */
246
+ includeNews: z.boolean().default(true)
247
+ });
248
+ const VideoBlockSchema = z.object({
249
+ ...blockBase,
250
+ _type: z.literal("video"),
251
+ provider: z.enum(["youtube", "vimeo", "file"]).default("youtube"),
252
+ /** YouTube/Vimeo-id of -URL, of een mp4/webm-URL bij "file". */
253
+ src: z.string().max(2e3).default(""),
254
+ title: shortText.optional(),
255
+ caption: shortText.optional(),
256
+ /** Voorvertoningsbeeld (bij provider "file" als poster; met facade ook voor embeds). */
257
+ posterUrl: z.string().max(2e3).optional().describe("Voorvertoningsbeeld"),
258
+ /** Click-to-play: toon eerst een thumbnail met play-knop; de speler laadt pas na een klik
259
+ * (sneller laden, minder third-party requests). */
260
+ facade: z.boolean().default(false).describe("Click-to-play (laad speler pas na klik)"),
261
+ /** Toon pas na cookie-consent (categorie "marketing"). */
262
+ consentGated: z.boolean().default(true)
263
+ });
264
+ const FeatureBlockSchema = z.object({
265
+ ...blockBase,
266
+ _type: z.literal("feature"),
267
+ heading: shortText.optional(),
268
+ /** Rich text (veldnaam "html" zodat het server-side gesanitized wordt bij publiceren). */
269
+ html: richText.default(""),
270
+ imageUrl: z.string().max(2e3).optional(),
271
+ imagePosition: z.enum(["left", "right"]).default("left"),
272
+ buttonLabel: shortText.optional(),
273
+ buttonHref: z.string().max(2e3).optional()
274
+ });
275
+ const BannerBlockSchema = z.object({
276
+ ...blockBase,
277
+ _type: z.literal("banner"),
278
+ text: shortText.default(""),
279
+ href: z.string().max(2e3).optional(),
280
+ linkLabel: shortText.optional(),
281
+ tone: z.enum(["info", "success", "warning"]).default("info"),
282
+ dismissible: z.boolean().default(true),
283
+ /** Wijzig deze waarde (bv. "2") als de tekst verandert — wie de oude balk wegklikte ziet de nieuwe weer. */
284
+ dismissVersion: shortText.optional().describe("Versie (wijzig om balk opnieuw te tonen)")
285
+ });
286
+ const CountersBlockSchema = z.object({
287
+ ...blockBase,
288
+ _type: z.literal("counters"),
289
+ heading: shortText.optional(),
290
+ items: z.array(z.object({ value: shortText.default(""), label: shortText.default(""), prefix: shortText.optional(), suffix: shortText.optional() })).max(8).default([]),
291
+ /** Tel omhoog wanneer het blok in beeld scrolt (respecteert prefers-reduced-motion). */
292
+ animate: z.boolean().default(true).describe("Tel-animatie")
293
+ });
294
+ const LogosBlockSchema = z.object({
295
+ ...blockBase,
296
+ _type: z.literal("logos"),
297
+ heading: shortText.optional(),
298
+ items: z.array(z.object({ src: z.string().max(2e3).default(""), alt: shortText.default(""), href: z.string().max(2e3).optional() })).max(40).default([]),
299
+ grayscale: z.boolean().default(true),
300
+ /** Doorlopende band (marquee) i.p.v. statische rij; pauzeert bij hover, statisch bij reduced-motion. */
301
+ marquee: z.boolean().default(false).describe("Doorlopende band")
302
+ });
303
+ const TimelineBlockSchema = z.object({
304
+ ...blockBase,
305
+ _type: z.literal("timeline"),
306
+ heading: shortText.optional(),
307
+ items: z.array(z.object({ title: shortText.default(""), date: shortText.optional(), text: shortText.optional(), icon: shortText.optional() })).max(40).default([]),
308
+ /** Alternerende links/rechts-layout op bredere schermen. */
309
+ alternate: z.boolean().default(false).describe("Alternerende layout")
310
+ });
311
+ const ContactBlockSchema = z.object({
312
+ ...blockBase,
313
+ _type: z.literal("contact"),
314
+ heading: shortText.optional(),
315
+ address: shortText.optional(),
316
+ phone: shortText.optional(),
317
+ email: z.string().max(320).optional(),
318
+ hours: shortText.optional(),
319
+ /** Coördinaten voor de JSON-LD (Google toont het bedrijf dan op de juiste plek). */
320
+ geo: z.object({ lat: z.number().min(-90).max(90), lng: z.number().min(-180).max(180) }).optional(),
321
+ /** Voeg ContactPoint/LocalBusiness-JSON-LD toe. */
322
+ jsonLd: z.boolean().default(false)
323
+ });
324
+ const MapBlockSchema = z.object({
325
+ ...blockBase,
326
+ _type: z.literal("map"),
327
+ provider: z.enum(["osm", "google"]).default("osm"),
328
+ /** Adres/zoekterm (osm) of volledige embed-URL (google). */
329
+ query: shortText.default(""),
330
+ zoom: z.number().int().min(1).max(20).default(14),
331
+ height: z.number().int().min(150).max(800).default(360),
332
+ consentGated: z.boolean().default(true)
333
+ });
334
+ const SocialBlockSchema = z.object({
335
+ ...blockBase,
336
+ _type: z.literal("social"),
337
+ heading: shortText.optional(),
338
+ items: z.array(z.object({ platform: shortText.default(""), href: z.string().max(2e3).default("") })).max(12).default([])
339
+ });
340
+ const NewsletterBlockSchema = z.object({
341
+ ...blockBase,
342
+ _type: z.literal("newsletter"),
343
+ heading: shortText.optional(),
344
+ text: shortText.optional(),
345
+ buttonLabel: shortText.default("Aanmelden"),
346
+ /** Waar het e-mailadres heen gaat (extern aanmeld-endpoint, POST email). Leeg = XiCMS-formulier. */
347
+ actionUrl: z.string().max(2e3).optional(),
348
+ /** Formulier-id voor opslag via XiCMS (als actionUrl leeg is). */
349
+ formId: ref.optional(),
350
+ /** AVG: indien gezet verschijnt een verplichte akkoord-checkbox met deze tekst. */
351
+ consentText: shortText.optional().describe("AVG-akkoordtekst (leeg = geen checkbox)")
352
+ });
353
+ const BookingProviderSchema = z.enum([
354
+ "custom",
355
+ "calendly",
356
+ "cal",
357
+ "formitable",
358
+ "resengo",
359
+ "thefork",
360
+ "treatwell",
361
+ "salonized",
362
+ "tablebooker",
363
+ "bookingkit"
364
+ ]);
365
+ const BookingBlockSchema = z.object({
366
+ ...blockBase,
367
+ _type: z.literal("booking"),
368
+ heading: shortText.optional(),
369
+ /** Welk reserveersysteem; bepaalt de embed-helper en uitleg in de editor. */
370
+ provider: BookingProviderSchema.default("custom"),
371
+ /** Embed-URL of account/slug bij een preset-provider (bv. Calendly-link, Formitable-restaurant-id). */
372
+ embedUrl: z.string().max(2e3).default(""),
373
+ height: z.number().int().min(300).max(1200).default(630),
374
+ consentGated: z.boolean().default(true)
375
+ });
376
+ const ButtonsBlockSchema = z.object({
377
+ ...blockBase,
378
+ _type: z.literal("buttons"),
379
+ align: z.enum(["left", "center", "right"]).default("left"),
380
+ items: z.array(z.object({ label: shortText.default(""), href: z.string().max(2e3).default("#"), variant: z.enum(["primary", "secondary", "outline"]).default("primary") })).max(6).default([])
381
+ });
382
+ const QuoteBlockSchema = z.object({
383
+ ...blockBase,
384
+ _type: z.literal("quote"),
385
+ text: shortText.default(""),
386
+ author: shortText.optional(),
387
+ role: shortText.optional()
388
+ });
389
+ const DividerBlockSchema = z.object({
390
+ ...blockBase,
391
+ _type: z.literal("divider"),
392
+ variant: z.enum(["line", "dots", "space"]).default("line"),
393
+ spacing: z.enum(["sm", "md", "lg"]).default("md")
394
+ });
395
+ const AccordionBlockSchema = z.object({
396
+ ...blockBase,
397
+ _type: z.literal("accordion"),
398
+ heading: shortText.optional(),
399
+ items: z.array(z.object({
400
+ title: shortText.default(""),
401
+ body: shortText.default(""),
402
+ /** Optioneel rich-text-paneel (HTML); wint van `body` als gezet. */
403
+ bodyHtml: richText.optional()
404
+ })).max(50).default([]),
405
+ /** Sta toe dat meerdere panelen tegelijk open staan. */
406
+ multiple: z.boolean().default(false)
407
+ });
408
+ const EmbedBlockSchema = z.object({
409
+ ...blockBase,
410
+ _type: z.literal("embed"),
411
+ url: z.string().max(2e3).default(""),
412
+ title: shortText.optional(),
413
+ height: z.number().int().min(150).max(1200).default(420),
414
+ /** Beeldverhouding; "fixed" gebruikt de vaste hoogte (huidig gedrag). */
415
+ aspectRatio: z.enum(["fixed", "16/9", "4/3", "1/1"]).default("fixed").describe("Beeldverhouding"),
416
+ /** Toon pas na cookie-toestemming (categorie "marketing"). */
417
+ consentGated: z.boolean().default(true)
418
+ });
419
+ const ColumnsBlockSchema = z.object({
420
+ ...blockBase,
421
+ _type: z.literal("columns"),
422
+ columns: z.array(z.object({ blocks: z.array(BlockBaseSchema).max(50).default([]) })).min(1).max(4).default([])
423
+ });
424
+ const WithSidebarBlockSchema = z.object({
425
+ ...blockBase,
426
+ _type: z.literal("withSidebar"),
427
+ main: z.array(BlockBaseSchema).max(50).default([]),
428
+ aside: z.array(BlockBaseSchema).max(30).default([]),
429
+ side: z.enum(["left", "right"]).default("right"),
430
+ sidebarWidth: z.enum(["sm", "md", "lg"]).default("md"),
431
+ sticky: z.boolean().default(true)
432
+ });
433
+ const TabsBlockSchema = z.object({
434
+ ...blockBase,
435
+ _type: z.literal("tabs"),
436
+ tabs: z.array(z.object({ label: shortText.default("Tab"), blocks: z.array(BlockBaseSchema).max(30).default([]) })).min(1).max(10).default([])
437
+ });
438
+ const CardsBlockSchema = z.object({
439
+ ...blockBase,
440
+ _type: z.literal("cards"),
441
+ heading: shortText.optional(),
442
+ intro: shortText.optional(),
443
+ columns: z.number().int().min(1).max(4).default(3),
444
+ /** "cover" = beeld edge-to-edge bovenaan de kaart (postkaart-stijl); "inset" = ingekaderd. */
445
+ imageStyle: z.enum(["inset", "cover"]).default("inset"),
446
+ items: z.array(
447
+ z.object({
448
+ icon: shortText.optional(),
449
+ imageUrl: z.string().max(2e3).optional(),
450
+ title: shortText.default(""),
451
+ text: shortText.optional(),
452
+ href: z.string().max(2e3).optional(),
453
+ linkLabel: shortText.optional(),
454
+ /** Uitgelichte kaart (accentrand + subtiele schaal). */
455
+ featured: z.boolean().default(false)
456
+ })
457
+ ).max(24).default([])
458
+ });
459
+ const DownloadsBlockSchema = z.object({
460
+ ...blockBase,
461
+ _type: z.literal("downloads"),
462
+ heading: shortText.optional(),
463
+ items: z.array(z.object({ label: shortText.default(""), href: z.string().max(2e3).default(""), meta: shortText.optional() })).max(60).default([])
464
+ });
465
+ const PdfBlockSchema = z.object({
466
+ ...blockBase,
467
+ _type: z.literal("pdf"),
468
+ heading: shortText.optional(),
469
+ /** Eén of meer PDF's; bij meerdere verschijnen tabs (label) om te wisselen. */
470
+ documents: z.array(z.object({ label: shortText.default(""), url: z.string().max(2e3).default("") })).max(12).default([]),
471
+ height: z.number().int().min(300).max(1600).default(820),
472
+ /** Toon een "Open/Download"-link onder de viewer. */
473
+ showDownload: z.boolean().default(true)
474
+ });
475
+ const CountdownBlockSchema = z.object({
476
+ ...blockBase,
477
+ _type: z.literal("countdown"),
478
+ heading: shortText.optional(),
479
+ /** ISO-datetime, bv. "2026-12-31T23:59". */
480
+ target: z.string().max(40).default(""),
481
+ expiredText: shortText.default("Het is zover!"),
482
+ showLabels: z.boolean().default(true),
483
+ /** Wat er gebeurt als de teller afloopt: melding tonen of het hele blok verbergen. */
484
+ onExpire: z.enum(["message", "hide"]).default("message").describe("Na afloop")
485
+ });
486
+ const SliderBlockSchema = z.object({
487
+ ...blockBase,
488
+ _type: z.literal("slider"),
489
+ slides: z.array(
490
+ z.object({
491
+ imageUrl: z.string().max(2e3).optional(),
492
+ mediaId: ref.optional(),
493
+ alt: shortText.default(""),
494
+ caption: shortText.optional(),
495
+ href: z.string().max(2e3).optional()
496
+ })
497
+ ).max(20).default([]),
498
+ autoplay: z.boolean().default(false),
499
+ /** Interval in seconden bij autoplay. */
500
+ interval: z.number().int().min(2).max(20).default(5),
501
+ showDots: z.boolean().default(true),
502
+ showArrows: z.boolean().default(true),
503
+ aspectRatio: z.enum(["16/9", "4/3", "3/2", "1/1", "21/9"]).default("16/9")
504
+ });
505
+ const WhatsappChatBlockSchema = z.object({
506
+ ...blockBase,
507
+ _type: z.literal("whatsappChat"),
508
+ /** Telefoonnummer, internationaal (bv. "31612345678" of "+31 6 12345678"). */
509
+ phone: shortText.default("").describe("Telefoonnummer (internationaal)"),
510
+ /** Vooringevuld bericht in WhatsApp. */
511
+ prefilledText: shortText.optional().describe("Vooringevuld bericht"),
512
+ /** Tekstlabel naast het icoon (leeg = alleen icoon). */
513
+ label: shortText.optional().describe("Label (optioneel)"),
514
+ position: z.enum(["br", "bl"]).default("br").describe("Positie (rechts-/linksonder)")
515
+ });
516
+ const BeforeAfterBlockSchema = z.object({
517
+ ...blockBase,
518
+ _type: z.literal("beforeAfter"),
519
+ heading: shortText.optional(),
520
+ beforeUrl: z.string().max(2e3).default(""),
521
+ afterUrl: z.string().max(2e3).default(""),
522
+ beforeLabel: shortText.default("Voor"),
523
+ afterLabel: shortText.default("Na"),
524
+ alt: shortText.default(""),
525
+ aspectRatio: z.enum(["16/9", "4/3", "3/2", "1/1"]).default("4/3")
526
+ });
527
+ const PortfolioBlockSchema = z.object({
528
+ ...blockBase,
529
+ _type: z.literal("portfolio"),
530
+ heading: shortText.optional(),
531
+ intro: shortText.optional(),
532
+ columns: z.number().int().min(1).max(4).default(3),
533
+ items: z.array(
534
+ z.object({
535
+ imageUrl: z.string().max(2e3).default(""),
536
+ mediaId: ref.optional(),
537
+ title: shortText.default(""),
538
+ category: shortText.optional(),
539
+ description: shortText.optional(),
540
+ href: z.string().max(2e3).optional()
541
+ })
542
+ ).max(60).default([]),
543
+ /** Filterbalk op categorieën (alleen zichtbaar als er categorieën zijn). */
544
+ showFilter: z.boolean().default(true).describe("Filterbalk op categorie\xEBn"),
545
+ lightbox: z.boolean().default(true).describe("Lightbox bij klikken")
546
+ });
547
+ const JobsBlockSchema = z.object({
548
+ ...blockBase,
549
+ _type: z.literal("jobs"),
550
+ heading: shortText.optional(),
551
+ intro: shortText.optional(),
552
+ items: z.array(
553
+ z.object({
554
+ title: shortText.default(""),
555
+ location: shortText.optional(),
556
+ /** bv. "Fulltime", "Parttime", "BBL". */
557
+ employmentType: shortText.optional(),
558
+ description: shortText.optional(),
559
+ salary: shortText.optional(),
560
+ applyUrl: z.string().max(2e3).optional(),
561
+ /** ISO-datum van plaatsing (voor Google Jobs). */
562
+ datePosted: shortText.optional()
563
+ })
564
+ ).max(30).default([]),
565
+ jsonLd: z.boolean().default(true).describe("JSON-LD (Google Jobs)")
566
+ });
567
+ const BreadcrumbsBlockSchema = z.object({
568
+ ...blockBase,
569
+ _type: z.literal("breadcrumbs"),
570
+ homeLabel: shortText.default("Home"),
571
+ jsonLd: z.boolean().default(true).describe("JSON-LD (BreadcrumbList)")
572
+ });
573
+ const NewsWidgetSchema = z.object({
574
+ ...blockBase,
575
+ _type: z.literal("newsWidget"),
576
+ heading: shortText.optional(),
577
+ limit: z.number().int().min(1).max(12).default(5),
578
+ basePath: z.string().max(200).default("/nieuws"),
579
+ showImages: z.boolean().default(false)
580
+ });
581
+ const AgendaWidgetSchema = z.object({
582
+ ...blockBase,
583
+ _type: z.literal("agendaWidget"),
584
+ heading: shortText.optional(),
585
+ limit: z.number().int().min(1).max(12).default(5),
586
+ events: z.array(
587
+ z.object({
588
+ title: shortText.default(""),
589
+ start: z.string().max(40).default(""),
590
+ end: z.string().max(40).optional(),
591
+ location: shortText.optional(),
592
+ url: z.string().max(2e3).optional()
593
+ })
594
+ ).max(100).default([]),
595
+ hidePast: z.boolean().default(true)
596
+ });
597
+ const OpeningHoursWidgetSchema = z.object({
598
+ ...blockBase,
599
+ _type: z.literal("openingHoursWidget"),
600
+ heading: shortText.optional(),
601
+ rows: z.array(z.object({ day: shortText.default(""), hours: shortText.default("") })).max(14).default([]),
602
+ highlightToday: z.boolean().default(true)
603
+ });
604
+ const ContactWidgetSchema = z.object({
605
+ ...blockBase,
606
+ _type: z.literal("contactWidget"),
607
+ heading: shortText.optional(),
608
+ address: shortText.optional(),
609
+ phone: shortText.optional(),
610
+ email: z.string().max(320).optional()
611
+ });
612
+ const SocialWidgetSchema = z.object({
613
+ ...blockBase,
614
+ _type: z.literal("socialWidget"),
615
+ heading: shortText.optional(),
616
+ items: z.array(z.object({ platform: shortText.default(""), href: z.string().max(2e3).default("") })).max(12).default([])
617
+ });
618
+ const NewsletterWidgetSchema = z.object({
619
+ ...blockBase,
620
+ _type: z.literal("newsletterWidget"),
621
+ heading: shortText.optional(),
622
+ text: shortText.optional(),
623
+ buttonLabel: shortText.default("Aanmelden"),
624
+ actionUrl: z.string().max(2e3).optional()
625
+ });
626
+ const CtaWidgetSchema = z.object({
627
+ ...blockBase,
628
+ _type: z.literal("ctaWidget"),
629
+ title: shortText.default(""),
630
+ text: shortText.optional(),
631
+ buttonLabel: shortText.default("Lees meer"),
632
+ buttonHref: z.string().max(2e3).default("#"),
633
+ backgroundColor: z.string().max(40).optional()
634
+ });
635
+ const GalleryWidgetSchema = z.object({
636
+ ...blockBase,
637
+ _type: z.literal("galleryWidget"),
638
+ heading: shortText.optional(),
639
+ items: z.array(z.object({ url: z.string().max(2e3).optional(), mediaId: ref.optional(), alt: shortText.default("") })).max(24).default([]),
640
+ columns: z.number().int().min(2).max(4).default(3)
641
+ });
642
+ const TestimonialsWidgetSchema = z.object({
643
+ ...blockBase,
644
+ _type: z.literal("testimonialsWidget"),
645
+ heading: shortText.optional(),
646
+ items: z.array(z.object({ quote: shortText.default(""), author: shortText.default(""), rating: z.number().int().min(1).max(5).optional() })).max(20).default([])
647
+ });
648
+ const CardsWidgetSchema = z.object({
649
+ ...blockBase,
650
+ _type: z.literal("cardsWidget"),
651
+ heading: shortText.optional(),
652
+ items: z.array(z.object({ icon: shortText.optional(), title: shortText.default(""), text: shortText.optional(), href: z.string().max(2e3).optional() })).max(10).default([])
653
+ });
654
+ const DownloadsWidgetSchema = z.object({
655
+ ...blockBase,
656
+ _type: z.literal("downloadsWidget"),
657
+ heading: shortText.optional(),
658
+ limit: z.number().int().min(1).max(12).default(5),
659
+ items: z.array(z.object({ label: shortText.default(""), href: z.string().max(2e3).default(""), meta: shortText.optional() })).max(60).default([])
660
+ });
661
+ const CountdownWidgetSchema = z.object({
662
+ ...blockBase,
663
+ _type: z.literal("countdownWidget"),
664
+ heading: shortText.optional(),
665
+ target: z.string().max(40).default(""),
666
+ expiredText: shortText.default("Het is zover!")
667
+ });
668
+ const BuiltinBlockSchema = z.discriminatedUnion("_type", [
669
+ HeroBlockSchema,
670
+ RichTextBlockSchema,
671
+ ImageBlockSchema,
672
+ GalleryBlockSchema,
673
+ CtaBlockSchema,
674
+ FaqBlockSchema,
675
+ OpeningHoursBlockSchema,
676
+ PricingBlockSchema,
677
+ NewsListBlockSchema,
678
+ FormBlockSchema,
679
+ SpacerBlockSchema,
680
+ ColumnsBlockSchema,
681
+ TestimonialsBlockSchema,
682
+ TeamBlockSchema,
683
+ AgendaBlockSchema,
684
+ SearchBlockSchema,
685
+ VideoBlockSchema,
686
+ FeatureBlockSchema,
687
+ BannerBlockSchema,
688
+ CountersBlockSchema,
689
+ LogosBlockSchema,
690
+ TimelineBlockSchema,
691
+ ContactBlockSchema,
692
+ MapBlockSchema,
693
+ SocialBlockSchema,
694
+ NewsletterBlockSchema,
695
+ BookingBlockSchema,
696
+ ButtonsBlockSchema,
697
+ QuoteBlockSchema,
698
+ DividerBlockSchema,
699
+ AccordionBlockSchema,
700
+ EmbedBlockSchema,
701
+ // Indeling
702
+ WithSidebarBlockSchema,
703
+ TabsBlockSchema,
704
+ // Nieuwe modules
705
+ CardsBlockSchema,
706
+ DownloadsBlockSchema,
707
+ PdfBlockSchema,
708
+ CountdownBlockSchema,
709
+ SliderBlockSchema,
710
+ WhatsappChatBlockSchema,
711
+ BeforeAfterBlockSchema,
712
+ PortfolioBlockSchema,
713
+ JobsBlockSchema,
714
+ BreadcrumbsBlockSchema,
715
+ // Widgets (compacte varianten)
716
+ NewsWidgetSchema,
717
+ AgendaWidgetSchema,
718
+ OpeningHoursWidgetSchema,
719
+ ContactWidgetSchema,
720
+ SocialWidgetSchema,
721
+ NewsletterWidgetSchema,
722
+ CtaWidgetSchema,
723
+ GalleryWidgetSchema,
724
+ TestimonialsWidgetSchema,
725
+ CardsWidgetSchema,
726
+ DownloadsWidgetSchema,
727
+ CountdownWidgetSchema
728
+ ]);
729
+ const AnyBlockSchema = z.union([BuiltinBlockSchema, BlockBaseSchema]);
730
+ export {
731
+ AccordionBlockSchema,
732
+ AgendaBlockSchema,
733
+ AgendaWidgetSchema,
734
+ AnyBlockSchema,
735
+ BannerBlockSchema,
736
+ BeforeAfterBlockSchema,
737
+ BlockBaseSchema,
738
+ BlockStyleSchema,
739
+ BookingBlockSchema,
740
+ BookingProviderSchema,
741
+ BreadcrumbsBlockSchema,
742
+ BuiltinBlockSchema,
743
+ ButtonsBlockSchema,
744
+ CardsBlockSchema,
745
+ CardsWidgetSchema,
746
+ ColumnsBlockSchema,
747
+ ContactBlockSchema,
748
+ ContactWidgetSchema,
749
+ CountdownBlockSchema,
750
+ CountdownWidgetSchema,
751
+ CountersBlockSchema,
752
+ CtaBlockSchema,
753
+ CtaWidgetSchema,
754
+ DividerBlockSchema,
755
+ DownloadsBlockSchema,
756
+ DownloadsWidgetSchema,
757
+ EmbedBlockSchema,
758
+ FaqBlockSchema,
759
+ FeatureBlockSchema,
760
+ FormBlockSchema,
761
+ GalleryBlockSchema,
762
+ GalleryWidgetSchema,
763
+ HeroBlockSchema,
764
+ ImageBlockSchema,
765
+ JobsBlockSchema,
766
+ LogosBlockSchema,
767
+ MapBlockSchema,
768
+ NewsListBlockSchema,
769
+ NewsWidgetSchema,
770
+ NewsletterBlockSchema,
771
+ NewsletterWidgetSchema,
772
+ OpeningHoursBlockSchema,
773
+ OpeningHoursWidgetSchema,
774
+ PdfBlockSchema,
775
+ PortfolioBlockSchema,
776
+ PricingBlockSchema,
777
+ QuoteBlockSchema,
778
+ RichTextBlockSchema,
779
+ SearchBlockSchema,
780
+ SliderBlockSchema,
781
+ SocialBlockSchema,
782
+ SocialWidgetSchema,
783
+ SpacerBlockSchema,
784
+ TabsBlockSchema,
785
+ TeamBlockSchema,
786
+ TestimonialsBlockSchema,
787
+ TestimonialsWidgetSchema,
788
+ TimelineBlockSchema,
789
+ VideoBlockSchema,
790
+ WhatsappChatBlockSchema,
791
+ WithSidebarBlockSchema,
792
+ blockBase
793
+ };
794
+ //# sourceMappingURL=blocks.js.map