@delmaredigital/payload-puck 0.4.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (427) hide show
  1. package/README.md +331 -16
  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/types.d.ts +1 -1
  104. package/dist/api/types.d.ts.map +1 -1
  105. package/dist/components/exports.d.ts +1 -1
  106. package/dist/components/exports.d.ts.map +1 -1
  107. package/dist/components/exports.js +1 -1
  108. package/dist/components/exports.js.map +1 -1
  109. package/dist/components/interactive/Accordion.d.ts +1 -1
  110. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  111. package/dist/components/interactive/Accordion.js +4 -4
  112. package/dist/components/interactive/Accordion.js.map +1 -1
  113. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  114. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  115. package/dist/components/interactive/Button.d.ts +1 -1
  116. package/dist/components/interactive/Button.d.ts.map +1 -1
  117. package/dist/components/interactive/Button.server.d.ts +2 -3
  118. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  119. package/dist/components/interactive/Button.server.js +1 -2
  120. package/dist/components/interactive/Button.server.js.map +1 -1
  121. package/dist/components/interactive/Card.d.ts +1 -1
  122. package/dist/components/interactive/Card.d.ts.map +1 -1
  123. package/dist/components/interactive/Card.server.d.ts +1 -1
  124. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  125. package/dist/components/interactive/Divider.d.ts +1 -1
  126. package/dist/components/interactive/Divider.d.ts.map +1 -1
  127. package/dist/components/interactive/Divider.server.d.ts +1 -1
  128. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  129. package/dist/components/layout/Container.d.ts +3 -1
  130. package/dist/components/layout/Container.d.ts.map +1 -1
  131. package/dist/components/layout/Container.js +16 -2
  132. package/dist/components/layout/Container.js.map +1 -1
  133. package/dist/components/layout/Container.server.d.ts +3 -1
  134. package/dist/components/layout/Container.server.d.ts.map +1 -1
  135. package/dist/components/layout/Container.server.js +5 -2
  136. package/dist/components/layout/Container.server.js.map +1 -1
  137. package/dist/components/layout/Flex.d.ts +3 -1
  138. package/dist/components/layout/Flex.d.ts.map +1 -1
  139. package/dist/components/layout/Flex.js +18 -2
  140. package/dist/components/layout/Flex.js.map +1 -1
  141. package/dist/components/layout/Flex.server.d.ts +3 -1
  142. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  143. package/dist/components/layout/Flex.server.js +5 -2
  144. package/dist/components/layout/Flex.server.js.map +1 -1
  145. package/dist/components/layout/Grid.d.ts +3 -1
  146. package/dist/components/layout/Grid.d.ts.map +1 -1
  147. package/dist/components/layout/Grid.js +15 -2
  148. package/dist/components/layout/Grid.js.map +1 -1
  149. package/dist/components/layout/Grid.server.d.ts +3 -1
  150. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  151. package/dist/components/layout/Grid.server.js +5 -2
  152. package/dist/components/layout/Grid.server.js.map +1 -1
  153. package/dist/components/layout/Section.d.ts +3 -1
  154. package/dist/components/layout/Section.d.ts.map +1 -1
  155. package/dist/components/layout/Section.js +32 -5
  156. package/dist/components/layout/Section.js.map +1 -1
  157. package/dist/components/layout/Section.server.d.ts +3 -1
  158. package/dist/components/layout/Section.server.d.ts.map +1 -1
  159. package/dist/components/layout/Section.server.js +16 -4
  160. package/dist/components/layout/Section.server.js.map +1 -1
  161. package/dist/components/layout/Spacer.d.ts +1 -1
  162. package/dist/components/layout/Spacer.d.ts.map +1 -1
  163. package/dist/components/layout/Spacer.server.d.ts +1 -1
  164. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  165. package/dist/components/layout/Template.d.ts +1 -1
  166. package/dist/components/layout/Template.d.ts.map +1 -1
  167. package/dist/components/layout/Template.server.d.ts +1 -1
  168. package/dist/components/layout/Template.server.d.ts.map +1 -1
  169. package/dist/components/media/Image.d.ts +1 -1
  170. package/dist/components/media/Image.d.ts.map +1 -1
  171. package/dist/components/media/Image.server.d.ts +1 -1
  172. package/dist/components/media/Image.server.d.ts.map +1 -1
  173. package/dist/components/typography/Heading.d.ts +1 -1
  174. package/dist/components/typography/Heading.d.ts.map +1 -1
  175. package/dist/components/typography/Heading.server.d.ts +1 -1
  176. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  177. package/dist/components/typography/RichText.editor.d.ts +15 -2
  178. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  179. package/dist/components/typography/RichText.editor.js +18 -11
  180. package/dist/components/typography/RichText.editor.js.map +1 -1
  181. package/dist/components/typography/RichText.server.d.ts +3 -2
  182. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  183. package/dist/components/typography/RichText.server.js +10 -5
  184. package/dist/components/typography/RichText.server.js.map +1 -1
  185. package/dist/components/typography/Text.d.ts +1 -1
  186. package/dist/components/typography/Text.d.ts.map +1 -1
  187. package/dist/components/typography/Text.server.d.ts +1 -1
  188. package/dist/components/typography/Text.server.d.ts.map +1 -1
  189. package/dist/components/typography/index.d.ts +1 -1
  190. package/dist/components/typography/index.d.ts.map +1 -1
  191. package/dist/components/typography/index.js +1 -1
  192. package/dist/components/typography/index.js.map +1 -1
  193. package/dist/config/config.editor.d.ts +4 -4
  194. package/dist/config/config.editor.d.ts.map +1 -1
  195. package/dist/config/index.d.ts +1 -1
  196. package/dist/config/index.d.ts.map +1 -1
  197. package/dist/config/merge.d.ts +1 -1
  198. package/dist/config/merge.d.ts.map +1 -1
  199. package/dist/config/presets.d.ts +15 -15
  200. package/dist/config/presets.d.ts.map +1 -1
  201. package/dist/editor/PuckEditor.d.ts +88 -2
  202. package/dist/editor/PuckEditor.d.ts.map +1 -1
  203. package/dist/editor/PuckEditor.js +41 -13
  204. package/dist/editor/PuckEditor.js.map +1 -1
  205. package/dist/editor/PuckEditorImpl.client.d.ts +49 -4
  206. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  207. package/dist/editor/PuckEditorImpl.client.js +191 -14
  208. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  209. package/dist/editor/ai-plugin-overrides.css +20 -0
  210. package/dist/editor/components/HeaderActions.d.ts +7 -2
  211. package/dist/editor/components/HeaderActions.d.ts.map +1 -1
  212. package/dist/editor/components/HeaderActions.js +16 -3
  213. package/dist/editor/components/HeaderActions.js.map +1 -1
  214. package/dist/editor/components/IframeWrapper.d.ts +13 -0
  215. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  216. package/dist/editor/components/IframeWrapper.js +60 -4
  217. package/dist/editor/components/IframeWrapper.js.map +1 -1
  218. package/dist/editor/components/PreviewModal.d.ts +9 -1
  219. package/dist/editor/components/PreviewModal.d.ts.map +1 -1
  220. package/dist/editor/components/PreviewModal.js +36 -1
  221. package/dist/editor/components/PreviewModal.js.map +1 -1
  222. package/dist/editor/index.d.ts +4 -0
  223. package/dist/editor/index.d.ts.map +1 -1
  224. package/dist/editor/index.js +4 -0
  225. package/dist/editor/index.js.map +1 -1
  226. package/dist/editor/plugins/VersionHistoryPanel.d.ts +43 -0
  227. package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +1 -0
  228. package/dist/editor/plugins/VersionHistoryPanel.js +303 -0
  229. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -0
  230. package/dist/editor/plugins/index.d.ts +6 -3
  231. package/dist/editor/plugins/index.d.ts.map +1 -1
  232. package/dist/editor/plugins/index.js +7 -3
  233. package/dist/editor/plugins/index.js.map +1 -1
  234. package/dist/editor/plugins/versionHistoryPlugin.d.ts +37 -0
  235. package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +1 -0
  236. package/dist/editor/plugins/versionHistoryPlugin.js +36 -0
  237. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -0
  238. package/dist/editor/utils/detectPageTree.d.ts +1 -1
  239. package/dist/editor/utils/detectPageTree.d.ts.map +1 -1
  240. package/dist/editor/utils/injectPageTreeFields.d.ts +1 -1
  241. package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -1
  242. package/dist/endpoints/ai.d.ts +36 -0
  243. package/dist/endpoints/ai.d.ts.map +1 -0
  244. package/dist/endpoints/ai.js +315 -0
  245. package/dist/endpoints/ai.js.map +1 -0
  246. package/dist/endpoints/context.d.ts +30 -0
  247. package/dist/endpoints/context.d.ts.map +1 -0
  248. package/dist/endpoints/context.js +123 -0
  249. package/dist/endpoints/context.js.map +1 -0
  250. package/dist/endpoints/prompts.d.ts +28 -0
  251. package/dist/endpoints/prompts.d.ts.map +1 -0
  252. package/dist/endpoints/prompts.js +118 -0
  253. package/dist/endpoints/prompts.js.map +1 -0
  254. package/dist/endpoints/styles.d.ts +19 -0
  255. package/dist/endpoints/styles.d.ts.map +1 -0
  256. package/dist/endpoints/styles.js +116 -0
  257. package/dist/endpoints/styles.js.map +1 -0
  258. package/dist/fields/AlignmentField.d.ts +1 -1
  259. package/dist/fields/AlignmentField.d.ts.map +1 -1
  260. package/dist/fields/AlignmentField.js +1 -0
  261. package/dist/fields/AlignmentField.js.map +1 -1
  262. package/dist/fields/AnimationField.d.ts +1 -1
  263. package/dist/fields/AnimationField.d.ts.map +1 -1
  264. package/dist/fields/BackgroundField.d.ts +1 -1
  265. package/dist/fields/BackgroundField.d.ts.map +1 -1
  266. package/dist/fields/BackgroundField.js +9 -4
  267. package/dist/fields/BackgroundField.js.map +1 -1
  268. package/dist/fields/BorderField.d.ts +1 -1
  269. package/dist/fields/BorderField.d.ts.map +1 -1
  270. package/dist/fields/BorderField.js +1 -0
  271. package/dist/fields/BorderField.js.map +1 -1
  272. package/dist/fields/ColorPickerField.d.ts +1 -1
  273. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  274. package/dist/fields/ColorPickerField.js +4 -2
  275. package/dist/fields/ColorPickerField.js.map +1 -1
  276. package/dist/fields/ContentAlignmentField.d.ts +66 -0
  277. package/dist/fields/ContentAlignmentField.d.ts.map +1 -0
  278. package/dist/fields/ContentAlignmentField.js +255 -0
  279. package/dist/fields/ContentAlignmentField.js.map +1 -0
  280. package/dist/fields/DimensionsField.d.ts +1 -1
  281. package/dist/fields/DimensionsField.d.ts.map +1 -1
  282. package/dist/fields/DimensionsField.js +8 -2
  283. package/dist/fields/DimensionsField.js.map +1 -1
  284. package/dist/fields/FlexAlignmentField.d.ts +1 -1
  285. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  286. package/dist/fields/FolderPickerField.d.ts +1 -1
  287. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  288. package/dist/fields/GradientEditor.d.ts.map +1 -1
  289. package/dist/fields/GradientEditor.js +3 -0
  290. package/dist/fields/GradientEditor.js.map +1 -1
  291. package/dist/fields/LockedField.d.ts +1 -1
  292. package/dist/fields/LockedField.d.ts.map +1 -1
  293. package/dist/fields/MarginField.d.ts +1 -1
  294. package/dist/fields/MarginField.d.ts.map +1 -1
  295. package/dist/fields/MediaField.d.ts +1 -1
  296. package/dist/fields/MediaField.d.ts.map +1 -1
  297. package/dist/fields/MediaField.js +3 -2
  298. package/dist/fields/MediaField.js.map +1 -1
  299. package/dist/fields/PaddingField.d.ts +1 -1
  300. package/dist/fields/PaddingField.d.ts.map +1 -1
  301. package/dist/fields/PageSegmentField.d.ts +1 -1
  302. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  303. package/dist/fields/ResetField.d.ts +1 -1
  304. package/dist/fields/ResetField.d.ts.map +1 -1
  305. package/dist/fields/ResetField.js +1 -1
  306. package/dist/fields/ResetField.js.map +1 -1
  307. package/dist/fields/ResponsiveField.d.ts +1 -1
  308. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  309. package/dist/fields/ResponsiveField.js +5 -2
  310. package/dist/fields/ResponsiveField.js.map +1 -1
  311. package/dist/fields/ResponsiveVisibilityField.d.ts +1 -1
  312. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  313. package/dist/fields/ResponsiveVisibilityField.js +4 -3
  314. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  315. package/dist/fields/SizeField.d.ts +3 -25
  316. package/dist/fields/SizeField.d.ts.map +1 -1
  317. package/dist/fields/SizeField.js +8 -34
  318. package/dist/fields/SizeField.js.map +1 -1
  319. package/dist/fields/SlugPreviewField.d.ts +1 -1
  320. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  321. package/dist/fields/TemplateField.d.ts +1 -1
  322. package/dist/fields/TemplateField.d.ts.map +1 -1
  323. package/dist/fields/TemplateField.js +1 -1
  324. package/dist/fields/TemplateField.js.map +1 -1
  325. package/dist/fields/TransformField.d.ts +1 -1
  326. package/dist/fields/TransformField.d.ts.map +1 -1
  327. package/dist/fields/TransformField.js +2 -0
  328. package/dist/fields/TransformField.js.map +1 -1
  329. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  330. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  331. package/dist/fields/WidthField.d.ts +1 -1
  332. package/dist/fields/WidthField.d.ts.map +1 -1
  333. package/dist/fields/index.d.ts +8 -36
  334. package/dist/fields/index.d.ts.map +1 -1
  335. package/dist/fields/index.js +20 -78
  336. package/dist/fields/index.js.map +1 -1
  337. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +16 -0
  338. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -0
  339. package/dist/fields/richtext/controls/ColorPickerControl.js +116 -0
  340. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -0
  341. package/dist/fields/richtext/controls/DropdownPortal.d.ts +17 -0
  342. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -0
  343. package/dist/fields/richtext/controls/DropdownPortal.js +90 -0
  344. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -0
  345. package/dist/fields/richtext/controls/FontSizeControl.d.ts +8 -0
  346. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -0
  347. package/dist/fields/richtext/controls/FontSizeControl.js +62 -0
  348. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -0
  349. package/dist/fields/richtext/controls/HighlightControl.d.ts +9 -0
  350. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -0
  351. package/dist/fields/richtext/controls/HighlightControl.js +44 -0
  352. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -0
  353. package/dist/fields/richtext/controls/index.d.ts +11 -0
  354. package/dist/fields/richtext/controls/index.d.ts.map +1 -0
  355. package/dist/fields/richtext/controls/index.js +16 -0
  356. package/dist/fields/richtext/controls/index.js.map +1 -0
  357. package/dist/fields/richtext/controls/shared.d.ts +97 -0
  358. package/dist/fields/richtext/controls/shared.d.ts.map +1 -0
  359. package/dist/fields/richtext/controls/shared.js +344 -0
  360. package/dist/fields/richtext/controls/shared.js.map +1 -0
  361. package/dist/fields/richtext/createRichTextField.d.ts +165 -0
  362. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -0
  363. package/dist/fields/richtext/createRichTextField.js +139 -0
  364. package/dist/fields/richtext/createRichTextField.js.map +1 -0
  365. package/dist/fields/richtext/extensions/FontSize.d.ts +23 -0
  366. package/dist/fields/richtext/extensions/FontSize.d.ts.map +1 -0
  367. package/dist/fields/richtext/extensions/FontSize.js +47 -0
  368. package/dist/fields/richtext/extensions/FontSize.js.map +1 -0
  369. package/dist/fields/richtext/extensions/index.d.ts +5 -0
  370. package/dist/fields/richtext/extensions/index.d.ts.map +1 -0
  371. package/dist/fields/richtext/extensions/index.js +5 -0
  372. package/dist/fields/richtext/extensions/index.js.map +1 -0
  373. package/dist/fields/richtext/index.d.ts +14 -0
  374. package/dist/fields/richtext/index.d.ts.map +1 -0
  375. package/dist/fields/richtext/index.js +19 -0
  376. package/dist/fields/richtext/index.js.map +1 -0
  377. package/dist/fields/richtext/richtext-menu.css +50 -0
  378. package/dist/fields/shared.d.ts +27 -1
  379. package/dist/fields/shared.d.ts.map +1 -1
  380. package/dist/fields/shared.js +34 -0
  381. package/dist/fields/shared.js.map +1 -1
  382. package/dist/layouts/types.d.ts +30 -0
  383. package/dist/layouts/types.d.ts.map +1 -1
  384. package/dist/plugin/index.d.ts +1 -0
  385. package/dist/plugin/index.d.ts.map +1 -1
  386. package/dist/plugin/index.js +111 -1
  387. package/dist/plugin/index.js.map +1 -1
  388. package/dist/render/HybridPageRenderer.d.ts +1 -1
  389. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  390. package/dist/render/PageRenderer.d.ts +1 -1
  391. package/dist/render/PageRenderer.d.ts.map +1 -1
  392. package/dist/render/PageRenderer.js +1 -1
  393. package/dist/render/PageRenderer.js.map +1 -1
  394. package/dist/render/PuckEditor.client.d.ts +2 -2
  395. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  396. package/dist/render/PuckEditor.client.js +2 -2
  397. package/dist/render/PuckEditor.client.js.map +1 -1
  398. package/dist/types/index.d.ts +36 -11
  399. package/dist/types/index.d.ts.map +1 -1
  400. package/dist/version.d.ts +1 -1
  401. package/dist/version.js +1 -1
  402. package/dist/views/PuckConfigContext.d.ts +56 -2
  403. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  404. package/dist/views/PuckConfigContext.js +6 -3
  405. package/dist/views/PuckConfigContext.js.map +1 -1
  406. package/dist/views/PuckEditorView.d.ts.map +1 -1
  407. package/dist/views/PuckEditorView.js +23 -1
  408. package/dist/views/PuckEditorView.js.map +1 -1
  409. package/package.json +34 -10
  410. package/dist/components/typography/RichText.d.ts +0 -20
  411. package/dist/components/typography/RichText.d.ts.map +0 -1
  412. package/dist/components/typography/RichText.js +0 -73
  413. package/dist/components/typography/RichText.js.map +0 -1
  414. package/dist/fields/TiptapField.d.ts +0 -40
  415. package/dist/fields/TiptapField.d.ts.map +0 -1
  416. package/dist/fields/TiptapField.js +0 -857
  417. package/dist/fields/TiptapField.js.map +0 -1
  418. package/dist/fields/TiptapModal.d.ts +0 -10
  419. package/dist/fields/TiptapModal.d.ts.map +0 -1
  420. package/dist/fields/TiptapModal.js +0 -114
  421. package/dist/fields/TiptapModal.js.map +0 -1
  422. package/dist/fields/TiptapModalField.d.ts +0 -23
  423. package/dist/fields/TiptapModalField.d.ts.map +0 -1
  424. package/dist/fields/TiptapModalField.js +0 -55
  425. package/dist/fields/TiptapModalField.js.map +0 -1
  426. package/dist/fields/richtext-output.css +0 -219
  427. package/dist/fields/tiptap-styles.css +0 -248
