@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":"ColorPickerControl.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/ColorPickerControl.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/richtext/controls/ColorPickerControl.tsx"],"sourcesContent":["'use client'\n\n/**\n * ColorPickerControl - Text color control for Puck RichText toolbar\n *\n * A dropdown color picker with:\n * - Native color input\n * - Hex input with validation\n * - Opacity slider (RGBA support)\n * - Theme color presets\n * - \"Theme Color (Auto)\" option for dark/light mode adaptation\n */\n\nimport React, { useState, useCallback, type CSSProperties } from 'react'\nimport { Palette, ChevronDown } from 'lucide-react'\nimport { useTheme } from '../../../theme/index.js'\nimport { parseColor, normalizeHex, hexToRgba, controlStyles } from './shared.js'\nimport { Dropdown } from './DropdownPortal.js'\nimport type { Editor } from '@tiptap/react'\n\ninterface ColorPickerControlProps {\n editor: Editor\n currentColor: string | undefined\n}\n\nexport function ColorPickerControl({ editor, currentColor }: ColorPickerControlProps) {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleColorChange = useCallback(\n (color: string | null) => {\n if (color) {\n editor.chain().focus().setColor(color).run()\n } else {\n editor.chain().focus().unsetColor().run()\n }\n },\n [editor]\n )\n\n const close = useCallback(() => setIsOpen(false), [])\n\n const hasColor = Boolean(currentColor)\n\n const trigger = (\n <button\n type=\"button\"\n title=\"Text Color\"\n style={{\n ...controlStyles.dropdownTrigger,\n ...(hasColor ? controlStyles.dropdownTriggerActive : {}),\n }}\n >\n <Palette style={controlStyles.icon} />\n <ChevronDown style={{ width: '12px', height: '12px' }} />\n {/* Color indicator */}\n {currentColor && (\n <span\n style={{\n position: 'absolute',\n bottom: '2px',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '12px',\n height: '3px',\n borderRadius: '1px',\n backgroundColor: currentColor,\n }}\n />\n )}\n </button>\n )\n\n return (\n <div style={{ position: 'relative' }}>\n <Dropdown isOpen={isOpen} onOpenChange={setIsOpen} trigger={trigger} minWidth={260}>\n <ColorPickerPanel\n currentColor={currentColor}\n onColorChange={handleColorChange}\n onClose={close}\n mode=\"text\"\n />\n </Dropdown>\n </div>\n )\n}\n\n// =============================================================================\n// Color Picker Panel (shared between text and highlight)\n// =============================================================================\n\ninterface ColorPickerPanelProps {\n currentColor: string | undefined\n onColorChange: (color: string | null) => void\n onClose: () => void\n mode: 'text' | 'highlight'\n showOpacity?: boolean\n}\n\nexport function ColorPickerPanel({\n currentColor,\n onColorChange,\n onClose,\n mode,\n showOpacity = true,\n}: ColorPickerPanelProps) {\n const theme = useTheme()\n const presets = theme.colorPresets\n const parsed = parseColor(currentColor)\n\n const [hex, setHex] = useState(parsed.hex)\n const [hexInput, setHexInput] = useState(parsed.hex)\n const [opacity, setOpacity] = useState(parsed.opacity)\n const [hoverTheme, setHoverTheme] = useState(false)\n\n // Apply color (converts to rgba if opacity < 100)\n const applyColor = useCallback(\n (h: string, o: number) => {\n if (o < 100) {\n onColorChange(hexToRgba(h, o))\n } else {\n onColorChange(h)\n }\n },\n [onColorChange]\n )\n\n const handleColorInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newHex = e.target.value\n setHex(newHex)\n setHexInput(newHex)\n applyColor(newHex, opacity)\n },\n [opacity, applyColor]\n )\n\n const handleHexInputChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const input = e.target.value\n setHexInput(input)\n const normalized = normalizeHex(input)\n if (normalized) {\n setHex(normalized)\n applyColor(normalized, opacity)\n }\n },\n [opacity, applyColor]\n )\n\n const handleHexInputBlur = useCallback(() => {\n setHexInput(hex)\n }, [hex])\n\n const handleOpacityChange = useCallback(\n (e: React.ChangeEvent<HTMLInputElement>) => {\n const newOpacity = parseInt(e.target.value, 10)\n setOpacity(newOpacity)\n applyColor(hex, newOpacity)\n },\n [hex, applyColor]\n )\n\n const handlePresetClick = useCallback(\n (preset: { hex: string; label: string }) => {\n setHex(preset.hex)\n setHexInput(preset.hex)\n setOpacity(100)\n applyColor(preset.hex, 100)\n onClose()\n },\n [applyColor, onClose]\n )\n\n const handleClearColor = useCallback(() => {\n onColorChange(null)\n onClose()\n }, [onColorChange, onClose])\n\n const previewColor = hexToRgba(hex, opacity)\n\n return (\n <div style={controlStyles.colorPickerContainer as CSSProperties}>\n {/* Theme/Auto color option */}\n <button\n type=\"button\"\n onClick={handleClearColor}\n onMouseEnter={() => setHoverTheme(true)}\n onMouseLeave={() => setHoverTheme(false)}\n style={{\n ...controlStyles.colorPickerThemeButton,\n ...(hoverTheme ? { backgroundColor: 'var(--puck-color-grey-01)' } : {}),\n }}\n >\n <span style={controlStyles.colorPickerThemeSwatch} />\n {mode === 'text' ? 'Theme Color (Auto)' : 'Remove Highlight'}\n </button>\n\n {/* Color picker row: native picker + hex input + preview */}\n <div style={controlStyles.colorPickerRow}>\n <input\n type=\"color\"\n value={hex}\n onChange={handleColorInputChange}\n style={controlStyles.colorPickerInput}\n title=\"Pick a color\"\n />\n <input\n type=\"text\"\n value={hexInput}\n onChange={handleHexInputChange}\n onBlur={handleHexInputBlur}\n placeholder=\"#000000\"\n style={controlStyles.colorPickerHexInput}\n />\n <div\n style={controlStyles.colorPickerPreview as CSSProperties}\n title={`${hex} at ${opacity}% opacity`}\n >\n <div style={controlStyles.colorPickerCheckerboard as CSSProperties} />\n <div\n style={{ ...(controlStyles.colorPickerOverlay as CSSProperties), backgroundColor: previewColor }}\n />\n </div>\n </div>\n\n {/* Opacity slider */}\n {showOpacity && (\n <div style={controlStyles.colorPickerOpacitySection as CSSProperties}>\n <div style={controlStyles.colorPickerOpacityHeader}>\n <label style={controlStyles.colorPickerOpacityLabel}>Opacity</label>\n <span style={controlStyles.colorPickerOpacityValue}>{opacity}%</span>\n </div>\n <div style={controlStyles.colorPickerOpacitySlider as CSSProperties}>\n <div style={controlStyles.colorPickerCheckerboard as CSSProperties} />\n <div\n style={{\n ...(controlStyles.colorPickerOverlay as CSSProperties),\n background: `linear-gradient(to right, transparent 0%, ${hex} 100%)`,\n }}\n />\n <input\n type=\"range\"\n min=\"0\"\n max=\"100\"\n value={opacity}\n onChange={handleOpacityChange}\n style={controlStyles.colorPickerOpacityInputRange as CSSProperties}\n />\n <div\n style={{\n ...(controlStyles.colorPickerOpacityThumb as CSSProperties),\n left: `calc(${opacity}% - 2px)`,\n }}\n />\n </div>\n </div>\n )}\n\n {/* Preset swatches */}\n {presets.length > 0 && (\n <div>\n <div style={controlStyles.colorPickerPresetsLabel}>Presets</div>\n <div style={controlStyles.colorPickerPresetsGrid as CSSProperties}>\n {presets.map((preset) => {\n const isSelected = hex.toLowerCase() === preset.hex.toLowerCase()\n return (\n <button\n key={preset.hex}\n type=\"button\"\n onClick={() => handlePresetClick(preset)}\n style={{\n ...(isSelected\n ? controlStyles.colorPickerPresetButtonSelected\n : controlStyles.colorPickerPresetButton),\n backgroundColor: preset.hex,\n }}\n title={preset.label}\n />\n )\n })}\n </div>\n </div>\n )}\n </div>\n )\n}\n"],"names":["React","useState","useCallback","Palette","ChevronDown","useTheme","parseColor","normalizeHex","hexToRgba","controlStyles","Dropdown","ColorPickerControl","editor","currentColor","isOpen","setIsOpen","handleColorChange","color","chain","focus","setColor","run","unsetColor","close","hasColor","Boolean","trigger","button","type","title","style","dropdownTrigger","dropdownTriggerActive","icon","width","height","span","position","bottom","left","transform","borderRadius","backgroundColor","div","onOpenChange","minWidth","ColorPickerPanel","onColorChange","onClose","mode","showOpacity","theme","presets","colorPresets","parsed","hex","setHex","hexInput","setHexInput","opacity","setOpacity","hoverTheme","setHoverTheme","applyColor","h","o","handleColorInputChange","e","newHex","target","value","handleHexInputChange","input","normalized","handleHexInputBlur","handleOpacityChange","newOpacity","parseInt","handlePresetClick","preset","handleClearColor","previewColor","colorPickerContainer","onClick","onMouseEnter","onMouseLeave","colorPickerThemeButton","colorPickerThemeSwatch","colorPickerRow","onChange","colorPickerInput","onBlur","placeholder","colorPickerHexInput","colorPickerPreview","colorPickerCheckerboard","colorPickerOverlay","colorPickerOpacitySection","colorPickerOpacityHeader","label","colorPickerOpacityLabel","colorPickerOpacityValue","colorPickerOpacitySlider","background","min","max","colorPickerOpacityInputRange","colorPickerOpacityThumb","length","colorPickerPresetsLabel","colorPickerPresetsGrid","map","isSelected","toLowerCase","colorPickerPresetButtonSelected","colorPickerPresetButton"],"mappings":"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"}
@@ -11,7 +11,7 @@
11
11
  * causes the editor to blur, clearing currentRichText state and breaking all menu
