@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
@@ -1 +1 @@
1
- {"version":3,"file":"GradientEditor.js","sourceRoot":"","sources":["../../src/fields/GradientEditor.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/fields/GradientEditor.tsx"],"sourcesContent":["'use client'\n\n/**\n * GradientEditor - Component for editing gradient values\n *\n * This component provides:\n * - Type selector (linear/radial toggle)\n * - Angle slider for linear gradients (0-360)\n * - Shape and position selectors for radial gradients\n * - Gradient stops list with color pickers and position sliders\n * - Add/remove stop buttons\n * - Visual gradient preview bar\n */\n\nimport React, { useCallback, memo, useState, type CSSProperties } from 'react'\nimport { Plus, Trash2 } from 'lucide-react'\nimport type { GradientValue, GradientStop, ColorValue } from './shared.js'\nimport { colorValueToCSS } from './shared.js'\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface GradientEditorProps {\n value: GradientValue | null\n onChange: (value: GradientValue) => void\n readOnly?: boolean\n}\n\n// =============================================================================\n// Default Values\n// =============================================================================\n\nconst DEFAULT_GRADIENT: GradientValue = {\n type: 'linear',\n angle: 90,\n stops: [\n { color: { hex: '#000000', opacity: 100 }, position: 0 },\n { color: { hex: '#ffffff', opacity: 100 }, position: 100 },\n ],\n radialShape: 'circle',\n radialPosition: 'center',\n}\n\n// =============================================================================\n// Styles\n// =============================================================================\n\nconst styles = {\n container: {\n display: 'flex',\n flexDirection: 'column',\n gap: '16px',\n } as CSSProperties,\n preview: {\n height: '48px',\n borderRadius: '6px',\n border: '1px solid var(--theme-elevation-150)',\n } as CSSProperties,\n row: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '8px',\n } as CSSProperties,\n label: {\n fontSize: '12px',\n color: 'var(--theme-elevation-500)',\n width: '48px',\n flexShrink: 0,\n } as CSSProperties,\n buttonGroup: {\n display: 'flex',\n flexWrap: 'wrap',\n gap: '4px',\n } as CSSProperties,\n button: {\n height: '28px',\n padding: '0 12px',\n fontSize: '12px',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: '4px',\n backgroundColor: 'var(--theme-bg)',\n color: 'var(--theme-elevation-700)',\n cursor: 'pointer',\n } as CSSProperties,\n buttonActive: {\n height: '28px',\n padding: '0 12px',\n fontSize: '12px',\n border: '1px solid var(--theme-elevation-800)',\n borderRadius: '4px',\n backgroundColor: 'var(--theme-elevation-800)',\n color: 'var(--theme-bg)',\n cursor: 'pointer',\n } as CSSProperties,\n slider: {\n flex: 1,\n height: '6px',\n accentColor: 'var(--theme-elevation-800)',\n cursor: 'pointer',\n } as CSSProperties,\n sliderValue: {\n fontSize: '12px',\n fontFamily: 'monospace',\n color: 'var(--theme-elevation-500)',\n width: '40px',\n textAlign: 'right',\n } as CSSProperties,\n select: {\n flex: 1,\n height: '32px',\n padding: '0 8px',\n fontSize: '12px',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: '4px',\n backgroundColor: 'var(--theme-input-bg)',\n color: 'var(--theme-elevation-800)',\n cursor: 'pointer',\n } as CSSProperties,\n stopsHeader: {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n } as CSSProperties,\n addButton: {\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n height: '24px',\n padding: '0 8px',\n fontSize: '12px',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: '4px',\n backgroundColor: 'var(--theme-bg)',\n color: 'var(--theme-elevation-700)',\n cursor: 'pointer',\n } as CSSProperties,\n stopsList: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n } as CSSProperties,\n stopItem: {\n display: 'flex',\n flexDirection: 'column',\n gap: '8px',\n padding: '8px',\n backgroundColor: 'var(--theme-elevation-50)',\n borderRadius: '6px',\n overflow: 'hidden',\n } as CSSProperties,\n stopRow: {\n display: 'flex',\n alignItems: 'center',\n flexWrap: 'wrap',\n gap: '8px',\n } as CSSProperties,\n colorPicker: {\n width: '28px',\n height: '28px',\n padding: 0,\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: '4px',\n cursor: 'pointer',\n flexShrink: 0,\n } as CSSProperties,\n hexInput: {\n width: '80px',\n minWidth: 0,\n height: '28px',\n padding: '0 6px',\n fontSize: '12px',\n fontFamily: 'monospace',\n border: '1px solid var(--theme-elevation-150)',\n borderRadius: '4px',\n backgroundColor: 'var(--theme-input-bg)',\n color: 'var(--theme-elevation-800)',\n } as CSSProperties,\n swatch: {\n width: '28px',\n height: '28px',\n borderRadius: '4px',\n border: '1px solid var(--theme-elevation-150)',\n flexShrink: 0,\n position: 'relative',\n overflow: 'hidden',\n } as CSSProperties,\n checkerboard: {\n position: 'absolute',\n inset: 0,\n backgroundImage: 'linear-gradient(45deg, #e0e0e0 25%, transparent 25%), linear-gradient(-45deg, #e0e0e0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #e0e0e0 75%), linear-gradient(-45deg, transparent 75%, #e0e0e0 75%)',\n backgroundSize: '8px 8px',\n backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',\n } as CSSProperties,\n colorOverlay: {\n position: 'absolute',\n inset: 0,\n } as CSSProperties,\n spacer: {\n flex: 1,\n minWidth: 0,\n } as CSSProperties,\n deleteButton: {\n padding: '4px',\n border: 'none',\n borderRadius: '4px',\n backgroundColor: 'transparent',\n color: 'var(--theme-elevation-500)',\n cursor: 'pointer',\n flexShrink: 0,\n } as CSSProperties,\n stopLabel: {\n fontSize: '12px',\n color: 'var(--theme-elevation-500)',\n width: '48px',\n flexShrink: 0,\n } as CSSProperties,\n rangeSlider: {\n flex: 1,\n height: '6px',\n minWidth: 0,\n accentColor: 'var(--theme-elevation-800)',\n cursor: 'pointer',\n } as CSSProperties,\n rangeValue: {\n fontSize: '12px',\n fontFamily: 'monospace',\n color: 'var(--theme-elevation-500)',\n width: '32px',\n textAlign: 'right',\n flexShrink: 0,\n } as CSSProperties,\n}\n\n// =============================================================================\n// Helper Functions\n// =============================================================================\n\n/**\n * Generates CSS gradient string for preview\n */\nfunction getGradientPreviewCSS(gradient: GradientValue): string {\n if (!gradient.stops || gradient.stops.length === 0) {\n return 'linear-gradient(90deg, #ccc 0%, #999 100%)'\n }\n\n const sortedStops = [...gradient.stops].sort((a, b) => a.position - b.position)\n const stopsCSS = sortedStops\n .map((stop) => {\n const color = colorValueToCSS(stop.color) || 'transparent'\n return `${color} ${stop.position}%`\n })\n .join(', ')\n\n if (gradient.type === 'radial') {\n const shape = gradient.radialShape || 'circle'\n const position = gradient.radialPosition || 'center'\n return `radial-gradient(${shape} at ${position}, ${stopsCSS})`\n }\n\n return `linear-gradient(${gradient.angle}deg, ${stopsCSS})`\n}\n\n// =============================================================================\n// GradientStopEditor Component\n// =============================================================================\n\ninterface GradientStopEditorProps {\n stop: GradientStop\n index: number\n canDelete: boolean\n onColorChange: (index: number, color: ColorValue) => void\n onPositionChange: (index: number, position: number) => void\n onDelete: (index: number) => void\n readOnly?: boolean\n}\n\nfunction GradientStopEditorInner({\n stop,\n index,\n canDelete,\n onColorChange,\n onPositionChange,\n onDelete,\n readOnly,\n}: GradientStopEditorProps) {\n const [hexInput, setHexInput] = useState(stop.color.hex)\n\n const handleColorPickerChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newHex = e.target.value\n setHexInput(newHex)\n onColorChange(index, { ...stop.color, hex: newHex })\n },\n [index, stop.color, onColorChange]\n )\n\n const handleHexInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target.value\n setHexInput(input)\n\n // Validate hex format\n const clean = input.replace(/^#/, '')\n if (/^[0-9A-Fa-f]{6}$/.test(clean)) {\n onColorChange(index, { ...stop.color, hex: `#${clean.toLowerCase()}` })\n }\n },\n [index, stop.color, onColorChange]\n )\n\n const handleOpacityChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newOpacity = parseInt(e.target.value, 10)\n onColorChange(index, { ...stop.color, opacity: newOpacity })\n },\n [index, stop.color, onColorChange]\n )\n\n const handlePositionChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newPosition = parseInt(e.target.value, 10)\n onPositionChange(index, Math.max(0, Math.min(100, newPosition)))\n },\n [index, onPositionChange]\n )\n\n const previewColor = colorValueToCSS(stop.color) || 'transparent'\n const opacity = stop.color.opacity ?? 100\n\n return (\n <div style={styles.stopItem as CSSProperties}>\n {/* Row 1: Color picker + hex input + preview swatch + delete */}\n <div style={styles.stopRow}>\n {/* Color picker */}\n <input\n type=\"color\"\n value={stop.color.hex}\n onChange={handleColorPickerChange}\n disabled={readOnly}\n style={styles.colorPicker}\n />\n\n {/* Hex input */}\n <input\n type=\"text\"\n value={hexInput}\n onChange={handleHexInputChange}\n placeholder=\"#000000\"\n disabled={readOnly}\n style={styles.hexInput}\n />\n\n {/* Preview swatch with checkerboard for transparency */}\n <div\n style={styles.swatch as CSSProperties}\n title={`${previewColor} at ${opacity}% opacity`}\n >\n <div style={styles.checkerboard as CSSProperties} />\n <div style={{ ...styles.colorOverlay as CSSProperties, backgroundColor: previewColor }} />\n </div>\n\n {/* Spacer */}\n <div style={styles.spacer} />\n\n {/* Delete button */}\n {canDelete && !readOnly && (\n <button\n type=\"button\"\n onClick={() => onDelete(index)}\n style={styles.deleteButton}\n title=\"Remove stop\"\n >\n <Trash2 style={{ width: '16px', height: '16px' }} />\n </button>\n )}\n </div>\n\n {/* Row 2: Position slider */}\n <div style={styles.stopRow}>\n <label style={styles.stopLabel}>Pos</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={stop.position}\n onChange={handlePositionChange}\n disabled={readOnly}\n style={styles.rangeSlider}\n />\n <span style={styles.rangeValue as CSSProperties}>\n {stop.position}%\n </span>\n </div>\n\n {/* Row 3: Opacity slider */}\n <div style={styles.stopRow}>\n <label style={styles.stopLabel}>Alpha</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={opacity}\n onChange={handleOpacityChange}\n disabled={readOnly}\n style={styles.rangeSlider}\n />\n <span style={styles.rangeValue as CSSProperties}>\n {opacity}%\n </span>\n </div>\n </div>\n )\n}\n\nconst GradientStopEditor = memo(GradientStopEditorInner)\n\n// =============================================================================\n// GradientEditor Component\n// =============================================================================\n\nfunction GradientEditorInner({ value, onChange, readOnly }: GradientEditorProps) {\n const currentValue = value || DEFAULT_GRADIENT\n\n // Handle gradient type change\n const handleTypeChange = useCallback(\n (type: 'linear' | 'radial') => {\n onChange({ ...currentValue, type })\n },\n [currentValue, onChange]\n )\n\n // Handle angle change\n const handleAngleChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const angle = parseInt(e.target.value, 10)\n onChange({ ...currentValue, angle })\n },\n [currentValue, onChange]\n )\n\n // Handle radial shape change\n const handleRadialShapeChange = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange({ ...currentValue, radialShape: e.target.value as 'circle' | 'ellipse' })\n },\n [currentValue, onChange]\n )\n\n // Handle radial position change\n const handleRadialPositionChange = useCallback(\n (e: React.ChangeEvent<HTMLSelectElement>) => {\n onChange({ ...currentValue, radialPosition: e.target.value as GradientValue['radialPosition'] })\n },\n [currentValue, onChange]\n )\n\n // Handle stop color change\n const handleStopColorChange = useCallback(\n (index: number, color: ColorValue) => {\n const newStops = [...currentValue.stops]\n newStops[index] = { ...newStops[index], color }\n onChange({ ...currentValue, stops: newStops })\n },\n [currentValue, onChange]\n )\n\n // Handle stop position change\n const handleStopPositionChange = useCallback(\n (index: number, position: number) => {\n const newStops = [...currentValue.stops]\n newStops[index] = { ...newStops[index], position }\n onChange({ ...currentValue, stops: newStops })\n },\n [currentValue, onChange]\n )\n\n // Handle add stop\n const handleAddStop = useCallback(() => {\n const newPosition = currentValue.stops.length > 0 ? 50 : 0\n const newStop: GradientStop = {\n color: { hex: '#888888', opacity: 100 },\n position: newPosition,\n }\n onChange({ ...currentValue, stops: [...currentValue.stops, newStop] })\n }, [currentValue, onChange])\n\n // Handle delete stop\n const handleDeleteStop = useCallback(\n (index: number) => {\n const newStops = currentValue.stops.filter((_, i) => i !== index)\n onChange({ ...currentValue, stops: newStops })\n },\n [currentValue, onChange]\n )\n\n const previewCSS = getGradientPreviewCSS(currentValue)\n const canDeleteStops = currentValue.stops.length > 2\n\n return (\n <div style={styles.container as CSSProperties}>\n {/* Gradient Preview */}\n <div style={{ ...styles.preview, background: previewCSS }} />\n\n {/* Type Selector */}\n <div style={styles.row}>\n <label style={styles.label}>Type</label>\n <div style={styles.buttonGroup}>\n <button\n type=\"button\"\n onClick={() => handleTypeChange('linear')}\n disabled={readOnly}\n style={currentValue.type === 'linear' ? styles.buttonActive : styles.button}\n >\n Linear\n </button>\n <button\n type=\"button\"\n onClick={() => handleTypeChange('radial')}\n disabled={readOnly}\n style={currentValue.type === 'radial' ? styles.buttonActive : styles.button}\n >\n Radial\n </button>\n </div>\n </div>\n\n {/* Linear Options: Angle */}\n {currentValue.type === 'linear' && (\n <div style={styles.row}>\n <label style={styles.label}>Angle</label>\n <input\n type=\"range\"\n min=\"0\"\n max=\"360\"\n value={currentValue.angle}\n onChange={handleAngleChange}\n disabled={readOnly}\n style={styles.slider}\n />\n <span style={styles.sliderValue as CSSProperties}>\n {currentValue.angle}deg\n </span>\n </div>\n )}\n\n {/* Radial Options: Shape & Position */}\n {currentValue.type === 'radial' && (\n <>\n <div style={styles.row}>\n <label style={styles.label}>Shape</label>\n <select\n value={currentValue.radialShape || 'circle'}\n onChange={handleRadialShapeChange}\n disabled={readOnly}\n style={styles.select}\n >\n <option value=\"circle\">Circle</option>\n <option value=\"ellipse\">Ellipse</option>\n </select>\n </div>\n <div style={styles.row}>\n <label style={styles.label}>Position</label>\n <select\n value={currentValue.radialPosition || 'center'}\n onChange={handleRadialPositionChange}\n disabled={readOnly}\n style={styles.select}\n >\n <option value=\"center\">Center</option>\n <option value=\"top\">Top</option>\n <option value=\"bottom\">Bottom</option>\n <option value=\"left\">Left</option>\n <option value=\"right\">Right</option>\n </select>\n </div>\n </>\n )}\n\n {/* Color Stops */}\n <div style={{ display: 'flex', flexDirection: 'column', gap: '8px' }}>\n <div style={styles.stopsHeader}>\n <label style={styles.label}>Color Stops</label>\n {!readOnly && (\n <button\n type=\"button\"\n onClick={handleAddStop}\n style={styles.addButton}\n >\n <Plus style={{ width: '12px', height: '12px' }} />\n Add Stop\n </button>\n )}\n </div>\n <div style={styles.stopsList as CSSProperties}>\n {currentValue.stops.map((stop, index) => (\n <GradientStopEditor\n key={index}\n stop={stop}\n index={index}\n canDelete={canDeleteStops}\n onColorChange={handleStopColorChange}\n onPositionChange={handleStopPositionChange}\n onDelete={handleDeleteStop}\n readOnly={readOnly}\n />\n ))}\n </div>\n </div>\n </div>\n )\n}\n\nexport const GradientEditor = memo(GradientEditorInner)\n"],"names":["React","useCallback","memo","useState","Plus","Trash2","colorValueToCSS","DEFAULT_GRADIENT","type","angle","stops","color","hex","opacity","position","radialShape","radialPosition","styles","container","display","flexDirection","gap","preview","height","borderRadius","border","row","alignItems","flexWrap","label","fontSize","width","flexShrink","buttonGroup","button","padding","backgroundColor","cursor","buttonActive","slider","flex","accentColor","sliderValue","fontFamily","textAlign","select","stopsHeader","justifyContent","addButton","stopsList","stopItem","overflow","stopRow","colorPicker","hexInput","minWidth","swatch","checkerboard","inset","backgroundImage","backgroundSize","backgroundPosition","colorOverlay","spacer","deleteButton","stopLabel","rangeSlider","rangeValue","getGradientPreviewCSS","gradient","length","sortedStops","sort","a","b","stopsCSS","map","stop","join","shape","GradientStopEditorInner","index","canDelete","onColorChange","onPositionChange","onDelete","readOnly","setHexInput","handleColorPickerChange","e","newHex","target","value","handleHexInputChange","input","clean","replace","test","toLowerCase","handleOpacityChange","newOpacity","parseInt","handlePositionChange","newPosition","Math","max","min","previewColor","div","style","onChange","disabled","placeholder","title","onClick","span","GradientStopEditor","GradientEditorInner","currentValue","handleTypeChange","handleAngleChange","handleRadialShapeChange","handleRadialPositionChange","handleStopColorChange","newStops","handleStopPositionChange","handleAddStop","newStop","handleDeleteStop","filter","_","i","previewCSS","canDeleteStops","background","option","GradientEditor"],"mappings":"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"}
@@ -1,3 +1,16 @@
1
+ /**
2
+ * LockedField - Custom Puck field wrapper that prevents accidental edits
3
+ *
4
+ * Wraps a field with a lock/unlock toggle. When locked, the field is read-only.
5
+ * Click the lock icon to toggle editing.
6
+ *
7
+ * Exports:
8
+ * - LockedTextField: A text input with lock/unlock functionality
9
+ * - LockedRadioField: A radio button group with lock/unlock functionality
10
+ * - createLockedTextField: Factory for Puck field configuration
11
+ * - createLockedRadioField: Factory for Puck field configuration
12
+ */
13
+ import React from 'react';
1
14
  import type { CustomField } from '@puckeditor/core';
