@delmaredigital/payload-puck 0.4.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (451) hide show
  1. package/README.md +429 -17
  2. package/dist/admin/PuckEditorView.d.ts +1 -1
  3. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  4. package/dist/ai/collections/AiContext.d.ts +16 -0
  5. package/dist/ai/collections/AiContext.d.ts.map +1 -0
  6. package/dist/ai/collections/AiContext.js +87 -0
  7. package/dist/ai/collections/AiContext.js.map +1 -0
  8. package/dist/ai/collections/AiPrompts.d.ts +10 -0
  9. package/dist/ai/collections/AiPrompts.d.ts.map +1 -0
  10. package/dist/ai/collections/AiPrompts.js +63 -0
  11. package/dist/ai/collections/AiPrompts.js.map +1 -0
  12. package/dist/ai/createAiApiRoutes.d.ts +40 -0
  13. package/dist/ai/createAiApiRoutes.d.ts.map +1 -0
  14. package/dist/ai/createAiApiRoutes.js +106 -0
  15. package/dist/ai/createAiApiRoutes.js.map +1 -0
  16. package/dist/ai/createAiGenerate.d.ts +65 -0
  17. package/dist/ai/createAiGenerate.d.ts.map +1 -0
  18. package/dist/ai/createAiGenerate.js +106 -0
  19. package/dist/ai/createAiGenerate.js.map +1 -0
  20. package/dist/ai/createAiPlugin.d.ts +39 -0
  21. package/dist/ai/createAiPlugin.d.ts.map +1 -0
  22. package/dist/ai/createAiPlugin.js +61 -0
  23. package/dist/ai/createAiPlugin.js.map +1 -0
  24. package/dist/ai/hooks/useAiContext.d.ts +63 -0
  25. package/dist/ai/hooks/useAiContext.d.ts.map +1 -0
  26. package/dist/ai/hooks/useAiContext.js +146 -0
  27. package/dist/ai/hooks/useAiContext.js.map +1 -0
  28. package/dist/ai/hooks/useAiPrompts.d.ts +25 -0
  29. package/dist/ai/hooks/useAiPrompts.d.ts.map +1 -0
  30. package/dist/ai/hooks/useAiPrompts.js +74 -0
  31. package/dist/ai/hooks/useAiPrompts.js.map +1 -0
  32. package/dist/ai/index.d.ts +51 -0
  33. package/dist/ai/index.d.ts.map +1 -0
  34. package/dist/ai/index.js +69 -0
  35. package/dist/ai/index.js.map +1 -0
  36. package/dist/ai/plugins/ContextEditorPanel.d.ts +9 -0
  37. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -0
  38. package/dist/ai/plugins/ContextEditorPanel.js +399 -0
  39. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -0
  40. package/dist/ai/plugins/PromptEditorPanel.d.ts +9 -0
  41. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -0
  42. package/dist/ai/plugins/PromptEditorPanel.js +270 -0
  43. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -0
  44. package/dist/ai/plugins/contextEditorPlugin.d.ts +30 -0
  45. package/dist/ai/plugins/contextEditorPlugin.d.ts.map +1 -0
  46. package/dist/ai/plugins/contextEditorPlugin.js +40 -0
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -0
  48. package/dist/ai/plugins/promptApiRoutes.d.ts +68 -0
  49. package/dist/ai/plugins/promptApiRoutes.d.ts.map +1 -0
  50. package/dist/ai/plugins/promptApiRoutes.js +181 -0
  51. package/dist/ai/plugins/promptApiRoutes.js.map +1 -0
  52. package/dist/ai/plugins/promptEditorPlugin.d.ts +29 -0
  53. package/dist/ai/plugins/promptEditorPlugin.d.ts.map +1 -0
  54. package/dist/ai/plugins/promptEditorPlugin.js +39 -0
  55. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -0
  56. package/dist/ai/presets/componentAiDefaults.d.ts +40 -0
  57. package/dist/ai/presets/componentAiDefaults.d.ts.map +1 -0
  58. package/dist/ai/presets/componentAiDefaults.js +239 -0
  59. package/dist/ai/presets/componentAiDefaults.js.map +1 -0
  60. package/dist/ai/presets/index.d.ts +94 -0
  61. package/dist/ai/presets/index.d.ts.map +1 -0
  62. package/dist/ai/presets/index.js +110 -0
  63. package/dist/ai/presets/index.js.map +1 -0
  64. package/dist/ai/presets/instructions/interactive.d.ts +15 -0
  65. package/dist/ai/presets/instructions/interactive.d.ts.map +1 -0
  66. package/dist/ai/presets/instructions/interactive.js +334 -0
  67. package/dist/ai/presets/instructions/interactive.js.map +1 -0
  68. package/dist/ai/presets/instructions/layout.d.ts +16 -0
  69. package/dist/ai/presets/instructions/layout.d.ts.map +1 -0
  70. package/dist/ai/presets/instructions/layout.js +486 -0
  71. package/dist/ai/presets/instructions/layout.js.map +1 -0
  72. package/dist/ai/presets/instructions/media.d.ts +15 -0
  73. package/dist/ai/presets/instructions/media.d.ts.map +1 -0
  74. package/dist/ai/presets/instructions/media.js +136 -0
  75. package/dist/ai/presets/instructions/media.js.map +1 -0
  76. package/dist/ai/presets/instructions/pagePatterns.d.ts +20 -0
  77. package/dist/ai/presets/instructions/pagePatterns.d.ts.map +1 -0
  78. package/dist/ai/presets/instructions/pagePatterns.js +290 -0
  79. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -0
  80. package/dist/ai/presets/instructions/schemas.d.ts +1247 -0
  81. package/dist/ai/presets/instructions/schemas.d.ts.map +1 -0
  82. package/dist/ai/presets/instructions/schemas.js +240 -0
  83. package/dist/ai/presets/instructions/schemas.js.map +1 -0
  84. package/dist/ai/presets/instructions/typography.d.ts +16 -0
  85. package/dist/ai/presets/instructions/typography.d.ts.map +1 -0
  86. package/dist/ai/presets/instructions/typography.js +192 -0
  87. package/dist/ai/presets/instructions/typography.js.map +1 -0
  88. package/dist/ai/tools/index.d.ts +116 -0
  89. package/dist/ai/tools/index.d.ts.map +1 -0
  90. package/dist/ai/tools/index.js +214 -0
  91. package/dist/ai/tools/index.js.map +1 -0
  92. package/dist/ai/types.d.ts +507 -0
  93. package/dist/ai/types.d.ts.map +1 -0
  94. package/dist/ai/types.js +2 -0
  95. package/dist/ai/types.js.map +1 -0
  96. package/dist/ai/utils/injectAiConfig.d.ts +67 -0
  97. package/dist/ai/utils/injectAiConfig.d.ts.map +1 -0
  98. package/dist/ai/utils/injectAiConfig.js +216 -0
  99. package/dist/ai/utils/injectAiConfig.js.map +1 -0
  100. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  101. package/dist/api/createPuckApiRoutesWithId.js +12 -5
  102. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  103. package/dist/api/index.d.ts +1 -1
  104. package/dist/api/index.d.ts.map +1 -1
  105. package/dist/api/index.js +1 -1
  106. package/dist/api/index.js.map +1 -1
  107. package/dist/api/types.d.ts +1 -1
  108. package/dist/api/types.d.ts.map +1 -1
  109. package/dist/api/utils/mapRootProps.d.ts +19 -0
  110. package/dist/api/utils/mapRootProps.d.ts.map +1 -1
  111. package/dist/api/utils/mapRootProps.js +33 -0
  112. package/dist/api/utils/mapRootProps.js.map +1 -1
  113. package/dist/components/exports.d.ts +2 -1
  114. package/dist/components/exports.d.ts.map +1 -1
  115. package/dist/components/exports.js +5 -1
  116. package/dist/components/exports.js.map +1 -1
  117. package/dist/components/interactive/Accordion.d.ts +1 -1
  118. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  119. package/dist/components/interactive/Accordion.js +4 -4
  120. package/dist/components/interactive/Accordion.js.map +1 -1
  121. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  122. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  123. package/dist/components/interactive/Button.d.ts +1 -1
  124. package/dist/components/interactive/Button.d.ts.map +1 -1
  125. package/dist/components/interactive/Button.server.d.ts +2 -3
  126. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  127. package/dist/components/interactive/Button.server.js +1 -2
  128. package/dist/components/interactive/Button.server.js.map +1 -1
  129. package/dist/components/interactive/Card.d.ts +1 -1
  130. package/dist/components/interactive/Card.d.ts.map +1 -1
  131. package/dist/components/interactive/Card.server.d.ts +1 -1
  132. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  133. package/dist/components/interactive/Divider.d.ts +1 -1
  134. package/dist/components/interactive/Divider.d.ts.map +1 -1
  135. package/dist/components/interactive/Divider.server.d.ts +1 -1
  136. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  137. package/dist/components/layout/Container.d.ts +3 -1
  138. package/dist/components/layout/Container.d.ts.map +1 -1
  139. package/dist/components/layout/Container.js +16 -2
  140. package/dist/components/layout/Container.js.map +1 -1
  141. package/dist/components/layout/Container.server.d.ts +3 -1
  142. package/dist/components/layout/Container.server.d.ts.map +1 -1
  143. package/dist/components/layout/Container.server.js +5 -2
  144. package/dist/components/layout/Container.server.js.map +1 -1
  145. package/dist/components/layout/Flex.d.ts +3 -1
  146. package/dist/components/layout/Flex.d.ts.map +1 -1
  147. package/dist/components/layout/Flex.js +18 -2
  148. package/dist/components/layout/Flex.js.map +1 -1
  149. package/dist/components/layout/Flex.server.d.ts +3 -1
  150. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  151. package/dist/components/layout/Flex.server.js +5 -2
  152. package/dist/components/layout/Flex.server.js.map +1 -1
  153. package/dist/components/layout/Grid.d.ts +3 -1
  154. package/dist/components/layout/Grid.d.ts.map +1 -1
  155. package/dist/components/layout/Grid.js +15 -2
  156. package/dist/components/layout/Grid.js.map +1 -1
  157. package/dist/components/layout/Grid.server.d.ts +3 -1
  158. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  159. package/dist/components/layout/Grid.server.js +5 -2
  160. package/dist/components/layout/Grid.server.js.map +1 -1
  161. package/dist/components/layout/Section.d.ts +3 -1
  162. package/dist/components/layout/Section.d.ts.map +1 -1
  163. package/dist/components/layout/Section.js +32 -5
  164. package/dist/components/layout/Section.js.map +1 -1
  165. package/dist/components/layout/Section.server.d.ts +3 -1
  166. package/dist/components/layout/Section.server.d.ts.map +1 -1
  167. package/dist/components/layout/Section.server.js +16 -4
  168. package/dist/components/layout/Section.server.js.map +1 -1
  169. package/dist/components/layout/Spacer.d.ts +1 -1
  170. package/dist/components/layout/Spacer.d.ts.map +1 -1
  171. package/dist/components/layout/Spacer.server.d.ts +1 -1
  172. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  173. package/dist/components/layout/Template.d.ts +1 -1
  174. package/dist/components/layout/Template.d.ts.map +1 -1
  175. package/dist/components/layout/Template.server.d.ts +1 -1
  176. package/dist/components/layout/Template.server.d.ts.map +1 -1
  177. package/dist/components/media/Image.d.ts +1 -1
  178. package/dist/components/media/Image.d.ts.map +1 -1
  179. package/dist/components/media/Image.server.d.ts +1 -1
  180. package/dist/components/media/Image.server.d.ts.map +1 -1
  181. package/dist/components/typography/Heading.d.ts +1 -1
  182. package/dist/components/typography/Heading.d.ts.map +1 -1
  183. package/dist/components/typography/Heading.server.d.ts +1 -1
  184. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  185. package/dist/components/typography/RichText.editor.d.ts +15 -2
  186. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  187. package/dist/components/typography/RichText.editor.js +18 -11
  188. package/dist/components/typography/RichText.editor.js.map +1 -1
  189. package/dist/components/typography/RichText.server.d.ts +3 -2
  190. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  191. package/dist/components/typography/RichText.server.js +10 -5
  192. package/dist/components/typography/RichText.server.js.map +1 -1
  193. package/dist/components/typography/Text.d.ts +1 -1
  194. package/dist/components/typography/Text.d.ts.map +1 -1
  195. package/dist/components/typography/Text.server.d.ts +1 -1
  196. package/dist/components/typography/Text.server.d.ts.map +1 -1
  197. package/dist/components/typography/index.d.ts +1 -1
  198. package/dist/components/typography/index.d.ts.map +1 -1
  199. package/dist/components/typography/index.js +1 -1
  200. package/dist/components/typography/index.js.map +1 -1
  201. package/dist/config/config.editor.d.ts +4 -4
  202. package/dist/config/config.editor.d.ts.map +1 -1
  203. package/dist/config/index.d.ts +2 -1
  204. package/dist/config/index.d.ts.map +1 -1
  205. package/dist/config/merge.d.ts +1 -1
  206. package/dist/config/merge.d.ts.map +1 -1
  207. package/dist/config/presets.d.ts +15 -15
  208. package/dist/config/presets.d.ts.map +1 -1
  209. package/dist/config/presets.js +2 -2
  210. package/dist/config/presets.js.map +1 -1
  211. package/dist/config/types.d.ts +111 -0
  212. package/dist/config/types.d.ts.map +1 -0
  213. package/dist/config/types.js +8 -0
  214. package/dist/config/types.js.map +1 -0
  215. package/dist/editor/PuckEditor.d.ts +88 -2
  216. package/dist/editor/PuckEditor.d.ts.map +1 -1
  217. package/dist/editor/PuckEditor.js +41 -13
  218. package/dist/editor/PuckEditor.js.map +1 -1
  219. package/dist/editor/PuckEditorImpl.client.d.ts +49 -4
  220. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  221. package/dist/editor/PuckEditorImpl.client.js +191 -14
  222. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  223. package/dist/editor/ai-plugin-overrides.css +20 -0
  224. package/dist/editor/components/HeaderActions.d.ts +7 -2
  225. package/dist/editor/components/HeaderActions.d.ts.map +1 -1
  226. package/dist/editor/components/HeaderActions.js +16 -3
  227. package/dist/editor/components/HeaderActions.js.map +1 -1
  228. package/dist/editor/components/IframeWrapper.d.ts +13 -0
  229. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  230. package/dist/editor/components/IframeWrapper.js +60 -4
  231. package/dist/editor/components/IframeWrapper.js.map +1 -1
  232. package/dist/editor/components/PreviewModal.d.ts +9 -1
  233. package/dist/editor/components/PreviewModal.d.ts.map +1 -1
  234. package/dist/editor/components/PreviewModal.js +36 -1
  235. package/dist/editor/components/PreviewModal.js.map +1 -1
  236. package/dist/editor/index.d.ts +4 -0
  237. package/dist/editor/index.d.ts.map +1 -1
  238. package/dist/editor/index.js +4 -0
  239. package/dist/editor/index.js.map +1 -1
  240. package/dist/editor/plugins/VersionHistoryPanel.d.ts +43 -0
  241. package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +1 -0
  242. package/dist/editor/plugins/VersionHistoryPanel.js +303 -0
  243. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -0
  244. package/dist/editor/plugins/index.d.ts +6 -3
  245. package/dist/editor/plugins/index.d.ts.map +1 -1
  246. package/dist/editor/plugins/index.js +7 -3
  247. package/dist/editor/plugins/index.js.map +1 -1
  248. package/dist/editor/plugins/versionHistoryPlugin.d.ts +37 -0
  249. package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +1 -0
  250. package/dist/editor/plugins/versionHistoryPlugin.js +36 -0
  251. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -0
  252. package/dist/editor/utils/detectPageTree.d.ts +1 -1
  253. package/dist/editor/utils/detectPageTree.d.ts.map +1 -1
  254. package/dist/editor/utils/injectPageTreeFields.d.ts +1 -1
  255. package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -1
  256. package/dist/editor/utils/injectPageTreeFields.js +2 -2
  257. package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
  258. package/dist/endpoints/ai.d.ts +36 -0
  259. package/dist/endpoints/ai.d.ts.map +1 -0
  260. package/dist/endpoints/ai.js +315 -0
  261. package/dist/endpoints/ai.js.map +1 -0
  262. package/dist/endpoints/context.d.ts +30 -0
  263. package/dist/endpoints/context.d.ts.map +1 -0
  264. package/dist/endpoints/context.js +123 -0
  265. package/dist/endpoints/context.js.map +1 -0
  266. package/dist/endpoints/prompts.d.ts +28 -0
  267. package/dist/endpoints/prompts.d.ts.map +1 -0
  268. package/dist/endpoints/prompts.js +118 -0
  269. package/dist/endpoints/prompts.js.map +1 -0
  270. package/dist/endpoints/styles.d.ts +19 -0
  271. package/dist/endpoints/styles.d.ts.map +1 -0
  272. package/dist/endpoints/styles.js +116 -0
  273. package/dist/endpoints/styles.js.map +1 -0
  274. package/dist/fields/AlignmentField.d.ts +1 -1
  275. package/dist/fields/AlignmentField.d.ts.map +1 -1
  276. package/dist/fields/AlignmentField.js +1 -0
  277. package/dist/fields/AlignmentField.js.map +1 -1
  278. package/dist/fields/AnimationField.d.ts +1 -1
  279. package/dist/fields/AnimationField.d.ts.map +1 -1
  280. package/dist/fields/BackgroundField.d.ts +1 -1
  281. package/dist/fields/BackgroundField.d.ts.map +1 -1
  282. package/dist/fields/BackgroundField.js +9 -4
  283. package/dist/fields/BackgroundField.js.map +1 -1
  284. package/dist/fields/BorderField.d.ts +1 -1
  285. package/dist/fields/BorderField.d.ts.map +1 -1
  286. package/dist/fields/BorderField.js +1 -0
  287. package/dist/fields/BorderField.js.map +1 -1
  288. package/dist/fields/ColorPickerField.d.ts +1 -1
  289. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  290. package/dist/fields/ColorPickerField.js +4 -2
  291. package/dist/fields/ColorPickerField.js.map +1 -1
  292. package/dist/fields/ContentAlignmentField.d.ts +66 -0
  293. package/dist/fields/ContentAlignmentField.d.ts.map +1 -0
  294. package/dist/fields/ContentAlignmentField.js +255 -0
  295. package/dist/fields/ContentAlignmentField.js.map +1 -0
  296. package/dist/fields/DimensionsField.d.ts +1 -1
  297. package/dist/fields/DimensionsField.d.ts.map +1 -1
  298. package/dist/fields/DimensionsField.js +8 -2
  299. package/dist/fields/DimensionsField.js.map +1 -1
  300. package/dist/fields/FlexAlignmentField.d.ts +1 -1
  301. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  302. package/dist/fields/FolderPickerField.d.ts +1 -1
  303. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  304. package/dist/fields/GradientEditor.d.ts.map +1 -1
  305. package/dist/fields/GradientEditor.js +3 -0
  306. package/dist/fields/GradientEditor.js.map +1 -1
  307. package/dist/fields/LockedField.d.ts +1 -1
  308. package/dist/fields/LockedField.d.ts.map +1 -1
  309. package/dist/fields/MarginField.d.ts +1 -1
  310. package/dist/fields/MarginField.d.ts.map +1 -1
  311. package/dist/fields/MediaField.d.ts +1 -1
  312. package/dist/fields/MediaField.d.ts.map +1 -1
  313. package/dist/fields/MediaField.js +3 -2
  314. package/dist/fields/MediaField.js.map +1 -1
  315. package/dist/fields/PaddingField.d.ts +1 -1
  316. package/dist/fields/PaddingField.d.ts.map +1 -1
  317. package/dist/fields/PageSegmentField.d.ts +18 -1
  318. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  319. package/dist/fields/PageSegmentField.js +106 -1
  320. package/dist/fields/PageSegmentField.js.map +1 -1
  321. package/dist/fields/ResetField.d.ts +1 -1
  322. package/dist/fields/ResetField.d.ts.map +1 -1
  323. package/dist/fields/ResetField.js +1 -1
  324. package/dist/fields/ResetField.js.map +1 -1
  325. package/dist/fields/ResponsiveField.d.ts +1 -1
  326. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  327. package/dist/fields/ResponsiveField.js +5 -2
  328. package/dist/fields/ResponsiveField.js.map +1 -1
  329. package/dist/fields/ResponsiveVisibilityField.d.ts +1 -1
  330. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  331. package/dist/fields/ResponsiveVisibilityField.js +4 -3
  332. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  333. package/dist/fields/SizeField.d.ts +3 -25
  334. package/dist/fields/SizeField.d.ts.map +1 -1
  335. package/dist/fields/SizeField.js +8 -34
  336. package/dist/fields/SizeField.js.map +1 -1
  337. package/dist/fields/SlugPreviewField.d.ts +1 -1
  338. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  339. package/dist/fields/TemplateField.d.ts +1 -1
  340. package/dist/fields/TemplateField.d.ts.map +1 -1
  341. package/dist/fields/TemplateField.js +1 -1
  342. package/dist/fields/TemplateField.js.map +1 -1
  343. package/dist/fields/TransformField.d.ts +1 -1
  344. package/dist/fields/TransformField.d.ts.map +1 -1
  345. package/dist/fields/TransformField.js +2 -0
  346. package/dist/fields/TransformField.js.map +1 -1
  347. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  348. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  349. package/dist/fields/WidthField.d.ts +1 -1
  350. package/dist/fields/WidthField.d.ts.map +1 -1
  351. package/dist/fields/index.d.ts +9 -37
  352. package/dist/fields/index.d.ts.map +1 -1
  353. package/dist/fields/index.js +21 -79
  354. package/dist/fields/index.js.map +1 -1
  355. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +16 -0
  356. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -0
  357. package/dist/fields/richtext/controls/ColorPickerControl.js +116 -0
  358. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -0
  359. package/dist/fields/richtext/controls/DropdownPortal.d.ts +17 -0
  360. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -0
  361. package/dist/fields/richtext/controls/DropdownPortal.js +90 -0
  362. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -0
  363. package/dist/fields/richtext/controls/FontSizeControl.d.ts +8 -0
  364. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -0
  365. package/dist/fields/richtext/controls/FontSizeControl.js +62 -0
  366. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -0
  367. package/dist/fields/richtext/controls/HighlightControl.d.ts +9 -0
  368. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -0
  369. package/dist/fields/richtext/controls/HighlightControl.js +44 -0
  370. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -0
  371. package/dist/fields/richtext/controls/index.d.ts +11 -0
  372. package/dist/fields/richtext/controls/index.d.ts.map +1 -0
  373. package/dist/fields/richtext/controls/index.js +16 -0
  374. package/dist/fields/richtext/controls/index.js.map +1 -0
  375. package/dist/fields/richtext/controls/shared.d.ts +97 -0
  376. package/dist/fields/richtext/controls/shared.d.ts.map +1 -0
  377. package/dist/fields/richtext/controls/shared.js +344 -0
  378. package/dist/fields/richtext/controls/shared.js.map +1 -0
  379. package/dist/fields/richtext/createRichTextField.d.ts +165 -0
  380. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -0
  381. package/dist/fields/richtext/createRichTextField.js +139 -0
  382. package/dist/fields/richtext/createRichTextField.js.map +1 -0
  383. package/dist/fields/richtext/extensions/FontSize.d.ts +23 -0
  384. package/dist/fields/richtext/extensions/FontSize.d.ts.map +1 -0
  385. package/dist/fields/richtext/extensions/FontSize.js +47 -0
  386. package/dist/fields/richtext/extensions/FontSize.js.map +1 -0
  387. package/dist/fields/richtext/extensions/index.d.ts +5 -0
  388. package/dist/fields/richtext/extensions/index.d.ts.map +1 -0
  389. package/dist/fields/richtext/extensions/index.js +5 -0
  390. package/dist/fields/richtext/extensions/index.js.map +1 -0
  391. package/dist/fields/richtext/index.d.ts +14 -0
  392. package/dist/fields/richtext/index.d.ts.map +1 -0
  393. package/dist/fields/richtext/index.js +19 -0
  394. package/dist/fields/richtext/index.js.map +1 -0
  395. package/dist/fields/richtext/richtext-menu.css +50 -0
  396. package/dist/fields/shared.d.ts +27 -1
  397. package/dist/fields/shared.d.ts.map +1 -1
  398. package/dist/fields/shared.js +34 -0
  399. package/dist/fields/shared.js.map +1 -1
  400. package/dist/layouts/types.d.ts +30 -0
  401. package/dist/layouts/types.d.ts.map +1 -1
  402. package/dist/plugin/index.d.ts +1 -0
  403. package/dist/plugin/index.d.ts.map +1 -1
  404. package/dist/plugin/index.js +111 -1
  405. package/dist/plugin/index.js.map +1 -1
  406. package/dist/render/HybridPageRenderer.d.ts +47 -4
  407. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  408. package/dist/render/HybridPageRenderer.js +45 -0
  409. package/dist/render/HybridPageRenderer.js.map +1 -1
  410. package/dist/render/PageRenderer.d.ts +1 -1
  411. package/dist/render/PageRenderer.d.ts.map +1 -1
  412. package/dist/render/PageRenderer.js +1 -1
  413. package/dist/render/PageRenderer.js.map +1 -1
  414. package/dist/render/PuckEditor.client.d.ts +2 -2
  415. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  416. package/dist/render/PuckEditor.client.js +2 -2
  417. package/dist/render/PuckEditor.client.js.map +1 -1
  418. package/dist/render/index.d.ts +2 -2
  419. package/dist/render/index.d.ts.map +1 -1
  420. package/dist/render/index.js +1 -1
  421. package/dist/render/index.js.map +1 -1
  422. package/dist/types/index.d.ts +36 -11
  423. package/dist/types/index.d.ts.map +1 -1
  424. package/dist/version.d.ts +1 -1
  425. package/dist/version.js +1 -1
  426. package/dist/views/PuckConfigContext.d.ts +56 -2
  427. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  428. package/dist/views/PuckConfigContext.js +6 -3
  429. package/dist/views/PuckConfigContext.js.map +1 -1
  430. package/dist/views/PuckEditorView.d.ts.map +1 -1
  431. package/dist/views/PuckEditorView.js +36 -8
  432. package/dist/views/PuckEditorView.js.map +1 -1
  433. package/package.json +34 -10
  434. package/dist/components/typography/RichText.d.ts +0 -20
  435. package/dist/components/typography/RichText.d.ts.map +0 -1
  436. package/dist/components/typography/RichText.js +0 -73
  437. package/dist/components/typography/RichText.js.map +0 -1
  438. package/dist/fields/TiptapField.d.ts +0 -40
  439. package/dist/fields/TiptapField.d.ts.map +0 -1
  440. package/dist/fields/TiptapField.js +0 -857
  441. package/dist/fields/TiptapField.js.map +0 -1
  442. package/dist/fields/TiptapModal.d.ts +0 -10
  443. package/dist/fields/TiptapModal.d.ts.map +0 -1
  444. package/dist/fields/TiptapModal.js +0 -114
  445. package/dist/fields/TiptapModal.js.map +0 -1
  446. package/dist/fields/TiptapModalField.d.ts +0 -23
  447. package/dist/fields/TiptapModalField.d.ts.map +0 -1
  448. package/dist/fields/TiptapModalField.js +0 -55
  449. package/dist/fields/TiptapModalField.js.map +0 -1
  450. package/dist/fields/richtext-output.css +0 -219
  451. package/dist/fields/tiptap-styles.css +0 -248