@@ -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"}
@@ -0,0 +1,63 @@
1
+ import type { AiContext } from '../types.js';
2
+ /** Event name for context updates */
3
+ export declare const AI_CONTEXT_UPDATED_EVENT = "puck:ai-context-updated";
4
+ /**
5
+ * Dispatches an event to notify that AI context has been updated
6
+ * Call this after creating, editing, or deleting a context entry
7
+ */
8
+ export declare function dispatchContextUpdated(): void;
9
+ export interface UseAiContextOptions {
10
+ /**
11
+ * API endpoint to fetch context from
12
+ * @default '/api/puck/ai-context'
13
+ */
14
+ apiEndpoint?: string;
15
+ /**
16
+ * Whether to enable fetching
17
+ * @default true
18
+ */
19
+ enabled?: boolean;
20
+ /**
21
+ * Whether to include disabled entries
22
+ * @default false
23
+ */
24
+ includeDisabled?: boolean;
25
+ }
26
+ export interface UseAiContextReturn {
27
+ /** Array of context entries */
28
+ context: AiContext[];
29
+ /** Loading state */
30
+ loading: boolean;
31
+ /** Error message if any */
32
+ error: string | null;
33
+ /** Refetch context entries */
34
+ refetch: () => Promise<void>;
35
+ /** Create a new context entry */
36
+ create: (data: Omit<AiContext, 'id' | 'createdAt' | 'updatedAt'>) => Promise<AiContext | null>;
37
+ /** Update an existing context entry */
38
+ update: (id: string, data: Partial<AiContext>) => Promise<AiContext | null>;
39
+ /** Delete a context entry */
40
+ remove: (id: string) => Promise<boolean>;
41
+ }
42
+ /**
43
+ * Hook to fetch and manage AI context entries client-side
44
+ *
45
+ * When context is updated via the context editor panel, this hook will
46
+ * automatically refetch to stay in sync.
47
+ *
48
+ * @example
49
+ * ```tsx
50
+ * const { context, loading, create, update, remove } = useAiContext()
51
+ *
52
+ * // Create a new context entry
53
+ * await create({ name: 'Brand Guidelines', content: '...', enabled: true })
54
+ *
55
+ * // Update an entry
56
+ * await update(context[0].id, { content: 'Updated content' })
57
+ *
58
+ * // Delete an entry
59
+ * await remove(context[0].id)
60
+ * ```
61
+ */
62
+ export declare function useAiContext(options?: UseAiContextOptions): UseAiContextReturn;
63
+ //# sourceMappingURL=useAiContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useAiContext.d.ts","sourceRoot":"","sources":["../../../src/ai/hooks/useAiContext.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAE5C,qCAAqC;AACrC,eAAO,MAAM,wBAAwB,4BAA4B,CAAA;AAEjE;;;GAGG;AACH,wBAAgB,sBAAsB,IAAI,IAAI,CAI7C;AAED,MAAM,WAAW,mBAAmB;IAClC;;;OAGG;IACH,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB;;;OAGG;IACH,OAAO,CAAC,EAAE,OAAO,CAAA;IACjB;;;OAGG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;CAC1B;AAED,MAAM,WAAW,kBAAkB;IACjC,+BAA+B;IAC/B,OAAO,EAAE,SAAS,EAAE,CAAA;IACpB,oBAAoB;IACpB,OAAO,EAAE,OAAO,CAAA;IAChB,2BAA2B;IAC3B,KAAK,EAAE,MAAM,GAAG,IAAI,CAAA;IACpB,8BAA8B;IAC9B,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;IAC5B,iCAAiC;IACjC,MAAM,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,WAAW,GAAG,WAAW,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC9F,uCAAuC;IACvC,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,CAAC,SAAS,CAAC,KAAK,OAAO,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;IAC3E,6BAA6B;IAC7B,MAAM,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAA;CACzC;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,YAAY,CAAC,OAAO,GAAE,mBAAwB,GAAG,kBAAkB,CA4IlF"}
@@ -0,0 +1,146 @@
1
+ 'use client';
2
+ import { useState, useEffect, useCallback } from 'react';
3
+ /** Event name for context updates */
4
+ export const AI_CONTEXT_UPDATED_EVENT = 'puck:ai-context-updated';
5
+ /**
6
+ * Dispatches an event to notify that AI context has been updated
7
+ * Call this after creating, editing, or deleting a context entry
8
+ */
9
+ export function dispatchContextUpdated() {
10
+ if (typeof window !== 'undefined') {
11
+ window.dispatchEvent(new CustomEvent(AI_CONTEXT_UPDATED_EVENT));
12
+ }
13
+ }
14
+ /**
15
+ * Hook to fetch and manage AI context entries client-side
16
+ *
17
+ * When context is updated via the context editor panel, this hook will
18
+ * automatically refetch to stay in sync.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * const { context, loading, create, update, remove } = useAiContext()
23
+ *
24
+ * // Create a new context entry
25
+ * await create({ name: 'Brand Guidelines', content: '...', enabled: true })
26
+ *
27
+ * // Update an entry
28
+ * await update(context[0].id, { content: 'Updated content' })
29
+ *
30
+ * // Delete an entry
31
+ * await remove(context[0].id)
32
+ * ```
33
+ */
34
+ export function useAiContext(options = {}) {
35
+ const { apiEndpoint = '/api/puck/ai-context', enabled = true, includeDisabled = false, } = options;
36
+ const [context, setContext] = useState([]);
37
+ const [loading, setLoading] = useState(true);
38
+ const [error, setError] = useState(null);
39
+ const fetchContext = useCallback(async () => {
40
+ if (!enabled) {
41
+ setLoading(false);
42
+ return;
43
+ }
44
+ try {
45
+ setLoading(true);
46
+ setError(null);
47
+ const url = includeDisabled ? `${apiEndpoint}?all=true` : apiEndpoint;
48
+ const response = await fetch(url);
49
+ if (!response.ok) {
50
+ throw new Error('Failed to fetch context');
51
+ }
52
+ const data = await response.json();
53
+ setContext(data.docs || []);
54
+ }
55
+ catch (err) {
56
+ setError(err instanceof Error ? err.message : 'Failed to load context');
57
+ setContext([]);
58
+ }
59
+ finally {
60
+ setLoading(false);
61
+ }
62
+ }, [apiEndpoint, enabled, includeDisabled]);
63
+ // Create a new context entry
64
+ const create = useCallback(async (data) => {
65
+ try {
66
+ const response = await fetch(apiEndpoint, {
67
+ method: 'POST',
68
+ headers: { 'Content-Type': 'application/json' },
69
+ body: JSON.stringify(data),
70
+ });
71
+ if (!response.ok) {
72
+ throw new Error('Failed to create context entry');
73
+ }
74
+ const newEntry = await response.json();
75
+ dispatchContextUpdated();
76
+ return newEntry;
77
+ }
78
+ catch (err) {
79
+ setError(err instanceof Error ? err.message : 'Failed to create context entry');
80
+ return null;
81
+ }
82
+ }, [apiEndpoint]);
83
+ // Update an existing context entry
84
+ const update = useCallback(async (id, data) => {
85
+ try {
86
+ const response = await fetch(`${apiEndpoint}/${id}`, {
87
+ method: 'PATCH',
88
+ headers: { 'Content-Type': 'application/json' },
89
+ body: JSON.stringify(data),
90
+ });
91
+ if (!response.ok) {
92
+ throw new Error('Failed to update context entry');
93
+ }
94
+ const updatedEntry = await response.json();
95
+ dispatchContextUpdated();
96
+ return updatedEntry;
97
+ }
98
+ catch (err) {
99
+ setError(err instanceof Error ? err.message : 'Failed to update context entry');
100
+ return null;
101
+ }
102
+ }, [apiEndpoint]);
103
+ // Delete a context entry
104
+ const remove = useCallback(async (id) => {
105
+ try {
106
+ const response = await fetch(`${apiEndpoint}/${id}`, {
107
+ method: 'DELETE',
108
+ });
109
+ if (!response.ok) {
110
+ throw new Error('Failed to delete context entry');
111
+ }
112
+ dispatchContextUpdated();
113
+ return true;
114
+ }
115
+ catch (err) {
116
+ setError(err instanceof Error ? err.message : 'Failed to delete context entry');
117
+ return false;
118
+ }
119
+ }, [apiEndpoint]);
120
+ // Initial fetch
121
+ useEffect(() => {
122
+ fetchContext();
123
+ }, [fetchContext]);
124
+ // Listen for context updates
125
+ useEffect(() => {
126
+ if (!enabled)
127
+ return;
128
+ const handleUpdate = () => {
129
+ fetchContext();
130
+ };
131
+ window.addEventListener(AI_CONTEXT_UPDATED_EVENT, handleUpdate);
132
+ return () => {
133
+ window.removeEventListener(AI_CONTEXT_UPDATED_EVENT, handleUpdate);
134
+ };
135
+ }, [enabled, fetchContext]);
136
+ return {
137
+ context,
138
+ loading,
139
+ error,
140
+ refetch: fetchContext,
141
+ create,
142
+ update,
143
+ remove,
144
+ };
145
+ }
146
+ //# sourceMappingURL=useAiContext.js.map