@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,40 @@
1
+ /**
2
+ * Module-resolutie: bepaalt welke modules actief zijn voor een site en levert daaruit de
3
+ * block-lijst en de samengestelde instellingen. Pure logica (geen React/Firebase): bruikbaar op
4
+ * server (publieke rendering) én client (provider).
5
+ */
6
+ import type { BlockDefinition } from "../blocks/registry";
7
+ import type { ModuleDefinition, ModulesSiteConfig } from "./types";
8
+ export interface ResolvedModules {
9
+ /** Actieve module-ids. */
10
+ activeIds: Set<string>;
11
+ /** Blocks van alle actieve modules (volgorde = module-volgorde). */
12
+ blocks: BlockDefinition[];
13
+ /** Per actieve module: defaultSettings gemerged met de per-site config. */
14
+ settings: Record<string, Record<string, unknown>>;
15
+ /** Alle bekende module-definities (gededupliceerd) — voor het instellingenpaneel. */
16
+ defs: ModuleDefinition[];
17
+ }
18
+ /**
19
+ * Is een module actief? Precedentie:
20
+ * 1. `core: true` -> altijd actief.
21
+ * 2. expliciet `modules[id]` -> boolean of `{ enabled }`.
22
+ * 3. legacy `features[key]` -> `false` betekent uit (backward compat met 2.x).
23
+ * 4. `defaultEnabled` -> default true.
24
+ */
25
+ export declare function isModuleActive(def: ModuleDefinition, modules?: ModulesSiteConfig, features?: Record<string, boolean | undefined>): boolean;
26
+ /**
27
+ * Stelt de actieve modules samen. `defs` = ingebouwde + (optioneel) klant-modules; latere
28
+ * definities met dezelfde `id` overschrijven eerdere (zo kan een site een built-in vervangen).
29
+ */
30
+ export declare function resolveModules(defs: ModuleDefinition[], opts?: {
31
+ modules?: ModulesSiteConfig;
32
+ features?: Record<string, boolean | undefined>;
33
+ /**
34
+ * Per-site instellingen uit Firestore (`settings/public.modules`), bewerkt in /beheer. Worden
35
+ * OVER `modules` (uit SiteConfig) gelegd. Precedentie: core > firestore > SiteConfig > default.
36
+ */
37
+ firestoreModules?: ModulesSiteConfig;
38
+ }): ResolvedModules;
39
+ /** Geeft het module-id dat een block-type levert (voor "module staat uit"-waarschuwingen). */
40
+ export declare function moduleIdForBlockType(defs: ModuleDefinition[], type: string): string | undefined;
@@ -0,0 +1,79 @@
1
+ function mergeModuleConfig(a, b) {
2
+ const out = { ...a ?? {} };
3
+ for (const [id, setting] of Object.entries(b ?? {})) {
4
+ const prev = out[id];
5
+ if (prev && typeof prev === "object" && typeof setting === "object" && setting !== null) {
6
+ out[id] = {
7
+ enabled: setting.enabled ?? prev.enabled,
8
+ config: { ...prev.config ?? {}, ...setting.config ?? {} }
9
+ };
10
+ } else {
11
+ out[id] = setting;
12
+ }
13
+ }
14
+ return out;
15
+ }
16
+ function settingFor(id, modules) {
17
+ return modules?.[id];
18
+ }
19
+ function isModuleActive(def, modules, features) {
20
+ if (def.core) return true;
21
+ const explicit = settingFor(def.id, modules);
22
+ if (typeof explicit === "boolean") return explicit;
23
+ if (explicit && typeof explicit === "object" && typeof explicit.enabled === "boolean") {
24
+ return explicit.enabled;
25
+ }
26
+ if (def.featureKey && features && features[def.featureKey] === false) return false;
27
+ return def.defaultEnabled ?? true;
28
+ }
29
+ function configFor(id, modules) {
30
+ const s = settingFor(id, modules);
31
+ if (s && typeof s === "object" && s.config) return s.config;
32
+ return void 0;
33
+ }
34
+ function resolveModules(defs, opts) {
35
+ const byId = /* @__PURE__ */ new Map();
36
+ const order = [];
37
+ for (const d of defs) {
38
+ if (!byId.has(d.id)) order.push(d.id);
39
+ byId.set(d.id, d);
40
+ }
41
+ const merged = mergeModuleConfig(opts?.modules, opts?.firestoreModules);
42
+ const activeIds = /* @__PURE__ */ new Set();
43
+ const blocks = [];
44
+ const settings = {};
45
+ const resolvedDefs = order.map((id) => byId.get(id));
46
+ for (const id of order) {
47
+ const def = byId.get(id);
48
+ if (!isModuleActive(def, merged, opts?.features)) continue;
49
+ activeIds.add(id);
50
+ if (def.blocks) blocks.push(...def.blocks);
51
+ settings[id] = resolveSettings(def, configFor(id, merged));
52
+ }
53
+ return { activeIds, blocks, settings, defs: resolvedDefs };
54
+ }
55
+ function resolveSettings(def, config) {
56
+ const merged = { ...def.defaultSettings ?? {}, ...config ?? {} };
57
+ if (!def.settingsSchema) return merged;
58
+ const res = def.settingsSchema.safeParse(merged);
59
+ if (res.success) return res.data;
60
+ if (typeof console !== "undefined") {
61
+ console.warn(
62
+ `[xicms] instellingen van module "${def.id}" voldoen niet aan het settingsSchema; ongevalideerde waarden gebruikt.`,
63
+ res.error.issues
64
+ );
65
+ }
66
+ return merged;
67
+ }
68
+ function moduleIdForBlockType(defs, type) {
69
+ for (const d of defs) {
70
+ if (d.blocks?.some((b) => b.type === type)) return d.id;
71
+ }
72
+ return void 0;
73
+ }
74
+ export {
75
+ isModuleActive,
76
+ moduleIdForBlockType,
77
+ resolveModules
78
+ };
79
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/modules/registry.ts"],"sourcesContent":["/**\n * Module-resolutie: bepaalt welke modules actief zijn voor een site en levert daaruit de\n * block-lijst en de samengestelde instellingen. Pure logica (geen React/Firebase): bruikbaar op\n * server (publieke rendering) én client (provider).\n */\nimport type { BlockDefinition } from \"../blocks/registry\";\nimport type { ModuleDefinition, ModulesSiteConfig, ModuleSiteSetting } from \"./types\";\n\nexport interface ResolvedModules {\n /** Actieve module-ids. */\n activeIds: Set<string>;\n /** Blocks van alle actieve modules (volgorde = module-volgorde). */\n blocks: BlockDefinition[];\n /** Per actieve module: defaultSettings gemerged met de per-site config. */\n settings: Record<string, Record<string, unknown>>;\n /** Alle bekende module-definities (gededupliceerd) — voor het instellingenpaneel. */\n defs: ModuleDefinition[];\n}\n\n/** Voegt twee module-config-bronnen samen op id (b overschrijft a). */\nfunction mergeModuleConfig(\n a: ModulesSiteConfig | undefined,\n b: ModulesSiteConfig | undefined,\n): ModulesSiteConfig {\n const out: ModulesSiteConfig = { ...(a ?? {}) };\n for (const [id, setting] of Object.entries(b ?? {})) {\n const prev = out[id];\n if (\n prev &&\n typeof prev === \"object\" &&\n typeof setting === \"object\" &&\n setting !== null\n ) {\n out[id] = {\n enabled: setting.enabled ?? prev.enabled,\n config: { ...(prev.config ?? {}), ...(setting.config ?? {}) },\n };\n } else {\n out[id] = setting;\n }\n }\n return out;\n}\n\nfunction settingFor(\n id: string,\n modules: ModulesSiteConfig | undefined,\n): ModuleSiteSetting | undefined {\n return modules?.[id];\n}\n\n/**\n * Is een module actief? Precedentie:\n * 1. `core: true` -> altijd actief.\n * 2. expliciet `modules[id]` -> boolean of `{ enabled }`.\n * 3. legacy `features[key]` -> `false` betekent uit (backward compat met 2.x).\n * 4. `defaultEnabled` -> default true.\n */\nexport function isModuleActive(\n def: ModuleDefinition,\n modules?: ModulesSiteConfig,\n features?: Record<string, boolean | undefined>,\n): boolean {\n if (def.core) return true;\n\n const explicit = settingFor(def.id, modules);\n if (typeof explicit === \"boolean\") return explicit;\n if (explicit && typeof explicit === \"object\" && typeof explicit.enabled === \"boolean\") {\n return explicit.enabled;\n }\n\n if (def.featureKey && features && features[def.featureKey] === false) return false;\n\n return def.defaultEnabled ?? true;\n}\n\nfunction configFor(\n id: string,\n modules?: ModulesSiteConfig,\n): Record<string, unknown> | undefined {\n const s = settingFor(id, modules);\n if (s && typeof s === \"object\" && s.config) return s.config;\n return undefined;\n}\n\n/**\n * Stelt de actieve modules samen. `defs` = ingebouwde + (optioneel) klant-modules; latere\n * definities met dezelfde `id` overschrijven eerdere (zo kan een site een built-in vervangen).\n */\nexport function resolveModules(\n defs: ModuleDefinition[],\n opts?: {\n modules?: ModulesSiteConfig;\n features?: Record<string, boolean | undefined>;\n /**\n * Per-site instellingen uit Firestore (`settings/public.modules`), bewerkt in /beheer. Worden\n * OVER `modules` (uit SiteConfig) gelegd. Precedentie: core > firestore > SiteConfig > default.\n */\n firestoreModules?: ModulesSiteConfig;\n },\n): ResolvedModules {\n // Dedup op id (laatste wint), volgorde behouden van eerste verschijning.\n const byId = new Map<string, ModuleDefinition>();\n const order: string[] = [];\n for (const d of defs) {\n if (!byId.has(d.id)) order.push(d.id);\n byId.set(d.id, d);\n }\n\n const merged = mergeModuleConfig(opts?.modules, opts?.firestoreModules);\n\n const activeIds = new Set<string>();\n const blocks: BlockDefinition[] = [];\n const settings: Record<string, Record<string, unknown>> = {};\n const resolvedDefs: ModuleDefinition[] = order.map((id) => byId.get(id)!);\n\n for (const id of order) {\n const def = byId.get(id)!;\n if (!isModuleActive(def, merged, opts?.features)) continue;\n activeIds.add(id);\n if (def.blocks) blocks.push(...def.blocks);\n settings[id] = resolveSettings(def, configFor(id, merged));\n }\n\n return { activeIds, blocks, settings, defs: resolvedDefs };\n}\n\n/**\n * Stelt de runtime-instellingen van één module samen: `defaultSettings` ⊕ per-site `config`,\n * daarna door het `settingsSchema` gehaald (indien aanwezig). Zo worden schema-`.default()`s\n * daadwerkelijk geïnjecteerd en wordt ongeldige config gevalideerd i.p.v. blind doorgegeven.\n * Bij een schema-fout valt dit terug op de ongevalideerde merge (mét console-waarschuwing) —\n * nooit stil een module z'n instellingen afpakken.\n */\nfunction resolveSettings(\n def: ModuleDefinition,\n config: Record<string, unknown> | undefined,\n): Record<string, unknown> {\n const merged = { ...(def.defaultSettings ?? {}), ...(config ?? {}) };\n if (!def.settingsSchema) return merged;\n const res = def.settingsSchema.safeParse(merged);\n if (res.success) return res.data as Record<string, unknown>;\n if (typeof console !== \"undefined\") {\n console.warn(\n `[xicms] instellingen van module \"${def.id}\" voldoen niet aan het settingsSchema; ongevalideerde waarden gebruikt.`,\n res.error.issues,\n );\n }\n return merged;\n}\n\n/** Geeft het module-id dat een block-type levert (voor \"module staat uit\"-waarschuwingen). */\nexport function moduleIdForBlockType(defs: ModuleDefinition[], type: string): string | undefined {\n for (const d of defs) {\n if (d.blocks?.some((b) => b.type === type)) return d.id;\n }\n return undefined;\n}\n"],"mappings":"AAoBA,SAAS,kBACP,GACA,GACmB;AACnB,QAAM,MAAyB,EAAE,GAAI,KAAK,CAAC,EAAG;AAC9C,aAAW,CAAC,IAAI,OAAO,KAAK,OAAO,QAAQ,KAAK,CAAC,CAAC,GAAG;AACnD,UAAM,OAAO,IAAI,EAAE;AACnB,QACE,QACA,OAAO,SAAS,YAChB,OAAO,YAAY,YACnB,YAAY,MACZ;AACA,UAAI,EAAE,IAAI;AAAA,QACR,SAAS,QAAQ,WAAW,KAAK;AAAA,QACjC,QAAQ,EAAE,GAAI,KAAK,UAAU,CAAC,GAAI,GAAI,QAAQ,UAAU,CAAC,EAAG;AAAA,MAC9D;AAAA,IACF,OAAO;AACL,UAAI,EAAE,IAAI;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT;AAEA,SAAS,WACP,IACA,SAC+B;AAC/B,SAAO,UAAU,EAAE;AACrB;AASO,SAAS,eACd,KACA,SACA,UACS;AACT,MAAI,IAAI,KAAM,QAAO;AAErB,QAAM,WAAW,WAAW,IAAI,IAAI,OAAO;AAC3C,MAAI,OAAO,aAAa,UAAW,QAAO;AAC1C,MAAI,YAAY,OAAO,aAAa,YAAY,OAAO,SAAS,YAAY,WAAW;AACrF,WAAO,SAAS;AAAA,EAClB;AAEA,MAAI,IAAI,cAAc,YAAY,SAAS,IAAI,UAAU,MAAM,MAAO,QAAO;AAE7E,SAAO,IAAI,kBAAkB;AAC/B;AAEA,SAAS,UACP,IACA,SACqC;AACrC,QAAM,IAAI,WAAW,IAAI,OAAO;AAChC,MAAI,KAAK,OAAO,MAAM,YAAY,EAAE,OAAQ,QAAO,EAAE;AACrD,SAAO;AACT;AAMO,SAAS,eACd,MACA,MASiB;AAEjB,QAAM,OAAO,oBAAI,IAA8B;AAC/C,QAAM,QAAkB,CAAC;AACzB,aAAW,KAAK,MAAM;AACpB,QAAI,CAAC,KAAK,IAAI,EAAE,EAAE,EAAG,OAAM,KAAK,EAAE,EAAE;AACpC,SAAK,IAAI,EAAE,IAAI,CAAC;AAAA,EAClB;AAEA,QAAM,SAAS,kBAAkB,MAAM,SAAS,MAAM,gBAAgB;AAEtE,QAAM,YAAY,oBAAI,IAAY;AAClC,QAAM,SAA4B,CAAC;AACnC,QAAM,WAAoD,CAAC;AAC3D,QAAM,eAAmC,MAAM,IAAI,CAAC,OAAO,KAAK,IAAI,EAAE,CAAE;AAExE,aAAW,MAAM,OAAO;AACtB,UAAM,MAAM,KAAK,IAAI,EAAE;AACvB,QAAI,CAAC,eAAe,KAAK,QAAQ,MAAM,QAAQ,EAAG;AAClD,cAAU,IAAI,EAAE;AAChB,QAAI,IAAI,OAAQ,QAAO,KAAK,GAAG,IAAI,MAAM;AACzC,aAAS,EAAE,IAAI,gBAAgB,KAAK,UAAU,IAAI,MAAM,CAAC;AAAA,EAC3D;AAEA,SAAO,EAAE,WAAW,QAAQ,UAAU,MAAM,aAAa;AAC3D;AASA,SAAS,gBACP,KACA,QACyB;AACzB,QAAM,SAAS,EAAE,GAAI,IAAI,mBAAmB,CAAC,GAAI,GAAI,UAAU,CAAC,EAAG;AACnE,MAAI,CAAC,IAAI,eAAgB,QAAO;AAChC,QAAM,MAAM,IAAI,eAAe,UAAU,MAAM;AAC/C,MAAI,IAAI,QAAS,QAAO,IAAI;AAC5B,MAAI,OAAO,YAAY,aAAa;AAClC,YAAQ;AAAA,MACN,oCAAoC,IAAI,EAAE;AAAA,MAC1C,IAAI,MAAM;AAAA,IACZ;AAAA,EACF;AACA,SAAO;AACT;AAGO,SAAS,qBAAqB,MAA0B,MAAkC;AAC/F,aAAW,KAAK,MAAM;AACpB,QAAI,EAAE,QAAQ,KAAK,CAAC,MAAM,EAAE,SAAS,IAAI,EAAG,QAAO,EAAE;AAAA,EACvD;AACA,SAAO;AACT;","names":[]}
@@ -0,0 +1,66 @@
1
+ /**
2
+ * Module-laag (XiCMS 3.0) — een *module* bundelt een complete functie: zijn blocks, instellingen
3
+ * (per-site door de agent/klant in te stellen) en metadata. De admin-panelen leven in een aparte
4
+ * paneel-registry (`@xiwebdesign/xicms-core/admin`) en worden via `id`/`featureKey` aan de module
5
+ * gekoppeld, zodat de lichte runtime-entry geen admin-componenten hoeft te bevatten.
6
+ *
7
+ * GULDEN REGEL blijft: core bevat nooit klantcode. Een module verwijst alleen naar `BlockDefinition`,
8
+ * Zod-schema's en strings — geen site-specifieke imports. Design en instellingen zijn per site te
9
+ * customizen ZONDER de modulecode te forken:
10
+ * - design: blocks renderen unstyled-by-default met stabiele `xicms-*` classNames + CSS-variabelen;
11
+ * een site mag de Render van een block vervangen via `XiCMSProvider`-overrides (logica/schema
12
+ * blijven in core).
13
+ * - instellingen: `settingsSchema` + `defaultSettings`; de site zet waarden in
14
+ * `SiteConfig.modules[id].config` en/of (later) in /beheer. Modules lezen ze via `useModuleSettings`.
15
+ *
16
+ * Pure types/data: geen "use client" — server- én client-importeerbaar.
17
+ */
18
+ import type { ZodTypeAny } from "zod";
19
+ import type { BlockDefinition } from "../blocks/registry";
20
+ /** Backend die een module nodig heeft (informatief/agent-hint; niets wordt dynamisch geladen). */
21
+ export type Capability = {
22
+ kind: "function";
23
+ name: string;
24
+ } | {
25
+ kind: "firestore";
26
+ collection: string;
27
+ } | {
28
+ kind: "storage";
29
+ prefix: string;
30
+ };
31
+ export interface ModuleDefinition {
32
+ /** Stabiele kebab-id, bv. "gallery", "forms". Uniek over alle modules. */
33
+ id: string;
34
+ /** Semver van de MODULE zelf (los van de core-versie). */
35
+ version: string;
36
+ /** Weergavenaam. */
37
+ label: string;
38
+ /** Korte omschrijving (voor docs/agent). */
39
+ description?: string;
40
+ /**
41
+ * Legacy-brug naar `SiteConfig.features`. Als gezet en `features[featureKey] === false`,
42
+ * geldt de module als uitgeschakeld (backward compat met 2.x). Optioneel.
43
+ */
44
+ featureKey?: string;
45
+ /** Blocks die deze module levert (worden in het registry gemerged als de module actief is). */
46
+ blocks?: BlockDefinition[];
47
+ /** Zod-schema voor de per-site instellingen van deze module. */
48
+ settingsSchema?: ZodTypeAny;
49
+ /** Standaardinstellingen; gemerged met `SiteConfig.modules[id].config`. */
50
+ defaultSettings?: Record<string, unknown>;
51
+ /** Backend-afhankelijkheden (documentatie/agent-hint). */
52
+ requires?: Capability[];
53
+ /** Standaard aan? (default: true). Zet op false voor opt-in modules. */
54
+ defaultEnabled?: boolean;
55
+ /**
56
+ * Kernmodule die niet uitgezet mag worden (bv. de basis content-blocks). Zulke modules
57
+ * negeren `modules[id]`/`features` en zijn altijd actief.
58
+ */
59
+ core?: boolean;
60
+ }
61
+ /** Per-site activatie/instellingen van een module in `SiteConfig.modules`. */
62
+ export type ModuleSiteSetting = boolean | {
63
+ enabled?: boolean;
64
+ config?: Record<string, unknown>;
65
+ };
66
+ export type ModulesSiteConfig = Record<string, ModuleSiteSetting>;
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"sourcesContent":[],"mappings":"","names":[]}
@@ -0,0 +1,31 @@
1
+ import { type Pattern } from "./patterns";
2
+ /**
3
+ * Ingebouwde patronen — opgebouwd uit standaard-aanwezige blocks (content + galerij/faq/prijzen)
4
+ * zodat ze altijd renderen, ongeacht welke opt-in modules aanstaan. Een agent of editor voegt ze in
5
+ * als startpunt en past de inhoud aan.
6
+ */
7
+ export declare const heroCentered: Pattern;
8
+ export declare const featuresThree: Pattern;
9
+ export declare const aboutImageText: Pattern;
10
+ export declare const ctaBanner: Pattern;
11
+ export declare const pricingThree: Pattern;
12
+ export declare const faqSection: Pattern;
13
+ export declare const gallerySection: Pattern;
14
+ export declare const quoteSection: Pattern;
15
+ export declare const contentWithSidebar: Pattern;
16
+ export declare const featuresCards: Pattern;
17
+ export declare const testimonialsSection: Pattern;
18
+ export declare const teamSection: Pattern;
19
+ export declare const countersSection: Pattern;
20
+ export declare const logosSection: Pattern;
21
+ export declare const stepsSection: Pattern;
22
+ export declare const newsletterSection: Pattern;
23
+ export declare const portfolioSection: Pattern;
24
+ export declare const jobsSection: Pattern;
25
+ export declare const beforeAfterSection: Pattern;
26
+ export declare const pageLanding: Pattern;
27
+ export declare const pageServices: Pattern;
28
+ export declare const pageAbout: Pattern;
29
+ export declare const pageContact: Pattern;
30
+ /** Alle ingebouwde patronen. */
31
+ export declare const builtinPatterns: Pattern[];
@@ -0,0 +1,415 @@
1
+ import { definePattern } from "./patterns";
2
+ const heroCentered = definePattern({
3
+ id: "hero-centered",
4
+ label: "Hero (gecentreerd, met knoppen)",
5
+ category: "Hero",
6
+ blocks: [
7
+ {
8
+ _type: "hero",
9
+ title: "Een krachtige kop die overtuigt",
10
+ subtitle: "Een korte ondertitel die in \xE9\xE9n zin uitlegt wat je doet.",
11
+ align: "center",
12
+ vAlign: "center",
13
+ minHeight: "lg",
14
+ overlayColor: "#000000",
15
+ overlayOpacity: 35,
16
+ buttons: [
17
+ { label: "Aan de slag", href: "#contact", variant: "primary" },
18
+ { label: "Meer weten", href: "#over", variant: "outline" }
19
+ ]
20
+ }
21
+ ]
22
+ });
23
+ const featuresThree = definePattern({
24
+ id: "features-three",
25
+ label: "Drie kenmerken",
26
+ category: "Kenmerken",
27
+ blocks: [
28
+ { _type: "richText", html: "<h2>Waarom kiezen voor ons</h2>", _style: { align: "center", paddingY: "sm" } },
29
+ {
30
+ _type: "columns",
31
+ _style: { paddingY: "md" },
32
+ columns: [
33
+ { blocks: [{ _type: "richText", html: "<h3>\u26A1 Snel</h3><p>Korte uitleg van dit voordeel voor de klant.</p>" }] },
34
+ { blocks: [{ _type: "richText", html: "<h3>\u{1F512} Betrouwbaar</h3><p>Korte uitleg van dit voordeel voor de klant.</p>" }] },
35
+ { blocks: [{ _type: "richText", html: "<h3>\u{1F4AC} Persoonlijk</h3><p>Korte uitleg van dit voordeel voor de klant.</p>" }] }
36
+ ]
37
+ }
38
+ ]
39
+ });
40
+ const aboutImageText = definePattern({
41
+ id: "about-image-text",
42
+ label: "Over ons (beeld + tekst)",
43
+ category: "Over",
44
+ blocks: [
45
+ {
46
+ _type: "columns",
47
+ _style: { paddingY: "md" },
48
+ columns: [
49
+ { blocks: [{ _type: "image", url: "", alt: "", aspectRatio: "4/3" }] },
50
+ { blocks: [{ _type: "richText", html: "<h2>Over ons</h2><p>Vertel hier kort het verhaal van het bedrijf: wie je bent, wat je doet en waarom.</p>" }, { _type: "buttons", align: "left", items: [{ label: "Lees meer", href: "/over", variant: "primary" }] }] }
51
+ ]
52
+ }
53
+ ]
54
+ });
55
+ const ctaBanner = definePattern({
56
+ id: "cta-banner",
57
+ label: "Oproep tot actie (banner)",
58
+ category: "CTA",
59
+ blocks: [
60
+ {
61
+ _type: "cta",
62
+ title: "Klaar om te beginnen?",
63
+ text: "Neem vandaag nog contact op voor een vrijblijvend gesprek.",
64
+ buttonLabel: "Neem contact op",
65
+ buttonHref: "#contact",
66
+ buttonVariant: "primary",
67
+ _style: { background: "#0f172a", paddingY: "lg", align: "center" }
68
+ }
69
+ ]
70
+ });
71
+ const pricingThree = definePattern({
72
+ id: "pricing-three",
73
+ label: "Prijzen (3 pakketten)",
74
+ category: "Prijzen",
75
+ blocks: [
76
+ {
77
+ _type: "pricing",
78
+ heading: "Onze pakketten",
79
+ _style: { paddingY: "md" },
80
+ items: [
81
+ { label: "Start", price: "\u20AC 29", billingPeriod: "/maand", features: ["Basis-functies", "E-mailsupport"], ctaLabel: "Kies Start", ctaHref: "#contact" },
82
+ { label: "Pro", price: "\u20AC 59", billingPeriod: "/maand", highlighted: true, features: ["Alles uit Start", "Prioriteit-support", "Extra opties"], ctaLabel: "Kies Pro", ctaHref: "#contact" },
83
+ { label: "Zakelijk", price: "Op maat", features: ["Alles uit Pro", "Persoonlijke begeleiding"], ctaLabel: "Neem contact op", ctaHref: "#contact" }
84
+ ]
85
+ }
86
+ ]
87
+ });
88
+ const faqSection = definePattern({
89
+ id: "faq-section",
90
+ label: "Veelgestelde vragen",
91
+ category: "FAQ",
92
+ blocks: [
93
+ {
94
+ _type: "faq",
95
+ heading: "Veelgestelde vragen",
96
+ searchable: true,
97
+ jsonLd: true,
98
+ _style: { paddingY: "md", width: "narrow" },
99
+ items: [
100
+ { q: "Hoe werkt het?", a: "Beschrijf hier het antwoord." },
101
+ { q: "Wat kost het?", a: "Beschrijf hier het antwoord." },
102
+ { q: "Hoe neem ik contact op?", a: "Beschrijf hier het antwoord." }
103
+ ]
104
+ }
105
+ ]
106
+ });
107
+ const gallerySection = definePattern({
108
+ id: "gallery-section",
109
+ label: "Fotogalerij",
110
+ category: "Media",
111
+ blocks: [
112
+ { _type: "richText", html: "<h2>In beeld</h2>", _style: { align: "center", paddingY: "sm" } },
113
+ { _type: "gallery", items: [], columns: 3, lightbox: "on", _style: { paddingY: "sm" } }
114
+ ]
115
+ });
116
+ const quoteSection = definePattern({
117
+ id: "quote-section",
118
+ label: "Uitspraak (uitgelicht)",
119
+ category: "Social proof",
120
+ blocks: [
121
+ {
122
+ _type: "quote",
123
+ text: "\u201CDit team heeft ons echt geholpen \u2014 aanrader!\u201D",
124
+ author: "Tevreden klant",
125
+ role: "Bedrijfsnaam",
126
+ _style: { paddingY: "lg", width: "narrow", align: "center" }
127
+ }
128
+ ]
129
+ });
130
+ const contentWithSidebar = definePattern({
131
+ id: "content-with-sidebar",
132
+ label: "Inhoud met zijbalk (widgets)",
133
+ category: "Indeling",
134
+ description: "Brede tekstkolom met een zijbalk vol widgets (laatste nieuws + call-to-action).",
135
+ blocks: [
136
+ {
137
+ _type: "withSidebar",
138
+ side: "right",
139
+ sidebarWidth: "md",
140
+ sticky: true,
141
+ _style: { paddingY: "md" },
142
+ main: [
143
+ { _type: "richText", html: "<h2>Welkom</h2><p>Plaats hier je hoofdinhoud. In de zijbalk hiernaast tonen widgets automatisch je laatste nieuws en een oproep tot actie \u2014 die haal je zo uit dezelfde modules.</p>" }
144
+ ],
145
+ aside: [
146
+ { _type: "newsWidget", heading: "Laatste nieuws", limit: 4, basePath: "/nieuws", showImages: false },
147
+ { _type: "ctaWidget", title: "Vragen?", text: "Neem gerust contact op.", buttonLabel: "Contact", buttonHref: "#contact" }
148
+ ]
149
+ }
150
+ ]
151
+ });
152
+ const featuresCards = definePattern({
153
+ id: "features-cards",
154
+ label: "Drie diensten (kaarten)",
155
+ category: "Kenmerken",
156
+ description: "Moderne diensten-kaarten met iconen en hover-effect (cards-module).",
157
+ blocks: [
158
+ {
159
+ _type: "cards",
160
+ heading: "Wat we doen",
161
+ columns: 3,
162
+ _style: { paddingY: "md" },
163
+ items: [
164
+ { icon: "\u26A1", title: "Dienst \xE9\xE9n", text: "Korte uitleg van deze dienst en het voordeel voor de klant." },
165
+ { icon: "\u{1F6E0}\uFE0F", title: "Dienst twee", text: "Korte uitleg van deze dienst en het voordeel voor de klant." },
166
+ { icon: "\u{1F4AC}", title: "Dienst drie", text: "Korte uitleg van deze dienst en het voordeel voor de klant.", href: "#contact", linkLabel: "Meer weten" }
167
+ ]
168
+ }
169
+ ]
170
+ });
171
+ const testimonialsSection = definePattern({
172
+ id: "testimonials-section",
173
+ label: "Klantreviews (3 kaarten)",
174
+ category: "Social proof",
175
+ blocks: [
176
+ {
177
+ _type: "testimonials",
178
+ heading: "Wat klanten zeggen",
179
+ jsonLd: true,
180
+ _style: { paddingY: "md" },
181
+ items: [
182
+ { quote: "Fantastisch geholpen, snel en vakkundig.", author: "Naam klant", role: "Plaats", rating: 5 },
183
+ { quote: "Duidelijke communicatie en een prachtig resultaat.", author: "Naam klant", role: "Plaats", rating: 5 },
184
+ { quote: "Een aanrader voor iedereen in de regio.", author: "Naam klant", role: "Plaats", rating: 4 }
185
+ ]
186
+ }
187
+ ]
188
+ });
189
+ const teamSection = definePattern({
190
+ id: "team-section",
191
+ label: "Ons team",
192
+ category: "Over",
193
+ blocks: [
194
+ {
195
+ _type: "team",
196
+ heading: "Ons team",
197
+ _style: { paddingY: "md" },
198
+ members: [
199
+ { name: "Naam", role: "Functie", bio: "Korte introductie van dit teamlid." },
200
+ { name: "Naam", role: "Functie", bio: "Korte introductie van dit teamlid." },
201
+ { name: "Naam", role: "Functie", bio: "Korte introductie van dit teamlid." }
202
+ ]
203
+ }
204
+ ]
205
+ });
206
+ const countersSection = definePattern({
207
+ id: "counters-section",
208
+ label: "Kengetallen (tellers)",
209
+ category: "Social proof",
210
+ blocks: [
211
+ {
212
+ _type: "counters",
213
+ _style: { paddingY: "md", align: "center" },
214
+ items: [
215
+ { value: "15", suffix: "+", label: "Jaar ervaring" },
216
+ { value: "250", suffix: "+", label: "Tevreden klanten" },
217
+ { value: "4.9", label: "Gemiddelde beoordeling" }
218
+ ]
219
+ }
220
+ ]
221
+ });
222
+ const logosSection = definePattern({
223
+ id: "logos-section",
224
+ label: "Bekend van (logo-strook)",
225
+ category: "Social proof",
226
+ blocks: [
227
+ { _type: "logos", heading: "Zij gingen je voor", grayscale: true, items: [], _style: { paddingY: "sm" } }
228
+ ]
229
+ });
230
+ const stepsSection = definePattern({
231
+ id: "steps-section",
232
+ label: "Stappenplan (zo werkt het)",
233
+ category: "Kenmerken",
234
+ blocks: [
235
+ {
236
+ _type: "timeline",
237
+ heading: "Zo werkt het",
238
+ _style: { paddingY: "md", width: "narrow" },
239
+ items: [
240
+ { title: "1. Kennismaking", text: "We bespreken je wensen, vrijblijvend." },
241
+ { title: "2. Voorstel", text: "Je ontvangt een helder voorstel met vaste prijs." },
242
+ { title: "3. Uitvoering", text: "We gaan aan de slag en houden je op de hoogte." },
243
+ { title: "4. Oplevering", text: "Klaar \u2014 met nazorg en garantie." }
244
+ ]
245
+ }
246
+ ]
247
+ });
248
+ const newsletterSection = definePattern({
249
+ id: "newsletter-section",
250
+ label: "Nieuwsbrief-aanmelding",
251
+ category: "CTA",
252
+ blocks: [
253
+ { _type: "newsletter", heading: "Blijf op de hoogte", text: "Ontvang tips en nieuws \u2014 max. \xE9\xE9n mail per maand.", buttonLabel: "Aanmelden", _style: { paddingY: "md", width: "narrow" } }
254
+ ]
255
+ });
256
+ const portfolioSection = definePattern({
257
+ id: "portfolio-section",
258
+ label: "Portfolio / projecten",
259
+ category: "Media",
260
+ description: "Projecten-grid met categorie-filter en lightbox (portfolio-module).",
261
+ blocks: [
262
+ {
263
+ _type: "portfolio",
264
+ heading: "Ons werk",
265
+ intro: "Een greep uit recente projecten.",
266
+ columns: 3,
267
+ showFilter: true,
268
+ lightbox: true,
269
+ _style: { paddingY: "md" },
270
+ items: [
271
+ { imageUrl: "", title: "Project \xE9\xE9n", category: "Categorie A" },
272
+ { imageUrl: "", title: "Project twee", category: "Categorie B" },
273
+ { imageUrl: "", title: "Project drie", category: "Categorie A" }
274
+ ]
275
+ }
276
+ ]
277
+ });
278
+ const jobsSection = definePattern({
279
+ id: "jobs-section",
280
+ label: "Vacatures",
281
+ category: "Over",
282
+ description: "Vacature-overzicht met Google Jobs-JSON-LD (vacatures-module).",
283
+ blocks: [
284
+ {
285
+ _type: "jobs",
286
+ heading: "Werken bij ons",
287
+ intro: "We groeien \u2014 kom je het team versterken?",
288
+ jsonLd: true,
289
+ _style: { paddingY: "md", width: "narrow" },
290
+ items: [
291
+ { title: "Functietitel", employmentType: "Fulltime", location: "Plaats", description: "Korte omschrijving van de functie en wat je gaat doen." }
292
+ ]
293
+ }
294
+ ]
295
+ });
296
+ const beforeAfterSection = definePattern({
297
+ id: "before-after-section",
298
+ label: "Voor / na",
299
+ category: "Media",
300
+ description: "Voor/na-vergelijker met sleepbare scheiding (voor-na-module).",
301
+ blocks: [
302
+ { _type: "richText", html: "<h2>Het verschil</h2>", _style: { align: "center", paddingY: "sm" } },
303
+ { _type: "beforeAfter", beforeUrl: "", afterUrl: "", beforeLabel: "Voor", afterLabel: "Na", aspectRatio: "4/3", _style: { paddingY: "sm", width: "narrow" } }
304
+ ]
305
+ });
306
+ const pageLanding = definePattern({
307
+ id: "page-landing",
308
+ label: "Landingspagina",
309
+ category: "Pagina's",
310
+ description: "Hero, kenmerken, galerij, review, prijzen, FAQ en een afsluitende CTA.",
311
+ blocks: [
312
+ ...heroCentered.blocks,
313
+ ...featuresThree.blocks,
314
+ ...gallerySection.blocks,
315
+ ...quoteSection.blocks,
316
+ ...pricingThree.blocks,
317
+ ...faqSection.blocks,
318
+ ...ctaBanner.blocks
319
+ ]
320
+ });
321
+ const pageServices = definePattern({
322
+ id: "page-services",
323
+ label: "Dienstenpagina",
324
+ category: "Pagina's",
325
+ description: "Introductie, drie diensten in kolommen, stappenplan en CTA.",
326
+ blocks: [
327
+ { _type: "hero", title: "Onze diensten", subtitle: "Waar we je mee helpen.", align: "center", vAlign: "center", minHeight: "sm" },
328
+ { _type: "richText", html: "<p>Korte introductie: voor wie werk je, wat maakt jullie aanpak anders?</p>", _style: { width: "narrow", align: "center", paddingY: "sm" } },
329
+ ...featuresThree.blocks.slice(1),
330
+ ...stepsSection.blocks,
331
+ ...ctaBanner.blocks
332
+ ]
333
+ });
334
+ const pageAbout = definePattern({
335
+ id: "page-about",
336
+ label: "Over ons-pagina",
337
+ category: "Pagina's",
338
+ description: "Verhaal met beeld, uitgelichte quote en CTA.",
339
+ blocks: [
340
+ { _type: "hero", title: "Over ons", subtitle: "Wie we zijn en waar we voor staan.", align: "center", vAlign: "center", minHeight: "sm" },
341
+ ...aboutImageText.blocks,
342
+ ...quoteSection.blocks,
343
+ ...ctaBanner.blocks
344
+ ]
345
+ });
346
+ const pageContact = definePattern({
347
+ id: "page-contact",
348
+ label: "Contactpagina",
349
+ category: "Pagina's",
350
+ description: "Contactgegevens naast openingstijden; voeg eventueel je formulier-blok toe.",
351
+ blocks: [
352
+ { _type: "hero", title: "Contact", subtitle: "We horen graag van je.", align: "center", vAlign: "center", minHeight: "sm" },
353
+ {
354
+ _type: "columns",
355
+ _style: { paddingY: "md" },
356
+ columns: [
357
+ { blocks: [{ _type: "richText", html: "<h2>Neem contact op</h2><p>Adres, telefoonnummer en e-mailadres \u2014 of loop gerust binnen.</p>" }] },
358
+ { blocks: [{ _type: "openingHours", heading: "Openingstijden", rows: [{ day: "Ma\u2013Vr", hours: "09:00\u201317:00" }, { day: "Za", hours: "10:00\u201316:00" }, { day: "Zo", hours: "Gesloten" }] }] }
359
+ ]
360
+ },
361
+ ...ctaBanner.blocks
362
+ ]
363
+ });
364
+ const builtinPatterns = [
365
+ heroCentered,
366
+ featuresThree,
367
+ featuresCards,
368
+ aboutImageText,
369
+ teamSection,
370
+ ctaBanner,
371
+ newsletterSection,
372
+ pricingThree,
373
+ faqSection,
374
+ gallerySection,
375
+ quoteSection,
376
+ testimonialsSection,
377
+ countersSection,
378
+ logosSection,
379
+ stepsSection,
380
+ portfolioSection,
381
+ jobsSection,
382
+ beforeAfterSection,
383
+ contentWithSidebar,
384
+ pageLanding,
385
+ pageServices,
386
+ pageAbout,
387
+ pageContact
388
+ ];
389
+ export {
390
+ aboutImageText,
391
+ beforeAfterSection,
392
+ builtinPatterns,
393
+ contentWithSidebar,
394
+ countersSection,
395
+ ctaBanner,
396
+ faqSection,
397
+ featuresCards,
398
+ featuresThree,
399
+ gallerySection,
400
+ heroCentered,
401
+ jobsSection,
402
+ logosSection,
403
+ newsletterSection,
404
+ pageAbout,
405
+ pageContact,
406
+ pageLanding,
407
+ pageServices,
408
+ portfolioSection,
409
+ pricingThree,
410
+ quoteSection,
411
+ stepsSection,
412
+ teamSection,
413
+ testimonialsSection
414
+ };
415
+ //# sourceMappingURL=builtins.js.map