12
12
  * controls (including native Puck ones like HeadingSelect).
13
13
  */
14
- import { type ReactNode } from 'react';
14
+ import React, { type ReactNode } from 'react';
15
15
  interface DropdownProps {
16
16
  isOpen: boolean;
17
17
  onOpenChange: (open: boolean) => void;
@@ -19,6 +19,6 @@ interface DropdownProps {
19
19
  children: ReactNode;
20
20
  minWidth?: number;
21
21
  }
22
- export declare function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth }: DropdownProps): import("react/jsx-runtime").JSX.Element;
22
+ export declare function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth }: DropdownProps): React.JSX.Element;
23
23
  export { Dropdown as DropdownPortal };
24
24
  //# sourceMappingURL=DropdownPortal.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownPortal.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAc,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAQ7C,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAc,EAAE,EAAE,aAAa,2CAuBlG;AAGD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,CAAA"}
1
+ {"version":3,"file":"DropdownPortal.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AAEH,OAAO,KAAK,EAAE,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAA;AAQ7C,UAAU,aAAa;IACrB,MAAM,EAAE,OAAO,CAAA;IACf,YAAY,EAAE,CAAC,IAAI,EAAE,OAAO,KAAK,IAAI,CAAA;IACrC,OAAO,EAAE,SAAS,CAAA;IAClB,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAc,EAAE,EAAE,aAAa,qBAuBlG;AAGD,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,CAAA"}
@@ -1,16 +1,48 @@
1
1
  'use client';
