@delmaredigital/payload-puck 0.3.1 → 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 (467) hide show
  1. package/README.md +396 -19
  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 +2 -2
  5. package/dist/admin/EditWithPuckButton.js.map +1 -1
  6. package/dist/admin/EditWithPuckCell.js +1 -1
  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 +1 -1
  11. package/dist/admin/PuckEditorView.js.map +1 -1
  12. package/dist/admin/generateAdminComponents.d.ts +1 -1
  13. package/dist/admin/generateAdminComponents.js +1 -1
  14. package/dist/admin/generateAdminComponents.js.map +1 -1
  15. package/dist/ai/collections/AiContext.d.ts +16 -0
  16. package/dist/ai/collections/AiContext.d.ts.map +1 -0
  17. package/dist/ai/collections/AiContext.js +87 -0
  18. package/dist/ai/collections/AiContext.js.map +1 -0
  19. package/dist/ai/collections/AiPrompts.d.ts +10 -0
  20. package/dist/ai/collections/AiPrompts.d.ts.map +1 -0
  21. package/dist/ai/collections/AiPrompts.js +63 -0
  22. package/dist/ai/collections/AiPrompts.js.map +1 -0
  23. package/dist/ai/createAiApiRoutes.d.ts +40 -0
  24. package/dist/ai/createAiApiRoutes.d.ts.map +1 -0
  25. package/dist/ai/createAiApiRoutes.js +106 -0
  26. package/dist/ai/createAiApiRoutes.js.map +1 -0
  27. package/dist/ai/createAiGenerate.d.ts +65 -0
  28. package/dist/ai/createAiGenerate.d.ts.map +1 -0
  29. package/dist/ai/createAiGenerate.js +106 -0
  30. package/dist/ai/createAiGenerate.js.map +1 -0
  31. package/dist/ai/createAiPlugin.d.ts +39 -0
  32. package/dist/ai/createAiPlugin.d.ts.map +1 -0
  33. package/dist/ai/createAiPlugin.js +61 -0
  34. package/dist/ai/createAiPlugin.js.map +1 -0
  35. package/dist/ai/hooks/useAiContext.d.ts +63 -0
  36. package/dist/ai/hooks/useAiContext.d.ts.map +1 -0
  37. package/dist/ai/hooks/useAiContext.js +146 -0
  38. package/dist/ai/hooks/useAiContext.js.map +1 -0
  39. package/dist/ai/hooks/useAiPrompts.d.ts +25 -0
  40. package/dist/ai/hooks/useAiPrompts.d.ts.map +1 -0
  41. package/dist/ai/hooks/useAiPrompts.js +74 -0
  42. package/dist/ai/hooks/useAiPrompts.js.map +1 -0
  43. package/dist/ai/index.d.ts +51 -0
  44. package/dist/ai/index.d.ts.map +1 -0
  45. package/dist/ai/index.js +69 -0
  46. package/dist/ai/index.js.map +1 -0
  47. package/dist/ai/plugins/ContextEditorPanel.d.ts +9 -0
  48. package/dist/ai/plugins/ContextEditorPanel.d.ts.map +1 -0
  49. package/dist/ai/plugins/ContextEditorPanel.js +399 -0
  50. package/dist/ai/plugins/ContextEditorPanel.js.map +1 -0
  51. package/dist/ai/plugins/PromptEditorPanel.d.ts +9 -0
  52. package/dist/ai/plugins/PromptEditorPanel.d.ts.map +1 -0
  53. package/dist/ai/plugins/PromptEditorPanel.js +270 -0
  54. package/dist/ai/plugins/PromptEditorPanel.js.map +1 -0
  55. package/dist/ai/plugins/contextEditorPlugin.d.ts +30 -0
  56. package/dist/ai/plugins/contextEditorPlugin.d.ts.map +1 -0
  57. package/dist/ai/plugins/contextEditorPlugin.js +40 -0
  58. package/dist/ai/plugins/contextEditorPlugin.js.map +1 -0
  59. package/dist/ai/plugins/promptApiRoutes.d.ts +68 -0
  60. package/dist/ai/plugins/promptApiRoutes.d.ts.map +1 -0
  61. package/dist/ai/plugins/promptApiRoutes.js +181 -0
  62. package/dist/ai/plugins/promptApiRoutes.js.map +1 -0
  63. package/dist/ai/plugins/promptEditorPlugin.d.ts +29 -0
  64. package/dist/ai/plugins/promptEditorPlugin.d.ts.map +1 -0
  65. package/dist/ai/plugins/promptEditorPlugin.js +39 -0
  66. package/dist/ai/plugins/promptEditorPlugin.js.map +1 -0
  67. package/dist/ai/presets/componentAiDefaults.d.ts +40 -0
  68. package/dist/ai/presets/componentAiDefaults.d.ts.map +1 -0
  69. package/dist/ai/presets/componentAiDefaults.js +239 -0
  70. package/dist/ai/presets/componentAiDefaults.js.map +1 -0
  71. package/dist/ai/presets/index.d.ts +94 -0
  72. package/dist/ai/presets/index.d.ts.map +1 -0
  73. package/dist/ai/presets/index.js +110 -0
  74. package/dist/ai/presets/index.js.map +1 -0
  75. package/dist/ai/presets/instructions/interactive.d.ts +15 -0
  76. package/dist/ai/presets/instructions/interactive.d.ts.map +1 -0
  77. package/dist/ai/presets/instructions/interactive.js +334 -0
  78. package/dist/ai/presets/instructions/interactive.js.map +1 -0
  79. package/dist/ai/presets/instructions/layout.d.ts +16 -0
  80. package/dist/ai/presets/instructions/layout.d.ts.map +1 -0
  81. package/dist/ai/presets/instructions/layout.js +486 -0
  82. package/dist/ai/presets/instructions/layout.js.map +1 -0
  83. package/dist/ai/presets/instructions/media.d.ts +15 -0
  84. package/dist/ai/presets/instructions/media.d.ts.map +1 -0
  85. package/dist/ai/presets/instructions/media.js +136 -0
  86. package/dist/ai/presets/instructions/media.js.map +1 -0
  87. package/dist/ai/presets/instructions/pagePatterns.d.ts +20 -0
  88. package/dist/ai/presets/instructions/pagePatterns.d.ts.map +1 -0
  89. package/dist/ai/presets/instructions/pagePatterns.js +290 -0
  90. package/dist/ai/presets/instructions/pagePatterns.js.map +1 -0
  91. package/dist/ai/presets/instructions/schemas.d.ts +1247 -0
  92. package/dist/ai/presets/instructions/schemas.d.ts.map +1 -0
  93. package/dist/ai/presets/instructions/schemas.js +240 -0
  94. package/dist/ai/presets/instructions/schemas.js.map +1 -0
  95. package/dist/ai/presets/instructions/typography.d.ts +16 -0
  96. package/dist/ai/presets/instructions/typography.d.ts.map +1 -0
  97. package/dist/ai/presets/instructions/typography.js +192 -0
  98. package/dist/ai/presets/instructions/typography.js.map +1 -0
  99. package/dist/ai/tools/index.d.ts +116 -0
  100. package/dist/ai/tools/index.d.ts.map +1 -0
  101. package/dist/ai/tools/index.js +214 -0
  102. package/dist/ai/tools/index.js.map +1 -0
  103. package/dist/ai/types.d.ts +507 -0
  104. package/dist/ai/types.d.ts.map +1 -0
  105. package/dist/ai/types.js +2 -0
  106. package/dist/ai/types.js.map +1 -0
  107. package/dist/ai/utils/injectAiConfig.d.ts +67 -0
  108. package/dist/ai/utils/injectAiConfig.d.ts.map +1 -0
  109. package/dist/ai/utils/injectAiConfig.js +216 -0
  110. package/dist/ai/utils/injectAiConfig.js.map +1 -0
  111. package/dist/api/createPuckApiRoutesWithId.d.ts.map +1 -1
  112. package/dist/api/createPuckApiRoutesWithId.js +12 -5
  113. package/dist/api/createPuckApiRoutesWithId.js.map +1 -1
  114. package/dist/api/types.d.ts +1 -1
  115. package/dist/api/types.d.ts.map +1 -1
  116. package/dist/components/exports.d.ts +1 -1
  117. package/dist/components/exports.d.ts.map +1 -1
  118. package/dist/components/exports.js +1 -1
  119. package/dist/components/exports.js.map +1 -1
  120. package/dist/components/interactive/Accordion.d.ts +1 -1
  121. package/dist/components/interactive/Accordion.d.ts.map +1 -1
  122. package/dist/components/interactive/Accordion.js +4 -4
  123. package/dist/components/interactive/Accordion.js.map +1 -1
  124. package/dist/components/interactive/Accordion.server.d.ts +1 -1
  125. package/dist/components/interactive/Accordion.server.d.ts.map +1 -1
  126. package/dist/components/interactive/Button.d.ts +1 -1
  127. package/dist/components/interactive/Button.d.ts.map +1 -1
  128. package/dist/components/interactive/Button.server.d.ts +2 -3
  129. package/dist/components/interactive/Button.server.d.ts.map +1 -1
  130. package/dist/components/interactive/Button.server.js +1 -2
  131. package/dist/components/interactive/Button.server.js.map +1 -1
  132. package/dist/components/interactive/Card.d.ts +1 -1
  133. package/dist/components/interactive/Card.d.ts.map +1 -1
  134. package/dist/components/interactive/Card.server.d.ts +1 -1
  135. package/dist/components/interactive/Card.server.d.ts.map +1 -1
  136. package/dist/components/interactive/Divider.d.ts +1 -1
  137. package/dist/components/interactive/Divider.d.ts.map +1 -1
  138. package/dist/components/interactive/Divider.server.d.ts +1 -1
  139. package/dist/components/interactive/Divider.server.d.ts.map +1 -1
  140. package/dist/components/layout/Container.d.ts +3 -1
  141. package/dist/components/layout/Container.d.ts.map +1 -1
  142. package/dist/components/layout/Container.js +16 -2
  143. package/dist/components/layout/Container.js.map +1 -1
  144. package/dist/components/layout/Container.server.d.ts +3 -1
  145. package/dist/components/layout/Container.server.d.ts.map +1 -1
  146. package/dist/components/layout/Container.server.js +5 -2
  147. package/dist/components/layout/Container.server.js.map +1 -1
  148. package/dist/components/layout/Flex.d.ts +3 -1
  149. package/dist/components/layout/Flex.d.ts.map +1 -1
  150. package/dist/components/layout/Flex.js +18 -2
  151. package/dist/components/layout/Flex.js.map +1 -1
  152. package/dist/components/layout/Flex.server.d.ts +3 -1
  153. package/dist/components/layout/Flex.server.d.ts.map +1 -1
  154. package/dist/components/layout/Flex.server.js +5 -2
  155. package/dist/components/layout/Flex.server.js.map +1 -1
  156. package/dist/components/layout/Grid.d.ts +3 -1
  157. package/dist/components/layout/Grid.d.ts.map +1 -1
  158. package/dist/components/layout/Grid.js +15 -2
  159. package/dist/components/layout/Grid.js.map +1 -1
  160. package/dist/components/layout/Grid.server.d.ts +3 -1
  161. package/dist/components/layout/Grid.server.d.ts.map +1 -1
  162. package/dist/components/layout/Grid.server.js +5 -2
  163. package/dist/components/layout/Grid.server.js.map +1 -1
  164. package/dist/components/layout/Section.d.ts +3 -1
  165. package/dist/components/layout/Section.d.ts.map +1 -1
  166. package/dist/components/layout/Section.js +32 -5
  167. package/dist/components/layout/Section.js.map +1 -1
  168. package/dist/components/layout/Section.server.d.ts +3 -1
  169. package/dist/components/layout/Section.server.d.ts.map +1 -1
  170. package/dist/components/layout/Section.server.js +16 -4
  171. package/dist/components/layout/Section.server.js.map +1 -1
  172. package/dist/components/layout/Spacer.d.ts +1 -1
  173. package/dist/components/layout/Spacer.d.ts.map +1 -1
  174. package/dist/components/layout/Spacer.server.d.ts +1 -1
  175. package/dist/components/layout/Spacer.server.d.ts.map +1 -1
  176. package/dist/components/layout/Template.d.ts +1 -1
  177. package/dist/components/layout/Template.d.ts.map +1 -1
  178. package/dist/components/layout/Template.server.d.ts +1 -1
  179. package/dist/components/layout/Template.server.d.ts.map +1 -1
  180. package/dist/components/media/Image.d.ts +1 -1
  181. package/dist/components/media/Image.d.ts.map +1 -1
  182. package/dist/components/media/Image.server.d.ts +1 -1
  183. package/dist/components/media/Image.server.d.ts.map +1 -1
  184. package/dist/components/typography/Heading.d.ts +1 -1
  185. package/dist/components/typography/Heading.d.ts.map +1 -1
  186. package/dist/components/typography/Heading.server.d.ts +1 -1
  187. package/dist/components/typography/Heading.server.d.ts.map +1 -1
  188. package/dist/components/typography/RichText.editor.d.ts +15 -2
  189. package/dist/components/typography/RichText.editor.d.ts.map +1 -1
  190. package/dist/components/typography/RichText.editor.js +18 -11
  191. package/dist/components/typography/RichText.editor.js.map +1 -1
  192. package/dist/components/typography/RichText.server.d.ts +3 -2
  193. package/dist/components/typography/RichText.server.d.ts.map +1 -1
  194. package/dist/components/typography/RichText.server.js +10 -5
  195. package/dist/components/typography/RichText.server.js.map +1 -1
  196. package/dist/components/typography/Text.d.ts +1 -1
  197. package/dist/components/typography/Text.d.ts.map +1 -1
  198. package/dist/components/typography/Text.server.d.ts +1 -1
  199. package/dist/components/typography/Text.server.d.ts.map +1 -1
  200. package/dist/components/typography/index.d.ts +1 -1
  201. package/dist/components/typography/index.d.ts.map +1 -1
  202. package/dist/components/typography/index.js +1 -1
  203. package/dist/components/typography/index.js.map +1 -1
  204. package/dist/config/config.editor.d.ts +4 -4
  205. package/dist/config/config.editor.d.ts.map +1 -1
  206. package/dist/config/index.d.ts +1 -1
  207. package/dist/config/index.d.ts.map +1 -1
  208. package/dist/config/merge.d.ts +4 -4
  209. package/dist/config/merge.d.ts.map +1 -1
  210. package/dist/config/merge.js +3 -3
  211. package/dist/config/presets.d.ts +15 -15
  212. package/dist/config/presets.d.ts.map +1 -1
  213. package/dist/editor/PuckEditor.d.ts +255 -0
  214. package/dist/editor/PuckEditor.d.ts.map +1 -0
  215. package/dist/editor/PuckEditor.js +205 -0
  216. package/dist/editor/PuckEditor.js.map +1 -0
  217. package/dist/editor/{PuckEditorCore.client.d.ts → PuckEditorImpl.client.d.ts} +53 -30
  218. package/dist/editor/PuckEditorImpl.client.d.ts.map +1 -0
  219. package/dist/editor/{PuckEditorCore.client.js → PuckEditorImpl.client.js} +194 -39
  220. package/dist/editor/PuckEditorImpl.client.js.map +1 -0
  221. package/dist/editor/ai-plugin-overrides.css +20 -0
  222. package/dist/editor/components/HeaderActions.d.ts +7 -2
  223. package/dist/editor/components/HeaderActions.d.ts.map +1 -1
  224. package/dist/editor/components/HeaderActions.js +18 -4
  225. package/dist/editor/components/HeaderActions.js.map +1 -1
  226. package/dist/editor/components/IframeWrapper.d.ts +13 -0
  227. package/dist/editor/components/IframeWrapper.d.ts.map +1 -1
  228. package/dist/editor/components/IframeWrapper.js +60 -4
  229. package/dist/editor/components/IframeWrapper.js.map +1 -1
  230. package/dist/editor/components/PreviewModal.d.ts +9 -1
  231. package/dist/editor/components/PreviewModal.d.ts.map +1 -1
  232. package/dist/editor/components/PreviewModal.js +36 -1
  233. package/dist/editor/components/PreviewModal.js.map +1 -1
  234. package/dist/editor/index.d.ts +34 -19
  235. package/dist/editor/index.d.ts.map +1 -1
  236. package/dist/editor/index.js +37 -21
  237. package/dist/editor/index.js.map +1 -1
  238. package/dist/editor/plugins/VersionHistoryPanel.d.ts +43 -0
  239. package/dist/editor/plugins/VersionHistoryPanel.d.ts.map +1 -0
  240. package/dist/editor/plugins/VersionHistoryPanel.js +303 -0
  241. package/dist/editor/plugins/VersionHistoryPanel.js.map +1 -0
  242. package/dist/editor/plugins/index.d.ts +6 -3
  243. package/dist/editor/plugins/index.d.ts.map +1 -1
  244. package/dist/editor/plugins/index.js +7 -3
  245. package/dist/editor/plugins/index.js.map +1 -1
  246. package/dist/editor/plugins/versionHistoryPlugin.d.ts +37 -0
  247. package/dist/editor/plugins/versionHistoryPlugin.d.ts.map +1 -0
  248. package/dist/editor/plugins/versionHistoryPlugin.js +36 -0
  249. package/dist/editor/plugins/versionHistoryPlugin.js.map +1 -0
  250. package/dist/editor/utils/detectPageTree.d.ts +22 -0
  251. package/dist/editor/utils/detectPageTree.d.ts.map +1 -0
  252. package/dist/editor/utils/detectPageTree.js +36 -0
  253. package/dist/editor/utils/detectPageTree.js.map +1 -0
  254. package/dist/editor/utils/index.d.ts +3 -0
  255. package/dist/editor/utils/index.d.ts.map +1 -0
  256. package/dist/editor/utils/index.js +3 -0
  257. package/dist/editor/utils/index.js.map +1 -0
  258. package/dist/editor/utils/injectPageTreeFields.d.ts +10 -0
  259. package/dist/editor/utils/injectPageTreeFields.d.ts.map +1 -0
  260. package/dist/editor/utils/injectPageTreeFields.js +35 -0
  261. package/dist/editor/utils/injectPageTreeFields.js.map +1 -0
  262. package/dist/endpoints/ai.d.ts +36 -0
  263. package/dist/endpoints/ai.d.ts.map +1 -0
  264. package/dist/endpoints/ai.js +315 -0
  265. package/dist/endpoints/ai.js.map +1 -0
  266. package/dist/endpoints/context.d.ts +30 -0
  267. package/dist/endpoints/context.d.ts.map +1 -0
  268. package/dist/endpoints/context.js +123 -0
  269. package/dist/endpoints/context.js.map +1 -0
  270. package/dist/endpoints/prompts.d.ts +28 -0
  271. package/dist/endpoints/prompts.d.ts.map +1 -0
  272. package/dist/endpoints/prompts.js +118 -0
  273. package/dist/endpoints/prompts.js.map +1 -0
  274. package/dist/endpoints/styles.d.ts +19 -0
  275. package/dist/endpoints/styles.d.ts.map +1 -0
  276. package/dist/endpoints/styles.js +116 -0
  277. package/dist/endpoints/styles.js.map +1 -0
  278. package/dist/exports/client.d.ts +7 -6
  279. package/dist/exports/client.d.ts.map +1 -1
  280. package/dist/exports/client.js +9 -8
  281. package/dist/exports/client.js.map +1 -1
  282. package/dist/fields/AlignmentField.d.ts +1 -1
  283. package/dist/fields/AlignmentField.d.ts.map +1 -1
  284. package/dist/fields/AlignmentField.js +1 -0
  285. package/dist/fields/AlignmentField.js.map +1 -1
  286. package/dist/fields/AnimationField.d.ts +1 -1
  287. package/dist/fields/AnimationField.d.ts.map +1 -1
  288. package/dist/fields/BackgroundField.d.ts +1 -1
  289. package/dist/fields/BackgroundField.d.ts.map +1 -1
  290. package/dist/fields/BackgroundField.js +9 -4
  291. package/dist/fields/BackgroundField.js.map +1 -1
  292. package/dist/fields/BorderField.d.ts +1 -1
  293. package/dist/fields/BorderField.d.ts.map +1 -1
  294. package/dist/fields/BorderField.js +1 -0
  295. package/dist/fields/BorderField.js.map +1 -1
  296. package/dist/fields/ColorPickerField.d.ts +1 -1
  297. package/dist/fields/ColorPickerField.d.ts.map +1 -1
  298. package/dist/fields/ColorPickerField.js +4 -2
  299. package/dist/fields/ColorPickerField.js.map +1 -1
  300. package/dist/fields/ContentAlignmentField.d.ts +66 -0
  301. package/dist/fields/ContentAlignmentField.d.ts.map +1 -0
  302. package/dist/fields/ContentAlignmentField.js +255 -0
  303. package/dist/fields/ContentAlignmentField.js.map +1 -0
  304. package/dist/fields/DimensionsField.d.ts +1 -1
  305. package/dist/fields/DimensionsField.d.ts.map +1 -1
  306. package/dist/fields/DimensionsField.js +8 -2
  307. package/dist/fields/DimensionsField.js.map +1 -1
  308. package/dist/fields/FlexAlignmentField.d.ts +1 -1
  309. package/dist/fields/FlexAlignmentField.d.ts.map +1 -1
  310. package/dist/fields/FolderPickerField.d.ts +1 -1
  311. package/dist/fields/FolderPickerField.d.ts.map +1 -1
  312. package/dist/fields/GradientEditor.d.ts.map +1 -1
  313. package/dist/fields/GradientEditor.js +3 -0
  314. package/dist/fields/GradientEditor.js.map +1 -1
  315. package/dist/fields/LockedField.d.ts +1 -1
  316. package/dist/fields/LockedField.d.ts.map +1 -1
  317. package/dist/fields/MarginField.d.ts +1 -1
  318. package/dist/fields/MarginField.d.ts.map +1 -1
  319. package/dist/fields/MediaField.d.ts +1 -1
  320. package/dist/fields/MediaField.d.ts.map +1 -1
  321. package/dist/fields/MediaField.js +3 -2
  322. package/dist/fields/MediaField.js.map +1 -1
  323. package/dist/fields/PaddingField.d.ts +1 -1
  324. package/dist/fields/PaddingField.d.ts.map +1 -1
  325. package/dist/fields/PageSegmentField.d.ts +1 -1
  326. package/dist/fields/PageSegmentField.d.ts.map +1 -1
  327. package/dist/fields/ResetField.d.ts +1 -1
  328. package/dist/fields/ResetField.d.ts.map +1 -1
  329. package/dist/fields/ResetField.js +1 -1
  330. package/dist/fields/ResetField.js.map +1 -1
  331. package/dist/fields/ResponsiveField.d.ts +1 -1
  332. package/dist/fields/ResponsiveField.d.ts.map +1 -1
  333. package/dist/fields/ResponsiveField.js +5 -2
  334. package/dist/fields/ResponsiveField.js.map +1 -1
  335. package/dist/fields/ResponsiveVisibilityField.d.ts +1 -1
  336. package/dist/fields/ResponsiveVisibilityField.d.ts.map +1 -1
  337. package/dist/fields/ResponsiveVisibilityField.js +4 -3
  338. package/dist/fields/ResponsiveVisibilityField.js.map +1 -1
  339. package/dist/fields/SizeField.d.ts +3 -25
  340. package/dist/fields/SizeField.d.ts.map +1 -1
  341. package/dist/fields/SizeField.js +8 -34
  342. package/dist/fields/SizeField.js.map +1 -1
  343. package/dist/fields/SlugPreviewField.d.ts +1 -1
  344. package/dist/fields/SlugPreviewField.d.ts.map +1 -1
  345. package/dist/fields/TemplateField.d.ts +1 -1
  346. package/dist/fields/TemplateField.d.ts.map +1 -1
  347. package/dist/fields/TemplateField.js +1 -1
  348. package/dist/fields/TemplateField.js.map +1 -1
  349. package/dist/fields/TransformField.d.ts +1 -1
  350. package/dist/fields/TransformField.d.ts.map +1 -1
  351. package/dist/fields/TransformField.js +2 -0
  352. package/dist/fields/TransformField.js.map +1 -1
  353. package/dist/fields/VerticalAlignmentField.d.ts +1 -1
  354. package/dist/fields/VerticalAlignmentField.d.ts.map +1 -1
  355. package/dist/fields/WidthField.d.ts +1 -1
  356. package/dist/fields/WidthField.d.ts.map +1 -1
  357. package/dist/fields/index.d.ts +8 -36
  358. package/dist/fields/index.d.ts.map +1 -1
  359. package/dist/fields/index.js +20 -78
  360. package/dist/fields/index.js.map +1 -1
  361. package/dist/fields/richtext/controls/ColorPickerControl.d.ts +16 -0
  362. package/dist/fields/richtext/controls/ColorPickerControl.d.ts.map +1 -0
  363. package/dist/fields/richtext/controls/ColorPickerControl.js +116 -0
  364. package/dist/fields/richtext/controls/ColorPickerControl.js.map +1 -0
  365. package/dist/fields/richtext/controls/DropdownPortal.d.ts +17 -0
  366. package/dist/fields/richtext/controls/DropdownPortal.d.ts.map +1 -0
  367. package/dist/fields/richtext/controls/DropdownPortal.js +90 -0
  368. package/dist/fields/richtext/controls/DropdownPortal.js.map +1 -0
  369. package/dist/fields/richtext/controls/FontSizeControl.d.ts +8 -0
  370. package/dist/fields/richtext/controls/FontSizeControl.d.ts.map +1 -0
  371. package/dist/fields/richtext/controls/FontSizeControl.js +62 -0
  372. package/dist/fields/richtext/controls/FontSizeControl.js.map +1 -0
  373. package/dist/fields/richtext/controls/HighlightControl.d.ts +9 -0
  374. package/dist/fields/richtext/controls/HighlightControl.d.ts.map +1 -0
  375. package/dist/fields/richtext/controls/HighlightControl.js +44 -0
  376. package/dist/fields/richtext/controls/HighlightControl.js.map +1 -0
  377. package/dist/fields/richtext/controls/index.d.ts +11 -0
  378. package/dist/fields/richtext/controls/index.d.ts.map +1 -0
  379. package/dist/fields/richtext/controls/index.js +16 -0
  380. package/dist/fields/richtext/controls/index.js.map +1 -0
  381. package/dist/fields/richtext/controls/shared.d.ts +97 -0
  382. package/dist/fields/richtext/controls/shared.d.ts.map +1 -0
  383. package/dist/fields/richtext/controls/shared.js +344 -0
  384. package/dist/fields/richtext/controls/shared.js.map +1 -0
  385. package/dist/fields/richtext/createRichTextField.d.ts +165 -0
  386. package/dist/fields/richtext/createRichTextField.d.ts.map +1 -0
  387. package/dist/fields/richtext/createRichTextField.js +139 -0
  388. package/dist/fields/richtext/createRichTextField.js.map +1 -0
  389. package/dist/fields/richtext/extensions/FontSize.d.ts +23 -0
  390. package/dist/fields/richtext/extensions/FontSize.d.ts.map +1 -0
  391. package/dist/fields/richtext/extensions/FontSize.js +47 -0
  392. package/dist/fields/richtext/extensions/FontSize.js.map +1 -0
  393. package/dist/fields/richtext/extensions/index.d.ts +5 -0
  394. package/dist/fields/richtext/extensions/index.d.ts.map +1 -0
  395. package/dist/fields/richtext/extensions/index.js +5 -0
  396. package/dist/fields/richtext/extensions/index.js.map +1 -0
  397. package/dist/fields/richtext/index.d.ts +14 -0
  398. package/dist/fields/richtext/index.d.ts.map +1 -0
  399. package/dist/fields/richtext/index.js +19 -0
  400. package/dist/fields/richtext/index.js.map +1 -0
  401. package/dist/fields/richtext/richtext-menu.css +50 -0
  402. package/dist/fields/shared.d.ts +27 -1
  403. package/dist/fields/shared.d.ts.map +1 -1
  404. package/dist/fields/shared.js +34 -0
  405. package/dist/fields/shared.js.map +1 -1
  406. package/dist/layouts/types.d.ts +30 -0
  407. package/dist/layouts/types.d.ts.map +1 -1
  408. package/dist/plugin/index.d.ts +1 -0
  409. package/dist/plugin/index.d.ts.map +1 -1
  410. package/dist/plugin/index.js +112 -2
  411. package/dist/plugin/index.js.map +1 -1
  412. package/dist/render/HybridPageRenderer.d.ts +1 -1
  413. package/dist/render/HybridPageRenderer.d.ts.map +1 -1
  414. package/dist/render/PageRenderer.d.ts +1 -1
  415. package/dist/render/PageRenderer.d.ts.map +1 -1
  416. package/dist/render/PageRenderer.js +1 -1
  417. package/dist/render/PageRenderer.js.map +1 -1
  418. package/dist/render/PuckEditor.client.d.ts +2 -2
  419. package/dist/render/PuckEditor.client.d.ts.map +1 -1
  420. package/dist/render/PuckEditor.client.js +2 -2
  421. package/dist/render/PuckEditor.client.js.map +1 -1
  422. package/dist/types/index.d.ts +37 -12
  423. package/dist/types/index.d.ts.map +1 -1
  424. package/dist/version.d.ts +2 -0
  425. package/dist/version.d.ts.map +1 -0
  426. package/dist/version.js +3 -0
  427. package/dist/version.js.map +1 -0
  428. package/dist/views/PuckConfigContext.d.ts +56 -2
  429. package/dist/views/PuckConfigContext.d.ts.map +1 -1
  430. package/dist/views/PuckConfigContext.js +6 -3
  431. package/dist/views/PuckConfigContext.js.map +1 -1
  432. package/dist/views/PuckEditorView.d.ts.map +1 -1
  433. package/dist/views/PuckEditorView.js +29 -2
  434. package/dist/views/PuckEditorView.js.map +1 -1
  435. package/dist/views/index.d.ts +0 -2
  436. package/dist/views/index.d.ts.map +1 -1
  437. package/dist/views/index.js +0 -2
  438. package/dist/views/index.js.map +1 -1
  439. package/package.json +42 -12
  440. package/dist/components/typography/RichText.d.ts +0 -20
  441. package/dist/components/typography/RichText.d.ts.map +0 -1
  442. package/dist/components/typography/RichText.js +0 -73
  443. package/dist/components/typography/RichText.js.map +0 -1
  444. package/dist/editor/PuckEditor.client.d.ts +0 -131
  445. package/dist/editor/PuckEditor.client.d.ts.map +0 -1
  446. package/dist/editor/PuckEditor.client.js +0 -42
  447. package/dist/editor/PuckEditor.client.js.map +0 -1
  448. package/dist/editor/PuckEditorCore.client.d.ts.map +0 -1
  449. package/dist/editor/PuckEditorCore.client.js.map +0 -1
  450. package/dist/fields/TiptapField.d.ts +0 -40
  451. package/dist/fields/TiptapField.d.ts.map +0 -1
  452. package/dist/fields/TiptapField.js +0 -857
  453. package/dist/fields/TiptapField.js.map +0 -1
  454. package/dist/fields/TiptapModal.d.ts +0 -10
  455. package/dist/fields/TiptapModal.d.ts.map +0 -1
  456. package/dist/fields/TiptapModal.js +0 -114
  457. package/dist/fields/TiptapModal.js.map +0 -1
  458. package/dist/fields/TiptapModalField.d.ts +0 -23
  459. package/dist/fields/TiptapModalField.d.ts.map +0 -1
  460. package/dist/fields/TiptapModalField.js +0 -55
  461. package/dist/fields/TiptapModalField.js.map +0 -1
  462. package/dist/fields/richtext-output.css +0 -219
  463. package/dist/fields/tiptap-styles.css +0 -248
  464. package/dist/views/PuckEditorClient.d.ts +0 -73
  465. package/dist/views/PuckEditorClient.d.ts.map +0 -1
  466. package/dist/views/PuckEditorClient.js +0 -130
  467. package/dist/views/PuckEditorClient.js.map +0 -1
