@delmaredigital/payload-puck 0.6.12 → 0.6.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (583) hide show
  1. package/README.md +50 -1
  2. package/dist/admin/EditWithPuckButton.d.ts +1 -1
  3. package/dist/admin/EditWithPuckButton.d.ts.map +1 -1
  4. package/dist/admin/EditWithPuckButton.js +65 -25
  5. package/dist/admin/EditWithPuckButton.js.map +1 -1
  6. package/dist/admin/EditWithPuckCell.js +43 -13
  7. package/dist/admin/EditWithPuckCell.js.map +1 -1
  8. package/dist/admin/PuckEditorView.d.ts +1 -1
  9. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  10. package/dist/admin/PuckEditorView.js +118 -32
  11. package/dist/admin/PuckEditorView.js.map +1 -1
  12. package/dist/admin/client.d.ts +2 -2
  13. package/dist/admin/client.d.ts.map +1 -1
  14. package/dist/admin/client.js +4 -4
  15. package/dist/admin/client.js.map +1 -1
  16. package/dist/admin/generateAdminComponents.js +7 -7
  17. package/dist/admin/generateAdminComponents.js.map +1 -1
  18. package/dist/admin/index.d.ts +5 -5
  19. package/dist/admin/index.d.ts.map +1 -1
  20. package/dist/admin/index.js +3 -2
  21. package/dist/admin/index.js.map +1 -1
  22. package/dist/ai/collections/AiContext.js +56 -29
  23. package/dist/ai/collections/AiContext.js.map +1 -1
  24. package/dist/ai/collections/AiPrompts.js +24 -19
  25. package/dist/ai/collections/AiPrompts.js.map +1 -1
  26. package/dist/ai/createAiApiRoutes.js +28 -19
  27. package/dist/ai/createAiApiRoutes.js.map +1 -1
  28. package/dist/ai/createAiGenerate.js +7 -8
  29. package/dist/ai/createAiGenerate.js.map +1 -1
  30. package/dist/ai/createAiPlugin.js +7 -9
  31. package/dist/ai/createAiPlugin.js.map +1 -1
  32. package/dist/ai/hooks/useAiContext.js +50 -39
  33. package/dist/ai/hooks/useAiContext.js.map +1 -1
  34. package/dist/ai/hooks/useAiPrompts.js +33 -25
  35. package/dist/ai/hooks/useAiPrompts.js.map +1 -1
  36. package/dist/ai/index.js +9 -10
  37. package/dist/ai/index.js.map +1 -1
  38. package/dist/ai/plugins/ContextEditorPanel.d.ts +1 -1
  39. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -1
  40. package/dist/ai/plugins/ContextEditorPanel.js +399 -107
  41. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -1
  42. package/dist/ai/plugins/PromptEditorPanel.d.ts +1 -1
  43. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -1
  44. package/dist/ai/plugins/PromptEditorPanel.js +237 -51
  45. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -1
  46. package/dist/ai/plugins/contextEditorPlugin.js +12 -5
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -1
  48. package/dist/ai/plugins/promptApiRoutes.js +119 -50
  49. package/dist/ai/plugins/promptApiRoutes.js.map +1 -1
  50. package/dist/ai/plugins/promptEditorPlugin.js +12 -5
  51. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -1
  52. package/dist/ai/presets/componentAiDefaults.js +108 -83
  53. package/dist/ai/presets/componentAiDefaults.js.map +1 -1
  54. package/dist/ai/presets/index.js +12 -18
  55. package/dist/ai/presets/index.js.map +1 -1
  56. package/dist/ai/presets/instructions/interactive.js +85 -75
  57. package/dist/ai/presets/instructions/interactive.js.map +1 -1
  58. package/dist/ai/presets/instructions/layout.js +122 -117
  59. package/dist/ai/presets/instructions/layout.js.map +1 -1
  60. package/dist/ai/presets/instructions/media.js +31 -29
  61. package/dist/ai/presets/instructions/media.js.map +1 -1
  62. package/dist/ai/presets/instructions/pagePatterns.js +4 -6
  63. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -1
  64. package/dist/ai/presets/instructions/schemas.js +495 -137
  65. package/dist/ai/presets/instructions/schemas.js.map +1 -1
  66. package/dist/ai/presets/instructions/typography.js +38 -33
  67. package/dist/ai/presets/instructions/typography.js.map +1 -1
  68. package/dist/ai/tools/index.js +92 -55
  69. package/dist/ai/tools/index.js.map +1 -1
  70. package/dist/ai/types.js +7 -1
  71. package/dist/ai/types.js.map +1 -1
  72. package/dist/ai/utils/injectAiConfig.js +33 -40
  73. package/dist/ai/utils/injectAiConfig.js.map +1 -1
  74. package/dist/api/createPuckApiRoutes.d.ts +1 -1
  75. package/dist/api/createPuckApiRoutes.d.ts.map +1 -1
  76. package/dist/api/createPuckApiRoutes.js +123 -65
  77. package/dist/api/createPuckApiRoutes.js.map +1 -1
  78. package/dist/api/createPuckApiRoutesVersions.d.ts +1 -1
  79. package/dist/api/createPuckApiRoutesVersions.d.ts.map +1 -1
  80. package/dist/api/createPuckApiRoutesVersions.js +88 -37
  81. package/dist/api/createPuckApiRoutesVersions.js.map +1 -1
  82. package/dist/api/createPuckApiRoutesWithId.d.ts +1 -1
  83. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  84. package/dist/api/createPuckApiRoutesWithId.js +166 -72
  85. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  86. package/dist/api/index.d.ts +5 -5
  87. package/dist/api/index.d.ts.map +1 -1
  88. package/dist/api/index.js +6 -6
  89. package/dist/api/index.js.map +1 -1
  90. package/dist/api/payload-config.d.js +15 -0
  91. package/dist/api/payload-config.d.js.map +1 -0
  92. package/dist/api/types.js +4 -1
  93. package/dist/api/types.js.map +1 -1
  94. package/dist/api/utils/mapRootProps.d.ts +1 -1
  95. package/dist/api/utils/mapRootProps.d.ts.map +1 -1
  96. package/dist/api/utils/mapRootProps.js +77 -44
  97. package/dist/api/utils/mapRootProps.js.map +1 -1
  98. package/dist/collections/Templates.js +24 -20
  99. package/dist/collections/Templates.js.map +1 -1
  100. package/dist/components/AccordionClient.d.ts +2 -2
  101. package/dist/components/AccordionClient.d.ts.map +1 -1
  102. package/dist/components/AccordionClient.js +81 -22
  103. package/dist/components/AccordionClient.js.map +1 -1
  104. package/dist/components/AnimatedWrapper.d.ts +2 -2
  105. package/dist/components/AnimatedWrapper.d.ts.map +1 -1
  106. package/dist/components/AnimatedWrapper.js +31 -16
  107. package/dist/components/AnimatedWrapper.js.map +1 -1
  108. package/dist/components/exports.js +2 -2
  109. package/dist/components/exports.js.map +1 -1
  110. package/dist/components/index.d.ts +5 -5
  111. package/dist/components/index.d.ts.map +1 -1
  112. package/dist/components/index.js +7 -7
  113. package/dist/components/index.js.map +1 -1
  114. package/dist/components/interactive/Accordion.d.ts +1 -1
  115. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  116. package/dist/components/interactive/Accordion.js +149 -55
  117. package/dist/components/interactive/Accordion.js.map +1 -1
  118. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  119. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  120. package/dist/components/interactive/Accordion.server.js +25 -7
  121. package/dist/components/interactive/Accordion.server.js.map +1 -1
  122. package/dist/components/interactive/Button.d.ts +3 -3
  123. package/dist/components/interactive/Button.d.ts.map +1 -1
  124. package/dist/components/interactive/Button.js +89 -43
  125. package/dist/components/interactive/Button.js.map +1 -1
  126. package/dist/components/interactive/Button.server.d.ts +2 -2
  127. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  128. package/dist/components/interactive/Button.server.js +40 -20
  129. package/dist/components/interactive/Button.server.js.map +1 -1
  130. package/dist/components/interactive/Card.d.ts +3 -3
  131. package/dist/components/interactive/Card.d.ts.map +1 -1
  132. package/dist/components/interactive/Card.js +131 -39
  133. package/dist/components/interactive/Card.js.map +1 -1
  134. package/dist/components/interactive/Card.server.d.ts +3 -3
  135. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  136. package/dist/components/interactive/Card.server.js +72 -11
  137. package/dist/components/interactive/Card.server.js.map +1 -1
  138. package/dist/components/interactive/Divider.d.ts +1 -1
  139. package/dist/components/interactive/Divider.d.ts.map +1 -1
  140. package/dist/components/interactive/Divider.js +54 -26
  141. package/dist/components/interactive/Divider.js.map +1 -1
  142. package/dist/components/interactive/Divider.server.d.ts +1 -1
  143. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  144. package/dist/components/interactive/Divider.server.js +28 -12
  145. package/dist/components/interactive/Divider.server.js.map +1 -1
  146. package/dist/components/interactive/index.d.ts +4 -4
  147. package/dist/components/interactive/index.d.ts.map +1 -1
  148. package/dist/components/interactive/index.js +5 -5
  149. package/dist/components/interactive/index.js.map +1 -1
  150. package/dist/components/layout/Container.d.ts +1 -1
  151. package/dist/components/layout/Container.d.ts.map +1 -1
  152. package/dist/components/layout/Container.js +101 -47
  153. package/dist/components/layout/Container.js.map +1 -1
  154. package/dist/components/layout/Container.server.d.ts +1 -1
  155. package/dist/components/layout/Container.server.d.ts.map +1 -1
  156. package/dist/components/layout/Container.server.js +67 -19
  157. package/dist/components/layout/Container.server.js.map +1 -1
  158. package/dist/components/layout/Flex.d.ts +2 -2
  159. package/dist/components/layout/Flex.d.ts.map +1 -1
  160. package/dist/components/layout/Flex.js +124 -55
  161. package/dist/components/layout/Flex.js.map +1 -1
  162. package/dist/components/layout/Flex.server.d.ts +1 -1
  163. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  164. package/dist/components/layout/Flex.server.js +50 -14
  165. package/dist/components/layout/Flex.server.js.map +1 -1
  166. package/dist/components/layout/Grid.d.ts +1 -1
  167. package/dist/components/layout/Grid.d.ts.map +1 -1
  168. package/dist/components/layout/Grid.js +93 -44
  169. package/dist/components/layout/Grid.js.map +1 -1
  170. package/dist/components/layout/Grid.server.d.ts +1 -1
  171. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  172. package/dist/components/layout/Grid.server.js +56 -14
  173. package/dist/components/layout/Grid.server.js.map +1 -1
  174. package/dist/components/layout/Section.d.ts +1 -1
  175. package/dist/components/layout/Section.d.ts.map +1 -1
  176. package/dist/components/layout/Section.js +147 -64
  177. package/dist/components/layout/Section.js.map +1 -1
  178. package/dist/components/layout/Section.server.d.ts +1 -1
  179. package/dist/components/layout/Section.server.d.ts.map +1 -1
  180. package/dist/components/layout/Section.server.js +92 -28
  181. package/dist/components/layout/Section.server.js.map +1 -1
  182. package/dist/components/layout/Spacer.d.ts +1 -1
  183. package/dist/components/layout/Spacer.d.ts.map +1 -1
  184. package/dist/components/layout/Spacer.js +80 -30
  185. package/dist/components/layout/Spacer.js.map +1 -1
  186. package/dist/components/layout/Spacer.server.d.ts +1 -1
  187. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  188. package/dist/components/layout/Spacer.server.js +31 -9
  189. package/dist/components/layout/Spacer.server.js.map +1 -1
  190. package/dist/components/layout/Template.d.ts +1 -1
  191. package/dist/components/layout/Template.d.ts.map +1 -1
  192. package/dist/components/layout/Template.js +58 -30
  193. package/dist/components/layout/Template.js.map +1 -1
  194. package/dist/components/layout/Template.server.d.ts +1 -1
  195. package/dist/components/layout/Template.server.d.ts.map +1 -1
  196. package/dist/components/layout/Template.server.js +43 -11
  197. package/dist/components/layout/Template.server.js.map +1 -1
  198. package/dist/components/layout/index.d.ts +8 -8
  199. package/dist/components/layout/index.d.ts.map +1 -1
  200. package/dist/components/layout/index.js +8 -8
  201. package/dist/components/layout/index.js.map +1 -1
  202. package/dist/components/media/Image.d.ts +3 -3
  203. package/dist/components/media/Image.d.ts.map +1 -1
  204. package/dist/components/media/Image.js +122 -39
  205. package/dist/components/media/Image.js.map +1 -1
  206. package/dist/components/media/Image.server.d.ts +3 -3
  207. package/dist/components/media/Image.server.d.ts.map +1 -1
  208. package/dist/components/media/Image.server.js +76 -13
  209. package/dist/components/media/Image.server.js.map +1 -1
  210. package/dist/components/media/index.d.ts +1 -1
  211. package/dist/components/media/index.d.ts.map +1 -1
  212. package/dist/components/media/index.js +2 -2
  213. package/dist/components/media/index.js.map +1 -1
  214. package/dist/components/typography/Heading.d.ts +2 -2
  215. package/dist/components/typography/Heading.d.ts.map +1 -1
  216. package/dist/components/typography/Heading.js +45 -25
  217. package/dist/components/typography/Heading.js.map +1 -1
  218. package/dist/components/typography/Heading.server.d.ts +2 -2
  219. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  220. package/dist/components/typography/Heading.server.js +16 -10
  221. package/dist/components/typography/Heading.server.js.map +1 -1
  222. package/dist/components/typography/RichText.editor.d.ts +1 -1
  223. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  224. package/dist/components/typography/RichText.editor.js +44 -19
  225. package/dist/components/typography/RichText.editor.js.map +1 -1
  226. package/dist/components/typography/RichText.server.d.ts +2 -2
  227. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  228. package/dist/components/typography/RichText.server.js +33 -14
  229. package/dist/components/typography/RichText.server.js.map +1 -1
  230. package/dist/components/typography/Text.d.ts +2 -2
  231. package/dist/components/typography/Text.d.ts.map +1 -1
  232. package/dist/components/typography/Text.js +49 -23
  233. package/dist/components/typography/Text.js.map +1 -1
  234. package/dist/components/typography/Text.server.d.ts +2 -2
  235. package/dist/components/typography/Text.server.d.ts.map +1 -1
  236. package/dist/components/typography/Text.server.js +21 -8
  237. package/dist/components/typography/Text.server.js.map +1 -1
  238. package/dist/components/typography/index.d.ts +4 -4
  239. package/dist/components/typography/index.d.ts.map +1 -1
  240. package/dist/components/typography/index.js +5 -5
  241. package/dist/components/typography/index.js.map +1 -1
  242. package/dist/config/config.editor.d.ts +3 -3
  243. package/dist/config/config.editor.d.ts.map +1 -1
  244. package/dist/config/config.editor.js +119 -54
  245. package/dist/config/config.editor.js.map +1 -1
  246. package/dist/config/index.d.ts +4 -4
  247. package/dist/config/index.d.ts.map +1 -1
  248. package/dist/config/index.js +62 -35
  249. package/dist/config/index.js.map +1 -1
  250. package/dist/config/merge.d.ts +1 -1
  251. package/dist/config/merge.d.ts.map +1 -1
  252. package/dist/config/merge.js +23 -26
  253. package/dist/config/merge.js.map +1 -1
  254. package/dist/config/presets.d.ts +4 -4
  255. package/dist/config/presets.js +195 -75
  256. package/dist/config/presets.js.map +1 -1
  257. package/dist/config/types.js +6 -2
  258. package/dist/config/types.js.map +1 -1
  259. package/dist/editor/PuckEditor.d.ts +4 -4
  260. package/dist/editor/PuckEditor.d.ts.map +1 -1
  261. package/dist/editor/PuckEditor.js +162 -70
  262. package/dist/editor/PuckEditor.js.map +1 -1
  263. package/dist/editor/PuckEditorImpl.client.d.ts +4 -4
  264. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  265. package/dist/editor/PuckEditorImpl.client.js +304 -152
  266. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  267. package/dist/editor/components/DarkModeStyles.js +11 -12
  268. package/dist/editor/components/DarkModeStyles.js.map +1 -1
  269. package/dist/editor/components/HeaderActions.js +308 -64
  270. package/dist/editor/components/HeaderActions.js.map +1 -1
  271. package/dist/editor/components/IframeWrapper.d.ts +1 -1
  272. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  273. package/dist/editor/components/IframeWrapper.js +82 -58
  274. package/dist/editor/components/IframeWrapper.js.map +1 -1
  275. package/dist/editor/components/LoadingState.d.ts +1 -1
  276. package/dist/editor/components/LoadingState.d.ts.map +1 -1
  277. package/dist/editor/components/LoadingState.js +17 -3
  278. package/dist/editor/components/LoadingState.js.map +1 -1
  279. package/dist/editor/components/PreviewModal.js +234 -78
  280. package/dist/editor/components/PreviewModal.js.map +1 -1
  281. package/dist/editor/components/PreviewModeToggle.js +43 -15
  282. package/dist/editor/components/PreviewModeToggle.js.map +1 -1
  283. package/dist/editor/components/VersionHistory.js +219 -71
  284. package/dist/editor/components/VersionHistory.js.map +1 -1
  285. package/dist/editor/hooks/useDarkMode.js +36 -23
  286. package/dist/editor/hooks/useDarkMode.js.map +1 -1
  287. package/dist/editor/hooks/useUnsavedChanges.js +8 -8
  288. package/dist/editor/hooks/useUnsavedChanges.js.map +1 -1
  289. package/dist/editor/index.js +5 -6
  290. package/dist/editor/index.js.map +1 -1
  291. package/dist/editor/plugins/VersionHistoryPanel.js +236 -75
  292. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -1
  293. package/dist/editor/plugins/index.js +4 -4
  294. package/dist/editor/plugins/index.js.map +1 -1
  295. package/dist/editor/plugins/versionHistoryPlugin.js +10 -8
  296. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -1
  297. package/dist/editor/utils/detectPageTree.js +5 -5
  298. package/dist/editor/utils/detectPageTree.js.map +1 -1
  299. package/dist/editor/utils/index.js +1 -0
  300. package/dist/editor/utils/index.js.map +1 -1
  301. package/dist/editor/utils/injectPageTreeFields.js +13 -9
  302. package/dist/editor/utils/injectPageTreeFields.js.map +1 -1
  303. package/dist/endpoints/ai.js +58 -34
  304. package/dist/endpoints/ai.js.map +1 -1
  305. package/dist/endpoints/context.js +86 -40
  306. package/dist/endpoints/context.js.map +1 -1
  307. package/dist/endpoints/index.js +153 -76
  308. package/dist/endpoints/index.js.map +1 -1
  309. package/dist/endpoints/postcss.d.js +5 -0
  310. package/dist/endpoints/postcss.d.js.map +1 -0
  311. package/dist/endpoints/prompts.js +81 -39
  312. package/dist/endpoints/prompts.js.map +1 -1
  313. package/dist/endpoints/styles.js +34 -36
  314. package/dist/endpoints/styles.js.map +1 -1
  315. package/dist/exports/client.js +2 -2
  316. package/dist/exports/client.js.map +1 -1
  317. package/dist/exports/rsc.js +2 -2
  318. package/dist/exports/rsc.js.map +1 -1
  319. package/dist/fields/AlignmentField.d.ts +1 -1
  320. package/dist/fields/AlignmentField.d.ts.map +1 -1
  321. package/dist/fields/AlignmentField.js +93 -30
  322. package/dist/fields/AlignmentField.js.map +1 -1
  323. package/dist/fields/AnimationField.d.ts +2 -2
  324. package/dist/fields/AnimationField.d.ts.map +1 -1
  325. package/dist/fields/AnimationField.js +558 -84
  326. package/dist/fields/AnimationField.js.map +1 -1
  327. package/dist/fields/BackgroundField.d.ts +2 -2
  328. package/dist/fields/BackgroundField.d.ts.map +1 -1
  329. package/dist/fields/BackgroundField.js +754 -120
  330. package/dist/fields/BackgroundField.js.map +1 -1
  331. package/dist/fields/BorderField.d.ts +2 -2
  332. package/dist/fields/BorderField.d.ts.map +1 -1
  333. package/dist/fields/BorderField.js +275 -73
  334. package/dist/fields/BorderField.js.map +1 -1
  335. package/dist/fields/ColorPickerField.d.ts +2 -2
  336. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  337. package/dist/fields/ColorPickerField.js +210 -68
  338. package/dist/fields/ColorPickerField.js.map +1 -1
  339. package/dist/fields/ContentAlignmentField.d.ts +1 -1
  340. package/dist/fields/ContentAlignmentField.d.ts.map +1 -1
  341. package/dist/fields/ContentAlignmentField.js +161 -75
  342. package/dist/fields/ContentAlignmentField.js.map +1 -1
  343. package/dist/fields/DimensionsField.d.ts +2 -2
  344. package/dist/fields/DimensionsField.d.ts.map +1 -1
  345. package/dist/fields/DimensionsField.js +575 -146
  346. package/dist/fields/DimensionsField.js.map +1 -1
  347. package/dist/fields/FlexAlignmentField.d.ts +2 -2
  348. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  349. package/dist/fields/FlexAlignmentField.js +189 -51
  350. package/dist/fields/FlexAlignmentField.js.map +1 -1
  351. package/dist/fields/FolderPickerField.d.ts +8 -1
  352. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  353. package/dist/fields/FolderPickerField.js +288 -75
  354. package/dist/fields/FolderPickerField.js.map +1 -1
  355. package/dist/fields/GradientEditor.d.ts +2 -2
  356. package/dist/fields/GradientEditor.d.ts.map +1 -1
  357. package/dist/fields/GradientEditor.js +462 -86
  358. package/dist/fields/GradientEditor.js.map +1 -1
  359. package/dist/fields/LockedField.d.ts +15 -2
  360. package/dist/fields/LockedField.d.ts.map +1 -1
  361. package/dist/fields/LockedField.js +180 -49
  362. package/dist/fields/LockedField.js.map +1 -1
  363. package/dist/fields/MarginField.d.ts +2 -2
  364. package/dist/fields/MarginField.d.ts.map +1 -1
  365. package/dist/fields/MarginField.js +144 -46
  366. package/dist/fields/MarginField.js.map +1 -1
  367. package/dist/fields/MediaField.d.ts +1 -1
  368. package/dist/fields/MediaField.d.ts.map +1 -1
  369. package/dist/fields/MediaField.js +688 -186
  370. package/dist/fields/MediaField.js.map +1 -1
  371. package/dist/fields/PaddingField.d.ts +2 -2
  372. package/dist/fields/PaddingField.d.ts.map +1 -1
  373. package/dist/fields/PaddingField.js +144 -46
  374. package/dist/fields/PaddingField.js.map +1 -1
  375. package/dist/fields/PageSegmentField.d.ts +15 -2
  376. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  377. package/dist/fields/PageSegmentField.js +156 -54
  378. package/dist/fields/PageSegmentField.js.map +1 -1
  379. package/dist/fields/ResetField.d.ts +1 -1
  380. package/dist/fields/ResetField.d.ts.map +1 -1
  381. package/dist/fields/ResetField.js +59 -31
  382. package/dist/fields/ResetField.js.map +1 -1
  383. package/dist/fields/ResponsiveField.d.ts +1 -1
  384. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  385. package/dist/fields/ResponsiveField.js +233 -90
  386. package/dist/fields/ResponsiveField.js.map +1 -1
  387. package/dist/fields/ResponsiveVisibilityField.d.ts +2 -2
  388. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  389. package/dist/fields/ResponsiveVisibilityField.js +119 -36
  390. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  391. package/dist/fields/SizeField.d.ts +3 -3
  392. package/dist/fields/SizeField.d.ts.map +1 -1
  393. package/dist/fields/SizeField.js +226 -52
  394. package/dist/fields/SizeField.js.map +1 -1
  395. package/dist/fields/SlugPreviewField.d.ts +8 -1
  396. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  397. package/dist/fields/SlugPreviewField.js +65 -16
  398. package/dist/fields/SlugPreviewField.js.map +1 -1
  399. package/dist/fields/TemplateField.d.ts +1 -1
  400. package/dist/fields/TemplateField.d.ts.map +1 -1
  401. package/dist/fields/TemplateField.js +362 -120
  402. package/dist/fields/TemplateField.js.map +1 -1
  403. package/dist/fields/TransformField.d.ts +2 -2
  404. package/dist/fields/TransformField.d.ts.map +1 -1
  405. package/dist/fields/TransformField.js +517 -81
  406. package/dist/fields/TransformField.js.map +1 -1
  407. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  408. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  409. package/dist/fields/VerticalAlignmentField.js +93 -30
  410. package/dist/fields/VerticalAlignmentField.js.map +1 -1
  411. package/dist/fields/WidthField.d.ts +2 -2
  412. package/dist/fields/WidthField.d.ts.map +1 -1
  413. package/dist/fields/WidthField.js +278 -81
  414. package/dist/fields/WidthField.js.map +1 -1
  415. package/dist/fields/index.d.ts +41 -41
  416. package/dist/fields/index.d.ts.map +1 -1
  417. package/dist/fields/index.js +37 -43
  418. package/dist/fields/index.js.map +1 -1
  419. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +13 -2
  420. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -1
  421. package/dist/fields/richtext/controls/ColorPickerControl.js +212 -47
  422. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -1
  423. package/dist/fields/richtext/controls/DropdownPortal.d.ts +2 -2
  424. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -1
  425. package/dist/fields/richtext/controls/DropdownPortal.js +36 -4
  426. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -1
  427. package/dist/fields/richtext/controls/FontSizeControl.d.ts +9 -1
  428. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -1
  429. package/dist/fields/richtext/controls/FontSizeControl.js +109 -24
  430. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -1
  431. package/dist/fields/richtext/controls/HighlightControl.d.ts +12 -1
  432. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -1
  433. package/dist/fields/richtext/controls/HighlightControl.js +54 -17
  434. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -1
  435. package/dist/fields/richtext/controls/index.d.ts +5 -5
  436. package/dist/fields/richtext/controls/index.d.ts.map +1 -1
  437. package/dist/fields/richtext/controls/index.js +8 -11
  438. package/dist/fields/richtext/controls/index.js.map +1 -1
  439. package/dist/fields/richtext/controls/shared.js +108 -63
  440. package/dist/fields/richtext/controls/shared.js.map +1 -1
  441. package/dist/fields/richtext/createRichTextField.d.ts +18 -4
  442. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -1
  443. package/dist/fields/richtext/createRichTextField.js +113 -26
  444. package/dist/fields/richtext/createRichTextField.js.map +1 -1
  445. package/dist/fields/richtext/extensions/FontSize.js +26 -20
  446. package/dist/fields/richtext/extensions/FontSize.js.map +1 -1
  447. package/dist/fields/richtext/extensions/index.d.ts +1 -1
  448. package/dist/fields/richtext/extensions/index.d.ts.map +1 -1
  449. package/dist/fields/richtext/extensions/index.js +2 -2
  450. package/dist/fields/richtext/extensions/index.js.map +1 -1
  451. package/dist/fields/richtext/index.d.ts +6 -6
  452. package/dist/fields/richtext/index.d.ts.map +1 -1
  453. package/dist/fields/richtext/index.js +8 -8
  454. package/dist/fields/richtext/index.js.map +1 -1
  455. package/dist/fields/shared.d.ts +1 -1
  456. package/dist/fields/shared.d.ts.map +1 -1
  457. package/dist/fields/shared.js +915 -478
  458. package/dist/fields/shared.js.map +1 -1
  459. package/dist/hooks/index.d.ts +2 -2
  460. package/dist/hooks/index.d.ts.map +1 -1
  461. package/dist/hooks/index.js +3 -3
  462. package/dist/hooks/index.js.map +1 -1
  463. package/dist/hooks/useResponsiveStyles.d.ts +1 -1
  464. package/dist/hooks/useResponsiveStyles.d.ts.map +1 -1
  465. package/dist/hooks/useResponsiveStyles.js +36 -32
  466. package/dist/hooks/useResponsiveStyles.js.map +1 -1
  467. package/dist/hooks/useScrollAnimation.js +26 -24
  468. package/dist/hooks/useScrollAnimation.js.map +1 -1
  469. package/dist/index.d.ts +4 -4
  470. package/dist/index.d.ts.map +1 -1
  471. package/dist/index.js +5 -5
  472. package/dist/index.js.map +1 -1
  473. package/dist/layouts/LayoutWrapper.d.ts +3 -3
  474. package/dist/layouts/LayoutWrapper.d.ts.map +1 -1
  475. package/dist/layouts/LayoutWrapper.js +115 -51
  476. package/dist/layouts/LayoutWrapper.js.map +1 -1
  477. package/dist/layouts/defaults.d.ts +1 -1
  478. package/dist/layouts/defaults.d.ts.map +1 -1
  479. package/dist/layouts/defaults.js +23 -31
  480. package/dist/layouts/defaults.js.map +1 -1
  481. package/dist/layouts/index.d.ts +4 -4
  482. package/dist/layouts/index.d.ts.map +1 -1
  483. package/dist/layouts/index.js +5 -4
  484. package/dist/layouts/index.js.map +1 -1
  485. package/dist/layouts/types.js +4 -2
  486. package/dist/layouts/types.js.map +1 -1
  487. package/dist/layouts/utils.d.ts +1 -1
  488. package/dist/layouts/utils.d.ts.map +1 -1
  489. package/dist/layouts/utils.js +32 -40
  490. package/dist/layouts/utils.js.map +1 -1
  491. package/dist/next/index.js +31 -34
  492. package/dist/next/index.js.map +1 -1
  493. package/dist/plugin/collections/Pages.d.ts +2 -2
  494. package/dist/plugin/collections/Pages.d.ts.map +1 -1
  495. package/dist/plugin/collections/Pages.js +46 -43
  496. package/dist/plugin/collections/Pages.js.map +1 -1
  497. package/dist/plugin/fields/index.d.ts +3 -3
  498. package/dist/plugin/fields/index.d.ts.map +1 -1
  499. package/dist/plugin/fields/index.js +100 -78
  500. package/dist/plugin/fields/index.js.map +1 -1
  501. package/dist/plugin/fields/types.d.ts +1 -1
  502. package/dist/plugin/fields/types.d.ts.map +1 -1
  503. package/dist/plugin/fields/types.js +26 -2
  504. package/dist/plugin/fields/types.js.map +1 -1
  505. package/dist/plugin/hooks/index.d.ts +1 -1
  506. package/dist/plugin/hooks/index.d.ts.map +1 -1
  507. package/dist/plugin/hooks/index.js +2 -2
  508. package/dist/plugin/hooks/index.js.map +1 -1
  509. package/dist/plugin/hooks/isHomepageUnique.js +28 -19
  510. package/dist/plugin/hooks/isHomepageUnique.js.map +1 -1
  511. package/dist/plugin/index.d.ts +8 -8
  512. package/dist/plugin/index.d.ts.map +1 -1
  513. package/dist/plugin/index.js +190 -188
  514. package/dist/plugin/index.js.map +1 -1
  515. package/dist/render/HybridPageRenderer.d.ts +2 -2
  516. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  517. package/dist/render/HybridPageRenderer.js +58 -10
  518. package/dist/render/HybridPageRenderer.js.map +1 -1
  519. package/dist/render/PageRenderer.d.ts +2 -2
  520. package/dist/render/PageRenderer.d.ts.map +1 -1
  521. package/dist/render/PageRenderer.js +31 -14
  522. package/dist/render/PageRenderer.js.map +1 -1
  523. package/dist/render/PuckEditor.client.d.ts +1 -1
  524. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  525. package/dist/render/PuckEditor.client.js +33 -16
  526. package/dist/render/PuckEditor.client.js.map +1 -1
  527. package/dist/render/index.d.ts +5 -5
  528. package/dist/render/index.d.ts.map +1 -1
  529. package/dist/render/index.js +5 -6
  530. package/dist/render/index.js.map +1 -1
  531. package/dist/styles/puck-dark-mode.css +101 -0
  532. package/dist/theme/context.d.ts +2 -2
  533. package/dist/theme/context.d.ts.map +1 -1
  534. package/dist/theme/context.js +21 -18
  535. package/dist/theme/context.js.map +1 -1
  536. package/dist/theme/defaults.d.ts +1 -1
  537. package/dist/theme/defaults.d.ts.map +1 -1
  538. package/dist/theme/defaults.js +83 -37
  539. package/dist/theme/defaults.js.map +1 -1
  540. package/dist/theme/example.d.ts +1 -1
  541. package/dist/theme/example.d.ts.map +1 -1
  542. package/dist/theme/example.js +68 -30
  543. package/dist/theme/example.js.map +1 -1
  544. package/dist/theme/index.d.ts +5 -5
  545. package/dist/theme/index.d.ts.map +1 -1
  546. package/dist/theme/index.js +6 -5
  547. package/dist/theme/index.js.map +1 -1
  548. package/dist/theme/types.js +6 -2
  549. package/dist/theme/types.js.map +1 -1
  550. package/dist/theme/utils.d.ts +1 -1
  551. package/dist/theme/utils.d.ts.map +1 -1
  552. package/dist/theme/utils.js +24 -25
  553. package/dist/theme/utils.js.map +1 -1
  554. package/dist/types/index.d.ts +6 -6
  555. package/dist/types/index.d.ts.map +1 -1
  556. package/dist/types/index.js +3 -1
  557. package/dist/types/index.js.map +1 -1
  558. package/dist/utils/index.d.ts +2 -2
  559. package/dist/utils/index.d.ts.map +1 -1
  560. package/dist/utils/index.js +13 -22
  561. package/dist/utils/index.js.map +1 -1
  562. package/dist/utils/migration.d.ts +1 -1
  563. package/dist/utils/migration.d.ts.map +1 -1
  564. package/dist/utils/migration.js +43 -49
  565. package/dist/utils/migration.js.map +1 -1
  566. package/dist/utils/validation.d.ts +1 -1
  567. package/dist/utils/validation.d.ts.map +1 -1
  568. package/dist/utils/validation.js +36 -43
  569. package/dist/utils/validation.js.map +1 -1
  570. package/dist/version.d.ts +1 -1
  571. package/dist/version.js +2 -1
  572. package/dist/version.js.map +1 -1
  573. package/dist/views/PuckConfigContext.d.ts +1 -1
  574. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  575. package/dist/views/PuckConfigContext.js +25 -10
  576. package/dist/views/PuckConfigContext.js.map +1 -1
  577. package/dist/views/PuckEditorView.d.ts +1 -1
  578. package/dist/views/PuckEditorView.d.ts.map +1 -1
  579. package/dist/views/PuckEditorView.js +106 -38
  580. package/dist/views/PuckEditorView.js.map +1 -1
  581. package/dist/views/index.js +2 -2
  582. package/dist/views/index.js.map +1 -1
  583. package/package.json +62 -42
