@delmaredigital/payload-puck 0.6.12 → 0.6.13

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 (583) hide show
  1. package/README.md +50 -1
  2. package/dist/admin/EditWithPuckButton.d.ts +1 -1
  3. package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
  4. package/dist/admin/EditWithPuckButton.js +65 -25
  5. package/dist/admin/EditWithPuckButton.js.map +1 -1
  6. package/dist/admin/EditWithPuckCell.js +43 -13
  7. package/dist/admin/EditWithPuckCell.js.map +1 -1
  8. package/dist/admin/PuckEditorView.d.ts +1 -1
  9. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  10. package/dist/admin/PuckEditorView.js +118 -32
  11. package/dist/admin/PuckEditorView.js.map +1 -1
  12. package/dist/admin/client.d.ts +2 -2
  13. package/dist/admin/client.d.ts.map +1 -1
  14. package/dist/admin/client.js +4 -4
  15. package/dist/admin/client.js.map +1 -1
  16. package/dist/admin/generateAdminComponents.js +7 -7
  17. package/dist/admin/generateAdminComponents.js.map +1 -1
  18. package/dist/admin/index.d.ts +5 -5
  19. package/dist/admin/index.d.ts.map +1 -1
  20. package/dist/admin/index.js +3 -2
  21. package/dist/admin/index.js.map +1 -1
  22. package/dist/ai/collections/AiContext.js +56 -29
  23. package/dist/ai/collections/AiContext.js.map +1 -1
  24. package/dist/ai/collections/AiPrompts.js +24 -19
  25. package/dist/ai/collections/AiPrompts.js.map +1 -1
  26. package/dist/ai/createAiApiRoutes.js +28 -19
  27. package/dist/ai/createAiApiRoutes.js.map +1 -1
  28. package/dist/ai/createAiGenerate.js +7 -8
  29. package/dist/ai/createAiGenerate.js.map +1 -1
  30. package/dist/ai/createAiPlugin.js +7 -9
  31. package/dist/ai/createAiPlugin.js.map +1 -1
  32. package/dist/ai/hooks/useAiContext.js +50 -39
  33. package/dist/ai/hooks/useAiContext.js.map +1 -1
  34. package/dist/ai/hooks/useAiPrompts.js +33 -25
  35. package/dist/ai/hooks/useAiPrompts.js.map +1 -1
  36. package/dist/ai/index.js +9 -10
  37. package/dist/ai/index.js.map +1 -1
  38. package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
  39. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
  40. package/dist/ai/plugins/ContextEditorPanel.js +399 -107
  41. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
  42. package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
  43. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
  44. package/dist/ai/plugins/PromptEditorPanel.js +237 -51
  45. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
  46. package/dist/ai/plugins/contextEditorPlugin.js +12 -5
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
  48. package/dist/ai/plugins/promptApiRoutes.js +119 -50
  49. package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
  50. package/dist/ai/plugins/promptEditorPlugin.js +12 -5
  51. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
  52. package/dist/ai/presets/componentAiDefaults.js +108 -83
  53. package/dist/ai/presets/componentAiDefaults.js.map +1 -1
  54. package/dist/ai/presets/index.js +12 -18
  55. package/dist/ai/presets/index.js.map +1 -1
  56. package/dist/ai/presets/instructions/interactive.js +85 -75
  57. package/dist/ai/presets/instructions/interactive.js.map +1 -1
  58. package/dist/ai/presets/instructions/layout.js +122 -117
  59. package/dist/ai/presets/instructions/layout.js.map +1 -1
  60. package/dist/ai/presets/instructions/media.js +31 -29
  61. package/dist/ai/presets/instructions/media.js.map +1 -1
  62. package/dist/ai/presets/instructions/pagePatterns.js +4 -6
  63. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
  64. package/dist/ai/presets/instructions/schemas.js +495 -137
  65. package/dist/ai/presets/instructions/schemas.js.map +1 -1
  66. package/dist/ai/presets/instructions/typography.js +38 -33
  67. package/dist/ai/presets/instructions/typography.js.map +1 -1
  68. package/dist/ai/tools/index.js +92 -55
  69. package/dist/ai/tools/index.js.map +1 -1
  70. package/dist/ai/types.js +7 -1
  71. package/dist/ai/types.js.map +1 -1
  72. package/dist/ai/utils/injectAiConfig.js +33 -40
  73. package/dist/ai/utils/injectAiConfig.js.map +1 -1
  74. package/dist/api/createPuckApiRoutes.d.ts +1 -1
  75. package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
  76. package/dist/api/createPuckApiRoutes.js +123 -65
  77. package/dist/api/createPuckApiRoutes.js.map +1 -1
  78. package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
  79. package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
  80. package/dist/api/createPuckApiRoutesVersions.js +88 -37
  81. package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
  82. package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
  83. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  84. package/dist/api/createPuckApiRoutesWithId.js +166 -72
  85. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  86. package/dist/api/index.d.ts +5 -5
  87. package/dist/api/index.d.ts.map +1 -1
  88. package/dist/api/index.js +6 -6
  89. package/dist/api/index.js.map +1 -1
  90. package/dist/api/payload-config.d.js +15 -0
  91. package/dist/api/payload-config.d.js.map +1 -0
  92. package/dist/api/types.js +4 -1
  93. package/dist/api/types.js.map +1 -1
  94. package/dist/api/utils/mapRootProps.d.ts +1 -1
  95. package/dist/api/utils/mapRootProps.d.ts.map +1 -1
  96. package/dist/api/utils/mapRootProps.js +77 -44
  97. package/dist/api/utils/mapRootProps.js.map +1 -1
  98. package/dist/collections/Templates.js +24 -20
  99. package/dist/collections/Templates.js.map +1 -1
  100. package/dist/components/AccordionClient.d.ts +2 -2
  101. package/dist/components/AccordionClient.d.ts.map +1 -1
  102. package/dist/components/AccordionClient.js +81 -22
  103. package/dist/components/AccordionClient.js.map +1 -1
  104. package/dist/components/AnimatedWrapper.d.ts +2 -2
  105. package/dist/components/AnimatedWrapper.d.ts.map +1 -1
  106. package/dist/components/AnimatedWrapper.js +31 -16
  107. package/dist/components/AnimatedWrapper.js.map +1 -1
  108. package/dist/components/exports.js +2 -2
  109. package/dist/components/exports.js.map +1 -1
  110. package/dist/components/index.d.ts +5 -5
  111. package/dist/components/index.d.ts.map +1 -1
  112. package/dist/components/index.js +7 -7
  113. package/dist/components/index.js.map +1 -1
  114. package/dist/components/interactive/Accordion.d.ts +1 -1
  115. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  116. package/dist/components/interactive/Accordion.js +149 -55
  117. package/dist/components/interactive/Accordion.js.map +1 -1
  118. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  119. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  120. package/dist/components/interactive/Accordion.server.js +25 -7
  121. package/dist/components/interactive/Accordion.server.js.map +1 -1
  122. package/dist/components/interactive/Button.d.ts +3 -3
  123. package/dist/components/interactive/Button.d.ts.map +1 -1
  124. package/dist/components/interactive/Button.js +89 -43
  125. package/dist/components/interactive/Button.js.map +1 -1
  126. package/dist/components/interactive/Button.server.d.ts +2 -2
  127. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  128. package/dist/components/interactive/Button.server.js +40 -20
  129. package/dist/components/interactive/Button.server.js.map +1 -1
  130. package/dist/components/interactive/Card.d.ts +3 -3
  131. package/dist/components/interactive/Card.d.ts.map +1 -1
  132. package/dist/components/interactive/Card.js +131 -39
  133. package/dist/components/interactive/Card.js.map +1 -1
  134. package/dist/components/interactive/Card.server.d.ts +3 -3
  135. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  136. package/dist/components/interactive/Card.server.js +72 -11
  137. package/dist/components/interactive/Card.server.js.map +1 -1
  138. package/dist/components/interactive/Divider.d.ts +1 -1
  139. package/dist/components/interactive/Divider.d.ts.map +1 -1
  140. package/dist/components/interactive/Divider.js +54 -26
  141. package/dist/components/interactive/Divider.js.map +1 -1
  142. package/dist/components/interactive/Divider.server.d.ts +1 -1
  143. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  144. package/dist/components/interactive/Divider.server.js +28 -12
  145. package/dist/components/interactive/Divider.server.js.map +1 -1
  146. package/dist/components/interactive/index.d.ts +4 -4
  147. package/dist/components/interactive/index.d.ts.map +1 -1
  148. package/dist/components/interactive/index.js +5 -5
  149. package/dist/components/interactive/index.js.map +1 -1
  150. package/dist/components/layout/Container.d.ts +1 -1
  151. package/dist/components/layout/Container.d.ts.map +1 -1
  152. package/dist/components/layout/Container.js +101 -47
  153. package/dist/components/layout/Container.js.map +1 -1
  154. package/dist/components/layout/Container.server.d.ts +1 -1
  155. package/dist/components/layout/Container.server.d.ts.map +1 -1
  156. package/dist/components/layout/Container.server.js +67 -19
  157. package/dist/components/layout/Container.server.js.map +1 -1
  158. package/dist/components/layout/Flex.d.ts +2 -2
  159. package/dist/components/layout/Flex.d.ts.map +1 -1
  160. package/dist/components/layout/Flex.js +124 -55
  161. package/dist/components/layout/Flex.js.map +1 -1
  162. package/dist/components/layout/Flex.server.d.ts +1 -1
  163. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  164. package/dist/components/layout/Flex.server.js +50 -14
  165. package/dist/components/layout/Flex.server.js.map +1 -1
  166. package/dist/components/layout/Grid.d.ts +1 -1
  167. package/dist/components/layout/Grid.d.ts.map +1 -1
  168. package/dist/components/layout/Grid.js +93 -44
  169. package/dist/components/layout/Grid.js.map +1 -1
  170. package/dist/components/layout/Grid.server.d.ts +1 -1
  171. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  172. package/dist/components/layout/Grid.server.js +56 -14
  173. package/dist/components/layout/Grid.server.js.map +1 -1
  174. package/dist/components/layout/Section.d.ts +1 -1
  175. package/dist/components/layout/Section.d.ts.map +1 -1
  176. package/dist/components/layout/Section.js +147 -64
  177. package/dist/components/layout/Section.js.map +1 -1
  178. package/dist/components/layout/Section.server.d.ts +1 -1
  179. package/dist/components/layout/Section.server.d.ts.map +1 -1
  180. package/dist/components/layout/Section.server.js +92 -28
  181. package/dist/components/layout/Section.server.js.map +1 -1
  182. package/dist/components/layout/Spacer.d.ts +1 -1
  183. package/dist/components/layout/Spacer.d.ts.map +1 -1
  184. package/dist/components/layout/Spacer.js +80 -30
  185. package/dist/components/layout/Spacer.js.map +1 -1
  186. package/dist/components/layout/Spacer.server.d.ts +1 -1
  187. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  188. package/dist/components/layout/Spacer.server.js +31 -9
  189. package/dist/components/layout/Spacer.server.js.map +1 -1
  190. package/dist/components/layout/Template.d.ts +1 -1
  191. package/dist/components/layout/Template.d.ts.map +1 -1
  192. package/dist/components/layout/Template.js +58 -30
  193. package/dist/components/layout/Template.js.map +1 -1
  194. package/dist/components/layout/Template.server.d.ts +1 -1
  195. package/dist/components/layout/Template.server.d.ts.map +1 -1
  196. package/dist/components/layout/Template.server.js +43 -11
  197. package/dist/components/layout/Template.server.js.map +1 -1
  198. package/dist/components/layout/index.d.ts +8 -8
  199. package/dist/components/layout/index.d.ts.map +1 -1
  200. package/dist/components/layout/index.js +8 -8
  201. package/dist/components/layout/index.js.map +1 -1
  202. package/dist/components/media/Image.d.ts +3 -3
  203. package/dist/components/media/Image.d.ts.map +1 -1
  204. package/dist/components/media/Image.js +122 -39
  205. package/dist/components/media/Image.js.map +1 -1
  206. package/dist/components/media/Image.server.d.ts +3 -3
  207. package/dist/components/media/Image.server.d.ts.map +1 -1
  208. package/dist/components/media/Image.server.js +76 -13
  209. package/dist/components/media/Image.server.js.map +1 -1
  210. package/dist/components/media/index.d.ts +1 -1
  211. package/dist/components/media/index.d.ts.map +1 -1
  212. package/dist/components/media/index.js +2 -2
  213. package/dist/components/media/index.js.map +1 -1
  214. package/dist/components/typography/Heading.d.ts +2 -2
  215. package/dist/components/typography/Heading.d.ts.map +1 -1
  216. package/dist/components/typography/Heading.js +45 -25
  217. package/dist/components/typography/Heading.js.map +1 -1
  218. package/dist/components/typography/Heading.server.d.ts +2 -2
  219. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  220. package/dist/components/typography/Heading.server.js +16 -10
  221. package/dist/components/typography/Heading.server.js.map +1 -1
  222. package/dist/components/typography/RichText.editor.d.ts +1 -1
  223. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  224. package/dist/components/typography/RichText.editor.js +44 -19
  225. package/dist/components/typography/RichText.editor.js.map +1 -1
  226. package/dist/components/typography/RichText.server.d.ts +2 -2
  227. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  228. package/dist/components/typography/RichText.server.js +33 -14
  229. package/dist/components/typography/RichText.server.js.map +1 -1
  230. package/dist/components/typography/Text.d.ts +2 -2
  231. package/dist/components/typography/Text.d.ts.map +1 -1
  232. package/dist/components/typography/Text.js +49 -23
  233. package/dist/components/typography/Text.js.map +1 -1
  234. package/dist/components/typography/Text.server.d.ts +2 -2
  235. package/dist/components/typography/Text.server.d.ts.map +1 -1
  236. package/dist/components/typography/Text.server.js +21 -8
  237. package/dist/components/typography/Text.server.js.map +1 -1
  238. package/dist/components/typography/index.d.ts +4 -4
  239. package/dist/components/typography/index.d.ts.map +1 -1
  240. package/dist/components/typography/index.js +5 -5
  241. package/dist/components/typography/index.js.map +1 -1
  242. package/dist/config/config.editor.d.ts +3 -3
  243. package/dist/config/config.editor.d.ts.map +1 -1
  244. package/dist/config/config.editor.js +119 -54
  245. package/dist/config/config.editor.js.map +1 -1
  246. package/dist/config/index.d.ts +4 -4
  247. package/dist/config/index.d.ts.map +1 -1
  248. package/dist/config/index.js +62 -35
  249. package/dist/config/index.js.map +1 -1
  250. package/dist/config/merge.d.ts +1 -1
  251. package/dist/config/merge.d.ts.map +1 -1
  252. package/dist/config/merge.js +23 -26
  253. package/dist/config/merge.js.map +1 -1
  254. package/dist/config/presets.d.ts +4 -4
  255. package/dist/config/presets.js +195 -75
  256. package/dist/config/presets.js.map +1 -1
  257. package/dist/config/types.js +6 -2
  258. package/dist/config/types.js.map +1 -1
  259. package/dist/editor/PuckEditor.d.ts +4 -4
  260. package/dist/editor/PuckEditor.d.ts.map +1 -1
  261. package/dist/editor/PuckEditor.js +162 -70
  262. package/dist/editor/PuckEditor.js.map +1 -1
  263. package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
  264. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  265. package/dist/editor/PuckEditorImpl.client.js +304 -152
  266. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  267. package/dist/editor/components/DarkModeStyles.js +11 -12
  268. package/dist/editor/components/DarkModeStyles.js.map +1 -1
  269. package/dist/editor/components/HeaderActions.js +308 -64
  270. package/dist/editor/components/HeaderActions.js.map +1 -1
  271. package/dist/editor/components/IframeWrapper.d.ts +1 -1
  272. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  273. package/dist/editor/components/IframeWrapper.js +82 -58
  274. package/dist/editor/components/IframeWrapper.js.map +1 -1
  275. package/dist/editor/components/LoadingState.d.ts +1 -1
  276. package/dist/editor/components/LoadingState.d.ts.map +1 -1
  277. package/dist/editor/components/LoadingState.js +17 -3
  278. package/dist/editor/components/LoadingState.js.map +1 -1
  279. package/dist/editor/components/PreviewModal.js +234 -78
  280. package/dist/editor/components/PreviewModal.js.map +1 -1
  281. package/dist/editor/components/PreviewModeToggle.js +43 -15
  282. package/dist/editor/components/PreviewModeToggle.js.map +1 -1
  283. package/dist/editor/components/VersionHistory.js +219 -71
  284. package/dist/editor/components/VersionHistory.js.map +1 -1
  285. package/dist/editor/hooks/useDarkMode.js +36 -23
  286. package/dist/editor/hooks/useDarkMode.js.map +1 -1
  287. package/dist/editor/hooks/useUnsavedChanges.js +8 -8
  288. package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
  289. package/dist/editor/index.js +5 -6
  290. package/dist/editor/index.js.map +1 -1
  291. package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
  292. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
  293. package/dist/editor/plugins/index.js +4 -4
  294. package/dist/editor/plugins/index.js.map +1 -1
  295. package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
  296. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
  297. package/dist/editor/utils/detectPageTree.js +5 -5
  298. package/dist/editor/utils/detectPageTree.js.map +1 -1
  299. package/dist/editor/utils/index.js +1 -0
  300. package/dist/editor/utils/index.js.map +1 -1
  301. package/dist/editor/utils/injectPageTreeFields.js +13 -9
  302. package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
  303. package/dist/endpoints/ai.js +58 -34
  304. package/dist/endpoints/ai.js.map +1 -1
  305. package/dist/endpoints/context.js +86 -40
  306. package/dist/endpoints/context.js.map +1 -1
  307. package/dist/endpoints/index.js +153 -76
  308. package/dist/endpoints/index.js.map +1 -1
  309. package/dist/endpoints/postcss.d.js +5 -0
  310. package/dist/endpoints/postcss.d.js.map +1 -0
  311. package/dist/endpoints/prompts.js +81 -39
  312. package/dist/endpoints/prompts.js.map +1 -1
  313. package/dist/endpoints/styles.js +34 -36
  314. package/dist/endpoints/styles.js.map +1 -1
  315. package/dist/exports/client.js +2 -2
  316. package/dist/exports/client.js.map +1 -1
  317. package/dist/exports/rsc.js +2 -2
  318. package/dist/exports/rsc.js.map +1 -1
  319. package/dist/fields/AlignmentField.d.ts +1 -1
  320. package/dist/fields/AlignmentField.d.ts.map +1 -1
  321. package/dist/fields/AlignmentField.js +93 -30
  322. package/dist/fields/AlignmentField.js.map +1 -1
  323. package/dist/fields/AnimationField.d.ts +2 -2
  324. package/dist/fields/AnimationField.d.ts.map +1 -1
  325. package/dist/fields/AnimationField.js +558 -84
  326. package/dist/fields/AnimationField.js.map +1 -1
  327. package/dist/fields/BackgroundField.d.ts +2 -2
  328. package/dist/fields/BackgroundField.d.ts.map +1 -1
  329. package/dist/fields/BackgroundField.js +754 -120
  330. package/dist/fields/BackgroundField.js.map +1 -1
  331. package/dist/fields/BorderField.d.ts +2 -2
  332. package/dist/fields/BorderField.d.ts.map +1 -1
  333. package/dist/fields/BorderField.js +275 -73
  334. package/dist/fields/BorderField.js.map +1 -1
  335. package/dist/fields/ColorPickerField.d.ts +2 -2
  336. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  337. package/dist/fields/ColorPickerField.js +210 -68
  338. package/dist/fields/ColorPickerField.js.map +1 -1
  339. package/dist/fields/ContentAlignmentField.d.ts +1 -1
  340. package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
  341. package/dist/fields/ContentAlignmentField.js +161 -75
  342. package/dist/fields/ContentAlignmentField.js.map +1 -1
  343. package/dist/fields/DimensionsField.d.ts +2 -2
  344. package/dist/fields/DimensionsField.d.ts.map +1 -1
  345. package/dist/fields/DimensionsField.js +575 -146
  346. package/dist/fields/DimensionsField.js.map +1 -1
  347. package/dist/fields/FlexAlignmentField.d.ts +2 -2
  348. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  349. package/dist/fields/FlexAlignmentField.js +189 -51
  350. package/dist/fields/FlexAlignmentField.js.map +1 -1
  351. package/dist/fields/FolderPickerField.d.ts +8 -1
  352. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  353. package/dist/fields/FolderPickerField.js +288 -75
  354. package/dist/fields/FolderPickerField.js.map +1 -1
  355. package/dist/fields/GradientEditor.d.ts +2 -2
  356. package/dist/fields/GradientEditor.d.ts.map +1 -1
  357. package/dist/fields/GradientEditor.js +462 -86
  358. package/dist/fields/GradientEditor.js.map +1 -1
  359. package/dist/fields/LockedField.d.ts +15 -2
  360. package/dist/fields/LockedField.d.ts.map +1 -1
  361. package/dist/fields/LockedField.js +180 -49
  362. package/dist/fields/LockedField.js.map +1 -1
  363. package/dist/fields/MarginField.d.ts +2 -2
  364. package/dist/fields/MarginField.d.ts.map +1 -1
  365. package/dist/fields/MarginField.js +144 -46
  366. package/dist/fields/MarginField.js.map +1 -1
  367. package/dist/fields/MediaField.d.ts +1 -1
  368. package/dist/fields/MediaField.d.ts.map +1 -1
  369. package/dist/fields/MediaField.js +688 -186
  370. package/dist/fields/MediaField.js.map +1 -1
  371. package/dist/fields/PaddingField.d.ts +2 -2
  372. package/dist/fields/PaddingField.d.ts.map +1 -1
  373. package/dist/fields/PaddingField.js +144 -46
  374. package/dist/fields/PaddingField.js.map +1 -1
  375. package/dist/fields/PageSegmentField.d.ts +15 -2
  376. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  377. package/dist/fields/PageSegmentField.js +156 -54
  378. package/dist/fields/PageSegmentField.js.map +1 -1
  379. package/dist/fields/ResetField.d.ts +1 -1
  380. package/dist/fields/ResetField.d.ts.map +1 -1
  381. package/dist/fields/ResetField.js +59 -31
  382. package/dist/fields/ResetField.js.map +1 -1
  383. package/dist/fields/ResponsiveField.d.ts +1 -1
  384. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  385. package/dist/fields/ResponsiveField.js +233 -90
  386. package/dist/fields/ResponsiveField.js.map +1 -1
  387. package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
  388. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  389. package/dist/fields/ResponsiveVisibilityField.js +119 -36
  390. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  391. package/dist/fields/SizeField.d.ts +3 -3
  392. package/dist/fields/SizeField.d.ts.map +1 -1
  393. package/dist/fields/SizeField.js +226 -52
  394. package/dist/fields/SizeField.js.map +1 -1
  395. package/dist/fields/SlugPreviewField.d.ts +8 -1
  396. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  397. package/dist/fields/SlugPreviewField.js +65 -16
  398. package/dist/fields/SlugPreviewField.js.map +1 -1
  399. package/dist/fields/TemplateField.d.ts +1 -1
  400. package/dist/fields/TemplateField.d.ts.map +1 -1
  401. package/dist/fields/TemplateField.js +362 -120
  402. package/dist/fields/TemplateField.js.map +1 -1
  403. package/dist/fields/TransformField.d.ts +2 -2
  404. package/dist/fields/TransformField.d.ts.map +1 -1
  405. package/dist/fields/TransformField.js +517 -81
  406. package/dist/fields/TransformField.js.map +1 -1
  407. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  408. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  409. package/dist/fields/VerticalAlignmentField.js +93 -30
  410. package/dist/fields/VerticalAlignmentField.js.map +1 -1
  411. package/dist/fields/WidthField.d.ts +2 -2
  412. package/dist/fields/WidthField.d.ts.map +1 -1
  413. package/dist/fields/WidthField.js +278 -81
  414. package/dist/fields/WidthField.js.map +1 -1
  415. package/dist/fields/index.d.ts +41 -41
  416. package/dist/fields/index.d.ts.map +1 -1
  417. package/dist/fields/index.js +37 -43
  418. package/dist/fields/index.js.map +1 -1
  419. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
  420. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
  421. package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
  422. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
  423. package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
  424. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
  425. package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
  426. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
  427. package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
  428. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
  429. package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
  430. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
  431. package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
  432. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
  433. package/dist/fields/richtext/controls/HighlightControl.js +54 -17
  434. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
  435. package/dist/fields/richtext/controls/index.d.ts +5 -5
  436. package/dist/fields/richtext/controls/index.d.ts.map +1 -1
  437. package/dist/fields/richtext/controls/index.js +8 -11
  438. package/dist/fields/richtext/controls/index.js.map +1 -1
  439. package/dist/fields/richtext/controls/shared.js +108 -63
  440. package/dist/fields/richtext/controls/shared.js.map +1 -1
  441. package/dist/fields/richtext/createRichTextField.d.ts +18 -4
  442. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
  443. package/dist/fields/richtext/createRichTextField.js +113 -26
  444. package/dist/fields/richtext/createRichTextField.js.map +1 -1
  445. package/dist/fields/richtext/extensions/FontSize.js +26 -20
  446. package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
  447. package/dist/fields/richtext/extensions/index.d.ts +1 -1
  448. package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
  449. package/dist/fields/richtext/extensions/index.js +2 -2
  450. package/dist/fields/richtext/extensions/index.js.map +1 -1
  451. package/dist/fields/richtext/index.d.ts +6 -6
  452. package/dist/fields/richtext/index.d.ts.map +1 -1
  453. package/dist/fields/richtext/index.js +8 -8
  454. package/dist/fields/richtext/index.js.map +1 -1
  455. package/dist/fields/shared.d.ts +1 -1
  456. package/dist/fields/shared.d.ts.map +1 -1
  457. package/dist/fields/shared.js +915 -478
  458. package/dist/fields/shared.js.map +1 -1
  459. package/dist/hooks/index.d.ts +2 -2
  460. package/dist/hooks/index.d.ts.map +1 -1
  461. package/dist/hooks/index.js +3 -3
  462. package/dist/hooks/index.js.map +1 -1
  463. package/dist/hooks/useResponsiveStyles.d.ts +1 -1
  464. package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
  465. package/dist/hooks/useResponsiveStyles.js +36 -32
  466. package/dist/hooks/useResponsiveStyles.js.map +1 -1
  467. package/dist/hooks/useScrollAnimation.js +26 -24
  468. package/dist/hooks/useScrollAnimation.js.map +1 -1
  469. package/dist/index.d.ts +4 -4
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +5 -5
  472. package/dist/index.js.map +1 -1
  473. package/dist/layouts/LayoutWrapper.d.ts +3 -3
  474. package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
  475. package/dist/layouts/LayoutWrapper.js +115 -51
  476. package/dist/layouts/LayoutWrapper.js.map +1 -1
  477. package/dist/layouts/defaults.d.ts +1 -1
  478. package/dist/layouts/defaults.d.ts.map +1 -1
  479. package/dist/layouts/defaults.js +23 -31
  480. package/dist/layouts/defaults.js.map +1 -1
  481. package/dist/layouts/index.d.ts +4 -4
  482. package/dist/layouts/index.d.ts.map +1 -1
  483. package/dist/layouts/index.js +5 -4
  484. package/dist/layouts/index.js.map +1 -1
  485. package/dist/layouts/types.js +4 -2
  486. package/dist/layouts/types.js.map +1 -1
  487. package/dist/layouts/utils.d.ts +1 -1
  488. package/dist/layouts/utils.d.ts.map +1 -1
  489. package/dist/layouts/utils.js +32 -40
  490. package/dist/layouts/utils.js.map +1 -1
  491. package/dist/next/index.js +31 -34
  492. package/dist/next/index.js.map +1 -1
  493. package/dist/plugin/collections/Pages.d.ts +2 -2
  494. package/dist/plugin/collections/Pages.d.ts.map +1 -1
  495. package/dist/plugin/collections/Pages.js +46 -43
  496. package/dist/plugin/collections/Pages.js.map +1 -1
  497. package/dist/plugin/fields/index.d.ts +3 -3
  498. package/dist/plugin/fields/index.d.ts.map +1 -1
  499. package/dist/plugin/fields/index.js +100 -78
  500. package/dist/plugin/fields/index.js.map +1 -1
  501. package/dist/plugin/fields/types.d.ts +1 -1
  502. package/dist/plugin/fields/types.d.ts.map +1 -1
  503. package/dist/plugin/fields/types.js +26 -2
  504. package/dist/plugin/fields/types.js.map +1 -1
  505. package/dist/plugin/hooks/index.d.ts +1 -1
  506. package/dist/plugin/hooks/index.d.ts.map +1 -1
  507. package/dist/plugin/hooks/index.js +2 -2
  508. package/dist/plugin/hooks/index.js.map +1 -1
  509. package/dist/plugin/hooks/isHomepageUnique.js +28 -19
  510. package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
  511. package/dist/plugin/index.d.ts +8 -8
  512. package/dist/plugin/index.d.ts.map +1 -1
  513. package/dist/plugin/index.js +190 -188
  514. package/dist/plugin/index.js.map +1 -1
  515. package/dist/render/HybridPageRenderer.d.ts +2 -2
  516. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  517. package/dist/render/HybridPageRenderer.js +58 -10
  518. package/dist/render/HybridPageRenderer.js.map +1 -1
  519. package/dist/render/PageRenderer.d.ts +2 -2
  520. package/dist/render/PageRenderer.d.ts.map +1 -1
  521. package/dist/render/PageRenderer.js +31 -14
  522. package/dist/render/PageRenderer.js.map +1 -1
  523. package/dist/render/PuckEditor.client.d.ts +1 -1
  524. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  525. package/dist/render/PuckEditor.client.js +33 -16
  526. package/dist/render/PuckEditor.client.js.map +1 -1
  527. package/dist/render/index.d.ts +5 -5
  528. package/dist/render/index.d.ts.map +1 -1
  529. package/dist/render/index.js +5 -6
  530. package/dist/render/index.js.map +1 -1
  531. package/dist/styles/puck-dark-mode.css +101 -0
  532. package/dist/theme/context.d.ts +2 -2
  533. package/dist/theme/context.d.ts.map +1 -1
  534. package/dist/theme/context.js +21 -18
  535. package/dist/theme/context.js.map +1 -1
  536. package/dist/theme/defaults.d.ts +1 -1
  537. package/dist/theme/defaults.d.ts.map +1 -1
  538. package/dist/theme/defaults.js +83 -37
  539. package/dist/theme/defaults.js.map +1 -1
  540. package/dist/theme/example.d.ts +1 -1
  541. package/dist/theme/example.d.ts.map +1 -1
  542. package/dist/theme/example.js +68 -30
  543. package/dist/theme/example.js.map +1 -1
  544. package/dist/theme/index.d.ts +5 -5
  545. package/dist/theme/index.d.ts.map +1 -1
  546. package/dist/theme/index.js +6 -5
  547. package/dist/theme/index.js.map +1 -1
  548. package/dist/theme/types.js +6 -2
  549. package/dist/theme/types.js.map +1 -1
  550. package/dist/theme/utils.d.ts +1 -1
  551. package/dist/theme/utils.d.ts.map +1 -1
  552. package/dist/theme/utils.js +24 -25
  553. package/dist/theme/utils.js.map +1 -1
  554. package/dist/types/index.d.ts +6 -6
  555. package/dist/types/index.d.ts.map +1 -1
  556. package/dist/types/index.js +3 -1
  557. package/dist/types/index.js.map +1 -1
  558. package/dist/utils/index.d.ts +2 -2
  559. package/dist/utils/index.d.ts.map +1 -1
  560. package/dist/utils/index.js +13 -22
  561. package/dist/utils/index.js.map +1 -1
  562. package/dist/utils/migration.d.ts +1 -1
  563. package/dist/utils/migration.d.ts.map +1 -1
  564. package/dist/utils/migration.js +43 -49
  565. package/dist/utils/migration.js.map +1 -1
  566. package/dist/utils/validation.d.ts +1 -1
  567. package/dist/utils/validation.d.ts.map +1 -1
  568. package/dist/utils/validation.js +36 -43
  569. package/dist/utils/validation.js.map +1 -1
  570. package/dist/version.d.ts +1 -1
  571. package/dist/version.js +2 -1
  572. package/dist/version.js.map +1 -1
  573. package/dist/views/PuckConfigContext.d.ts +1 -1
  574. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  575. package/dist/views/PuckConfigContext.js +25 -10
  576. package/dist/views/PuckConfigContext.js.map +1 -1
  577. package/dist/views/PuckEditorView.d.ts +1 -1
  578. package/dist/views/PuckEditorView.d.ts.map +1 -1
  579. package/dist/views/PuckEditorView.js +106 -38
  580. package/dist/views/PuckEditorView.js.map +1 -1
  581. package/dist/views/index.js +2 -2
  582. package/dist/views/index.js.map +1 -1
  583. package/package.json +62 -42
