@delmaredigital/payload-puck 0.6.10 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/README.md +79 -1
  2. package/dist/admin/EditWithPuckButton.d.ts +1 -1
  3. package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
  4. package/dist/admin/EditWithPuckButton.js +65 -25
  5. package/dist/admin/EditWithPuckButton.js.map +1 -1
  6. package/dist/admin/EditWithPuckCell.js +43 -13
  7. package/dist/admin/EditWithPuckCell.js.map +1 -1
  8. package/dist/admin/PuckEditorView.d.ts +1 -1
  9. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  10. package/dist/admin/PuckEditorView.js +118 -32
  11. package/dist/admin/PuckEditorView.js.map +1 -1
  12. package/dist/admin/client.d.ts +2 -2
  13. package/dist/admin/client.d.ts.map +1 -1
  14. package/dist/admin/client.js +4 -4
  15. package/dist/admin/client.js.map +1 -1
  16. package/dist/admin/generateAdminComponents.js +7 -7
  17. package/dist/admin/generateAdminComponents.js.map +1 -1
  18. package/dist/admin/index.d.ts +5 -5
  19. package/dist/admin/index.d.ts.map +1 -1
  20. package/dist/admin/index.js +3 -2
  21. package/dist/admin/index.js.map +1 -1
  22. package/dist/ai/collections/AiContext.js +56 -29
  23. package/dist/ai/collections/AiContext.js.map +1 -1
  24. package/dist/ai/collections/AiPrompts.js +24 -19
  25. package/dist/ai/collections/AiPrompts.js.map +1 -1
  26. package/dist/ai/createAiApiRoutes.js +28 -19
  27. package/dist/ai/createAiApiRoutes.js.map +1 -1
  28. package/dist/ai/createAiGenerate.js +7 -8
  29. package/dist/ai/createAiGenerate.js.map +1 -1
  30. package/dist/ai/createAiPlugin.js +7 -9
  31. package/dist/ai/createAiPlugin.js.map +1 -1
  32. package/dist/ai/hooks/useAiContext.js +50 -39
  33. package/dist/ai/hooks/useAiContext.js.map +1 -1
  34. package/dist/ai/hooks/useAiPrompts.js +33 -25
  35. package/dist/ai/hooks/useAiPrompts.js.map +1 -1
  36. package/dist/ai/index.js +9 -10
  37. package/dist/ai/index.js.map +1 -1
  38. package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
  39. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
  40. package/dist/ai/plugins/ContextEditorPanel.js +399 -107
  41. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
  42. package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
  43. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
  44. package/dist/ai/plugins/PromptEditorPanel.js +237 -51
  45. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
  46. package/dist/ai/plugins/contextEditorPlugin.js +12 -5
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
  48. package/dist/ai/plugins/promptApiRoutes.js +119 -50
  49. package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
  50. package/dist/ai/plugins/promptEditorPlugin.js +12 -5
  51. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
  52. package/dist/ai/presets/componentAiDefaults.js +108 -83
  53. package/dist/ai/presets/componentAiDefaults.js.map +1 -1
  54. package/dist/ai/presets/index.js +12 -18
  55. package/dist/ai/presets/index.js.map +1 -1
  56. package/dist/ai/presets/instructions/interactive.js +85 -75
  57. package/dist/ai/presets/instructions/interactive.js.map +1 -1
  58. package/dist/ai/presets/instructions/layout.js +122 -117
  59. package/dist/ai/presets/instructions/layout.js.map +1 -1
  60. package/dist/ai/presets/instructions/media.js +31 -29
  61. package/dist/ai/presets/instructions/media.js.map +1 -1
  62. package/dist/ai/presets/instructions/pagePatterns.js +4 -6
  63. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
  64. package/dist/ai/presets/instructions/schemas.js +495 -137
  65. package/dist/ai/presets/instructions/schemas.js.map +1 -1
  66. package/dist/ai/presets/instructions/typography.js +38 -33
  67. package/dist/ai/presets/instructions/typography.js.map +1 -1
  68. package/dist/ai/tools/index.js +92 -55
  69. package/dist/ai/tools/index.js.map +1 -1
  70. package/dist/ai/types.js +7 -1
  71. package/dist/ai/types.js.map +1 -1
  72. package/dist/ai/utils/injectAiConfig.js +33 -40
  73. package/dist/ai/utils/injectAiConfig.js.map +1 -1
  74. package/dist/api/createPuckApiRoutes.d.ts +1 -1
  75. package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
  76. package/dist/api/createPuckApiRoutes.js +123 -65
  77. package/dist/api/createPuckApiRoutes.js.map +1 -1
  78. package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
  79. package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
  80. package/dist/api/createPuckApiRoutesVersions.js +88 -37
  81. package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
  82. package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
  83. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  84. package/dist/api/createPuckApiRoutesWithId.js +166 -72
  85. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  86. package/dist/api/index.d.ts +5 -5
  87. package/dist/api/index.d.ts.map +1 -1
  88. package/dist/api/index.js +6 -6
  89. package/dist/api/index.js.map +1 -1
  90. package/dist/api/payload-config.d.js +15 -0
  91. package/dist/api/payload-config.d.js.map +1 -0
  92. package/dist/api/types.js +4 -1
  93. package/dist/api/types.js.map +1 -1
  94. package/dist/api/utils/mapRootProps.d.ts +1 -1
  95. package/dist/api/utils/mapRootProps.d.ts.map +1 -1
  96. package/dist/api/utils/mapRootProps.js +77 -44
  97. package/dist/api/utils/mapRootProps.js.map +1 -1
  98. package/dist/collections/Templates.js +24 -20
  99. package/dist/collections/Templates.js.map +1 -1
  100. package/dist/components/AccordionClient.d.ts +2 -2
  101. package/dist/components/AccordionClient.d.ts.map +1 -1
  102. package/dist/components/AccordionClient.js +81 -22
  103. package/dist/components/AccordionClient.js.map +1 -1
  104. package/dist/components/AnimatedWrapper.d.ts +2 -2
  105. package/dist/components/AnimatedWrapper.d.ts.map +1 -1
  106. package/dist/components/AnimatedWrapper.js +31 -16
  107. package/dist/components/AnimatedWrapper.js.map +1 -1
  108. package/dist/components/exports.js +2 -2
  109. package/dist/components/exports.js.map +1 -1
  110. package/dist/components/index.d.ts +5 -5
  111. package/dist/components/index.d.ts.map +1 -1
  112. package/dist/components/index.js +7 -7
  113. package/dist/components/index.js.map +1 -1
  114. package/dist/components/interactive/Accordion.d.ts +1 -1
  115. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  116. package/dist/components/interactive/Accordion.js +149 -55
  117. package/dist/components/interactive/Accordion.js.map +1 -1
  118. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  119. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  120. package/dist/components/interactive/Accordion.server.js +25 -7
  121. package/dist/components/interactive/Accordion.server.js.map +1 -1
  122. package/dist/components/interactive/Button.d.ts +3 -3
  123. package/dist/components/interactive/Button.d.ts.map +1 -1
  124. package/dist/components/interactive/Button.js +89 -43
  125. package/dist/components/interactive/Button.js.map +1 -1
  126. package/dist/components/interactive/Button.server.d.ts +2 -2
  127. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  128. package/dist/components/interactive/Button.server.js +40 -20
  129. package/dist/components/interactive/Button.server.js.map +1 -1
  130. package/dist/components/interactive/Card.d.ts +3 -3
  131. package/dist/components/interactive/Card.d.ts.map +1 -1
  132. package/dist/components/interactive/Card.js +131 -39
  133. package/dist/components/interactive/Card.js.map +1 -1
  134. package/dist/components/interactive/Card.server.d.ts +3 -3
  135. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  136. package/dist/components/interactive/Card.server.js +72 -11
  137. package/dist/components/interactive/Card.server.js.map +1 -1
  138. package/dist/components/interactive/Divider.d.ts +1 -1
  139. package/dist/components/interactive/Divider.d.ts.map +1 -1
  140. package/dist/components/interactive/Divider.js +54 -26
  141. package/dist/components/interactive/Divider.js.map +1 -1
  142. package/dist/components/interactive/Divider.server.d.ts +1 -1
  143. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  144. package/dist/components/interactive/Divider.server.js +28 -12
  145. package/dist/components/interactive/Divider.server.js.map +1 -1
  146. package/dist/components/interactive/index.d.ts +4 -4
  147. package/dist/components/interactive/index.d.ts.map +1 -1
  148. package/dist/components/interactive/index.js +5 -5
  149. package/dist/components/interactive/index.js.map +1 -1
  150. package/dist/components/layout/Container.d.ts +1 -1
  151. package/dist/components/layout/Container.d.ts.map +1 -1
  152. package/dist/components/layout/Container.js +101 -47
  153. package/dist/components/layout/Container.js.map +1 -1
  154. package/dist/components/layout/Container.server.d.ts +1 -1
  155. package/dist/components/layout/Container.server.d.ts.map +1 -1
  156. package/dist/components/layout/Container.server.js +67 -19
  157. package/dist/components/layout/Container.server.js.map +1 -1
  158. package/dist/components/layout/Flex.d.ts +2 -2
  159. package/dist/components/layout/Flex.d.ts.map +1 -1
  160. package/dist/components/layout/Flex.js +124 -55
  161. package/dist/components/layout/Flex.js.map +1 -1
  162. package/dist/components/layout/Flex.server.d.ts +1 -1
  163. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  164. package/dist/components/layout/Flex.server.js +50 -14
  165. package/dist/components/layout/Flex.server.js.map +1 -1
  166. package/dist/components/layout/Grid.d.ts +1 -1
  167. package/dist/components/layout/Grid.d.ts.map +1 -1
  168. package/dist/components/layout/Grid.js +93 -44
  169. package/dist/components/layout/Grid.js.map +1 -1
  170. package/dist/components/layout/Grid.server.d.ts +1 -1
  171. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  172. package/dist/components/layout/Grid.server.js +56 -14
  173. package/dist/components/layout/Grid.server.js.map +1 -1
  174. package/dist/components/layout/Section.d.ts +1 -1
  175. package/dist/components/layout/Section.d.ts.map +1 -1
  176. package/dist/components/layout/Section.js +147 -64
  177. package/dist/components/layout/Section.js.map +1 -1
  178. package/dist/components/layout/Section.server.d.ts +1 -1
  179. package/dist/components/layout/Section.server.d.ts.map +1 -1
  180. package/dist/components/layout/Section.server.js +92 -28
  181. package/dist/components/layout/Section.server.js.map +1 -1
  182. package/dist/components/layout/Spacer.d.ts +1 -1
  183. package/dist/components/layout/Spacer.d.ts.map +1 -1
  184. package/dist/components/layout/Spacer.js +80 -30
  185. package/dist/components/layout/Spacer.js.map +1 -1
  186. package/dist/components/layout/Spacer.server.d.ts +1 -1
  187. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  188. package/dist/components/layout/Spacer.server.js +31 -9
  189. package/dist/components/layout/Spacer.server.js.map +1 -1
  190. package/dist/components/layout/Template.d.ts +1 -1
  191. package/dist/components/layout/Template.d.ts.map +1 -1
  192. package/dist/components/layout/Template.js +58 -30
  193. package/dist/components/layout/Template.js.map +1 -1
  194. package/dist/components/layout/Template.server.d.ts +1 -1
  195. package/dist/components/layout/Template.server.d.ts.map +1 -1
  196. package/dist/components/layout/Template.server.js +43 -11
  197. package/dist/components/layout/Template.server.js.map +1 -1
  198. package/dist/components/layout/index.d.ts +8 -8
  199. package/dist/components/layout/index.d.ts.map +1 -1
  200. package/dist/components/layout/index.js +8 -8
  201. package/dist/components/layout/index.js.map +1 -1
  202. package/dist/components/media/Image.d.ts +3 -3
  203. package/dist/components/media/Image.d.ts.map +1 -1
  204. package/dist/components/media/Image.js +122 -39
  205. package/dist/components/media/Image.js.map +1 -1
  206. package/dist/components/media/Image.server.d.ts +3 -3
  207. package/dist/components/media/Image.server.d.ts.map +1 -1
  208. package/dist/components/media/Image.server.js +76 -13
  209. package/dist/components/media/Image.server.js.map +1 -1
  210. package/dist/components/media/index.d.ts +1 -1
  211. package/dist/components/media/index.d.ts.map +1 -1
  212. package/dist/components/media/index.js +2 -2
  213. package/dist/components/media/index.js.map +1 -1
  214. package/dist/components/typography/Heading.d.ts +2 -2
  215. package/dist/components/typography/Heading.d.ts.map +1 -1
  216. package/dist/components/typography/Heading.js +45 -25
  217. package/dist/components/typography/Heading.js.map +1 -1
  218. package/dist/components/typography/Heading.server.d.ts +2 -2
  219. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  220. package/dist/components/typography/Heading.server.js +16 -10
  221. package/dist/components/typography/Heading.server.js.map +1 -1
  222. package/dist/components/typography/RichText.editor.d.ts +1 -1
  223. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  224. package/dist/components/typography/RichText.editor.js +44 -19
  225. package/dist/components/typography/RichText.editor.js.map +1 -1
  226. package/dist/components/typography/RichText.server.d.ts +2 -2
  227. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  228. package/dist/components/typography/RichText.server.js +33 -14
  229. package/dist/components/typography/RichText.server.js.map +1 -1
  230. package/dist/components/typography/Text.d.ts +2 -2
  231. package/dist/components/typography/Text.d.ts.map +1 -1
  232. package/dist/components/typography/Text.js +49 -23
  233. package/dist/components/typography/Text.js.map +1 -1
  234. package/dist/components/typography/Text.server.d.ts +2 -2
  235. package/dist/components/typography/Text.server.d.ts.map +1 -1
  236. package/dist/components/typography/Text.server.js +21 -8
  237. package/dist/components/typography/Text.server.js.map +1 -1
  238. package/dist/components/typography/index.d.ts +4 -4
  239. package/dist/components/typography/index.d.ts.map +1 -1
  240. package/dist/components/typography/index.js +5 -5
  241. package/dist/components/typography/index.js.map +1 -1
  242. package/dist/config/config.editor.d.ts +3 -3
  243. package/dist/config/config.editor.d.ts.map +1 -1
  244. package/dist/config/config.editor.js +119 -54
  245. package/dist/config/config.editor.js.map +1 -1
  246. package/dist/config/index.d.ts +4 -4
  247. package/dist/config/index.d.ts.map +1 -1
  248. package/dist/config/index.js +62 -35
  249. package/dist/config/index.js.map +1 -1
  250. package/dist/config/merge.d.ts +1 -1
  251. package/dist/config/merge.d.ts.map +1 -1
  252. package/dist/config/merge.js +23 -26
  253. package/dist/config/merge.js.map +1 -1
  254. package/dist/config/presets.d.ts +4 -4
  255. package/dist/config/presets.js +195 -75
  256. package/dist/config/presets.js.map +1 -1
  257. package/dist/config/types.js +6 -2
  258. package/dist/config/types.js.map +1 -1
  259. package/dist/editor/PuckEditor.d.ts +12 -4
  260. package/dist/editor/PuckEditor.d.ts.map +1 -1
  261. package/dist/editor/PuckEditor.js +168 -67
  262. package/dist/editor/PuckEditor.js.map +1 -1
  263. package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
  264. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  265. package/dist/editor/PuckEditorImpl.client.js +304 -152
  266. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  267. package/dist/editor/components/DarkModeStyles.js +11 -12
  268. package/dist/editor/components/DarkModeStyles.js.map +1 -1
  269. package/dist/editor/components/HeaderActions.js +308 -64
  270. package/dist/editor/components/HeaderActions.js.map +1 -1
  271. package/dist/editor/components/IframeWrapper.d.ts +1 -1
  272. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  273. package/dist/editor/components/IframeWrapper.js +82 -58
  274. package/dist/editor/components/IframeWrapper.js.map +1 -1
  275. package/dist/editor/components/LoadingState.d.ts +1 -1
  276. package/dist/editor/components/LoadingState.d.ts.map +1 -1
  277. package/dist/editor/components/LoadingState.js +17 -3
  278. package/dist/editor/components/LoadingState.js.map +1 -1
  279. package/dist/editor/components/PreviewModal.js +234 -78
  280. package/dist/editor/components/PreviewModal.js.map +1 -1
  281. package/dist/editor/components/PreviewModeToggle.js +43 -15
  282. package/dist/editor/components/PreviewModeToggle.js.map +1 -1
  283. package/dist/editor/components/VersionHistory.js +219 -71
  284. package/dist/editor/components/VersionHistory.js.map +1 -1
  285. package/dist/editor/hooks/useDarkMode.js +36 -23
  286. package/dist/editor/hooks/useDarkMode.js.map +1 -1
  287. package/dist/editor/hooks/useUnsavedChanges.js +8 -8
  288. package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
  289. package/dist/editor/index.js +5 -6
  290. package/dist/editor/index.js.map +1 -1
  291. package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
  292. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
  293. package/dist/editor/plugins/index.js +4 -4
  294. package/dist/editor/plugins/index.js.map +1 -1
  295. package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
  296. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
  297. package/dist/editor/utils/detectPageTree.js +5 -5
  298. package/dist/editor/utils/detectPageTree.js.map +1 -1
  299. package/dist/editor/utils/index.js +1 -0
  300. package/dist/editor/utils/index.js.map +1 -1
  301. package/dist/editor/utils/injectPageTreeFields.js +13 -9
  302. package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
  303. package/dist/endpoints/ai.js +58 -34
  304. package/dist/endpoints/ai.js.map +1 -1
  305. package/dist/endpoints/context.js +86 -40
  306. package/dist/endpoints/context.js.map +1 -1
  307. package/dist/endpoints/index.js +153 -76
  308. package/dist/endpoints/index.js.map +1 -1
  309. package/dist/endpoints/postcss.d.js +5 -0
  310. package/dist/endpoints/postcss.d.js.map +1 -0
  311. package/dist/endpoints/prompts.js +81 -39
  312. package/dist/endpoints/prompts.js.map +1 -1
  313. package/dist/endpoints/styles.js +34 -36
  314. package/dist/endpoints/styles.js.map +1 -1
  315. package/dist/exports/client.js +2 -2
  316. package/dist/exports/client.js.map +1 -1
  317. package/dist/exports/rsc.js +2 -2
  318. package/dist/exports/rsc.js.map +1 -1
  319. package/dist/fields/AlignmentField.d.ts +1 -1
  320. package/dist/fields/AlignmentField.d.ts.map +1 -1
  321. package/dist/fields/AlignmentField.js +93 -30
  322. package/dist/fields/AlignmentField.js.map +1 -1
  323. package/dist/fields/AnimationField.d.ts +2 -2
  324. package/dist/fields/AnimationField.d.ts.map +1 -1
  325. package/dist/fields/AnimationField.js +558 -84
  326. package/dist/fields/AnimationField.js.map +1 -1
  327. package/dist/fields/BackgroundField.d.ts +2 -2
  328. package/dist/fields/BackgroundField.d.ts.map +1 -1
  329. package/dist/fields/BackgroundField.js +754 -120
  330. package/dist/fields/BackgroundField.js.map +1 -1
  331. package/dist/fields/BorderField.d.ts +2 -2
  332. package/dist/fields/BorderField.d.ts.map +1 -1
  333. package/dist/fields/BorderField.js +275 -73
  334. package/dist/fields/BorderField.js.map +1 -1
  335. package/dist/fields/ColorPickerField.d.ts +2 -2
  336. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  337. package/dist/fields/ColorPickerField.js +210 -68
  338. package/dist/fields/ColorPickerField.js.map +1 -1
  339. package/dist/fields/ContentAlignmentField.d.ts +1 -1
  340. package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
  341. package/dist/fields/ContentAlignmentField.js +161 -75
  342. package/dist/fields/ContentAlignmentField.js.map +1 -1
  343. package/dist/fields/DimensionsField.d.ts +2 -2
  344. package/dist/fields/DimensionsField.d.ts.map +1 -1
  345. package/dist/fields/DimensionsField.js +575 -146
  346. package/dist/fields/DimensionsField.js.map +1 -1
  347. package/dist/fields/FlexAlignmentField.d.ts +2 -2
  348. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  349. package/dist/fields/FlexAlignmentField.js +189 -51
  350. package/dist/fields/FlexAlignmentField.js.map +1 -1
  351. package/dist/fields/FolderPickerField.d.ts +8 -1
  352. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  353. package/dist/fields/FolderPickerField.js +288 -75
  354. package/dist/fields/FolderPickerField.js.map +1 -1
  355. package/dist/fields/GradientEditor.d.ts +2 -2
  356. package/dist/fields/GradientEditor.d.ts.map +1 -1
  357. package/dist/fields/GradientEditor.js +462 -86
  358. package/dist/fields/GradientEditor.js.map +1 -1
  359. package/dist/fields/LockedField.d.ts +15 -2
  360. package/dist/fields/LockedField.d.ts.map +1 -1
  361. package/dist/fields/LockedField.js +180 -49
  362. package/dist/fields/LockedField.js.map +1 -1
  363. package/dist/fields/MarginField.d.ts +2 -2
  364. package/dist/fields/MarginField.d.ts.map +1 -1
  365. package/dist/fields/MarginField.js +144 -46
  366. package/dist/fields/MarginField.js.map +1 -1
  367. package/dist/fields/MediaField.d.ts +1 -1
  368. package/dist/fields/MediaField.d.ts.map +1 -1
  369. package/dist/fields/MediaField.js +688 -186
  370. package/dist/fields/MediaField.js.map +1 -1
  371. package/dist/fields/PaddingField.d.ts +2 -2
  372. package/dist/fields/PaddingField.d.ts.map +1 -1
  373. package/dist/fields/PaddingField.js +144 -46
  374. package/dist/fields/PaddingField.js.map +1 -1
  375. package/dist/fields/PageSegmentField.d.ts +15 -2
  376. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  377. package/dist/fields/PageSegmentField.js +156 -54
  378. package/dist/fields/PageSegmentField.js.map +1 -1
  379. package/dist/fields/ResetField.d.ts +1 -1
  380. package/dist/fields/ResetField.d.ts.map +1 -1
  381. package/dist/fields/ResetField.js +59 -31
  382. package/dist/fields/ResetField.js.map +1 -1
  383. package/dist/fields/ResponsiveField.d.ts +1 -1
  384. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  385. package/dist/fields/ResponsiveField.js +233 -90
  386. package/dist/fields/ResponsiveField.js.map +1 -1
  387. package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
  388. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  389. package/dist/fields/ResponsiveVisibilityField.js +119 -36
  390. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  391. package/dist/fields/SizeField.d.ts +3 -3
  392. package/dist/fields/SizeField.d.ts.map +1 -1
  393. package/dist/fields/SizeField.js +226 -52
  394. package/dist/fields/SizeField.js.map +1 -1
  395. package/dist/fields/SlugPreviewField.d.ts +8 -1
  396. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  397. package/dist/fields/SlugPreviewField.js +65 -16
  398. package/dist/fields/SlugPreviewField.js.map +1 -1
  399. package/dist/fields/TemplateField.d.ts +1 -1
  400. package/dist/fields/TemplateField.d.ts.map +1 -1
  401. package/dist/fields/TemplateField.js +362 -120
  402. package/dist/fields/TemplateField.js.map +1 -1
  403. package/dist/fields/TransformField.d.ts +2 -2
  404. package/dist/fields/TransformField.d.ts.map +1 -1
  405. package/dist/fields/TransformField.js +517 -81
  406. package/dist/fields/TransformField.js.map +1 -1
  407. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  408. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  409. package/dist/fields/VerticalAlignmentField.js +93 -30
  410. package/dist/fields/VerticalAlignmentField.js.map +1 -1
  411. package/dist/fields/WidthField.d.ts +2 -2
  412. package/dist/fields/WidthField.d.ts.map +1 -1
  413. package/dist/fields/WidthField.js +278 -81
  414. package/dist/fields/WidthField.js.map +1 -1
  415. package/dist/fields/index.d.ts +41 -41
  416. package/dist/fields/index.d.ts.map +1 -1
  417. package/dist/fields/index.js +37 -43
  418. package/dist/fields/index.js.map +1 -1
  419. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
  420. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
  421. package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
  422. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
  423. package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
  424. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
  425. package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
  426. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
  427. package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
  428. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
  429. package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
  430. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
  431. package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
  432. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
  433. package/dist/fields/richtext/controls/HighlightControl.js +54 -17
  434. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
  435. package/dist/fields/richtext/controls/index.d.ts +5 -5
  436. package/dist/fields/richtext/controls/index.d.ts.map +1 -1
  437. package/dist/fields/richtext/controls/index.js +8 -11
  438. package/dist/fields/richtext/controls/index.js.map +1 -1
  439. package/dist/fields/richtext/controls/shared.js +108 -63
  440. package/dist/fields/richtext/controls/shared.js.map +1 -1
  441. package/dist/fields/richtext/createRichTextField.d.ts +18 -4
  442. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
  443. package/dist/fields/richtext/createRichTextField.js +113 -26
  444. package/dist/fields/richtext/createRichTextField.js.map +1 -1
  445. package/dist/fields/richtext/extensions/FontSize.js +26 -20
  446. package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
  447. package/dist/fields/richtext/extensions/index.d.ts +1 -1
  448. package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
  449. package/dist/fields/richtext/extensions/index.js +2 -2
  450. package/dist/fields/richtext/extensions/index.js.map +1 -1
  451. package/dist/fields/richtext/index.d.ts +6 -6
  452. package/dist/fields/richtext/index.d.ts.map +1 -1
  453. package/dist/fields/richtext/index.js +8 -8
  454. package/dist/fields/richtext/index.js.map +1 -1
  455. package/dist/fields/shared.d.ts +1 -1
  456. package/dist/fields/shared.d.ts.map +1 -1
  457. package/dist/fields/shared.js +915 -478
  458. package/dist/fields/shared.js.map +1 -1
  459. package/dist/hooks/index.d.ts +2 -2
  460. package/dist/hooks/index.d.ts.map +1 -1
  461. package/dist/hooks/index.js +3 -3
  462. package/dist/hooks/index.js.map +1 -1
  463. package/dist/hooks/useResponsiveStyles.d.ts +1 -1
  464. package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
  465. package/dist/hooks/useResponsiveStyles.js +36 -32
  466. package/dist/hooks/useResponsiveStyles.js.map +1 -1
  467. package/dist/hooks/useScrollAnimation.js +26 -24
  468. package/dist/hooks/useScrollAnimation.js.map +1 -1
  469. package/dist/index.d.ts +4 -4
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +5 -5
  472. package/dist/index.js.map +1 -1
  473. package/dist/layouts/LayoutWrapper.d.ts +3 -3
  474. package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
  475. package/dist/layouts/LayoutWrapper.js +115 -51
  476. package/dist/layouts/LayoutWrapper.js.map +1 -1
  477. package/dist/layouts/defaults.d.ts +1 -1
  478. package/dist/layouts/defaults.d.ts.map +1 -1
  479. package/dist/layouts/defaults.js +23 -31
  480. package/dist/layouts/defaults.js.map +1 -1
  481. package/dist/layouts/index.d.ts +4 -4
  482. package/dist/layouts/index.d.ts.map +1 -1
  483. package/dist/layouts/index.js +5 -4
  484. package/dist/layouts/index.js.map +1 -1
  485. package/dist/layouts/types.js +4 -2
  486. package/dist/layouts/types.js.map +1 -1
  487. package/dist/layouts/utils.d.ts +1 -1
  488. package/dist/layouts/utils.d.ts.map +1 -1
  489. package/dist/layouts/utils.js +32 -40
  490. package/dist/layouts/utils.js.map +1 -1
  491. package/dist/next/index.js +31 -34
  492. package/dist/next/index.js.map +1 -1
  493. package/dist/plugin/collections/Pages.d.ts +2 -2
  494. package/dist/plugin/collections/Pages.d.ts.map +1 -1
  495. package/dist/plugin/collections/Pages.js +46 -43
  496. package/dist/plugin/collections/Pages.js.map +1 -1
  497. package/dist/plugin/fields/index.d.ts +3 -3
  498. package/dist/plugin/fields/index.d.ts.map +1 -1
  499. package/dist/plugin/fields/index.js +100 -78
  500. package/dist/plugin/fields/index.js.map +1 -1
  501. package/dist/plugin/fields/types.d.ts +1 -1
  502. package/dist/plugin/fields/types.d.ts.map +1 -1
  503. package/dist/plugin/fields/types.js +26 -2
  504. package/dist/plugin/fields/types.js.map +1 -1
  505. package/dist/plugin/hooks/index.d.ts +1 -1
  506. package/dist/plugin/hooks/index.d.ts.map +1 -1
  507. package/dist/plugin/hooks/index.js +2 -2
  508. package/dist/plugin/hooks/index.js.map +1 -1
  509. package/dist/plugin/hooks/isHomepageUnique.js +28 -19
  510. package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
  511. package/dist/plugin/index.d.ts +8 -8
  512. package/dist/plugin/index.d.ts.map +1 -1
  513. package/dist/plugin/index.js +192 -188
  514. package/dist/plugin/index.js.map +1 -1
  515. package/dist/render/HybridPageRenderer.d.ts +2 -2
  516. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  517. package/dist/render/HybridPageRenderer.js +58 -10
  518. package/dist/render/HybridPageRenderer.js.map +1 -1
  519. package/dist/render/PageRenderer.d.ts +2 -2
  520. package/dist/render/PageRenderer.d.ts.map +1 -1
  521. package/dist/render/PageRenderer.js +31 -14
  522. package/dist/render/PageRenderer.js.map +1 -1
  523. package/dist/render/PuckEditor.client.d.ts +1 -1
  524. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  525. package/dist/render/PuckEditor.client.js +33 -16
  526. package/dist/render/PuckEditor.client.js.map +1 -1
  527. package/dist/render/index.d.ts +5 -5
  528. package/dist/render/index.d.ts.map +1 -1
  529. package/dist/render/index.js +5 -6
  530. package/dist/render/index.js.map +1 -1
  531. package/dist/styles/puck-dark-mode.css +101 -0
  532. package/dist/theme/context.d.ts +2 -2
  533. package/dist/theme/context.d.ts.map +1 -1
  534. package/dist/theme/context.js +21 -18
  535. package/dist/theme/context.js.map +1 -1
  536. package/dist/theme/defaults.d.ts +1 -1
  537. package/dist/theme/defaults.d.ts.map +1 -1
  538. package/dist/theme/defaults.js +83 -37
  539. package/dist/theme/defaults.js.map +1 -1
  540. package/dist/theme/example.d.ts +1 -1
  541. package/dist/theme/example.d.ts.map +1 -1
  542. package/dist/theme/example.js +68 -30
  543. package/dist/theme/example.js.map +1 -1
  544. package/dist/theme/index.d.ts +5 -5
  545. package/dist/theme/index.d.ts.map +1 -1
  546. package/dist/theme/index.js +6 -5
  547. package/dist/theme/index.js.map +1 -1
  548. package/dist/theme/types.js +6 -2
  549. package/dist/theme/types.js.map +1 -1
  550. package/dist/theme/utils.d.ts +1 -1
  551. package/dist/theme/utils.d.ts.map +1 -1
  552. package/dist/theme/utils.js +24 -25
  553. package/dist/theme/utils.js.map +1 -1
  554. package/dist/types/index.d.ts +42 -6
  555. package/dist/types/index.d.ts.map +1 -1
  556. package/dist/types/index.js +3 -1
  557. package/dist/types/index.js.map +1 -1
  558. package/dist/utils/index.d.ts +2 -2
  559. package/dist/utils/index.d.ts.map +1 -1
  560. package/dist/utils/index.js +13 -22
  561. package/dist/utils/index.js.map +1 -1
  562. package/dist/utils/migration.d.ts +1 -1
  563. package/dist/utils/migration.d.ts.map +1 -1
  564. package/dist/utils/migration.js +43 -49
  565. package/dist/utils/migration.js.map +1 -1
  566. package/dist/utils/validation.d.ts +1 -1
  567. package/dist/utils/validation.d.ts.map +1 -1
  568. package/dist/utils/validation.js +36 -43
  569. package/dist/utils/validation.js.map +1 -1
  570. package/dist/version.d.ts +1 -1
  571. package/dist/version.js +2 -1
  572. package/dist/version.js.map +1 -1
  573. package/dist/views/PuckConfigContext.d.ts +1 -1
  574. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  575. package/dist/views/PuckConfigContext.js +25 -10
  576. package/dist/views/PuckConfigContext.js.map +1 -1
  577. package/dist/views/PuckEditorView.d.ts +1 -1
  578. package/dist/views/PuckEditorView.d.ts.map +1 -1
  579. package/dist/views/PuckEditorView.js +137 -41
  580. package/dist/views/PuckEditorView.js.map +1 -1
  581. package/dist/views/index.js +2 -2
  582. package/dist/views/index.js.map +1 -1
  583. package/package.json +62 -42