@@ -0,0 +1,87 @@
1
+ /**
2
+ * AI Context Collection
3
+ *
4
+ * Stores business context entries for the AI chat interface.
5
+ * These context entries are concatenated and sent to the AI system prompt
6
+ * to help it understand your brand, tone, and requirements.
7
+ *
8
+ * @example Creating context entries in Payload admin:
9
+ * - "Brand Guidelines" - Colors, fonts, brand voice
10
+ * - "Tone of Voice" - How to communicate
11
+ * - "Product Information" - What you sell/offer
12
+ * - "Industry Context" - Your market and audience
13
+ */
14
+ export const AiContextCollection = {
15
+ slug: 'puck-ai-context',
16
+ labels: {
17
+ singular: 'AI Context',
18
+ plural: 'AI Contexts',
19
+ },
20
+ admin: {
21
+ group: 'Puck',
22
+ useAsTitle: 'name',
23
+ defaultColumns: ['name', 'category', 'enabled', 'order', 'updatedAt'],
24
+ hidden: false, // Visible in admin for context management
25
+ description: 'Business context for AI page generation. Add entries for brand guidelines, tone of voice, product info, etc.',
26
+ },
27
+ access: {
28
+ // Default: authenticated users can manage context
29
+ read: ({ req }) => Boolean(req.user),
30
+ create: ({ req }) => Boolean(req.user),
31
+ update: ({ req }) => Boolean(req.user),
32
+ delete: ({ req }) => Boolean(req.user),
33
+ },
34
+ fields: [
35
+ {
36
+ name: 'name',
37
+ type: 'text',
38
+ required: true,
39
+ admin: {
40
+ description: 'Name for this context block (e.g., "Brand Guidelines", "Tone of Voice")',
41
+ },
42
+ },
43
+ {
44
+ name: 'content',
45
+ type: 'textarea',
46
+ required: true,
47
+ admin: {
48
+ description: 'The context content in markdown format. Use headers (##) to organize, lists for guidelines, etc.',
49
+ rows: 12,
50
+ },
51
+ },
52
+ {
53
+ name: 'category',
54
+ type: 'select',
55
+ options: [
56
+ { label: 'Brand Guidelines', value: 'brand' },
57
+ { label: 'Tone of Voice', value: 'tone' },
58
+ { label: 'Product Information', value: 'product' },
59
+ { label: 'Industry Context', value: 'industry' },
60
+ { label: 'Technical Requirements', value: 'technical' },
61
+ { label: 'Page Patterns', value: 'patterns' },
62
+ { label: 'Other', value: 'other' },
63
+ ],
64
+ admin: {
65
+ description: 'Category for organizing context blocks',
66
+ },
67
+ },
68
+ {
69
+ name: 'enabled',
70
+ type: 'checkbox',
71
+ defaultValue: true,
72
+ admin: {
73
+ description: 'Include this context in AI prompts. Uncheck to temporarily disable.',
74
+ },
75
+ },
76
+ {
77
+ name: 'order',
78
+ type: 'number',
79
+ defaultValue: 0,
80
+ admin: {
81
+ description: 'Order in the context (lower numbers appear earlier in the prompt)',
82
+ },
83
+ },
84
+ ],
85
+ timestamps: true,
86
+ };
87
+ //# sourceMappingURL=AiContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiContext.js","sourceRoot":"","sources":["../../../src/ai/collections/AiContext.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE,YAAY;QACtB,MAAM,EAAE,aAAa;KACtB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,MAAM;QAClB,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,WAAW,CAAC;QACrE,MAAM,EAAE,KAAK,EAAE,0CAA0C;QACzD,WAAW,EACT,8GAA8G;KACjH;IACD,MAAM,EAAE;QACN,kDAAkD;QAClD,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;KACvC;IACD,MAAM,EAAE;QACN;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,WAAW,EAAE,yEAAyE;aACvF;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,WAAW,EACT,kGAAkG;gBACpG,IAAI,EAAE,EAAE;aACT;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE;gBACP,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,OAAO,EAAE;gBAC7C,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,MAAM,EAAE;gBACzC,EAAE,KAAK,EAAE,qBAAqB,EAAE,KAAK,EAAE,SAAS,EAAE;gBAClD,EAAE,KAAK,EAAE,kBAAkB,EAAE,KAAK,EAAE,UAAU,EAAE;gBAChD,EAAE,KAAK,EAAE,wBAAwB,EAAE,KAAK,EAAE,WAAW,EAAE;gBACvD,EAAE,KAAK,EAAE,eAAe,EAAE,KAAK,EAAE,UAAU,EAAE;gBAC7C,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE;aACnC;YACD,KAAK,EAAE;gBACL,WAAW,EAAE,wCAAwC;aACtD;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,UAAU;YAChB,YAAY,EAAE,IAAI;YAClB,KAAK,EAAE;gBACL,WAAW,EAAE,qEAAqE;aACnF;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,CAAC;YACf,KAAK,EAAE;gBACL,WAAW,EAAE,mEAAmE;aACjF;SACF;KACF;IACD,UAAU,EAAE,IAAI;CACjB,CAAA"}
@@ -0,0 +1,10 @@
1
+ import type { CollectionConfig } from 'payload';
2
+ /**
3
+ * AI Prompts Collection
4
+ *
5
+ * Stores example prompts for the AI chat interface.
6
+ * These prompts are displayed in the Puck editor for users to quickly
7
+ * start common AI generation tasks.
8
+ */
9
+ export declare const AiPromptsCollection: CollectionConfig;
10
+ //# sourceMappingURL=AiPrompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiPrompts.d.ts","sourceRoot":"","sources":["../../../src/ai/collections/AiPrompts.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAE/C;;;;;;GAMG;AACH,eAAO,MAAM,mBAAmB,EAAE,gBAsDjC,CAAA"}
@@ -0,0 +1,63 @@
1
+ /**
2
+ * AI Prompts Collection
3
+ *
4
+ * Stores example prompts for the AI chat interface.
5
+ * These prompts are displayed in the Puck editor for users to quickly
6
+ * start common AI generation tasks.
7
+ */
8
+ export const AiPromptsCollection = {
9
+ slug: 'puck-ai-prompts',
10
+ labels: {
11
+ singular: 'AI Prompt',
12
+ plural: 'AI Prompts',
13
+ },
14
+ admin: {
15
+ group: 'Puck',
16
+ useAsTitle: 'label',
17
+ defaultColumns: ['label', 'category', 'order', 'updatedAt'],
18
+ hidden: false, // Visible in admin for prompt management
19
+ },
20
+ access: {
21
+ // Default: authenticated users can manage prompts
22
+ read: ({ req }) => Boolean(req.user),
23
+ create: ({ req }) => Boolean(req.user),
24
+ update: ({ req }) => Boolean(req.user),
25
+ delete: ({ req }) => Boolean(req.user),
26
+ },
27
+ fields: [
28
+ {
29
+ name: 'label',
30
+ type: 'text',
31
+ required: true,
32
+ admin: {
33
+ description: 'Display label for the prompt (e.g., "Landing page")',
34
+ },
35
+ },
36
+ {
37
+ name: 'prompt',
38
+ type: 'textarea',
39
+ required: true,
40
+ admin: {
41
+ description: 'The actual prompt text sent to the AI',
42
+ rows: 4,
43
+ },
44
+ },
45
+ {
46
+ name: 'category',
47
+ type: 'text',
48
+ admin: {
49
+ description: 'Optional category for grouping prompts (e.g., "Marketing", "Product")',
50
+ },
51
+ },
52
+ {
53
+ name: 'order',
54
+ type: 'number',
55
+ defaultValue: 0,
56
+ admin: {
57
+ description: 'Display order (lower numbers appear first)',
58
+ },
59
+ },
60
+ ],
61
+ timestamps: true,
62
+ };
63
+ //# sourceMappingURL=AiPrompts.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AiPrompts.js","sourceRoot":"","sources":["../../../src/ai/collections/AiPrompts.ts"],"names":[],"mappings":"AAEA;;;;;;GAMG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD,IAAI,EAAE,iBAAiB;IACvB,MAAM,EAAE;QACN,QAAQ,EAAE,WAAW;QACrB,MAAM,EAAE,YAAY;KACrB;IACD,KAAK,EAAE;QACL,KAAK,EAAE,MAAM;QACb,UAAU,EAAE,OAAO;QACnB,cAAc,EAAE,CAAC,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,WAAW,CAAC;QAC3D,MAAM,EAAE,KAAK,EAAE,yCAAyC;KACzD;IACD,MAAM,EAAE;QACN,kDAAkD;QAClD,IAAI,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACpC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;QACtC,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC;KACvC;IACD,MAAM,EAAE;QACN;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,WAAW,EAAE,qDAAqD;aACnE;SACF;QACD;YACE,IAAI,EAAE,QAAQ;YACd,IAAI,EAAE,UAAU;YAChB,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,WAAW,EAAE,uCAAuC;gBACpD,IAAI,EAAE,CAAC;aACR;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,WAAW,EAAE,uEAAuE;aACrF;SACF;QACD;YACE,IAAI,EAAE,OAAO;YACb,IAAI,EAAE,QAAQ;YACd,YAAY,EAAE,CAAC;YACf,KAAK,EAAE;gBACL,WAAW,EAAE,4CAA4C;aAC1D;SACF;KACF;IACD,UAAU,EAAE,IAAI;CACjB,CAAA"}
@@ -0,0 +1,40 @@
1
+ import type { PuckAiRoutesConfig, PuckAiRouteHandlers } from './types.js';
2
+ /**
3
+ * Creates API route handlers for /api/puck/[...all]
4
+ *
5
+ * Wraps @puckeditor/cloud-client's puckHandler with authentication
6
+ * and custom context/tools support.
7
+ *
8
+ * @example
9
+ * ```typescript
10
+ * // app/api/puck/[...all]/route.ts
11
+ * import { createPuckAiApiRoutes } from '@delmaredigital/payload-puck/ai'
12
+ * import config from '@payload-config'
13
+ * import { z } from 'zod'
14
+ *
15
+ * export const POST = createPuckAiApiRoutes({
16
+ * payloadConfig: config,
17
+ * auth: {
18
+ * authenticate: async (request) => {
19
+ * const session = await auth.api.getSession({ headers: request.headers })
20
+ * if (!session?.user) return { authenticated: false }
21
+ * return { authenticated: true, user: session.user }
22
+ * },
23
+ * },
24
+ * ai: {
25
+ * context: 'We are Acme Corp. You build our landing pages.',
26
+ * tools: {
27
+ * getProducts: {
28
+ * description: 'Get a list of products',
29
+ * inputSchema: z.object({}),
30
+ * execute: async () => {
31
+ * return await payload.find({ collection: 'products' })
32
+ * },
33
+ * },
34
+ * },
35
+ * },
36
+ * })
37
+ * ```
38
+ */
39
+ export declare function createPuckAiApiRoutes(config: PuckAiRoutesConfig): PuckAiRouteHandlers;
40
+ //# sourceMappingURL=createAiApiRoutes.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAiApiRoutes.d.ts","sourceRoot":"","sources":["../../src/ai/createAiApiRoutes.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,YAAY,CAAA;AAEzE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,kBAAkB,GAAG,mBAAmB,CAkFrF"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Creates API route handlers for /api/puck/[...all]
3
+ *
4
+ * Wraps @puckeditor/cloud-client's puckHandler with authentication
5
+ * and custom context/tools support.
6
+ *
7
+ * @example
8
+ * ```typescript
9
+ * // app/api/puck/[...all]/route.ts
10
+ * import { createPuckAiApiRoutes } from '@delmaredigital/payload-puck/ai'
11
+ * import config from '@payload-config'
12
+ * import { z } from 'zod'
13
+ *
14
+ * export const POST = createPuckAiApiRoutes({
15
+ * payloadConfig: config,
16
+ * auth: {
17
+ * authenticate: async (request) => {
18
+ * const session = await auth.api.getSession({ headers: request.headers })
19
+ * if (!session?.user) return { authenticated: false }
20
+ * return { authenticated: true, user: session.user }
21
+ * },
22
+ * },
23
+ * ai: {
24
+ * context: 'We are Acme Corp. You build our landing pages.',
25
+ * tools: {
26
+ * getProducts: {
27
+ * description: 'Get a list of products',
28
+ * inputSchema: z.object({}),
29
+ * execute: async () => {
30
+ * return await payload.find({ collection: 'products' })
31
+ * },
32
+ * },
33
+ * },
34
+ * },
35
+ * })
36
+ * ```
37
+ */
38
+ export function createPuckAiApiRoutes(config) {
39
+ const { auth, ai, onError } = config;
40
+ return {
41
+ POST: async (request) => {
42
+ try {
43
+ // 1. Authenticate the request
44
+ const authResult = await auth.authenticate(request);
45
+ if (!authResult.authenticated) {
46
+ return new Response(JSON.stringify({ error: authResult.error || 'Unauthorized' }), {
47
+ status: 401,
48
+ headers: { 'Content-Type': 'application/json' },
49
+ });
50
+ }
51
+ // 2. Lazy import @puckeditor/cloud-client to avoid errors if not installed
52
+ let puckHandler;
53
+ let tool;
54
+ try {
55
+ const cloudClient = await import('@puckeditor/cloud-client');
56
+ puckHandler = cloudClient.puckHandler;
57
+ tool = cloudClient.tool;
58
+ }
59
+ catch (e) {
60
+ return new Response(JSON.stringify({
61
+ error: 'AI features require @puckeditor/cloud-client. Please install it.',
62
+ }), {
63
+ status: 500,
64
+ headers: { 'Content-Type': 'application/json' },
65
+ });
66
+ }
67
+ // 3. Convert our tool format to Puck's tool format
68
+ const puckTools = {};
69
+ if (ai?.tools) {
70
+ for (const [name, toolDef] of Object.entries(ai.tools)) {
71
+ puckTools[name] = tool({
72
+ description: toolDef.description,
73
+ inputSchema: toolDef.inputSchema,
74
+ execute: toolDef.execute,
75
+ name: toolDef.name,
76
+ });
77
+ }
78
+ }
79
+ // 4. Call puckHandler with our configuration
80
+ return puckHandler(request, {
81
+ apiKey: ai?.apiKey,
82
+ host: ai?.host,
83
+ ai: {
84
+ context: ai?.context,
85
+ tools: Object.keys(puckTools).length > 0 ? puckTools : undefined,
86
+ },
87
+ });
88
+ }
89
+ catch (error) {
90
+ // Call custom error handler if provided
91
+ if (onError) {
92
+ onError(error, { operation: 'ai-chat', request });
93
+ }
94
+ console.error('[Puck AI] Error handling request:', error);
95
+ return new Response(JSON.stringify({
96
+ error: 'Internal server error',
97
+ message: error instanceof Error ? error.message : 'Unknown error',
98
+ }), {
99
+ status: 500,
100
+ headers: { 'Content-Type': 'application/json' },
101
+ });
102
+ }
103
+ },
104
+ };
105
+ }
106
+ //# sourceMappingURL=createAiApiRoutes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAiApiRoutes.js","sourceRoot":"","sources":["../../src/ai/createAiApiRoutes.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,MAAM,UAAU,qBAAqB,CAAC,MAA0B;IAC9D,MAAM,EAAE,IAAI,EAAE,EAAE,EAAE,OAAO,EAAE,GAAG,MAAM,CAAA;IAEpC,OAAO;QACL,IAAI,EAAE,KAAK,EAAE,OAAoB,EAAqB,EAAE;YACtD,IAAI,CAAC;gBACH,8BAA8B;gBAC9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,CAAA;gBAEnD,IAAI,CAAC,UAAU,CAAC,aAAa,EAAE,CAAC;oBAC9B,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,UAAU,CAAC,KAAK,IAAI,cAAc,EAAE,CAAC,EAC7D;wBACE,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAChD,CACF,CAAA;gBACH,CAAC;gBAED,2EAA2E;gBAC3E,IAAI,WAAkE,CAAA;gBACtE,IAAI,IAAoD,CAAA;gBAExD,IAAI,CAAC;oBACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;oBAC5D,WAAW,GAAG,WAAW,CAAC,WAAW,CAAA;oBACrC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;gBACzB,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;wBACb,KAAK,EAAE,kEAAkE;qBAC1E,CAAC,EACF;wBACE,MAAM,EAAE,GAAG;wBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;qBAChD,CACF,CAAA;gBACH,CAAC;gBAED,mDAAmD;gBACnD,MAAM,SAAS,GAA4C,EAAE,CAAA;gBAC7D,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;oBACd,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;wBACvD,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;4BACrB,WAAW,EAAE,OAAO,CAAC,WAAW;4BAChC,WAAW,EAAE,OAAO,CAAC,WAAW;4BAChC,OAAO,EAAE,OAAO,CAAC,OAAO;4BACxB,IAAI,EAAE,OAAO,CAAC,IAAI;yBACnB,CAAC,CAAA;oBACJ,CAAC;gBACH,CAAC;gBAED,6CAA6C;gBAC7C,OAAO,WAAW,CAAC,OAAO,EAAE;oBAC1B,MAAM,EAAE,EAAE,EAAE,MAAM;oBAClB,IAAI,EAAE,EAAE,EAAE,IAAI;oBACd,EAAE,EAAE;wBACF,OAAO,EAAE,EAAE,EAAE,OAAO;wBACpB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;qBACjE;iBACF,CAAC,CAAA;YACJ,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,wCAAwC;gBACxC,IAAI,OAAO,EAAE,CAAC;oBACZ,OAAO,CAAC,KAAK,EAAE,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC,CAAA;gBACnD,CAAC;gBAED,OAAO,CAAC,KAAK,CAAC,mCAAmC,EAAE,KAAK,CAAC,CAAA;gBAEzD,OAAO,IAAI,QAAQ,CACjB,IAAI,CAAC,SAAS,CAAC;oBACb,KAAK,EAAE,uBAAuB;oBAC9B,OAAO,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe;iBAClE,CAAC,EACF;oBACE,MAAM,EAAE,GAAG;oBACX,OAAO,EAAE,EAAE,cAAc,EAAE,kBAAkB,EAAE;iBAChD,CACF,CAAA;YACH,CAAC;QACH,CAAC;KACF,CAAA;AACH,CAAC"}
@@ -0,0 +1,65 @@
1
+ import type { AiGenerateConfig, AiGenerateFunction } from './types.js';
2
+ /**
3
+ * Creates a headless AI page generation function
4
+ *
5
+ * Use this to generate Puck pages programmatically without the editor UI.
6
+ * Useful for batch generation, automated workflows, or API-driven page creation.
7
+ *
8
+ * @example Basic generation
9
+ * ```typescript
10
+ * import { createAiGenerate } from '@delmaredigital/payload-puck/ai'
11
+ * import { editorConfig } from '@delmaredigital/payload-puck/config/editor'
12
+ * import config from '@payload-config'
13
+ *
14
+ * const generatePage = createAiGenerate({
15
+ * payloadConfig: config,
16
+ * auth: {
17
+ * authenticate: async (req) => {
18
+ * // Authenticate the request
19
+ * return { authenticated: true, user: { id: 'system' } }
20
+ * },
21
+ * },
22
+ * ai: {
23
+ * context: 'We are Acme Corp. You build our marketing pages.',
24
+ * },
25
+ * })
26
+ *
27
+ * // Generate a new page
28
+ * const pageData = await generatePage({
29
+ * prompt: 'Create a landing page for our new product launch',
30
+ * puckConfig: editorConfig,
31
+ * })
32
+ *
33
+ * // Save to Payload
34
+ * await payload.create({
35
+ * collection: 'pages',
36
+ * data: {
37
+ * title: 'New Product Launch',
38
+ * slug: 'new-product',
39
+ * puckData: pageData,
40
+ * },
41
+ * })
42
+ * ```
43
+ *
44
+ * @example Updating an existing page
45
+ * ```typescript
46
+ * // Fetch existing page
47
+ * const page = await payload.findByID({ collection: 'pages', id: 'abc123' })
48
+ *
49
+ * // Update with AI
50
+ * const updatedData = await generatePage({
51
+ * prompt: 'Add a testimonials section after the hero',
52
+ * puckConfig: editorConfig,
53
+ * pageData: page.puckData, // Pass existing data
54
+ * })
55
+ *
56
+ * // Save the update
57
+ * await payload.update({
58
+ * collection: 'pages',
59
+ * id: 'abc123',
60
+ * data: { puckData: updatedData },
61
+ * })
62
+ * ```
63
+ */
64
+ export declare function createAiGenerate(config: AiGenerateConfig): AiGenerateFunction;
65
+ //# sourceMappingURL=createAiGenerate.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAiGenerate.d.ts","sourceRoot":"","sources":["../../src/ai/createAiGenerate.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAqB,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAEzF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,gBAAgB,GAAG,kBAAkB,CAkD7E"}
@@ -0,0 +1,106 @@
1
+ /**
2
+ * Creates a headless AI page generation function
3
+ *
4
+ * Use this to generate Puck pages programmatically without the editor UI.
5
+ * Useful for batch generation, automated workflows, or API-driven page creation.
6
+ *
7
+ * @example Basic generation
8
+ * ```typescript
9
+ * import { createAiGenerate } from '@delmaredigital/payload-puck/ai'
10
+ * import { editorConfig } from '@delmaredigital/payload-puck/config/editor'
11
+ * import config from '@payload-config'
12
+ *
13
+ * const generatePage = createAiGenerate({
14
+ * payloadConfig: config,
15
+ * auth: {
16
+ * authenticate: async (req) => {
17
+ * // Authenticate the request
18
+ * return { authenticated: true, user: { id: 'system' } }
19
+ * },
20
+ * },
21
+ * ai: {
22
+ * context: 'We are Acme Corp. You build our marketing pages.',
23
+ * },
24
+ * })
25
+ *
26
+ * // Generate a new page
27
+ * const pageData = await generatePage({
28
+ * prompt: 'Create a landing page for our new product launch',
29
+ * puckConfig: editorConfig,
30
+ * })
31
+ *
32
+ * // Save to Payload
33
+ * await payload.create({
34
+ * collection: 'pages',
35
+ * data: {
36
+ * title: 'New Product Launch',
37
+ * slug: 'new-product',
38
+ * puckData: pageData,
39
+ * },
40
+ * })
41
+ * ```
42
+ *
43
+ * @example Updating an existing page
44
+ * ```typescript
45
+ * // Fetch existing page
46
+ * const page = await payload.findByID({ collection: 'pages', id: 'abc123' })
47
+ *
48
+ * // Update with AI
49
+ * const updatedData = await generatePage({
50
+ * prompt: 'Add a testimonials section after the hero',
51
+ * puckConfig: editorConfig,
52
+ * pageData: page.puckData, // Pass existing data
53
+ * })
54
+ *
55
+ * // Save the update
56
+ * await payload.update({
57
+ * collection: 'pages',
58
+ * id: 'abc123',
59
+ * data: { puckData: updatedData },
60
+ * })
61
+ * ```
62
+ */
63
+ export function createAiGenerate(config) {
64
+ const { ai } = config;
65
+ return async (options) => {
66
+ const { prompt, puckConfig, pageData } = options;
67
+ // Lazy import @puckeditor/cloud-client
68
+ let generate;
69
+ let tool;
70
+ try {
71
+ const cloudClient = await import('@puckeditor/cloud-client');
72
+ generate = cloudClient.generate;
73
+ tool = cloudClient.tool;
74
+ }
75
+ catch (e) {
76
+ throw new Error('AI generation requires @puckeditor/cloud-client. Please install it with: pnpm add @puckeditor/cloud-client');
77
+ }
78
+ // Convert our tool format to Puck's tool format
79
+ const puckTools = {};
80
+ if (ai?.tools) {
81
+ for (const [name, toolDef] of Object.entries(ai.tools)) {
82
+ puckTools[name] = tool({
83
+ description: toolDef.description,
84
+ inputSchema: toolDef.inputSchema,
85
+ execute: toolDef.execute,
86
+ name: toolDef.name,
87
+ });
88
+ }
89
+ }
90
+ // Call the generate API
91
+ const result = await generate({
92
+ prompt,
93
+ config: puckConfig,
94
+ context: ai?.context,
95
+ apiKey: ai?.apiKey,
96
+ host: ai?.host,
97
+ pageData,
98
+ tools: Object.keys(puckTools).length > 0 ? puckTools : undefined,
99
+ });
100
+ if (!result) {
101
+ throw new Error('AI generation failed: no result returned');
102
+ }
103
+ return result;
104
+ };
105
+ }
106
+ //# sourceMappingURL=createAiGenerate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAiGenerate.js","sourceRoot":"","sources":["../../src/ai/createAiGenerate.ts"],"names":[],"mappings":"AAGA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6DG;AACH,MAAM,UAAU,gBAAgB,CAAC,MAAwB;IACvD,MAAM,EAAE,EAAE,EAAE,GAAG,MAAM,CAAA;IAErB,OAAO,KAAK,EAAE,OAA0B,EAAqB,EAAE;QAC7D,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;QAEhD,uCAAuC;QACvC,IAAI,QAA4D,CAAA;QAChE,IAAI,IAAoD,CAAA;QAExD,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,0BAA0B,CAAC,CAAA;YAC5D,QAAQ,GAAG,WAAW,CAAC,QAAQ,CAAA;YAC/B,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,MAAM,IAAI,KAAK,CACb,4GAA4G,CAC7G,CAAA;QACH,CAAC;QAED,gDAAgD;QAChD,MAAM,SAAS,GAA4C,EAAE,CAAA;QAC7D,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC;YACd,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;gBACvD,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;oBACrB,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,WAAW,EAAE,OAAO,CAAC,WAAW;oBAChC,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,IAAI,EAAE,OAAO,CAAC,IAAI;iBACnB,CAAC,CAAA;YACJ,CAAC;QACH,CAAC;QAED,wBAAwB;QACxB,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC;YAC5B,MAAM;YACN,MAAM,EAAE,UAAU;YAClB,OAAO,EAAE,EAAE,EAAE,OAAO;YACpB,MAAM,EAAE,EAAE,EAAE,MAAM;YAClB,IAAI,EAAE,EAAE,EAAE,IAAI;YACd,QAAQ;YACR,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS;SACjE,CAAC,CAAA;QAEF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,0CAA0C,CAAC,CAAA;QAC7D,CAAC;QAED,OAAO,MAAkB,CAAA;IAC3B,CAAC,CAAA;AACH,CAAC"}
@@ -0,0 +1,39 @@
1
+ import type { Plugin as PuckPlugin } from '@puckeditor/core';
2
+ import type { AiPluginOptions } from './types.js';
3
+ /**
4
+ * Creates a Puck AI plugin for the editor
5
+ *
6
+ * Wraps @puckeditor/plugin-ai with sensible defaults for payload-puck.
7
+ * This factory allows for runtime-configurable prompts (from database, API, etc.).
8
+ *
9
+ * @example Basic usage
10
+ * ```tsx
11
+ * import { createAiPlugin } from '@delmaredigital/payload-puck/ai'
12
+ *
13
+ * const aiPlugin = createAiPlugin({
14
+ * host: '/api/puck',
15
+ * examplePrompts: [
16
+ * { label: 'Landing page', prompt: 'Create a landing page about our product' },
17
+ * ],
18
+ * })
19
+ *
20
+ * <PuckEditor plugins={[aiPlugin]} />
21
+ * ```
22
+ *
23
+ * @example With runtime prompts from database
24
+ * ```tsx
25
+ * // Fetch prompts from Payload
26
+ * const prompts = await payload.find({ collection: 'puck-ai-prompts' })
27
+ *
28
+ * const aiPlugin = createAiPlugin({
29
+ * examplePrompts: prompts.docs.map(p => ({
30
+ * label: p.label,
31
+ * prompt: p.prompt,
32
+ * })),
33
+ * })
34
+ *
35
+ * <PuckEditor plugins={[aiPlugin]} />
36
+ * ```
37
+ */
38
+ export declare function createAiPlugin(options?: AiPluginOptions): PuckPlugin;
39
+ //# sourceMappingURL=createAiPlugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAiPlugin.d.ts","sourceRoot":"","sources":["../../src/ai/createAiPlugin.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,IAAI,UAAU,EAAE,MAAM,kBAAkB,CAAA;AAC5D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAEjD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,wBAAgB,cAAc,CAAC,OAAO,GAAE,eAAoB,GAAG,UAAU,CA2BxE"}
@@ -0,0 +1,61 @@
1
+ 'use client';
2
+ /**
3
+ * Creates a Puck AI plugin for the editor
4
+ *
5
+ * Wraps @puckeditor/plugin-ai with sensible defaults for payload-puck.
6
+ * This factory allows for runtime-configurable prompts (from database, API, etc.).
7
+ *
8
+ * @example Basic usage
9
+ * ```tsx
10
+ * import { createAiPlugin } from '@delmaredigital/payload-puck/ai'
11
+ *
12
+ * const aiPlugin = createAiPlugin({
13
+ * host: '/api/puck',
14
+ * examplePrompts: [
15
+ * { label: 'Landing page', prompt: 'Create a landing page about our product' },
16
+ * ],
17
+ * })
18
+ *
19
+ * <PuckEditor plugins={[aiPlugin]} />
20
+ * ```
21
+ *
22
+ * @example With runtime prompts from database
23
+ * ```tsx
24
+ * // Fetch prompts from Payload
25
+ * const prompts = await payload.find({ collection: 'puck-ai-prompts' })
26
+ *
27
+ * const aiPlugin = createAiPlugin({
28
+ * examplePrompts: prompts.docs.map(p => ({
29
+ * label: p.label,
30
+ * prompt: p.prompt,
31
+ * })),
32
+ * })
33
+ *
34
+ * <PuckEditor plugins={[aiPlugin]} />
35
+ * ```
36
+ */
37
+ export function createAiPlugin(options = {}) {
38
+ const { host = '/api/puck', examplePrompts, onSubmit } = options;
39
+ // Dynamic import to avoid build errors if plugin-ai not installed
40
+ // Also allows for tree-shaking when AI is not used
41
+ try {
42
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
43
+ const { createAiPlugin: createPuckAiPlugin } = require('@puckeditor/plugin-ai');
44
+ return createPuckAiPlugin({
45
+ host,
46
+ chat: {
47
+ examplePrompts,
48
+ onSubmit,
49
+ },
50
+ });
51
+ }
52
+ catch (e) {
53
+ // Return a placeholder plugin if @puckeditor/plugin-ai is not installed
54
+ console.warn('[payload-puck] AI plugin requested but @puckeditor/plugin-ai not installed. ' +
55
+ 'Install it with: pnpm add @puckeditor/plugin-ai');
56
+ return {
57
+ name: 'ai-placeholder',
58
+ };
59
+ }
60
+ }
61
+ //# sourceMappingURL=createAiPlugin.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createAiPlugin.js","sourceRoot":"","sources":["../../src/ai/createAiPlugin.ts"],"names":[],"mappings":"AAAA,YAAY,CAAA;AAKZ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAkCG;AACH,MAAM,UAAU,cAAc,CAAC,UAA2B,EAAE;IAC1D,MAAM,EAAE,IAAI,GAAG,WAAW,EAAE,cAAc,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAA;IAEhE,kEAAkE;IAClE,mDAAmD;IACnD,IAAI,CAAC;QACH,iEAAiE;QACjE,MAAM,EAAE,cAAc,EAAE,kBAAkB,EAAE,GAAG,OAAO,CAAC,uBAAuB,CAAC,CAAA;QAE/E,OAAO,kBAAkB,CAAC;YACxB,IAAI;YACJ,IAAI,EAAE;gBACJ,cAAc;gBACd,QAAQ;aACT;SACF,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,wEAAwE;QACxE,OAAO,CAAC,IAAI,CACV,8EAA8E;YAC5E,iDAAiD,CACpD,CAAA;QAED,OAAO;YACL,IAAI,EAAE,gBAAgB;SACvB,CAAA;IACH,CAAC;AACH,CAAC"}