@delmaredigital/payload-puck 0.1.3 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (565) hide show
  1. package/README.md +293 -1237
  2. package/dist/admin/EditWithPuckButton.d.ts +74 -0
  3. package/dist/admin/EditWithPuckButton.d.ts.map +1 -0
  4. package/dist/admin/EditWithPuckButton.js +114 -0
  5. package/dist/admin/EditWithPuckButton.js.map +1 -0
  6. package/dist/admin/EditWithPuckCell.d.ts +43 -0
  7. package/dist/admin/EditWithPuckCell.d.ts.map +1 -0
  8. package/dist/admin/EditWithPuckCell.js +66 -0
  9. package/dist/admin/EditWithPuckCell.js.map +1 -0
  10. package/dist/admin/PuckEditorView.d.ts +85 -0
  11. package/dist/admin/PuckEditorView.d.ts.map +1 -0
  12. package/dist/admin/PuckEditorView.js +135 -0
  13. package/dist/admin/PuckEditorView.js.map +1 -0
  14. package/dist/admin/client.d.ts +8 -104
  15. package/dist/admin/client.d.ts.map +1 -0
  16. package/dist/admin/client.js +14 -176
  17. package/dist/admin/client.js.map +1 -0
  18. package/dist/admin/generateAdminComponents.d.ts +51 -0
  19. package/dist/admin/generateAdminComponents.d.ts.map +1 -0
  20. package/dist/admin/generateAdminComponents.js +42 -0
  21. package/dist/admin/generateAdminComponents.js.map +1 -0
  22. package/dist/admin/index.d.ts +14 -150
  23. package/dist/admin/index.d.ts.map +1 -0
  24. package/dist/admin/index.js +17 -30
  25. package/dist/admin/index.js.map +1 -0
  26. package/dist/api/createPuckApiRoutes.d.ts +31 -0
  27. package/dist/api/createPuckApiRoutes.d.ts.map +1 -0
  28. package/dist/api/createPuckApiRoutes.js +193 -0
  29. package/dist/api/createPuckApiRoutes.js.map +1 -0
  30. package/dist/api/createPuckApiRoutesVersions.d.ts +28 -0
  31. package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -0
  32. package/dist/api/createPuckApiRoutesVersions.js +144 -0
  33. package/dist/api/createPuckApiRoutesVersions.js.map +1 -0
  34. package/dist/api/createPuckApiRoutesWithId.d.ts +34 -0
  35. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -0
  36. package/dist/api/createPuckApiRoutesWithId.js +251 -0
  37. package/dist/api/createPuckApiRoutesWithId.js.map +1 -0
  38. package/dist/api/index.d.ts +11 -431
  39. package/dist/api/index.d.ts.map +1 -0
  40. package/dist/api/index.js +40 -587
  41. package/dist/api/index.js.map +1 -0
  42. package/dist/api/types.d.ts +302 -0
  43. package/dist/api/types.d.ts.map +1 -0
  44. package/dist/api/types.js +2 -0
  45. package/dist/api/types.js.map +1 -0
  46. package/dist/api/utils/mapRootProps.d.ts +76 -0
  47. package/dist/api/utils/mapRootProps.d.ts.map +1 -0
  48. package/dist/api/utils/mapRootProps.js +169 -0
  49. package/dist/api/utils/mapRootProps.js.map +1 -0
  50. package/dist/collections/Templates.d.ts +9 -0
  51. package/dist/collections/Templates.d.ts.map +1 -0
  52. package/dist/collections/Templates.js +62 -0
  53. package/dist/collections/Templates.js.map +1 -0
  54. package/dist/components/AccordionClient.d.ts +20 -0
  55. package/dist/components/AccordionClient.d.ts.map +1 -0
  56. package/dist/components/AccordionClient.js +67 -0
  57. package/dist/components/AccordionClient.js.map +1 -0
  58. package/dist/components/AnimatedWrapper.d.ts +33 -0
  59. package/dist/components/AnimatedWrapper.d.ts.map +1 -0
  60. package/dist/components/AnimatedWrapper.js +61 -0
  61. package/dist/components/AnimatedWrapper.js.map +1 -0
  62. package/dist/components/exports.d.ts +54 -0
  63. package/dist/components/exports.d.ts.map +1 -0
  64. package/dist/components/exports.js +71 -0
  65. package/dist/components/exports.js.map +1 -0
  66. package/dist/components/index.d.ts +8 -219
  67. package/dist/components/index.d.ts.map +1 -0
  68. package/dist/components/index.js +15 -9155
  69. package/dist/components/index.js.map +1 -0
  70. package/dist/components/interactive/Accordion.d.ts +28 -0
  71. package/dist/components/interactive/Accordion.d.ts.map +1 -0
  72. package/dist/components/interactive/Accordion.js +159 -0
  73. package/dist/components/interactive/Accordion.js.map +1 -0
  74. package/dist/components/interactive/Accordion.server.d.ts +29 -0
  75. package/dist/components/interactive/Accordion.server.d.ts.map +1 -0
  76. package/dist/components/interactive/Accordion.server.js +30 -0
  77. package/dist/components/interactive/Accordion.server.js.map +1 -0
  78. package/dist/components/interactive/Button.d.ts +26 -0
  79. package/dist/components/interactive/Button.d.ts.map +1 -0
  80. package/dist/components/interactive/Button.js +133 -0
  81. package/dist/components/interactive/Button.js.map +1 -0
  82. package/dist/components/interactive/Button.server.d.ts +28 -0
  83. package/dist/components/interactive/Button.server.d.ts.map +1 -0
  84. package/dist/components/interactive/Button.server.js +96 -0
  85. package/dist/components/interactive/Button.server.js.map +1 -0
  86. package/dist/components/interactive/Card.d.ts +27 -0
  87. package/dist/components/interactive/Card.d.ts.map +1 -0
  88. package/dist/components/interactive/Card.js +128 -0
  89. package/dist/components/interactive/Card.js.map +1 -0
  90. package/dist/components/interactive/Card.server.d.ts +29 -0
  91. package/dist/components/interactive/Card.server.d.ts.map +1 -0
  92. package/dist/components/interactive/Card.server.js +77 -0
  93. package/dist/components/interactive/Card.server.js.map +1 -0
  94. package/dist/components/interactive/Divider.d.ts +18 -0
  95. package/dist/components/interactive/Divider.d.ts.map +1 -0
  96. package/dist/components/interactive/Divider.js +68 -0
  97. package/dist/components/interactive/Divider.js.map +1 -0
  98. package/dist/components/interactive/Divider.server.d.ts +20 -0
  99. package/dist/components/interactive/Divider.server.d.ts.map +1 -0
  100. package/dist/components/interactive/Divider.server.js +50 -0
  101. package/dist/components/interactive/Divider.server.js.map +1 -0
  102. package/dist/components/interactive/index.d.ts +10 -0
  103. package/dist/components/interactive/index.d.ts.map +1 -0
  104. package/dist/components/interactive/index.js +10 -0
  105. package/dist/components/interactive/index.js.map +1 -0
  106. package/dist/components/layout/Container.d.ts +29 -0
  107. package/dist/components/layout/Container.d.ts.map +1 -0
  108. package/dist/components/layout/Container.js +166 -0
  109. package/dist/components/layout/Container.js.map +1 -0
  110. package/dist/components/layout/Container.server.d.ts +32 -0
  111. package/dist/components/layout/Container.server.d.ts.map +1 -0
  112. package/dist/components/layout/Container.server.js +105 -0
  113. package/dist/components/layout/Container.server.js.map +1 -0
  114. package/dist/components/layout/Flex.d.ts +36 -0
  115. package/dist/components/layout/Flex.d.ts.map +1 -0
  116. package/dist/components/layout/Flex.js +183 -0
  117. package/dist/components/layout/Flex.js.map +1 -0
  118. package/dist/components/layout/Flex.server.d.ts +36 -0
  119. package/dist/components/layout/Flex.server.d.ts.map +1 -0
  120. package/dist/components/layout/Flex.server.js +97 -0
  121. package/dist/components/layout/Flex.server.js.map +1 -0
  122. package/dist/components/layout/Grid.d.ts +31 -0
  123. package/dist/components/layout/Grid.d.ts.map +1 -0
  124. package/dist/components/layout/Grid.js +164 -0
  125. package/dist/components/layout/Grid.js.map +1 -0
  126. package/dist/components/layout/Grid.server.d.ts +32 -0
  127. package/dist/components/layout/Grid.server.d.ts.map +1 -0
  128. package/dist/components/layout/Grid.server.js +92 -0
  129. package/dist/components/layout/Grid.server.js.map +1 -0
  130. package/dist/components/layout/Section.d.ts +35 -0
  131. package/dist/components/layout/Section.d.ts.map +1 -0
  132. package/dist/components/layout/Section.js +212 -0
  133. package/dist/components/layout/Section.js.map +1 -0
  134. package/dist/components/layout/Section.server.d.ts +35 -0
  135. package/dist/components/layout/Section.server.d.ts.map +1 -0
  136. package/dist/components/layout/Section.server.js +144 -0
  137. package/dist/components/layout/Section.server.js.map +1 -0
  138. package/dist/components/layout/Spacer.d.ts +18 -0
  139. package/dist/components/layout/Spacer.d.ts.map +1 -0
  140. package/dist/components/layout/Spacer.js +99 -0
  141. package/dist/components/layout/Spacer.js.map +1 -0
  142. package/dist/components/layout/Spacer.server.d.ts +21 -0
  143. package/dist/components/layout/Spacer.server.d.ts.map +1 -0
  144. package/dist/components/layout/Spacer.server.js +61 -0
  145. package/dist/components/layout/Spacer.server.js.map +1 -0
  146. package/dist/components/layout/Template.d.ts +35 -0
  147. package/dist/components/layout/Template.d.ts.map +1 -0
  148. package/dist/components/layout/Template.js +124 -0
  149. package/dist/components/layout/Template.js.map +1 -0
  150. package/dist/components/layout/Template.server.d.ts +32 -0
  151. package/dist/components/layout/Template.server.d.ts.map +1 -0
  152. package/dist/components/layout/Template.server.js +75 -0
  153. package/dist/components/layout/Template.server.js.map +1 -0
  154. package/dist/components/layout/index.d.ts +14 -0
  155. package/dist/components/layout/index.d.ts.map +1 -0
  156. package/dist/components/layout/index.js +13 -0
  157. package/dist/components/layout/index.js.map +1 -0
  158. package/dist/components/media/Image.d.ts +30 -0
  159. package/dist/components/media/Image.d.ts.map +1 -0
  160. package/dist/components/media/Image.js +123 -0
  161. package/dist/components/media/Image.js.map +1 -0
  162. package/dist/components/media/Image.server.d.ts +28 -0
  163. package/dist/components/media/Image.server.d.ts.map +1 -0
  164. package/dist/components/media/Image.server.js +76 -0
  165. package/dist/components/media/Image.server.js.map +1 -0
  166. package/dist/components/media/index.d.ts +7 -0
  167. package/dist/components/media/index.d.ts.map +1 -0
  168. package/dist/components/media/index.js +7 -0
  169. package/dist/components/media/index.js.map +1 -0
  170. package/dist/components/typography/Heading.d.ts +21 -0
  171. package/dist/components/typography/Heading.d.ts.map +1 -0
  172. package/dist/components/typography/Heading.js +71 -0
  173. package/dist/components/typography/Heading.js.map +1 -0
  174. package/dist/components/typography/Heading.server.d.ts +21 -0
  175. package/dist/components/typography/Heading.server.d.ts.map +1 -0
  176. package/dist/components/typography/Heading.server.js +49 -0
  177. package/dist/components/typography/Heading.server.js.map +1 -0
  178. package/dist/components/typography/RichText.d.ts +20 -0
  179. package/dist/components/typography/RichText.d.ts.map +1 -0
  180. package/dist/components/typography/RichText.editor.d.ts +11 -0
  181. package/dist/components/typography/RichText.editor.d.ts.map +1 -0
  182. package/dist/components/typography/RichText.editor.js +67 -0
  183. package/dist/components/typography/RichText.editor.js.map +1 -0
  184. package/dist/components/typography/RichText.js +73 -0
  185. package/dist/components/typography/RichText.js.map +1 -0
  186. package/dist/components/typography/RichText.server.d.ts +22 -0
  187. package/dist/components/typography/RichText.server.d.ts.map +1 -0
  188. package/dist/components/typography/RichText.server.js +52 -0
  189. package/dist/components/typography/RichText.server.js.map +1 -0
  190. package/dist/components/typography/Text.d.ts +20 -0
  191. package/dist/components/typography/Text.d.ts.map +1 -0
  192. package/dist/components/typography/Text.js +61 -0
  193. package/dist/components/typography/Text.js.map +1 -0
  194. package/dist/components/typography/Text.server.d.ts +21 -0
  195. package/dist/components/typography/Text.server.d.ts.map +1 -0
  196. package/dist/components/typography/Text.server.js +39 -0
  197. package/dist/components/typography/Text.server.js.map +1 -0
  198. package/dist/components/typography/index.d.ts +10 -0
  199. package/dist/components/typography/index.d.ts.map +1 -0
  200. package/dist/components/typography/index.js +10 -0
  201. package/dist/components/typography/index.js.map +1 -0
  202. package/dist/config/config.editor.d.ts +15 -56
  203. package/dist/config/config.editor.d.ts.map +1 -0
  204. package/dist/config/config.editor.js +125 -9364
  205. package/dist/config/config.editor.js.map +1 -0
  206. package/dist/config/index.d.ts +7 -33
  207. package/dist/config/index.d.ts.map +1 -0
  208. package/dist/config/index.js +110 -2028
  209. package/dist/config/index.js.map +1 -0
  210. package/dist/config/merge.d.ts +23 -0
  211. package/dist/config/merge.d.ts.map +1 -0
  212. package/dist/config/merge.js +80 -0
  213. package/dist/config/merge.js.map +1 -0
  214. package/dist/config/presets.d.ts +342 -0
  215. package/dist/config/presets.d.ts.map +1 -0
  216. package/dist/config/presets.js +247 -0
  217. package/dist/config/presets.js.map +1 -0
  218. package/dist/editor/PuckEditor.client.d.ts +131 -0
  219. package/dist/editor/PuckEditor.client.d.ts.map +1 -0
  220. package/dist/editor/PuckEditor.client.js +42 -0
  221. package/dist/editor/PuckEditor.client.js.map +1 -0
  222. package/dist/editor/PuckEditorCore.client.d.ts +141 -0
  223. package/dist/editor/PuckEditorCore.client.d.ts.map +1 -0
  224. package/dist/editor/PuckEditorCore.client.js +306 -0
  225. package/dist/editor/PuckEditorCore.client.js.map +1 -0
  226. package/dist/editor/components/HeaderActions.d.ts +109 -0
  227. package/dist/editor/components/HeaderActions.d.ts.map +1 -0
  228. package/dist/editor/components/HeaderActions.js +254 -0
  229. package/dist/editor/components/HeaderActions.js.map +1 -0
  230. package/dist/editor/components/IframeWrapper.d.ts +77 -0
  231. package/dist/editor/components/IframeWrapper.d.ts.map +1 -0
  232. package/dist/editor/components/IframeWrapper.js +257 -0
  233. package/dist/editor/components/IframeWrapper.js.map +1 -0
  234. package/dist/editor/components/LoadingState.d.ts +14 -0
  235. package/dist/editor/components/LoadingState.d.ts.map +1 -0
  236. package/dist/editor/components/LoadingState.js +12 -0
  237. package/dist/editor/components/LoadingState.js.map +1 -0
  238. package/dist/editor/components/PreviewModal.d.ts +54 -0
  239. package/dist/editor/components/PreviewModal.d.ts.map +1 -0
  240. package/dist/editor/components/PreviewModal.js +298 -0
  241. package/dist/editor/components/PreviewModal.js.map +1 -0
  242. package/dist/editor/components/VersionHistory.d.ts +44 -0
  243. package/dist/editor/components/VersionHistory.d.ts.map +1 -0
  244. package/dist/editor/components/VersionHistory.js +308 -0
  245. package/dist/editor/components/VersionHistory.js.map +1 -0
  246. package/dist/editor/hooks/useUnsavedChanges.d.ts +27 -0
  247. package/dist/editor/hooks/useUnsavedChanges.d.ts.map +1 -0
  248. package/dist/editor/hooks/useUnsavedChanges.js +55 -0
  249. package/dist/editor/hooks/useUnsavedChanges.js.map +1 -0
  250. package/dist/editor/index.d.ts +16 -756
  251. package/dist/editor/index.d.ts.map +1 -0
  252. package/dist/editor/index.js +49 -4533
  253. package/dist/editor/index.js.map +1 -0
  254. package/dist/editor/plugins/index.d.ts +12 -0
  255. package/dist/editor/plugins/index.d.ts.map +1 -0
  256. package/dist/editor/plugins/index.js +12 -0
  257. package/dist/editor/plugins/index.js.map +1 -0
  258. package/dist/endpoints/index.d.ts +46 -0
  259. package/dist/endpoints/index.d.ts.map +1 -0
  260. package/dist/endpoints/index.js +204 -0
  261. package/dist/endpoints/index.js.map +1 -0
  262. package/dist/exports/client.d.ts +19 -0
  263. package/dist/exports/client.d.ts.map +1 -0
  264. package/dist/exports/client.js +21 -0
  265. package/dist/exports/client.js.map +1 -0
  266. package/dist/exports/rsc.d.ts +19 -0
  267. package/dist/exports/rsc.d.ts.map +1 -0
  268. package/dist/exports/rsc.js +19 -0
  269. package/dist/exports/rsc.js.map +1 -0
  270. package/dist/fields/AlignmentField.d.ts +36 -0
  271. package/dist/fields/AlignmentField.d.ts.map +1 -0
  272. package/dist/fields/AlignmentField.js +120 -0
  273. package/dist/fields/AlignmentField.js.map +1 -0
  274. package/dist/fields/AnimationField.d.ts +44 -0
  275. package/dist/fields/AnimationField.d.ts.map +1 -0
  276. package/dist/fields/AnimationField.js +329 -0
  277. package/dist/fields/AnimationField.js.map +1 -0
  278. package/dist/fields/BackgroundField.d.ts +40 -0
  279. package/dist/fields/BackgroundField.d.ts.map +1 -0
  280. package/dist/fields/BackgroundField.js +413 -0
  281. package/dist/fields/BackgroundField.js.map +1 -0
  282. package/dist/fields/BorderField.d.ts +29 -0
  283. package/dist/fields/BorderField.d.ts.map +1 -0
  284. package/dist/fields/BorderField.js +264 -0
  285. package/dist/fields/BorderField.js.map +1 -0
  286. package/dist/fields/ColorPickerField.d.ts +43 -0
  287. package/dist/fields/ColorPickerField.d.ts.map +1 -0
  288. package/dist/fields/ColorPickerField.js +285 -0
  289. package/dist/fields/ColorPickerField.js.map +1 -0
  290. package/dist/fields/DimensionsField.d.ts +43 -0
  291. package/dist/fields/DimensionsField.d.ts.map +1 -0
  292. package/dist/fields/DimensionsField.js +532 -0
  293. package/dist/fields/DimensionsField.js.map +1 -0
  294. package/dist/fields/FlexAlignmentField.d.ts +61 -0
  295. package/dist/fields/FlexAlignmentField.d.ts.map +1 -0
  296. package/dist/fields/FlexAlignmentField.js +166 -0
  297. package/dist/fields/FlexAlignmentField.js.map +1 -0
  298. package/dist/fields/FolderPickerField.d.ts +17 -0
  299. package/dist/fields/FolderPickerField.d.ts.map +1 -0
  300. package/dist/fields/FolderPickerField.js +282 -0
  301. package/dist/fields/FolderPickerField.js.map +1 -0
  302. package/dist/fields/GradientEditor.d.ts +22 -0
  303. package/dist/fields/GradientEditor.d.ts.map +1 -0
  304. package/dist/fields/GradientEditor.js +322 -0
  305. package/dist/fields/GradientEditor.js.map +1 -0
  306. package/dist/fields/LockedField.d.ts +67 -0
  307. package/dist/fields/LockedField.d.ts.map +1 -0
  308. package/dist/fields/LockedField.js +170 -0
  309. package/dist/fields/LockedField.js.map +1 -0
  310. package/dist/fields/MarginField.d.ts +31 -0
  311. package/dist/fields/MarginField.d.ts.map +1 -0
  312. package/dist/fields/MarginField.js +233 -0
  313. package/dist/fields/MarginField.js.map +1 -0
  314. package/dist/fields/MediaField.d.ts +33 -0
  315. package/dist/fields/MediaField.d.ts.map +1 -0
  316. package/dist/fields/MediaField.js +677 -0
  317. package/dist/fields/MediaField.js.map +1 -0
  318. package/dist/fields/PaddingField.d.ts +29 -0
  319. package/dist/fields/PaddingField.d.ts.map +1 -0
  320. package/dist/fields/PaddingField.js +232 -0
  321. package/dist/fields/PaddingField.js.map +1 -0
  322. package/dist/fields/PageSegmentField.d.ts +17 -0
  323. package/dist/fields/PageSegmentField.d.ts.map +1 -0
  324. package/dist/fields/PageSegmentField.js +92 -0
  325. package/dist/fields/PageSegmentField.js.map +1 -0
  326. package/dist/fields/ResetField.d.ts +27 -0
  327. package/dist/fields/ResetField.d.ts.map +1 -0
  328. package/dist/fields/ResetField.js +122 -0
  329. package/dist/fields/ResetField.js.map +1 -0
  330. package/dist/fields/ResponsiveField.d.ts +38 -0
  331. package/dist/fields/ResponsiveField.d.ts.map +1 -0
  332. package/dist/fields/ResponsiveField.js +275 -0
  333. package/dist/fields/ResponsiveField.js.map +1 -0
  334. package/dist/fields/ResponsiveVisibilityField.d.ts +34 -0
  335. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -0
  336. package/dist/fields/ResponsiveVisibilityField.js +145 -0
  337. package/dist/fields/ResponsiveVisibilityField.js.map +1 -0
  338. package/dist/fields/SizeField.d.ts +54 -0
  339. package/dist/fields/SizeField.d.ts.map +1 -0
  340. package/dist/fields/SizeField.js +255 -0
  341. package/dist/fields/SizeField.js.map +1 -0
  342. package/dist/fields/SlugPreviewField.d.ts +16 -0
  343. package/dist/fields/SlugPreviewField.d.ts.map +1 -0
  344. package/dist/fields/SlugPreviewField.js +49 -0
  345. package/dist/fields/SlugPreviewField.js.map +1 -0
  346. package/dist/fields/TemplateField.d.ts +31 -0
  347. package/dist/fields/TemplateField.d.ts.map +1 -0
  348. package/dist/fields/TemplateField.js +428 -0
  349. package/dist/fields/TemplateField.js.map +1 -0
  350. package/dist/fields/TiptapField.d.ts +40 -0
  351. package/dist/fields/TiptapField.d.ts.map +1 -0
  352. package/dist/fields/TiptapField.js +857 -0
  353. package/dist/fields/TiptapField.js.map +1 -0
  354. package/dist/fields/TiptapModal.d.ts +10 -0
  355. package/dist/fields/TiptapModal.d.ts.map +1 -0
  356. package/dist/fields/TiptapModal.js +114 -0
  357. package/dist/fields/TiptapModal.js.map +1 -0
  358. package/dist/fields/TiptapModalField.d.ts +23 -0
  359. package/dist/fields/TiptapModalField.d.ts.map +1 -0
  360. package/dist/fields/TiptapModalField.js +55 -0
  361. package/dist/fields/TiptapModalField.js.map +1 -0
  362. package/dist/fields/TransformField.d.ts +31 -0
  363. package/dist/fields/TransformField.d.ts.map +1 -0
  364. package/dist/fields/TransformField.js +384 -0
  365. package/dist/fields/TransformField.js.map +1 -0
  366. package/dist/fields/VerticalAlignmentField.d.ts +35 -0
  367. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -0
  368. package/dist/fields/VerticalAlignmentField.js +120 -0
  369. package/dist/fields/VerticalAlignmentField.js.map +1 -0
  370. package/dist/fields/WidthField.d.ts +28 -0
  371. package/dist/fields/WidthField.d.ts.map +1 -0
  372. package/dist/fields/WidthField.js +339 -0
  373. package/dist/fields/WidthField.js.map +1 -0
  374. package/dist/fields/index.d.ts +44 -559
  375. package/dist/fields/index.d.ts.map +1 -0
  376. package/dist/fields/index.js +91 -7685
  377. package/dist/fields/index.js.map +1 -0
  378. package/dist/fields/richtext-output.css +219 -0
  379. package/dist/{shared-DeNKN95N.d.mts → fields/shared.d.ts} +114 -133
  380. package/dist/fields/shared.d.ts.map +1 -0
  381. package/dist/fields/shared.js +1542 -0
  382. package/dist/fields/shared.js.map +1 -0
  383. package/dist/fields/{index.css → tiptap-styles.css} +75 -166
  384. package/dist/hooks/index.d.ts +8 -0
  385. package/dist/hooks/index.d.ts.map +1 -0
  386. package/dist/hooks/index.js +8 -0
  387. package/dist/hooks/index.js.map +1 -0
  388. package/dist/hooks/useResponsiveStyles.d.ts +51 -0
  389. package/dist/hooks/useResponsiveStyles.d.ts.map +1 -0
  390. package/dist/hooks/useResponsiveStyles.js +149 -0
  391. package/dist/hooks/useResponsiveStyles.js.map +1 -0
  392. package/dist/hooks/useScrollAnimation.d.ts +56 -0
  393. package/dist/hooks/useScrollAnimation.d.ts.map +1 -0
  394. package/dist/hooks/useScrollAnimation.js +116 -0
  395. package/dist/hooks/useScrollAnimation.js.map +1 -0
  396. package/dist/index.d.ts +66 -6
  397. package/dist/index.d.ts.map +1 -0
  398. package/dist/index.js +67 -568
  399. package/dist/index.js.map +1 -0
  400. package/dist/layouts/LayoutWrapper.d.ts +33 -0
  401. package/dist/layouts/LayoutWrapper.d.ts.map +1 -0
  402. package/dist/layouts/LayoutWrapper.js +112 -0
  403. package/dist/layouts/LayoutWrapper.js.map +1 -0
  404. package/dist/layouts/defaults.d.ts +40 -0
  405. package/dist/layouts/defaults.d.ts.map +1 -0
  406. package/dist/layouts/defaults.js +106 -0
  407. package/dist/layouts/defaults.js.map +1 -0
  408. package/dist/layouts/index.d.ts +27 -94
  409. package/dist/layouts/index.d.ts.map +1 -0
  410. package/dist/layouts/index.js +30 -393
  411. package/dist/layouts/index.js.map +1 -0
  412. package/dist/{types-D7D3rZ1J.d.ts → layouts/types.d.ts} +8 -11
  413. package/dist/layouts/types.d.ts.map +1 -0
  414. package/dist/layouts/types.js +7 -0
  415. package/dist/layouts/types.js.map +1 -0
  416. package/dist/layouts/utils.d.ts +42 -0
  417. package/dist/layouts/utils.d.ts.map +1 -0
  418. package/dist/layouts/utils.js +83 -0
  419. package/dist/layouts/utils.js.map +1 -0
  420. package/dist/plugin/collections/Pages.d.ts +8 -0
  421. package/dist/plugin/collections/Pages.d.ts.map +1 -0
  422. package/dist/plugin/collections/Pages.js +117 -0
  423. package/dist/plugin/collections/Pages.js.map +1 -0
  424. package/dist/plugin/fields/index.d.ts +153 -0
  425. package/dist/plugin/fields/index.d.ts.map +1 -0
  426. package/dist/plugin/fields/index.js +364 -0
  427. package/dist/plugin/fields/index.js.map +1 -0
  428. package/dist/plugin/fields/types.d.ts +108 -0
  429. package/dist/plugin/fields/types.d.ts.map +1 -0
  430. package/dist/plugin/fields/types.js +7 -0
  431. package/dist/plugin/fields/types.js.map +1 -0
  432. package/dist/plugin/index.d.ts +13 -255
  433. package/dist/plugin/index.d.ts.map +1 -0
  434. package/dist/plugin/index.js +276 -553
  435. package/dist/plugin/index.js.map +1 -0
  436. package/dist/render/HybridPageRenderer.d.ts +85 -0
  437. package/dist/render/HybridPageRenderer.d.ts.map +1 -0
  438. package/dist/render/HybridPageRenderer.js +29 -0
  439. package/dist/render/HybridPageRenderer.js.map +1 -0
  440. package/dist/render/PageRenderer.d.ts +51 -0
  441. package/dist/render/PageRenderer.d.ts.map +1 -0
  442. package/dist/render/PageRenderer.js +61 -0
  443. package/dist/render/PageRenderer.js.map +1 -0
  444. package/dist/render/PuckEditor.client.d.ts +66 -0
  445. package/dist/render/PuckEditor.client.d.ts.map +1 -0
  446. package/dist/render/PuckEditor.client.js +66 -0
  447. package/dist/render/PuckEditor.client.js.map +1 -0
  448. package/dist/render/index.d.ts +8 -106
  449. package/dist/render/index.d.ts.map +1 -0
  450. package/dist/render/index.js +10 -2162
  451. package/dist/render/index.js.map +1 -0
  452. package/dist/theme/context.d.ts +59 -0
  453. package/dist/theme/context.d.ts.map +1 -0
  454. package/dist/theme/context.js +73 -0
  455. package/dist/theme/context.js.map +1 -0
  456. package/dist/theme/defaults.d.ts +39 -0
  457. package/dist/theme/defaults.d.ts.map +1 -0
  458. package/dist/theme/defaults.js +72 -0
  459. package/dist/theme/defaults.js.map +1 -0
  460. package/dist/theme/example.d.ts +30 -0
  461. package/dist/theme/example.d.ts.map +1 -0
  462. package/dist/theme/example.js +89 -0
  463. package/dist/theme/example.js.map +1 -0
  464. package/dist/theme/index.d.ts +17 -140
  465. package/dist/theme/index.d.ts.map +1 -0
  466. package/dist/theme/index.js +34 -200
  467. package/dist/theme/index.js.map +1 -0
  468. package/dist/{types-_6MvjyKv.d.ts → theme/types.d.ts} +8 -9
  469. package/dist/theme/types.d.ts.map +1 -0
  470. package/dist/theme/types.js +9 -0
  471. package/dist/theme/types.js.map +1 -0
  472. package/dist/theme/utils.d.ts +30 -0
  473. package/dist/theme/utils.d.ts.map +1 -0
  474. package/dist/theme/utils.js +84 -0
  475. package/dist/theme/utils.js.map +1 -0
  476. package/dist/{index-CQu6SzDg.d.mts → types/index.d.ts} +120 -115
  477. package/dist/types/index.d.ts.map +1 -0
  478. package/dist/types/index.js +2 -0
  479. package/dist/types/index.js.map +1 -0
  480. package/dist/utils/index.d.ts +23 -257
  481. package/dist/utils/index.d.ts.map +1 -0
  482. package/dist/utils/index.js +56 -425
  483. package/dist/utils/index.js.map +1 -0
  484. package/dist/utils/{index.d.mts → migration.d.ts} +16 -112
  485. package/dist/utils/migration.d.ts.map +1 -0
  486. package/dist/utils/migration.js +309 -0
  487. package/dist/utils/migration.js.map +1 -0
  488. package/dist/utils/validation.d.ts +89 -0
  489. package/dist/utils/validation.d.ts.map +1 -0
  490. package/dist/utils/validation.js +247 -0
  491. package/dist/utils/validation.js.map +1 -0
  492. package/dist/views/PuckConfigContext.d.ts +71 -0
  493. package/dist/views/PuckConfigContext.d.ts.map +1 -0
  494. package/dist/views/PuckConfigContext.js +45 -0
  495. package/dist/views/PuckConfigContext.js.map +1 -0
  496. package/dist/views/PuckEditorClient.d.ts +73 -0
  497. package/dist/views/PuckEditorClient.d.ts.map +1 -0
  498. package/dist/views/PuckEditorClient.js +130 -0
  499. package/dist/views/PuckEditorClient.js.map +1 -0
  500. package/dist/views/PuckEditorView.d.ts +19 -0
  501. package/dist/views/PuckEditorView.d.ts.map +1 -0
  502. package/dist/views/PuckEditorView.js +106 -0
  503. package/dist/views/PuckEditorView.js.map +1 -0
  504. package/dist/views/index.d.ts +10 -0
  505. package/dist/views/index.d.ts.map +1 -0
  506. package/dist/views/index.js +10 -0
  507. package/dist/views/index.js.map +1 -0
  508. package/package.json +50 -72
  509. package/dist/AccordionClient.d.mts +0 -24
  510. package/dist/AccordionClient.d.ts +0 -24
  511. package/dist/AccordionClient.js +0 -786
  512. package/dist/AccordionClient.mjs +0 -784
  513. package/dist/AnimatedWrapper.d.mts +0 -30
  514. package/dist/AnimatedWrapper.d.ts +0 -30
  515. package/dist/AnimatedWrapper.js +0 -379
  516. package/dist/AnimatedWrapper.mjs +0 -377
  517. package/dist/admin/client.d.mts +0 -108
  518. package/dist/admin/client.mjs +0 -173
  519. package/dist/admin/index.d.mts +0 -157
  520. package/dist/admin/index.mjs +0 -29
  521. package/dist/api/index.d.mts +0 -460
  522. package/dist/api/index.mjs +0 -578
  523. package/dist/components/index.css +0 -339
  524. package/dist/components/index.d.mts +0 -222
  525. package/dist/components/index.mjs +0 -9109
  526. package/dist/config/config.editor.css +0 -339
  527. package/dist/config/config.editor.d.mts +0 -153
  528. package/dist/config/config.editor.mjs +0 -9347
  529. package/dist/config/index.d.mts +0 -68
  530. package/dist/config/index.mjs +0 -2008
  531. package/dist/editor/index.d.mts +0 -784
  532. package/dist/editor/index.mjs +0 -4500
  533. package/dist/fields/index.d.mts +0 -600
  534. package/dist/fields/index.mjs +0 -7569
  535. package/dist/index-CoUQnyC3.d.ts +0 -327
  536. package/dist/index.d.mts +0 -6
  537. package/dist/index.mjs +0 -555
  538. package/dist/layouts/index.d.mts +0 -96
  539. package/dist/layouts/index.mjs +0 -378
  540. package/dist/plugin/index.d.mts +0 -289
  541. package/dist/plugin/index.mjs +0 -555
  542. package/dist/render/index.d.mts +0 -109
  543. package/dist/render/index.mjs +0 -2140
  544. package/dist/shared-DeNKN95N.d.ts +0 -546
  545. package/dist/theme/index.d.mts +0 -155
  546. package/dist/theme/index.mjs +0 -186
  547. package/dist/types-D7D3rZ1J.d.mts +0 -116
  548. package/dist/types-_6MvjyKv.d.mts +0 -104
  549. package/dist/utils/index.mjs +0 -412
  550. package/dist/utils-DaRs9t0J.d.mts +0 -85
  551. package/dist/utils-gAvt0Vhw.d.ts +0 -85
  552. package/examples/README.md +0 -247
  553. package/examples/api/puck/pages/[id]/route.ts +0 -64
  554. package/examples/api/puck/pages/[id]/versions/route.ts +0 -47
  555. package/examples/api/puck/pages/route.ts +0 -45
  556. package/examples/app/(frontend)/page.tsx +0 -94
  557. package/examples/app/(manage)/layout.tsx +0 -31
  558. package/examples/app/[...slug]/page.tsx +0 -101
  559. package/examples/app/pages/[id]/edit/page.tsx +0 -148
  560. package/examples/components/CustomBanner.tsx +0 -368
  561. package/examples/config/custom-config.ts +0 -223
  562. package/examples/config/payload.config.example.ts +0 -64
  563. package/examples/lib/puck-layouts.ts +0 -258
  564. package/examples/lib/puck-theme.ts +0 -94
  565. package/examples/styles/puck-theme.css +0 -171
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,309 @@
1
+ /**
2
+ * Migration Utility for Converting Legacy Payload CMS Pages to Puck Format
3
+ *
4
+ * This utility converts legacy Payload CMS page block structures to the
5
+ * Puck visual editor format, enabling seamless migration of existing content.
6
+ */
7
+ // =============================================================================
8
+ // Block Type Mapping
9
+ // =============================================================================
10
+ /**
11
+ * Maps legacy Payload block types (camelCase) to Puck component types (PascalCase).
12
+ * Extend this map to support additional custom block types.
13
+ */
14
+ export const blockTypeMap = {
15
+ heroBlock: 'Hero',
16
+ richTextBlock: 'RichText',
17
+ containerBlock: 'Container',
18
+ flexBlock: 'Flex',
19
+ gridBlock: 'Grid',
20
+ sectionBlock: 'Section',
21
+ spacerBlock: 'Spacer',
22
+ headingBlock: 'Heading',
23
+ textBlock: 'Text',
24
+ imageBlock: 'Image',
25
+ buttonBlock: 'Button',
26
+ cardBlock: 'Card',
27
+ dividerBlock: 'Divider',
28
+ accordionBlock: 'Accordion',
29
+ };
30
+ // =============================================================================
31
+ // ID Generation
32
+ // =============================================================================
33
+ /**
34
+ * Generates a unique ID for Puck content items.
35
+ * Uses a format compatible with Puck's internal ID scheme.
36
+ */
37
+ export function generatePuckId(legacyId) {
38
+ if (legacyId) {
39
+ return legacyId;
40
+ }
41
+ // Generate a random ID similar to Puck's format
42
+ return `puck-${Date.now()}-${Math.random().toString(36).substring(2, 9)}`;
43
+ }
44
+ // =============================================================================
45
+ // Prop Transformation Utilities
46
+ // =============================================================================
47
+ /**
48
+ * Transforms a Payload media reference (ID or Media object) to Puck MediaReference format.
49
+ * Handles both ID-only references and full Media objects.
50
+ */
51
+ export function transformMediaReference(media) {
52
+ if (media === null || media === undefined) {
53
+ return null;
54
+ }
55
+ if (typeof media === 'number' || typeof media === 'string') {
56
+ // Just an ID reference - Puck will need to fetch the full media
57
+ return { id: media };
58
+ }
59
+ // Full media object
60
+ return {
61
+ id: media.id,
62
+ url: media.url,
63
+ alt: media.alt,
64
+ width: media.width,
65
+ height: media.height,
66
+ };
67
+ }
68
+ /**
69
+ * Transforms Lexical rich text content to a serialized string format.
70
+ * Puck stores rich text as JSON strings for the custom editors.
71
+ */
72
+ export function transformRichText(richText) {
73
+ if (!richText) {
74
+ return undefined;
75
+ }
76
+ // If it's already a string, return as-is
77
+ if (typeof richText === 'string') {
78
+ return richText;
79
+ }
80
+ // If it's an object (Lexical format), serialize it
81
+ if (typeof richText === 'object') {
82
+ try {
83
+ return JSON.stringify(richText);
84
+ }
85
+ catch {
86
+ console.warn('[payload-puck] Failed to serialize rich text content');
87
+ return undefined;
88
+ }
89
+ }
90
+ return undefined;
91
+ }
92
+ /**
93
+ * Transforms an array of relationships to Puck format.
94
+ */
95
+ export function transformRelationshipArray(relations) {
96
+ if (!relations || !Array.isArray(relations)) {
97
+ return undefined;
98
+ }
99
+ return relations.map((rel) => {
100
+ if (typeof rel === 'number' || typeof rel === 'string') {
101
+ return { id: rel, title: '' }; // Title will need to be fetched
102
+ }
103
+ return {
104
+ id: rel.id,
105
+ title: rel.title || '',
106
+ slug: rel.slug,
107
+ };
108
+ });
109
+ }
110
+ // =============================================================================
111
+ // Block Prop Transformation
112
+ // =============================================================================
113
+ /**
114
+ * Known rich text field names in legacy blocks
115
+ */
116
+ const RICH_TEXT_FIELDS = [
117
+ 'headingRich',
118
+ 'subheadingRich',
119
+ 'textRich',
120
+ 'content',
121
+ 'leftContent',
122
+ 'rightContent',
123
+ 'bodyContent',
124
+ 'description',
125
+ ];
126
+ /**
127
+ * Known media field names in legacy blocks
128
+ */
129
+ const MEDIA_FIELDS = [
130
+ 'backgroundImage',
131
+ 'image',
132
+ 'rightImage',
133
+ 'leftImage',
134
+ 'profileImage',
135
+ 'media',
136
+ 'thumbnail',
137
+ 'icon',
138
+ ];
139
+ /**
140
+ * Transform props for a specific block type.
141
+ * Handles any block-specific transformations needed.
142
+ */
143
+ export function transformBlockProps(block, options) {
144
+ const { blockType, id, blockName, ...restProps } = block;
145
+ const richTextFields = options?.richTextFields || RICH_TEXT_FIELDS;
146
+ const mediaFields = options?.mediaFields || MEDIA_FIELDS;
147
+ const customTransformers = options?.customTransformers || {};
148
+ const props = {
149
+ id: generatePuckId(id),
150
+ };
151
+ // Process each prop based on known patterns
152
+ for (const [key, value] of Object.entries(restProps)) {
153
+ // Check for custom transformer first
154
+ if (customTransformers[key]) {
155
+ props[key] = customTransformers[key](value);
156
+ continue;
157
+ }
158
+ // Rich text fields - serialize Lexical content
159
+ if (richTextFields.includes(key)) {
160
+ props[key] = transformRichText(value);
161
+ continue;
162
+ }
163
+ // Media fields - transform to MediaReference
164
+ if (mediaFields.includes(key)) {
165
+ props[key] = transformMediaReference(value);
166
+ continue;
167
+ }
168
+ // Array fields that need ID generation for items
169
+ if (Array.isArray(value)) {
170
+ props[key] = value.map((item) => {
171
+ if (typeof item === 'object' && item !== null) {
172
+ const { id: itemId, ...itemRest } = item;
173
+ return {
174
+ ...itemRest,
175
+ id: itemId || generatePuckId(),
176
+ };
177
+ }
178
+ return item;
179
+ });
180
+ continue;
181
+ }
182
+ // Default: pass through as-is
183
+ props[key] = value;
184
+ }
185
+ return props;
186
+ }
187
+ /**
188
+ * Migrates a legacy Payload CMS page to Puck format.
189
+ *
190
+ * This function:
191
+ * 1. Extracts root props (title, pageLayout, etc.)
192
+ * 2. Converts each block in the layout array to a Puck content item
193
+ * 3. Maps block types from camelCase to PascalCase using blockTypeMap
194
+ * 4. Transforms block props appropriately
195
+ *
196
+ * @param page - The legacy Page object from Payload CMS
197
+ * @param options - Migration options
198
+ * @returns PuckPageData ready for use with the Puck editor
199
+ *
200
+ * @example
201
+ * ```ts
202
+ * const legacyPage = await payload.findByID({ collection: 'pages', id: pageId })
203
+ * const puckData = migrateLegacyToPuck(legacyPage)
204
+ * await payload.update({
205
+ * collection: 'pages',
206
+ * id: pageId,
207
+ * data: { puckData },
208
+ * })
209
+ * ```
210
+ */
211
+ export function migrateLegacyToPuck(page, options = {}) {
212
+ const { blockTypeMap: customBlockTypeMap, richTextFields, mediaFields, customTransformers, skipUnknownBlocks = true, onUnknownBlock, } = options;
213
+ // Merge custom block type map with defaults
214
+ const effectiveBlockTypeMap = {
215
+ ...blockTypeMap,
216
+ ...customBlockTypeMap,
217
+ };
218
+ // Build root props
219
+ const rootProps = {
220
+ title: page.title,
221
+ pageLayout: page.pageLayout || 'default',
222
+ };
223
+ // Convert layout blocks to Puck content items
224
+ const content = [];
225
+ if (page.layout && Array.isArray(page.layout)) {
226
+ for (const block of page.layout) {
227
+ const legacyBlock = block;
228
+ // Get the Puck component type from the legacy block type
229
+ const puckType = effectiveBlockTypeMap[legacyBlock.blockType];
230
+ if (!puckType) {
231
+ // Handle unknown block type
232
+ if (onUnknownBlock) {
233
+ const customItem = onUnknownBlock(legacyBlock);
234
+ if (customItem) {
235
+ content.push(customItem);
236
+ }
237
+ continue;
238
+ }
239
+ if (skipUnknownBlocks) {
240
+ console.warn(`[payload-puck] Unknown block type "${legacyBlock.blockType}" - skipping during migration`);
241
+ continue;
242
+ }
243
+ throw new Error(`Unknown block type "${legacyBlock.blockType}" encountered during migration`);
244
+ }
245
+ // Transform the block props
246
+ const transformedProps = transformBlockProps(legacyBlock, {
247
+ richTextFields,
248
+ mediaFields,
249
+ customTransformers,
250
+ });
251
+ // Create the Puck content item
252
+ const contentItem = {
253
+ type: puckType,
254
+ props: transformedProps,
255
+ };
256
+ content.push(contentItem);
257
+ }
258
+ }
259
+ // Build the complete Puck data structure
260
+ const puckData = {
261
+ root: {
262
+ props: rootProps,
263
+ },
264
+ content,
265
+ zones: {},
266
+ };
267
+ return puckData;
268
+ }
269
+ /**
270
+ * Gets a summary of a legacy page for migration preview.
271
+ * Useful for showing users what will be migrated before committing.
272
+ *
273
+ * @param page - The legacy page to preview
274
+ * @param customBlockTypeMap - Optional custom block type mapping
275
+ * @returns Preview information about the migration
276
+ */
277
+ export function getMigrationPreview(page, customBlockTypeMap) {
278
+ const warnings = [];
279
+ const blockTypes = [];
280
+ const unmappedBlockTypes = [];
281
+ const effectiveBlockTypeMap = {
282
+ ...blockTypeMap,
283
+ ...customBlockTypeMap,
284
+ };
285
+ if (page.layout && Array.isArray(page.layout)) {
286
+ for (const block of page.layout) {
287
+ const legacyBlock = block;
288
+ const puckType = effectiveBlockTypeMap[legacyBlock.blockType];
289
+ if (puckType) {
290
+ blockTypes.push(puckType);
291
+ }
292
+ else {
293
+ warnings.push(`Unknown block type: ${legacyBlock.blockType}`);
294
+ if (!unmappedBlockTypes.includes(legacyBlock.blockType)) {
295
+ unmappedBlockTypes.push(legacyBlock.blockType);
296
+ }
297
+ }
298
+ }
299
+ }
300
+ return {
301
+ title: page.title,
302
+ slug: page.slug,
303
+ blockCount: page.layout?.length || 0,
304
+ blockTypes,
305
+ warnings,
306
+ unmappedBlockTypes,
307
+ };
308
+ }
309
+ //# sourceMappingURL=migration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration.js","sourceRoot":"","sources":["../../src/utils/migration.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,89 @@
1
+ /**
2
+ * Puck Data Validation Utilities
3
+ *
4
+ * Provides validation functions for ensuring Puck data structures are well-formed.
5
+ */
6
+ import type { PuckPageData, PuckRootProps } from '../types';
7
+ /**
8
+ * Result of a validation operation
9
+ */
10
+ export interface ValidationResult {
11
+ valid: boolean;
12
+ errors: string[];
13
+ warnings: string[];
14
+ }
15
+ /**
16
+ * Options for validation
17
+ */
18
+ export interface ValidationOptions {
19
+ /**
20
+ * Whether to validate that all content items have IDs
21
+ * @default true
22
+ */
23
+ requireContentIds?: boolean;
24
+ /**
25
+ * Whether to validate root props
26
+ * @default true
27
+ */
28
+ validateRoot?: boolean;
29
+ /**
30
+ * Required root prop fields
31
+ * @default ['title']
32
+ */
33
+ requiredRootProps?: string[];
34
+ /**
35
+ * Allowed component types (if specified, unknown types will be flagged)
36
+ */
37
+ allowedComponentTypes?: string[];
38
+ /**
39
+ * Whether to treat unknown component types as errors (vs warnings)
40
+ * @default false
41
+ */
42
+ strictComponentTypes?: boolean;
43
+ }
44
+ /**
45
+ * Type guard to check if a value is a valid PuckPageData structure.
46
+ * Performs basic structural validation.
47
+ */
48
+ export declare function isPuckData(data: unknown): data is PuckPageData;
49
+ /**
50
+ * Type guard for PuckRootProps
51
+ */
52
+ export declare function isPuckRootProps(props: unknown): props is PuckRootProps;
53
+ /**
54
+ * Validates that a PuckPageData structure is well-formed.
55
+ * Useful for testing and debugging migration issues.
56
+ *
57
+ * @param data - The data to validate
58
+ * @param options - Validation options
59
+ * @returns Validation result with errors and warnings
60
+ *
61
+ * @example
62
+ * ```ts
63
+ * const result = validatePuckData(puckData)
64
+ * if (!result.valid) {
65
+ * console.error('Validation errors:', result.errors)
66
+ * }
67
+ * ```
68
+ */
69
+ export declare function validatePuckData(data: unknown, options?: ValidationOptions): ValidationResult;
70
+ /**
71
+ * Validates and returns typed PuckPageData, throwing if invalid.
72
+ *
73
+ * @param data - The data to validate
74
+ * @param options - Validation options
75
+ * @returns The validated PuckPageData
76
+ * @throws Error if validation fails
77
+ */
78
+ export declare function assertPuckData(data: unknown, options?: ValidationOptions): PuckPageData;
79
+ /**
80
+ * Safely parses JSON and validates as PuckPageData.
81
+ *
82
+ * @param json - JSON string to parse
83
+ * @param options - Validation options
84
+ * @returns Validation result with parsed data if valid
85
+ */
86
+ export declare function parsePuckDataJson(json: string, options?: ValidationOptions): ValidationResult & {
87
+ data?: PuckPageData;
88
+ };
89
+ //# sourceMappingURL=validation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.d.ts","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AAM3D;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,EAAE,MAAM,EAAE,CAAA;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC;;;OAGG;IACH,iBAAiB,CAAC,EAAE,OAAO,CAAA;IAE3B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;;OAGG;IACH,iBAAiB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE5B;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAA;IAEhC;;;OAGG;IACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;CAC/B;AAMD;;;GAGG;AACH,wBAAgB,UAAU,CAAC,IAAI,EAAE,OAAO,GAAG,IAAI,IAAI,YAAY,CA0C9D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAKtE;AAMD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,iBAAsB,GAC9B,gBAAgB,CA0JlB;AAED;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,OAAO,EACb,OAAO,CAAC,EAAE,iBAAiB,GAC1B,YAAY,CAUd;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,GAAG;IAAE,IAAI,CAAC,EAAE,YAAY,CAAA;CAAE,CAuB5C"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Puck Data Validation Utilities
3
+ *
4
+ * Provides validation functions for ensuring Puck data structures are well-formed.
5
+ */
6
+ // =============================================================================
7
+ // Type Guards
8
+ // =============================================================================
9
+ /**
10
+ * Type guard to check if a value is a valid PuckPageData structure.
11
+ * Performs basic structural validation.
12
+ */
13
+ export function isPuckData(data) {
14
+ if (!data || typeof data !== 'object') {
15
+ return false;
16
+ }
17
+ const obj = data;
18
+ // Check root structure
19
+ if (!obj.root || typeof obj.root !== 'object') {
20
+ return false;
21
+ }
22
+ const root = obj.root;
23
+ if (!root.props || typeof root.props !== 'object') {
24
+ return false;
25
+ }
26
+ // Check content array
27
+ if (!Array.isArray(obj.content)) {
28
+ return false;
29
+ }
30
+ // Validate each content item has required fields
31
+ for (const item of obj.content) {
32
+ if (!item || typeof item !== 'object') {
33
+ return false;
34
+ }
35
+ const contentItem = item;
36
+ if (typeof contentItem.type !== 'string') {
37
+ return false;
38
+ }
39
+ if (!contentItem.props || typeof contentItem.props !== 'object') {
40
+ return false;
41
+ }
42
+ }
43
+ // Check zones (optional but must be object if present)
44
+ if (obj.zones !== undefined && typeof obj.zones !== 'object') {
45
+ return false;
46
+ }
47
+ return true;
48
+ }
49
+ /**
50
+ * Type guard for PuckRootProps
51
+ */
52
+ export function isPuckRootProps(props) {
53
+ if (!props || typeof props !== 'object') {
54
+ return false;
55
+ }
56
+ return true;
57
+ }
58
+ // =============================================================================
59
+ // Validation Functions
60
+ // =============================================================================
61
+ /**
62
+ * Validates that a PuckPageData structure is well-formed.
63
+ * Useful for testing and debugging migration issues.
64
+ *
65
+ * @param data - The data to validate
66
+ * @param options - Validation options
67
+ * @returns Validation result with errors and warnings
68
+ *
69
+ * @example
70
+ * ```ts
71
+ * const result = validatePuckData(puckData)
72
+ * if (!result.valid) {
73
+ * console.error('Validation errors:', result.errors)
74
+ * }
75
+ * ```
76
+ */
77
+ export function validatePuckData(data, options = {}) {
78
+ const { requireContentIds = true, validateRoot = true, requiredRootProps = ['title'], allowedComponentTypes, strictComponentTypes = false, } = options;
79
+ const errors = [];
80
+ const warnings = [];
81
+ // Basic type check
82
+ if (!data || typeof data !== 'object') {
83
+ errors.push('Data must be a non-null object');
84
+ return { valid: false, errors, warnings };
85
+ }
86
+ const obj = data;
87
+ // ==========================================================================
88
+ // Validate root structure
89
+ // ==========================================================================
90
+ if (!obj.root || typeof obj.root !== 'object') {
91
+ errors.push('Missing or invalid root object');
92
+ }
93
+ else if (validateRoot) {
94
+ const root = obj.root;
95
+ if (!root.props || typeof root.props !== 'object') {
96
+ errors.push('Missing root.props object');
97
+ }
98
+ else {
99
+ const rootProps = root.props;
100
+ // Check required root props
101
+ for (const prop of requiredRootProps) {
102
+ if (rootProps[prop] === undefined || rootProps[prop] === null) {
103
+ errors.push(`Missing required root prop: ${prop}`);
104
+ }
105
+ }
106
+ // Validate pageLayout if present
107
+ if (rootProps.pageLayout !== undefined) {
108
+ if (typeof rootProps.pageLayout !== 'string') {
109
+ errors.push('root.props.pageLayout must be a string');
110
+ }
111
+ }
112
+ }
113
+ }
114
+ // ==========================================================================
115
+ // Validate content array
116
+ // ==========================================================================
117
+ if (!Array.isArray(obj.content)) {
118
+ errors.push('content must be an array');
119
+ }
120
+ else {
121
+ const seenIds = new Set();
122
+ obj.content.forEach((item, index) => {
123
+ if (!item || typeof item !== 'object') {
124
+ errors.push(`Content item at index ${index} is not an object`);
125
+ return;
126
+ }
127
+ const contentItem = item;
128
+ // Validate type
129
+ if (!contentItem.type || typeof contentItem.type !== 'string') {
130
+ errors.push(`Content item at index ${index} missing or invalid type`);
131
+ }
132
+ else if (allowedComponentTypes) {
133
+ if (!allowedComponentTypes.includes(contentItem.type)) {
134
+ const message = `Unknown component type "${contentItem.type}" at index ${index}`;
135
+ if (strictComponentTypes) {
136
+ errors.push(message);
137
+ }
138
+ else {
139
+ warnings.push(message);
140
+ }
141
+ }
142
+ }
143
+ // Validate props
144
+ if (!contentItem.props || typeof contentItem.props !== 'object') {
145
+ errors.push(`Content item at index ${index} missing props object`);
146
+ }
147
+ else if (requireContentIds) {
148
+ const props = contentItem.props;
149
+ if (!props.id || typeof props.id !== 'string') {
150
+ errors.push(`Content item at index ${index} missing or invalid props.id`);
151
+ }
152
+ else {
153
+ // Check for duplicate IDs
154
+ if (seenIds.has(props.id)) {
155
+ warnings.push(`Duplicate content item ID "${props.id}" at index ${index}`);
156
+ }
157
+ seenIds.add(props.id);
158
+ }
159
+ }
160
+ });
161
+ }
162
+ // ==========================================================================
163
+ // Validate zones
164
+ // ==========================================================================
165
+ if (obj.zones !== undefined) {
166
+ if (typeof obj.zones !== 'object' || obj.zones === null) {
167
+ errors.push('zones must be an object');
168
+ }
169
+ else {
170
+ const zones = obj.zones;
171
+ for (const [zoneName, zoneContent] of Object.entries(zones)) {
172
+ if (!Array.isArray(zoneContent)) {
173
+ errors.push(`Zone "${zoneName}" content must be an array`);
174
+ continue;
175
+ }
176
+ zoneContent.forEach((item, index) => {
177
+ if (!item || typeof item !== 'object') {
178
+ errors.push(`Zone "${zoneName}" item at index ${index} is not an object`);
179
+ return;
180
+ }
181
+ const contentItem = item;
182
+ if (!contentItem.type || typeof contentItem.type !== 'string') {
183
+ errors.push(`Zone "${zoneName}" item at index ${index} missing or invalid type`);
184
+ }
185
+ if (!contentItem.props || typeof contentItem.props !== 'object') {
186
+ errors.push(`Zone "${zoneName}" item at index ${index} missing props object`);
187
+ }
188
+ else if (requireContentIds) {
189
+ const props = contentItem.props;
190
+ if (!props.id || typeof props.id !== 'string') {
191
+ errors.push(`Zone "${zoneName}" item at index ${index} missing or invalid props.id`);
192
+ }
193
+ }
194
+ });
195
+ }
196
+ }
197
+ }
198
+ return {
199
+ valid: errors.length === 0,
200
+ errors,
201
+ warnings,
202
+ };
203
+ }
204
+ /**
205
+ * Validates and returns typed PuckPageData, throwing if invalid.
206
+ *
207
+ * @param data - The data to validate
208
+ * @param options - Validation options
209
+ * @returns The validated PuckPageData
210
+ * @throws Error if validation fails
211
+ */
212
+ export function assertPuckData(data, options) {
213
+ const result = validatePuckData(data, options);
214
+ if (!result.valid) {
215
+ throw new Error(`Invalid Puck data: ${result.errors.join('; ')}`);
216
+ }
217
+ return data;
218
+ }
219
+ /**
220
+ * Safely parses JSON and validates as PuckPageData.
221
+ *
222
+ * @param json - JSON string to parse
223
+ * @param options - Validation options
224
+ * @returns Validation result with parsed data if valid
225
+ */
226
+ export function parsePuckDataJson(json, options) {
227
+ let parsed;
228
+ try {
229
+ parsed = JSON.parse(json);
230
+ }
231
+ catch (e) {
232
+ return {
233
+ valid: false,
234
+ errors: [`Invalid JSON: ${e instanceof Error ? e.message : 'Parse error'}`],
235
+ warnings: [],
236
+ };
237
+ }
238
+ const result = validatePuckData(parsed, options);
239
+ if (result.valid) {
240
+ return {
241
+ ...result,
242
+ data: parsed,
243
+ };
244
+ }
245
+ return result;
246
+ }
247
+ //# sourceMappingURL=validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../../src/utils/validation.ts"],"names":[],"mappings":"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"}