@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,22 @@
1
+ import { type ReactNode } from "react";
2
+ /**
3
+ * Eén bevestigingsdialoog voor de hele admin, op de **Astryx AlertDialog** (role="alertdialog",
4
+ * niet weg te klikken). `useConfirm()` geeft een functie die een Promise<bool> teruggeeft — zo
5
+ * vervang je een onveilige directe verwijdering door een nette "weet je het zeker?". Monteer
6
+ * `<ConfirmHost/>` één keer in `AdminApp`. De API blijft gelijk (geen call-site-wijziging).
7
+ */
8
+ export interface ConfirmOptions {
9
+ title: string;
10
+ description?: ReactNode;
11
+ confirmLabel?: string;
12
+ cancelLabel?: string;
13
+ /** "danger" = destructieve (rode) bevestigingsknop (verwijderen e.d.). */
14
+ tone?: "default" | "danger";
15
+ }
16
+ type ConfirmFn = (opts: ConfirmOptions) => Promise<boolean>;
17
+ export declare function ConfirmHost({ children }: {
18
+ children: ReactNode;
19
+ }): import("react").JSX.Element;
20
+ /** Geeft een `confirm(opts) => Promise<boolean>`. Buiten een `ConfirmHost` valt het terug op `false`. */
21
+ export declare function useConfirm(): ConfirmFn;
22
+ export {};
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { createContext, useCallback, useContext, useRef, useState } from "react";
4
+ import { AlertDialog } from "@astryxdesign/core/AlertDialog";
5
+ const ConfirmContext = createContext(null);
6
+ function ConfirmHost({ children }) {
7
+ const [open, setOpen] = useState(false);
8
+ const [opts, setOpts] = useState(null);
9
+ const resolver = useRef(null);
10
+ const confirm = useCallback((o) => {
11
+ setOpts(o);
12
+ setOpen(true);
13
+ return new Promise((resolve) => {
14
+ resolver.current = resolve;
15
+ });
16
+ }, []);
17
+ const close = useCallback((value) => {
18
+ setOpen(false);
19
+ resolver.current?.(value);
20
+ resolver.current = null;
21
+ }, []);
22
+ return /* @__PURE__ */ jsxs(ConfirmContext.Provider, { value: confirm, children: [
23
+ children,
24
+ opts && /* @__PURE__ */ jsx(
25
+ AlertDialog,
26
+ {
27
+ isOpen: open,
28
+ onOpenChange: (o) => !o && close(false),
29
+ title: opts.title,
30
+ description: typeof opts.description === "string" ? opts.description : " ",
31
+ cancelLabel: opts.cancelLabel ?? "Annuleren",
32
+ actionLabel: opts.confirmLabel ?? "Bevestigen",
33
+ actionVariant: opts.tone === "danger" ? "destructive" : "primary",
34
+ onAction: () => close(true)
35
+ }
36
+ )
37
+ ] });
38
+ }
39
+ function useConfirm() {
40
+ const ctx = useContext(ConfirmContext);
41
+ return ctx ?? (async () => false);
42
+ }
43
+ export {
44
+ ConfirmHost,
45
+ useConfirm
46
+ };
47
+ //# sourceMappingURL=ConfirmDialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/ConfirmDialog.tsx"],"sourcesContent":["\"use client\";\n\nimport { createContext, useCallback, useContext, useRef, useState, type ReactNode } from \"react\";\nimport { AlertDialog } from \"@astryxdesign/core/AlertDialog\";\n\n/**\n * Eén bevestigingsdialoog voor de hele admin, op de **Astryx AlertDialog** (role=\"alertdialog\",\n * niet weg te klikken). `useConfirm()` geeft een functie die een Promise<bool> teruggeeft — zo\n * vervang je een onveilige directe verwijdering door een nette \"weet je het zeker?\". Monteer\n * `<ConfirmHost/>` één keer in `AdminApp`. De API blijft gelijk (geen call-site-wijziging).\n */\nexport interface ConfirmOptions {\n title: string;\n description?: ReactNode;\n confirmLabel?: string;\n cancelLabel?: string;\n /** \"danger\" = destructieve (rode) bevestigingsknop (verwijderen e.d.). */\n tone?: \"default\" | \"danger\";\n}\n\ntype ConfirmFn = (opts: ConfirmOptions) => Promise<boolean>;\n\nconst ConfirmContext = createContext<ConfirmFn | null>(null);\n\nexport function ConfirmHost({ children }: { children: ReactNode }) {\n const [open, setOpen] = useState(false);\n const [opts, setOpts] = useState<ConfirmOptions | null>(null);\n const resolver = useRef<((v: boolean) => void) | null>(null);\n\n const confirm = useCallback<ConfirmFn>((o) => {\n setOpts(o);\n setOpen(true);\n return new Promise<boolean>((resolve) => {\n resolver.current = resolve;\n });\n }, []);\n\n const close = useCallback((value: boolean) => {\n setOpen(false);\n resolver.current?.(value);\n resolver.current = null;\n }, []);\n\n return (\n <ConfirmContext.Provider value={confirm}>\n {children}\n {opts && (\n <AlertDialog\n isOpen={open}\n onOpenChange={(o) => !o && close(false)}\n title={opts.title}\n description={typeof opts.description === \"string\" ? opts.description : \" \"}\n cancelLabel={opts.cancelLabel ?? \"Annuleren\"}\n actionLabel={opts.confirmLabel ?? \"Bevestigen\"}\n actionVariant={opts.tone === \"danger\" ? \"destructive\" : \"primary\"}\n onAction={() => close(true)}\n />\n )}\n </ConfirmContext.Provider>\n );\n}\n\n/** Geeft een `confirm(opts) => Promise<boolean>`. Buiten een `ConfirmHost` valt het terug op `false`. */\nexport function useConfirm(): ConfirmFn {\n const ctx = useContext(ConfirmContext);\n return ctx ?? (async () => false);\n}\n"],"mappings":";AA4CI,SAGI,KAHJ;AA1CJ,SAAS,eAAe,aAAa,YAAY,QAAQ,gBAAgC;AACzF,SAAS,mBAAmB;AAmB5B,MAAM,iBAAiB,cAAgC,IAAI;AAEpD,SAAS,YAAY,EAAE,SAAS,GAA4B;AACjE,QAAM,CAAC,MAAM,OAAO,IAAI,SAAS,KAAK;AACtC,QAAM,CAAC,MAAM,OAAO,IAAI,SAAgC,IAAI;AAC5D,QAAM,WAAW,OAAsC,IAAI;AAE3D,QAAM,UAAU,YAAuB,CAAC,MAAM;AAC5C,YAAQ,CAAC;AACT,YAAQ,IAAI;AACZ,WAAO,IAAI,QAAiB,CAAC,YAAY;AACvC,eAAS,UAAU;AAAA,IACrB,CAAC;AAAA,EACH,GAAG,CAAC,CAAC;AAEL,QAAM,QAAQ,YAAY,CAAC,UAAmB;AAC5C,YAAQ,KAAK;AACb,aAAS,UAAU,KAAK;AACxB,aAAS,UAAU;AAAA,EACrB,GAAG,CAAC,CAAC;AAEL,SACE,qBAAC,eAAe,UAAf,EAAwB,OAAO,SAC7B;AAAA;AAAA,IACA,QACC;AAAA,MAAC;AAAA;AAAA,QACC,QAAQ;AAAA,QACR,cAAc,CAAC,MAAM,CAAC,KAAK,MAAM,KAAK;AAAA,QACtC,OAAO,KAAK;AAAA,QACZ,aAAa,OAAO,KAAK,gBAAgB,WAAW,KAAK,cAAc;AAAA,QACvE,aAAa,KAAK,eAAe;AAAA,QACjC,aAAa,KAAK,gBAAgB;AAAA,QAClC,eAAe,KAAK,SAAS,WAAW,gBAAgB;AAAA,QACxD,UAAU,MAAM,MAAM,IAAI;AAAA;AAAA,IAC5B;AAAA,KAEJ;AAEJ;AAGO,SAAS,aAAwB;AACtC,QAAM,MAAM,WAAW,cAAc;AACrC,SAAO,QAAQ,YAAY;AAC7B;","names":[]}
@@ -0,0 +1,3 @@
1
+ import { type ClassValue } from "clsx";
2
+ /** Tailwind-vriendelijke className-merge. */
3
+ export declare function cn(...inputs: ClassValue[]): string;
@@ -0,0 +1,9 @@
1
+ import { clsx } from "clsx";
2
+ import { twMerge } from "tailwind-merge";
3
+ function cn(...inputs) {
4
+ return twMerge(clsx(inputs));
5
+ }
6
+ export {
7
+ cn
8
+ };
9
+ //# sourceMappingURL=cn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/cn.ts"],"sourcesContent":["import { clsx, type ClassValue } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/** Tailwind-vriendelijke className-merge. */\nexport function cn(...inputs: ClassValue[]): string {\n return twMerge(clsx(inputs));\n}\n"],"mappings":"AAAA,SAAS,YAA6B;AACtC,SAAS,eAAe;AAGjB,SAAS,MAAM,QAA8B;AAClD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC7B;","names":[]}
@@ -0,0 +1,9 @@
1
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
2
+ export declare const Dialog: import("react").FC<DialogPrimitive.DialogProps>;
3
+ export declare const DialogTrigger: import("react").ForwardRefExoticComponent<DialogPrimitive.DialogTriggerProps & import("react").RefAttributes<HTMLButtonElement>>;
4
+ export declare const DialogClose: import("react").ForwardRefExoticComponent<DialogPrimitive.DialogCloseProps & import("react").RefAttributes<HTMLButtonElement>>;
5
+ export declare function DialogContent({ className, children, title, ...props }: React.ComponentProps<typeof DialogPrimitive.Content> & {
6
+ title: string;
7
+ }): import("react").JSX.Element;
8
+ export declare function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>): import("react").JSX.Element;
9
+ export declare function DialogFooter({ className, ...props }: React.ComponentProps<"div">): import("react").JSX.Element;
@@ -0,0 +1,47 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import * as DialogPrimitive from "@radix-ui/react-dialog";
4
+ import { cn } from "./cn";
5
+ const Dialog = DialogPrimitive.Root;
6
+ const DialogTrigger = DialogPrimitive.Trigger;
7
+ const DialogClose = DialogPrimitive.Close;
8
+ function DialogContent({
9
+ className,
10
+ children,
11
+ title,
12
+ ...props
13
+ }) {
14
+ const container = typeof document !== "undefined" ? document.querySelector(".xicms-ve") ?? document.querySelector(".xicms-admin") : null;
15
+ return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, { container: container ?? void 0, children: [
16
+ /* @__PURE__ */ jsx(DialogPrimitive.Overlay, { className: "fixed inset-0 z-[10010] bg-black/50" }),
17
+ /* @__PURE__ */ jsxs(
18
+ DialogPrimitive.Content,
19
+ {
20
+ className: cn(
21
+ "fixed left-1/2 top-1/2 z-[10011] w-[92vw] max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-xl bg-white p-5 shadow-xl focus:outline-none",
22
+ className
23
+ ),
24
+ ...props,
25
+ children: [
26
+ /* @__PURE__ */ jsx(DialogPrimitive.Title, { className: "mb-3 text-lg font-semibold", children: title }),
27
+ children
28
+ ]
29
+ }
30
+ )
31
+ ] });
32
+ }
33
+ function DialogDescription({ className, ...props }) {
34
+ return /* @__PURE__ */ jsx(DialogPrimitive.Description, { className: cn("text-sm text-slate-600", className), ...props });
35
+ }
36
+ function DialogFooter({ className, ...props }) {
37
+ return /* @__PURE__ */ jsx("div", { className: cn("mt-5 flex items-center justify-end gap-2", className), ...props });
38
+ }
39
+ export {
40
+ Dialog,
41
+ DialogClose,
42
+ DialogContent,
43
+ DialogDescription,
44
+ DialogFooter,
45
+ DialogTrigger
46
+ };
47
+ //# sourceMappingURL=dialog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/dialog.tsx"],"sourcesContent":["\"use client\";\n\nimport * as DialogPrimitive from \"@radix-ui/react-dialog\";\nimport { cn } from \"./cn\";\n\nexport const Dialog = DialogPrimitive.Root;\nexport const DialogTrigger = DialogPrimitive.Trigger;\nexport const DialogClose = DialogPrimitive.Close;\n\nexport function DialogContent({\n className,\n children,\n title,\n ...props\n}: React.ComponentProps<typeof DialogPrimitive.Content> & { title: string }) {\n // De admin-Tailwind is gescoped onder `.xicms-admin` (important: \".xicms-admin\"). Radix portalt\n // standaard naar <body> — buiten die scope, waardoor de dialog volledig ONGESTYLED zou renderen\n // (static, geen achtergrond, achter de editor). Daarom portalen we IN de admin-scope.\n const container =\n typeof document !== \"undefined\"\n ? document.querySelector<HTMLElement>(\".xicms-ve\") ?? document.querySelector<HTMLElement>(\".xicms-admin\")\n : null;\n return (\n <DialogPrimitive.Portal container={container ?? undefined}>\n {/* Boven de VisualEditor-overlay (z-index 10000) zodat de kiezer niet erachter verdwijnt. */}\n <DialogPrimitive.Overlay className=\"fixed inset-0 z-[10010] bg-black/50\" />\n <DialogPrimitive.Content\n className={cn(\n \"fixed left-1/2 top-1/2 z-[10011] w-[92vw] max-w-lg -translate-x-1/2 -translate-y-1/2 rounded-xl bg-white p-5 shadow-xl focus:outline-none\",\n className,\n )}\n {...props}\n >\n <DialogPrimitive.Title className=\"mb-3 text-lg font-semibold\">{title}</DialogPrimitive.Title>\n {children}\n </DialogPrimitive.Content>\n </DialogPrimitive.Portal>\n );\n}\n\nexport function DialogDescription({ className, ...props }: React.ComponentProps<typeof DialogPrimitive.Description>) {\n return <DialogPrimitive.Description className={cn(\"text-sm text-slate-600\", className)} {...props} />;\n}\n\nexport function DialogFooter({ className, ...props }: React.ComponentProps<\"div\">) {\n return <div className={cn(\"mt-5 flex items-center justify-end gap-2\", className)} {...props} />;\n}\n"],"mappings":";AAyBM,cACA,YADA;AAvBN,YAAY,qBAAqB;AACjC,SAAS,UAAU;AAEZ,MAAM,SAAS,gBAAgB;AAC/B,MAAM,gBAAgB,gBAAgB;AACtC,MAAM,cAAc,gBAAgB;AAEpC,SAAS,cAAc;AAAA,EAC5B;AAAA,EACA;AAAA,EACA;AAAA,EACA,GAAG;AACL,GAA6E;AAI3E,QAAM,YACJ,OAAO,aAAa,cAChB,SAAS,cAA2B,WAAW,KAAK,SAAS,cAA2B,cAAc,IACtG;AACN,SACE,qBAAC,gBAAgB,QAAhB,EAAuB,WAAW,aAAa,QAE9C;AAAA,wBAAC,gBAAgB,SAAhB,EAAwB,WAAU,uCAAsC;AAAA,IACzE;AAAA,MAAC,gBAAgB;AAAA,MAAhB;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACA;AAAA,QACF;AAAA,QACC,GAAG;AAAA,QAEJ;AAAA,8BAAC,gBAAgB,OAAhB,EAAsB,WAAU,8BAA8B,iBAAM;AAAA,UACpE;AAAA;AAAA;AAAA,IACH;AAAA,KACF;AAEJ;AAEO,SAAS,kBAAkB,EAAE,WAAW,GAAG,MAAM,GAA6D;AACnH,SAAO,oBAAC,gBAAgB,aAAhB,EAA4B,WAAW,GAAG,0BAA0B,SAAS,GAAI,GAAG,OAAO;AACrG;AAEO,SAAS,aAAa,EAAE,WAAW,GAAG,MAAM,GAAgC;AACjF,SAAO,oBAAC,SAAI,WAAW,GAAG,4CAA4C,SAAS,GAAI,GAAG,OAAO;AAC/F;","names":[]}
@@ -0,0 +1,7 @@
1
+ export { cn } from "./cn";
2
+ export { Button, Input, Textarea, Field, Card, Badge } from "./primitives";
3
+ export { ToastProvider, useToast } from "./toast";
4
+ export { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs";
5
+ export { Dialog, DialogTrigger, DialogClose, DialogContent } from "./dialog";
6
+ export { Select } from "./select";
7
+ export { Switch } from "./switch";
@@ -0,0 +1,29 @@
1
+ import { cn } from "./cn";
2
+ import { Button, Input, Textarea, Field, Card, Badge } from "./primitives";
3
+ import { ToastProvider, useToast } from "./toast";
4
+ import { Tabs, TabsList, TabsTrigger, TabsContent } from "./tabs";
5
+ import { Dialog, DialogTrigger, DialogClose, DialogContent } from "./dialog";
6
+ import { Select } from "./select";
7
+ import { Switch } from "./switch";
8
+ export {
9
+ Badge,
10
+ Button,
11
+ Card,
12
+ Dialog,
13
+ DialogClose,
14
+ DialogContent,
15
+ DialogTrigger,
16
+ Field,
17
+ Input,
18
+ Select,
19
+ Switch,
20
+ Tabs,
21
+ TabsContent,
22
+ TabsList,
23
+ TabsTrigger,
24
+ Textarea,
25
+ ToastProvider,
26
+ cn,
27
+ useToast
28
+ };
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/index.ts"],"sourcesContent":["export { cn } from \"./cn\";\nexport { Button, Input, Textarea, Field, Card, Badge } from \"./primitives\";\nexport { ToastProvider, useToast } from \"./toast\";\nexport { Tabs, TabsList, TabsTrigger, TabsContent } from \"./tabs\";\nexport { Dialog, DialogTrigger, DialogClose, DialogContent } from \"./dialog\";\nexport { Select } from \"./select\";\nexport { Switch } from \"./switch\";\n"],"mappings":"AAAA,SAAS,UAAU;AACnB,SAAS,QAAQ,OAAO,UAAU,OAAO,MAAM,aAAa;AAC5D,SAAS,eAAe,gBAAgB;AACxC,SAAS,MAAM,UAAU,aAAa,mBAAmB;AACzD,SAAS,QAAQ,eAAe,aAAa,qBAAqB;AAClE,SAAS,cAAc;AACvB,SAAS,cAAc;","names":[]}
@@ -0,0 +1,37 @@
1
+ import { type ButtonHTMLAttributes, type InputHTMLAttributes, type TextareaHTMLAttributes } from "react";
2
+ /**
3
+ * Admin-primitieven op het **Astryx design system**. Form-controls (Input/Textarea) renderen echte
4
+ * Astryx-componenten; bijzondere input-types (datetime-local, file…) die Astryx niet kent vallen
5
+ * robuust terug op een token-gestylede native input. Button/Card/Badge zijn token-gestyled (zelfde
6
+ * Astryx-huisstijl) — bewust geen Astryx Button (die werkt op `label`/`clickAction` i.p.v. children/
7
+ * onClick, wat de ~honderd editor-call-sites zou breken). De API blijft gelijk → robuust.
8
+ */
9
+ type Variant = "primary" | "secondary" | "ghost" | "danger";
10
+ type Size = "sm" | "md";
11
+ export declare const Button: import("react").ForwardRefExoticComponent<ButtonHTMLAttributes<HTMLButtonElement> & {
12
+ variant?: Variant;
13
+ size?: Size;
14
+ } & import("react").RefAttributes<HTMLButtonElement>>;
15
+ /**
16
+ * Tekstinvoer. text/email → Astryx TextInput; number → Astryx NumberInput; overige types
17
+ * (datetime-local, search, …) → token-gestylede native input. Het label komt van het omliggende
18
+ * `Field`; hier dus `isLabelHidden`.
19
+ */
20
+ export declare const Input: import("react").ForwardRefExoticComponent<InputHTMLAttributes<HTMLInputElement> & import("react").RefAttributes<HTMLInputElement>>;
21
+ export declare const Textarea: import("react").ForwardRefExoticComponent<TextareaHTMLAttributes<HTMLTextAreaElement> & import("react").RefAttributes<HTMLTextAreaElement>>;
22
+ /** Label-wrapper. Een `<div>` (geen `<label>`) zodat het geen geneste label vormt met de
23
+ * Astryx-controls (die hun eigen, verborgen label dragen). */
24
+ export declare function Field({ label, children, hint }: {
25
+ label: string;
26
+ children: React.ReactNode;
27
+ hint?: string;
28
+ }): import("react").JSX.Element;
29
+ export declare function Card({ className, children }: {
30
+ className?: string;
31
+ children: React.ReactNode;
32
+ }): import("react").JSX.Element;
33
+ export declare function Badge({ children, tone }: {
34
+ children: React.ReactNode;
35
+ tone?: "slate" | "green" | "amber";
36
+ }): import("react").JSX.Element;
37
+ export {};
@@ -0,0 +1,137 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { forwardRef } from "react";
4
+ import { cn } from "./cn";
5
+ import { TextInput } from "@astryxdesign/core/TextInput";
6
+ import { NumberInput } from "@astryxdesign/core/NumberInput";
7
+ import { TextArea } from "@astryxdesign/core/TextArea";
8
+ const VARIANT_STYLE = {
9
+ primary: { background: "var(--color-accent)", color: "var(--color-on-accent, #fff)" },
10
+ secondary: { background: "var(--color-background-muted)", color: "var(--color-text-primary)", border: "1px solid var(--color-border)" },
11
+ ghost: { background: "transparent", color: "var(--color-text-primary)" },
12
+ danger: { background: "var(--color-error, #dc2626)", color: "#fff" }
13
+ };
14
+ const SIZES = {
15
+ sm: "h-8 px-3 text-sm",
16
+ md: "h-10 px-4 text-sm"
17
+ };
18
+ const controlStyle = {
19
+ borderRadius: "var(--radius-element, 8px)",
20
+ border: "1px solid var(--color-border)",
21
+ background: "var(--color-background-body, #fff)",
22
+ color: "var(--color-text-primary)"
23
+ };
24
+ const Button = forwardRef(function Button2({ className, variant = "primary", size = "md", style, ...props }, ref) {
25
+ return /* @__PURE__ */ jsx(
26
+ "button",
27
+ {
28
+ ref,
29
+ className: cn(
30
+ "inline-flex items-center justify-center gap-2 font-medium transition-[filter] hover:brightness-95 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50",
31
+ SIZES[size],
32
+ className
33
+ ),
34
+ style: { borderRadius: "var(--radius-element, 8px)", ...VARIANT_STYLE[variant], ...style },
35
+ ...props
36
+ }
37
+ );
38
+ });
39
+ function syntheticEvent(value) {
40
+ return { target: { value }, currentTarget: { value } };
41
+ }
42
+ const Input = forwardRef(
43
+ function Input2({ className, style, type = "text", value, onChange, placeholder, ...rest }, ref) {
44
+ const lbl = rest["aria-label"] || placeholder || "Veld";
45
+ if (type === "number") {
46
+ return /* @__PURE__ */ jsx(
47
+ NumberInput,
48
+ {
49
+ ref,
50
+ label: lbl,
51
+ isLabelHidden: true,
52
+ placeholder,
53
+ value: value === "" || value == null ? void 0 : Number(value),
54
+ onChange: (n) => onChange?.(syntheticEvent(n == null ? "" : String(n)))
55
+ }
56
+ );
57
+ }
58
+ if (type === "text" || type === "email" || type === "password") {
59
+ return /* @__PURE__ */ jsx(
60
+ TextInput,
61
+ {
62
+ ref,
63
+ label: lbl,
64
+ isLabelHidden: true,
65
+ type,
66
+ placeholder,
67
+ value: String(value ?? ""),
68
+ onChange: (v) => onChange?.(syntheticEvent(v))
69
+ }
70
+ );
71
+ }
72
+ return /* @__PURE__ */ jsx(
73
+ "input",
74
+ {
75
+ ref,
76
+ type,
77
+ value,
78
+ onChange,
79
+ placeholder,
80
+ className: cn("h-10 w-full px-3 text-sm outline-none focus:ring-2", className),
81
+ style: { ...controlStyle, ...style },
82
+ ...rest
83
+ }
84
+ );
85
+ }
86
+ );
87
+ const Textarea = forwardRef(
88
+ function Textarea2({ value, onChange, placeholder, rows = 4, "aria-label": ariaLabel, ...rest }, ref) {
89
+ void rest;
90
+ return /* @__PURE__ */ jsx(
91
+ TextArea,
92
+ {
93
+ ref,
94
+ label: ariaLabel || placeholder || "Tekst",
95
+ isLabelHidden: true,
96
+ rows,
97
+ placeholder,
98
+ value: String(value ?? ""),
99
+ onChange: (v) => onChange?.({ target: { value: v }, currentTarget: { value: v } })
100
+ }
101
+ );
102
+ }
103
+ );
104
+ function Field({ label, children, hint }) {
105
+ return /* @__PURE__ */ jsxs("div", { className: "grid gap-1.5", children: [
106
+ /* @__PURE__ */ jsx("span", { className: "text-sm font-medium", style: { color: "var(--color-text-primary)" }, children: label }),
107
+ children,
108
+ hint && /* @__PURE__ */ jsx("span", { className: "text-xs", style: { color: "var(--color-text-secondary)" }, children: hint })
109
+ ] });
110
+ }
111
+ function Card({ className, children }) {
112
+ return /* @__PURE__ */ jsx(
113
+ "div",
114
+ {
115
+ className: cn("p-5", className),
116
+ style: { borderRadius: "var(--radius-container, 14px)", border: "1px solid var(--color-border)", background: "var(--color-background-card)" },
117
+ children
118
+ }
119
+ );
120
+ }
121
+ function Badge({ children, tone = "slate" }) {
122
+ const tones = {
123
+ slate: { background: "var(--color-background-muted)", color: "var(--color-text-secondary)" },
124
+ green: { background: "var(--color-background-green, #dcfce7)", color: "var(--color-text-green, #15803d)" },
125
+ amber: { background: "var(--color-background-orange, #ffedd5)", color: "var(--color-text-orange, #c2410c)" }
126
+ };
127
+ return /* @__PURE__ */ jsx("span", { className: "rounded-full px-2 py-0.5 text-xs font-medium", style: tones[tone], children });
128
+ }
129
+ export {
130
+ Badge,
131
+ Button,
132
+ Card,
133
+ Field,
134
+ Input,
135
+ Textarea
136
+ };
137
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/primitives.tsx"],"sourcesContent":["\"use client\";\n\nimport { forwardRef, type ButtonHTMLAttributes, type ChangeEvent, type CSSProperties, type InputHTMLAttributes, type TextareaHTMLAttributes } from \"react\";\nimport { cn } from \"./cn\";\nimport { TextInput } from \"@astryxdesign/core/TextInput\";\nimport { NumberInput } from \"@astryxdesign/core/NumberInput\";\nimport { TextArea } from \"@astryxdesign/core/TextArea\";\n\n/**\n * Admin-primitieven op het **Astryx design system**. Form-controls (Input/Textarea) renderen echte\n * Astryx-componenten; bijzondere input-types (datetime-local, file…) die Astryx niet kent vallen\n * robuust terug op een token-gestylede native input. Button/Card/Badge zijn token-gestyled (zelfde\n * Astryx-huisstijl) — bewust geen Astryx Button (die werkt op `label`/`clickAction` i.p.v. children/\n * onClick, wat de ~honderd editor-call-sites zou breken). De API blijft gelijk → robuust.\n */\n\ntype Variant = \"primary\" | \"secondary\" | \"ghost\" | \"danger\";\ntype Size = \"sm\" | \"md\";\n\nconst VARIANT_STYLE: Record<Variant, CSSProperties> = {\n primary: { background: \"var(--color-accent)\", color: \"var(--color-on-accent, #fff)\" },\n secondary: { background: \"var(--color-background-muted)\", color: \"var(--color-text-primary)\", border: \"1px solid var(--color-border)\" },\n ghost: { background: \"transparent\", color: \"var(--color-text-primary)\" },\n danger: { background: \"var(--color-error, #dc2626)\", color: \"#fff\" },\n};\nconst SIZES: Record<Size, string> = {\n sm: \"h-8 px-3 text-sm\",\n md: \"h-10 px-4 text-sm\",\n};\n\nconst controlStyle: CSSProperties = {\n borderRadius: \"var(--radius-element, 8px)\",\n border: \"1px solid var(--color-border)\",\n background: \"var(--color-background-body, #fff)\",\n color: \"var(--color-text-primary)\",\n};\n\nexport const Button = forwardRef<\n HTMLButtonElement,\n ButtonHTMLAttributes<HTMLButtonElement> & { variant?: Variant; size?: Size }\n>(function Button({ className, variant = \"primary\", size = \"md\", style, ...props }, ref) {\n return (\n <button\n ref={ref}\n className={cn(\n \"inline-flex items-center justify-center gap-2 font-medium transition-[filter] hover:brightness-95 focus-visible:outline-none disabled:cursor-not-allowed disabled:opacity-50\",\n SIZES[size],\n className,\n )}\n style={{ borderRadius: \"var(--radius-element, 8px)\", ...VARIANT_STYLE[variant], ...style }}\n {...props}\n />\n );\n});\n\n/** Bouwt een minimale synthetische change-event zodat bestaande `onChange={(e)=>…e.target.value}` blijft werken. */\nfunction syntheticEvent(value: string) {\n return { target: { value }, currentTarget: { value } } as unknown as ChangeEvent<HTMLInputElement>;\n}\n\n/**\n * Tekstinvoer. text/email → Astryx TextInput; number → Astryx NumberInput; overige types\n * (datetime-local, search, …) → token-gestylede native input. Het label komt van het omliggende\n * `Field`; hier dus `isLabelHidden`.\n */\nexport const Input = forwardRef<HTMLInputElement, InputHTMLAttributes<HTMLInputElement>>(\n function Input({ className, style, type = \"text\", value, onChange, placeholder, ...rest }, ref) {\n const lbl = (rest[\"aria-label\"] as string) || placeholder || \"Veld\";\n if (type === \"number\") {\n return (\n <NumberInput\n ref={ref}\n label={lbl}\n isLabelHidden\n placeholder={placeholder}\n value={value === \"\" || value == null ? undefined : Number(value)}\n onChange={(n) => onChange?.(syntheticEvent(n == null ? \"\" : String(n)))}\n />\n );\n }\n if (type === \"text\" || type === \"email\" || type === \"password\") {\n return (\n <TextInput\n ref={ref}\n label={lbl}\n isLabelHidden\n type={type as \"text\" | \"email\" | \"password\"}\n placeholder={placeholder}\n value={String(value ?? \"\")}\n onChange={(v) => onChange?.(syntheticEvent(v))}\n />\n );\n }\n // datetime-local, search, url, file, … → native, in de Astryx-huisstijl getokeniseerd.\n return (\n <input\n ref={ref}\n type={type}\n value={value}\n onChange={onChange}\n placeholder={placeholder}\n className={cn(\"h-10 w-full px-3 text-sm outline-none focus:ring-2\", className)}\n style={{ ...controlStyle, ...style }}\n {...rest}\n />\n );\n },\n);\n\nexport const Textarea = forwardRef<HTMLTextAreaElement, TextareaHTMLAttributes<HTMLTextAreaElement>>(\n function Textarea({ value, onChange, placeholder, rows = 4, \"aria-label\": ariaLabel, ...rest }, ref) {\n void rest;\n return (\n <TextArea\n ref={ref}\n label={(ariaLabel as string) || placeholder || \"Tekst\"}\n isLabelHidden\n rows={rows}\n placeholder={placeholder}\n value={String(value ?? \"\")}\n onChange={(v) =>\n onChange?.({ target: { value: v }, currentTarget: { value: v } } as unknown as ChangeEvent<HTMLTextAreaElement>)\n }\n />\n );\n },\n);\n\n/** Label-wrapper. Een `<div>` (geen `<label>`) zodat het geen geneste label vormt met de\n * Astryx-controls (die hun eigen, verborgen label dragen). */\nexport function Field({ label, children, hint }: { label: string; children: React.ReactNode; hint?: string }) {\n return (\n <div className=\"grid gap-1.5\">\n <span className=\"text-sm font-medium\" style={{ color: \"var(--color-text-primary)\" }}>{label}</span>\n {children}\n {hint && <span className=\"text-xs\" style={{ color: \"var(--color-text-secondary)\" }}>{hint}</span>}\n </div>\n );\n}\n\nexport function Card({ className, children }: { className?: string; children: React.ReactNode }) {\n return (\n <div\n className={cn(\"p-5\", className)}\n style={{ borderRadius: \"var(--radius-container, 14px)\", border: \"1px solid var(--color-border)\", background: \"var(--color-background-card)\" }}\n >\n {children}\n </div>\n );\n}\n\nexport function Badge({ children, tone = \"slate\" }: { children: React.ReactNode; tone?: \"slate\" | \"green\" | \"amber\" }) {\n const tones: Record<string, CSSProperties> = {\n slate: { background: \"var(--color-background-muted)\", color: \"var(--color-text-secondary)\" },\n green: { background: \"var(--color-background-green, #dcfce7)\", color: \"var(--color-text-green, #15803d)\" },\n amber: { background: \"var(--color-background-orange, #ffedd5)\", color: \"var(--color-text-orange, #c2410c)\" },\n };\n return (\n <span className=\"rounded-full px-2 py-0.5 text-xs font-medium\" style={tones[tone]}>\n {children}\n </span>\n );\n}\n"],"mappings":"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","names":["Button","Input","Textarea"]}
@@ -0,0 +1,11 @@
1
+ /** Admin-select op de Astryx Selector. API ongewijzigd (value/onValueChange/options). */
2
+ export declare function Select({ value, onValueChange, options, placeholder, className, }: {
3
+ value: string;
4
+ onValueChange: (v: string) => void;
5
+ options: {
6
+ value: string;
7
+ label: string;
8
+ }[];
9
+ placeholder?: string;
10
+ className?: string;
11
+ }): import("react").JSX.Element;
@@ -0,0 +1,27 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Selector } from "@astryxdesign/core/Selector";
4
+ function Select({
5
+ value,
6
+ onValueChange,
7
+ options,
8
+ placeholder = "Kies\u2026",
9
+ className
10
+ }) {
11
+ return /* @__PURE__ */ jsx(
12
+ Selector,
13
+ {
14
+ label: placeholder,
15
+ isLabelHidden: true,
16
+ placeholder,
17
+ className,
18
+ options: options.map((o) => ({ value: o.value, label: o.label })),
19
+ value,
20
+ onChange: (v) => onValueChange(v ?? "")
21
+ }
22
+ );
23
+ }
24
+ export {
25
+ Select
26
+ };
27
+ //# sourceMappingURL=select.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/select.tsx"],"sourcesContent":["\"use client\";\n\nimport { Selector } from \"@astryxdesign/core/Selector\";\n\n/** Admin-select op de Astryx Selector. API ongewijzigd (value/onValueChange/options). */\nexport function Select({\n value,\n onValueChange,\n options,\n placeholder = \"Kies…\",\n className,\n}: {\n value: string;\n onValueChange: (v: string) => void;\n options: { value: string; label: string }[];\n placeholder?: string;\n className?: string;\n}) {\n return (\n <Selector\n label={placeholder}\n isLabelHidden\n placeholder={placeholder}\n className={className}\n options={options.map((o) => ({ value: o.value, label: o.label }))}\n value={value}\n onChange={(v) => onValueChange((v as string) ?? \"\")}\n />\n );\n}\n"],"mappings":";AAmBI;AAjBJ,SAAS,gBAAgB;AAGlB,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AAAA,EACA,cAAc;AAAA,EACd;AACF,GAMG;AACD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO;AAAA,MACP,eAAa;AAAA,MACb;AAAA,MACA;AAAA,MACA,SAAS,QAAQ,IAAI,CAAC,OAAO,EAAE,OAAO,EAAE,OAAO,OAAO,EAAE,MAAM,EAAE;AAAA,MAChE;AAAA,MACA,UAAU,CAAC,MAAM,cAAe,KAAgB,EAAE;AAAA;AAAA,EACpD;AAEJ;","names":[]}
@@ -0,0 +1,6 @@
1
+ /** Admin-switch op de Astryx Switch. API ongewijzigd (checked/onCheckedChange/label). */
2
+ export declare function Switch({ checked, onCheckedChange, label, }: {
3
+ checked: boolean;
4
+ onCheckedChange: (v: boolean) => void;
5
+ label?: string;
6
+ }): import("react").JSX.Element;
@@ -0,0 +1,22 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { Switch as AstryxSwitch } from "@astryxdesign/core/Switch";
4
+ function Switch({
5
+ checked,
6
+ onCheckedChange,
7
+ label
8
+ }) {
9
+ return /* @__PURE__ */ jsx(
10
+ AstryxSwitch,
11
+ {
12
+ label: label ?? "Schakelaar",
13
+ isLabelHidden: !label,
14
+ value: checked,
15
+ onChange: (c) => onCheckedChange(c)
16
+ }
17
+ );
18
+ }
19
+ export {
20
+ Switch
21
+ };
22
+ //# sourceMappingURL=switch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/switch.tsx"],"sourcesContent":["\"use client\";\n\nimport { Switch as AstryxSwitch } from \"@astryxdesign/core/Switch\";\n\n/** Admin-switch op de Astryx Switch. API ongewijzigd (checked/onCheckedChange/label). */\nexport function Switch({\n checked,\n onCheckedChange,\n label,\n}: {\n checked: boolean;\n onCheckedChange: (v: boolean) => void;\n label?: string;\n}) {\n return (\n <AstryxSwitch\n label={label ?? \"Schakelaar\"}\n isLabelHidden={!label}\n value={checked}\n onChange={(c) => onCheckedChange(c)}\n />\n );\n}\n"],"mappings":";AAeI;AAbJ,SAAS,UAAU,oBAAoB;AAGhC,SAAS,OAAO;AAAA,EACrB;AAAA,EACA;AAAA,EACA;AACF,GAIG;AACD,SACE;AAAA,IAAC;AAAA;AAAA,MACC,OAAO,SAAS;AAAA,MAChB,eAAe,CAAC;AAAA,MAChB,OAAO;AAAA,MACP,UAAU,CAAC,MAAM,gBAAgB,CAAC;AAAA;AAAA,EACpC;AAEJ;","names":[]}
@@ -0,0 +1,5 @@
1
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
2
+ export declare const Tabs: import("react").ForwardRefExoticComponent<TabsPrimitive.TabsProps & import("react").RefAttributes<HTMLDivElement>>;
3
+ export declare function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>): import("react").JSX.Element;
4
+ export declare function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>): import("react").JSX.Element;
5
+ export declare function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>): import("react").JSX.Element;
@@ -0,0 +1,36 @@
1
+ "use client";
2
+ import { jsx } from "react/jsx-runtime";
3
+ import * as TabsPrimitive from "@radix-ui/react-tabs";
4
+ import { cn } from "./cn";
5
+ const Tabs = TabsPrimitive.Root;
6
+ function TabsList({ className, ...props }) {
7
+ return /* @__PURE__ */ jsx(
8
+ TabsPrimitive.List,
9
+ {
10
+ className: cn("flex flex-wrap gap-1 border-b border-slate-200", className),
11
+ ...props
12
+ }
13
+ );
14
+ }
15
+ function TabsTrigger({ className, ...props }) {
16
+ return /* @__PURE__ */ jsx(
17
+ TabsPrimitive.Trigger,
18
+ {
19
+ className: cn(
20
+ "rounded-t-lg px-4 py-2 text-sm font-medium text-slate-600 hover:text-slate-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 data-[state=active]:border-b-2 data-[state=active]:border-brand-600 data-[state=active]:text-brand-700",
21
+ className
22
+ ),
23
+ ...props
24
+ }
25
+ );
26
+ }
27
+ function TabsContent({ className, ...props }) {
28
+ return /* @__PURE__ */ jsx(TabsPrimitive.Content, { className: cn("pt-5 outline-none", className), ...props });
29
+ }
30
+ export {
31
+ Tabs,
32
+ TabsContent,
33
+ TabsList,
34
+ TabsTrigger
35
+ };
36
+ //# sourceMappingURL=tabs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/tabs.tsx"],"sourcesContent":["\"use client\";\n\nimport * as TabsPrimitive from \"@radix-ui/react-tabs\";\nimport { cn } from \"./cn\";\n\nexport const Tabs = TabsPrimitive.Root;\n\nexport function TabsList({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.List>) {\n return (\n <TabsPrimitive.List\n className={cn(\"flex flex-wrap gap-1 border-b border-slate-200\", className)}\n {...props}\n />\n );\n}\n\nexport function TabsTrigger({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Trigger>) {\n return (\n <TabsPrimitive.Trigger\n className={cn(\n \"rounded-t-lg px-4 py-2 text-sm font-medium text-slate-600 hover:text-slate-900 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-brand-500 data-[state=active]:border-b-2 data-[state=active]:border-brand-600 data-[state=active]:text-brand-700\",\n className,\n )}\n {...props}\n />\n );\n}\n\nexport function TabsContent({ className, ...props }: React.ComponentProps<typeof TabsPrimitive.Content>) {\n return <TabsPrimitive.Content className={cn(\"pt-5 outline-none\", className)} {...props} />;\n}\n"],"mappings":";AASI;AAPJ,YAAY,mBAAmB;AAC/B,SAAS,UAAU;AAEZ,MAAM,OAAO,cAAc;AAE3B,SAAS,SAAS,EAAE,WAAW,GAAG,MAAM,GAAoD;AACjG,SACE;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,WAAW,GAAG,kDAAkD,SAAS;AAAA,MACxE,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAuD;AACvG,SACE;AAAA,IAAC,cAAc;AAAA,IAAd;AAAA,MACC,WAAW;AAAA,QACT;AAAA,QACA;AAAA,MACF;AAAA,MACC,GAAG;AAAA;AAAA,EACN;AAEJ;AAEO,SAAS,YAAY,EAAE,WAAW,GAAG,MAAM,GAAuD;AACvG,SAAO,oBAAC,cAAc,SAAd,EAAsB,WAAW,GAAG,qBAAqB,SAAS,GAAI,GAAG,OAAO;AAC1F;","names":[]}
@@ -0,0 +1,19 @@
1
+ import { type ReactNode } from "react";
2
+ type ToastTone = "default" | "success" | "error";
3
+ interface ToastApi {
4
+ toast: (t: {
5
+ title: string;
6
+ description?: string;
7
+ tone?: ToastTone;
8
+ }) => void;
9
+ }
10
+ /**
11
+ * Admin-toasts op de **Astryx Toast** (ToastViewport + useToast). De bestaande API
12
+ * `toast({title, description, tone})` blijft, zodat de editors ongewijzigd blijven. Fouten blijven
13
+ * staan tot de gebruiker ze sluit (auto-hide uit); overige verdwijnen vanzelf.
14
+ */
15
+ export declare function ToastProvider({ children }: {
16
+ children: ReactNode;
17
+ }): import("react").JSX.Element;
18
+ export declare function useToast(): ToastApi;
19
+ export {};
@@ -0,0 +1,24 @@
1
+ "use client";
2
+ import { jsx, jsxs } from "react/jsx-runtime";
3
+ import { useToast as useAstryxToast, ToastViewport } from "@astryxdesign/core/Toast";
4
+ function ToastProvider({ children }) {
5
+ return /* @__PURE__ */ jsx(ToastViewport, { position: "bottomEnd", maxVisible: 4, children });
6
+ }
7
+ function useToast() {
8
+ const show = useAstryxToast();
9
+ return {
10
+ toast: ({ title, description, tone = "default" }) => show({
11
+ body: /* @__PURE__ */ jsxs("span", { children: [
12
+ /* @__PURE__ */ jsx("strong", { children: title }),
13
+ description ? /* @__PURE__ */ jsx("span", { style: { display: "block", opacity: 0.8 }, children: description }) : null
14
+ ] }),
15
+ type: tone === "error" ? "error" : "info",
16
+ isAutoHide: tone !== "error"
17
+ })
18
+ };
19
+ }
20
+ export {
21
+ ToastProvider,
22
+ useToast
23
+ };
24
+ //# sourceMappingURL=toast.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/admin/ui/toast.tsx"],"sourcesContent":["\"use client\";\n\nimport { type ReactNode } from \"react\";\nimport { useToast as useAstryxToast, ToastViewport } from \"@astryxdesign/core/Toast\";\n\ntype ToastTone = \"default\" | \"success\" | \"error\";\ninterface ToastApi {\n toast: (t: { title: string; description?: string; tone?: ToastTone }) => void;\n}\n\n/**\n * Admin-toasts op de **Astryx Toast** (ToastViewport + useToast). De bestaande API\n * `toast({title, description, tone})` blijft, zodat de editors ongewijzigd blijven. Fouten blijven\n * staan tot de gebruiker ze sluit (auto-hide uit); overige verdwijnen vanzelf.\n */\nexport function ToastProvider({ children }: { children: ReactNode }) {\n return (\n <ToastViewport position=\"bottomEnd\" maxVisible={4}>\n {children}\n </ToastViewport>\n );\n}\n\nexport function useToast(): ToastApi {\n const show = useAstryxToast();\n return {\n toast: ({ title, description, tone = \"default\" }) =>\n show({\n body: (\n <span>\n <strong>{title}</strong>\n {description ? <span style={{ display: \"block\", opacity: 0.8 }}>{description}</span> : null}\n </span>\n ),\n type: tone === \"error\" ? \"error\" : \"info\",\n isAutoHide: tone !== \"error\",\n }),\n };\n}\n"],"mappings":";AAiBI,cAYM,YAZN;AAdJ,SAAS,YAAY,gBAAgB,qBAAqB;AAYnD,SAAS,cAAc,EAAE,SAAS,GAA4B;AACnE,SACE,oBAAC,iBAAc,UAAS,aAAY,YAAY,GAC7C,UACH;AAEJ;AAEO,SAAS,WAAqB;AACnC,QAAM,OAAO,eAAe;AAC5B,SAAO;AAAA,IACL,OAAO,CAAC,EAAE,OAAO,aAAa,OAAO,UAAU,MAC7C,KAAK;AAAA,MACH,MACE,qBAAC,UACC;AAAA,4BAAC,YAAQ,iBAAM;AAAA,QACd,cAAc,oBAAC,UAAK,OAAO,EAAE,SAAS,SAAS,SAAS,IAAI,GAAI,uBAAY,IAAU;AAAA,SACzF;AAAA,MAEF,MAAM,SAAS,UAAU,UAAU;AAAA,MACnC,YAAY,SAAS;AAAA,IACvB,CAAC;AAAA,EACL;AACF;","names":[]}
@@ -0,0 +1,10 @@
1
+ import "@xiwebdesign/xicms-core/admin.css";
2
+ /**
3
+ * Visuele/inline pagina-editor: opent als overlay over de live pagina, laadt de werkversie van de
4
+ * huidige route, en laat de editor blokken op een live canvas selecteren, herordenen, dupliceren,
5
+ * verwijderen en toevoegen — met autosave en publiceren. De zware code laadt pas bij openen
6
+ * (lazy, via EditorProvider), dus bezoekers downloaden hem nooit.
7
+ */
8
+ export default function VisualEditor({ onClose }: {
9
+ onClose: () => void;
10
+ }): import("react").JSX.Element;