@@ -5,27 +5,71 @@
5
5
  * to the corresponding Payload collection fields.
6
6
  *
7
7
  * SEO fields use the official @payloadcms/plugin-seo convention: meta.title, meta.description
8
- */
9
- export const DEFAULT_ROOT_PROPS_MAPPINGS = [
8
+ */ export const DEFAULT_ROOT_PROPS_MAPPINGS = [
10
9
  // Core page fields
11
- { from: 'title', to: 'title' },
12
- { from: 'slug', to: 'slug' },
13
- { from: 'pageLayout', to: 'pageLayout' },
14
- { from: 'pageType', to: 'pageType' },
15
- { from: 'isHomepage', to: 'isHomepage' },
10
+ {
11
+ from: 'title',
12
+ to: 'title'
13
+ },
14
+ {
15
+ from: 'slug',
16
+ to: 'slug'
17
+ },
18
+ {
19
+ from: 'pageLayout',
20
+ to: 'pageLayout'
21
+ },
22
+ {
23
+ from: 'pageType',
24
+ to: 'pageType'
25
+ },
26
+ {
27
+ from: 'isHomepage',
28
+ to: 'isHomepage'
29
+ },
16
30
  // Page-tree integration fields
17
- { from: 'folder', to: 'folder' },
18
- { from: 'pageSegment', to: 'pageSegment' },
31
+ {
32
+ from: 'folder',
33
+ to: 'folder'
34
+ },
35
+ {
36
+ from: 'pageSegment',
37
+ to: 'pageSegment'
38
+ },
19
39
  // SEO/Meta fields (uses official @payloadcms/plugin-seo convention)
20
- { from: 'metaTitle', to: 'meta.title' },
21
- { from: 'metaDescription', to: 'meta.description' },
22
- { from: 'noindex', to: 'meta.noindex' },
23
- { from: 'nofollow', to: 'meta.nofollow' },
24
- { from: 'excludeFromSitemap', to: 'meta.excludeFromSitemap' },
40
+ {
41
+ from: 'metaTitle',
42
+ to: 'meta.title'
43
+ },
44
+ {
45
+ from: 'metaDescription',
46
+ to: 'meta.description'
47
+ },
48
+ {
49
+ from: 'noindex',
50
+ to: 'meta.noindex'
51
+ },
52
+ {
53
+ from: 'nofollow',
54
+ to: 'meta.nofollow'
55
+ },
56
+ {
57
+ from: 'excludeFromSitemap',
58
+ to: 'meta.excludeFromSitemap'
59
+ },
25
60
  // Conversion tracking fields
26
- { from: 'isConversionPage', to: 'conversionTracking.isConversionPage' },
27
- { from: 'conversionType', to: 'conversionTracking.conversionType' },
28
- { from: 'conversionValue', to: 'conversionTracking.conversionValue' },
61
+ {
62
+ from: 'isConversionPage',
63
+ to: 'conversionTracking.isConversionPage'
64
+ },
65
+ {
66
+ from: 'conversionType',
67
+ to: 'conversionTracking.conversionType'
68
+ },
69
+ {
70
+ from: 'conversionValue',
71
+ to: 'conversionTracking.conversionValue'
72
+ }
29
73
  ];
30
74
  /**
31
75
  * Set a nested value in an object using dot notation path
@@ -36,11 +80,10 @@ export const DEFAULT_ROOT_PROPS_MAPPINGS = [
36
80
  * setNestedValue(obj, 'meta.title', 'My Title')
37
81
  * // Result: { meta: { title: 'My Title' } }
38
82
  * ```
39
- */
40
- export function setNestedValue(obj, path, value) {
83
+ */ export function setNestedValue(obj, path, value) {
41
84
  const keys = path.split('.');
42
85
  let current = obj;
43
- for (let i = 0; i < keys.length - 1; i++) {
86
+ for(let i = 0; i < keys.length - 1; i++){
44
87
  const key = keys[i];
45
88
  if (!(key in current) || typeof current[key] !== 'object') {
46
89
  current[key] = {};
@@ -58,11 +101,10 @@ export function setNestedValue(obj, path, value) {
58
101
  * const obj = { meta: { title: 'My Title' } }
59
102
  * getNestedValue(obj, 'meta.title') // 'My Title'
60
103
  * ```
61
- */
62
- export function getNestedValue(obj, path) {
104
+ */ export function getNestedValue(obj, path) {
63
105
  const keys = path.split('.');
64
106
  let current = obj;
65
- for (const key of keys) {
107
+ for (const key of keys){
66
108
  if (current === null || current === undefined) {
67
109
  return undefined;
68
110
  }
@@ -78,19 +120,18 @@ export function getNestedValue(obj, path) {
78
120
  *
79
121
  * @param customMappings - Custom mappings to merge with defaults
80
122
  * @returns Merged array of mappings with duplicates resolved (custom wins)
81
- */
82
- export function mergeMappings(customMappings) {
123
+ */ export function mergeMappings(customMappings) {
83
124
  if (!customMappings || customMappings.length === 0) {
84
125
  return DEFAULT_ROOT_PROPS_MAPPINGS;
85
126
  }
86
127
  // Create a map to track unique mappings by 'from' field
87
128
  const mappingMap = new Map();
88
129
  // Add defaults first
89
- for (const mapping of DEFAULT_ROOT_PROPS_MAPPINGS) {
130
+ for (const mapping of DEFAULT_ROOT_PROPS_MAPPINGS){
90
131
  mappingMap.set(mapping.from, mapping);
91
132
  }
92
133
  // Custom mappings override defaults
93
- for (const mapping of customMappings) {
134
+ for (const mapping of customMappings){
94
135
  mappingMap.set(mapping.from, mapping);
95
136
  }
96
137
  return Array.from(mappingMap.values());
@@ -122,11 +163,10 @@ export function mergeMappings(customMappings) {
122
163
  * // },
123
164
  * // }
124
165
  * ```
125
- */
126
- export function mapRootPropsToPayloadFields(rootProps, customMappings) {
166
+ */ export function mapRootPropsToPayloadFields(rootProps, customMappings) {
127
167
  const mappings = mergeMappings(customMappings);
128
168
  const result = {};
129
- for (const mapping of mappings) {
169
+ for (const mapping of mappings){
130
170
  const value = rootProps[mapping.from];
131
171
  // Skip undefined values to avoid overwriting existing data
132
172
  if (value === undefined) {
@@ -145,21 +185,14 @@ export function mapRootPropsToPayloadFields(rootProps, customMappings) {
145
185
  * @param target - The target object to merge into
146
186
  * @param source - The source object to merge from
147
187
  * @returns The merged object (target is modified in place)
148
- */
149
- export function deepMerge(target, source) {
150
- for (const key of Object.keys(source)) {
188
+ */ export function deepMerge(target, source) {
189
+ for (const key of Object.keys(source)){
151
190
  const sourceValue = source[key];
152
191
  const targetValue = target[key];
153
- if (sourceValue !== null &&
154
- typeof sourceValue === 'object' &&
155
- !Array.isArray(sourceValue) &&
156
- targetValue !== null &&
157
- typeof targetValue === 'object' &&
158
- !Array.isArray(targetValue)) {
192
+ if (sourceValue !== null && typeof sourceValue === 'object' && !Array.isArray(sourceValue) && targetValue !== null && typeof targetValue === 'object' && !Array.isArray(targetValue)) {
159
193
  // Recursively merge nested objects
160
194
  target[key] = deepMerge(targetValue, sourceValue);
161
- }
162
- else {
195
+ } else {
163
196
  // Direct assignment for non-object values or arrays
164
197
  target[key] = sourceValue;
165
198
  }
@@ -183,11 +216,10 @@ export function deepMerge(target, source) {
183
216
  * const rootProps = mapPayloadFieldsToRootProps(page)
184
217
  * // Result: { title: 'My Page', isHomepage: true, metaTitle: 'SEO Title' }
185
218
  * ```
186
- */
187
- export function mapPayloadFieldsToRootProps(doc, customMappings) {
219
+ */ export function mapPayloadFieldsToRootProps(doc, customMappings) {
188
220
  const mappings = mergeMappings(customMappings);
189
221
  const result = {};
190
- for (const mapping of mappings) {
222
+ for (const mapping of mappings){
191
223
  // Get value from Payload field (supports dot notation for nested fields)
192
224
  const value = getNestedValue(doc, mapping.to);
193
225
  // Skip undefined values
@@ -199,4 +231,5 @@ export function mapPayloadFieldsToRootProps(doc, customMappings) {
199
231
  }
200
232
  return result;
201
233
  }
234
+
202
235
  //# sourceMappingURL=mapRootProps.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"mapRootProps.js","sourceRoot":"","sources":["../../../src/api/utils/mapRootProps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../src/api/utils/mapRootProps.ts"],"sourcesContent":["import type { RootPropsMapping } from '../types.js'\n\n/**\n * Default mappings from Puck root.props to Payload fields\n *\n * These mappings sync common page properties from Puck's visual editor\n * to the corresponding Payload collection fields.\n *\n * SEO fields use the official @payloadcms/plugin-seo convention: meta.title, meta.description\n */\nexport const DEFAULT_ROOT_PROPS_MAPPINGS: RootPropsMapping[] = [\n // Core page fields\n { from: 'title', to: 'title' },\n { from: 'slug', to: 'slug' },\n { from: 'pageLayout', to: 'pageLayout' },\n { from: 'pageType', to: 'pageType' },\n { from: 'isHomepage', to: 'isHomepage' },\n\n // Page-tree integration fields\n { from: 'folder', to: 'folder' },\n { from: 'pageSegment', to: 'pageSegment' },\n\n // SEO/Meta fields (uses official @payloadcms/plugin-seo convention)\n { from: 'metaTitle', to: 'meta.title' },\n { from: 'metaDescription', to: 'meta.description' },\n { from: 'noindex', to: 'meta.noindex' },\n { from: 'nofollow', to: 'meta.nofollow' },\n { from: 'excludeFromSitemap', to: 'meta.excludeFromSitemap' },\n\n // Conversion tracking fields\n { from: 'isConversionPage', to: 'conversionTracking.isConversionPage' },\n { from: 'conversionType', to: 'conversionTracking.conversionType' },\n { from: 'conversionValue', to: 'conversionTracking.conversionValue' },\n]\n\n/**\n * Set a nested value in an object using dot notation path\n *\n * @example\n * ```typescript\n * const obj = {}\n * setNestedValue(obj, 'meta.title', 'My Title')\n * // Result: { meta: { title: 'My Title' } }\n * ```\n */\nexport function setNestedValue(\n obj: Record<string, unknown>,\n path: string,\n value: unknown\n): void {\n const keys = path.split('.')\n let current = obj\n\n for (let i = 0; i < keys.length - 1; i++) {\n const key = keys[i]\n if (!(key in current) || typeof current[key] !== 'object') {\n current[key] = {}\n }\n current = current[key] as Record<string, unknown>\n }\n\n const finalKey = keys[keys.length - 1]\n current[finalKey] = value\n}\n\n/**\n * Get a nested value from an object using dot notation path\n *\n * @example\n * ```typescript\n * const obj = { meta: { title: 'My Title' } }\n * getNestedValue(obj, 'meta.title') // 'My Title'\n * ```\n */\nexport function getNestedValue(\n obj: Record<string, unknown>,\n path: string\n): unknown {\n const keys = path.split('.')\n let current: unknown = obj\n\n for (const key of keys) {\n if (current === null || current === undefined) {\n return undefined\n }\n if (typeof current !== 'object') {\n return undefined\n }\n current = (current as Record<string, unknown>)[key]\n }\n\n return current\n}\n\n/**\n * Merge mappings, with custom mappings taking precedence over defaults\n *\n * @param customMappings - Custom mappings to merge with defaults\n * @returns Merged array of mappings with duplicates resolved (custom wins)\n */\nexport function mergeMappings(\n customMappings?: RootPropsMapping[]\n): RootPropsMapping[] {\n if (!customMappings || customMappings.length === 0) {\n return DEFAULT_ROOT_PROPS_MAPPINGS\n }\n\n // Create a map to track unique mappings by 'from' field\n const mappingMap = new Map<string, RootPropsMapping>()\n\n // Add defaults first\n for (const mapping of DEFAULT_ROOT_PROPS_MAPPINGS) {\n mappingMap.set(mapping.from, mapping)\n }\n\n // Custom mappings override defaults\n for (const mapping of customMappings) {\n mappingMap.set(mapping.from, mapping)\n }\n\n return Array.from(mappingMap.values())\n}\n\n/**\n * Map Puck root.props to Payload field update data\n *\n * Takes the root.props from Puck data and maps them to the appropriate\n * Payload fields based on the provided mappings.\n *\n * @param rootProps - The root.props object from Puck data\n * @param customMappings - Optional custom mappings to merge with defaults\n * @returns Object ready to be spread into Payload update data\n *\n * @example\n * ```typescript\n * const rootProps = {\n * title: 'My Page',\n * metaTitle: 'My Page | Site Name',\n * metaDescription: 'Description here',\n * }\n *\n * const updateData = mapRootPropsToPayloadFields(rootProps)\n * // Result: {\n * // title: 'My Page',\n * // meta: {\n * // title: 'My Page | Site Name',\n * // description: 'Description here',\n * // },\n * // }\n * ```\n */\nexport function mapRootPropsToPayloadFields(\n rootProps: Record<string, unknown>,\n customMappings?: RootPropsMapping[]\n): Record<string, unknown> {\n const mappings = mergeMappings(customMappings)\n const result: Record<string, unknown> = {}\n\n for (const mapping of mappings) {\n const value = rootProps[mapping.from]\n\n // Skip undefined values to avoid overwriting existing data\n if (value === undefined) {\n continue\n }\n\n // Apply transformation if provided\n const transformedValue = mapping.transform ? mapping.transform(value) : value\n\n // Set the value at the target path\n setNestedValue(result, mapping.to, transformedValue)\n }\n\n return result\n}\n\n/**\n * Deep merge objects, with source values overwriting target values\n *\n * @param target - The target object to merge into\n * @param source - The source object to merge from\n * @returns The merged object (target is modified in place)\n */\nexport function deepMerge(\n target: Record<string, unknown>,\n source: Record<string, unknown>\n): Record<string, unknown> {\n for (const key of Object.keys(source)) {\n const sourceValue = source[key]\n const targetValue = target[key]\n\n if (\n sourceValue !== null &&\n typeof sourceValue === 'object' &&\n !Array.isArray(sourceValue) &&\n targetValue !== null &&\n typeof targetValue === 'object' &&\n !Array.isArray(targetValue)\n ) {\n // Recursively merge nested objects\n target[key] = deepMerge(\n targetValue as Record<string, unknown>,\n sourceValue as Record<string, unknown>\n )\n } else {\n // Direct assignment for non-object values or arrays\n target[key] = sourceValue\n }\n }\n\n return target\n}\n\n/**\n * Map Payload document fields to Puck root.props format\n *\n * This is the reverse of mapRootPropsToPayloadFields. It takes a Payload\n * document and extracts the fields that should be synced to root.props\n * when loading the editor.\n *\n * @param doc - The Payload document\n * @param customMappings - Optional custom mappings to merge with defaults\n * @returns Object with root.props field names and values\n *\n * @example\n * ```typescript\n * const page = { title: 'My Page', isHomepage: true, meta: { title: 'SEO Title' } }\n * const rootProps = mapPayloadFieldsToRootProps(page)\n * // Result: { title: 'My Page', isHomepage: true, metaTitle: 'SEO Title' }\n * ```\n */\nexport function mapPayloadFieldsToRootProps(\n doc: Record<string, unknown>,\n customMappings?: RootPropsMapping[]\n): Record<string, unknown> {\n const mappings = mergeMappings(customMappings)\n const result: Record<string, unknown> = {}\n\n for (const mapping of mappings) {\n // Get value from Payload field (supports dot notation for nested fields)\n const value = getNestedValue(doc, mapping.to)\n\n // Skip undefined values\n if (value === undefined) {\n continue\n }\n\n // Set the value using the root.props field name\n result[mapping.from] = value\n }\n\n return result\n}\n"],"names":["DEFAULT_ROOT_PROPS_MAPPINGS","from","to","setNestedValue","obj","path","value","keys","split","current","i","length","key","finalKey","getNestedValue","undefined","mergeMappings","customMappings","mappingMap","Map","mapping","set","Array","values","mapRootPropsToPayloadFields","rootProps","mappings","result","transformedValue","transform","deepMerge","target","source","Object","sourceValue","targetValue","isArray","mapPayloadFieldsToRootProps","doc"],"mappings":"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"}
@@ -3,20 +3,23 @@
3
3
  *
4
4
  * This collection stores serialized Puck component data that can be
5
5
  * loaded into Template components for reuse across pages.
6
- */
7
- export const TemplatesCollection = {
6
+ */ export const TemplatesCollection = {
8
7
  slug: 'puck-templates',
9
8
  admin: {
10
9
  useAsTitle: 'name',
11
10
  group: 'Puck',
12
- defaultColumns: ['name', 'category', 'updatedAt'],
13
- description: 'Reusable component templates for the visual editor',
11
+ defaultColumns: [
12
+ 'name',
13
+ 'category',
14
+ 'updatedAt'
15
+ ],
16
+ description: 'Reusable component templates for the visual editor'
14
17
  },
15
18
  access: {
16
- read: () => true,
17
- create: ({ req }) => !!req.user,
18
- update: ({ req }) => !!req.user,
19
- delete: ({ req }) => !!req.user,
19
+ read: ()=>true,
20
+ create: ({ req })=>!!req.user,
21
+ update: ({ req })=>!!req.user,
22
+ delete: ({ req })=>!!req.user
20
23
  },
21
24
  fields: [
22
25
  {
@@ -24,39 +27,40 @@ export const TemplatesCollection = {
24
27
  type: 'text',
25
28
  required: true,
26
29
  admin: {
27
- description: 'A descriptive name for this template',
28
- },
30
+ description: 'A descriptive name for this template'
31
+ }
29
32
  },
30
33
  {
31
34
  name: 'description',
32
35
  type: 'textarea',
33
36
  admin: {
34
- description: 'Optional description of what this template contains',
35
- },
37
+ description: 'Optional description of what this template contains'
38
+ }
36
39
  },
37
40
  {
38
41
  name: 'category',
39
42
  type: 'text',
40
43
  admin: {
41
- description: 'Category for organizing templates (e.g., "Hero", "Footer", "CTA")',
42
- },
44
+ description: 'Category for organizing templates (e.g., "Hero", "Footer", "CTA")'
45
+ }
43
46
  },
44
47
  {
45
48
  name: 'content',
46
49
  type: 'json',
47
50
  required: true,
48
51
  admin: {
49
- description: 'Serialized Puck component data',
50
- },
52
+ description: 'Serialized Puck component data'
53
+ }
51
54
  },
52
55
  {
53
56
  name: 'thumbnail',
54
57
  type: 'text',
55
58
  admin: {
56
- description: 'Optional thumbnail URL for template preview',
57
- },
58
- },
59
+ description: 'Optional thumbnail URL for template preview'
60
+ }
61
+ }
59
62
  ],
60
- timestamps: true,
63
+ timestamps: true
61
64
  };
65
+
62
66
  //# sourceMappingURL=Templates.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Templates.js","sourceRoot":"","sources":["../../src/collections/Templates.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAqB;IACnD,IAAI,EAAE,gBAAgB;IACtB,KAAK,EAAE;QACL,UAAU,EAAE,MAAM;QAClB,KAAK,EAAE,MAAM;QACb,cAAc,EAAE,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC;QACjD,WAAW,EAAE,oDAAoD;KAClE;IACD,MAAM,EAAE;QACN,IAAI,EAAE,GAAG,EAAE,CAAC,IAAI;QAChB,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;QAC/B,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;QAC/B,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI;KAChC;IACD,MAAM,EAAE;QACN;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,WAAW,EAAE,sCAAsC;aACpD;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,UAAU;YAChB,KAAK,EAAE;gBACL,WAAW,EAAE,qDAAqD;aACnE;SACF;QACD;YACE,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,WAAW,EAAE,mEAAmE;aACjF;SACF;QACD;YACE,IAAI,EAAE,SAAS;YACf,IAAI,EAAE,MAAM;YACZ,QAAQ,EAAE,IAAI;YACd,KAAK,EAAE;gBACL,WAAW,EAAE,gCAAgC;aAC9C;SACF;QACD;YACE,IAAI,EAAE,WAAW;YACjB,IAAI,EAAE,MAAM;YACZ,KAAK,EAAE;gBACL,WAAW,EAAE,6CAA6C;aAC3D;SACF;KACF;IACD,UAAU,EAAE,IAAI;CACjB,CAAA"}
1
+ {"version":3,"sources":["../../src/collections/Templates.ts"],"sourcesContent":["import type { CollectionConfig } from 'payload'\n\n/**\n * Templates Collection - Stores reusable Puck component configurations\n *\n * This collection stores serialized Puck component data that can be\n * loaded into Template components for reuse across pages.\n */\nexport const TemplatesCollection: CollectionConfig = {\n slug: 'puck-templates',\n admin: {\n useAsTitle: 'name',\n group: 'Puck',\n defaultColumns: ['name', 'category', 'updatedAt'],\n description: 'Reusable component templates for the visual editor',\n },\n access: {\n read: () => true,\n create: ({ req }) => !!req.user,\n update: ({ req }) => !!req.user,\n delete: ({ req }) => !!req.user,\n },\n fields: [\n {\n name: 'name',\n type: 'text',\n required: true,\n admin: {\n description: 'A descriptive name for this template',\n },\n },\n {\n name: 'description',\n type: 'textarea',\n admin: {\n description: 'Optional description of what this template contains',\n },\n },\n {\n name: 'category',\n type: 'text',\n admin: {\n description: 'Category for organizing templates (e.g., \"Hero\", \"Footer\", \"CTA\")',\n },\n },\n {\n name: 'content',\n type: 'json',\n required: true,\n admin: {\n description: 'Serialized Puck component data',\n },\n },\n {\n name: 'thumbnail',\n type: 'text',\n admin: {\n description: 'Optional thumbnail URL for template preview',\n },\n },\n ],\n timestamps: true,\n}\n"],"names":["TemplatesCollection","slug","admin","useAsTitle","group","defaultColumns","description","access","read","create","req","user","update","delete","fields","name","type","required","timestamps"],"mappings":"AAEA;;;;;CAKC,GACD,OAAO,MAAMA,sBAAwC;IACnDC,MAAM;IACNC,OAAO;QACLC,YAAY;QACZC,OAAO;QACPC,gBAAgB;YAAC;YAAQ;YAAY;SAAY;QACjDC,aAAa;IACf;IACAC,QAAQ;QACNC,MAAM,IAAM;QACZC,QAAQ,CAAC,EAAEC,GAAG,EAAE,GAAK,CAAC,CAACA,IAAIC,IAAI;QAC/BC,QAAQ,CAAC,EAAEF,GAAG,EAAE,GAAK,CAAC,CAACA,IAAIC,IAAI;QAC/BE,QAAQ,CAAC,EAAEH,GAAG,EAAE,GAAK,CAAC,CAACA,IAAIC,IAAI;IACjC;IACAG,QAAQ;QACN;YACEC,MAAM;YACNC,MAAM;YACNC,UAAU;YACVf,OAAO;gBACLI,aAAa;YACf;QACF;QACA;YACES,MAAM;YACNC,MAAM;YACNd,OAAO;gBACLI,aAAa;YACf;QACF;QACA;YACES,MAAM;YACNC,MAAM;YACNd,OAAO;gBACLI,aAAa;YACf;QACF;QACA;YACES,MAAM;YACNC,MAAM;YACNC,UAAU;YACVf,OAAO;gBACLI,aAAa;YACf;QACF;QACA;YACES,MAAM;YACNC,MAAM;YACNd,OAAO;gBACLI,aAAa;YACf;QACF;KACD;IACDY,YAAY;AACd,EAAC"}
@@ -1,4 +1,4 @@
1
- import { type PaddingValue, type DimensionsValue, type BackgroundValue, type AnimationValue, type TransformValue, type ColorValue } from '../fields/shared';
1
+ import { type PaddingValue, type DimensionsValue, type BackgroundValue, type AnimationValue, type TransformValue, type ColorValue } from '../fields/shared.js';
2
2
  interface AccordionItemData {
3
3
  title: string;
4
4
  content: string;
@@ -15,6 +15,6 @@ export interface AccordionClientProps {
15
15
  animation: AnimationValue | null;
16
16
  customPadding: PaddingValue | null;
17
17
  }
18
- export declare function AccordionClient({ items, allowMultiple, textColor, margin, background, dimensions, transform, animation, customPadding, }: AccordionClientProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function AccordionClient({ items, allowMultiple, textColor, margin, background, dimensions, transform, animation, customPadding, }: AccordionClientProps): import("react").JSX.Element;
19
19
  export {};
20
20
  //# sourceMappingURL=AccordionClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionClient.d.ts","sourceRoot":"","sources":["../../src/components/AccordionClient.tsx"],"names":[],"mappings":"AAWA,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,kBAAkB,CAAA;AAGzB,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAiDD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,GACd,EAAE,oBAAoB,2CAiFtB"}
1
+ {"version":3,"file":"AccordionClient.d.ts","sourceRoot":"","sources":["../../src/components/AccordionClient.tsx"],"names":[],"mappings":"AAWA,OAAO,EAQL,KAAK,YAAY,EACjB,KAAK,eAAe,EACpB,KAAK,eAAe,EACpB,KAAK,cAAc,EACnB,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,qBAAqB,CAAA;AAG5B,UAAU,iBAAiB;IACzB,KAAK,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,CAAA;IACf,WAAW,EAAE,OAAO,CAAA;CACrB;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,iBAAiB,EAAE,CAAA;IAC1B,aAAa,EAAE,OAAO,CAAA;IACtB,SAAS,EAAE,UAAU,GAAG,IAAI,CAAA;IAC5B,MAAM,EAAE,YAAY,GAAG,IAAI,CAAA;IAC3B,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,UAAU,EAAE,eAAe,GAAG,IAAI,CAAA;IAClC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,SAAS,EAAE,cAAc,GAAG,IAAI,CAAA;IAChC,aAAa,EAAE,YAAY,GAAG,IAAI,CAAA;CACnC;AAiDD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,aAAa,EACb,SAAS,EACT,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,SAAS,EACT,aAAa,GACd,EAAE,oBAAoB,+BAiFtB"}
@@ -5,34 +5,62 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
5
  *
6
6
  * This is the actual interactive accordion that uses useState.
7
7
  * Imported by the server-safe AccordionConfig to enable client-side expansion.
8
- */
9
- import { useState } from 'react';
8
+ */ import { useState } from 'react';
10
9
  import { ChevronDown } from 'lucide-react';
11
- import { marginValueToCSS, paddingValueToCSS, dimensionsValueToCSS, backgroundValueToCSS, transformValueToCSS, colorValueToCSS, cn, } from '../fields/shared';
12
- import { AnimatedWrapper } from './AnimatedWrapper';
10
+ import { marginValueToCSS, paddingValueToCSS, dimensionsValueToCSS, backgroundValueToCSS, transformValueToCSS, colorValueToCSS, cn } from '../fields/shared.js';
11
+ import { AnimatedWrapper } from './AnimatedWrapper.js';
13
12
  // Accordion Item Component
14
- function AccordionItem({ item, isOpen, onToggle, textColorCSS, }) {
15
- const textStyle = textColorCSS ? { color: textColorCSS } : {};
16
- return (_jsxs("div", { className: "border-b border-border last:border-b-0", children: [_jsxs("button", { type: "button", onClick: onToggle, className: "flex w-full items-center justify-between py-4 px-4 text-left font-medium transition-all hover:bg-muted/50 text-foreground", style: textStyle, children: [_jsx("span", { children: item.title }), _jsx(ChevronDown, { className: cn('h-4 w-4 shrink-0 transition-transform duration-200', isOpen && 'rotate-180') })] }), _jsx("div", { className: cn('overflow-hidden transition-all duration-200', isOpen ? 'max-h-[1000px] opacity-100' : 'max-h-0 opacity-0'), children: _jsx("div", { className: "px-4 pb-4 text-muted-foreground", style: textColorCSS ? { color: textColorCSS } : undefined, children: item.content }) })] }));
13
+ function AccordionItem({ item, isOpen, onToggle, textColorCSS }) {
14
+ const textStyle = textColorCSS ? {
15
+ color: textColorCSS
16
+ } : {};
17
+ return /*#__PURE__*/ _jsxs("div", {
18
+ className: "border-b border-border last:border-b-0",
19
+ children: [
20
+ /*#__PURE__*/ _jsxs("button", {
21
+ type: "button",
22
+ onClick: onToggle,
23
+ className: "flex w-full items-center justify-between py-4 px-4 text-left font-medium transition-all hover:bg-muted/50 text-foreground",
24
+ style: textStyle,
25
+ children: [
26
+ /*#__PURE__*/ _jsx("span", {
27
+ children: item.title
28
+ }),
29
+ /*#__PURE__*/ _jsx(ChevronDown, {
30
+ className: cn('h-4 w-4 shrink-0 transition-transform duration-200', isOpen && 'rotate-180')
31
+ })
32
+ ]
33
+ }),
34
+ /*#__PURE__*/ _jsx("div", {
35
+ className: cn('overflow-hidden transition-all duration-200', isOpen ? 'max-h-[1000px] opacity-100' : 'max-h-0 opacity-0'),
36
+ children: /*#__PURE__*/ _jsx("div", {
37
+ className: "px-4 pb-4 text-muted-foreground",
38
+ style: textColorCSS ? {
39
+ color: textColorCSS
40
+ } : undefined,
41
+ children: item.content
42
+ })
43
+ })
44
+ ]
45
+ });
17
46
  }
18
- export function AccordionClient({ items, allowMultiple, textColor, margin, background, dimensions, transform, animation, customPadding, }) {
47
+ export function AccordionClient({ items, allowMultiple, textColor, margin, background, dimensions, transform, animation, customPadding }) {
19
48
  // Initialize open states from defaultOpen values
20
- const [openItems, setOpenItems] = useState(() => {
49
+ const [openItems, setOpenItems] = useState(()=>{
21
50
  const initialOpen = new Set();
22
- items?.forEach((item, index) => {
51
+ items?.forEach((item, index)=>{
23
52
  if (item.defaultOpen) {
24
53
  initialOpen.add(index);
25
54
  }
26
55
  });
27
56
  return initialOpen;
28
57
  });
29
- const handleToggle = (index) => {
30
- setOpenItems((prev) => {
58
+ const handleToggle = (index)=>{
59
+ setOpenItems((prev)=>{
31
60
  const newSet = new Set(prev);
32
61
  if (newSet.has(index)) {
33
62
  newSet.delete(index);
34
- }
35
- else {
63
+ } else {
36
64
  if (!allowMultiple) {
37
65
  newSet.clear();
38
66
  }
@@ -47,21 +75,52 @@ export function AccordionClient({ items, allowMultiple, textColor, margin, backg
47
75
  const accordionClasses = 'rounded-lg border border-border overflow-hidden bg-card';
48
76
  const backgroundStyles = backgroundValueToCSS(background);
49
77
  // Only apply background styles if explicitly set, otherwise let bg-card handle it
50
- const accordionStyle = backgroundStyles && Object.keys(backgroundStyles).length > 0
51
- ? backgroundStyles
52
- : {};
78
+ const accordionStyle = backgroundStyles && Object.keys(backgroundStyles).length > 0 ? backgroundStyles : {};
53
79
  const marginCSS = marginValueToCSS(margin);
54
80
  const paddingCSS = paddingValueToCSS(customPadding);
55
81
  const transformStyles = transformValueToCSS(transform);
56
82
  const style = {
57
83
  ...dimensionsStyles,
58
- ...(marginCSS ? { margin: marginCSS } : {}),
59
- ...(paddingCSS ? { padding: paddingCSS } : {}),
60
- ...transformStyles,
84
+ ...marginCSS ? {
85
+ margin: marginCSS
86
+ } : {},
87
+ ...paddingCSS ? {
88
+ padding: paddingCSS
89
+ } : {},
90
+ ...transformStyles
61
91
  };
62
92
  if (!items || items.length === 0) {
63
- return (_jsx(AnimatedWrapper, { animation: animation, children: _jsx("div", { style: Object.keys(style).length > 0 ? style : undefined, children: _jsx("div", { className: accordionClasses, style: accordionStyle, children: _jsx("div", { className: "p-4 text-center text-muted-foreground", children: "No accordion items. Add items in the editor." }) }) }) }));
93
+ return /*#__PURE__*/ _jsx(AnimatedWrapper, {
94
+ animation: animation,
95
+ children: /*#__PURE__*/ _jsx("div", {
96
+ style: Object.keys(style).length > 0 ? style : undefined,
97
+ children: /*#__PURE__*/ _jsx("div", {
98
+ className: accordionClasses,
99
+ style: accordionStyle,
100
+ children: /*#__PURE__*/ _jsx("div", {
101
+ className: "p-4 text-center text-muted-foreground",
102
+ children: "No accordion items. Add items in the editor."
103
+ })
104
+ })
105
+ })
106
+ });
64
107
  }
65
- return (_jsx(AnimatedWrapper, { animation: animation, children: _jsx("div", { style: Object.keys(style).length > 0 ? style : undefined, children: _jsx("div", { className: accordionClasses, style: accordionStyle, children: items.map((item, index) => (_jsx(AccordionItem, { item: item, isOpen: openItems.has(index), onToggle: () => handleToggle(index), textColorCSS: textColorCSS }, index))) }) }) }));
108
+ return /*#__PURE__*/ _jsx(AnimatedWrapper, {
109
+ animation: animation,
110
+ children: /*#__PURE__*/ _jsx("div", {
111
+ style: Object.keys(style).length > 0 ? style : undefined,
112
+ children: /*#__PURE__*/ _jsx("div", {
113
+ className: accordionClasses,
114
+ style: accordionStyle,
115
+ children: items.map((item, index)=>/*#__PURE__*/ _jsx(AccordionItem, {
116
+ item: item,
117
+ isOpen: openItems.has(index),
118
+ onToggle: ()=>handleToggle(index),
119
+ textColorCSS: textColorCSS
120
+ }, index))
121
+ })
122
+ })
123
+ });
66
124
  }
125
+
67
126
  //# sourceMappingURL=AccordionClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"AccordionClient.js","sourceRoot":"","sources":["../../src/components/AccordionClient.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/components/AccordionClient.tsx"],"sourcesContent":["'use client'\n\n/**\n * AccordionClient - Client component for accordion interactivity\n *\n * This is the actual interactive accordion that uses useState.\n * Imported by the server-safe AccordionConfig to enable client-side expansion.\n */\n\nimport { useState } from 'react'\nimport { ChevronDown } from 'lucide-react'\nimport {\n marginValueToCSS,\n paddingValueToCSS,\n dimensionsValueToCSS,\n backgroundValueToCSS,\n transformValueToCSS,\n colorValueToCSS,\n cn,\n type PaddingValue,\n type DimensionsValue,\n type BackgroundValue,\n type AnimationValue,\n type TransformValue,\n type ColorValue,\n} from '../fields/shared.js'\nimport { AnimatedWrapper } from './AnimatedWrapper.js'\n\ninterface AccordionItemData {\n title: string\n content: string\n defaultOpen: boolean\n}\n\nexport interface AccordionClientProps {\n items: AccordionItemData[]\n allowMultiple: boolean\n textColor: ColorValue | null\n margin: PaddingValue | null\n background: BackgroundValue | null\n dimensions: DimensionsValue | null\n transform: TransformValue | null\n animation: AnimationValue | null\n customPadding: PaddingValue | null\n}\n\n// Accordion Item Component\nfunction AccordionItem({\n item,\n isOpen,\n onToggle,\n textColorCSS,\n}: {\n item: AccordionItemData\n isOpen: boolean\n onToggle: () => void\n textColorCSS?: string\n}) {\n const textStyle: React.CSSProperties = textColorCSS ? { color: textColorCSS } : {}\n\n return (\n <div className=\"border-b border-border last:border-b-0\">\n <button\n type=\"button\"\n onClick={onToggle}\n className=\"flex w-full items-center justify-between py-4 px-4 text-left font-medium transition-all hover:bg-muted/50 text-foreground\"\n style={textStyle}\n >\n <span>{item.title}</span>\n <ChevronDown\n className={cn(\n 'h-4 w-4 shrink-0 transition-transform duration-200',\n isOpen && 'rotate-180'\n )}\n />\n </button>\n <div\n className={cn(\n 'overflow-hidden transition-all duration-200',\n isOpen ? 'max-h-[1000px] opacity-100' : 'max-h-0 opacity-0'\n )}\n >\n <div\n className=\"px-4 pb-4 text-muted-foreground\"\n style={textColorCSS ? { color: textColorCSS } : undefined}\n >\n {item.content}\n </div>\n </div>\n </div>\n )\n}\n\nexport function AccordionClient({\n items,\n allowMultiple,\n textColor,\n margin,\n background,\n dimensions,\n transform,\n animation,\n customPadding,\n}: AccordionClientProps) {\n // Initialize open states from defaultOpen values\n const [openItems, setOpenItems] = useState<Set<number>>(() => {\n const initialOpen = new Set<number>()\n items?.forEach((item, index) => {\n if (item.defaultOpen) {\n initialOpen.add(index)\n }\n })\n return initialOpen\n })\n\n const handleToggle = (index: number) => {\n setOpenItems((prev) => {\n const newSet = new Set(prev)\n if (newSet.has(index)) {\n newSet.delete(index)\n } else {\n if (!allowMultiple) {\n newSet.clear()\n }\n newSet.add(index)\n }\n return newSet\n })\n }\n\n const textColorCSS = colorValueToCSS(textColor)\n const dimensionsStyles = dimensionsValueToCSS(dimensions)\n\n // Theme-aware classes - uses CSS variables for colors\n const accordionClasses = 'rounded-lg border border-border overflow-hidden bg-card'\n\n const backgroundStyles = backgroundValueToCSS(background)\n // Only apply background styles if explicitly set, otherwise let bg-card handle it\n const accordionStyle: React.CSSProperties = backgroundStyles && Object.keys(backgroundStyles).length > 0\n ? backgroundStyles\n : {}\n\n const marginCSS = marginValueToCSS(margin)\n const paddingCSS = paddingValueToCSS(customPadding)\n const transformStyles = transformValueToCSS(transform)\n\n const style: React.CSSProperties = {\n ...dimensionsStyles,\n ...(marginCSS ? { margin: marginCSS } : {}),\n ...(paddingCSS ? { padding: paddingCSS } : {}),\n ...transformStyles,\n }\n\n if (!items || items.length === 0) {\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={accordionClasses} style={accordionStyle}>\n <div className=\"p-4 text-center text-muted-foreground\">\n No accordion items. Add items in the editor.\n </div>\n </div>\n </div>\n </AnimatedWrapper>\n )\n }\n\n return (\n <AnimatedWrapper animation={animation}>\n <div style={Object.keys(style).length > 0 ? style : undefined}>\n <div className={accordionClasses} style={accordionStyle}>\n {items.map((item, index) => (\n <AccordionItem\n key={index}\n item={item}\n isOpen={openItems.has(index)}\n onToggle={() => handleToggle(index)}\n textColorCSS={textColorCSS}\n />\n ))}\n </div>\n </div>\n </AnimatedWrapper>\n )\n}\n"],"names":["useState","ChevronDown","marginValueToCSS","paddingValueToCSS","dimensionsValueToCSS","backgroundValueToCSS","transformValueToCSS","colorValueToCSS","cn","AnimatedWrapper","AccordionItem","item","isOpen","onToggle","textColorCSS","textStyle","color","div","className","button","type","onClick","style","span","title","undefined","content","AccordionClient","items","allowMultiple","textColor","margin","background","dimensions","transform","animation","customPadding","openItems","setOpenItems","initialOpen","Set","forEach","index","defaultOpen","add","handleToggle","prev","newSet","has","delete","clear","dimensionsStyles","accordionClasses","backgroundStyles","accordionStyle","Object","keys","length","marginCSS","paddingCSS","transformStyles","padding","map"],"mappings":"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"}
@@ -6,7 +6,7 @@
6
6
  * Supports 27 animation presets with customizable intensity, easing, and origin.
7
7
  */
8
8
  import type { ReactNode, CSSProperties, ElementType } from 'react';
9
- import { type AnimationValue } from '../fields/shared';
9
+ import { type AnimationValue } from '../fields/shared.js';
10
10
  export interface AnimatedWrapperProps {
11
11
  /** Animation configuration from the component */
12
12
  animation: AnimationValue | null | undefined;
@@ -29,5 +29,5 @@ export interface AnimatedWrapperProps {
29
29
  *
30
30
  * If no animation is set, renders children without a wrapper div.
31
31
  */
32
- export declare function AnimatedWrapper({ animation, children, className, style, as: Component, }: AnimatedWrapperProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function AnimatedWrapper({ animation, children, className, style, as: Component, }: AnimatedWrapperProps): import("react").JSX.Element;
33
33
  //# sourceMappingURL=AnimatedWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"AnimatedWrapper.d.ts","sourceRoot":"","sources":["../../src/components/AnimatedWrapper.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAA;IAC5C,+BAA+B;IAC/B,QAAQ,EAAE,SAAS,CAAA;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,iDAAiD;IACjD,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,EACL,EAAE,EAAE,SAAiB,GACtB,EAAE,oBAAoB,2CAuEtB"}
1
+ {"version":3,"file":"AnimatedWrapper.d.ts","sourceRoot":"","sources":["../../src/components/AnimatedWrapper.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAElE,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,qBAAqB,CAAA;AAE5B,MAAM,WAAW,oBAAoB;IACnC,iDAAiD;IACjD,SAAS,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,CAAA;IAC5C,+BAA+B;IAC/B,QAAQ,EAAE,SAAS,CAAA;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,oBAAoB;IACpB,KAAK,CAAC,EAAE,aAAa,CAAA;IACrB,iDAAiD;IACjD,EAAE,CAAC,EAAE,WAAW,CAAA;CACjB;AAED;;;;;;;;;GASG;AACH,wBAAgB,eAAe,CAAC,EAC9B,SAAS,EACT,QAAQ,EACR,SAAS,EACT,KAAK,EACL,EAAE,EAAE,SAAiB,GACtB,EAAE,oBAAoB,+BAuEtB"}