@@ -53,16 +53,17 @@
53
53
  * @param config - The base Puck configuration to enhance
54
54
  * @param overrides - AI configuration overrides for each component
55
55
  * @returns A new Puck config with AI metadata injected
56
- */
57
- export function injectAiConfig(config, overrides) {
56
+ */ export function injectAiConfig(config, overrides) {
58
57
  // Deep clone the config to avoid mutating the original
59
58
  // Use type assertion to work with AI-extended types
60
59
  const newConfig = {
61
60
  ...config,
62
- components: { ...config.components },
61
+ components: {
62
+ ...config.components
63
+ }
63
64
  };
64
65
  // First pass: Apply user-provided overrides
65
- for (const [componentName, componentOverride] of Object.entries(overrides)) {
66
+ for (const [componentName, componentOverride] of Object.entries(overrides)){
66
67
  const existingComponent = newConfig.components[componentName];
67
68
  // Skip if component doesn't exist in config
68
69
  if (!existingComponent) {
@@ -70,19 +71,21 @@ export function injectAiConfig(config, overrides) {
70
71
  }
71
72
  // Create a new component config with AI metadata
72
73
  const newComponent = {
73
- ...existingComponent,
74
+ ...existingComponent
74
75
  };
75
76
  // Add component-level AI config
76
77
  if (componentOverride.ai) {
77
78
  newComponent.ai = {
78
79
  ...existingComponent.ai,
79
- ...componentOverride.ai,
80
+ ...componentOverride.ai
80
81
  };
81
82
  }
82
83
  // Process field-level AI configs from overrides
83
84
  if (componentOverride.fields && existingComponent.fields) {
84
- const newFields = { ...existingComponent.fields };
85
- for (const [fieldName, fieldOverride] of Object.entries(componentOverride.fields)) {
85
+ const newFields = {
86
+ ...existingComponent.fields
87
+ };
88
+ for (const [fieldName, fieldOverride] of Object.entries(componentOverride.fields)){
86
89
  const existingField = existingComponent.fields[fieldName];
87
90
  // Skip if field doesn't exist
88
91
  if (!existingField) {
@@ -93,8 +96,8 @@ export function injectAiConfig(config, overrides) {
93
96
  ...existingField,
94
97
  ai: {
95
98
  ...existingField.ai,
96
- ...fieldOverride.ai,
97
- },
99
+ ...fieldOverride.ai
100
+ }
98
101
  };
99
102
  }
100
103
  newComponent.fields = newFields;
@@ -105,12 +108,11 @@ export function injectAiConfig(config, overrides) {
105
108
  // Custom fields (type: 'custom') are typically interactive UI elements,
106
109
  // BUT some styling fields (background, padding, etc.) ARE custom fields
107
110
  // that we want AI to use. Only auto-exclude if NO AI instructions provided.
108
- for (const [componentName, component] of Object.entries(newConfig.components)) {
109
- if (!component.fields)
110
- continue;
111
+ for (const [componentName, component] of Object.entries(newConfig.components)){
112
+ if (!component.fields) continue;
111
113
  const updatedFields = {};
112
114
  let hasChanges = false;
113
- for (const [fieldName, field] of Object.entries(component.fields)) {
115
+ for (const [fieldName, field] of Object.entries(component.fields)){
114
116
  const existingAi = field.ai;
115
117
  // Check if this is a custom field type
116
118
  if (field.type === 'custom') {
@@ -118,24 +120,19 @@ export function injectAiConfig(config, overrides) {
118
120
  // The presence of instructions indicates we want AI to use this field
119
121
  if (existingAi?.instructions) {
120
122
  updatedFields[fieldName] = field;
121
- }
122
- // Otherwise, auto-exclude custom fields from AI generation
123
- // (unless already excluded)
124
- else if (!existingAi?.exclude) {
123
+ } else if (!existingAi?.exclude) {
125
124
  updatedFields[fieldName] = {
126
125
  ...field,
127
126
  ai: {
128
127
  ...existingAi,
129
- exclude: true,
130
- },
128
+ exclude: true
129
+ }
131
130
  };
132
131
  hasChanges = true;
133
- }
134
- else {
132
+ } else {
135
133
  updatedFields[fieldName] = field;
136
134
  }
137
- }
138
- else {
135
+ } else {
139
136
  updatedFields[fieldName] = field;
140
137
  }
141
138
  }
@@ -143,7 +140,7 @@ export function injectAiConfig(config, overrides) {
143
140
  if (hasChanges) {
144
141
  newConfig.components[componentName] = {
145
142
  ...component,
146
- fields: updatedFields,
143
+ fields: updatedFields
147
144
  };
148
145
  }
149
146
  }
@@ -153,30 +150,26 @@ export function injectAiConfig(config, overrides) {
153
150
  const rootFields = config.root.fields;
154
151
  const updatedRootFields = {};
155
152
  let hasRootChanges = false;
156
- for (const [fieldName, field] of Object.entries(rootFields)) {
153
+ for (const [fieldName, field] of Object.entries(rootFields)){
157
154
  const existingAi = field.ai;
158
155
  // Check if this is a custom field type
159
156
  if (field.type === 'custom') {
160
157
  // If the field has AI instructions, DON'T auto-exclude it
161
158
  if (existingAi?.instructions) {
162
159
  updatedRootFields[fieldName] = field;
163
- }
164
- // Otherwise, auto-exclude custom fields from AI generation
165
- else if (!existingAi?.exclude) {
160
+ } else if (!existingAi?.exclude) {
166
161
  updatedRootFields[fieldName] = {
167
162
  ...field,
168
163
  ai: {
169
164
  ...existingAi,
170
- exclude: true,
171
- },
165
+ exclude: true
166
+ }
172
167
  };
173
168
  hasRootChanges = true;
174
- }
175
- else {
169
+ } else {
176
170
  updatedRootFields[fieldName] = field;
177
171
  }
178
- }
179
- else {
172
+ } else {
180
173
  updatedRootFields[fieldName] = field;
181
174
  }
182
175
  }
@@ -185,7 +178,7 @@ export function injectAiConfig(config, overrides) {
185
178
  ;
186
179
  newConfig.root = {
187
180
  ...newConfig.root,
188
- fields: updatedRootFields,
181
+ fields: updatedRootFields
189
182
  };
190
183
  }
191
184
  }
@@ -197,14 +190,13 @@ export function injectAiConfig(config, overrides) {
197
190
  *
198
191
  * @param config - The Puck configuration to check
199
192
  * @returns True if any component has AI configuration
200
- */
201
- export function hasAiConfig(config) {
202
- for (const component of Object.values(config.components)) {
193
+ */ export function hasAiConfig(config) {
194
+ for (const component of Object.values(config.components)){
203
195
  if (component.ai) {
204
196
  return true;
205
197
  }
206
198
  if (component.fields) {
207
- for (const field of Object.values(component.fields)) {
199
+ for (const field of Object.values(component.fields)){
208
200
  if (field.ai) {
209
201
  return true;
210
202
  }
@@ -213,4 +205,5 @@ export function hasAiConfig(config) {
213
205
  }
214
206
  return false;
215
207
  }
208
+
216
209
  //# sourceMappingURL=injectAiConfig.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"injectAiConfig.js","sourceRoot":"","sources":["../../../src/ai/utils/injectAiConfig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/ai/utils/injectAiConfig.ts"],"sourcesContent":["import type { Config as PuckConfig } from '@puckeditor/core'\nimport type { ComponentAiOverrides } from '../types.js'\n\n// Extended types to include AI configuration\n// These match what Puck AI expects but aren't in the core types yet\ntype ComponentWithAi = {\n ai?: {\n instructions?: string\n schema?: object\n }\n fields?: Record<string, FieldWithAi>\n [key: string]: unknown\n}\n\ntype FieldWithAi = {\n ai?: {\n instructions?: string\n required?: boolean\n exclude?: boolean\n schema?: object\n }\n [key: string]: unknown\n}\n\n/**\n * Injects AI configuration into an existing Puck config\n *\n * This function:\n * 1. Applies component-level and field-level AI overrides from the provided config\n * 2. **Automatically excludes ALL `type: 'custom'` fields** from AI generation\n * (custom fields are UI-only interactive fields that AI cannot generate values for)\n *\n * @example Basic usage\n * ```typescript\n * import { editorConfig } from '@delmaredigital/payload-puck/config/editor'\n * import { injectAiConfig, defaultComponentAiConfig } from '@delmaredigital/payload-puck/ai'\n *\n * // Use default AI configs for built-in components\n * const aiEnabledConfig = injectAiConfig(editorConfig, defaultComponentAiConfig)\n * ```\n *\n * @example With custom overrides\n * ```typescript\n * const aiEnabledConfig = injectAiConfig(editorConfig, {\n * ...defaultComponentAiConfig,\n * // Override a built-in component\n * Heading: {\n * ai: {\n * instructions: 'Use our brand voice: professional but approachable',\n * },\n * fields: {\n * text: {\n * ai: {\n * instructions: 'Keep headings concise (under 10 words)',\n * required: true,\n * },\n * },\n * },\n * },\n * // Add config for a custom component\n * HeroSection: {\n * ai: {\n * instructions: 'Always place at the top of the page',\n * },\n * fields: {\n * headline: {\n * ai: {\n * instructions: 'Use power words, keep under 8 words',\n * required: true,\n * },\n * },\n * },\n * },\n * })\n * ```\n *\n * @param config - The base Puck configuration to enhance\n * @param overrides - AI configuration overrides for each component\n * @returns A new Puck config with AI metadata injected\n */\nexport function injectAiConfig(\n config: PuckConfig,\n overrides: ComponentAiOverrides\n): PuckConfig {\n // Deep clone the config to avoid mutating the original\n // Use type assertion to work with AI-extended types\n const newConfig = {\n ...config,\n components: { ...config.components } as Record<string, ComponentWithAi>,\n }\n\n // First pass: Apply user-provided overrides\n for (const [componentName, componentOverride] of Object.entries(overrides)) {\n const existingComponent = newConfig.components[componentName]\n\n // Skip if component doesn't exist in config\n if (!existingComponent) {\n continue\n }\n\n // Create a new component config with AI metadata\n const newComponent: ComponentWithAi = {\n ...existingComponent,\n }\n\n // Add component-level AI config\n if (componentOverride.ai) {\n newComponent.ai = {\n ...existingComponent.ai,\n ...componentOverride.ai,\n }\n }\n\n // Process field-level AI configs from overrides\n if (componentOverride.fields && existingComponent.fields) {\n const newFields: Record<string, FieldWithAi> = { ...existingComponent.fields }\n\n for (const [fieldName, fieldOverride] of Object.entries(componentOverride.fields)) {\n const existingField = existingComponent.fields[fieldName]\n\n // Skip if field doesn't exist\n if (!existingField) {\n continue\n }\n\n // Add AI config to field\n newFields[fieldName] = {\n ...existingField,\n ai: {\n ...existingField.ai,\n ...fieldOverride.ai,\n },\n }\n }\n\n newComponent.fields = newFields\n }\n\n newConfig.components[componentName] = newComponent\n }\n\n // Second pass: Auto-exclude custom fields that don't have AI instructions\n // Custom fields (type: 'custom') are typically interactive UI elements,\n // BUT some styling fields (background, padding, etc.) ARE custom fields\n // that we want AI to use. Only auto-exclude if NO AI instructions provided.\n for (const [componentName, component] of Object.entries(newConfig.components)) {\n if (!component.fields) continue\n\n const updatedFields: Record<string, FieldWithAi> = {}\n let hasChanges = false\n\n for (const [fieldName, field] of Object.entries(component.fields)) {\n const existingAi = (field as FieldWithAi).ai\n\n // Check if this is a custom field type\n if ((field as any).type === 'custom') {\n // If the field has AI instructions, DON'T auto-exclude it\n // The presence of instructions indicates we want AI to use this field\n if (existingAi?.instructions) {\n updatedFields[fieldName] = field as FieldWithAi\n }\n // Otherwise, auto-exclude custom fields from AI generation\n // (unless already excluded)\n else if (!existingAi?.exclude) {\n updatedFields[fieldName] = {\n ...field,\n ai: {\n ...existingAi,\n exclude: true,\n },\n }\n hasChanges = true\n } else {\n updatedFields[fieldName] = field as FieldWithAi\n }\n } else {\n updatedFields[fieldName] = field as FieldWithAi\n }\n }\n\n // Only update component if we made changes\n if (hasChanges) {\n newConfig.components[componentName] = {\n ...component,\n fields: updatedFields,\n }\n }\n }\n\n // Third pass: Auto-exclude custom fields from ROOT config (same logic as components)\n // Root can have fields just like components (e.g., isHomepage, pageLayout, etc.)\n if ((config as any).root?.fields) {\n const rootFields = (config as any).root.fields\n const updatedRootFields: Record<string, FieldWithAi> = {}\n let hasRootChanges = false\n\n for (const [fieldName, field] of Object.entries(rootFields)) {\n const existingAi = (field as FieldWithAi).ai\n\n // Check if this is a custom field type\n if ((field as any).type === 'custom') {\n // If the field has AI instructions, DON'T auto-exclude it\n if (existingAi?.instructions) {\n updatedRootFields[fieldName] = field as FieldWithAi\n }\n // Otherwise, auto-exclude custom fields from AI generation\n else if (!existingAi?.exclude) {\n updatedRootFields[fieldName] = {\n ...(field as FieldWithAi),\n ai: {\n ...existingAi,\n exclude: true,\n },\n }\n hasRootChanges = true\n } else {\n updatedRootFields[fieldName] = field as FieldWithAi\n }\n } else {\n updatedRootFields[fieldName] = field as FieldWithAi\n }\n }\n\n // Update root if we made changes\n if (hasRootChanges) {\n ;(newConfig as any).root = {\n ...(newConfig as any).root,\n fields: updatedRootFields,\n }\n }\n }\n\n // Cast back to PuckConfig for return\n return newConfig as unknown as PuckConfig\n}\n\n/**\n * Checks if a config already has AI configuration\n *\n * @param config - The Puck configuration to check\n * @returns True if any component has AI configuration\n */\nexport function hasAiConfig(config: PuckConfig): boolean {\n for (const component of Object.values(config.components)) {\n if ((component as any).ai) {\n return true\n }\n\n if (component.fields) {\n for (const field of Object.values(component.fields)) {\n if ((field as any).ai) {\n return true\n }\n }\n }\n }\n\n return false\n}\n"],"names":["injectAiConfig","config","overrides","newConfig","components","componentName","componentOverride","Object","entries","existingComponent","newComponent","ai","fields","newFields","fieldName","fieldOverride","existingField","component","updatedFields","hasChanges","field","existingAi","type","instructions","exclude","root","rootFields","updatedRootFields","hasRootChanges","hasAiConfig","values"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PuckApiRoutesConfig, PuckApiRouteHandlers } from './types';
1
+ import type { PuckApiRoutesConfig, PuckApiRouteHandlers } from './types.js';
2
2
  /**
3
3
  * Create API route handlers for /api/puck/pages
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"createPuckApiRoutes.d.ts","sourceRoot":"","sources":["../../src/api/createPuckApiRoutes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,SAAS,CAAA;AAehB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,mBAAmB,GAC/B,oBAAoB,CAyMtB"}
1
+ {"version":3,"file":"createPuckApiRoutes.d.ts","sourceRoot":"","sources":["../../src/api/createPuckApiRoutes.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAGrB,MAAM,YAAY,CAAA;AAenB;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,EAAE,mBAAmB,GAC/B,oBAAoB,CAyMtB"}
@@ -2,15 +2,14 @@ import { NextResponse } from 'next/server';
2
2
  import { getPayload } from 'payload';
3
3
  /**
4
4
  * Default Puck data for new pages
5
- */
6
- const DEFAULT_PUCK_DATA = {
5
+ */ const DEFAULT_PUCK_DATA = {
7
6
  root: {
8
7
  props: {
9
- title: '',
10
- },
8
+ title: ''
9
+ }
11
10
  },
12
11
  content: [],
13
- zones: {},
12
+ zones: {}
14
13
  };
15
14
  /**
16
15
  * Create API route handlers for /api/puck/pages
@@ -39,33 +38,39 @@ const DEFAULT_PUCK_DATA = {
39
38
  * },
40
39
  * })
41
40
  * ```
42
- */
43
- export function createPuckApiRoutes(routeConfig) {
44
- const { collection = 'pages', payloadConfig, auth, defaultPuckData = DEFAULT_PUCK_DATA, enableDrafts = true, onError, } = routeConfig;
41
+ */ export function createPuckApiRoutes(routeConfig) {
42
+ const { collection = 'pages', payloadConfig, auth, defaultPuckData = DEFAULT_PUCK_DATA, enableDrafts = true, onError } = routeConfig;
45
43
  /**
46
- * GET /api/puck/pages
47
- * List all pages with optional filtering
48
- *
49
- * Query Parameters:
50
- * - page: Page number (default: 1)
51
- * - limit: Items per page (default: 10)
52
- * - search: Search in title field
53
- * - status: Filter by _status ('draft', 'published', 'all')
54
- * - editorVersion: Filter by editorVersion field
55
- * - sort: Sort field (default: '-updatedAt')
56
- */
57
- async function GET(request, _context) {
44
+ * GET /api/puck/pages
45
+ * List all pages with optional filtering
46
+ *
47
+ * Query Parameters:
48
+ * - page: Page number (default: 1)
49
+ * - limit: Items per page (default: 10)
50
+ * - search: Search in title field
51
+ * - status: Filter by _status ('draft', 'published', 'all')
52
+ * - editorVersion: Filter by editorVersion field
53
+ * - sort: Sort field (default: '-updatedAt')
54
+ */ async function GET(request, _context) {
58
55
  try {
59
56
  // Authenticate
60
57
  const authResult = await auth.authenticate(request);
61
58
  if (!authResult.authenticated || !authResult.user) {
62
- return NextResponse.json({ error: authResult.error || 'Unauthorized' }, { status: 401 });
59
+ return NextResponse.json({
60
+ error: authResult.error || 'Unauthorized'
61
+ }, {
62
+ status: 401
63
+ });
63
64
  }
64
65
  // Check list permission
65
66
  if (auth.canList) {
66
67
  const permission = await auth.canList(authResult.user);
67
68
  if (!permission.allowed) {
68
- return NextResponse.json({ error: permission.error || 'Forbidden' }, { status: 403 });
69
+ return NextResponse.json({
70
+ error: permission.error || 'Forbidden'
71
+ }, {
72
+ status: 403
73
+ });
69
74
  }
70
75
  }
71
76
  // Parse query parameters
@@ -78,82 +83,121 @@ export function createPuckApiRoutes(routeConfig) {
78
83
  const sort = searchParams.get('sort') || '-updatedAt';
79
84
  // Get Payload instance with provided config
80
85
  const config = await payloadConfig;
81
- const payload = await getPayload({ config });
86
+ const payload = await getPayload({
87
+ config
88
+ });
82
89
  // Build where clause
83
90
  const conditions = [];
84
91
  if (search) {
85
- conditions.push({ title: { contains: search } });
92
+ conditions.push({
93
+ title: {
94
+ contains: search
95
+ }
96
+ });
86
97
  }
87
98
  if (status && status !== 'all') {
88
- conditions.push({ _status: { equals: status } });
99
+ conditions.push({
100
+ _status: {
101
+ equals: status
102
+ }
103
+ });
89
104
  }
90
105
  if (editorVersion && editorVersion !== 'all') {
91
- conditions.push({ editorVersion: { equals: editorVersion } });
106
+ conditions.push({
107
+ editorVersion: {
108
+ equals: editorVersion
109
+ }
110
+ });
92
111
  }
93
- const where = conditions.length > 0
94
- ? conditions.length === 1
95
- ? conditions[0]
96
- : { and: conditions }
97
- : undefined;
112
+ const where = conditions.length > 0 ? conditions.length === 1 ? conditions[0] : {
113
+ and: conditions
114
+ } : undefined;
98
115
  const result = await payload.find({
99
116
  collection,
100
117
  page,
101
118
  limit,
102
119
  sort,
103
- where,
120
+ where
104
121
  });
105
122
  return NextResponse.json(result);
106
- }
107
- catch (error) {
123
+ } catch (error) {
108
124
  if (onError) {
109
- onError(error, { operation: 'list', request });
125
+ onError(error, {
126
+ operation: 'list',
127
+ request
128
+ });
110
129
  }
111
130
  console.error('Error listing pages:', error);
112
- return NextResponse.json({ error: 'Failed to list pages' }, { status: 500 });
131
+ return NextResponse.json({
132
+ error: 'Failed to list pages'
133
+ }, {
134
+ status: 500
135
+ });
113
136
  }
114
137
  }
115
138
  /**
116
- * POST /api/puck/pages
117
- * Create a new page with Puck data
118
- *
119
- * Request Body:
120
- * - title: string (required)
121
- * - slug: string (required)
122
- * - puckData?: PuckData (optional, uses default if not provided)
123
- * - status?: 'draft' | 'published' (default: 'draft')
124
- */
125
- async function POST(request, _context) {
139
+ * POST /api/puck/pages
140
+ * Create a new page with Puck data
141
+ *
142
+ * Request Body:
143
+ * - title: string (required)
144
+ * - slug: string (required)
145
+ * - puckData?: PuckData (optional, uses default if not provided)
146
+ * - status?: 'draft' | 'published' (default: 'draft')
147
+ */ async function POST(request, _context) {
126
148
  try {
127
149
  // Authenticate
128
150
  const authResult = await auth.authenticate(request);
129
151
  if (!authResult.authenticated || !authResult.user) {
130
- return NextResponse.json({ error: authResult.error || 'Unauthorized' }, { status: 401 });
152
+ return NextResponse.json({
153
+ error: authResult.error || 'Unauthorized'
154
+ }, {
155
+ status: 401
156
+ });
131
157
  }
132
158
  // Check create permission
133
159
  if (auth.canCreate) {
134
160
  const permission = await auth.canCreate(authResult.user);
135
161
  if (!permission.allowed) {
136
- return NextResponse.json({ error: permission.error || 'Forbidden' }, { status: 403 });
162
+ return NextResponse.json({
163
+ error: permission.error || 'Forbidden'
164
+ }, {
165
+ status: 403
166
+ });
137
167
  }
138
168
  }
139
169
  // Parse request body
140
- const body = (await request.json());
170
+ const body = await request.json();
141
171
  const { title, slug, puckData, status = 'draft' } = body;
142
172
  // Validate required fields
143
173
  if (!title || !slug) {
144
- return NextResponse.json({ error: 'Title and slug are required' }, { status: 400 });
174
+ return NextResponse.json({
175
+ error: 'Title and slug are required'
176
+ }, {
177
+ status: 400
178
+ });
145
179
  }
146
180
  // Get Payload instance with provided config
147
181
  const config = await payloadConfig;
148
- const payload = await getPayload({ config });
182
+ const payload = await getPayload({
183
+ config
184
+ });
149
185
  // Check if slug already exists
150
186
  const existing = await payload.find({
151
187
  collection,
152
- where: { slug: { equals: slug } },
153
- limit: 1,
188
+ where: {
189
+ slug: {
190
+ equals: slug
191
+ }
192
+ },
193
+ limit: 1
154
194
  });
155
195
  if (existing.docs.length > 0) {
156
- return NextResponse.json({ error: 'A page with this slug already exists' }, { status: 409 });
196
+ return NextResponse.json({
197
+ error: 'A page with this slug already exists'
198
+ }, {
199
+ status: 409
200
+ });
157
201
  }
158
202
  // Prepare initial Puck data with title in root.props
159
203
  const initialPuckData = puckData || {
@@ -162,9 +206,9 @@ export function createPuckApiRoutes(routeConfig) {
162
206
  ...defaultPuckData.root,
163
207
  props: {
164
208
  ...defaultPuckData.root?.props,
165
- title,
166
- },
167
- },
209
+ title
210
+ }
211
+ }
168
212
  };
169
213
  // Create the page
170
214
  const newPage = await payload.create({
@@ -175,19 +219,33 @@ export function createPuckApiRoutes(routeConfig) {
175
219
  slug,
176
220
  editorVersion: 'puck',
177
221
  puckData: initialPuckData,
178
- _status: status,
179
- },
222
+ _status: status
223
+ }
180
224
  });
181
- return NextResponse.json({ doc: newPage }, { status: 201 });
182
- }
183
- catch (error) {
225
+ return NextResponse.json({
226
+ doc: newPage
227
+ }, {
228
+ status: 201
229
+ });
230
+ } catch (error) {
184
231
  if (onError) {
185
- onError(error, { operation: 'create', request });
232
+ onError(error, {
233
+ operation: 'create',
234
+ request
235
+ });
186
236
  }
187
237
  console.error('Error creating page:', error);
188
- return NextResponse.json({ error: 'Failed to create page' }, { status: 500 });
238
+ return NextResponse.json({
239
+ error: 'Failed to create page'
240
+ }, {
241
+ status: 500
242
+ });
189
243
  }
190
244
  }
191
- return { GET, POST };
245
+ return {
246
+ GET,
247
+ POST
248
+ };
192
249
  }
250
+
193
251
  //# sourceMappingURL=createPuckApiRoutes.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"createPuckApiRoutes.js","sourceRoot":"","sources":["../../src/api/createPuckApiRoutes.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/api/createPuckApiRoutes.ts"],"sourcesContent":["import { NextRequest, NextResponse } from 'next/server'\nimport { getPayload } from 'payload'\nimport type { Where } from 'payload'\nimport type { Data as PuckData } from '@puckeditor/core'\nimport type {\n PuckApiRoutesConfig,\n PuckApiRouteHandlers,\n CreatePageBody,\n RouteHandlerContext,\n} from './types.js'\n\n/**\n * Default Puck data for new pages\n */\nconst DEFAULT_PUCK_DATA: PuckData = {\n root: {\n props: {\n title: '',\n } as Record<string, unknown>,\n },\n content: [],\n zones: {},\n}\n\n/**\n * Create API route handlers for /api/puck/pages\n *\n * Provides GET (list pages) and POST (create page) handlers\n * with configurable authentication and authorization.\n *\n * @example\n * ```typescript\n * // src/app/api/puck/pages/route.ts\n * import { createPuckApiRoutes } from '@delmaredigital/payload-puck/api'\n * import config from '@payload-config'\n *\n * export const { GET, POST } = createPuckApiRoutes({\n * collection: 'pages',\n * payloadConfig: config,\n * auth: {\n * authenticate: async (request) => {\n * const session = await getSession(request)\n * if (!session?.user) return { authenticated: false }\n * return { authenticated: true, user: session.user }\n * },\n * canCreate: async (user) => {\n * return { allowed: user.role === 'admin' || user.role === 'editor' }\n * },\n * },\n * })\n * ```\n */\nexport function createPuckApiRoutes(\n routeConfig: PuckApiRoutesConfig\n): PuckApiRouteHandlers {\n const {\n collection = 'pages',\n payloadConfig,\n auth,\n defaultPuckData = DEFAULT_PUCK_DATA,\n enableDrafts = true,\n onError,\n } = routeConfig\n\n /**\n * GET /api/puck/pages\n * List all pages with optional filtering\n *\n * Query Parameters:\n * - page: Page number (default: 1)\n * - limit: Items per page (default: 10)\n * - search: Search in title field\n * - status: Filter by _status ('draft', 'published', 'all')\n * - editorVersion: Filter by editorVersion field\n * - sort: Sort field (default: '-updatedAt')\n */\n async function GET(request: NextRequest, _context: RouteHandlerContext): Promise<Response> {\n try {\n // Authenticate\n const authResult = await auth.authenticate(request)\n if (!authResult.authenticated || !authResult.user) {\n return NextResponse.json(\n { error: authResult.error || 'Unauthorized' },\n { status: 401 }\n )\n }\n\n // Check list permission\n if (auth.canList) {\n const permission = await auth.canList(authResult.user)\n if (!permission.allowed) {\n return NextResponse.json(\n { error: permission.error || 'Forbidden' },\n { status: 403 }\n )\n }\n }\n\n // Parse query parameters\n const { searchParams } = new URL(request.url)\n const page = parseInt(searchParams.get('page') || '1', 10)\n const limit = Math.min(parseInt(searchParams.get('limit') || '10', 10), 100)\n const search = searchParams.get('search') || ''\n const status = searchParams.get('status')\n const editorVersion = searchParams.get('editorVersion')\n const sort = searchParams.get('sort') || '-updatedAt'\n\n // Get Payload instance with provided config\n const config = await payloadConfig\n const payload = await getPayload({ config })\n\n // Build where clause\n const conditions: Where[] = []\n\n if (search) {\n conditions.push({ title: { contains: search } })\n }\n\n if (status && status !== 'all') {\n conditions.push({ _status: { equals: status } })\n }\n\n if (editorVersion && editorVersion !== 'all') {\n conditions.push({ editorVersion: { equals: editorVersion } })\n }\n\n const where: Where | undefined =\n conditions.length > 0\n ? conditions.length === 1\n ? conditions[0]\n : { and: conditions }\n : undefined\n\n const result = await payload.find({\n collection,\n page,\n limit,\n sort,\n where,\n })\n\n return NextResponse.json(result)\n } catch (error) {\n if (onError) {\n onError(error, { operation: 'list', request })\n }\n console.error('Error listing pages:', error)\n return NextResponse.json(\n { error: 'Failed to list pages' },\n { status: 500 }\n )\n }\n }\n\n /**\n * POST /api/puck/pages\n * Create a new page with Puck data\n *\n * Request Body:\n * - title: string (required)\n * - slug: string (required)\n * - puckData?: PuckData (optional, uses default if not provided)\n * - status?: 'draft' | 'published' (default: 'draft')\n */\n async function POST(request: NextRequest, _context: RouteHandlerContext): Promise<Response> {\n try {\n // Authenticate\n const authResult = await auth.authenticate(request)\n if (!authResult.authenticated || !authResult.user) {\n return NextResponse.json(\n { error: authResult.error || 'Unauthorized' },\n { status: 401 }\n )\n }\n\n // Check create permission\n if (auth.canCreate) {\n const permission = await auth.canCreate(authResult.user)\n if (!permission.allowed) {\n return NextResponse.json(\n { error: permission.error || 'Forbidden' },\n { status: 403 }\n )\n }\n }\n\n // Parse request body\n const body = (await request.json()) as CreatePageBody\n const { title, slug, puckData, status = 'draft' } = body\n\n // Validate required fields\n if (!title || !slug) {\n return NextResponse.json(\n { error: 'Title and slug are required' },\n { status: 400 }\n )\n }\n\n // Get Payload instance with provided config\n const config = await payloadConfig\n const payload = await getPayload({ config })\n\n // Check if slug already exists\n const existing = await payload.find({\n collection,\n where: { slug: { equals: slug } },\n limit: 1,\n })\n\n if (existing.docs.length > 0) {\n return NextResponse.json(\n { error: 'A page with this slug already exists' },\n { status: 409 }\n )\n }\n\n // Prepare initial Puck data with title in root.props\n const initialPuckData = puckData || {\n ...defaultPuckData,\n root: {\n ...defaultPuckData.root,\n props: {\n ...(defaultPuckData.root as { props?: Record<string, unknown> })?.props,\n title,\n },\n },\n }\n\n // Create the page\n const newPage = await payload.create({\n collection,\n draft: enableDrafts,\n data: {\n title,\n slug,\n editorVersion: 'puck',\n puckData: initialPuckData,\n _status: status,\n },\n })\n\n return NextResponse.json({ doc: newPage }, { status: 201 })\n } catch (error) {\n if (onError) {\n onError(error, { operation: 'create', request })\n }\n console.error('Error creating page:', error)\n return NextResponse.json(\n { error: 'Failed to create page' },\n { status: 500 }\n )\n }\n }\n\n return { GET, POST }\n}\n"],"names":["NextResponse","getPayload","DEFAULT_PUCK_DATA","root","props","title","content","zones","createPuckApiRoutes","routeConfig","collection","payloadConfig","auth","defaultPuckData","enableDrafts","onError","GET","request","_context","authResult","authenticate","authenticated","user","json","error","status","canList","permission","allowed","searchParams","URL","url","page","parseInt","get","limit","Math","min","search","editorVersion","sort","config","payload","conditions","push","contains","_status","equals","where","length","and","undefined","result","find","operation","console","POST","canCreate","body","slug","puckData","existing","docs","initialPuckData","newPage","create","draft","data","doc"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import type { PuckApiRoutesConfig, PuckApiVersionsRouteHandlers } from './types';
1
+ import type { PuckApiRoutesConfig, PuckApiVersionsRouteHandlers } from './types.js';
2
2
  /**
3
3
  * Create API route handlers for /api/puck/pages/[id]/versions
4
4
  *
@@ -1 +1 @@
1
- {"version":3,"file":"createPuckApiRoutesVersions.d.ts","sourceRoot":"","sources":["../../src/api/createPuckApiRoutesVersions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,4BAA4B,EAE7B,MAAM,SAAS,CAAA;AAEhB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,GAC/B,4BAA4B,CAyK9B"}
1
+ {"version":3,"file":"createPuckApiRoutesVersions.d.ts","sourceRoot":"","sources":["../../src/api/createPuckApiRoutesVersions.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,4BAA4B,EAE7B,MAAM,YAAY,CAAA;AAEnB;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,2BAA2B,CACzC,WAAW,EAAE,mBAAmB,GAC/B,4BAA4B,CAyK9B"}