@delmaredigital/payload-puck 0.4.0 → 0.6.0

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 (427) hide show
  1. package/README.md +331 -16
  2. package/dist/admin/PuckEditorView.d.ts +1 -1
  3. package/dist/admin/PuckEditorView.d.ts.map +1 -1
  4. package/dist/ai/collections/AiContext.d.ts +16 -0
  5. package/dist/ai/collections/AiContext.d.ts.map +1 -0
  6. package/dist/ai/collections/AiContext.js +87 -0
  7. package/dist/ai/collections/AiContext.js.map +1 -0
  8. package/dist/ai/collections/AiPrompts.d.ts +10 -0
  9. package/dist/ai/collections/AiPrompts.d.ts.map +1 -0
  10. package/dist/ai/collections/AiPrompts.js +63 -0
  11. package/dist/ai/collections/AiPrompts.js.map +1 -0
  12. package/dist/ai/createAiApiRoutes.d.ts +40 -0
  13. package/dist/ai/createAiApiRoutes.d.ts.map +1 -0
  14. package/dist/ai/createAiApiRoutes.js +106 -0
  15. package/dist/ai/createAiApiRoutes.js.map +1 -0
  16. package/dist/ai/createAiGenerate.d.ts +65 -0
  17. package/dist/ai/createAiGenerate.d.ts.map +1 -0
  18. package/dist/ai/createAiGenerate.js +106 -0
  19. package/dist/ai/createAiGenerate.js.map +1 -0
  20. package/dist/ai/createAiPlugin.d.ts +39 -0
  21. package/dist/ai/createAiPlugin.d.ts.map +1 -0
  22. package/dist/ai/createAiPlugin.js +61 -0
  23. package/dist/ai/createAiPlugin.js.map +1 -0
  24. package/dist/ai/hooks/useAiContext.d.ts +63 -0
  25. package/dist/ai/hooks/useAiContext.d.ts.map +1 -0
  26. package/dist/ai/hooks/useAiContext.js +146 -0
  27. package/dist/ai/hooks/useAiContext.js.map +1 -0
  28. package/dist/ai/hooks/useAiPrompts.d.ts +25 -0
  29. package/dist/ai/hooks/useAiPrompts.d.ts.map +1 -0
  30. package/dist/ai/hooks/useAiPrompts.js +74 -0
  31. package/dist/ai/hooks/useAiPrompts.js.map +1 -0
  32. package/dist/ai/index.d.ts +51 -0
  33. package/dist/ai/index.d.ts.map +1 -0
  34. package/dist/ai/index.js +69 -0
  35. package/dist/ai/index.js.map +1 -0
  36. package/dist/ai/plugins/ContextEditorPanel.d.ts +9 -0
  37. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -0
  38. package/dist/ai/plugins/ContextEditorPanel.js +399 -0
  39. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -0
  40. package/dist/ai/plugins/PromptEditorPanel.d.ts +9 -0
  41. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -0
  42. package/dist/ai/plugins/PromptEditorPanel.js +270 -0
  43. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -0
  44. package/dist/ai/plugins/contextEditorPlugin.d.ts +30 -0
  45. package/dist/ai/plugins/contextEditorPlugin.d.ts.map +1 -0
  46. package/dist/ai/plugins/contextEditorPlugin.js +40 -0
  47. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -0
  48. package/dist/ai/plugins/promptApiRoutes.d.ts +68 -0
  49. package/dist/ai/plugins/promptApiRoutes.d.ts.map +1 -0
  50. package/dist/ai/plugins/promptApiRoutes.js +181 -0
  51. package/dist/ai/plugins/promptApiRoutes.js.map +1 -0
  52. package/dist/ai/plugins/promptEditorPlugin.d.ts +29 -0
  53. package/dist/ai/plugins/promptEditorPlugin.d.ts.map +1 -0
  54. package/dist/ai/plugins/promptEditorPlugin.js +39 -0
  55. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -0
  56. package/dist/ai/presets/componentAiDefaults.d.ts +40 -0
  57. package/dist/ai/presets/componentAiDefaults.d.ts.map +1 -0
  58. package/dist/ai/presets/componentAiDefaults.js +239 -0
  59. package/dist/ai/presets/componentAiDefaults.js.map +1 -0
  60. package/dist/ai/presets/index.d.ts +94 -0
  61. package/dist/ai/presets/index.d.ts.map +1 -0
  62. package/dist/ai/presets/index.js +110 -0
  63. package/dist/ai/presets/index.js.map +1 -0
  64. package/dist/ai/presets/instructions/interactive.d.ts +15 -0
  65. package/dist/ai/presets/instructions/interactive.d.ts.map +1 -0
  66. package/dist/ai/presets/instructions/interactive.js +334 -0
  67. package/dist/ai/presets/instructions/interactive.js.map +1 -0
  68. package/dist/ai/presets/instructions/layout.d.ts +16 -0
  69. package/dist/ai/presets/instructions/layout.d.ts.map +1 -0
  70. package/dist/ai/presets/instructions/layout.js +486 -0
  71. package/dist/ai/presets/instructions/layout.js.map +1 -0
  72. package/dist/ai/presets/instructions/media.d.ts +15 -0
  73. package/dist/ai/presets/instructions/media.d.ts.map +1 -0
  74. package/dist/ai/presets/instructions/media.js +136 -0
  75. package/dist/ai/presets/instructions/media.js.map +1 -0
  76. package/dist/ai/presets/instructions/pagePatterns.d.ts +20 -0
  77. package/dist/ai/presets/instructions/pagePatterns.d.ts.map +1 -0
  78. package/dist/ai/presets/instructions/pagePatterns.js +290 -0
  79. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -0
  80. package/dist/ai/presets/instructions/schemas.d.ts +1247 -0
  81. package/dist/ai/presets/instructions/schemas.d.ts.map +1 -0
  82. package/dist/ai/presets/instructions/schemas.js +240 -0
  83. package/dist/ai/presets/instructions/schemas.js.map +1 -0
  84. package/dist/ai/presets/instructions/typography.d.ts +16 -0
  85. package/dist/ai/presets/instructions/typography.d.ts.map +1 -0
  86. package/dist/ai/presets/instructions/typography.js +192 -0
  87. package/dist/ai/presets/instructions/typography.js.map +1 -0
  88. package/dist/ai/tools/index.d.ts +116 -0
  89. package/dist/ai/tools/index.d.ts.map +1 -0
  90. package/dist/ai/tools/index.js +214 -0
  91. package/dist/ai/tools/index.js.map +1 -0
  92. package/dist/ai/types.d.ts +507 -0
  93. package/dist/ai/types.d.ts.map +1 -0
  94. package/dist/ai/types.js +2 -0
  95. package/dist/ai/types.js.map +1 -0
  96. package/dist/ai/utils/injectAiConfig.d.ts +67 -0
  97. package/dist/ai/utils/injectAiConfig.d.ts.map +1 -0
  98. package/dist/ai/utils/injectAiConfig.js +216 -0
  99. package/dist/ai/utils/injectAiConfig.js.map +1 -0
  100. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  101. package/dist/api/createPuckApiRoutesWithId.js +12 -5
  102. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  103. package/dist/api/types.d.ts +1 -1
  104. package/dist/api/types.d.ts.map +1 -1
  105. package/dist/components/exports.d.ts +1 -1
  106. package/dist/components/exports.d.ts.map +1 -1
  107. package/dist/components/exports.js +1 -1
  108. package/dist/components/exports.js.map +1 -1
  109. package/dist/components/interactive/Accordion.d.ts +1 -1
  110. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  111. package/dist/components/interactive/Accordion.js +4 -4
  112. package/dist/components/interactive/Accordion.js.map +1 -1
  113. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  114. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  115. package/dist/components/interactive/Button.d.ts +1 -1
  116. package/dist/components/interactive/Button.d.ts.map +1 -1
  117. package/dist/components/interactive/Button.server.d.ts +2 -3
  118. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  119. package/dist/components/interactive/Button.server.js +1 -2
  120. package/dist/components/interactive/Button.server.js.map +1 -1
  121. package/dist/components/interactive/Card.d.ts +1 -1
  122. package/dist/components/interactive/Card.d.ts.map +1 -1
  123. package/dist/components/interactive/Card.server.d.ts +1 -1
  124. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  125. package/dist/components/interactive/Divider.d.ts +1 -1
  126. package/dist/components/interactive/Divider.d.ts.map +1 -1
  127. package/dist/components/interactive/Divider.server.d.ts +1 -1
  128. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  129. package/dist/components/layout/Container.d.ts +3 -1
  130. package/dist/components/layout/Container.d.ts.map +1 -1
  131. package/dist/components/layout/Container.js +16 -2
  132. package/dist/components/layout/Container.js.map +1 -1
  133. package/dist/components/layout/Container.server.d.ts +3 -1
  134. package/dist/components/layout/Container.server.d.ts.map +1 -1
  135. package/dist/components/layout/Container.server.js +5 -2
  136. package/dist/components/layout/Container.server.js.map +1 -1
  137. package/dist/components/layout/Flex.d.ts +3 -1
  138. package/dist/components/layout/Flex.d.ts.map +1 -1
  139. package/dist/components/layout/Flex.js +18 -2
  140. package/dist/components/layout/Flex.js.map +1 -1
  141. package/dist/components/layout/Flex.server.d.ts +3 -1
  142. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  143. package/dist/components/layout/Flex.server.js +5 -2
  144. package/dist/components/layout/Flex.server.js.map +1 -1
  145. package/dist/components/layout/Grid.d.ts +3 -1
  146. package/dist/components/layout/Grid.d.ts.map +1 -1
  147. package/dist/components/layout/Grid.js +15 -2
  148. package/dist/components/layout/Grid.js.map +1 -1
  149. package/dist/components/layout/Grid.server.d.ts +3 -1
  150. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  151. package/dist/components/layout/Grid.server.js +5 -2
  152. package/dist/components/layout/Grid.server.js.map +1 -1
  153. package/dist/components/layout/Section.d.ts +3 -1
  154. package/dist/components/layout/Section.d.ts.map +1 -1
  155. package/dist/components/layout/Section.js +32 -5
  156. package/dist/components/layout/Section.js.map +1 -1
  157. package/dist/components/layout/Section.server.d.ts +3 -1
  158. package/dist/components/layout/Section.server.d.ts.map +1 -1
  159. package/dist/components/layout/Section.server.js +16 -4
  160. package/dist/components/layout/Section.server.js.map +1 -1
  161. package/dist/components/layout/Spacer.d.ts +1 -1
  162. package/dist/components/layout/Spacer.d.ts.map +1 -1
  163. package/dist/components/layout/Spacer.server.d.ts +1 -1
  164. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  165. package/dist/components/layout/Template.d.ts +1 -1
  166. package/dist/components/layout/Template.d.ts.map +1 -1
  167. package/dist/components/layout/Template.server.d.ts +1 -1
  168. package/dist/components/layout/Template.server.d.ts.map +1 -1
  169. package/dist/components/media/Image.d.ts +1 -1
  170. package/dist/components/media/Image.d.ts.map +1 -1
  171. package/dist/components/media/Image.server.d.ts +1 -1
  172. package/dist/components/media/Image.server.d.ts.map +1 -1
  173. package/dist/components/typography/Heading.d.ts +1 -1
  174. package/dist/components/typography/Heading.d.ts.map +1 -1
  175. package/dist/components/typography/Heading.server.d.ts +1 -1
  176. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  177. package/dist/components/typography/RichText.editor.d.ts +15 -2
  178. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  179. package/dist/components/typography/RichText.editor.js +18 -11
  180. package/dist/components/typography/RichText.editor.js.map +1 -1
  181. package/dist/components/typography/RichText.server.d.ts +3 -2
  182. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  183. package/dist/components/typography/RichText.server.js +10 -5
  184. package/dist/components/typography/RichText.server.js.map +1 -1
  185. package/dist/components/typography/Text.d.ts +1 -1
  186. package/dist/components/typography/Text.d.ts.map +1 -1
  187. package/dist/components/typography/Text.server.d.ts +1 -1
  188. package/dist/components/typography/Text.server.d.ts.map +1 -1
  189. package/dist/components/typography/index.d.ts +1 -1
  190. package/dist/components/typography/index.d.ts.map +1 -1
  191. package/dist/components/typography/index.js +1 -1
  192. package/dist/components/typography/index.js.map +1 -1
  193. package/dist/config/config.editor.d.ts +4 -4
  194. package/dist/config/config.editor.d.ts.map +1 -1
  195. package/dist/config/index.d.ts +1 -1
  196. package/dist/config/index.d.ts.map +1 -1
  197. package/dist/config/merge.d.ts +1 -1
  198. package/dist/config/merge.d.ts.map +1 -1
  199. package/dist/config/presets.d.ts +15 -15
  200. package/dist/config/presets.d.ts.map +1 -1
  201. package/dist/editor/PuckEditor.d.ts +88 -2
  202. package/dist/editor/PuckEditor.d.ts.map +1 -1
  203. package/dist/editor/PuckEditor.js +41 -13
  204. package/dist/editor/PuckEditor.js.map +1 -1
  205. package/dist/editor/PuckEditorImpl.client.d.ts +49 -4
  206. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -1
  207. package/dist/editor/PuckEditorImpl.client.js +191 -14
  208. package/dist/editor/PuckEditorImpl.client.js.map +1 -1
  209. package/dist/editor/ai-plugin-overrides.css +20 -0
  210. package/dist/editor/components/HeaderActions.d.ts +7 -2
  211. package/dist/editor/components/HeaderActions.d.ts.map +1 -1
  212. package/dist/editor/components/HeaderActions.js +16 -3
  213. package/dist/editor/components/HeaderActions.js.map +1 -1
  214. package/dist/editor/components/IframeWrapper.d.ts +13 -0
  215. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  216. package/dist/editor/components/IframeWrapper.js +60 -4
  217. package/dist/editor/components/IframeWrapper.js.map +1 -1
  218. package/dist/editor/components/PreviewModal.d.ts +9 -1
  219. package/dist/editor/components/PreviewModal.d.ts.map +1 -1
  220. package/dist/editor/components/PreviewModal.js +36 -1
  221. package/dist/editor/components/PreviewModal.js.map +1 -1
  222. package/dist/editor/index.d.ts +4 -0
  223. package/dist/editor/index.d.ts.map +1 -1
  224. package/dist/editor/index.js +4 -0
  225. package/dist/editor/index.js.map +1 -1
  226. package/dist/editor/plugins/VersionHistoryPanel.d.ts +43 -0
  227. package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +1 -0
  228. package/dist/editor/plugins/VersionHistoryPanel.js +303 -0
  229. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -0
  230. package/dist/editor/plugins/index.d.ts +6 -3
  231. package/dist/editor/plugins/index.d.ts.map +1 -1
  232. package/dist/editor/plugins/index.js +7 -3
  233. package/dist/editor/plugins/index.js.map +1 -1
  234. package/dist/editor/plugins/versionHistoryPlugin.d.ts +37 -0
  235. package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +1 -0
  236. package/dist/editor/plugins/versionHistoryPlugin.js +36 -0
  237. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -0
  238. package/dist/editor/utils/detectPageTree.d.ts +1 -1
  239. package/dist/editor/utils/detectPageTree.d.ts.map +1 -1
  240. package/dist/editor/utils/injectPageTreeFields.d.ts +1 -1
  241. package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -1
  242. package/dist/endpoints/ai.d.ts +36 -0
  243. package/dist/endpoints/ai.d.ts.map +1 -0
  244. package/dist/endpoints/ai.js +315 -0
  245. package/dist/endpoints/ai.js.map +1 -0
  246. package/dist/endpoints/context.d.ts +30 -0
  247. package/dist/endpoints/context.d.ts.map +1 -0
  248. package/dist/endpoints/context.js +123 -0
  249. package/dist/endpoints/context.js.map +1 -0
  250. package/dist/endpoints/prompts.d.ts +28 -0
  251. package/dist/endpoints/prompts.d.ts.map +1 -0
  252. package/dist/endpoints/prompts.js +118 -0
  253. package/dist/endpoints/prompts.js.map +1 -0
  254. package/dist/endpoints/styles.d.ts +19 -0
  255. package/dist/endpoints/styles.d.ts.map +1 -0
  256. package/dist/endpoints/styles.js +116 -0
  257. package/dist/endpoints/styles.js.map +1 -0
  258. package/dist/fields/AlignmentField.d.ts +1 -1
  259. package/dist/fields/AlignmentField.d.ts.map +1 -1
  260. package/dist/fields/AlignmentField.js +1 -0
  261. package/dist/fields/AlignmentField.js.map +1 -1
  262. package/dist/fields/AnimationField.d.ts +1 -1
  263. package/dist/fields/AnimationField.d.ts.map +1 -1
  264. package/dist/fields/BackgroundField.d.ts +1 -1
  265. package/dist/fields/BackgroundField.d.ts.map +1 -1
  266. package/dist/fields/BackgroundField.js +9 -4
  267. package/dist/fields/BackgroundField.js.map +1 -1
  268. package/dist/fields/BorderField.d.ts +1 -1
  269. package/dist/fields/BorderField.d.ts.map +1 -1
  270. package/dist/fields/BorderField.js +1 -0
  271. package/dist/fields/BorderField.js.map +1 -1
  272. package/dist/fields/ColorPickerField.d.ts +1 -1
  273. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  274. package/dist/fields/ColorPickerField.js +4 -2
  275. package/dist/fields/ColorPickerField.js.map +1 -1
  276. package/dist/fields/ContentAlignmentField.d.ts +66 -0
  277. package/dist/fields/ContentAlignmentField.d.ts.map +1 -0
  278. package/dist/fields/ContentAlignmentField.js +255 -0
  279. package/dist/fields/ContentAlignmentField.js.map +1 -0
  280. package/dist/fields/DimensionsField.d.ts +1 -1
  281. package/dist/fields/DimensionsField.d.ts.map +1 -1
  282. package/dist/fields/DimensionsField.js +8 -2
  283. package/dist/fields/DimensionsField.js.map +1 -1
  284. package/dist/fields/FlexAlignmentField.d.ts +1 -1
  285. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  286. package/dist/fields/FolderPickerField.d.ts +1 -1
  287. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  288. package/dist/fields/GradientEditor.d.ts.map +1 -1
  289. package/dist/fields/GradientEditor.js +3 -0
  290. package/dist/fields/GradientEditor.js.map +1 -1
  291. package/dist/fields/LockedField.d.ts +1 -1
  292. package/dist/fields/LockedField.d.ts.map +1 -1
  293. package/dist/fields/MarginField.d.ts +1 -1
  294. package/dist/fields/MarginField.d.ts.map +1 -1
  295. package/dist/fields/MediaField.d.ts +1 -1
  296. package/dist/fields/MediaField.d.ts.map +1 -1
  297. package/dist/fields/MediaField.js +3 -2
  298. package/dist/fields/MediaField.js.map +1 -1
  299. package/dist/fields/PaddingField.d.ts +1 -1
  300. package/dist/fields/PaddingField.d.ts.map +1 -1
  301. package/dist/fields/PageSegmentField.d.ts +1 -1
  302. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  303. package/dist/fields/ResetField.d.ts +1 -1
  304. package/dist/fields/ResetField.d.ts.map +1 -1
  305. package/dist/fields/ResetField.js +1 -1
  306. package/dist/fields/ResetField.js.map +1 -1
  307. package/dist/fields/ResponsiveField.d.ts +1 -1
  308. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  309. package/dist/fields/ResponsiveField.js +5 -2
  310. package/dist/fields/ResponsiveField.js.map +1 -1
  311. package/dist/fields/ResponsiveVisibilityField.d.ts +1 -1
  312. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  313. package/dist/fields/ResponsiveVisibilityField.js +4 -3
  314. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  315. package/dist/fields/SizeField.d.ts +3 -25
  316. package/dist/fields/SizeField.d.ts.map +1 -1
  317. package/dist/fields/SizeField.js +8 -34
  318. package/dist/fields/SizeField.js.map +1 -1
  319. package/dist/fields/SlugPreviewField.d.ts +1 -1
  320. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  321. package/dist/fields/TemplateField.d.ts +1 -1
  322. package/dist/fields/TemplateField.d.ts.map +1 -1
  323. package/dist/fields/TemplateField.js +1 -1
  324. package/dist/fields/TemplateField.js.map +1 -1
  325. package/dist/fields/TransformField.d.ts +1 -1
  326. package/dist/fields/TransformField.d.ts.map +1 -1
  327. package/dist/fields/TransformField.js +2 -0
  328. package/dist/fields/TransformField.js.map +1 -1
  329. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  330. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  331. package/dist/fields/WidthField.d.ts +1 -1
  332. package/dist/fields/WidthField.d.ts.map +1 -1
  333. package/dist/fields/index.d.ts +8 -36
  334. package/dist/fields/index.d.ts.map +1 -1
  335. package/dist/fields/index.js +20 -78
  336. package/dist/fields/index.js.map +1 -1
  337. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +16 -0
  338. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -0
  339. package/dist/fields/richtext/controls/ColorPickerControl.js +116 -0
  340. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -0
  341. package/dist/fields/richtext/controls/DropdownPortal.d.ts +17 -0
  342. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -0
  343. package/dist/fields/richtext/controls/DropdownPortal.js +90 -0
  344. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -0
  345. package/dist/fields/richtext/controls/FontSizeControl.d.ts +8 -0
  346. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -0
  347. package/dist/fields/richtext/controls/FontSizeControl.js +62 -0
  348. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -0
  349. package/dist/fields/richtext/controls/HighlightControl.d.ts +9 -0
  350. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -0
  351. package/dist/fields/richtext/controls/HighlightControl.js +44 -0
  352. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -0
  353. package/dist/fields/richtext/controls/index.d.ts +11 -0
  354. package/dist/fields/richtext/controls/index.d.ts.map +1 -0
  355. package/dist/fields/richtext/controls/index.js +16 -0
  356. package/dist/fields/richtext/controls/index.js.map +1 -0
  357. package/dist/fields/richtext/controls/shared.d.ts +97 -0
  358. package/dist/fields/richtext/controls/shared.d.ts.map +1 -0
  359. package/dist/fields/richtext/controls/shared.js +344 -0
  360. package/dist/fields/richtext/controls/shared.js.map +1 -0
  361. package/dist/fields/richtext/createRichTextField.d.ts +165 -0
  362. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -0
  363. package/dist/fields/richtext/createRichTextField.js +139 -0
  364. package/dist/fields/richtext/createRichTextField.js.map +1 -0
  365. package/dist/fields/richtext/extensions/FontSize.d.ts +23 -0
  366. package/dist/fields/richtext/extensions/FontSize.d.ts.map +1 -0
  367. package/dist/fields/richtext/extensions/FontSize.js +47 -0
  368. package/dist/fields/richtext/extensions/FontSize.js.map +1 -0
  369. package/dist/fields/richtext/extensions/index.d.ts +5 -0
  370. package/dist/fields/richtext/extensions/index.d.ts.map +1 -0
  371. package/dist/fields/richtext/extensions/index.js +5 -0
  372. package/dist/fields/richtext/extensions/index.js.map +1 -0
  373. package/dist/fields/richtext/index.d.ts +14 -0
  374. package/dist/fields/richtext/index.d.ts.map +1 -0
  375. package/dist/fields/richtext/index.js +19 -0
  376. package/dist/fields/richtext/index.js.map +1 -0
  377. package/dist/fields/richtext/richtext-menu.css +50 -0
  378. package/dist/fields/shared.d.ts +27 -1
  379. package/dist/fields/shared.d.ts.map +1 -1
  380. package/dist/fields/shared.js +34 -0
  381. package/dist/fields/shared.js.map +1 -1
  382. package/dist/layouts/types.d.ts +30 -0
  383. package/dist/layouts/types.d.ts.map +1 -1
  384. package/dist/plugin/index.d.ts +1 -0
  385. package/dist/plugin/index.d.ts.map +1 -1
  386. package/dist/plugin/index.js +111 -1
  387. package/dist/plugin/index.js.map +1 -1
  388. package/dist/render/HybridPageRenderer.d.ts +1 -1
  389. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  390. package/dist/render/PageRenderer.d.ts +1 -1
  391. package/dist/render/PageRenderer.d.ts.map +1 -1
  392. package/dist/render/PageRenderer.js +1 -1
  393. package/dist/render/PageRenderer.js.map +1 -1
  394. package/dist/render/PuckEditor.client.d.ts +2 -2
  395. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  396. package/dist/render/PuckEditor.client.js +2 -2
  397. package/dist/render/PuckEditor.client.js.map +1 -1
  398. package/dist/types/index.d.ts +36 -11
  399. package/dist/types/index.d.ts.map +1 -1
  400. package/dist/version.d.ts +1 -1
  401. package/dist/version.js +1 -1
  402. package/dist/views/PuckConfigContext.d.ts +56 -2
  403. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  404. package/dist/views/PuckConfigContext.js +6 -3
  405. package/dist/views/PuckConfigContext.js.map +1 -1
  406. package/dist/views/PuckEditorView.d.ts.map +1 -1
  407. package/dist/views/PuckEditorView.js +23 -1
  408. package/dist/views/PuckEditorView.js.map +1 -1
  409. package/package.json +34 -10
  410. package/dist/components/typography/RichText.d.ts +0 -20
  411. package/dist/components/typography/RichText.d.ts.map +0 -1
  412. package/dist/components/typography/RichText.js +0 -73
  413. package/dist/components/typography/RichText.js.map +0 -1
  414. package/dist/fields/TiptapField.d.ts +0 -40
  415. package/dist/fields/TiptapField.d.ts.map +0 -1
  416. package/dist/fields/TiptapField.js +0 -857
  417. package/dist/fields/TiptapField.js.map +0 -1
  418. package/dist/fields/TiptapModal.d.ts +0 -10
  419. package/dist/fields/TiptapModal.d.ts.map +0 -1
  420. package/dist/fields/TiptapModal.js +0 -114
  421. package/dist/fields/TiptapModal.js.map +0 -1
  422. package/dist/fields/TiptapModalField.d.ts +0 -23
  423. package/dist/fields/TiptapModalField.d.ts.map +0 -1
  424. package/dist/fields/TiptapModalField.js +0 -55
  425. package/dist/fields/TiptapModalField.js.map +0 -1
  426. package/dist/fields/richtext-output.css +0 -219
  427. package/dist/fields/tiptap-styles.css +0 -248
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/fields/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,2BAA2B;AAC3B,cAAc,UAAU,CAAA;AAExB,0BAA0B;AAC1B,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAG3D,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAE1F,gFAAgF;AAChF,iBAAiB;AACjB,oFAAoF;AACpF,gFAAgF;AAChF,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB;AAEpB,wCAAwC;AACxC,QAAQ;AACR,oCAAoC;AACpC,kBAAkB,EAClB,gBAAgB,EAChB,eAAe,EACf,gBAAgB;AAChB,YAAY;AACZ,YAAY,EACZ,SAAS,EACT,UAAU,EACV,UAAU,EACV,eAAe,EACf,aAAa,GAEd,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAA;AAEjE,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAG9D,OAAO,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,eAAe,CAAA;AAE9D,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAA;AAE3D,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAC1E,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EACpB,kBAAkB,EAClB,iBAAiB,GAClB,MAAM,UAAU,CAAA;AASjB,OAAO,EACL,eAAe,EACf,gBAAgB,EAChB,qBAAqB,EACrB,sBAAsB,EACtB,eAAe,EACf,mBAAmB,GACpB,MAAM,eAAe,CAAA;AAEtB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAGvE,OAAO,EACL,mBAAmB,EACnB,eAAe,EACf,yBAAyB,EACzB,qBAAqB,GACtB,MAAM,sBAAsB,CAAA;AAG7B,OAAO,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,MAAM,0BAA0B,CAAA;AAG/F,OAAO,EACL,qBAAqB,EACrB,2BAA2B,EAC3B,kBAAkB,EAClB,kBAAkB,EAClB,uBAAuB,EACvB,mBAAmB,GACpB,MAAM,yBAAyB,CAAA;AAQhC,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,aAAa,CAAA;AAGxF,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAA;AAEjD,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAS1E,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAA;AAE9F,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAA;AAE1E,OAAO,EACL,WAAW,EACX,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,UAAU,CAAA;AAEjB,OAAO,EACL,yBAAyB,EACzB,+BAA+B,GAChC,MAAM,6BAA6B,CAAA;AAEpC,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAWvE,OAAO,EACL,mBAAmB,EACnB,0BAA0B,EAC1B,wBAAwB,EACxB,4BAA4B,EAC5B,4BAA4B,EAC5B,eAAe,EACf,qBAAqB,EACrB,cAAc,EACd,oBAAoB,EACpB,iBAAiB,GAClB,MAAM,UAAU,CAAA;AAEjB,OAAO,EAAE,cAAc,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAA;AAEvE,OAAO,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAEjE,gFAAgF;AAChF,oCAAoC;AACpC,gFAAgF;AAEhF;;;GAGG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,EAAE,CAAA;AAErC;;;GAGG;AACH,MAAM,UAAU,oBAAoB;IAClC,OAAO,CAAC,IAAI,CACV,+EAA+E;QAC7E,oEAAoE,CACvE,CAAA;AACH,CAAC;AAED,gFAAgF;AAChF,+BAA+B;AAC/B,gFAAgF;AAEhF,OAAO,EAAE,iBAAiB,EAAE,uBAAuB,EAAE,MAAM,qBAAqB,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA;AAC7E,OAAO,EAAE,gBAAgB,EAAE,sBAAsB,EAAE,MAAM,oBAAoB,CAAA"}
@@ -0,0 +1,16 @@
1
+ import type { Editor } from '@tiptap/react';
2
+ interface ColorPickerControlProps {
3
+ editor: Editor;
4
+ currentColor: string | undefined;
5
+ }
6
+ export declare function ColorPickerControl({ editor, currentColor }: ColorPickerControlProps): import("react/jsx-runtime").JSX.Element;
7
+ interface ColorPickerPanelProps {
8
+ currentColor: string | undefined;
9
+ onColorChange: (color: string | null) => void;
10
+ onClose: () => void;
11
+ mode: 'text' | 'highlight';
12
+ showOpacity?: boolean;
13
+ }
14
+ export declare function ColorPickerPanel({ currentColor, onColorChange, onClose, mode, showOpacity, }: ColorPickerPanelProps): import("react/jsx-runtime").JSX.Element;
15
+ export {};
16
+ //# sourceMappingURL=ColorPickerControl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPickerControl.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/ColorPickerControl.tsx"],"names":[],"mappings":"AAkBA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAE3C,UAAU,uBAAuB;IAC/B,MAAM,EAAE,MAAM,CAAA;IACd,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;CACjC;AAED,wBAAgB,kBAAkB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,uBAAuB,2CA4DnF;AAMD,UAAU,qBAAqB;IAC7B,YAAY,EAAE,MAAM,GAAG,SAAS,CAAA;IAChC,aAAa,EAAE,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,KAAK,IAAI,CAAA;IAC7C,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAA;IAC1B,WAAW,CAAC,EAAE,OAAO,CAAA;CACtB;AAED,wBAAgB,gBAAgB,CAAC,EAC/B,YAAY,EACZ,aAAa,EACb,OAAO,EACP,IAAI,EACJ,WAAkB,GACnB,EAAE,qBAAqB,2CAqLvB"}
@@ -0,0 +1,116 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * ColorPickerControl - Text color control for Puck RichText toolbar
5
+ *
6
+ * A dropdown color picker with:
7
+ * - Native color input
8
+ * - Hex input with validation
9
+ * - Opacity slider (RGBA support)
10
+ * - Theme color presets
11
+ * - "Theme Color (Auto)" option for dark/light mode adaptation
12
+ */
13
+ import { useState, useRef, useCallback } from 'react';
14
+ import { Palette, ChevronDown } from 'lucide-react';
15
+ import { useTheme } from '../../../theme';
16
+ import { parseColor, normalizeHex, hexToRgba, controlStyles } from './shared';
17
+ import { DropdownPortal } from './DropdownPortal';
18
+ export function ColorPickerControl({ editor, currentColor }) {
19
+ const [isOpen, setIsOpen] = useState(false);
20
+ const triggerRef = useRef(null);
21
+ const handleColorChange = useCallback((color) => {
22
+ if (color) {
23
+ editor.chain().focus().setColor(color).run();
24
+ }
25
+ else {
26
+ editor.chain().focus().unsetColor().run();
27
+ }
28
+ }, [editor]);
29
+ const close = useCallback(() => setIsOpen(false), []);
30
+ const hasColor = Boolean(currentColor);
31
+ return (_jsxs("div", { style: { position: 'relative' }, children: [_jsxs("button", { ref: triggerRef, type: "button", onClick: () => setIsOpen(!isOpen), title: "Text Color", style: {
32
+ ...controlStyles.dropdownTrigger,
33
+ ...(hasColor ? controlStyles.dropdownTriggerActive : {}),
34
+ }, children: [_jsx(Palette, { style: controlStyles.icon }), _jsx(ChevronDown, { style: { width: '12px', height: '12px' } }), currentColor && (_jsx("span", { style: {
35
+ position: 'absolute',
36
+ bottom: '2px',
37
+ left: '50%',
38
+ transform: 'translateX(-50%)',
39
+ width: '12px',
40
+ height: '3px',
41
+ borderRadius: '1px',
42
+ backgroundColor: currentColor,
43
+ } }))] }), _jsx(DropdownPortal, { isOpen: isOpen, onClose: close, triggerRef: triggerRef, minWidth: 260, children: _jsx(ColorPickerPanel, { currentColor: currentColor, onColorChange: handleColorChange, onClose: close, mode: "text" }) })] }));
44
+ }
45
+ export function ColorPickerPanel({ currentColor, onColorChange, onClose, mode, showOpacity = true, }) {
46
+ const theme = useTheme();
47
+ const presets = theme.colorPresets;
48
+ const parsed = parseColor(currentColor);
49
+ const [hex, setHex] = useState(parsed.hex);
50
+ const [hexInput, setHexInput] = useState(parsed.hex);
51
+ const [opacity, setOpacity] = useState(parsed.opacity);
52
+ const [hoverTheme, setHoverTheme] = useState(false);
53
+ // Apply color (converts to rgba if opacity < 100)
54
+ const applyColor = useCallback((h, o) => {
55
+ if (o < 100) {
56
+ onColorChange(hexToRgba(h, o));
57
+ }
58
+ else {
59
+ onColorChange(h);
60
+ }
61
+ }, [onColorChange]);
62
+ const handleColorInputChange = useCallback((e) => {
63
+ const newHex = e.target.value;
64
+ setHex(newHex);
65
+ setHexInput(newHex);
66
+ applyColor(newHex, opacity);
67
+ }, [opacity, applyColor]);
68
+ const handleHexInputChange = useCallback((e) => {
69
+ const input = e.target.value;
70
+ setHexInput(input);
71
+ const normalized = normalizeHex(input);
72
+ if (normalized) {
73
+ setHex(normalized);
74
+ applyColor(normalized, opacity);
75
+ }
76
+ }, [opacity, applyColor]);
77
+ const handleHexInputBlur = useCallback(() => {
78
+ setHexInput(hex);
79
+ }, [hex]);
80
+ const handleOpacityChange = useCallback((e) => {
81
+ const newOpacity = parseInt(e.target.value, 10);
82
+ setOpacity(newOpacity);
83
+ applyColor(hex, newOpacity);
84
+ }, [hex, applyColor]);
85
+ const handlePresetClick = useCallback((preset) => {
86
+ setHex(preset.hex);
87
+ setHexInput(preset.hex);
88
+ setOpacity(100);
89
+ applyColor(preset.hex, 100);
90
+ onClose();
91
+ }, [applyColor, onClose]);
92
+ const handleClearColor = useCallback(() => {
93
+ onColorChange(null);
94
+ onClose();
95
+ }, [onColorChange, onClose]);
96
+ const previewColor = hexToRgba(hex, opacity);
97
+ return (_jsxs("div", { style: controlStyles.colorPickerContainer, children: [_jsxs("button", { type: "button", onClick: handleClearColor, onMouseEnter: () => setHoverTheme(true), onMouseLeave: () => setHoverTheme(false), style: {
98
+ ...controlStyles.colorPickerThemeButton,
99
+ ...(hoverTheme ? { backgroundColor: 'var(--puck-color-grey-01)' } : {}),
100
+ }, children: [_jsx("span", { style: controlStyles.colorPickerThemeSwatch }), mode === 'text' ? 'Theme Color (Auto)' : 'Remove Highlight'] }), _jsxs("div", { style: controlStyles.colorPickerRow, children: [_jsx("input", { type: "color", value: hex, onChange: handleColorInputChange, style: controlStyles.colorPickerInput, title: "Pick a color" }), _jsx("input", { type: "text", value: hexInput, onChange: handleHexInputChange, onBlur: handleHexInputBlur, placeholder: "#000000", style: controlStyles.colorPickerHexInput }), _jsxs("div", { style: controlStyles.colorPickerPreview, title: `${hex} at ${opacity}% opacity`, children: [_jsx("div", { style: controlStyles.colorPickerCheckerboard }), _jsx("div", { style: { ...controlStyles.colorPickerOverlay, backgroundColor: previewColor } })] })] }), showOpacity && (_jsxs("div", { style: controlStyles.colorPickerOpacitySection, children: [_jsxs("div", { style: controlStyles.colorPickerOpacityHeader, children: [_jsx("label", { style: controlStyles.colorPickerOpacityLabel, children: "Opacity" }), _jsxs("span", { style: controlStyles.colorPickerOpacityValue, children: [opacity, "%"] })] }), _jsxs("div", { style: controlStyles.colorPickerOpacitySlider, children: [_jsx("div", { style: controlStyles.colorPickerCheckerboard }), _jsx("div", { style: {
101
+ ...controlStyles.colorPickerOverlay,
102
+ background: `linear-gradient(to right, transparent 0%, ${hex} 100%)`,
103
+ } }), _jsx("input", { type: "range", min: "0", max: "100", value: opacity, onChange: handleOpacityChange, style: controlStyles.colorPickerOpacityInputRange }), _jsx("div", { style: {
104
+ ...controlStyles.colorPickerOpacityThumb,
105
+ left: `calc(${opacity}% - 2px)`,
106
+ } })] })] })), presets.length > 0 && (_jsxs("div", { children: [_jsx("div", { style: controlStyles.colorPickerPresetsLabel, children: "Presets" }), _jsx("div", { style: controlStyles.colorPickerPresetsGrid, children: presets.map((preset) => {
107
+ const isSelected = hex.toLowerCase() === preset.hex.toLowerCase();
108
+ return (_jsx("button", { type: "button", onClick: () => handlePresetClick(preset), style: {
109
+ ...(isSelected
110
+ ? controlStyles.colorPickerPresetButtonSelected
111
+ : controlStyles.colorPickerPresetButton),
112
+ backgroundColor: preset.hex,
113
+ }, title: preset.label }, preset.hex));
114
+ }) })] }))] }));
115
+ }
116
+ //# sourceMappingURL=ColorPickerControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ColorPickerControl.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/ColorPickerControl.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ /**
2
+ * DropdownPortal - Renders dropdown content in a portal to escape overflow clipping
3
+ *
4
+ * Uses React Portal to render outside the DOM hierarchy, similar to how
5
+ * Puck's native dropdowns use @radix-ui/react-popover with PopoverPortal.
6
+ */
7
+ import React, { type ReactNode } from 'react';
8
+ interface DropdownPortalProps {
9
+ isOpen: boolean;
10
+ onClose: () => void;
11
+ triggerRef: React.RefObject<HTMLElement | null>;
12
+ children: ReactNode;
13
+ minWidth?: number;
14
+ }
15
+ export declare function DropdownPortal({ isOpen, onClose, triggerRef, children, minWidth }: DropdownPortalProps): React.ReactPortal | null;
16
+ export {};
17
+ //# sourceMappingURL=DropdownPortal.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownPortal.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"AAEA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,EAA+B,KAAK,SAAS,EAAsB,MAAM,OAAO,CAAA;AAI9F,UAAU,mBAAmB;IAC3B,MAAM,EAAE,OAAO,CAAA;IACf,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,UAAU,EAAE,KAAK,CAAC,SAAS,CAAC,WAAW,GAAG,IAAI,CAAC,CAAA;IAC/C,QAAQ,EAAE,SAAS,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AAED,wBAAgB,cAAc,CAAC,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAc,EAAE,EAAE,mBAAmB,4BAmG5G"}
@@ -0,0 +1,90 @@
1
+ 'use client';
2
+ import { jsx as _jsx } from "react/jsx-runtime";
3
+ /**
4
+ * DropdownPortal - Renders dropdown content in a portal to escape overflow clipping
5
+ *
6
+ * Uses React Portal to render outside the DOM hierarchy, similar to how
7
+ * Puck's native dropdowns use @radix-ui/react-popover with PopoverPortal.
8
+ */
9
+ import { useRef, useEffect, useState } from 'react';
10
+ import ReactDOM from 'react-dom';
11
+ export function DropdownPortal({ isOpen, onClose, triggerRef, children, minWidth = 160 }) {
12
+ const dropdownRef = useRef(null);
13
+ const [position, setPosition] = useState(null);
14
+ // Calculate position based on trigger element
15
+ useEffect(() => {
16
+ if (isOpen && triggerRef.current) {
17
+ const rect = triggerRef.current.getBoundingClientRect();
18
+ const dropdownWidth = minWidth;
19
+ const viewportWidth = window.innerWidth;
20
+ // Position below the trigger
21
+ let left = rect.left;
22
+ const top = rect.bottom + 4;
23
+ // Check if it would overflow the right edge
24
+ if (left + dropdownWidth > viewportWidth - 16) {
25
+ // Align to right edge of trigger instead
26
+ left = rect.right - dropdownWidth;
27
+ }
28
+ // Ensure it doesn't go off the left edge
29
+ if (left < 16) {
30
+ left = 16;
31
+ }
32
+ setPosition({ top, left });
33
+ }
34
+ }, [isOpen, triggerRef, minWidth]);
35
+ // Close on click outside
36
+ useEffect(() => {
37
+ if (!isOpen)
38
+ return;
39
+ function handleClickOutside(event) {
40
+ const target = event.target;
41
+ // Don't close if clicking color input (native picker)
42
+ const activeElement = document.activeElement;
43
+ if (activeElement?.tagName === 'INPUT' && activeElement.type === 'color') {
44
+ return;
45
+ }
46
+ // Check if click is outside both dropdown and trigger
47
+ if (dropdownRef.current &&
48
+ !dropdownRef.current.contains(target) &&
49
+ triggerRef.current &&
50
+ !triggerRef.current.contains(target)) {
51
+ onClose();
52
+ }
53
+ }
54
+ // Use setTimeout to avoid closing immediately on the click that opened it
55
+ const timeoutId = setTimeout(() => {
56
+ document.addEventListener('mousedown', handleClickOutside);
57
+ }, 0);
58
+ return () => {
59
+ clearTimeout(timeoutId);
60
+ document.removeEventListener('mousedown', handleClickOutside);
61
+ };
62
+ }, [isOpen, onClose, triggerRef]);
63
+ // Close on escape key
64
+ useEffect(() => {
65
+ if (!isOpen)
66
+ return;
67
+ function handleEscape(event) {
68
+ if (event.key === 'Escape') {
69
+ onClose();
70
+ }
71
+ }
72
+ document.addEventListener('keydown', handleEscape);
73
+ return () => document.removeEventListener('keydown', handleEscape);
74
+ }, [isOpen, onClose]);
75
+ if (!isOpen || !position)
76
+ return null;
77
+ const style = {
78
+ position: 'fixed',
79
+ top: position.top,
80
+ left: position.left,
81
+ backgroundColor: 'var(--puck-color-white)',
82
+ border: '1px solid var(--puck-color-grey-09)',
83
+ borderRadius: '8px',
84
+ boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
85
+ zIndex: 99999,
86
+ minWidth,
87
+ };
88
+ return ReactDOM.createPortal(_jsx("div", { ref: dropdownRef, style: style, "data-puck-dropdown-portal": true, children: children }), document.body);
89
+ }
90
+ //# sourceMappingURL=DropdownPortal.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DropdownPortal.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/DropdownPortal.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ import type { Editor } from '@tiptap/react';
2
+ interface FontSizeControlProps {
3
+ editor: Editor;
4
+ currentSize: string | undefined;
5
+ }
6
+ export declare function FontSizeControl({ editor, currentSize }: FontSizeControlProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
8
+ //# sourceMappingURL=FontSizeControl.d.ts.map
@@ -0,0 +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,2CAgI5E"}
@@ -0,0 +1,62 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * FontSizeControl - Font size control for Puck RichText toolbar
5
+ *
6
+ * A dropdown with:
7
+ * - 9 preset sizes (XS to 4XL)
8
+ * - Custom size input with px/rem/em unit selection
9
+ */
10
+ import { useState, useRef, useCallback } from 'react';
11
+ import { ALargeSmall, ChevronDown } from 'lucide-react';
12
+ import { FONT_SIZES, FONT_SIZE_UNITS, controlStyles } from './shared';
13
+ import { DropdownPortal } from './DropdownPortal';
14
+ export function FontSizeControl({ editor, currentSize }) {
15
+ const [isOpen, setIsOpen] = useState(false);
16
+ const [customValue, setCustomValue] = useState('');
17
+ const [customUnit, setCustomUnit] = useState('px');
18
+ const triggerRef = useRef(null);
19
+ const handlePresetClick = useCallback((value) => {
20
+ if (value) {
21
+ editor.chain().focus().setFontSize(value).run();
22
+ }
23
+ else {
24
+ editor.chain().focus().unsetFontSize().run();
25
+ }
26
+ setIsOpen(false);
27
+ }, [editor]);
28
+ const handleCustomApply = useCallback(() => {
29
+ if (customValue) {
30
+ const size = `${customValue}${customUnit}`;
31
+ editor.chain().focus().setFontSize(size).run();
32
+ setIsOpen(false);
33
+ setCustomValue('');
34
+ }
35
+ }, [editor, customValue, customUnit]);
36
+ const handleCustomKeyDown = useCallback((e) => {
37
+ if (e.key === 'Enter') {
38
+ e.preventDefault();
39
+ handleCustomApply();
40
+ }
41
+ }, [handleCustomApply]);
42
+ const close = useCallback(() => setIsOpen(false), []);
43
+ // Find current preset label if any
44
+ const currentPreset = FONT_SIZES.find((s) => s.value === currentSize);
45
+ const hasCustomSize = currentSize && !currentPreset;
46
+ return (_jsxs("div", { style: { position: 'relative' }, children: [_jsxs("button", { ref: triggerRef, type: "button", onClick: () => setIsOpen(!isOpen), title: "Font Size", style: {
47
+ ...controlStyles.dropdownTrigger,
48
+ ...(currentSize ? controlStyles.dropdownTriggerActive : {}),
49
+ }, children: [_jsx(ALargeSmall, { style: controlStyles.icon }), _jsx(ChevronDown, { style: { width: '12px', height: '12px' } })] }), _jsxs(DropdownPortal, { isOpen: isOpen, onClose: close, triggerRef: triggerRef, minWidth: 200, children: [_jsx("div", { style: controlStyles.dropdownLabel, children: "Presets" }), _jsx("div", { style: controlStyles.fontSizeGrid, children: FONT_SIZES.map((size) => {
50
+ const isActive = size.value === currentSize || (!size.value && !currentSize);
51
+ return (_jsx("button", { type: "button", onClick: () => handlePresetClick(size.value), title: size.px, style: {
52
+ ...controlStyles.fontSizeButton,
53
+ ...(isActive ? controlStyles.fontSizeButtonActive : {}),
54
+ }, children: size.label }, size.label));
55
+ }) }), _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: {
56
+ padding: '8px 12px',
57
+ fontSize: '12px',
58
+ color: 'var(--puck-color-grey-05)',
59
+ borderTop: '1px solid var(--puck-color-grey-03)',
60
+ }, children: ["Current: ", currentSize] }))] })] }));
61
+ }
62
+ //# sourceMappingURL=FontSizeControl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FontSizeControl.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/FontSizeControl.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Editor } from '@tiptap/react';
2
+ interface HighlightControlProps {
3
+ editor: Editor;
4
+ currentColor: string | undefined;
5
+ isActive: boolean;
6
+ }
7
+ export declare function HighlightControl({ editor, currentColor, isActive }: HighlightControlProps): import("react/jsx-runtime").JSX.Element;
8
+ export {};
9
+ //# sourceMappingURL=HighlightControl.d.ts.map
@@ -0,0 +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,2CA0DzF"}
@@ -0,0 +1,44 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ /**
4
+ * HighlightControl - Text highlight control for Puck RichText toolbar
5
+ *
6
+ * A dropdown color picker for text highlighting with:
7
+ * - Native color input
8
+ * - Hex input with validation
9
+ * - Opacity slider (RGBA support)
10
+ * - Theme color presets
11
+ * - Remove highlight option
12
+ */
13
+ import { useState, useRef, useCallback } from 'react';
14
+ import { Highlighter, ChevronDown } from 'lucide-react';
15
+ import { controlStyles } from './shared';
16
+ import { ColorPickerPanel } from './ColorPickerControl';
17
+ import { DropdownPortal } from './DropdownPortal';
18
+ export function HighlightControl({ editor, currentColor, isActive }) {
19
+ const [isOpen, setIsOpen] = useState(false);
20
+ const triggerRef = useRef(null);
21
+ const handleColorChange = useCallback((color) => {
22
+ if (color) {
23
+ editor.chain().focus().setHighlight({ color }).run();
24
+ }
25
+ else {
26
+ editor.chain().focus().unsetHighlight().run();
27
+ }
28
+ }, [editor]);
29
+ const close = useCallback(() => setIsOpen(false), []);
30
+ return (_jsxs("div", { style: { position: 'relative' }, children: [_jsxs("button", { ref: triggerRef, type: "button", onClick: () => setIsOpen(!isOpen), title: "Highlight", style: {
31
+ ...controlStyles.dropdownTrigger,
32
+ ...(isActive ? controlStyles.dropdownTriggerActive : {}),
33
+ }, children: [_jsx(Highlighter, { style: controlStyles.icon }), _jsx(ChevronDown, { style: { width: '12px', height: '12px' } }), currentColor && (_jsx("span", { style: {
34
+ position: 'absolute',
35
+ bottom: '2px',
36
+ left: '50%',
37
+ transform: 'translateX(-50%)',
38
+ width: '12px',
39
+ height: '3px',
40
+ borderRadius: '1px',
41
+ backgroundColor: currentColor,
42
+ } }))] }), _jsx(DropdownPortal, { isOpen: isOpen, onClose: close, triggerRef: triggerRef, minWidth: 260, children: _jsx(ColorPickerPanel, { currentColor: currentColor, onColorChange: handleColorChange, onClose: close, mode: "highlight" }) })] }));
43
+ }
44
+ //# sourceMappingURL=HighlightControl.js.map
@@ -0,0 +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,MAAM,EAAE,WAAW,EAAE,MAAM,OAAO,CAAA;AAC5D,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,cAAc,EAAE,MAAM,kBAAkB,CAAA;AASjD,MAAM,UAAU,gBAAgB,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAyB;IACxF,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAA;IAC3C,MAAM,UAAU,GAAG,MAAM,CAAoB,IAAI,CAAC,CAAA;IAElD,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,OAAO,CACL,eAAK,KAAK,EAAE,EAAE,QAAQ,EAAE,UAAU,EAAE,aAClC,kBACE,GAAG,EAAE,UAAU,EACf,IAAI,EAAC,QAAQ,EACb,OAAO,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,EACjC,KAAK,EAAC,WAAW,EACjB,KAAK,EAAE;oBACL,GAAG,aAAa,CAAC,eAAe;oBAChC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,aAAa,CAAC,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;iBACzD,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;4BACL,QAAQ,EAAE,UAAU;4BACpB,MAAM,EAAE,KAAK;4BACb,IAAI,EAAE,KAAK;4BACX,SAAS,EAAE,kBAAkB;4BAC7B,KAAK,EAAE,MAAM;4BACb,MAAM,EAAE,KAAK;4BACb,YAAY,EAAE,KAAK;4BACnB,eAAe,EAAE,YAAY;yBAC9B,GACD,CACH,IACM,EAET,KAAC,cAAc,IAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,QAAQ,EAAE,GAAG,YACnF,KAAC,gBAAgB,IACf,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,iBAAiB,EAChC,OAAO,EAAE,KAAK,EACd,IAAI,EAAC,WAAW,GAChB,GACa,IACb,CACP,CAAA;AACH,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * RichText toolbar controls
3
+ *
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 { normalizeHex, hexToRgba, parseColor, FONT_SIZES, FONT_SIZE_UNITS, controlStyles, } from './shared';
10
+ export type { FontSizeUnit } from './shared';
11
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * RichText toolbar controls
3
+ *
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';
16
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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"}
@@ -0,0 +1,97 @@
1
+ /**
2
+ * Shared utilities for RichText controls
3
+ *
4
+ * Color manipulation, font size presets, and common types.
5
+ */
6
+ import type { CSSProperties } from 'react';
7
+ export declare const FONT_SIZES: readonly [{
8
+ readonly label: "XS";
9
+ readonly value: "0.75rem";
10
+ readonly px: "12px";
11
+ }, {
12
+ readonly label: "Small";
13
+ readonly value: "0.875rem";
14
+ readonly px: "14px";
15
+ }, {
16
+ readonly label: "Normal";
17
+ readonly value: null;
18
+ readonly px: "16px";
19
+ }, {
20
+ readonly label: "Medium";
21
+ readonly value: "1.125rem";
22
+ readonly px: "18px";
23
+ }, {
24
+ readonly label: "Large";
25
+ readonly value: "1.25rem";
26
+ readonly px: "20px";
27
+ }, {
28
+ readonly label: "XL";
29
+ readonly value: "1.5rem";
30
+ readonly px: "24px";
31
+ }, {
32
+ readonly label: "2XL";
33
+ readonly value: "1.875rem";
34
+ readonly px: "30px";
35
+ }, {
36
+ readonly label: "3XL";
37
+ readonly value: "2.25rem";
38
+ readonly px: "36px";
39
+ }, {
40
+ readonly label: "4XL";
41
+ readonly value: "3rem";
42
+ readonly px: "48px";
43
+ }];
44
+ export declare const FONT_SIZE_UNITS: readonly ["px", "rem", "em"];
45
+ export type FontSizeUnit = (typeof FONT_SIZE_UNITS)[number];
46
+ /**
47
+ * Validates and normalizes a hex color string
48
+ */
49
+ export declare function normalizeHex(hex: string): string;
50
+ /**
51
+ * Converts hex + opacity to rgba CSS string
52
+ */
53
+ export declare function hexToRgba(hex: string, opacity: number): string;
54
+ /**
55
+ * Parses a color string (hex or rgba) and returns hex + opacity
56
+ */
57
+ export declare function parseColor(color: string | undefined): {
58
+ hex: string;
59
+ opacity: number;
60
+ };
61
+ export declare const controlStyles: {
62
+ icon: CSSProperties;
63
+ dropdownTrigger: CSSProperties;
64
+ dropdownTriggerActive: CSSProperties;
65
+ dropdown: CSSProperties;
66
+ dropdownItem: CSSProperties;
67
+ dropdownLabel: CSSProperties;
68
+ dropdownSeparator: CSSProperties;
69
+ colorPickerContainer: CSSProperties;
70
+ colorPickerRow: CSSProperties;
71
+ colorPickerInput: CSSProperties;
72
+ colorPickerHexInput: CSSProperties;
73
+ colorPickerPreview: CSSProperties;
74
+ colorPickerCheckerboard: CSSProperties;
75
+ colorPickerOverlay: CSSProperties;
76
+ colorPickerOpacitySection: CSSProperties;
77
+ colorPickerOpacityHeader: CSSProperties;
78
+ colorPickerOpacityLabel: CSSProperties;
79
+ colorPickerOpacityValue: CSSProperties;
80
+ colorPickerOpacitySlider: CSSProperties;
81
+ colorPickerOpacityInputRange: CSSProperties;
82
+ colorPickerOpacityThumb: CSSProperties;
83
+ colorPickerPresetsLabel: CSSProperties;
84
+ colorPickerPresetsGrid: CSSProperties;
85
+ colorPickerPresetButton: CSSProperties;
86
+ colorPickerPresetButtonSelected: CSSProperties;
87
+ colorPickerThemeButton: CSSProperties;
88
+ colorPickerThemeSwatch: CSSProperties;
89
+ fontSizeGrid: CSSProperties;
90
+ fontSizeButton: CSSProperties;
91
+ fontSizeButtonActive: CSSProperties;
92
+ customSizeRow: CSSProperties;
93
+ customSizeInput: CSSProperties;
94
+ customSizeSelect: CSSProperties;
95
+ customSizeApply: CSSProperties;
96
+ };
97
+ //# sourceMappingURL=shared.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.d.ts","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/shared.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AAM1C,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUb,CAAA;AAEV,eAAO,MAAM,eAAe,8BAA+B,CAAA;AAE3D,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,eAAe,CAAC,CAAC,MAAM,CAAC,CAAA;AAM3D;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAYhD;AAED;;GAEG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,MAAM,CAM9D;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAqBtF;AAMD,eAAO,MAAM,aAAa;UAInB,aAAa;qBAcb,aAAa;2BAIb,aAAa;cAab,aAAa;kBAab,aAAa;mBASb,aAAa;uBAMb,aAAa;0BASb,aAAa;oBAMb,aAAa;sBAUb,aAAa;yBAab,aAAa;wBAUb,aAAa;6BAUb,aAAa;wBAKb,aAAa;+BAMb,aAAa;8BAMb,aAAa;6BAKb,aAAa;6BAMb,aAAa;8BAQb,aAAa;kCAUb,aAAa;6BAYb,aAAa;6BAMb,aAAa;4BAMb,aAAa;6BAWb,aAAa;qCAWb,aAAa;4BAeb,aAAa;4BASb,aAAa;kBAQb,aAAa;oBAWb,aAAa;0BAOb,aAAa;mBAQb,aAAa;qBASb,aAAa;sBASb,aAAa;qBAWb,aAAa;CACnB,CAAA"}