@@ -10,10 +10,9 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
10
10
  * - When a template is selected, loads the saved components into the slot
11
11
  *
12
12
  * Uses Puck's usePuck hook to access and modify component slot data.
13
- */
14
- import { useState, useEffect, useCallback, memo } from 'react';
13
+ */ import React, { useState, useEffect, useCallback, memo } from 'react';
15
14
  import { createUsePuck } from '@puckeditor/core';
16
- import { Loader2, Save, Download, AlertCircle, ChevronUp, X, } from 'lucide-react';
15
+ import { Loader2, Save, Download, AlertCircle, ChevronUp, X } from 'lucide-react';
17
16
  // Create usePuck hook for accessing editor state
18
17
  const usePuck = createUsePuck();
19
18
  // =============================================================================
@@ -23,17 +22,17 @@ const styles = {
23
22
  container: {
24
23
  display: 'flex',
25
24
  flexDirection: 'column',
26
- gap: '12px',
25
+ gap: '12px'
27
26
  },
28
27
  label: {
29
28
  display: 'block',
30
29
  fontSize: '14px',
31
30
  fontWeight: 500,
32
- color: 'var(--theme-elevation-800)',
31
+ color: 'var(--theme-elevation-800)'
33
32
  },
34
33
  selectRow: {
35
34
  display: 'flex',
36
- gap: '8px',
35
+ gap: '8px'
37
36
  },
38
37
  select: {
39
38
  flex: 1,
@@ -44,7 +43,7 @@ const styles = {
44
43
  borderRadius: '6px',
45
44
  backgroundColor: 'var(--theme-input-bg)',
46
45
  color: 'var(--theme-elevation-800)',
47
- cursor: 'pointer',
46
+ cursor: 'pointer'
48
47
  },
49
48
  clearButton: {
50
49
  display: 'flex',
@@ -57,11 +56,11 @@ const styles = {
57
56
  borderRadius: '6px',
58
57
  backgroundColor: 'transparent',
59
58
  color: 'var(--theme-elevation-500)',
60
- cursor: 'pointer',
59
+ cursor: 'pointer'
61
60
  },
62
61
  buttonRow: {
63
62
  display: 'flex',
64
- gap: '8px',
63
+ gap: '8px'
65
64
  },
66
65
  button: {
67
66
  display: 'flex',
@@ -77,11 +76,11 @@ const styles = {
77
76
  borderRadius: '4px',
78
77
  backgroundColor: 'var(--theme-bg)',
79
78
  color: 'var(--theme-elevation-700)',
80
- cursor: 'pointer',
79
+ cursor: 'pointer'
81
80
  },
82
81
  buttonDisabled: {
83
82
  opacity: 0.5,
84
- cursor: 'not-allowed',
83
+ cursor: 'not-allowed'
85
84
  },
86
85
  saveForm: {
87
86
  display: 'flex',
@@ -90,16 +89,16 @@ const styles = {
90
89
  padding: '12px',
91
90
  border: '1px solid var(--theme-elevation-150)',
92
91
  borderRadius: '6px',
93
- backgroundColor: 'var(--theme-elevation-50)',
92
+ backgroundColor: 'var(--theme-elevation-50)'
94
93
  },
95
94
  inputGroup: {
96
95
  display: 'flex',
97
96
  flexDirection: 'column',
98
- gap: '6px',
97
+ gap: '6px'
99
98
  },
100
99
  inputLabel: {
101
100
  fontSize: '12px',
102
- color: 'var(--theme-elevation-700)',
101
+ color: 'var(--theme-elevation-700)'
103
102
  },
104
103
  input: {
105
104
  height: '32px',
@@ -108,7 +107,7 @@ const styles = {
108
107
  border: '1px solid var(--theme-elevation-150)',
109
108
  borderRadius: '4px',
110
109
  backgroundColor: 'var(--theme-input-bg)',
111
- color: 'var(--theme-elevation-800)',
110
+ color: 'var(--theme-elevation-800)'
112
111
  },
113
112
  errorBox: {
114
113
  display: 'flex',
@@ -119,7 +118,7 @@ const styles = {
119
118
  border: '1px solid rgba(239, 68, 68, 0.3)',
120
119
  borderRadius: '6px',
121
120
  color: 'var(--theme-error-500)',
122
- fontSize: '12px',
121
+ fontSize: '12px'
123
122
  },
124
123
  submitButton: {
125
124
  display: 'flex',
@@ -135,25 +134,24 @@ const styles = {
135
134
  borderRadius: '4px',
136
135
  backgroundColor: 'var(--theme-elevation-800)',
137
136
  color: 'var(--theme-bg)',
138
- cursor: 'pointer',
139
- },
137
+ cursor: 'pointer'
138
+ }
140
139
  };
141
140
  // =============================================================================
142
141
  // Helper Functions
143
142
  // =============================================================================
144
143
  /**
145
144
  * Find and update a component's props in the Puck data tree.
146
- */
147
- function updateComponentInData(data, componentId, propsToMerge) {
148
- const updateInArray = (items) => {
149
- return items.map((item) => {
145
+ */ function updateComponentInData(data, componentId, propsToMerge) {
146
+ const updateInArray = (items)=>{
147
+ return items.map((item)=>{
150
148
  if (item.props?.id === componentId) {
151
149
  return {
152
150
  ...item,
153
151
  props: {
154
152
  ...item.props,
155
- ...propsToMerge,
156
- },
153
+ ...propsToMerge
154
+ }
157
155
  };
158
156
  }
159
157
  if (item.props?.content && Array.isArray(item.props.content)) {
@@ -161,32 +159,30 @@ function updateComponentInData(data, componentId, propsToMerge) {
161
159
  ...item,
162
160
  props: {
163
161
  ...item.props,
164
- content: updateInArray(item.props.content),
165
- },
162
+ content: updateInArray(item.props.content)
163
+ }
166
164
  };
167
165
  }
168
166
  return item;
169
167
  });
170
168
  };
171
- const updatedContent = data.content
172
- ? updateInArray(data.content)
173
- : [];
169
+ const updatedContent = data.content ? updateInArray(data.content) : [];
174
170
  const updatedZones = {};
175
171
  if (data.zones) {
176
- for (const [zoneName, zoneContent] of Object.entries(data.zones)) {
172
+ for (const [zoneName, zoneContent] of Object.entries(data.zones)){
177
173
  updatedZones[zoneName] = updateInArray(zoneContent);
178
174
  }
179
175
  }
180
176
  return {
181
177
  ...data,
182
178
  content: updatedContent,
183
- zones: updatedZones,
179
+ zones: updatedZones
184
180
  };
185
181
  }
186
182
  // =============================================================================
187
183
  // TemplateField Component
188
184
  // =============================================================================
189
- function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, apiEndpoint = '/api/puck-templates', }) {
185
+ function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, apiEndpoint = '/api/puck-templates' }) {
190
186
  const [templates, setTemplates] = useState([]);
191
187
  const [loading, setLoading] = useState(false);
192
188
  const [loadingTemplate, setLoadingTemplate] = useState(false);
@@ -197,58 +193,57 @@ function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, api
197
193
  description: '',
198
194
  category: '',
199
195
  saving: false,
200
- error: null,
196
+ error: null
201
197
  });
202
198
  // Puck state access
203
- const appState = usePuck((s) => s.appState);
204
- const dispatch = usePuck((s) => s.dispatch);
205
- const selectedItem = usePuck((s) => s.selectedItem);
206
- const getSelectorForId = usePuck((s) => s.getSelectorForId);
207
- const getItemById = usePuck((s) => s.getItemById);
199
+ const appState = usePuck((s)=>s.appState);
200
+ const dispatch = usePuck((s)=>s.dispatch);
201
+ const selectedItem = usePuck((s)=>s.selectedItem);
202
+ const getSelectorForId = usePuck((s)=>s.getSelectorForId);
203
+ const getItemById = usePuck((s)=>s.getItemById);
208
204
  // Get current component ID
209
205
  const componentId = selectedItem?.props?.id;
210
206
  // Fetch templates from Payload API
211
- const fetchTemplates = useCallback(async () => {
207
+ const fetchTemplates = useCallback(async ()=>{
212
208
  setLoading(true);
213
209
  setError(null);
214
210
  try {
215
211
  const params = new URLSearchParams({
216
212
  limit: '100',
217
- sort: '-updatedAt',
213
+ sort: '-updatedAt'
218
214
  });
219
215
  const response = await fetch(`${apiEndpoint}?${params}`);
220
- if (!response.ok)
221
- throw new Error('Failed to fetch templates');
216
+ if (!response.ok) throw new Error('Failed to fetch templates');
222
217
  const data = await response.json();
223
- const items = (data.docs || []).map((doc) => ({
224
- id: doc.id,
225
- name: doc.name,
226
- description: doc.description,
227
- category: doc.category,
228
- content: doc.content,
229
- updatedAt: doc.updatedAt,
230
- }));
218
+ const items = (data.docs || []).map((doc)=>({
219
+ id: doc.id,
220
+ name: doc.name,
221
+ description: doc.description,
222
+ category: doc.category,
223
+ content: doc.content,
224
+ updatedAt: doc.updatedAt
225
+ }));
231
226
  setTemplates(items);
232
- }
233
- catch (err) {
227
+ } catch (err) {
234
228
  console.error('Error fetching templates:', err);
235
229
  setError('Failed to load templates');
236
- }
237
- finally {
230
+ } finally{
238
231
  setLoading(false);
239
232
  }
240
- }, [apiEndpoint]);
233
+ }, [
234
+ apiEndpoint
235
+ ]);
241
236
  // Load templates on mount
242
- useEffect(() => {
237
+ useEffect(()=>{
243
238
  fetchTemplates();
244
- }, [fetchTemplates]);
239
+ }, [
240
+ fetchTemplates
241
+ ]);
245
242
  // Handle template selection
246
- const handleTemplateSelect = useCallback(async (templateId) => {
247
- if (!componentId || !selectedItem)
248
- return;
249
- const template = templates.find((t) => String(t.id) === String(templateId));
250
- if (!template)
251
- return;
243
+ const handleTemplateSelect = useCallback(async (templateId)=>{
244
+ if (!componentId || !selectedItem) return;
245
+ const template = templates.find((t)=>String(t.id) === String(templateId));
246
+ if (!template) return;
252
247
  setLoadingTemplate(true);
253
248
  try {
254
249
  const selector = getSelectorForId(componentId);
@@ -262,64 +257,77 @@ function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, api
262
257
  props: {
263
258
  ...selectedItem.props,
264
259
  content: template.content,
265
- templateId: templateId,
266
- },
267
- },
260
+ templateId: templateId
261
+ }
262
+ }
263
+ });
264
+ } else {
265
+ const updatedData = updateComponentInData(appState.data, componentId, {
266
+ content: template.content,
267
+ templateId: templateId
268
268
  });
269
- }
270
- else {
271
- const updatedData = updateComponentInData(appState.data, componentId, { content: template.content, templateId: templateId });
272
269
  dispatch({
273
270
  type: 'setData',
274
- data: updatedData,
271
+ data: updatedData
275
272
  });
276
273
  }
277
274
  onChange(templateId);
278
- }
279
- catch (err) {
275
+ } catch (err) {
280
276
  console.error('Error loading template:', err);
281
277
  setError('Failed to load template');
282
- }
283
- finally {
278
+ } finally{
284
279
  setLoadingTemplate(false);
285
280
  }
286
- }, [componentId, selectedItem, templates, getSelectorForId, appState.data, dispatch, onChange]);
281
+ }, [
282
+ componentId,
283
+ selectedItem,
284
+ templates,
285
+ getSelectorForId,
286
+ appState.data,
287
+ dispatch,
288
+ onChange
289
+ ]);
287
290
  // Handle clearing template selection