2
15
  interface LockedTextFieldProps {
3
16
  value: string;
@@ -16,8 +29,8 @@ interface LockedRadioFieldProps {
16
29
  }[];
17
30
  warningMessage?: string;
18
31
  }
19
- export declare function LockedTextField({ value, onChange, label, placeholder, warningMessage, }: LockedTextFieldProps): import("react/jsx-runtime").JSX.Element;
20
- export declare function LockedRadioField({ value, onChange, label, options, warningMessage, }: LockedRadioFieldProps): import("react/jsx-runtime").JSX.Element;
32
+ export declare function LockedTextField({ value, onChange, label, placeholder, warningMessage, }: LockedTextFieldProps): React.JSX.Element;
33
+ export declare function LockedRadioField({ value, onChange, label, options, warningMessage, }: LockedRadioFieldProps): React.JSX.Element;
21
34
  /**
22
35
  * Creates a Puck field configuration for a locked text input
23
36
  */
@@ -1 +1 @@
1
- {"version":3,"file":"LockedField.d.ts","sourceRoot":"","sources":["../../src/fields/LockedField.tsx"],"names":[],"mappings":"AAgBA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAOnD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAMD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,cAAc,GACf,EAAE,oBAAoB,2CAuFtB;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,EACP,cAAc,GACf,EAAE,qBAAqB,2CA0FvB;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,WAAW,CAAC,MAAM,CAAC,CActB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,WAAW,CAAC,OAAO,CAAC,CAcvB;AAMD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAI9C,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,OAAO,CAOnD,CAAA"}
1
+ {"version":3,"file":"LockedField.d.ts","sourceRoot":"","sources":["../../src/fields/LockedField.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAmB,MAAM,OAAO,CAAA;AACvC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAOnD,UAAU,oBAAoB;IAC5B,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,IAAI,CAAA;IACjC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAED,UAAU,qBAAqB;IAC7B,KAAK,EAAE,OAAO,CAAA;IACd,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAA;IAClC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB;AAMD,wBAAgB,eAAe,CAAC,EAC9B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,WAAW,EACX,cAAc,GACf,EAAE,oBAAoB,qBAuFtB;AAMD,wBAAgB,gBAAgB,CAAC,EAC/B,KAAK,EACL,QAAQ,EACR,KAAK,EACL,OAAO,EACP,cAAc,GACf,EAAE,qBAAqB,qBA0FvB;AAMD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,EAAE;IAC5C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,WAAW,CAAC,MAAM,CAAC,CActB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,OAAO,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE,CAAA;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAA;CACxB,GAAG,WAAW,CAAC,OAAO,CAAC,CAcvB;AAMD;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,eAAe,EAAE,WAAW,CAAC,MAAM,CAI9C,CAAA;AAEF;;;;;;;;;;;GAWG;AACH,eAAO,MAAM,mBAAmB,EAAE,WAAW,CAAC,OAAO,CAOnD,CAAA"}
@@ -11,15 +11,37 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
11
11
  * - LockedRadioField: A radio button group with lock/unlock functionality
12
12
  * - createLockedTextField: Factory for Puck field configuration
13
13
  * - createLockedRadioField: Factory for Puck field configuration
14
- */
15
- import { useState } from 'react';
14
+ */ import React, { useState } from 'react';
16
15
  import { Lock, Unlock } from 'lucide-react';
17
16
  // =============================================================================
18
17
  // LockedTextField Component
19
18
  // =============================================================================
20
- export function LockedTextField({ value, onChange, label, placeholder, warningMessage, }) {
19
+ export function LockedTextField({ value, onChange, label, placeholder, warningMessage }) {
21
20
  const [isLocked, setIsLocked] = useState(true);
22
- return (_jsxs("div", { className: "puck-field", children: [_jsxs("div", { className: "puck-field-header", style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '8px' }, children: [label && (_jsx("label", { style: { fontSize: '14px', fontWeight: 500, color: 'var(--puck-color-grey-04)' }, children: label })), _jsx("button", { type: "button", onClick: () => setIsLocked(!isLocked), style: {
21
+ return /*#__PURE__*/ _jsxs("div", {
22
+ className: "puck-field",
23
+ children: [
24
+ /*#__PURE__*/ _jsxs("div", {
25
+ className: "puck-field-header",
26
+ style: {
27
+ display: 'flex',
28
+ alignItems: 'center',
29
+ justifyContent: 'space-between',
30
+ marginBottom: '8px'
31
+ },
32
+ children: [
33
+ label && /*#__PURE__*/ _jsx("label", {
34
+ style: {
35
+ fontSize: '14px',
36
+ fontWeight: 500,
37
+ color: 'var(--puck-color-grey-04)'
38
+ },
39
+ children: label
40
+ }),
41
+ /*#__PURE__*/ _jsx("button", {
42
+ type: "button",
43
+ onClick: ()=>setIsLocked(!isLocked),
44
+ style: {
23
45
  background: 'none',
24
46
  border: 'none',
25
47
  padding: '4px',
@@ -29,8 +51,29 @@ export function LockedTextField({ value, onChange, label, placeholder, warningMe
29
51
  alignItems: 'center',
30
52
  justifyContent: 'center',
31
53
  borderRadius: '4px',
32
- transition: 'all 0.15s ease',
33
- }, title: isLocked ? 'Click to unlock' : 'Click to lock', children: isLocked ? (_jsx(Lock, { size: 14 })) : (_jsx(Unlock, { size: 14 })) })] }), _jsxs("div", { style: { position: 'relative' }, children: [_jsx("input", { type: "text", value: value || '', onChange: (e) => onChange(e.target.value), disabled: isLocked, placeholder: placeholder, style: {
54
+ transition: 'all 0.15s ease'
55
+ },
56
+ title: isLocked ? 'Click to unlock' : 'Click to lock',
57
+ children: isLocked ? /*#__PURE__*/ _jsx(Lock, {
58
+ size: 14
59
+ }) : /*#__PURE__*/ _jsx(Unlock, {
60
+ size: 14
61
+ })
62
+ })
63
+ ]
64
+ }),
65
+ /*#__PURE__*/ _jsxs("div", {
66
+ style: {
67
+ position: 'relative'
68
+ },
69
+ children: [
70
+ /*#__PURE__*/ _jsx("input", {
71
+ type: "text",
72
+ value: value || '',
73
+ onChange: (e)=>onChange(e.target.value),
74
+ disabled: isLocked,
75
+ placeholder: placeholder,
76
+ style: {
34
77
  width: '100%',
35
78
  padding: '8px 12px',
36
79
  paddingRight: isLocked ? '32px' : '12px',
@@ -41,28 +84,72 @@ export function LockedTextField({ value, onChange, label, placeholder, warningMe
41
84
  color: isLocked ? 'var(--puck-color-grey-05)' : 'var(--puck-color-grey-04)',
42
85
  cursor: isLocked ? 'not-allowed' : 'text',
43
86
  outline: 'none',
44
- transition: 'all 0.15s ease',
45
- } }), isLocked && (_jsx(Lock, { size: 14, style: {
87
+ transition: 'all 0.15s ease'
88
+ }
89
+ }),
90
+ isLocked && /*#__PURE__*/ _jsx(Lock, {
91
+ size: 14,
92
+ style: {
46
93
  position: 'absolute',
47
94
  right: '10px',
48
95
  top: '50%',
49
96
  transform: 'translateY(-50%)',
50
- color: 'var(--puck-color-grey-07)',
51
- } }))] }), !isLocked && warningMessage && (_jsxs("p", { style: {
97
+ color: 'var(--puck-color-grey-07)'
98
+ }
99
+ })
100
+ ]
101
+ }),
102
+ !isLocked && warningMessage && /*#__PURE__*/ _jsxs("p", {
103
+ style: {
52
104
  marginTop: '6px',
53
105
  fontSize: '12px',
54
106
  color: 'var(--puck-color-grey-05)',
55
107
  display: 'flex',
56
108
  alignItems: 'center',
57
- gap: '4px',
58
- }, children: [_jsx("span", { style: { color: 'var(--puck-color-rose-07)' }, children: "\u26A0" }), warningMessage] }))] }));
109
+ gap: '4px'
110
+ },
111
+ children: [
112
+ /*#__PURE__*/ _jsx("span", {
113
+ style: {
114
+ color: 'var(--puck-color-rose-07)'
115
+ },
116
+ children: "⚠"
117
+ }),
118
+ warningMessage
119
+ ]
120
+ })
121
+ ]
122
+ });
59
123
  }
60
124
  // =============================================================================
61
125
  // LockedRadioField Component
62
126
  // =============================================================================
63
- export function LockedRadioField({ value, onChange, label, options, warningMessage, }) {
127
+ export function LockedRadioField({ value, onChange, label, options, warningMessage }) {
64
128
  const [isLocked, setIsLocked] = useState(true);
65
- return (_jsxs("div", { className: "puck-field", children: [_jsxs("div", { className: "puck-field-header", style: { display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '8px' }, children: [label && (_jsx("label", { style: { fontSize: '14px', fontWeight: 500, color: 'var(--puck-color-grey-04)' }, children: label })), _jsx("button", { type: "button", onClick: () => setIsLocked(!isLocked), style: {
129
+ return /*#__PURE__*/ _jsxs("div", {
130
+ className: "puck-field",
131
+ children: [
132
+ /*#__PURE__*/ _jsxs("div", {
133
+ className: "puck-field-header",
134
+ style: {
135
+ display: 'flex',
136
+ alignItems: 'center',
137
+ justifyContent: 'space-between',
138
+ marginBottom: '8px'
139
+ },
140
+ children: [
141
+ label && /*#__PURE__*/ _jsx("label", {
142
+ style: {
143
+ fontSize: '14px',
144
+ fontWeight: 500,
145
+ color: 'var(--puck-color-grey-04)'
146
+ },
147
+ children: label
148
+ }),
149
+ /*#__PURE__*/ _jsx("button", {
150
+ type: "button",
151
+ onClick: ()=>setIsLocked(!isLocked),
152
+ style: {
66
153
  background: 'none',
67
154
  border: 'none',
68
155
  padding: '4px',
@@ -72,59 +159,98 @@ export function LockedRadioField({ value, onChange, label, options, warningMessa
72
159
  alignItems: 'center',
73
160
  justifyContent: 'center',
74
161
  borderRadius: '4px',
75
- transition: 'all 0.15s ease',
76
- }, title: isLocked ? 'Click to unlock' : 'Click to lock', children: isLocked ? (_jsx(Lock, { size: 14 })) : (_jsx(Unlock, { size: 14 })) })] }), _jsx("div", { style: {
162
+ transition: 'all 0.15s ease'
163
+ },
164
+ title: isLocked ? 'Click to unlock' : 'Click to lock',
165
+ children: isLocked ? /*#__PURE__*/ _jsx(Lock, {
166
+ size: 14
167
+ }) : /*#__PURE__*/ _jsx(Unlock, {
168
+ size: 14
169
+ })
170
+ })
171
+ ]
172
+ }),
173
+ /*#__PURE__*/ _jsx("div", {
174
+ style: {
77
175
  display: 'flex',
78
176
  border: '1px solid var(--puck-color-grey-09)',
79
177
  borderRadius: '6px',
80
178
  overflow: 'hidden',
81
179
  opacity: isLocked ? 0.6 : 1,
82
- pointerEvents: isLocked ? 'none' : 'auto',
83
- }, children: options.map((option, index) => (_jsx("button", { type: "button", onClick: () => onChange(option.value), disabled: isLocked, style: {
84
- flex: 1,
85
- padding: '8px 16px',
86
- fontSize: '14px',
87
- fontWeight: 500,
88
- border: 'none',
89
- borderRight: index < options.length - 1 ? '1px solid var(--puck-color-grey-09)' : 'none',
90
- background: value === option.value
91
- ? 'var(--puck-color-azure-12)'
92
- : 'var(--puck-color-white)',
93
- color: value === option.value
94
- ? 'var(--puck-color-azure-04)'
95
- : 'var(--puck-color-grey-05)',
96
- cursor: isLocked ? 'not-allowed' : 'pointer',
97
- transition: 'all 0.15s ease',
98
- }, children: option.label }, String(option.value)))) }), !isLocked && warningMessage && (_jsxs("p", { style: {
180
+ pointerEvents: isLocked ? 'none' : 'auto'
181
+ },
182
+ children: options.map((option, index)=>/*#__PURE__*/ _jsx("button", {
183
+ type: "button",
184
+ onClick: ()=>onChange(option.value),
185
+ disabled: isLocked,
186
+ style: {
187
+ flex: 1,
188
+ padding: '8px 16px',
189
+ fontSize: '14px',
190
+ fontWeight: 500,
191
+ border: 'none',
192
+ borderRight: index < options.length - 1 ? '1px solid var(--puck-color-grey-09)' : 'none',
193
+ background: value === option.value ? 'var(--puck-color-azure-12)' : 'var(--puck-color-white)',
194
+ color: value === option.value ? 'var(--puck-color-azure-04)' : 'var(--puck-color-grey-05)',
195
+ cursor: isLocked ? 'not-allowed' : 'pointer',
196
+ transition: 'all 0.15s ease'
197
+ },
198
+ children: option.label
199
+ }, String(option.value)))
200
+ }),
201
+ !isLocked && warningMessage && /*#__PURE__*/ _jsxs("p", {
202
+ style: {
99
203
  marginTop: '6px',
100
204
  fontSize: '12px',
101
205
  color: 'var(--puck-color-grey-05)',
102
206
  display: 'flex',
103
207
  alignItems: 'center',
104
- gap: '4px',
105
- }, children: [_jsx("span", { style: { color: 'var(--puck-color-rose-07)' }, children: "\u26A0" }), warningMessage] }))] }));
208
+ gap: '4px'
209
+ },
210
+ children: [
211
+ /*#__PURE__*/ _jsx("span", {
212
+ style: {
213
+ color: 'var(--puck-color-rose-07)'
214
+ },
215
+ children: "⚠"
216
+ }),
217
+ warningMessage
218
+ ]
219
+ })
220
+ ]
221
+ });
106
222
  }
107
223
  // =============================================================================
108
224
  // Field Configuration Factories
109
225
  // =============================================================================
110
226
  /**
111
227
  * Creates a Puck field configuration for a locked text input
112
- */
113
- export function createLockedTextField(config) {
228
+ */ export function createLockedTextField(config) {
114
229
  return {
115
230
  type: 'custom',
116
231
  label: config.label,
117
- render: ({ value, onChange }) => (_jsx(LockedTextField, { value: value, onChange: onChange, label: config.label, placeholder: config.placeholder, warningMessage: config.warningMessage })),
232
+ render: ({ value, onChange })=>/*#__PURE__*/ _jsx(LockedTextField, {
233
+ value: value,
234
+ onChange: onChange,
235
+ label: config.label,
236
+ placeholder: config.placeholder,
237
+ warningMessage: config.warningMessage
238
+ })
118
239
  };
119
240
  }
120
241
  /**
121
242
  * Creates a Puck field configuration for a locked radio button group
122
- */
123
- export function createLockedRadioField(config) {
243
+ */ export function createLockedRadioField(config) {
124
244
  return {
125
245
  type: 'custom',
126
246
  label: config.label,
127
- render: ({ value, onChange }) => (_jsx(LockedRadioField, { value: value, onChange: onChange, label: config.label, options: config.options, warningMessage: config.warningMessage })),
247
+ render: ({ value, onChange })=>/*#__PURE__*/ _jsx(LockedRadioField, {
248
+ value: value,
249
+ onChange: onChange,
250
+ label: config.label,
251
+ options: config.options,
252
+ warningMessage: config.warningMessage
253
+ })
128
254
  };
129
255
  }
130
256
  // =============================================================================
@@ -141,11 +267,10 @@ export function createLockedRadioField(config) {
141
267
  * }
142
268
  * }
143
269
  * ```
144
- */
145
- export const lockedSlugField = createLockedTextField({
270
+ */ export const lockedSlugField = createLockedTextField({
146
271
  label: 'Slug',
147
272
  placeholder: 'page-slug',
148
- warningMessage: 'Changing may break existing links',
273
+ warningMessage: 'Changing may break existing links'
149
274
  });
150
275
  /**
151
276
  * Pre-built locked isHomepage field - prevents accidental homepage changes
@@ -158,13 +283,19 @@ export const lockedSlugField = createLockedTextField({
158
283
  * }
159
284
  * }
160
285
  * ```
161
- */
162
- export const lockedHomepageField = createLockedRadioField({
286
+ */ export const lockedHomepageField = createLockedRadioField({
163
287
  label: 'Homepage',
164
288
  options: [
165
- { label: 'No', value: false },
166
- { label: 'Yes', value: true },
289
+ {
290
+ label: 'No',
291
+ value: false
292
+ },
293
+ {
294
+ label: 'Yes',
295
+ value: true
296
+ }
167
297
  ],
168
- warningMessage: 'Only one page can be the homepage',
298
+ warningMessage: 'Only one page can be the homepage'
169
299
  });
300
+
170
301
  //# sourceMappingURL=LockedField.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"LockedField.js","sourceRoot":"","sources":["../../src/fields/LockedField.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/fields/LockedField.tsx"],"sourcesContent":["'use client'\n\n/**\n * LockedField - Custom Puck field wrapper that prevents accidental edits\n *\n * Wraps a field with a lock/unlock toggle. When locked, the field is read-only.\n * Click the lock icon to toggle editing.\n *\n * Exports:\n * - LockedTextField: A text input with lock/unlock functionality\n * - LockedRadioField: A radio button group with lock/unlock functionality\n * - createLockedTextField: Factory for Puck field configuration\n * - createLockedRadioField: Factory for Puck field configuration\n */\n\nimport React, { useState } from 'react'\nimport type { CustomField } from '@puckeditor/core'\nimport { Lock, Unlock } from 'lucide-react'\n\n// =============================================================================\n// Types\n// =============================================================================\n\ninterface LockedTextFieldProps {\n value: string\n onChange: (value: string) => void\n label?: string\n placeholder?: string\n warningMessage?: string\n}\n\ninterface LockedRadioFieldProps {\n value: boolean\n onChange: (value: boolean) => void\n label?: string\n options: { label: string; value: boolean }[]\n warningMessage?: string\n}\n\n// =============================================================================\n// LockedTextField Component\n// =============================================================================\n\nexport function LockedTextField({\n value,\n onChange,\n label,\n placeholder,\n warningMessage,\n}: LockedTextFieldProps) {\n const [isLocked, setIsLocked] = useState(true)\n\n return (\n <div className=\"puck-field\">\n {/* Field header with label and lock toggle */}\n <div className=\"puck-field-header\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '8px' }}>\n {label && (\n <label style={{ fontSize: '14px', fontWeight: 500, color: 'var(--puck-color-grey-04)' }}>{label}</label>\n )}\n <button\n type=\"button\"\n onClick={() => setIsLocked(!isLocked)}\n style={{\n background: 'none',\n border: 'none',\n padding: '4px',\n cursor: 'pointer',\n color: isLocked ? 'var(--puck-color-grey-05)' : 'var(--puck-color-azure-04)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '4px',\n transition: 'all 0.15s ease',\n }}\n title={isLocked ? 'Click to unlock' : 'Click to lock'}\n >\n {isLocked ? (\n <Lock size={14} />\n ) : (\n <Unlock size={14} />\n )}\n </button>\n </div>\n\n {/* Input field - matches Puck's text input style */}\n <div style={{ position: 'relative' }}>\n <input\n type=\"text\"\n value={value || ''}\n onChange={(e) => onChange(e.target.value)}\n disabled={isLocked}\n placeholder={placeholder}\n style={{\n width: '100%',\n padding: '8px 12px',\n paddingRight: isLocked ? '32px' : '12px',\n fontSize: '14px',\n border: '1px solid var(--puck-color-grey-09)',\n borderRadius: '6px',\n background: isLocked ? 'var(--puck-color-grey-11)' : 'var(--puck-color-white)',\n color: isLocked ? 'var(--puck-color-grey-05)' : 'var(--puck-color-grey-04)',\n cursor: isLocked ? 'not-allowed' : 'text',\n outline: 'none',\n transition: 'all 0.15s ease',\n }}\n />\n {isLocked && (\n <Lock\n size={14}\n style={{\n position: 'absolute',\n right: '10px',\n top: '50%',\n transform: 'translateY(-50%)',\n color: 'var(--puck-color-grey-07)',\n }}\n />\n )}\n </div>\n\n {/* Warning message when unlocked */}\n {!isLocked && warningMessage && (\n <p style={{\n marginTop: '6px',\n fontSize: '12px',\n color: 'var(--puck-color-grey-05)',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}>\n <span style={{ color: 'var(--puck-color-rose-07)' }}>⚠</span>\n {warningMessage}\n </p>\n )}\n </div>\n )\n}\n\n// =============================================================================\n// LockedRadioField Component\n// =============================================================================\n\nexport function LockedRadioField({\n value,\n onChange,\n label,\n options,\n warningMessage,\n}: LockedRadioFieldProps) {\n const [isLocked, setIsLocked] = useState(true)\n\n return (\n <div className=\"puck-field\">\n {/* Field header with label and lock toggle */}\n <div className=\"puck-field-header\" style={{ display: 'flex', alignItems: 'center', justifyContent: 'space-between', marginBottom: '8px' }}>\n {label && (\n <label style={{ fontSize: '14px', fontWeight: 500, color: 'var(--puck-color-grey-04)' }}>{label}</label>\n )}\n <button\n type=\"button\"\n onClick={() => setIsLocked(!isLocked)}\n style={{\n background: 'none',\n border: 'none',\n padding: '4px',\n cursor: 'pointer',\n color: isLocked ? 'var(--puck-color-grey-05)' : 'var(--puck-color-azure-04)',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n borderRadius: '4px',\n transition: 'all 0.15s ease',\n }}\n title={isLocked ? 'Click to unlock' : 'Click to lock'}\n >\n {isLocked ? (\n <Lock size={14} />\n ) : (\n <Unlock size={14} />\n )}\n </button>\n </div>\n\n {/* Segmented button group - matches Puck's radio style */}\n <div\n style={{\n display: 'flex',\n border: '1px solid var(--puck-color-grey-09)',\n borderRadius: '6px',\n overflow: 'hidden',\n opacity: isLocked ? 0.6 : 1,\n pointerEvents: isLocked ? 'none' : 'auto',\n }}\n >\n {options.map((option, index) => (\n <button\n key={String(option.value)}\n type=\"button\"\n onClick={() => onChange(option.value)}\n disabled={isLocked}\n style={{\n flex: 1,\n padding: '8px 16px',\n fontSize: '14px',\n fontWeight: 500,\n border: 'none',\n borderRight: index < options.length - 1 ? '1px solid var(--puck-color-grey-09)' : 'none',\n background: value === option.value\n ? 'var(--puck-color-azure-12)'\n : 'var(--puck-color-white)',\n color: value === option.value\n ? 'var(--puck-color-azure-04)'\n : 'var(--puck-color-grey-05)',\n cursor: isLocked ? 'not-allowed' : 'pointer',\n transition: 'all 0.15s ease',\n }}\n >\n {option.label}\n </button>\n ))}\n </div>\n\n {/* Warning message when unlocked */}\n {!isLocked && warningMessage && (\n <p style={{\n marginTop: '6px',\n fontSize: '12px',\n color: 'var(--puck-color-grey-05)',\n display: 'flex',\n alignItems: 'center',\n gap: '4px',\n }}>\n <span style={{ color: 'var(--puck-color-rose-07)' }}>⚠</span>\n {warningMessage}\n </p>\n )}\n </div>\n )\n}\n\n// =============================================================================\n// Field Configuration Factories\n// =============================================================================\n\n/**\n * Creates a Puck field configuration for a locked text input\n */\nexport function createLockedTextField(config: {\n label?: string\n placeholder?: string\n warningMessage?: string\n}): CustomField<string> {\n return {\n type: 'custom',\n label: config.label,\n render: ({ value, onChange }) => (\n <LockedTextField\n value={value}\n onChange={onChange}\n label={config.label}\n placeholder={config.placeholder}\n warningMessage={config.warningMessage}\n />\n ),\n }\n}\n\n/**\n * Creates a Puck field configuration for a locked radio button group\n */\nexport function createLockedRadioField(config: {\n label?: string\n options: { label: string; value: boolean }[]\n warningMessage?: string\n}): CustomField<boolean> {\n return {\n type: 'custom',\n label: config.label,\n render: ({ value, onChange }) => (\n <LockedRadioField\n value={value}\n onChange={onChange}\n label={config.label}\n options={config.options}\n warningMessage={config.warningMessage}\n />\n ),\n }\n}\n\n// =============================================================================\n// Pre-built Field Definitions\n// =============================================================================\n\n/**\n * Pre-built locked slug field - prevents accidental URL changes\n *\n * Use in Puck root config:\n * ```tsx\n * root: {\n * fields: {\n * slug: lockedSlugField,\n * }\n * }\n * ```\n */\nexport const lockedSlugField: CustomField<string> = createLockedTextField({\n label: 'Slug',\n placeholder: 'page-slug',\n warningMessage: 'Changing may break existing links',\n})\n\n/**\n * Pre-built locked isHomepage field - prevents accidental homepage changes\n *\n * Use in Puck root config:\n * ```tsx\n * root: {\n * fields: {\n * isHomepage: lockedHomepageField,\n * }\n * }\n * ```\n */\nexport const lockedHomepageField: CustomField<boolean> = createLockedRadioField({\n label: 'Homepage',\n options: [\n { label: 'No', value: false },\n { label: 'Yes', value: true },\n ],\n warningMessage: 'Only one page can be the homepage',\n})\n"],"names":["React","useState","Lock","Unlock","LockedTextField","value","onChange","label","placeholder","warningMessage","isLocked","setIsLocked","div","className","style","display","alignItems","justifyContent","marginBottom","fontSize","fontWeight","color","button","type","onClick","background","border","padding","cursor","borderRadius","transition","title","size","position","input","e","target","disabled","width","paddingRight","outline","right","top","transform","p","marginTop","gap","span","LockedRadioField","options","overflow","opacity","pointerEvents","map","option","index","flex","borderRight","length","String","createLockedTextField","config","render","createLockedRadioField","lockedSlugField","lockedHomepageField"],"mappings":"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"}
@@ -9,7 +9,7 @@
9
9
  */
10
10
  import React from 'react';
11
11
  import type { CustomField } from '@puckeditor/core';
12
- import type { PaddingValue } from './shared';
12
+ import type { PaddingValue } from './shared.js';
13
13
  export type MarginValue = PaddingValue;
14
14
  interface MarginFieldProps {
15
15
  value: MarginValue | null;
@@ -18,7 +18,7 @@ interface MarginFieldProps {
18
18
  readOnly?: boolean;
19
19
  showUnits?: boolean;
20
20
  }
21
- declare function MarginFieldInner({ value, onChange, label, readOnly, showUnits, }: MarginFieldProps): import("react/jsx-runtime").JSX.Element;
21
+ declare function MarginFieldInner({ value, onChange, label, readOnly, showUnits, }: MarginFieldProps): React.JSX.Element;
22
22
  export declare const MarginField: React.MemoExoticComponent<typeof MarginFieldInner>;
23
23
  /**
24
24
  * Creates a Puck field configuration for margin/spacing
@@ -1 +1 @@
1
- {"version":3,"file":"MarginField.d.ts","sourceRoot":"","sources":["../../src/fields/MarginField.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAgD,MAAM,OAAO,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA;AAG5C,MAAM,MAAM,WAAW,GAAG,YAAY,CAAA;AAQtC,UAAU,gBAAgB;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAoJD,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAgB,GACjB,EAAE,gBAAgB,2CAmJlB;AAED,eAAO,MAAM,WAAW,oDAAyB,CAAA;AAMjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GAAG,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,CAclC"}
1
+ {"version":3,"file":"MarginField.d.ts","sourceRoot":"","sources":["../../src/fields/MarginField.tsx"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,KAAgD,MAAM,OAAO,CAAA;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAEnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAG/C,MAAM,MAAM,WAAW,GAAG,YAAY,CAAA;AAQtC,UAAU,gBAAgB;IACxB,KAAK,EAAE,WAAW,GAAG,IAAI,CAAA;IACzB,QAAQ,EAAE,CAAC,KAAK,EAAE,WAAW,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB;AAoJD,iBAAS,gBAAgB,CAAC,EACxB,KAAK,EACL,QAAQ,EACR,KAAK,EACL,QAAQ,EACR,SAAgB,GACjB,EAAE,gBAAgB,qBAmJlB;AAED,eAAO,MAAM,WAAW,oDAAyB,CAAA;AAMjD;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE;IACxC,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GAAG,WAAW,CAAC,WAAW,GAAG,IAAI,CAAC,CAclC"}