2
2
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
- import { Root as PopoverRoot, Trigger as PopoverTrigger, Portal as PopoverPortal, Content as PopoverContent, } from '@radix-ui/react-popover';
3
+ /**
4
+ * Dropdown - Renders dropdown content using Radix Popover for proper focus management
5
+ *
6
+ * Uses @radix-ui/react-popover which provides:
7
+ * - Proper focus management that integrates with Puck's dirty state tracking
8
+ * - Automatic close on escape and click outside
9
+ * - Focus restoration to trigger element on close
10
+ *
11
+ * IMPORTANT: Uses data-puck-rte-menu attribute so Puck's blur handler recognizes
12
+ * this dropdown as part of the rich text menu. Without this, clicking the dropdown
13
+ * causes the editor to blur, clearing currentRichText state and breaking all menu
14
+ * controls (including native Puck ones like HeadingSelect).
15
+ */ import React from 'react';
16
+ import { Root as PopoverRoot, Trigger as PopoverTrigger, Portal as PopoverPortal, Content as PopoverContent } from '@radix-ui/react-popover';
4
17
  export function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth = 160 }) {
5
- return (_jsxs(PopoverRoot, { open: isOpen, onOpenChange: onOpenChange, children: [_jsx(PopoverTrigger, { asChild: true, children: trigger }), _jsx(PopoverPortal, { children: _jsx(PopoverContent, { align: "start", sideOffset: 4, style: {
18
+ return /*#__PURE__*/ _jsxs(PopoverRoot, {
19
+ open: isOpen,
20
+ onOpenChange: onOpenChange,
21
+ children: [
22
+ /*#__PURE__*/ _jsx(PopoverTrigger, {
23
+ asChild: true,
24
+ children: trigger
25
+ }),
26
+ /*#__PURE__*/ _jsx(PopoverPortal, {
27
+ children: /*#__PURE__*/ _jsx(PopoverContent, {
28
+ align: "start",
29
+ sideOffset: 4,
30
+ style: {
6
31
  backgroundColor: 'var(--puck-color-white)',
7
32
  border: '1px solid var(--puck-color-grey-09)',
8
33
  borderRadius: '8px',
9
34
  boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
10
35
  zIndex: 99999,
11
- minWidth,
12
- }, "data-puck-rte-menu": true, children: children }) })] }));
36
+ minWidth
37
+ },
38
+ "data-puck-rte-menu": true,
39
+ children: children
40
+ })
41
+ })
42
+ ]
43
+ });
13
44
  }
14
45
  // Keep the old export name for backwards compatibility during migration
15
46
  export { Dropdown as DropdownPortal };
47
+
16
48
  //# sourceMappingURL=DropdownPortal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"DropdownPortal.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAiBZ,OAAO,EACL,IAAI,IAAI,WAAW,EACnB,OAAO,IAAI,cAAc,EACzB,MAAM,IAAI,aAAa,EACvB,OAAO,IAAI,cAAc,GAC1B,MAAM,yBAAyB,CAAA;AAUhC,MAAM,UAAU,QAAQ,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,GAAG,GAAG,EAAiB;IACjG,OAAO,CACL,MAAC,WAAW,IAAC,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,aACnD,KAAC,cAAc,IAAC,OAAO,kBAAE,OAAO,GAAkB,EAClD,KAAC,aAAa,cACZ,KAAC,cAAc,IACb,KAAK,EAAC,OAAO,EACb,UAAU,EAAE,CAAC,EACb,KAAK,EAAE;wBACL,eAAe,EAAE,yBAAyB;wBAC1C,MAAM,EAAE,qCAAqC;wBAC7C,YAAY,EAAE,KAAK;wBACnB,SAAS,EAAE,yEAAyE;wBACpF,MAAM,EAAE,KAAK;wBACb,QAAQ;qBACT,wCAGA,QAAQ,GACM,GACH,IACJ,CACf,CAAA;AACH,CAAC;AAED,wEAAwE;AACxE,OAAO,EAAE,QAAQ,IAAI,cAAc,EAAE,CAAA"}