@@ -0,0 +1,344 @@
1
+ /**
2
+ * Shared utilities for RichText controls
3
+ *
4
+ * Color manipulation, font size presets, and common types.
5
+ */
6
+ // =============================================================================
7
+ // Font Size Presets
8
+ // =============================================================================
9
+ export const FONT_SIZES = [
10
+ { label: 'XS', value: '0.75rem', px: '12px' },
11
+ { label: 'Small', value: '0.875rem', px: '14px' },
12
+ { label: 'Normal', value: null, px: '16px' },
13
+ { label: 'Medium', value: '1.125rem', px: '18px' },
14
+ { label: 'Large', value: '1.25rem', px: '20px' },
15
+ { label: 'XL', value: '1.5rem', px: '24px' },
16
+ { label: '2XL', value: '1.875rem', px: '30px' },
17
+ { label: '3XL', value: '2.25rem', px: '36px' },
18
+ { label: '4XL', value: '3rem', px: '48px' },
19
+ ];
20
+ export const FONT_SIZE_UNITS = ['px', 'rem', 'em'];
21
+ // =============================================================================
22
+ // Color Utilities
23
+ // =============================================================================
24
+ /**
25
+ * Validates and normalizes a hex color string
26
+ */
27
+ export function normalizeHex(hex) {
28
+ let clean = hex.replace(/^#/, '');
29
+ if (clean.length === 3) {
30
+ clean = clean
31
+ .split('')
32
+ .map((c) => c + c)
33
+ .join('');
34
+ }
35
+ if (!/^[0-9A-Fa-f]{6}$/.test(clean)) {
36
+ return '';
37
+ }
38
+ return `#${clean.toLowerCase()}`;
39
+ }
40
+ /**
41
+ * Converts hex + opacity to rgba CSS string
42
+ */
43
+ export function hexToRgba(hex, opacity) {
44
+ const clean = hex.replace(/^#/, '');
45
+ const r = parseInt(clean.substring(0, 2), 16);
46
+ const g = parseInt(clean.substring(2, 4), 16);
47
+ const b = parseInt(clean.substring(4, 6), 16);
48
+ return `rgba(${r}, ${g}, ${b}, ${opacity / 100})`;
49
+ }
50
+ /**
51
+ * Parses a color string (hex or rgba) and returns hex + opacity
52
+ */
53
+ export function parseColor(color) {
54
+ if (!color)
55
+ return { hex: '#000000', opacity: 100 };
56
+ // Handle rgba
57
+ const rgbaMatch = color.match(/rgba?\((\d+),\s*(\d+),\s*(\d+)(?:,\s*([\d.]+))?\)/);
58
+ if (rgbaMatch) {
59
+ const r = parseInt(rgbaMatch[1], 10);
60
+ const g = parseInt(rgbaMatch[2], 10);
61
+ const b = parseInt(rgbaMatch[3], 10);
62
+ const a = rgbaMatch[4] ? parseFloat(rgbaMatch[4]) : 1;
63
+ const hex = `#${r.toString(16).padStart(2, '0')}${g.toString(16).padStart(2, '0')}${b.toString(16).padStart(2, '0')}`;
64
+ return { hex, opacity: Math.round(a * 100) };
65
+ }
66
+ // Handle hex
67
+ const normalized = normalizeHex(color);
68
+ if (normalized) {
69
+ return { hex: normalized, opacity: 100 };
70
+ }
71
+ return { hex: '#000000', opacity: 100 };
72
+ }
73
+ // =============================================================================
74
+ // Shared Styles
75
+ // =============================================================================
76
+ export const controlStyles = {
77
+ icon: {
78
+ width: '16px',
79
+ height: '16px',
80
+ },
81
+ dropdownTrigger: {
82
+ display: 'inline-flex',
83
+ alignItems: 'center',
84
+ justifyContent: 'center',
85
+ gap: '2px',
86
+ height: '28px',
87
+ padding: '0 6px',
88
+ borderRadius: '4px',
89
+ border: 'none',
90
+ backgroundColor: 'transparent',
91
+ cursor: 'pointer',
92
+ transition: 'background-color 0.15s',
93
+ },
94
+ dropdownTriggerActive: {
95
+ color: 'var(--puck-color-azure-04)',
96
+ },
97
+ dropdown: {
98
+ position: 'absolute',
99
+ top: '100%',
100
+ left: 0,
101
+ marginTop: '4px',
102
+ backgroundColor: 'var(--puck-color-white)',
103
+ border: '1px solid var(--puck-color-grey-03)',
104
+ borderRadius: '6px',
105
+ boxShadow: '0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05)',
106
+ zIndex: 9999, // High z-index to ensure dropdown appears above sidebar content
107
+ minWidth: '160px',
108
+ },
109
+ dropdownItem: {
110
+ width: '100%',
111
+ padding: '8px 12px',
112
+ textAlign: 'left',
113
+ fontSize: '14px',
114
+ transition: 'background-color 0.15s',
115
+ display: 'flex',
116
+ alignItems: 'center',
117
+ border: 'none',
118
+ backgroundColor: 'transparent',
119
+ cursor: 'pointer',
120
+ },
121
+ dropdownLabel: {
122
+ padding: '4px 12px',
123
+ fontSize: '11px',
124
+ color: 'var(--puck-color-grey-05)',
125
+ fontWeight: 500,
126
+ textTransform: 'uppercase',
127
+ letterSpacing: '0.5px',
128
+ },
129
+ dropdownSeparator: {
130
+ height: '1px',
131
+ backgroundColor: 'var(--puck-color-grey-03)',
132
+ margin: '4px 0',
133
+ },
134
+ // Color picker specific styles
135
+ colorPickerContainer: {
136
+ padding: '12px',
137
+ display: 'flex',
138
+ flexDirection: 'column',
139
+ gap: '12px',
140
+ minWidth: '240px',
141
+ },
142
+ colorPickerRow: {
143
+ display: 'flex',
144
+ alignItems: 'center',
145
+ gap: '8px',
146
+ },
147
+ colorPickerInput: {
148
+ width: '36px',
149
+ height: '36px',
150
+ padding: 0,
151
+ border: '1px solid var(--puck-color-grey-03)',
152
+ borderRadius: '6px',
153
+ cursor: 'pointer',
154
+ flexShrink: 0,
155
+ },
156
+ colorPickerHexInput: {
157
+ flex: 1,
158
+ height: '36px',
159
+ padding: '0 10px',
160
+ fontSize: '13px',
161
+ fontFamily: 'monospace',
162
+ border: '1px solid var(--puck-color-grey-03)',
163
+ borderRadius: '6px',
164
+ backgroundColor: 'var(--puck-color-white)',
165
+ color: 'var(--puck-color-grey-08)',
166
+ outline: 'none',
167
+ },
168
+ colorPickerPreview: {
169
+ width: '36px',
170
+ height: '36px',
171
+ borderRadius: '6px',
172
+ border: '1px solid var(--puck-color-grey-03)',
173
+ flexShrink: 0,
174
+ position: 'relative',
175
+ overflow: 'hidden',
176
+ },
177
+ colorPickerCheckerboard: {
178
+ position: 'absolute',
179
+ inset: 0,
180
+ backgroundImage: 'linear-gradient(45deg, #d0d0d0 25%, transparent 25%), linear-gradient(-45deg, #d0d0d0 25%, transparent 25%), linear-gradient(45deg, transparent 75%, #d0d0d0 75%), linear-gradient(-45deg, transparent 75%, #d0d0d0 75%)',
181
+ backgroundSize: '8px 8px',
182
+ backgroundPosition: '0 0, 0 4px, 4px -4px, -4px 0px',
183
+ backgroundColor: '#f0f0f0',
184
+ },
185
+ colorPickerOverlay: {
186
+ position: 'absolute',
187
+ inset: 0,
188
+ },
189
+ colorPickerOpacitySection: {
190
+ display: 'flex',
191
+ flexDirection: 'column',
192
+ gap: '4px',
193
+ },
194
+ colorPickerOpacityHeader: {
195
+ display: 'flex',
196
+ alignItems: 'center',
197
+ justifyContent: 'space-between',
198
+ },
199
+ colorPickerOpacityLabel: {
200
+ fontSize: '11px',
201
+ color: 'var(--puck-color-grey-05)',
202
+ },
203
+ colorPickerOpacityValue: {
204
+ fontSize: '11px',
205
+ fontFamily: 'monospace',
206
+ color: 'var(--puck-color-grey-05)',
207
+ },
208
+ colorPickerOpacitySlider: {
209
+ position: 'relative',
210
+ height: '10px',
211
+ borderRadius: '5px',
212
+ overflow: 'hidden',
213
+ border: '1px solid var(--puck-color-grey-03)',
214
+ },
215
+ colorPickerOpacityInputRange: {
216
+ position: 'absolute',
217
+ inset: 0,
218
+ width: '100%',
219
+ height: '100%',
220
+ opacity: 0,
221
+ cursor: 'pointer',
222
+ margin: 0,
223
+ },
224
+ colorPickerOpacityThumb: {
225
+ position: 'absolute',
226
+ top: 0,
227
+ bottom: 0,
228
+ width: '4px',
229
+ backgroundColor: 'white',
230
+ border: '1px solid var(--puck-color-grey-04)',
231
+ borderRadius: '2px',
232
+ boxShadow: '0 1px 2px rgba(0,0,0,0.15)',
233
+ pointerEvents: 'none',
234
+ },
235
+ colorPickerPresetsLabel: {
236
+ fontSize: '11px',
237
+ color: 'var(--puck-color-grey-05)',
238
+ marginBottom: '4px',
239
+ },
240
+ colorPickerPresetsGrid: {
241
+ display: 'flex',
242
+ flexWrap: 'wrap',
243
+ gap: '4px',
244
+ },
245
+ colorPickerPresetButton: {
246
+ width: '22px',
247
+ height: '22px',
248
+ padding: 0,
249
+ borderRadius: '4px',
250
+ cursor: 'pointer',
251
+ border: '1px solid var(--puck-color-grey-03)',
252
+ outline: 'none',
253
+ transition: 'transform 0.1s',
254
+ },
255
+ colorPickerPresetButtonSelected: {
256
+ width: '22px',
257
+ height: '22px',
258
+ padding: 0,
259
+ borderRadius: '4px',
260
+ cursor: 'pointer',
261
+ border: '2px solid var(--puck-color-grey-08)',
262
+ outline: '2px solid var(--puck-color-grey-03)',
263
+ outlineOffset: '1px',
264
+ },
265
+ colorPickerThemeButton: {
266
+ display: 'flex',
267
+ alignItems: 'center',
268
+ gap: '8px',
269
+ width: '100%',
270
+ padding: '8px',
271
+ border: '1px solid var(--puck-color-grey-03)',
272
+ borderRadius: '6px',
273
+ backgroundColor: 'transparent',
274
+ cursor: 'pointer',
275
+ fontSize: '13px',
276
+ color: 'var(--puck-color-grey-07)',
277
+ transition: 'background-color 0.15s',
278
+ },
279
+ colorPickerThemeSwatch: {
280
+ width: '20px',
281
+ height: '20px',
282
+ borderRadius: '4px',
283
+ border: '1px solid var(--puck-color-grey-03)',
284
+ flexShrink: 0,
285
+ background: 'linear-gradient(135deg, #fff 50%, #1f2937 50%)',
286
+ },
287
+ // Font size specific styles
288
+ fontSizeGrid: {
289
+ display: 'grid',
290
+ gridTemplateColumns: 'repeat(3, 1fr)',
291
+ gap: '4px',
292
+ padding: '8px',
293
+ },
294
+ fontSizeButton: {
295
+ padding: '6px 8px',
296
+ fontSize: '12px',
297
+ borderRadius: '4px',
298
+ border: '1px solid var(--puck-color-grey-03)',
299
+ backgroundColor: 'transparent',
300
+ cursor: 'pointer',
301
+ textAlign: 'center',
302
+ transition: 'background-color 0.15s',
303
+ },
304
+ fontSizeButtonActive: {
305
+ backgroundColor: 'var(--puck-color-azure-11)',
306
+ borderColor: 'var(--puck-color-azure-11)',
307
+ color: 'var(--puck-color-azure-04)',
308
+ fontWeight: 500,
309
+ },
310
+ customSizeRow: {
311
+ display: 'flex',
312
+ alignItems: 'center',
313
+ gap: '4px',
314
+ padding: '8px',
315
+ borderTop: '1px solid var(--puck-color-grey-03)',
316
+ },
317
+ customSizeInput: {
318
+ width: '60px',
319
+ padding: '6px 8px',
320
+ fontSize: '13px',
321
+ border: '1px solid var(--puck-color-grey-03)',
322
+ borderRadius: '4px',
323
+ outline: 'none',
324
+ },
325
+ customSizeSelect: {
326
+ padding: '6px 4px',
327
+ fontSize: '13px',
328
+ border: '1px solid var(--puck-color-grey-03)',
329
+ borderRadius: '4px',
330
+ outline: 'none',
331
+ backgroundColor: 'var(--puck-color-white)',
332
+ },
333
+ customSizeApply: {
334
+ padding: '6px 10px',
335
+ fontSize: '12px',
336
+ backgroundColor: 'var(--puck-color-azure-04)',
337
+ color: 'var(--puck-color-white)',
338
+ borderRadius: '4px',
339
+ border: 'none',
340
+ cursor: 'pointer',
341
+ fontWeight: 500,
342
+ },
343
+ };
344
+ //# sourceMappingURL=shared.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../../src/fields/richtext/controls/shared.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,165 @@
1
+ export interface CreateRichTextFieldOptions {
2
+ /** Field label shown in sidebar */
3
+ label?: string;
4
+ /**
5
+ * Enable inline editing on canvas.
6
+ * When true, users can edit text directly in the preview.
7
+ * @default false
8
+ */
9
+ contentEditable?: boolean;
10
+ /**
11
+ * Initial height for sidebar editor (ignored if contentEditable is true)
12
+ * @default 192
13
+ */
14
+ initialHeight?: number | string;
15
+ /**
16
+ * Heading levels to allow
17
+ * @default [1, 2, 3, 4, 5, 6]
18
+ */
19
+ headingLevels?: (1 | 2 | 3 | 4 | 5 | 6)[];
20
+ /**
21
+ * Enable font size control
22
+ * @default true
23
+ */
24
+ fontSize?: boolean;
25
+ /**
26
+ * Enable text color control
27
+ * @default true
28
+ */
29
+ textColor?: boolean;
30
+ /**
31
+ * Enable highlight control
32
+ * @default true
33
+ */
34
+ highlight?: boolean;
35
+ /**
36
+ * Enable superscript
37
+ * @default true
38
+ */
39
+ superscript?: boolean;
40
+ /**
41
+ * Enable subscript
42
+ * @default true
43
+ */
44
+ subscript?: boolean;
45
+ /**
46
+ * Enable code blocks (in addition to inline code)
47
+ * @default true
48
+ */
49
+ codeBlock?: boolean;
50
+ /**
51
+ * Enable blockquotes
52
+ * @default true
53
+ */
54
+ blockquote?: boolean;
55
+ }
56
+ /**
57
+ * Creates a Puck richtext field with enhanced features.
58
+ *
59
+ * @example
60
+ * ```tsx
61
+ * const myConfig: ComponentConfig = {
62
+ * fields: {
63
+ * content: createRichTextField({
64
+ * label: 'Content',
65
+ * contentEditable: true,
66
+ * }),
67
+ * },
68
+ * // ...
69
+ * }
70
+ * ```
71
+ */
72
+ export declare function createRichTextField(options?: CreateRichTextFieldOptions): {
73
+ type: "richtext";
74
+ label: string | undefined;
75
+ contentEditable: boolean;
76
+ initialHeight: string | number;
77
+ options: {
78
+ heading: {
79
+ levels: (1 | 2 | 4 | 3 | 5 | 6)[];
80
+ };
81
+ codeBlock: false | undefined;
82
+ blockquote: false | undefined;
83
+ };
84
+ tiptap: {
85
+ extensions: any[];
86
+ selector: any;
87
+ };
88
+ renderMenu: ({ editor, editorState }: {
89
+ editor: any;
90
+ editorState: any;
91
+ }) => import("react/jsx-runtime").JSX.Element | null;
92
+ };
93
+ /**
94
+ * Full-featured richtext field with all enhancements
95
+ */
96
+ export declare const fullRichTextField: {
97
+ type: "richtext";
98
+ label: string | undefined;
99
+ contentEditable: boolean;
100
+ initialHeight: string | number;
101
+ options: {
102
+ heading: {
103
+ levels: (1 | 2 | 4 | 3 | 5 | 6)[];
104
+ };
105
+ codeBlock: false | undefined;
106
+ blockquote: false | undefined;
107
+ };
108
+ tiptap: {
109
+ extensions: any[];
110
+ selector: any;
111
+ };
112
+ renderMenu: ({ editor, editorState }: {
113
+ editor: any;
114
+ editorState: any;
115
+ }) => import("react/jsx-runtime").JSX.Element | null;
116
+ };
117
+ /**
118
+ * Minimal richtext field - structure only, no styling controls
119
+ */
120
+ export declare const minimalRichTextField: {
121
+ type: "richtext";
122
+ label: string | undefined;
123
+ contentEditable: boolean;
124
+ initialHeight: string | number;
125
+ options: {
126
+ heading: {
127
+ levels: (1 | 2 | 4 | 3 | 5 | 6)[];
128
+ };
129
+ codeBlock: false | undefined;
130
+ blockquote: false | undefined;
131
+ };
132
+ tiptap: {
133
+ extensions: any[];
134
+ selector: any;
135
+ };
136
+ renderMenu: ({ editor, editorState }: {
137
+ editor: any;
138
+ editorState: any;
139
+ }) => import("react/jsx-runtime").JSX.Element | null;
140
+ };
141
+ /**
142
+ * Sidebar-only richtext field (no inline editing)
143
+ */
144
+ export declare const sidebarRichTextField: {
145
+ type: "richtext";
146
+ label: string | undefined;
147
+ contentEditable: boolean;
148
+ initialHeight: string | number;
149
+ options: {
150
+ heading: {
151
+ levels: (1 | 2 | 4 | 3 | 5 | 6)[];
152
+ };
153
+ codeBlock: false | undefined;
154
+ blockquote: false | undefined;
155
+ };
156
+ tiptap: {
157
+ extensions: any[];
158
+ selector: any;
159
+ };
160
+ renderMenu: ({ editor, editorState }: {
161
+ editor: any;
162
+ editorState: any;
163
+ }) => import("react/jsx-runtime").JSX.Element | null;
164
+ };
165
+ //# sourceMappingURL=createRichTextField.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRichTextField.d.ts","sourceRoot":"","sources":["../../../src/fields/richtext/createRichTextField.tsx"],"names":[],"mappings":"AAoCA,MAAM,WAAW,0BAA0B;IACzC,mCAAmC;IACnC,KAAK,CAAC,EAAE,MAAM,CAAA;IAEd;;;;OAIG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IAEzB;;;OAGG;IACH,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,CAAA;IAE/B;;;OAGG;IACH,aAAa,CAAC,EAAE,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,CAAA;IAEzC;;;OAGG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAA;IAElB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,WAAW,CAAC,EAAE,OAAO,CAAA;IAErB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAA;CACrB;AA0BD;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,GAAE,0BAA+B;;;;;;;;;;;;;;kBAmFhE,GAAG;;0CAK2B;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAA;KAAE;EAgE1E;AAMD;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;kBA9ElB,GAAG;;0CAK2B;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAA;KAAE;CAgFzE,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;kBA1FrB,GAAG;;0CAK2B;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAA;KAAE;CA6FzE,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;kBAvGrB,GAAG;;0CAK2B;QAAE,MAAM,EAAE,GAAG,CAAC;QAAC,WAAW,EAAE,GAAG,CAAA;KAAE;CAwGzE,CAAA"}
@@ -0,0 +1,139 @@
1
+ 'use client';
2
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
3
+ import { RichTextMenu } from '@puckeditor/core';
4
+ import { TextStyle } from '@tiptap/extension-text-style';
5
+ import { Color } from '@tiptap/extension-color';
6
+ import HighlightExtension from '@tiptap/extension-highlight';
7
+ import Superscript from '@tiptap/extension-superscript';
8
+ import Subscript from '@tiptap/extension-subscript';
9
+ import { Superscript as SuperscriptIcon, Subscript as SubscriptIcon } from 'lucide-react';
10
+ import { FontSize } from './extensions/FontSize';
11
+ import { ColorPickerControl } from './controls/ColorPickerControl';
12
+ import { FontSizeControl } from './controls/FontSizeControl';
13
+ import { HighlightControl } from './controls/HighlightControl';
14
+ // =============================================================================
15
+ // Factory Function
16
+ // =============================================================================
17
+ /**
18
+ * Creates a Puck richtext field with enhanced features.
19
+ *
20
+ * @example
21
+ * ```tsx
22
+ * const myConfig: ComponentConfig = {
23
+ * fields: {
24
+ * content: createRichTextField({
25
+ * label: 'Content',
26
+ * contentEditable: true,
27
+ * }),
28
+ * },
29
+ * // ...
30
+ * }
31
+ * ```
32
+ */
33
+ export function createRichTextField(options = {}) {
34
+ const { label, contentEditable = false, initialHeight = 192, headingLevels = [1, 2, 3, 4, 5, 6], fontSize = true, textColor = true, highlight = true, superscript = true, subscript = true, codeBlock = true, blockquote = true, } = options;
35
+ // Build custom TipTap extensions array
36
+ // Using any[] to avoid complex union types with TipTap extensions
37
+ const customExtensions = [TextStyle];
38
+ if (textColor) {
39
+ customExtensions.push(Color);
40
+ }
41
+ if (highlight) {
42
+ customExtensions.push(HighlightExtension.configure({ multicolor: true }));
43
+ }
44
+ if (fontSize) {
45
+ customExtensions.push(FontSize);
46
+ }
47
+ if (superscript) {
48
+ customExtensions.push(Superscript);
49
+ }
50
+ if (subscript) {
51
+ customExtensions.push(Subscript);
52
+ }
53
+ return {
54
+ type: 'richtext',
55
+ label,
56
+ // Puck richtext options
57
+ contentEditable,
58
+ initialHeight,
59
+ // Configure built-in extensions
60
+ // Note: Puck expects `false` to disable or config object to customize
61
+ // Omitting a key or setting to `undefined` means "use default" (enabled)
62
+ options: {
63
+ heading: { levels: headingLevels },
64
+ codeBlock: codeBlock ? undefined : false,
65
+ blockquote: blockquote ? undefined : false,
66
+ },
67
+ // Add our custom TipTap extensions
68
+ tiptap: {
69
+ extensions: customExtensions,
70
+ // Expose custom state for our controls
71
+ // Cast to any because Puck's types expect Record<string, boolean> but we need strings for colors/sizes
72
+ selector: ((ctx) => {
73
+ if (!ctx.editor) {
74
+ return {};
75
+ }
76
+ return {
77
+ // Text color state
78
+ currentColor: ctx.editor.getAttributes('textStyle').color,
79
+ // Highlight state
80
+ highlightColor: ctx.editor.getAttributes('highlight').color,
81
+ isHighlight: ctx.editor.isActive('highlight'),
82
+ // Font size state
83
+ currentFontSize: ctx.editor.getAttributes('textStyle').fontSize,
84
+ // Superscript/Subscript state
85
+ isSuperscript: ctx.editor.isActive('superscript'),
86
+ isSubscript: ctx.editor.isActive('subscript'),
87
+ canSuperscript: ctx.editor.can().toggleSuperscript(),
88
+ canSubscript: ctx.editor.can().toggleSubscript(),
89
+ };
90
+ }),
91
+ },
92
+ // Custom menu with our additional controls
93
+ // Using any types for Puck compatibility - our selector adds custom properties to editorState
94
+ renderMenu: ({ editor, editorState }) => {
95
+ // Guard against null editor/state during initialization
96
+ if (!editor || !editorState) {
97
+ return null;
98
+ }
99
+ return (_jsxs(RichTextMenu, { children: [_jsxs(RichTextMenu.Group, { children: [_jsx(RichTextMenu.Bold, {}), _jsx(RichTextMenu.Italic, {}), _jsx(RichTextMenu.Underline, {}), _jsx(RichTextMenu.Strikethrough, {}), superscript && (_jsx(RichTextMenu.Control, { icon: _jsx(SuperscriptIcon, { size: 16 }), title: "Superscript", active: editorState.isSuperscript, disabled: !editorState.canSuperscript, onClick: () => editor.chain().focus().toggleSuperscript().run() })), subscript && (_jsx(RichTextMenu.Control, { icon: _jsx(SubscriptIcon, { size: 16 }), title: "Subscript", active: editorState.isSubscript, disabled: !editorState.canSubscript, onClick: () => editor.chain().focus().toggleSubscript().run() }))] }), _jsxs(RichTextMenu.Group, { children: [_jsx(RichTextMenu.HeadingSelect, {}), _jsx(RichTextMenu.ListSelect, {}), _jsx(RichTextMenu.AlignSelect, {})] }), _jsxs(RichTextMenu.Group, { children: [fontSize && _jsx(FontSizeControl, { editor: editor, currentSize: editorState.currentFontSize }), textColor && _jsx(ColorPickerControl, { editor: editor, currentColor: editorState.currentColor }), highlight && (_jsx(HighlightControl, { editor: editor, currentColor: editorState.highlightColor, isActive: editorState.isHighlight }))] }), _jsxs(RichTextMenu.Group, { children: [blockquote && _jsx(RichTextMenu.Blockquote, {}), codeBlock && _jsx(RichTextMenu.CodeBlock, {}), _jsx(RichTextMenu.HorizontalRule, {})] })] }));
100
+ },
101
+ };
102
+ }
103
+ // =============================================================================
104
+ // Preset Configurations
105
+ // =============================================================================
106
+ /**
107
+ * Full-featured richtext field with all enhancements
108
+ */
109
+ export const fullRichTextField = createRichTextField({
110
+ contentEditable: true,
111
+ fontSize: true,
112
+ textColor: true,
113
+ highlight: true,
114
+ superscript: true,
115
+ subscript: true,
116
+ });
117
+ /**
118
+ * Minimal richtext field - structure only, no styling controls
119
+ */
120
+ export const minimalRichTextField = createRichTextField({
121
+ contentEditable: true,
122
+ fontSize: false,
123
+ textColor: false,
124
+ highlight: false,
125
+ superscript: false,
126
+ subscript: false,
127
+ headingLevels: [1, 2, 3],
128
+ });
129
+ /**
130
+ * Sidebar-only richtext field (no inline editing)
131
+ */
132
+ export const sidebarRichTextField = createRichTextField({
133
+ contentEditable: false,
134
+ initialHeight: 300,
135
+ fontSize: true,
136
+ textColor: true,
137
+ highlight: true,
138
+ });
139
+ //# sourceMappingURL=createRichTextField.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"createRichTextField.js","sourceRoot":"","sources":["../../../src/fields/richtext/createRichTextField.tsx"],"names":[],"mappings":"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"}