288
- const handleClearTemplate = useCallback(() => {
291
+ const handleClearTemplate = useCallback(()=>{
289
292
  onChange(null);
290
- }, [onChange]);
293
+ }, [
294
+ onChange
295
+ ]);
291
296
  // Toggle save form
292
- const handleToggleSaveForm = useCallback(() => {
293
- setSaveForm((prev) => ({
294
- ...prev,
295
- expanded: !prev.expanded,
296
- error: null,
297
- }));
297
+ const handleToggleSaveForm = useCallback(()=>{
298
+ setSaveForm((prev)=>({
299
+ ...prev,
300
+ expanded: !prev.expanded,
301
+ error: null
302
+ }));
298
303
  }, []);
299
304
  // Close save form
300
- const handleCloseSaveForm = useCallback(() => {
305
+ const handleCloseSaveForm = useCallback(()=>{
301
306
  setSaveForm({
302
307
  expanded: false,
303
308
  name: '',
304
309
  description: '',
305
310
  category: '',
306
311
  saving: false,
307
- error: null,
312
+ error: null
308
313
  });
309
314
  }, []);
310
315
  // Save current slot content as a new template
311
- const handleSaveTemplate = useCallback(async () => {
312
- if (!componentId)
313
- return;
316
+ const handleSaveTemplate = useCallback(async ()=>{
317
+ if (!componentId) return;
314
318
  const name = saveForm.name.trim();
315
319
  if (!name) {
316
- setSaveForm((prev) => ({
317
- ...prev,
318
- error: 'Please enter a template name',
319
- }));
320
+ setSaveForm((prev)=>({
321
+ ...prev,
322
+ error: 'Please enter a template name'
323
+ }));
320
324
  return;
321
325
  }
322
- setSaveForm((prev) => ({ ...prev, saving: true, error: null }));
326
+ setSaveForm((prev)=>({
327
+ ...prev,
328
+ saving: true,
329
+ error: null
330
+ }));
323
331
  try {
324
332
  // Use Puck's official getItemById API instead of manual tree traversal
325
333
  const component = getItemById(componentId);
@@ -330,17 +338,17 @@ function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, api
330
338
  const response = await fetch(apiEndpoint, {
331
339
  method: 'POST',
332
340
  headers: {
333
- 'Content-Type': 'application/json',
341
+ 'Content-Type': 'application/json'
334
342
  },
335
343
  body: JSON.stringify({
336
344
  name,
337
345
  description: saveForm.description.trim() || undefined,
338
346
  category: saveForm.category.trim() || undefined,
339
- content,
340
- }),
347
+ content
348
+ })
341
349
  });
342
350
  if (!response.ok) {
343
- const errorData = await response.json().catch(() => ({}));
351
+ const errorData = await response.json().catch(()=>({}));
344
352
  throw new Error(errorData.message || errorData.errors?.[0]?.message || 'Failed to save template');
345
353
  }
346
354
  const data = await response.json();
@@ -351,25 +359,34 @@ function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, api
351
359
  description: doc.description,
352
360
  category: doc.category,
353
361
  content: doc.content,
354
- updatedAt: doc.updatedAt,
362
+ updatedAt: doc.updatedAt
355
363
  };
356
- setTemplates((prev) => [newTemplate, ...prev]);
364
+ setTemplates((prev)=>[
365
+ newTemplate,
366
+ ...prev
367
+ ]);
357
368
  handleCloseSaveForm();
358
- setTimeout(() => {
369
+ setTimeout(()=>{
359
370
  onChange(newTemplate.id);
360
371
  }, 50);
361
- }
362
- catch (err) {
372
+ } catch (err) {
363
373
  console.error('Error saving template:', err);
364
- setSaveForm((prev) => ({
365
- ...prev,
366
- saving: false,
367
- error: err instanceof Error ? err.message : 'Failed to save template',
368
- }));
374
+ setSaveForm((prev)=>({
375
+ ...prev,
376
+ saving: false,
377
+ error: err instanceof Error ? err.message : 'Failed to save template'
378
+ }));
369
379
  }
370
- }, [componentId, getItemById, apiEndpoint, saveForm, onChange, handleCloseSaveForm]);
380
+ }, [
381
+ componentId,
382
+ getItemById,
383
+ apiEndpoint,
384
+ saveForm,
385
+ onChange,
386
+ handleCloseSaveForm
387
+ ]);
371
388
  // Group templates by category
372
- const categorizedTemplates = templates.reduce((acc, template) => {
389
+ const categorizedTemplates = templates.reduce((acc, template)=>{
373
390
  const category = template.category || 'Uncategorized';
374
391
  if (!acc[category]) {
375
392
  acc[category] = [];
@@ -377,31 +394,256 @@ function TemplateFieldInner({ value, onChange, label = 'Template', readOnly, api
377
394
  acc[category].push(template);
378
395
  return acc;
379
396
  }, {});
380
- return (_jsxs("div", { className: "puck-field", style: styles.container, children: [label && (_jsx("label", { style: styles.label, children: label })), _jsxs("div", { style: styles.selectRow, children: [_jsxs("select", { value: value || '', onChange: (e) => e.target.value && handleTemplateSelect(e.target.value), disabled: readOnly || loading || loadingTemplate, style: styles.select, children: [_jsx("option", { value: "", children: loading ? 'Loading...' : loadingTemplate ? 'Loading template...' : 'Select a template' }), Object.entries(categorizedTemplates).map(([category, items]) => (_jsx("optgroup", { label: category, children: items.map((template) => (_jsx("option", { value: template.id, children: template.name }, template.id))) }, category)))] }), value && !readOnly && (_jsx("button", { type: "button", onClick: handleClearTemplate, style: styles.clearButton, title: "Clear selection", children: _jsx(X, { style: { width: '16px', height: '16px' } }) }))] }), !readOnly && (_jsxs("div", { style: styles.buttonRow, children: [_jsxs("button", { type: "button", onClick: handleToggleSaveForm, disabled: loading || saveForm.saving, style: {
397
+ return /*#__PURE__*/ _jsxs("div", {
398
+ className: "puck-field",
399
+ style: styles.container,
400
+ children: [
401
+ label && /*#__PURE__*/ _jsx("label", {
402
+ style: styles.label,
403
+ children: label
404
+ }),
405
+ /*#__PURE__*/ _jsxs("div", {
406
+ style: styles.selectRow,
407
+ children: [
408
+ /*#__PURE__*/ _jsxs("select", {
409
+ value: value || '',
410
+ onChange: (e)=>e.target.value && handleTemplateSelect(e.target.value),
411
+ disabled: readOnly || loading || loadingTemplate,
412
+ style: styles.select,
413
+ children: [
414
+ /*#__PURE__*/ _jsx("option", {
415
+ value: "",
416
+ children: loading ? 'Loading...' : loadingTemplate ? 'Loading template...' : 'Select a template'
417
+ }),
418
+ Object.entries(categorizedTemplates).map(([category, items])=>/*#__PURE__*/ _jsx("optgroup", {
419
+ label: category,
420
+ children: items.map((template)=>/*#__PURE__*/ _jsx("option", {
421
+ value: template.id,
422
+ children: template.name
423
+ }, template.id))
424
+ }, category))
425
+ ]
426
+ }),
427
+ value && !readOnly && /*#__PURE__*/ _jsx("button", {
428
+ type: "button",
429
+ onClick: handleClearTemplate,
430
+ style: styles.clearButton,
431
+ title: "Clear selection",
432
+ children: /*#__PURE__*/ _jsx(X, {
433
+ style: {
434
+ width: '16px',
435
+ height: '16px'
436
+ }
437
+ })
438
+ })
439
+ ]
440
+ }),
441
+ !readOnly && /*#__PURE__*/ _jsxs("div", {
442
+ style: styles.buttonRow,
443
+ children: [
444
+ /*#__PURE__*/ _jsxs("button", {
445
+ type: "button",
446
+ onClick: handleToggleSaveForm,
447
+ disabled: loading || saveForm.saving,
448
+ style: {
381
449
  ...styles.button,
382
- ...(loading || saveForm.saving ? styles.buttonDisabled : {}),
383
- }, children: [saveForm.expanded ? (_jsx(ChevronUp, { style: { width: '16px', height: '16px' } })) : (_jsx(Save, { style: { width: '16px', height: '16px' } })), saveForm.expanded ? 'Cancel' : 'Save as Template'] }), value && (_jsxs("button", { type: "button", onClick: () => handleTemplateSelect(value), disabled: loadingTemplate, style: {
450
+ ...loading || saveForm.saving ? styles.buttonDisabled : {}
451
+ },
452
+ children: [
453
+ saveForm.expanded ? /*#__PURE__*/ _jsx(ChevronUp, {
454
+ style: {
455
+ width: '16px',
456
+ height: '16px'
457
+ }
458
+ }) : /*#__PURE__*/ _jsx(Save, {
459
+ style: {
460
+ width: '16px',
461
+ height: '16px'
462
+ }
463
+ }),
464
+ saveForm.expanded ? 'Cancel' : 'Save as Template'
465
+ ]
466
+ }),
467
+ value && /*#__PURE__*/ _jsxs("button", {
468
+ type: "button",
469
+ onClick: ()=>handleTemplateSelect(value),
470
+ disabled: loadingTemplate,
471
+ style: {
384
472
  ...styles.button,
385
473
  flex: 'none',
386
- ...(loadingTemplate ? styles.buttonDisabled : {}),
387
- }, children: [loadingTemplate ? (_jsx(Loader2, { style: { width: '16px', height: '16px', animation: 'spin 1s linear infinite' } })) : (_jsx(Download, { style: { width: '16px', height: '16px' } })), "Reload"] }))] })), saveForm.expanded && (_jsxs("div", { style: styles.saveForm, children: [_jsxs("div", { style: styles.inputGroup, children: [_jsx("label", { htmlFor: "template-name", style: styles.inputLabel, children: "Template Name *" }), _jsx("input", { id: "template-name", placeholder: "e.g., Hero Section with CTA", value: saveForm.name, onChange: (e) => setSaveForm((prev) => ({ ...prev, name: e.target.value })), disabled: saveForm.saving, style: styles.input })] }), _jsxs("div", { style: styles.inputGroup, children: [_jsx("label", { htmlFor: "template-description", style: styles.inputLabel, children: "Description" }), _jsx("input", { id: "template-description", placeholder: "Optional description...", value: saveForm.description, onChange: (e) => setSaveForm((prev) => ({ ...prev, description: e.target.value })), disabled: saveForm.saving, style: styles.input })] }), _jsxs("div", { style: styles.inputGroup, children: [_jsx("label", { htmlFor: "template-category", style: styles.inputLabel, children: "Category" }), _jsx("input", { id: "template-category", placeholder: "e.g., Hero, Footer, CTA", value: saveForm.category, onChange: (e) => setSaveForm((prev) => ({ ...prev, category: e.target.value })), disabled: saveForm.saving, style: styles.input })] }), saveForm.error && (_jsxs("div", { style: styles.errorBox, children: [_jsx(AlertCircle, { style: { width: '14px', height: '14px', flexShrink: 0, marginTop: '2px' } }), _jsx("span", { children: saveForm.error })] })), _jsx("button", { type: "button", onClick: handleSaveTemplate, disabled: saveForm.saving, style: {
474
+ ...loadingTemplate ? styles.buttonDisabled : {}
475
+ },
476
+ children: [
477
+ loadingTemplate ? /*#__PURE__*/ _jsx(Loader2, {
478
+ style: {
479
+ width: '16px',
480
+ height: '16px',
481
+ animation: 'spin 1s linear infinite'
482
+ }
483
+ }) : /*#__PURE__*/ _jsx(Download, {
484
+ style: {
485
+ width: '16px',
486
+ height: '16px'
487
+ }
488
+ }),
489
+ "Reload"
490
+ ]
491
+ })
492
+ ]
493
+ }),
494
+ saveForm.expanded && /*#__PURE__*/ _jsxs("div", {
495
+ style: styles.saveForm,
496
+ children: [
497
+ /*#__PURE__*/ _jsxs("div", {
498
+ style: styles.inputGroup,
499
+ children: [
500
+ /*#__PURE__*/ _jsx("label", {
501
+ htmlFor: "template-name",
502
+ style: styles.inputLabel,
503
+ children: "Template Name *"
504
+ }),
505
+ /*#__PURE__*/ _jsx("input", {
506
+ id: "template-name",
507
+ placeholder: "e.g., Hero Section with CTA",
508
+ value: saveForm.name,
509
+ onChange: (e)=>setSaveForm((prev)=>({
510
+ ...prev,
511
+ name: e.target.value
512
+ })),
513
+ disabled: saveForm.saving,
514
+ style: styles.input
515
+ })
516
+ ]
517
+ }),
518
+ /*#__PURE__*/ _jsxs("div", {
519
+ style: styles.inputGroup,
520
+ children: [
521
+ /*#__PURE__*/ _jsx("label", {
522
+ htmlFor: "template-description",
523
+ style: styles.inputLabel,
524
+ children: "Description"
525
+ }),
526
+ /*#__PURE__*/ _jsx("input", {
527
+ id: "template-description",
528
+ placeholder: "Optional description...",
529
+ value: saveForm.description,
530
+ onChange: (e)=>setSaveForm((prev)=>({
531
+ ...prev,
532
+ description: e.target.value
533
+ })),
534
+ disabled: saveForm.saving,
535
+ style: styles.input
536
+ })
537
+ ]
538
+ }),
539
+ /*#__PURE__*/ _jsxs("div", {
540
+ style: styles.inputGroup,
541
+ children: [
542
+ /*#__PURE__*/ _jsx("label", {
543
+ htmlFor: "template-category",
544
+ style: styles.inputLabel,
545
+ children: "Category"
546
+ }),
547
+ /*#__PURE__*/ _jsx("input", {
548
+ id: "template-category",
549
+ placeholder: "e.g., Hero, Footer, CTA",
550
+ value: saveForm.category,
551
+ onChange: (e)=>setSaveForm((prev)=>({
552
+ ...prev,
553
+ category: e.target.value
554
+ })),
555
+ disabled: saveForm.saving,
556
+ style: styles.input
557
+ })
558
+ ]
559
+ }),
560
+ saveForm.error && /*#__PURE__*/ _jsxs("div", {
561
+ style: styles.errorBox,
562
+ children: [
563
+ /*#__PURE__*/ _jsx(AlertCircle, {
564
+ style: {
565
+ width: '14px',
566
+ height: '14px',
567
+ flexShrink: 0,
568
+ marginTop: '2px'
569
+ }
570
+ }),
571
+ /*#__PURE__*/ _jsx("span", {
572
+ children: saveForm.error
573
+ })
574
+ ]
575
+ }),
576
+ /*#__PURE__*/ _jsx("button", {
577
+ type: "button",
578
+ onClick: handleSaveTemplate,
579
+ disabled: saveForm.saving,
580
+ style: {
388
581
  ...styles.submitButton,
389
- ...(saveForm.saving ? styles.buttonDisabled : {}),
390
- }, children: saveForm.saving ? (_jsxs(_Fragment, { children: [_jsx(Loader2, { style: { width: '16px', height: '16px', animation: 'spin 1s linear infinite' } }), "Saving..."] })) : (_jsxs(_Fragment, { children: [_jsx(Save, { style: { width: '16px', height: '16px' } }), "Save Template"] })) })] })), error && (_jsxs("div", { style: styles.errorBox, children: [_jsx(AlertCircle, { style: { width: '16px', height: '16px', flexShrink: 0, marginTop: '2px' } }), _jsx("span", { children: error })] }))] }));
582
+ ...saveForm.saving ? styles.buttonDisabled : {}
583
+ },
584
+ children: saveForm.saving ? /*#__PURE__*/ _jsxs(_Fragment, {
585
+ children: [
586
+ /*#__PURE__*/ _jsx(Loader2, {
587
+ style: {
588
+ width: '16px',
589
+ height: '16px',
590
+ animation: 'spin 1s linear infinite'
591
+ }
592
+ }),
593
+ "Saving..."
594
+ ]
595
+ }) : /*#__PURE__*/ _jsxs(_Fragment, {
596
+ children: [
597
+ /*#__PURE__*/ _jsx(Save, {
598
+ style: {
599
+ width: '16px',
600
+ height: '16px'
601
+ }
602
+ }),
603
+ "Save Template"
604
+ ]
605
+ })
606
+ })
607
+ ]
608
+ }),
609
+ error && /*#__PURE__*/ _jsxs("div", {
610
+ style: styles.errorBox,
611
+ children: [
612
+ /*#__PURE__*/ _jsx(AlertCircle, {
613
+ style: {
614
+ width: '16px',
615
+ height: '16px',
616
+ flexShrink: 0,
617
+ marginTop: '2px'
618
+ }
619
+ }),
620
+ /*#__PURE__*/ _jsx("span", {
621
+ children: error
622
+ })
623
+ ]
624
+ })
625
+ ]
626
+ });
391
627
  }
392
628
  // Memoize to prevent unnecessary re-renders
393
- export const TemplateField = memo(TemplateFieldInner);
629
+ export const TemplateField = /*#__PURE__*/ memo(TemplateFieldInner);
394
630
  // =============================================================================
395
631
  // Field Configuration Factory
396
632
  // =============================================================================
397
633
  /**
398
634
  * Creates a Puck field configuration for template selection
399
- */
400
- export function createTemplateField(config) {
635
+ */ export function createTemplateField(config) {
401
636
  return {
402
637
  type: 'custom',
403
638
  label: config.label,
404
- render: ({ value, onChange, readOnly }) => (_jsx(TemplateField, { value: value, onChange: onChange, label: config.label, readOnly: readOnly, apiEndpoint: config.apiEndpoint })),
639
+ render: ({ value, onChange, readOnly })=>/*#__PURE__*/ _jsx(TemplateField, {
640
+ value: value,
641
+ onChange: onChange,
642
+ label: config.label,
643
+ readOnly: readOnly,
644
+ apiEndpoint: config.apiEndpoint
645
+ })
405
646
  };
406
647
  }
648
+
407
649
  //# sourceMappingURL=TemplateField.js.map