@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
@@ -4,13 +4,12 @@
4
4
  *
5
5
  * Uses IntersectionObserver to detect when an element enters the viewport.
6
6
  * Perfect for triggering entrance animations, lazy loading, or scroll-based effects.
7
- */
8
- import { useRef, useState, useEffect, useCallback } from 'react';
7
+ */ import { useRef, useState, useEffect, useCallback } from 'react';
9
8
  // =============================================================================
10
9
  // Hook Implementation
11
10
  // =============================================================================
12
11
  export function useScrollAnimation(options = {}) {
13
- const { triggerOnScroll = true, threshold = 0.1, once = true, rootMargin = '0px', delay = 0, } = options;
12
+ const { triggerOnScroll = true, threshold = 0.1, once = true, rootMargin = '0px', delay = 0 } = options;
14
13
  const ref = useRef(null);
15
14
  // Always start with isInView: false to allow initial → animate transition
16
15
  const [isInView, setIsInView] = useState(false);
@@ -18,7 +17,7 @@ export function useScrollAnimation(options = {}) {
18
17
  const timeoutRef = useRef(null);
19
18
  const hasMountedRef = useRef(false);
20
19
  // Reset function
21
- const reset = useCallback(() => {
20
+ const reset = useCallback(()=>{
22
21
  setIsInView(false);
23
22
  setHasAnimated(false);
24
23
  hasMountedRef.current = false;
@@ -27,24 +26,22 @@ export function useScrollAnimation(options = {}) {
27
26
  timeoutRef.current = null;
28
27
  }
29
28
  }, []);
30
- useEffect(() => {
29
+ useEffect(()=>{
31
30
  // If not triggering on scroll, animate immediately after mount
32
31
  // Use requestAnimationFrame to ensure the initial state is rendered first
33
32
  if (!triggerOnScroll) {
34
33
  // Skip if already mounted (prevents re-triggering on re-renders)
35
- if (hasMountedRef.current)
36
- return;
34
+ if (hasMountedRef.current) return;
37
35
  hasMountedRef.current = true;
38
36
  // Use double RAF to ensure browser has painted initial state
39
- requestAnimationFrame(() => {
40
- requestAnimationFrame(() => {
37
+ requestAnimationFrame(()=>{
38
+ requestAnimationFrame(()=>{
41
39
  if (delay > 0) {
42
- timeoutRef.current = setTimeout(() => {
40
+ timeoutRef.current = setTimeout(()=>{
43
41
  setIsInView(true);
44
42
  setHasAnimated(true);
45
43
  }, delay);
46
- }
47
- else {
44
+ } else {
48
45
  setIsInView(true);
49
46
  setHasAnimated(true);
50
47
  }
@@ -57,26 +54,24 @@ export function useScrollAnimation(options = {}) {
57
54
  return;
58
55
  }
59
56
  const element = ref.current;
60
- if (!element)
61
- return;
57
+ if (!element) return;
62
58
  // Check if IntersectionObserver is available (SSR safety)
63
59
  if (typeof IntersectionObserver === 'undefined') {
64
60
  setIsInView(true);
65
61
  setHasAnimated(true);
66
62
  return;
67
63
  }
68
- const observer = new IntersectionObserver((entries) => {
64
+ const observer = new IntersectionObserver((entries)=>{
69
65
  const [entry] = entries;
70
66
  const inView = entry.isIntersecting;
71
67
  if (inView) {
72
68
  if (delay > 0) {
73
69
  // Apply delay before setting isInView
74
- timeoutRef.current = setTimeout(() => {
70
+ timeoutRef.current = setTimeout(()=>{
75
71
  setIsInView(true);
76
72
  setHasAnimated(true);
77
73
  }, delay);
78
- }
79
- else {
74
+ } else {
80
75
  setIsInView(true);
81
76
  setHasAnimated(true);
82
77
  }
@@ -84,8 +79,7 @@ export function useScrollAnimation(options = {}) {
84
79
  if (once) {
85
80
  observer.disconnect();
86
81
  }
87
- }
88
- else if (!once) {
82
+ } else if (!once) {
89
83
  // Only update isInView to false if not in once mode
90
84
  if (timeoutRef.current) {
91
85
  clearTimeout(timeoutRef.current);
@@ -95,22 +89,30 @@ export function useScrollAnimation(options = {}) {
95
89
  }
96
90
  }, {
97
91
  threshold,
98
- rootMargin,
92
+ rootMargin
99
93
  });
100
94
  observer.observe(element);
101
- return () => {
95
+ return ()=>{
102
96
  observer.disconnect();
103
97
  if (timeoutRef.current) {
104
98
  clearTimeout(timeoutRef.current);
105
99
  timeoutRef.current = null;
106
100
  }
107
101
  };
108
- }, [triggerOnScroll, threshold, once, rootMargin, delay, hasAnimated]);
102
+ }, [
103
+ triggerOnScroll,
104
+ threshold,
105
+ once,
106
+ rootMargin,
107
+ delay,
108
+ hasAnimated
109
+ ]);
109
110
  return {
110
111
  ref,
111
112
  isInView,
112
113
  hasAnimated,
113
- reset,
114
+ reset
114
115
  };
115
116
  }
117
+
116
118
  //# sourceMappingURL=useScrollAnimation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"useScrollAnimation.js","sourceRoot":"","sources":["../../src/hooks/useScrollAnimation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/hooks/useScrollAnimation.ts"],"sourcesContent":["'use client'\n\n/**\n * useScrollAnimation - Hook for scroll-triggered animations\n *\n * Uses IntersectionObserver to detect when an element enters the viewport.\n * Perfect for triggering entrance animations, lazy loading, or scroll-based effects.\n */\n\nimport { useRef, useState, useEffect, useCallback } from 'react'\n\n// =============================================================================\n// Types\n// =============================================================================\n\nexport interface UseScrollAnimationOptions {\n /**\n * Whether to trigger animation on scroll into view.\n * If false, isInView will always be true.\n * @default true\n */\n triggerOnScroll?: boolean\n\n /**\n * Threshold for intersection (0-1).\n * 0 = trigger as soon as any pixel is visible.\n * 1 = trigger only when fully visible.\n * @default 0.1\n */\n threshold?: number\n\n /**\n * Whether to only trigger once.\n * If true, hasAnimated will stay true after first trigger.\n * @default true\n */\n once?: boolean\n\n /**\n * Root margin for intersection observer.\n * Allows triggering before/after the element enters the viewport.\n * @example \"-50px\" // Trigger 50px before entering viewport\n * @example \"100px 0px\" // 100px top/bottom, 0px left/right\n * @default \"0px\"\n */\n rootMargin?: string\n\n /**\n * Delay in milliseconds before setting isInView to true.\n * Useful for staggering animations.\n * @default 0\n */\n delay?: number\n}\n\nexport interface UseScrollAnimationResult<T extends HTMLElement = HTMLElement> {\n /**\n * Ref to attach to the element you want to observe\n */\n ref: React.RefObject<T | null>\n\n /**\n * Whether the element is currently in view\n */\n isInView: boolean\n\n /**\n * Whether the element has ever been in view\n * (useful for once-only animations)\n */\n hasAnimated: boolean\n\n /**\n * Manually reset the animation state\n */\n reset: () => void\n}\n\n// =============================================================================\n// Hook Implementation\n// =============================================================================\n\nexport function useScrollAnimation<T extends HTMLElement = HTMLElement>(\n options: UseScrollAnimationOptions = {}\n): UseScrollAnimationResult<T> {\n const {\n triggerOnScroll = true,\n threshold = 0.1,\n once = true,\n rootMargin = '0px',\n delay = 0,\n } = options\n\n const ref = useRef<T | null>(null)\n // Always start with isInView: false to allow initial → animate transition\n const [isInView, setIsInView] = useState(false)\n const [hasAnimated, setHasAnimated] = useState(false)\n const timeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null)\n const hasMountedRef = useRef(false)\n\n // Reset function\n const reset = useCallback(() => {\n setIsInView(false)\n setHasAnimated(false)\n hasMountedRef.current = false\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n timeoutRef.current = null\n }\n }, [])\n\n useEffect(() => {\n // If not triggering on scroll, animate immediately after mount\n // Use requestAnimationFrame to ensure the initial state is rendered first\n if (!triggerOnScroll) {\n // Skip if already mounted (prevents re-triggering on re-renders)\n if (hasMountedRef.current) return\n hasMountedRef.current = true\n\n // Use double RAF to ensure browser has painted initial state\n requestAnimationFrame(() => {\n requestAnimationFrame(() => {\n if (delay > 0) {\n timeoutRef.current = setTimeout(() => {\n setIsInView(true)\n setHasAnimated(true)\n }, delay)\n } else {\n setIsInView(true)\n setHasAnimated(true)\n }\n })\n })\n return\n }\n\n // If once mode and already animated, skip observer setup\n if (once && hasAnimated) {\n return\n }\n\n const element = ref.current\n if (!element) return\n\n // Check if IntersectionObserver is available (SSR safety)\n if (typeof IntersectionObserver === 'undefined') {\n setIsInView(true)\n setHasAnimated(true)\n return\n }\n\n const observer = new IntersectionObserver(\n (entries) => {\n const [entry] = entries\n const inView = entry.isIntersecting\n\n if (inView) {\n if (delay > 0) {\n // Apply delay before setting isInView\n timeoutRef.current = setTimeout(() => {\n setIsInView(true)\n setHasAnimated(true)\n }, delay)\n } else {\n setIsInView(true)\n setHasAnimated(true)\n }\n\n // If once mode, disconnect observer after triggering\n if (once) {\n observer.disconnect()\n }\n } else if (!once) {\n // Only update isInView to false if not in once mode\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n timeoutRef.current = null\n }\n setIsInView(false)\n }\n },\n {\n threshold,\n rootMargin,\n }\n )\n\n observer.observe(element)\n\n return () => {\n observer.disconnect()\n if (timeoutRef.current) {\n clearTimeout(timeoutRef.current)\n timeoutRef.current = null\n }\n }\n }, [triggerOnScroll, threshold, once, rootMargin, delay, hasAnimated])\n\n return {\n ref,\n isInView,\n hasAnimated,\n reset,\n }\n}\n"],"names":["useRef","useState","useEffect","useCallback","useScrollAnimation","options","triggerOnScroll","threshold","once","rootMargin","delay","ref","isInView","setIsInView","hasAnimated","setHasAnimated","timeoutRef","hasMountedRef","reset","current","clearTimeout","requestAnimationFrame","setTimeout","element","IntersectionObserver","observer","entries","entry","inView","isIntersecting","disconnect","observe"],"mappings":"AAAA;AAEA;;;;;CAKC,GAED,SAASA,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,WAAW,QAAQ,QAAO;AAqEhE,gFAAgF;AAChF,sBAAsB;AACtB,gFAAgF;AAEhF,OAAO,SAASC,mBACdC,UAAqC,CAAC,CAAC;IAEvC,MAAM,EACJC,kBAAkB,IAAI,EACtBC,YAAY,GAAG,EACfC,OAAO,IAAI,EACXC,aAAa,KAAK,EAClBC,QAAQ,CAAC,EACV,GAAGL;IAEJ,MAAMM,MAAMX,OAAiB;IAC7B,0EAA0E;IAC1E,MAAM,CAACY,UAAUC,YAAY,GAAGZ,SAAS;IACzC,MAAM,CAACa,aAAaC,eAAe,GAAGd,SAAS;IAC/C,MAAMe,aAAahB,OAA6C;IAChE,MAAMiB,gBAAgBjB,OAAO;IAE7B,iBAAiB;IACjB,MAAMkB,QAAQf,YAAY;QACxBU,YAAY;QACZE,eAAe;QACfE,cAAcE,OAAO,GAAG;QACxB,IAAIH,WAAWG,OAAO,EAAE;YACtBC,aAAaJ,WAAWG,OAAO;YAC/BH,WAAWG,OAAO,GAAG;QACvB;IACF,GAAG,EAAE;IAELjB,UAAU;QACR,+DAA+D;QAC/D,0EAA0E;QAC1E,IAAI,CAACI,iBAAiB;YACpB,iEAAiE;YACjE,IAAIW,cAAcE,OAAO,EAAE;YAC3BF,cAAcE,OAAO,GAAG;YAExB,6DAA6D;YAC7DE,sBAAsB;gBACpBA,sBAAsB;oBACpB,IAAIX,QAAQ,GAAG;wBACbM,WAAWG,OAAO,GAAGG,WAAW;4BAC9BT,YAAY;4BACZE,eAAe;wBACjB,GAAGL;oBACL,OAAO;wBACLG,YAAY;wBACZE,eAAe;oBACjB;gBACF;YACF;YACA;QACF;QAEA,yDAAyD;QACzD,IAAIP,QAAQM,aAAa;YACvB;QACF;QAEA,MAAMS,UAAUZ,IAAIQ,OAAO;QAC3B,IAAI,CAACI,SAAS;QAEd,0DAA0D;QAC1D,IAAI,OAAOC,yBAAyB,aAAa;YAC/CX,YAAY;YACZE,eAAe;YACf;QACF;QAEA,MAAMU,WAAW,IAAID,qBACnB,CAACE;YACC,MAAM,CAACC,MAAM,GAAGD;YAChB,MAAME,SAASD,MAAME,cAAc;YAEnC,IAAID,QAAQ;gBACV,IAAIlB,QAAQ,GAAG;oBACb,sCAAsC;oBACtCM,WAAWG,OAAO,GAAGG,WAAW;wBAC9BT,YAAY;wBACZE,eAAe;oBACjB,GAAGL;gBACL,OAAO;oBACLG,YAAY;oBACZE,eAAe;gBACjB;gBAEA,qDAAqD;gBACrD,IAAIP,MAAM;oBACRiB,SAASK,UAAU;gBACrB;YACF,OAAO,IAAI,CAACtB,MAAM;gBAChB,oDAAoD;gBACpD,IAAIQ,WAAWG,OAAO,EAAE;oBACtBC,aAAaJ,WAAWG,OAAO;oBAC/BH,WAAWG,OAAO,GAAG;gBACvB;gBACAN,YAAY;YACd;QACF,GACA;YACEN;YACAE;QACF;QAGFgB,SAASM,OAAO,CAACR;QAEjB,OAAO;YACLE,SAASK,UAAU;YACnB,IAAId,WAAWG,OAAO,EAAE;gBACtBC,aAAaJ,WAAWG,OAAO;gBAC/BH,WAAWG,OAAO,GAAG;YACvB;QACF;IACF,GAAG;QAACb;QAAiBC;QAAWC;QAAMC;QAAYC;QAAOI;KAAY;IAErE,OAAO;QACLH;QACAC;QACAE;QACAI;IACF;AACF"}
package/dist/index.d.ts CHANGED
@@ -59,8 +59,8 @@
59
59
  * })
60
60
  * ```
61
61
  */
62
- export * from './types';
63
- export { createPuckPlugin, generatePagesCollection, generatePuckEditField, TemplatesCollection, } from './plugin';
64
- export { getPuckFields, puckDataField, editorVersionField, createEditorVersionField, pageLayoutField, createPageLayoutField, isHomepageField, seoFieldGroup, conversionFieldGroup, } from './plugin';
65
- export type { GetPuckFieldsOptions } from './plugin/fields/types';
62
+ export * from './types/index.js';
63
+ export { createPuckPlugin, generatePagesCollection, generatePuckEditField, TemplatesCollection, } from './plugin/index.js';
64
+ export { getPuckFields, puckDataField, editorVersionField, createEditorVersionField, pageLayoutField, createPageLayoutField, isHomepageField, seoFieldGroup, conversionFieldGroup, } from './plugin/index.js';
65
+ export type { GetPuckFieldsOptions } from './plugin/fields/types.js';
66
66
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAGH,cAAc,SAAS,CAAA;AAGvB,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,UAAU,CAAA;AAGjB,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,oBAAoB,GACrB,MAAM,UAAU,CAAA;AAGjB,YAAY,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAGH,cAAc,kBAAkB,CAAA;AAGhC,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,mBAAmB,CAAA;AAG1B,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAG1B,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAA"}
package/dist/index.js CHANGED
@@ -58,11 +58,11 @@
58
58
  * },
59
59
  * })
60
60
  * ```
61
- */
62
- // Re-export all types
63
- export * from './types';
61
+ */ // Re-export all types
62
+ export * from './types/index.js';
64
63
  // Re-export plugin utilities
65
- export { createPuckPlugin, generatePagesCollection, generatePuckEditField, TemplatesCollection, } from './plugin';
64
+ export { createPuckPlugin, generatePagesCollection, generatePuckEditField, TemplatesCollection } from './plugin/index.js';
66
65
  // Re-export field utilities for hybrid collection integration
67
- export { getPuckFields, puckDataField, editorVersionField, createEditorVersionField, pageLayoutField, createPageLayoutField, isHomepageField, seoFieldGroup, conversionFieldGroup, } from './plugin';
66
+ export { getPuckFields, puckDataField, editorVersionField, createEditorVersionField, pageLayoutField, createPageLayoutField, isHomepageField, seoFieldGroup, conversionFieldGroup } from './plugin/index.js';
67
+
68
68
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4DG;AAEH,sBAAsB;AACtB,cAAc,SAAS,CAAA;AAEvB,6BAA6B;AAC7B,OAAO,EACL,gBAAgB,EAChB,uBAAuB,EACvB,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,UAAU,CAAA;AAEjB,8DAA8D;AAC9D,OAAO,EACL,aAAa,EACb,aAAa,EACb,kBAAkB,EAClB,wBAAwB,EACxB,eAAe,EACf,qBAAqB,EACrB,eAAe,EACf,aAAa,EACb,oBAAoB,GACrB,MAAM,UAAU,CAAA"}
1
+ {"version":3,"sources":["../src/index.ts"],"sourcesContent":["/**\n * @delmaredigital/payload-puck\n *\n * A portable PayloadCMS plugin for Puck visual page builder integration.\n *\n * @example\n * ```typescript\n * // In payload.config.ts\n * import { createPuckPlugin } from '@delmaredigital/payload-puck/plugin'\n *\n * export default buildConfig({\n * plugins: [\n * createPuckPlugin({\n * pagesCollection: 'pages',\n * }),\n * ],\n * })\n * ```\n *\n * @example\n * ```typescript\n * // Using config for rendering\n * import { baseConfig } from '@delmaredigital/payload-puck/config'\n * import { PageRenderer } from '@delmaredigital/payload-puck/render'\n *\n * <PageRenderer data={page.puckData} config={baseConfig} />\n * ```\n *\n * @example\n * ```typescript\n * // Merging custom components\n * import { mergeConfigs, editorConfig } from '@delmaredigital/payload-puck/config/editor'\n *\n * const customConfig = mergeConfigs({\n * base: editorConfig,\n * components: {\n * CustomHero: myHeroConfig,\n * },\n * categories: {\n * custom: { title: 'Custom', components: ['CustomHero'] },\n * },\n * })\n * ```\n *\n * @example\n * ```typescript\n * // Creating API routes\n * // src/app/api/puck/pages/route.ts\n * import { createPuckApiRoutes } from '@delmaredigital/payload-puck/api'\n *\n * export const { GET, POST } = createPuckApiRoutes({\n * auth: {\n * authenticate: async (request) => {\n * const session = await getSession(request)\n * if (!session?.user) return { authenticated: false }\n * return { authenticated: true, user: session.user }\n * },\n * },\n * })\n * ```\n */\n\n// Re-export all types\nexport * from './types/index.js'\n\n// Re-export plugin utilities\nexport {\n createPuckPlugin,\n generatePagesCollection,\n generatePuckEditField,\n TemplatesCollection,\n} from './plugin/index.js'\n\n// Re-export field utilities for hybrid collection integration\nexport {\n getPuckFields,\n puckDataField,\n editorVersionField,\n createEditorVersionField,\n pageLayoutField,\n createPageLayoutField,\n isHomepageField,\n seoFieldGroup,\n conversionFieldGroup,\n} from './plugin/index.js'\n\n// Re-export field types\nexport type { GetPuckFieldsOptions } from './plugin/fields/types.js'\n"],"names":["createPuckPlugin","generatePagesCollection","generatePuckEditField","TemplatesCollection","getPuckFields","puckDataField","editorVersionField","createEditorVersionField","pageLayoutField","createPageLayoutField","isHomepageField","seoFieldGroup","conversionFieldGroup"],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4DC,GAED,sBAAsB;AACtB,cAAc,mBAAkB;AAEhC,6BAA6B;AAC7B,SACEA,gBAAgB,EAChBC,uBAAuB,EACvBC,qBAAqB,EACrBC,mBAAmB,QACd,oBAAmB;AAE1B,8DAA8D;AAC9D,SACEC,aAAa,EACbC,aAAa,EACbC,kBAAkB,EAClBC,wBAAwB,EACxBC,eAAe,EACfC,qBAAqB,EACrBC,eAAe,EACfC,aAAa,EACbC,oBAAoB,QACf,oBAAmB"}
@@ -4,8 +4,8 @@
4
4
  * Wraps page content with layout-specific styling and structure.
5
5
  */
6
6
  import type { ReactNode } from 'react';
7
- import type { LayoutDefinition } from './types';
8
- import { type BackgroundValue } from '../fields/shared';
7
+ import type { LayoutDefinition } from './types.js';
8
+ import { type BackgroundValue } from '../fields/shared.js';
9
9
  /**
10
10
  * Page-level overrides for layout settings
11
11
  */
@@ -29,5 +29,5 @@ export interface LayoutWrapperProps {
29
29
  /**
30
30
  * Applies layout configuration to page content
31
31
  */
32
- export declare function LayoutWrapper({ children, layout, className, overrides }: LayoutWrapperProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function LayoutWrapper({ children, layout, className, overrides }: LayoutWrapperProps): import("react").JSX.Element;
33
33
  //# sourceMappingURL=LayoutWrapper.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutWrapper.d.ts","sourceRoot":"","sources":["../../src/layouts/LayoutWrapper.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAA;AAC/C,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAA;AAE7E;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,iFAAiF;IACjF,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,wDAAwD;IACxD,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACnC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gDAAgD;IAChD,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B;AAeD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,kBAAkB,2CA8J3F"}
1
+ {"version":3,"file":"LayoutWrapper.d.ts","sourceRoot":"","sources":["../../src/layouts/LayoutWrapper.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAiB,MAAM,OAAO,CAAA;AACrD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAA;AAClD,OAAO,EAAwB,KAAK,eAAe,EAAE,MAAM,qBAAqB,CAAA;AAEhF;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,iFAAiF;IACjF,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,iFAAiF;IACjF,UAAU,CAAC,EAAE,SAAS,GAAG,MAAM,GAAG,MAAM,CAAA;IACxC,wDAAwD;IACxD,UAAU,CAAC,EAAE,eAAe,GAAG,IAAI,CAAA;IACnC,sEAAsE;IACtE,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,SAAS,CAAA;IACnB,MAAM,CAAC,EAAE,gBAAgB,CAAA;IACzB,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,gDAAgD;IAChD,SAAS,CAAC,EAAE,aAAa,CAAA;CAC1B;AAeD;;GAEG;AACH,wBAAgB,aAAa,CAAC,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,kBAAkB,+BA8J3F"}
@@ -1,112 +1,176 @@
1
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { backgroundValueToCSS } from '../fields/shared';
1
+ /**
2
+ * Layout Wrapper Component
3
+ *
4
+ * Wraps page content with layout-specific styling and structure.
5
+ */ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
6
+ import { backgroundValueToCSS } from '../fields/shared.js';
3
7
  /**
4
8
  * Styles for sticky footer layout - pushes footer to bottom of viewport
5
- */
6
- const stickyFooterContainerStyle = {
9
+ */ const stickyFooterContainerStyle = {
7
10
  minHeight: '100vh',
8
11
  display: 'flex',
9
- flexDirection: 'column',
12
+ flexDirection: 'column'
10
13
  };
11
14
  const stickyFooterMainStyle = {
12
- flex: 1,
15
+ flex: 1
13
16
  };
14
17
  /**
15
18
  * Applies layout configuration to page content
16
- */
17
- export function LayoutWrapper({ children, layout, className, overrides }) {
19
+ */ export function LayoutWrapper({ children, layout, className, overrides }) {
18
20
  // No layout - render children directly (but still apply background if set)
19
21
  if (!layout) {
20
22
  if (overrides?.background) {
21
23
  const bgStyles = backgroundValueToCSS(overrides.background);
22
- return _jsx("div", { style: { minHeight: '100vh', ...bgStyles }, children: children });
24
+ return /*#__PURE__*/ _jsx("div", {
25
+ style: {
26
+ minHeight: '100vh',
27
+ ...bgStyles
28
+ },
29
+ children: children
30
+ });
23
31
  }
24
- return _jsx(_Fragment, { children: children });
32
+ return /*#__PURE__*/ _jsx(_Fragment, {
33
+ children: children
34
+ });
25
35
  }
26
36
  // Get header/footer components
27
37
  const Header = layout.header;
28
38
  const Footer = layout.footer;
29
39
  // Determine header/footer visibility based on overrides
30
- const shouldShowHeader = overrides?.showHeader === 'hide'
31
- ? false
32
- : overrides?.showHeader === 'show'
33
- ? true
34
- : !!Header;
35
- const shouldShowFooter = overrides?.showFooter === 'hide'
36
- ? false
37
- : overrides?.showFooter === 'show'
38
- ? true
39
- : !!Footer;
40
+ const shouldShowHeader = overrides?.showHeader === 'hide' ? false : overrides?.showHeader === 'show' ? true : !!Header;
41
+ const shouldShowFooter = overrides?.showFooter === 'hide' ? false : overrides?.showFooter === 'show' ? true : !!Footer;
40
42
  // Sticky footer is enabled by default - check for explicit false
41
43
  const useStickyFooter = layout.stickyFooter !== false;
42
44
  // Calculate main content style with sticky header offset
43
45
  const mainStyle = {
44
- ...(layout.stickyHeaderHeight && shouldShowHeader ? { paddingTop: layout.stickyHeaderHeight } : {}),
45
- ...(useStickyFooter ? stickyFooterMainStyle : {}),
46
+ ...layout.stickyHeaderHeight && shouldShowHeader ? {
47
+ paddingTop: layout.stickyHeaderHeight
48
+ } : {},
49
+ ...useStickyFooter ? stickyFooterMainStyle : {}
46
50
  };
47
51
  // Build outer container background styles
48
52
  // Page override takes precedence, then falls back to layout wrapper background
49
53
  const wrapperStyles = layout.styles?.wrapper;
50
- const outerBackgroundStyles = overrides?.background
51
- ? backgroundValueToCSS(overrides.background)
52
- : {
53
- ...(wrapperStyles?.background !== undefined
54
- ? { background: wrapperStyles.background }
55
- : {}),
56
- ...(wrapperStyles?.backgroundAttachment !== undefined
57
- ? { backgroundAttachment: wrapperStyles.backgroundAttachment }
58
- : {}),
59
- };
54
+ const outerBackgroundStyles = overrides?.background ? backgroundValueToCSS(overrides.background) : {
55
+ ...wrapperStyles?.background !== undefined ? {
56
+ background: wrapperStyles.background
57
+ } : {},
58
+ ...wrapperStyles?.backgroundAttachment !== undefined ? {
59
+ backgroundAttachment: wrapperStyles.backgroundAttachment
60
+ } : {}
61
+ };
60
62
  // Get effective max width (override or layout default)
61
- const effectiveMaxWidth = overrides?.maxWidth && overrides.maxWidth !== 'default'
62
- ? overrides.maxWidth
63
- : layout.maxWidth;
63
+ const effectiveMaxWidth = overrides?.maxWidth && overrides.maxWidth !== 'default' ? overrides.maxWidth : layout.maxWidth;
64
64
  // Helper to wrap content with sticky footer container if needed
65
- const wrapWithStickyFooter = (content) => {
65
+ const wrapWithStickyFooter = (content)=>{
66
66
  if (useStickyFooter) {
67
- return (_jsx("div", { style: { ...stickyFooterContainerStyle, ...outerBackgroundStyles }, children: content }));
67
+ return /*#__PURE__*/ _jsx("div", {
68
+ style: {
69
+ ...stickyFooterContainerStyle,
70
+ ...outerBackgroundStyles
71
+ },
72
+ children: content
73
+ });
68
74
  }
69
75
  // Non-sticky-footer: still apply background if set
70
76
  const hasBackground = Object.keys(outerBackgroundStyles).length > 0;
71
77
  if (hasBackground) {
72
- return _jsx("div", { style: { minHeight: '100vh', ...outerBackgroundStyles }, children: content });
78
+ return /*#__PURE__*/ _jsx("div", {
79
+ style: {
80
+ minHeight: '100vh',
81
+ ...outerBackgroundStyles
82
+ },
83
+ children: content
84
+ });
73
85
  }
74
- return _jsx(_Fragment, { children: content });
86
+ return /*#__PURE__*/ _jsx(_Fragment, {
87
+ children: content
88
+ });
75
89
  };
76
90
  // Custom wrapper component takes precedence
77
91
  if (layout.wrapper) {
78
92
  const CustomWrapper = layout.wrapper;
79
- return wrapWithStickyFooter(_jsxs(_Fragment, { children: [shouldShowHeader && Header && _jsx(Header, {}), _jsx("main", { style: Object.keys(mainStyle).length > 0 ? mainStyle : undefined, children: _jsx(CustomWrapper, { children: children }) }), shouldShowFooter && Footer && _jsx(Footer, {})] }));
93
+ return wrapWithStickyFooter(/*#__PURE__*/ _jsxs(_Fragment, {
94
+ children: [
95
+ shouldShowHeader && Header && /*#__PURE__*/ _jsx(Header, {}),
96
+ /*#__PURE__*/ _jsx("main", {
97
+ style: Object.keys(mainStyle).length > 0 ? mainStyle : undefined,
98
+ children: /*#__PURE__*/ _jsx(CustomWrapper, {
99
+ children: children
100
+ })
101
+ }),
102
+ shouldShowFooter && Footer && /*#__PURE__*/ _jsx(Footer, {})
103
+ ]
104
+ }));
80
105
  }
81
106
  // Build wrapper styles
82
107
  const wrapperStyle = {
83
- ...layout.styles?.wrapper,
108
+ ...layout.styles?.wrapper
84
109
  };
85
110
  // Build container styles with effective max width
86
111
  const containerStyle = {
87
- ...(effectiveMaxWidth && !layout.fullWidth ? { maxWidth: effectiveMaxWidth } : {}),
88
- ...layout.styles?.container,
112
+ ...effectiveMaxWidth && !layout.fullWidth ? {
113
+ maxWidth: effectiveMaxWidth
114
+ } : {},
115
+ ...layout.styles?.container
89
116
  };
90
117
  // Build content styles
91
118
  const contentStyle = {
92
- ...layout.styles?.content,
119
+ ...layout.styles?.content
93
120
  };
94
121
  // Build data attributes
95
122
  const dataAttrs = {
96
123
  'data-layout': layout.value,
97
- ...layout.dataAttributes,
124
+ ...layout.dataAttributes
98
125
  };
99
126
  // For landing/full-width layouts, render without container constraints
100
127
  if (layout.fullWidth) {
101
- return wrapWithStickyFooter(_jsxs(_Fragment, { children: [shouldShowHeader && Header && _jsx(Header, {}), _jsx("main", { className: [layout.classes?.wrapper, className].filter(Boolean).join(' ') || undefined, style: {
128
+ return wrapWithStickyFooter(/*#__PURE__*/ _jsxs(_Fragment, {
129
+ children: [
130
+ shouldShowHeader && Header && /*#__PURE__*/ _jsx(Header, {}),
131
+ /*#__PURE__*/ _jsx("main", {
132
+ className: [
133
+ layout.classes?.wrapper,
134
+ className
135
+ ].filter(Boolean).join(' ') || undefined,
136
+ style: {
102
137
  ...mainStyle,
103
- ...(Object.keys(wrapperStyle).length > 0 ? wrapperStyle : {}),
104
- }, ...dataAttrs, children: children }), shouldShowFooter && Footer && _jsx(Footer, {})] }));
138
+ ...Object.keys(wrapperStyle).length > 0 ? wrapperStyle : {}
139
+ },
140
+ ...dataAttrs,
141
+ children: children
142
+ }),
143
+ shouldShowFooter && Footer && /*#__PURE__*/ _jsx(Footer, {})
144
+ ]
145
+ }));
105
146
  }
106
147
  // Standard layout with container
107
- return wrapWithStickyFooter(_jsxs(_Fragment, { children: [shouldShowHeader && Header && _jsx(Header, {}), _jsx("main", { className: layout.classes?.wrapper || undefined, style: {
148
+ return wrapWithStickyFooter(/*#__PURE__*/ _jsxs(_Fragment, {
149
+ children: [
150
+ shouldShowHeader && Header && /*#__PURE__*/ _jsx(Header, {}),
151
+ /*#__PURE__*/ _jsx("main", {
152
+ className: layout.classes?.wrapper || undefined,
153
+ style: {
108
154
  ...mainStyle,
109
- ...(Object.keys(wrapperStyle).length > 0 ? wrapperStyle : {}),
110
- }, ...dataAttrs, children: _jsx("div", { className: [layout.classes?.container, className].filter(Boolean).join(' ') || undefined, style: Object.keys(containerStyle).length > 0 ? containerStyle : undefined, children: _jsx("div", { className: layout.classes?.content || undefined, style: Object.keys(contentStyle).length > 0 ? contentStyle : undefined, children: children }) }) }), shouldShowFooter && Footer && _jsx(Footer, {})] }));
155
+ ...Object.keys(wrapperStyle).length > 0 ? wrapperStyle : {}
156
+ },
157
+ ...dataAttrs,
158
+ children: /*#__PURE__*/ _jsx("div", {
159
+ className: [
160
+ layout.classes?.container,
161
+ className
162
+ ].filter(Boolean).join(' ') || undefined,
163
+ style: Object.keys(containerStyle).length > 0 ? containerStyle : undefined,
164
+ children: /*#__PURE__*/ _jsx("div", {
165
+ className: layout.classes?.content || undefined,
166
+ style: Object.keys(contentStyle).length > 0 ? contentStyle : undefined,
167
+ children: children
168
+ })
169
+ })
170
+ }),
171
+ shouldShowFooter && Footer && /*#__PURE__*/ _jsx(Footer, {})
172
+ ]
173
+ }));
111
174
  }
175
+
112
176
  //# sourceMappingURL=LayoutWrapper.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LayoutWrapper.js","sourceRoot":"","sources":["../../src/layouts/LayoutWrapper.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/layouts/LayoutWrapper.tsx"],"sourcesContent":["/**\n * Layout Wrapper Component\n *\n * Wraps page content with layout-specific styling and structure.\n */\n\nimport type { ReactNode, CSSProperties } from 'react'\nimport type { LayoutDefinition } from './types.js'\nimport { backgroundValueToCSS, type BackgroundValue } from '../fields/shared.js'\n\n/**\n * Page-level overrides for layout settings\n */\nexport interface PageOverrides {\n /** Override header visibility: 'default' uses layout, 'show'/'hide' overrides */\n showHeader?: 'default' | 'show' | 'hide'\n /** Override footer visibility: 'default' uses layout, 'show'/'hide' overrides */\n showFooter?: 'default' | 'show' | 'hide'\n /** Page background (overrides any layout background) */\n background?: BackgroundValue | null\n /** Page max width: 'default' uses layout, otherwise uses the value */\n maxWidth?: string\n}\n\nexport interface LayoutWrapperProps {\n children: ReactNode\n layout?: LayoutDefinition\n className?: string\n /** Page-level overrides from Puck root props */\n overrides?: PageOverrides\n}\n\n/**\n * Styles for sticky footer layout - pushes footer to bottom of viewport\n */\nconst stickyFooterContainerStyle: CSSProperties = {\n minHeight: '100vh',\n display: 'flex',\n flexDirection: 'column',\n}\n\nconst stickyFooterMainStyle: CSSProperties = {\n flex: 1,\n}\n\n/**\n * Applies layout configuration to page content\n */\nexport function LayoutWrapper({ children, layout, className, overrides }: LayoutWrapperProps) {\n // No layout - render children directly (but still apply background if set)\n if (!layout) {\n if (overrides?.background) {\n const bgStyles = backgroundValueToCSS(overrides.background)\n return <div style={{ minHeight: '100vh', ...bgStyles }}>{children}</div>\n }\n return <>{children}</>\n }\n\n // Get header/footer components\n const Header = layout.header\n const Footer = layout.footer\n\n // Determine header/footer visibility based on overrides\n const shouldShowHeader =\n overrides?.showHeader === 'hide'\n ? false\n : overrides?.showHeader === 'show'\n ? true\n : !!Header\n\n const shouldShowFooter =\n overrides?.showFooter === 'hide'\n ? false\n : overrides?.showFooter === 'show'\n ? true\n : !!Footer\n\n // Sticky footer is enabled by default - check for explicit false\n const useStickyFooter = layout.stickyFooter !== false\n\n // Calculate main content style with sticky header offset\n const mainStyle: CSSProperties = {\n ...(layout.stickyHeaderHeight && shouldShowHeader ? { paddingTop: layout.stickyHeaderHeight } : {}),\n ...(useStickyFooter ? stickyFooterMainStyle : {}),\n }\n\n // Build outer container background styles\n // Page override takes precedence, then falls back to layout wrapper background\n const wrapperStyles = layout.styles?.wrapper\n const outerBackgroundStyles: CSSProperties = overrides?.background\n ? backgroundValueToCSS(overrides.background)\n : {\n ...(wrapperStyles?.background !== undefined\n ? { background: wrapperStyles.background }\n : {}),\n ...(wrapperStyles?.backgroundAttachment !== undefined\n ? { backgroundAttachment: wrapperStyles.backgroundAttachment }\n : {}),\n }\n\n // Get effective max width (override or layout default)\n const effectiveMaxWidth =\n overrides?.maxWidth && overrides.maxWidth !== 'default'\n ? overrides.maxWidth\n : layout.maxWidth\n\n // Helper to wrap content with sticky footer container if needed\n const wrapWithStickyFooter = (content: ReactNode) => {\n if (useStickyFooter) {\n return (\n <div style={{ ...stickyFooterContainerStyle, ...outerBackgroundStyles }}>\n {content}\n </div>\n )\n }\n // Non-sticky-footer: still apply background if set\n const hasBackground = Object.keys(outerBackgroundStyles).length > 0\n if (hasBackground) {\n return <div style={{ minHeight: '100vh', ...outerBackgroundStyles }}>{content}</div>\n }\n return <>{content}</>\n }\n\n // Custom wrapper component takes precedence\n if (layout.wrapper) {\n const CustomWrapper = layout.wrapper\n return wrapWithStickyFooter(\n <>\n {shouldShowHeader && Header && <Header />}\n <main style={Object.keys(mainStyle).length > 0 ? mainStyle : undefined}>\n <CustomWrapper>{children}</CustomWrapper>\n </main>\n {shouldShowFooter && Footer && <Footer />}\n </>\n )\n }\n\n // Build wrapper styles\n const wrapperStyle: CSSProperties = {\n ...layout.styles?.wrapper,\n }\n\n // Build container styles with effective max width\n const containerStyle: CSSProperties = {\n ...(effectiveMaxWidth && !layout.fullWidth ? { maxWidth: effectiveMaxWidth } : {}),\n ...layout.styles?.container,\n }\n\n // Build content styles\n const contentStyle: CSSProperties = {\n ...layout.styles?.content,\n }\n\n // Build data attributes\n const dataAttrs: Record<string, string> = {\n 'data-layout': layout.value,\n ...layout.dataAttributes,\n }\n\n // For landing/full-width layouts, render without container constraints\n if (layout.fullWidth) {\n return wrapWithStickyFooter(\n <>\n {shouldShowHeader && Header && <Header />}\n <main\n className={[layout.classes?.wrapper, className].filter(Boolean).join(' ') || undefined}\n style={{\n ...mainStyle,\n ...(Object.keys(wrapperStyle).length > 0 ? wrapperStyle : {}),\n }}\n {...dataAttrs}\n >\n {children}\n </main>\n {shouldShowFooter && Footer && <Footer />}\n </>\n )\n }\n\n // Standard layout with container\n return wrapWithStickyFooter(\n <>\n {shouldShowHeader && Header && <Header />}\n <main\n className={layout.classes?.wrapper || undefined}\n style={{\n ...mainStyle,\n ...(Object.keys(wrapperStyle).length > 0 ? wrapperStyle : {}),\n }}\n {...dataAttrs}\n >\n <div\n className={[layout.classes?.container, className].filter(Boolean).join(' ') || undefined}\n style={Object.keys(containerStyle).length > 0 ? containerStyle : undefined}\n >\n <div\n className={layout.classes?.content || undefined}\n style={Object.keys(contentStyle).length > 0 ? contentStyle : undefined}\n >\n {children}\n </div>\n </div>\n </main>\n {shouldShowFooter && Footer && <Footer />}\n </>\n )\n}\n"],"names":["backgroundValueToCSS","stickyFooterContainerStyle","minHeight","display","flexDirection","stickyFooterMainStyle","flex","LayoutWrapper","children","layout","className","overrides","background","bgStyles","div","style","Header","header","Footer","footer","shouldShowHeader","showHeader","shouldShowFooter","showFooter","useStickyFooter","stickyFooter","mainStyle","stickyHeaderHeight","paddingTop","wrapperStyles","styles","wrapper","outerBackgroundStyles","undefined","backgroundAttachment","effectiveMaxWidth","maxWidth","wrapWithStickyFooter","content","hasBackground","Object","keys","length","CustomWrapper","main","wrapperStyle","containerStyle","fullWidth","container","contentStyle","dataAttrs","value","dataAttributes","classes","filter","Boolean","join"],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * These provide sensible defaults for common page layout patterns.
5
5
  * Users can override or extend these in their own configuration.
6
6
  */
7
- import type { LayoutDefinition, LayoutConfig } from './types';
7
+ import type { LayoutDefinition, LayoutConfig } from './types.js';
8
8
  /**
9
9
  * Default layout - standard content width with padding
10
10
  */
@@ -1 +1 @@
1
- {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/layouts/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAA;AAE7D;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAW3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAU3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,gBAW7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,gBAW1B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAWxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,gBAAgB,EAI7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAM9C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAGnC,CAAA"}
1
+ {"version":3,"file":"defaults.d.ts","sourceRoot":"","sources":["../../src/layouts/defaults.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,YAAY,CAAA;AAEhE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAW3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,gBAU3B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,gBAW7B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,YAAY,EAAE,gBAW1B,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,gBAWxB,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,gBAAgB,EAI7C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,EAAE,gBAAgB,EAM9C,CAAA;AAED;;GAEG;AACH,eAAO,MAAM,qBAAqB,EAAE,YAGnC,CAAA"}