1
+ {"version":3,"sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"sourcesContent":["'use client'\n\n/**\n * Dropdown - Renders dropdown content using Radix Popover for proper focus management\n *\n * Uses @radix-ui/react-popover which provides:\n * - Proper focus management that integrates with Puck's dirty state tracking\n * - Automatic close on escape and click outside\n * - Focus restoration to trigger element on close\n *\n * IMPORTANT: Uses data-puck-rte-menu attribute so Puck's blur handler recognizes\n * this dropdown as part of the rich text menu. Without this, clicking the dropdown\n * causes the editor to blur, clearing currentRichText state and breaking all menu\n * controls (including native Puck ones like HeadingSelect).\n */\n\nimport React, { type ReactNode } from 'react'\nimport {\n Root as PopoverRoot,\n Trigger as PopoverTrigger,\n Portal as PopoverPortal,\n Content as PopoverContent,\n} from '@radix-ui/react-popover'\n\ninterface DropdownProps {\n isOpen: boolean\n onOpenChange: (open: boolean) => void\n trigger: ReactNode\n children: ReactNode\n minWidth?: number\n}\n\nexport function Dropdown({ isOpen, onOpenChange, trigger, children, minWidth = 160 }: DropdownProps) {\n return (\n <PopoverRoot open={isOpen} onOpenChange={onOpenChange}>\n <PopoverTrigger asChild>{trigger}</PopoverTrigger>\n <PopoverPortal>\n <PopoverContent\n align=\"start\"\n sideOffset={4}\n style={{\n backgroundColor: 'var(--puck-color-white)',\n border: '1px solid var(--puck-color-grey-09)',\n borderRadius: '8px',\n boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',\n zIndex: 99999,\n minWidth,\n }}\n data-puck-rte-menu\n >\n {children}\n </PopoverContent>\n </PopoverPortal>\n </PopoverRoot>\n )\n}\n\n// Keep the old export name for backwards compatibility during migration\nexport { Dropdown as DropdownPortal }\n"],"names":["React","Root","PopoverRoot","Trigger","PopoverTrigger","Portal","PopoverPortal","Content","PopoverContent","Dropdown","isOpen","onOpenChange","trigger","children","minWidth","open","asChild","align","sideOffset","style","backgroundColor","border","borderRadius","boxShadow","zIndex","data-puck-rte-menu","DropdownPortal"],"mappings":"AAAA;;AAEA;;;;;;;;;;;;CAYC,GAED,OAAOA,WAA+B,QAAO;AAC7C,SACEC,QAAQC,WAAW,EACnBC,WAAWC,cAAc,EACzBC,UAAUC,aAAa,EACvBC,WAAWC,cAAc,QACpB,0BAAyB;AAUhC,OAAO,SAASC,SAAS,EAAEC,MAAM,EAAEC,YAAY,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,WAAW,GAAG,EAAiB;IACjG,qBACE,MAACZ;QAAYa,MAAML;QAAQC,cAAcA;;0BACvC,KAACP;gBAAeY,OAAO;0BAAEJ;;0BACzB,KAACN;0BACC,cAAA,KAACE;oBACCS,OAAM;oBACNC,YAAY;oBACZC,OAAO;wBACLC,iBAAiB;wBACjBC,QAAQ;wBACRC,cAAc;wBACdC,WAAW;wBACXC,QAAQ;wBACRV;oBACF;oBACAW,oBAAkB;8BAEjBZ;;;;;AAKX;AAEA,wEAAwE;AACxE,SAASJ,YAAYiB,cAAc,GAAE"}
@@ -1,8 +1,16 @@
1
+ /**
2
+ * FontSizeControl - Font size control for Puck RichText toolbar
3
+ *
4
+ * A dropdown with:
5
+ * - 9 preset sizes (XS to 4XL)
6
+ * - Custom size input with px/rem/em unit selection
7
+ */
8
+ import React from 'react';
1
9
  import type { Editor } from '@tiptap/react';
2
10
  interface FontSizeControlProps {
3
11
  editor: Editor;
4
12
  currentSize: string | undefined;
5
13
  }
6
- export declare function FontSizeControl({ editor, currentSize }: FontSizeControlProps): import("react/jsx-runtime").JSX.Element;
14
+ export declare function FontSizeControl({ editor, currentSize }: FontSizeControlProps): React.JSX.Element;
7
15
  export {};
8
16
  //# sourceMappingURL=FontSizeControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"FontSizeControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,oBAAoB,2CA6H5E"}
1
+ {"version":3,"file":"FontSizeControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"names":[],"mappings":"AAEA;;;;;;GAMG;AAEH,OAAO,KAAoD,MAAM,OAAO,CAAA;AAIxE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,oBAAoB;IAC5B,MAAM,EAAE,MAAM,CAAA;IACd,WAAW,EAAE,MAAM,GAAG,SAAS,CAAA;CAChC;AAED,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,oBAAoB,qBA6H5E"}
@@ -6,56 +6,141 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
6
6
  * A dropdown with:
7
7
  * - 9 preset sizes (XS to 4XL)
8
8
  * - Custom size input with px/rem/em unit selection
9
- */
10
- import { useState, useCallback } from 'react';
9
+ */ import React, { useState, useCallback } from 'react';
11
10
  import { ALargeSmall, ChevronDown } from 'lucide-react';
12
- import { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared';
13
- import { Dropdown } from './DropdownPortal';
11
+ import { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared.js';
12
+ import { Dropdown } from './DropdownPortal.js';
14
13
  export function FontSizeControl({ editor, currentSize }) {
15
14
  const [isOpen, setIsOpen] = useState(false);
16
15
  const [customValue, setCustomValue] = useState('');
17
16
  const [customUnit, setCustomUnit] = useState('px');
18
- const handlePresetClick = useCallback((value) => {
17
+ const handlePresetClick = useCallback((value)=>{
19
18
  if (value) {
20
19
  editor.chain().focus().setFontSize(value).run();
21
- }
22
- else {
20
+ } else {
23
21
  editor.chain().focus().unsetFontSize().run();
24
22
  }
25
23
  setIsOpen(false);
26
- }, [editor]);
27
- const handleCustomApply = useCallback(() => {
24
+ }, [
25
+ editor
26
+ ]);
27
+ const handleCustomApply = useCallback(()=>{
28
28
  if (customValue) {
29
29
  const size = `${customValue}${customUnit}`;
30
30
  editor.chain().focus().setFontSize(size).run();
31
31
  setIsOpen(false);
32
32
  setCustomValue('');
33
33
  }
34
- }, [editor, customValue, customUnit]);
35
- const handleCustomKeyDown = useCallback((e) => {
34
+ }, [
35
+ editor,
36
+ customValue,
37
+ customUnit
38
+ ]);
39
+ const handleCustomKeyDown = useCallback((e)=>{
36
40
  if (e.key === 'Enter') {
37
41
  e.preventDefault();
38
42
  handleCustomApply();
39
43
  }
40
- }, [handleCustomApply]);
44
+ }, [
45
+ handleCustomApply
46
+ ]);
41
47
  // Find current preset label if any
42
- const currentPreset = FONT_SIZES.find((s) => s.value === currentSize);
48
+ const currentPreset = FONT_SIZES.find((s)=>s.value === currentSize);
43
49
  const hasCustomSize = currentSize && !currentPreset;
44
- const trigger = (_jsxs("button", { type: "button", title: "Font Size", style: {
50
+ const trigger = /*#__PURE__*/ _jsxs("button", {
51
+ type: "button",
52
+ title: "Font Size",
53
+ style: {
45
54
  ...controlStyles.dropdownTrigger,
46
- ...(currentSize ? controlStyles.dropdownTriggerActive : {}),
47
- }, children: [_jsx(ALargeSmall, { style: controlStyles.icon }), _jsx(ChevronDown, { style: { width: '12px', height: '12px' } })] }));
48
- return (_jsx("div", { style: { position: 'relative' }, children: _jsxs(Dropdown, { isOpen: isOpen, onOpenChange: setIsOpen, trigger: trigger, minWidth: 200, children: [_jsx("div", { style: controlStyles.dropdownLabel, children: "Presets" }), _jsx("div", { style: controlStyles.fontSizeGrid, children: FONT_SIZES.map((size) => {
49
- const isActive = size.value === currentSize || (!size.value && !currentSize);
50
- return (_jsx("button", { type: "button", onClick: () => handlePresetClick(size.value), title: size.px, style: {
55
+ ...currentSize ? controlStyles.dropdownTriggerActive : {}
56
+ },
57
+ children: [
58
+ /*#__PURE__*/ _jsx(ALargeSmall, {
59
+ style: controlStyles.icon
60
+ }),
61
+ /*#__PURE__*/ _jsx(ChevronDown, {
62
+ style: {
63
+ width: '12px',
64
+ height: '12px'
65
+ }
66
+ })
67
+ ]
68
+ });
69
+ return /*#__PURE__*/ _jsx("div", {
70
+ style: {
71
+ position: 'relative'
72
+ },
73
+ children: /*#__PURE__*/ _jsxs(Dropdown, {
74
+ isOpen: isOpen,
75
+ onOpenChange: setIsOpen,
76
+ trigger: trigger,
77
+ minWidth: 200,
78
+ children: [
79
+ /*#__PURE__*/ _jsx("div", {
80
+ style: controlStyles.dropdownLabel,
81
+ children: "Presets"
82
+ }),
83
+ /*#__PURE__*/ _jsx("div", {
84
+ style: controlStyles.fontSizeGrid,
85
+ children: FONT_SIZES.map((size)=>{
86
+ const isActive = size.value === currentSize || !size.value && !currentSize;
87
+ return /*#__PURE__*/ _jsx("button", {
88
+ type: "button",
89
+ onClick: ()=>handlePresetClick(size.value),
90
+ title: size.px,
91
+ style: {
51
92
  ...controlStyles.fontSizeButton,
52
- ...(isActive ? controlStyles.fontSizeButtonActive : {}),
53
- }, children: size.label }, size.label));
54
- }) }), _jsxs("div", { style: controlStyles.customSizeRow, children: [_jsx("input", { type: "number", placeholder: "16", min: "8", max: "200", value: customValue, onChange: (e) => setCustomValue(e.target.value), onKeyDown: handleCustomKeyDown, style: controlStyles.customSizeInput }), _jsx("select", { value: customUnit, onChange: (e) => setCustomUnit(e.target.value), style: controlStyles.customSizeSelect, children: FONT_SIZE_UNITS.map((unit) => (_jsx("option", { value: unit, children: unit }, unit))) }), _jsx("button", { type: "button", onClick: handleCustomApply, style: controlStyles.customSizeApply, children: "Apply" })] }), hasCustomSize && (_jsxs("div", { style: {
93
+ ...isActive ? controlStyles.fontSizeButtonActive : {}
94
+ },
95
+ children: size.label
96
+ }, size.label);
97
+ })
98
+ }),
99
+ /*#__PURE__*/ _jsxs("div", {
100
+ style: controlStyles.customSizeRow,
101
+ children: [
102
+ /*#__PURE__*/ _jsx("input", {
103
+ type: "number",
104
+ placeholder: "16",
105
+ min: "8",
106
+ max: "200",
107
+ value: customValue,
108
+ onChange: (e)=>setCustomValue(e.target.value),
109
+ onKeyDown: handleCustomKeyDown,
110
+ style: controlStyles.customSizeInput
111
+ }),
112
+ /*#__PURE__*/ _jsx("select", {
113
+ value: customUnit,
114
+ onChange: (e)=>setCustomUnit(e.target.value),
115
+ style: controlStyles.customSizeSelect,
116
+ children: FONT_SIZE_UNITS.map((unit)=>/*#__PURE__*/ _jsx("option", {
117
+ value: unit,
118
+ children: unit
119
+ }, unit))
120
+ }),
121
+ /*#__PURE__*/ _jsx("button", {
122
+ type: "button",
123
+ onClick: handleCustomApply,
124
+ style: controlStyles.customSizeApply,
125
+ children: "Apply"
126
+ })
127
+ ]
128
+ }),
129
+ hasCustomSize && /*#__PURE__*/ _jsxs("div", {
130
+ style: {
55
131
  padding: '8px 12px',
56
132
  fontSize: '12px',
57
133
  color: 'var(--puck-color-grey-05)',
58
- borderTop: '1px solid var(--puck-color-grey-03)',
59
- }, children: ["Current: ", currentSize] }))] }) }));
134
+ borderTop: '1px solid var(--puck-color-grey-03)'
135
+ },
136
+ children: [
137
+ "Current: ",
138
+ currentSize
139
+ ]
140
+ })
141
+ ]
142
+ })
143
+ });
60
144
  }
145
+
61
146
  //# sourceMappingURL=FontSizeControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FontSizeControl.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"sourcesContent":["'use client'\n\n/**\n * FontSizeControl - Font size control for Puck RichText toolbar\n *\n * A dropdown with:\n * - 9 preset sizes (XS to 4XL)\n * - Custom size input with px/rem/em unit selection\n */\n\nimport React, { useState, useCallback, type CSSProperties } from 'react'\nimport { ALargeSmall, ChevronDown } from 'lucide-react'\nimport { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared.js'\nimport { Dropdown } from './DropdownPortal.js'\nimport type { Editor } from '@tiptap/react'\n\ninterface FontSizeControlProps {\n editor: Editor\n currentSize: string | undefined\n}\n\nexport function FontSizeControl({ editor, currentSize }: FontSizeControlProps) {\n const [isOpen, setIsOpen] = useState(false)\n const [customValue, setCustomValue] = useState('')\n const [customUnit, setCustomUnit] = useState<'px' | 'rem' | 'em'>('px')\n\n const handlePresetClick = useCallback(\n (value: string | null) => {\n if (value) {\n editor.chain().focus().setFontSize(value).run()\n } else {\n editor.chain().focus().unsetFontSize().run()\n }\n setIsOpen(false)\n },\n [editor]\n )\n\n const handleCustomApply = useCallback(() => {\n if (customValue) {\n const size = `${customValue}${customUnit}`\n editor.chain().focus().setFontSize(size).run()\n setIsOpen(false)\n setCustomValue('')\n }\n }, [editor, customValue, customUnit])\n\n const handleCustomKeyDown = useCallback(\n (e: React.KeyboardEvent) => {\n if (e.key === 'Enter') {\n e.preventDefault()\n handleCustomApply()\n }\n },\n [handleCustomApply]\n )\n\n // Find current preset label if any\n const currentPreset = FONT_SIZES.find((s) => s.value === currentSize)\n const hasCustomSize = currentSize && !currentPreset\n\n const trigger = (\n <button\n type=\"button\"\n title=\"Font Size\"\n style={{\n ...controlStyles.dropdownTrigger,\n ...(currentSize ? controlStyles.dropdownTriggerActive : {}),\n }}\n >\n <ALargeSmall style={controlStyles.icon} />\n <ChevronDown style={{ width: '12px', height: '12px' }} />\n </button>\n )\n\n return (\n <div style={{ position: 'relative' }}>\n <Dropdown isOpen={isOpen} onOpenChange={setIsOpen} trigger={trigger} minWidth={200}>\n {/* Preset label */}\n <div style={controlStyles.dropdownLabel}>Presets</div>\n\n {/* Preset grid */}\n <div style={controlStyles.fontSizeGrid as CSSProperties}>\n {FONT_SIZES.map((size) => {\n const isActive = size.value === currentSize || (!size.value && !currentSize)\n return (\n <button\n key={size.label}\n type=\"button\"\n onClick={() => handlePresetClick(size.value)}\n title={size.px}\n style={{\n ...controlStyles.fontSizeButton,\n ...(isActive ? controlStyles.fontSizeButtonActive : {}),\n }}\n >\n {size.label}\n </button>\n )\n })}\n </div>\n\n {/* Custom size input */}\n <div style={controlStyles.customSizeRow as CSSProperties}>\n <input\n type=\"number\"\n placeholder=\"16\"\n min=\"8\"\n max=\"200\"\n value={customValue}\n onChange={(e) => setCustomValue(e.target.value)}\n onKeyDown={handleCustomKeyDown}\n style={controlStyles.customSizeInput}\n />\n <select\n value={customUnit}\n onChange={(e) => setCustomUnit(e.target.value as 'px' | 'rem' | 'em')}\n style={controlStyles.customSizeSelect}\n >\n {FONT_SIZE_UNITS.map((unit) => (\n <option key={unit} value={unit}>\n {unit}\n </option>\n ))}\n </select>\n <button type=\"button\" onClick={handleCustomApply} style={controlStyles.customSizeApply}>\n Apply\n </button>\n </div>\n\n {/* Show current custom size if any */}\n {hasCustomSize && (\n <div\n style={{\n padding: '8px 12px',\n fontSize: '12px',\n color: 'var(--puck-color-grey-05)',\n borderTop: '1px solid var(--puck-color-grey-03)',\n }}\n >\n Current: {currentSize}\n </div>\n )}\n </Dropdown>\n </div>\n )\n}\n"],"names":["React","useState","useCallback","ALargeSmall","ChevronDown","FONT_SIZES","FONT_SIZE_UNITS","controlStyles","Dropdown","FontSizeControl","editor","currentSize","isOpen","setIsOpen","customValue","setCustomValue","customUnit","setCustomUnit","handlePresetClick","value","chain","focus","setFontSize","run","unsetFontSize","handleCustomApply","size","handleCustomKeyDown","e","key","preventDefault","currentPreset","find","s","hasCustomSize","trigger","button","type","title","style","dropdownTrigger","dropdownTriggerActive","icon","width","height","div","position","onOpenChange","minWidth","dropdownLabel","fontSizeGrid","map","isActive","onClick","px","fontSizeButton","fontSizeButtonActive","label","customSizeRow","input","placeholder","min","max","onChange","target","onKeyDown","customSizeInput","select","customSizeSelect","unit","option","customSizeApply","padding","fontSize","color","borderTop"],"mappings":"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"}
@@ -1,9 +1,20 @@
1
+ /**
2
+ * HighlightControl - Text highlight control for Puck RichText toolbar
3
+ *
4
+ * A dropdown color picker for text highlighting with:
5
+ * - Native color input
6
+ * - Hex input with validation
7
+ * - Opacity slider (RGBA support)
8
+ * - Theme color presets
9
+ * - Remove highlight option
10
+ */
11
+ import React from 'react';
1
12
  import type { Editor } from '@tiptap/react';
2
13
  interface HighlightControlProps {
3
14
  editor: Editor;
4
15
  currentColor: string | undefined;
5
16
  isActive: boolean;
6
17
  }
7
- export declare function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps): import("react/jsx-runtime").JSX.Element;
18
+ export declare function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps): React.JSX.Element;
8
19
  export {};
9
20
  //# sourceMappingURL=HighlightControl.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HighlightControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,qBAAqB,2CAyDzF"}
1
+ {"version":3,"file":"HighlightControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;GASG;AAEH,OAAO,KAAgC,MAAM,OAAO,CAAA;AAKpD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,qBAAqB;IAC7B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED,wBAAgB,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,EAAE,qBAAqB,qBAyDzF"}
@@ -9,27 +9,44 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
9
  * - Opacity slider (RGBA support)
10
10
  * - Theme color presets
11
11
  * - Remove highlight option
12
- */
13
- import { useState, useCallback } from 'react';
12
+ */ import React, { useState, useCallback } from 'react';
14
13
  import { Highlighter, ChevronDown } from 'lucide-react';
15
- import { controlStyles } from './shared';
16
- import { ColorPickerPanel } from './ColorPickerControl';
17
- import { Dropdown } from './DropdownPortal';
14
+ import { controlStyles } from './shared.js';
15
+ import { ColorPickerPanel } from './ColorPickerControl.js';
16
+ import { Dropdown } from './DropdownPortal.js';
18
17
  export function HighlightControl({ editor, currentColor, isActive }) {
19
18
  const [isOpen, setIsOpen] = useState(false);
20
- const handleColorChange = useCallback((color) => {
19
+ const handleColorChange = useCallback((color)=>{
21
20
  if (color) {
22
- editor.chain().focus().setHighlight({ color }).run();
23
- }
24
- else {
21
+ editor.chain().focus().setHighlight({
22
+ color
23
+ }).run();
24
+ } else {
25
25
  editor.chain().focus().unsetHighlight().run();
26
26
  }
27
- }, [editor]);
28
- const close = useCallback(() => setIsOpen(false), []);
29
- const trigger = (_jsxs("button", { type: "button", title: "Highlight", style: {
27
+ }, [
28
+ editor
29
+ ]);
30
+ const close = useCallback(()=>setIsOpen(false), []);
31
+ const trigger = /*#__PURE__*/ _jsxs("button", {
32
+ type: "button",
33
+ title: "Highlight",
34
+ style: {
30
35
  ...controlStyles.dropdownTrigger,
31
- ...(isActive ? controlStyles.dropdownTriggerActive : {}),
32
- }, children: [_jsx(Highlighter, { style: controlStyles.icon }), _jsx(ChevronDown, { style: { width: '12px', height: '12px' } }), currentColor && (_jsx("span", { style: {
36
+ ...isActive ? controlStyles.dropdownTriggerActive : {}
37
+ },
38
+ children: [
39
+ /*#__PURE__*/ _jsx(Highlighter, {
40
+ style: controlStyles.icon
41
+ }),
42
+ /*#__PURE__*/ _jsx(ChevronDown, {
43
+ style: {
44
+ width: '12px',
45
+ height: '12px'
46
+ }
47
+ }),
48
+ currentColor && /*#__PURE__*/ _jsx("span", {
49
+ style: {
33
50
  position: 'absolute',
34
51
  bottom: '2px',
35
52
  left: '50%',
@@ -37,8 +54,28 @@ export function HighlightControl({ editor, currentColor, isActive }) {
37
54
  width: '12px',
38
55
  height: '3px',
39
56
  borderRadius: '1px',
40
- backgroundColor: currentColor,
41
- } }))] }));
42
- return (_jsx("div", { style: { position: 'relative' }, children: _jsx(Dropdown, { isOpen: isOpen, onOpenChange: setIsOpen, trigger: trigger, minWidth: 260, children: _jsx(ColorPickerPanel, { currentColor: currentColor, onColorChange: handleColorChange, onClose: close, mode: "highlight" }) }) }));
57
+ backgroundColor: currentColor
58
+ }
59
+ })
60
+ ]
61
+ });
62
+ return /*#__PURE__*/ _jsx("div", {
63
+ style: {
64
+ position: 'relative'
65
+ },
66
+ children: /*#__PURE__*/ _jsx(Dropdown, {
67
+ isOpen: isOpen,
68
+ onOpenChange: setIsOpen,
69
+ trigger: trigger,
70
+ minWidth: 260,
71
+ children: /*#__PURE__*/ _jsx(ColorPickerPanel, {
72
+ currentColor: currentColor,
73
+ onColorChange: handleColorChange,
74
+ onClose: close,
75
+ mode: "highlight"
76
+ })
77
+ })
78
+ });
43
79
  }
80
+
44
81
  //# sourceMappingURL=HighlightControl.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"HighlightControl.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"names":[],"mappings":"AAAA,YAAY,CAAA;;AAEZ;;;;;;;;;GASG;AAEH,OAAc,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AACpD,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,cAAc,CAAA;AACvD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAA;AACxC,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAS3C,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAyB;IACxF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAE3C,MAAM,iBAAiB,GAAG,WAAW,CACnC,CAAC,KAAoB,EAAE,EAAE;QACvB,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,GAAG,EAAE,CAAA;QACtD,CAAC;aAAM,CAAC;YACN,MAAM,CAAC,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,cAAc,EAAE,CAAC,GAAG,EAAE,CAAA;QAC/C,CAAC;IACH,CAAC,EACD,CAAC,MAAM,CAAC,CACT,CAAA;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAA;IAErD,MAAM,OAAO,GAAG,CACd,kBACE,IAAI,EAAC,QAAQ,EACb,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE;YACL,GAAG,aAAa,CAAC,eAAe;YAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;SACzD,aAED,KAAC,WAAW,IAAC,KAAK,EAAE,aAAa,CAAC,IAAI,GAAI,EAC1C,KAAC,WAAW,IAAC,KAAK,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAI,EAExD,YAAY,IAAI,CACf,eACE,KAAK,EAAE;oBACL,QAAQ,EAAE,UAAU;oBACpB,MAAM,EAAE,KAAK;oBACb,IAAI,EAAE,KAAK;oBACX,SAAS,EAAE,kBAAkB;oBAC7B,KAAK,EAAE,MAAM;oBACb,MAAM,EAAE,KAAK;oBACb,YAAY,EAAE,KAAK;oBACnB,eAAe,EAAE,YAAY;iBAC9B,GACD,CACH,IACM,CACV,CAAA;IAED,OAAO,CACL,cAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,YAClC,KAAC,QAAQ,IAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,YAChF,KAAC,gBAAgB,IACf,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,iBAAiB,EAChC,OAAO,EAAE,KAAK,EACd,IAAI,EAAC,WAAW,GAChB,GACO,GACP,CACP,CAAA;AACH,CAAC"}
1
+ {"version":3,"sources":["../../../../src/fields/richtext/controls/HighlightControl.tsx"],"sourcesContent":["'use client'\n\n/**\n * HighlightControl - Text highlight control for Puck RichText toolbar\n *\n * A dropdown color picker for text highlighting with:\n * - Native color input\n * - Hex input with validation\n * - Opacity slider (RGBA support)\n * - Theme color presets\n * - Remove highlight option\n */\n\nimport React, { useState, useCallback } from 'react'\nimport { Highlighter, ChevronDown } from 'lucide-react'\nimport { controlStyles } from './shared.js'\nimport { ColorPickerPanel } from './ColorPickerControl.js'\nimport { Dropdown } from './DropdownPortal.js'\nimport type { Editor } from '@tiptap/react'\n\ninterface HighlightControlProps {\n editor: Editor\n currentColor: string | undefined\n isActive: boolean\n}\n\nexport function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps) {\n const [isOpen, setIsOpen] = useState(false)\n\n const handleColorChange = useCallback(\n (color: string | null) => {\n if (color) {\n editor.chain().focus().setHighlight({ color }).run()\n } else {\n editor.chain().focus().unsetHighlight().run()\n }\n },\n [editor]\n )\n\n const close = useCallback(() => setIsOpen(false), [])\n\n const trigger = (\n <button\n type=\"button\"\n title=\"Highlight\"\n style={{\n ...controlStyles.dropdownTrigger,\n ...(isActive ? controlStyles.dropdownTriggerActive : {}),\n }}\n >\n <Highlighter style={controlStyles.icon} />\n <ChevronDown style={{ width: '12px', height: '12px' }} />\n {/* Highlight color indicator */}\n {currentColor && (\n <span\n style={{\n position: 'absolute',\n bottom: '2px',\n left: '50%',\n transform: 'translateX(-50%)',\n width: '12px',\n height: '3px',\n borderRadius: '1px',\n backgroundColor: currentColor,\n }}\n />\n )}\n </button>\n )\n\n return (\n <div style={{ position: 'relative' }}>\n <Dropdown isOpen={isOpen} onOpenChange={setIsOpen} trigger={trigger} minWidth={260}>\n <ColorPickerPanel\n currentColor={currentColor}\n onColorChange={handleColorChange}\n onClose={close}\n mode=\"highlight\"\n />\n </Dropdown>\n </div>\n )\n}\n"],"names":["React","useState","useCallback","Highlighter","ChevronDown","controlStyles","ColorPickerPanel","Dropdown","HighlightControl","editor","currentColor","isActive","isOpen","setIsOpen","handleColorChange","color","chain","focus","setHighlight","run","unsetHighlight","close","trigger","button","type","title","style","dropdownTrigger","dropdownTriggerActive","icon","width","height","span","position","bottom","left","transform","borderRadius","backgroundColor","div","onOpenChange","minWidth","onColorChange","onClose","mode"],"mappings":"AAAA;;AAEA;;;;;;;;;CASC,GAED,OAAOA,SAASC,QAAQ,EAAEC,WAAW,QAAQ,QAAO;AACpD,SAASC,WAAW,EAAEC,WAAW,QAAQ,eAAc;AACvD,SAASC,aAAa,QAAQ,cAAa;AAC3C,SAASC,gBAAgB,QAAQ,0BAAyB;AAC1D,SAASC,QAAQ,QAAQ,sBAAqB;AAS9C,OAAO,SAASC,iBAAiB,EAAEC,MAAM,EAAEC,YAAY,EAAEC,QAAQ,EAAyB;IACxF,MAAM,CAACC,QAAQC,UAAU,GAAGZ,SAAS;IAErC,MAAMa,oBAAoBZ,YACxB,CAACa;QACC,IAAIA,OAAO;YACTN,OAAOO,KAAK,GAAGC,KAAK,GAAGC,YAAY,CAAC;gBAAEH;YAAM,GAAGI,GAAG;QACpD,OAAO;YACLV,OAAOO,KAAK,GAAGC,KAAK,GAAGG,cAAc,GAAGD,GAAG;QAC7C;IACF,GACA;QAACV;KAAO;IAGV,MAAMY,QAAQnB,YAAY,IAAMW,UAAU,QAAQ,EAAE;IAEpD,MAAMS,wBACJ,MAACC;QACCC,MAAK;QACLC,OAAM;QACNC,OAAO;YACL,GAAGrB,cAAcsB,eAAe;YAChC,GAAIhB,WAAWN,cAAcuB,qBAAqB,GAAG,CAAC,CAAC;QACzD;;0BAEA,KAACzB;gBAAYuB,OAAOrB,cAAcwB,IAAI;;0BACtC,KAACzB;gBAAYsB,OAAO;oBAAEI,OAAO;oBAAQC,QAAQ;gBAAO;;YAEnDrB,8BACC,KAACsB;gBACCN,OAAO;oBACLO,UAAU;oBACVC,QAAQ;oBACRC,MAAM;oBACNC,WAAW;oBACXN,OAAO;oBACPC,QAAQ;oBACRM,cAAc;oBACdC,iBAAiB5B;gBACnB;;;;IAMR,qBACE,KAAC6B;QAAIb,OAAO;YAAEO,UAAU;QAAW;kBACjC,cAAA,KAAC1B;YAASK,QAAQA;YAAQ4B,cAAc3B;YAAWS,SAASA;YAASmB,UAAU;sBAC7E,cAAA,KAACnC;gBACCI,cAAcA;gBACdgC,eAAe5B;gBACf6B,SAAStB;gBACTuB,MAAK;;;;AAKf"}
@@ -3,9 +3,9 @@
3
3
  *
4
4
  * Custom controls for Puck's native richtext field.
5
5
  */
6
- export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl';
7
- export { FontSizeControl } from './FontSizeControl';
8
- export { HighlightControl } from './HighlightControl';
9
- export { normalizeHex, hexToRgba, parseColor, FONT_SIZES, FONT_SIZE_UNITS, controlStyles, } from './shared';
10
- export type { FontSizeUnit } from './shared';
6
+ export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl.js';
7
+ export { FontSizeControl } from './FontSizeControl.js';
8
+ export { HighlightControl } from './HighlightControl.js';
9
+ export { normalizeHex, hexToRgba, parseColor, FONT_SIZES, FONT_SIZE_UNITS, controlStyles, } from './shared.js';
10
+ export type { FontSizeUnit } from './shared.js';
11
11
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,UAAU,EAEV,UAAU,EACV,eAAe,EAEf,aAAa,GACd,MAAM,UAAU,CAAA;AAEjB,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAA;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAExD,OAAO,EAEL,YAAY,EACZ,SAAS,EACT,UAAU,EAEV,UAAU,EACV,eAAe,EAEf,aAAa,GACd,MAAM,aAAa,CAAA;AAEpB,YAAY,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA"}
@@ -2,15 +2,12 @@
2
2
  * RichText toolbar controls
3
3
  *
4
4
  * Custom controls for Puck's native richtext field.
5
- */
6
- export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl';
7
- export { FontSizeControl } from './FontSizeControl';
8
- export { HighlightControl } from './HighlightControl';
9
- export {
10
- // Color utilities
11
- normalizeHex, hexToRgba, parseColor,
12
- // Font size presets
13
- FONT_SIZES, FONT_SIZE_UNITS,
14
- // Shared styles
15
- controlStyles, } from './shared';
5
+ */ export { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl.js';
6
+ export { FontSizeControl } from './FontSizeControl.js';
7
+ export { HighlightControl } from './HighlightControl.js';
8
+ export { // Color utilities
9
+ normalizeHex, hexToRgba, parseColor, // Font size presets
10
+ FONT_SIZES, FONT_SIZE_UNITS, // Shared styles
11
+ controlStyles } from './shared.js';
12
+
16
13
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;AACnD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAA;AAErD,OAAO;AACL,kBAAkB;AAClB,YAAY,EACZ,SAAS,EACT,UAAU;AACV,oBAAoB;AACpB,UAAU,EACV,eAAe;AACf,gBAAgB;AAChB,aAAa,GACd,MAAM,UAAU,CAAA"}
1
+ {"version":3,"sources":["../../../../src/fields/richtext/controls/index.ts"],"sourcesContent":["/**\n * RichText toolbar controls\n *\n * Custom controls for Puck's native richtext field.\n */\n\nexport { ColorPickerControl, ColorPickerPanel } from './ColorPickerControl.js'\nexport { FontSizeControl } from './FontSizeControl.js'\nexport { HighlightControl } from './HighlightControl.js'\n\nexport {\n // Color utilities\n normalizeHex,\n hexToRgba,\n parseColor,\n // Font size presets\n FONT_SIZES,\n FONT_SIZE_UNITS,\n // Shared styles\n controlStyles,\n} from './shared.js'\n\nexport type { FontSizeUnit } from './shared.js'\n"],"names":["ColorPickerControl","ColorPickerPanel","FontSizeControl","HighlightControl","normalizeHex","hexToRgba","parseColor","FONT_SIZES","FONT_SIZE_UNITS","controlStyles"],"mappings":"AAAA;;;;CAIC,GAED,SAASA,kBAAkB,EAAEC,gBAAgB,QAAQ,0BAAyB;AAC9E,SAASC,eAAe,QAAQ,uBAAsB;AACtD,SAASC,gBAAgB,QAAQ,wBAAuB;AAExD,SACE,kBAAkB;AAClBC,YAAY,EACZC,SAAS,EACTC,UAAU,EACV,oBAAoB;AACpBC,UAAU,EACVC,eAAe,EACf,gBAAgB;AAChBC,aAAa,QACR,cAAa"}