themelia-react-ui 2.0.5 → 2.0.6

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 (489) hide show
  1. package/CHANGELOG.md +76 -0
  2. package/MIGRATION.md +119 -0
  3. package/README.md +13 -6
  4. package/dist/{accordion-B9MHG0cT.js → accordion-0tQUZ20r.js} +7 -7
  5. package/dist/accordion-0tQUZ20r.js.map +1 -0
  6. package/dist/{action-menu-Dr8K-ghE.js → action-menu-C0gjzLyE.js} +7 -7
  7. package/dist/{action-menu-Dr8K-ghE.js.map → action-menu-C0gjzLyE.js.map} +1 -1
  8. package/dist/{ai-artifact-C58tQcBy.js → ai-artifact-CGGpQryR.js} +172 -157
  9. package/dist/ai-artifact-CGGpQryR.js.map +1 -0
  10. package/dist/{app-shell-B_IuNWOo.js → app-shell-EHuuRDGy.js} +5 -5
  11. package/dist/{app-shell-B_IuNWOo.js.map → app-shell-EHuuRDGy.js.map} +1 -1
  12. package/dist/{attachment-Dg_69lPS.js → attachment-BCpA4e7i.js} +8 -8
  13. package/dist/{attachment-Dg_69lPS.js.map → attachment-BCpA4e7i.js.map} +1 -1
  14. package/dist/{auth-DTkkshS8.js → auth-B0girIk_.js} +15 -15
  15. package/dist/auth-B0girIk_.js.map +1 -0
  16. package/dist/{avatar-CeZaFmNH.js → avatar-B9Jnp-T-.js} +3 -3
  17. package/dist/{avatar-CeZaFmNH.js.map → avatar-B9Jnp-T-.js.map} +1 -1
  18. package/dist/{badge-xIiV_E7f.js → badge-wWauMgAt.js} +3 -3
  19. package/dist/{badge-xIiV_E7f.js.map → badge-wWauMgAt.js.map} +1 -1
  20. package/dist/base/accordion.js +1 -1
  21. package/dist/base/action-menu.js +1 -1
  22. package/dist/base/attachment.js +1 -1
  23. package/dist/base/avatar.js +1 -1
  24. package/dist/base/badge.js +1 -1
  25. package/dist/base/batch-action-bar.js +1 -1
  26. package/dist/base/buttons.js +1 -1
  27. package/dist/base/cards.js +2 -2
  28. package/dist/base/carousel.js +3 -3
  29. package/dist/base/cascader.js +1 -1
  30. package/dist/base/chart.js +1 -1
  31. package/dist/base/choice-inputs.js +2 -2
  32. package/dist/base/code-block.js +1 -1
  33. package/dist/base/combobox.js +1 -1
  34. package/dist/base/command.js +1 -1
  35. package/dist/base/copyable.js +1 -1
  36. package/dist/base/date-pickers.js +2 -2
  37. package/dist/base/display.js +6 -6
  38. package/dist/base/feedback.js +4 -4
  39. package/dist/base/forms-numeric.js +1 -1
  40. package/dist/base/forms.js +2 -2
  41. package/dist/base/inline-edit.js +8 -8
  42. package/dist/base/item.js +1 -1
  43. package/dist/base/media-gallery.js +1 -1
  44. package/dist/base/metadata-list.js +1 -1
  45. package/dist/base/navigation.js +6 -6
  46. package/dist/base/popover-menu.js +1 -1
  47. package/dist/base/popover.js +1 -1
  48. package/dist/base/qr-code.js +1 -1
  49. package/dist/base/repeaters.js +195 -188
  50. package/dist/base/repeaters.js.map +1 -1
  51. package/dist/base/sheet.js +1 -1
  52. package/dist/base/sidebar.js +2 -2
  53. package/dist/base/signature-pad.js +7 -7
  54. package/dist/base/skeleton.js +1 -1
  55. package/dist/base/spinner.js +5 -5
  56. package/dist/base/spinner.js.map +1 -1
  57. package/dist/base/structure.js +1 -1
  58. package/dist/base/table.js +1 -1
  59. package/dist/base/text-inputs.js +2 -2
  60. package/dist/base/toaster.js +1 -1
  61. package/dist/base/tree.js +1 -1
  62. package/dist/base/upload-queue.js +1 -1
  63. package/dist/base/upload.js +3 -3
  64. package/dist/base/value-inputs.js +1 -1
  65. package/dist/{batch-action-bar-Cb8cuvyy.js → batch-action-bar-BoqWIIpV.js} +5 -5
  66. package/dist/{batch-action-bar-Cb8cuvyy.js.map → batch-action-bar-BoqWIIpV.js.map} +1 -1
  67. package/dist/blocks/admin.js +17 -17
  68. package/dist/blocks/ai.js +227 -221
  69. package/dist/blocks/ai.js.map +1 -1
  70. package/dist/blocks/analytics/usage-card.js +1 -1
  71. package/dist/blocks/analytics.js +424 -449
  72. package/dist/blocks/analytics.js.map +1 -1
  73. package/dist/blocks/collaboration.js +1 -1
  74. package/dist/blocks/commerce/receipt.js +1 -1
  75. package/dist/blocks/commerce.js +225 -220
  76. package/dist/blocks/commerce.js.map +1 -1
  77. package/dist/blocks/data-display.js +2 -2
  78. package/dist/blocks/onboarding.js +5 -5
  79. package/dist/blocks/planning.js +11 -11
  80. package/dist/blocks/timelines.js +1 -1
  81. package/dist/{breadcrumbs-J-K2kl4c.js → breadcrumbs-Bp9Ke7kd.js} +4 -4
  82. package/dist/breadcrumbs-Bp9Ke7kd.js.map +1 -0
  83. package/dist/{button-S2Cubiiz.js → button-ChBovTx0.js} +2 -2
  84. package/dist/{button-S2Cubiiz.js.map → button-ChBovTx0.js.map} +1 -1
  85. package/dist/{buttons-BedGfygC.js → buttons-DeW0bQeK.js} +6 -6
  86. package/dist/{buttons-BedGfygC.js.map → buttons-DeW0bQeK.js.map} +1 -1
  87. package/dist/{cards-rNX1M4Xn.js → cards-CNXnmvV5.js} +8 -8
  88. package/dist/{cards-rNX1M4Xn.js.map → cards-CNXnmvV5.js.map} +1 -1
  89. package/dist/{cascader-B1MiqkBq.js → cascader-CrAl9zD5.js} +15 -15
  90. package/dist/{cascader-B1MiqkBq.js.map → cascader-CrAl9zD5.js.map} +1 -1
  91. package/dist/{chart-Darg_0Kv.js → chart-I7ROnsl8.js} +5 -5
  92. package/dist/{chart-Darg_0Kv.js.map → chart-I7ROnsl8.js.map} +1 -1
  93. package/dist/{checkbox-fflqmODR.js → checkbox-MoyHIAPs.js} +3 -3
  94. package/dist/{checkbox-fflqmODR.js.map → checkbox-MoyHIAPs.js.map} +1 -1
  95. package/dist/{choice-inputs-zUgBZfE4.js → choice-inputs-DHGtx0QV.js} +122 -110
  96. package/dist/choice-inputs-DHGtx0QV.js.map +1 -0
  97. package/dist/{code-block-BzmM9Eig.js → code-block-BSJyq9e-.js} +7 -7
  98. package/dist/{code-block-BzmM9Eig.js.map → code-block-BSJyq9e-.js.map} +1 -1
  99. package/dist/{collapsible-BkAI_XD4.js → collapsible-BzJ91LUG.js} +3 -3
  100. package/dist/{collapsible-BkAI_XD4.js.map → collapsible-BzJ91LUG.js.map} +1 -1
  101. package/dist/{collection-content-gDh1v6O4.js → collection-content-CSnwtOTH.js} +3 -3
  102. package/dist/{collection-content-gDh1v6O4.js.map → collection-content-CSnwtOTH.js.map} +1 -1
  103. package/dist/{combobox-BEx0vJgF.js → combobox-Bcvu5J8O.js} +11 -10
  104. package/dist/{combobox-BEx0vJgF.js.map → combobox-Bcvu5J8O.js.map} +1 -1
  105. package/dist/combobox-C2JiSQPc.js +915 -0
  106. package/dist/combobox-C2JiSQPc.js.map +1 -0
  107. package/dist/{command-CrlPIL6m.js → command-9e52NPgK.js} +6 -6
  108. package/dist/{command-CrlPIL6m.js.map → command-9e52NPgK.js.map} +1 -1
  109. package/dist/{comments-Dmpp0YIc.js → comments-BsgErEqd.js} +33 -28
  110. package/dist/comments-BsgErEqd.js.map +1 -0
  111. package/dist/components/base/choice-inputs/choice-types.d.ts +4 -0
  112. package/dist/components/base/choice-inputs/pill-radio-group.d.ts +7 -6
  113. package/dist/components/base/combobox/combobox-field.d.ts +2 -2
  114. package/dist/components/base/date-pickers/date-picker-internals.d.ts +3 -1
  115. package/dist/components/base/date-pickers/datepicker.types.d.ts +10 -4
  116. package/dist/components/base/date-pickers/time-picker.d.ts +17 -3
  117. package/dist/components/base/feedback/state-display.d.ts +5 -1
  118. package/dist/components/base/feedback/state-display.strings.d.ts +9 -0
  119. package/dist/components/base/forms/form-field.d.ts +7 -2
  120. package/dist/components/base/forms-numeric/coordinates-input.d.ts +4 -1
  121. package/dist/components/base/forms-numeric/decimal-input.d.ts +2 -2
  122. package/dist/components/base/forms-numeric/dimensions-input.d.ts +4 -1
  123. package/dist/components/base/forms-numeric/numeric-composite-field.d.ts +12 -0
  124. package/dist/components/base/forms-numeric/weight-input.d.ts +6 -1
  125. package/dist/components/base/navigation/language-switcher.d.ts +12 -4
  126. package/dist/components/base/repeaters/key-value-editor.d.ts +2 -1
  127. package/dist/components/base/sidebar/sidebar.d.ts +2 -0
  128. package/dist/components/base/upload/avatar-upload.d.ts +2 -1
  129. package/dist/components/base/upload/image-upload.d.ts +2 -1
  130. package/dist/components/blocks/ai/ai-citation/types.d.ts +2 -0
  131. package/dist/components/blocks/ai/ai-reasoning/types.d.ts +2 -0
  132. package/dist/components/blocks/ai/ai-sources/types.d.ts +2 -0
  133. package/dist/components/blocks/ai/ai-tool-call/types.d.ts +2 -0
  134. package/dist/components/blocks/analytics/metric/metric.d.ts +4 -0
  135. package/dist/components/blocks/analytics/metric-comparison/metric-comparison.d.ts +2 -0
  136. package/dist/components/blocks/analytics/metric-grid/metric-grid.d.ts +4 -5
  137. package/dist/components/blocks/analytics/types.d.ts +2 -2
  138. package/dist/components/blocks/commerce/order-status/types.d.ts +4 -0
  139. package/dist/components/blocks/data-display/empty-state/empty-state.types.d.ts +4 -3
  140. package/dist/components/features/activities/activities.types.d.ts +18 -11
  141. package/dist/components/features/activities/hooks/use-activity-resources.d.ts +2 -1
  142. package/dist/components/features/ai-chat/hooks/use-ai-chat-scroll.d.ts +1 -1
  143. package/dist/components/features/appointment-calendar/appointment-calendar.d.ts +1 -1
  144. package/dist/components/features/appointment-calendar/appointment-calendar.types.d.ts +4 -2
  145. package/dist/components/features/combobox/async-resource-combobox.d.ts +2 -2
  146. package/dist/components/features/combobox/combobox.d.ts +2 -2
  147. package/dist/components/features/combobox/hooks/use-combobox-core.d.ts +2 -1
  148. package/dist/components/features/combobox/hooks/use-combobox-state.d.ts +1 -0
  149. package/dist/components/features/combobox/hooks/use-load-more.d.ts +1 -0
  150. package/dist/components/features/combobox/types.d.ts +37 -8
  151. package/dist/components/features/email-composer/types.d.ts +3 -1
  152. package/dist/components/features/filters/facets/date-facet.d.ts +4 -2
  153. package/dist/components/features/filters/facets/range-facet.d.ts +12 -0
  154. package/dist/components/features/filters/filters.types.d.ts +3 -3
  155. package/dist/components/features/filters/partials/date-filter-content.d.ts +3 -2
  156. package/dist/components/features/filters/partials/filter-popover-content.d.ts +4 -2
  157. package/dist/components/features/filters/partials/range-filter-content.d.ts +12 -0
  158. package/dist/components/features/filters/utils/filter-utils.d.ts +5 -1
  159. package/dist/components/features/media-library/hooks/use-media-library.d.ts +1 -1
  160. package/dist/components/features/media-library/media-library.d.ts +1 -1
  161. package/dist/components/features/media-library/media-library.strings.d.ts +6 -0
  162. package/dist/components/features/media-library/media-library.types.d.ts +36 -8
  163. package/dist/components/features/media-library/partials/media-library-partials.d.ts +3 -3
  164. package/dist/components/features/mentions/hooks/use-mentions.d.ts +16 -1
  165. package/dist/components/features/mentions/partials/mention-inline-suggestions.d.ts +5 -1
  166. package/dist/components/features/mentions/utils/split-html-by-mentions.d.ts +1 -7
  167. package/dist/components/features/overlays/hooks/use-overlay-visibility.d.ts +2 -2
  168. package/dist/components/features/products/products.types.d.ts +2 -2
  169. package/dist/components/features/questionnaire/questionnaire.types.d.ts +3 -0
  170. package/dist/components/features/resource/resource.d.ts +1 -1
  171. package/dist/components/features/resource/resource.types.d.ts +2 -0
  172. package/dist/components/features/rich-text-editor/form-rich-text-editor.d.ts +1 -1
  173. package/dist/components/features/rich-text-editor/partials/caret-helpers.d.ts +1 -1
  174. package/dist/components/features/rich-text-editor/partials/editor-field-aria.d.ts +14 -0
  175. package/dist/components/features/rich-text-editor/partials/rich-text-editor-toolbar.d.ts +3 -1
  176. package/dist/components/features/rich-text-editor/rich-text-editor.recipes.d.ts +1 -1
  177. package/dist/components/features/rich-text-editor/rich-text-editor.types.d.ts +17 -3
  178. package/dist/components/features/schema-form/hooks/use-schema-form.d.ts +5 -1
  179. package/dist/components/features/schema-form/partials/schema-form-field.d.ts +3 -1
  180. package/dist/components/features/schema-form/schema-form.utils.d.ts +1 -1
  181. package/dist/components/features/suggestions/suggestions.types.d.ts +1 -1
  182. package/dist/components/features/table/data-table.d.ts +1 -1
  183. package/dist/components/features/table/index.d.ts +1 -0
  184. package/dist/components/features/table/table-body.d.ts +1 -1
  185. package/dist/components/features/table/table-helpers.d.ts +6 -3
  186. package/dist/components/features/table/table.strings.d.ts +3 -0
  187. package/dist/components/features/table/table.types.d.ts +17 -1
  188. package/dist/components/layout/header/header.types.d.ts +3 -2
  189. package/dist/components/layout/layout.types.d.ts +5 -3
  190. package/dist/components/layout/navigation/side-nav.d.ts +3 -2
  191. package/dist/components/layout/normalize-layout-path.d.ts +1 -0
  192. package/dist/components/layout/settings/settings.d.ts +1 -1
  193. package/dist/components/layout/sidebar/app-sidebar.d.ts +1 -1
  194. package/dist/components/layout/sidebar/sidebar-navigation-rail.d.ts +3 -1
  195. package/dist/components/layout/sidebar/sidebar.context.d.ts +1 -0
  196. package/dist/components/layout/sidebar/sidebar.types.d.ts +2 -0
  197. package/dist/components/primitives/link.d.ts +3 -2
  198. package/dist/components/primitives/money.d.ts +1 -1
  199. package/dist/components/primitives/number.d.ts +1 -1
  200. package/dist/components/typography/rich-text/rich-text-tree.d.ts +7 -5
  201. package/dist/{containers-CIxwbZt5.js → containers-CSdc32h9.js} +2 -2
  202. package/dist/{containers-CIxwbZt5.js.map → containers-CSdc32h9.js.map} +1 -1
  203. package/dist/{copyable-DIznBqiT.js → copyable-3fdHfMR3.js} +4 -4
  204. package/dist/{copyable-DIznBqiT.js.map → copyable-3fdHfMR3.js.map} +1 -1
  205. package/dist/{data-display-BdgCAw8T.js → data-display-Cmj-xZYl.js} +16 -15
  206. package/dist/data-display-Cmj-xZYl.js.map +1 -0
  207. package/dist/{date-Cq8ioE4o.js → date-Br0FicVv.js} +4 -4
  208. package/dist/{date-Cq8ioE4o.js.map → date-Br0FicVv.js.map} +1 -1
  209. package/dist/date-picker-CyQlFYsP.js +1617 -0
  210. package/dist/date-picker-CyQlFYsP.js.map +1 -0
  211. package/dist/date-pickers-tj2MXmXd.js +185 -0
  212. package/dist/date-pickers-tj2MXmXd.js.map +1 -0
  213. package/dist/{display-KsZLw9Ov.js → display-CT_N2a3w.js} +7 -7
  214. package/dist/{display-KsZLw9Ov.js.map → display-CT_N2a3w.js.map} +1 -1
  215. package/dist/{dropdown-menu-CLs8Lihj.js → dropdown-menu-C08iIugv.js} +6 -6
  216. package/dist/{dropdown-menu-CLs8Lihj.js.map → dropdown-menu-C08iIugv.js.map} +1 -1
  217. package/dist/features/activities.js +283 -270
  218. package/dist/features/activities.js.map +1 -1
  219. package/dist/features/ai-chat.js +40 -27
  220. package/dist/features/ai-chat.js.map +1 -1
  221. package/dist/features/appointment-calendar.js +126 -126
  222. package/dist/features/appointment-calendar.js.map +1 -1
  223. package/dist/features/async-preview.js +9 -9
  224. package/dist/features/combobox.js +1 -1
  225. package/dist/features/comments.js +1 -1
  226. package/dist/features/data-view.js +10 -10
  227. package/dist/features/email-composer.js +24 -19
  228. package/dist/features/email-composer.js.map +1 -1
  229. package/dist/features/event-calendar.js +129 -125
  230. package/dist/features/event-calendar.js.map +1 -1
  231. package/dist/features/filters.js +2 -2
  232. package/dist/features/global-search.js +16 -20
  233. package/dist/features/global-search.js.map +1 -1
  234. package/dist/features/kanban.js +18 -28
  235. package/dist/features/kanban.js.map +1 -1
  236. package/dist/features/map/style.css +15 -0
  237. package/dist/features/map.js +331 -314
  238. package/dist/features/map.js.map +1 -1
  239. package/dist/features/media-library.js +1044 -866
  240. package/dist/features/media-library.js.map +1 -1
  241. package/dist/features/mentions.js +2 -2
  242. package/dist/features/overlays.js +1 -1
  243. package/dist/features/products.js +978 -964
  244. package/dist/features/products.js.map +1 -1
  245. package/dist/features/questionnaire.js +159 -152
  246. package/dist/features/questionnaire.js.map +1 -1
  247. package/dist/features/resource-assignment.js +8 -8
  248. package/dist/features/resource.js +74 -71
  249. package/dist/features/resource.js.map +1 -1
  250. package/dist/features/rich-text-editor.js +28 -19
  251. package/dist/features/rich-text-editor.js.map +1 -1
  252. package/dist/features/schema-form.js +297 -256
  253. package/dist/features/schema-form.js.map +1 -1
  254. package/dist/features/suggestions.js +57 -50
  255. package/dist/features/suggestions.js.map +1 -1
  256. package/dist/features/sync.js +3 -3
  257. package/dist/features/table.js +1 -1
  258. package/dist/features/theme-tweaker.js +400 -399
  259. package/dist/features/theme-tweaker.js.map +1 -1
  260. package/dist/feedback-Dzo1xtAU.js +246 -0
  261. package/dist/feedback-Dzo1xtAU.js.map +1 -0
  262. package/dist/{field-affordance-recipes-DWcNcOjh.js → field-affordance-recipes-D6H7tVJi.js} +2 -2
  263. package/dist/{field-affordance-recipes-DWcNcOjh.js.map → field-affordance-recipes-D6H7tVJi.js.map} +1 -1
  264. package/dist/field-control-attributes-B6i335wr.js +18 -0
  265. package/dist/field-control-attributes-B6i335wr.js.map +1 -0
  266. package/dist/{field-state-recipes-BVA2CWHo.js → field-state-recipes-7sza8QbC.js} +4 -2
  267. package/dist/{field-state-recipes-BVA2CWHo.js.map → field-state-recipes-7sza8QbC.js.map} +1 -1
  268. package/dist/{filters-DzgSJpMK.js → filters-Dl80yYtN.js} +763 -605
  269. package/dist/filters-Dl80yYtN.js.map +1 -0
  270. package/dist/form-field-CAPdwdnZ.js +74 -0
  271. package/dist/form-field-CAPdwdnZ.js.map +1 -0
  272. package/dist/{form-sizing-Bs2qFUeE.js → form-sizing-CgcrUbLU.js} +2 -2
  273. package/dist/{form-sizing-Bs2qFUeE.js.map → form-sizing-CgcrUbLU.js.map} +1 -1
  274. package/dist/{forms-C0RGnJTe.js → forms-B3W8CH7-.js} +8 -8
  275. package/dist/{forms-C0RGnJTe.js.map → forms-B3W8CH7-.js.map} +1 -1
  276. package/dist/forms-numeric-CwjQJe-O.js +991 -0
  277. package/dist/forms-numeric-CwjQJe-O.js.map +1 -0
  278. package/dist/{header-DMMxG__r.js → header-ZIIsRKxP.js} +113 -113
  279. package/dist/header-ZIIsRKxP.js.map +1 -0
  280. package/dist/hooks/use-files.d.ts +2 -0
  281. package/dist/{hooks-DB6CJ4MR.js → hooks-BitHSh-Y.js} +3 -3
  282. package/dist/{hooks-DB6CJ4MR.js.map → hooks-BitHSh-Y.js.map} +1 -1
  283. package/dist/{icon-badge-DZF-YjQp.js → icon-badge-npxF1SLX.js} +2 -2
  284. package/dist/{icon-badge-DZF-YjQp.js.map → icon-badge-npxF1SLX.js.map} +1 -1
  285. package/dist/index.js +1 -1
  286. package/dist/{input-CvyDQlY7.js → input-7KAc7XQL.js} +6 -6
  287. package/dist/{input-CvyDQlY7.js.map → input-7KAc7XQL.js.map} +1 -1
  288. package/dist/{input-DMBwAZmr.js → input-DIREVYHs.js} +3 -3
  289. package/dist/{input-DMBwAZmr.js.map → input-DIREVYHs.js.map} +1 -1
  290. package/dist/{interaction-recipes-XR9ZpVYL.js → interaction-recipes-4wZ2tvfb.js} +2 -2
  291. package/dist/{interaction-recipes-XR9ZpVYL.js.map → interaction-recipes-4wZ2tvfb.js.map} +1 -1
  292. package/dist/{item-DjCcM18E.js → item-FfWnaYST.js} +99 -98
  293. package/dist/item-FfWnaYST.js.map +1 -0
  294. package/dist/layout/app-shell.js +1 -1
  295. package/dist/layout/auth.js +1 -1
  296. package/dist/layout/containers.js +1 -1
  297. package/dist/layout/header.js +1 -1
  298. package/dist/layout/hooks.js +1 -1
  299. package/dist/layout/navigation.js +1 -1
  300. package/dist/layout/page.js +1 -1
  301. package/dist/layout/settings.js +1 -1
  302. package/dist/layout/sidebar.js +2 -2
  303. package/dist/layout/workspace.js +1 -1
  304. package/dist/layout.js +11 -11
  305. package/dist/layout.types-E_GAApzO.js +30 -0
  306. package/dist/layout.types-E_GAApzO.js.map +1 -0
  307. package/dist/lib/field-control-attributes.d.ts +11 -0
  308. package/dist/lib/field-state-recipes.d.ts +2 -0
  309. package/dist/lib/format.d.ts +1 -0
  310. package/dist/lib/surface-recipes.d.ts +1 -1
  311. package/dist/lib/token-merge.generated.d.ts +6 -6
  312. package/dist/lib/utils.js +1 -1
  313. package/dist/{media-gallery-C-vChPmE.js → media-gallery-C81DAnKI.js} +6 -6
  314. package/dist/{media-gallery-C-vChPmE.js.map → media-gallery-C81DAnKI.js.map} +1 -1
  315. package/dist/{mentions-0_4nWuI-.js → mentions-qOnedSt4.js} +236 -167
  316. package/dist/mentions-qOnedSt4.js.map +1 -0
  317. package/dist/message-BJHnn43M.js +135 -0
  318. package/dist/message-BJHnn43M.js.map +1 -0
  319. package/dist/{metadata-list-C3MkU-Om.js → metadata-list-XkqZ_UXH.js} +11 -11
  320. package/dist/{metadata-list-C3MkU-Om.js.map → metadata-list-XkqZ_UXH.js.map} +1 -1
  321. package/dist/{navigation-DaRjthVk.js → navigation-BgtPJAhi.js} +119 -119
  322. package/dist/navigation-BgtPJAhi.js.map +1 -0
  323. package/dist/{navigation-C90-oQFq.js → navigation-Bt-v7rWP.js} +52 -46
  324. package/dist/navigation-Bt-v7rWP.js.map +1 -0
  325. package/dist/normalize-layout-path-BmEgg6fu.js +14 -0
  326. package/dist/normalize-layout-path-BmEgg6fu.js.map +1 -0
  327. package/dist/{number-CRU3kGuk.js → number-CYqBcrSj.js} +78 -86
  328. package/dist/number-CYqBcrSj.js.map +1 -0
  329. package/dist/{overflow-tab-bar-IVFVQFV6.js → overflow-tab-bar-BQCA2Zn2.js} +7 -7
  330. package/dist/{overflow-tab-bar-IVFVQFV6.js.map → overflow-tab-bar-BQCA2Zn2.js.map} +1 -1
  331. package/dist/{overlays-BSgCtM2v.js → overlays-CC8zI3Du.js} +264 -260
  332. package/dist/overlays-CC8zI3Du.js.map +1 -0
  333. package/dist/{page-DUUKDAjo.js → page-BoQ1VaFJ.js} +13 -13
  334. package/dist/{page-DUUKDAjo.js.map → page-BoQ1VaFJ.js.map} +1 -1
  335. package/dist/{page-header-commands-7P3sfE9u.js → page-header-commands-DIKspJfx.js} +4 -4
  336. package/dist/{page-header-commands-7P3sfE9u.js.map → page-header-commands-DIKspJfx.js.map} +1 -1
  337. package/dist/{pagination-CgCjElfu.js → pagination-Br8TdV9A.js} +4 -4
  338. package/dist/{pagination-CgCjElfu.js.map → pagination-Br8TdV9A.js.map} +1 -1
  339. package/dist/{popover-B85RenIl.js → popover-k8TdUcAt.js} +10 -10
  340. package/dist/popover-k8TdUcAt.js.map +1 -0
  341. package/dist/{popover-menu-DlnQ2zlR.js → popover-menu-yn-o0kyA.js} +7 -7
  342. package/dist/{popover-menu-DlnQ2zlR.js.map → popover-menu-yn-o0kyA.js.map} +1 -1
  343. package/dist/{popover.recipes-DdiEp0rd.js → popover.recipes-DJ0AkUan.js} +2 -2
  344. package/dist/{popover.recipes-DdiEp0rd.js.map → popover.recipes-DJ0AkUan.js.map} +1 -1
  345. package/dist/{portal-recipes-BpsV_iRw.js → portal-recipes-DyUXqUtD.js} +2 -2
  346. package/dist/{portal-recipes-BpsV_iRw.js.map → portal-recipes-DyUXqUtD.js.map} +1 -1
  347. package/dist/{primitives-ByWgGUgt.js → primitives-BkkQjYl7.js} +22 -17
  348. package/dist/primitives-BkkQjYl7.js.map +1 -0
  349. package/dist/primitives.js +4 -4
  350. package/dist/{progress-BJhQP9WX.js → progress-DZFXXzPs.js} +4 -4
  351. package/dist/{progress-BJhQP9WX.js.map → progress-DZFXXzPs.js.map} +1 -1
  352. package/dist/{receipt-tOc7B3hw.js → receipt-C7LhOg7Q.js} +6 -6
  353. package/dist/{receipt-tOc7B3hw.js.map → receipt-C7LhOg7Q.js.map} +1 -1
  354. package/dist/rich-text-BnTzZjIo.js +45 -0
  355. package/dist/rich-text-BnTzZjIo.js.map +1 -0
  356. package/dist/rich-text-editor-CAurDwT5.js +1273 -0
  357. package/dist/rich-text-editor-CAurDwT5.js.map +1 -0
  358. package/dist/{rich-text-editor-toolbar-laT3tpBT.js → rich-text-editor-toolbar-DbXig7Jk.js} +36 -35
  359. package/dist/rich-text-editor-toolbar-DbXig7Jk.js.map +1 -0
  360. package/dist/rich-text-tree-BqyQ_7-R.js +66 -0
  361. package/dist/rich-text-tree-BqyQ_7-R.js.map +1 -0
  362. package/dist/{sanitize-html-DsQmI48u.js → sanitize-html-BWkH4dLM.js} +29 -16
  363. package/dist/sanitize-html-BWkH4dLM.js.map +1 -0
  364. package/dist/{scroll-area-B0dB2cBi.js → scroll-area-Bj6CRUif.js} +2 -2
  365. package/dist/{scroll-area-B0dB2cBi.js.map → scroll-area-Bj6CRUif.js.map} +1 -1
  366. package/dist/{separator-Bb17I4pu.js → separator-B9ewiCGO.js} +2 -2
  367. package/dist/{separator-Bb17I4pu.js.map → separator-B9ewiCGO.js.map} +1 -1
  368. package/dist/{separator-Ct_WSWTJ.js → separator-DM6gs2vu.js} +3 -3
  369. package/dist/{separator-Ct_WSWTJ.js.map → separator-DM6gs2vu.js.map} +1 -1
  370. package/dist/services/actions.js +1 -1
  371. package/dist/settings-DZPHgpx4.js +155 -0
  372. package/dist/settings-DZPHgpx4.js.map +1 -0
  373. package/dist/{sheet-BGPERY55.js → sheet-C4DHsgLk.js} +6 -6
  374. package/dist/{sheet-BGPERY55.js.map → sheet-C4DHsgLk.js.map} +1 -1
  375. package/dist/sidebar-C8BnDwTH.js +709 -0
  376. package/dist/sidebar-C8BnDwTH.js.map +1 -0
  377. package/dist/{sidebar-f9gRWXIR.js → sidebar-CmD6a-HK.js} +16 -13
  378. package/dist/sidebar-CmD6a-HK.js.map +1 -0
  379. package/dist/{skeleton-BapcJd9C.js → skeleton-DDgdhmu9.js} +5 -5
  380. package/dist/{skeleton-BapcJd9C.js.map → skeleton-DDgdhmu9.js.map} +1 -1
  381. package/dist/{smart-card-CW0hjetE.js → smart-card-B6vLxqa_.js} +8 -8
  382. package/dist/{smart-card-CW0hjetE.js.map → smart-card-B6vLxqa_.js.map} +1 -1
  383. package/dist/{structure-DuxKl954.js → structure-DZJ2wbAU.js} +2 -2
  384. package/dist/{structure-DuxKl954.js.map → structure-DZJ2wbAU.js.map} +1 -1
  385. package/dist/style.css +1 -1
  386. package/dist/{surface-recipes-BKRVW8Os.js → surface-recipes-C8mNycaY.js} +2 -2
  387. package/dist/{surface-recipes-BKRVW8Os.js.map → surface-recipes-C8mNycaY.js.map} +1 -1
  388. package/dist/{table-CFOWY9pQ.js → table-CBonSdTp.js} +534 -486
  389. package/dist/table-CBonSdTp.js.map +1 -0
  390. package/dist/{table-B4TE7iOV.js → table-CXSPHH25.js} +75 -71
  391. package/dist/table-CXSPHH25.js.map +1 -0
  392. package/dist/{tabs-e7ko9S2o.js → tabs-C4Kr_hCr.js} +50 -49
  393. package/dist/tabs-C4Kr_hCr.js.map +1 -0
  394. package/dist/{text-inputs-B1culiSK.js → text-inputs-jdkS3ReG.js} +9 -9
  395. package/dist/{text-inputs-B1culiSK.js.map → text-inputs-jdkS3ReG.js.map} +1 -1
  396. package/dist/{timelines-D3Sl9ueq.js → timelines-CoPwdJP0.js} +10 -10
  397. package/dist/{timelines-D3Sl9ueq.js.map → timelines-CoPwdJP0.js.map} +1 -1
  398. package/dist/{tooltip-8wz5S_Zr.js → tooltip-31NwIpTo.js} +4 -4
  399. package/dist/{tooltip-8wz5S_Zr.js.map → tooltip-31NwIpTo.js.map} +1 -1
  400. package/dist/{tree-CzUJHnFs.js → tree-CeYVzdFE.js} +6 -6
  401. package/dist/{tree-CzUJHnFs.js.map → tree-CeYVzdFE.js.map} +1 -1
  402. package/dist/typography/rich-text.js +1 -1
  403. package/dist/{typography-BQnine1k.js → typography-C7-YMW1S.js} +2 -2
  404. package/dist/{typography-BQnine1k.js.map → typography-C7-YMW1S.js.map} +1 -1
  405. package/dist/typography.js +1 -1
  406. package/dist/{upload-BOW6U2tI.js → upload-Hdm5gObf.js} +303 -291
  407. package/dist/upload-Hdm5gObf.js.map +1 -0
  408. package/dist/{upload-queue-qUXn1ykN.js → upload-queue-D0sYPuqo.js} +8 -8
  409. package/dist/{upload-queue-qUXn1ykN.js.map → upload-queue-D0sYPuqo.js.map} +1 -1
  410. package/dist/{usage-card-BeSLY0i0.js → usage-card-9s8hLDfn.js} +9 -9
  411. package/dist/{usage-card-BeSLY0i0.js.map → usage-card-9s8hLDfn.js.map} +1 -1
  412. package/dist/{utils-B6kKb8jB.js → utils-DhuoqFy4.js} +31 -37
  413. package/dist/utils-DhuoqFy4.js.map +1 -0
  414. package/dist/{value-inputs-skdVB2zh.js → value-inputs-D3aPgq9H.js} +15 -15
  415. package/dist/{value-inputs-skdVB2zh.js.map → value-inputs-D3aPgq9H.js.map} +1 -1
  416. package/dist/{value-typography-uAmWUAL1.js → value-typography-uSzzG9Gf.js} +32 -26
  417. package/dist/value-typography-uSzzG9Gf.js.map +1 -0
  418. package/dist/{workspace-DHeHv0qw.js → workspace-CC8Vchiu.js} +12 -12
  419. package/dist/{workspace-DHeHv0qw.js.map → workspace-CC8Vchiu.js.map} +1 -1
  420. package/docs/consumer-skill/examples/edit.tsx +3 -3
  421. package/docs/consumer-skill/references/agents-md.md +19 -19
  422. package/docs/consumer-skill/references/analytics.md +15 -0
  423. package/docs/consumer-skill/references/component-contracts.json +14724 -13057
  424. package/docs/consumer-skill/references/composition.md +21 -4
  425. package/docs/consumer-skill/references/design-contract.md +1 -0
  426. package/docs/consumer-skill/references/installation.md +51 -8
  427. package/docs/consumer-skill/references/integration.md +24 -1
  428. package/docs/consumer-skill/references/public-api.json +172 -34
  429. package/docs/consumer-skill/references/review.md +51 -11
  430. package/docs/consumer-skill/references/rhf-workflows.md +72 -0
  431. package/docs/consumer-skill/references/theming.md +7 -2
  432. package/docs/consumer-skill/references/tokens.json +1 -1
  433. package/docs/consumer-skill/scripts/composition-policy.mjs +144 -30
  434. package/docs/consumer-skill/scripts/setup-skills.mjs +46 -9
  435. package/package.json +4 -2
  436. package/templates/admin-shell-template.tsx +1 -2
  437. package/templates/customers-template.tsx +18 -16
  438. package/dist/accordion-B9MHG0cT.js.map +0 -1
  439. package/dist/ai-artifact-C58tQcBy.js.map +0 -1
  440. package/dist/auth-DTkkshS8.js.map +0 -1
  441. package/dist/breadcrumbs-J-K2kl4c.js.map +0 -1
  442. package/dist/choice-inputs-zUgBZfE4.js.map +0 -1
  443. package/dist/combobox-BwzoXFSG.js +0 -884
  444. package/dist/combobox-BwzoXFSG.js.map +0 -1
  445. package/dist/comments-Dmpp0YIc.js.map +0 -1
  446. package/dist/data-display-BdgCAw8T.js.map +0 -1
  447. package/dist/date-picker-RlIzKom_.js +0 -1551
  448. package/dist/date-picker-RlIzKom_.js.map +0 -1
  449. package/dist/date-pickers-DY-CpXS1.js +0 -179
  450. package/dist/date-pickers-DY-CpXS1.js.map +0 -1
  451. package/dist/feedback-Dm4izqFn.js +0 -240
  452. package/dist/feedback-Dm4izqFn.js.map +0 -1
  453. package/dist/filters-DzgSJpMK.js.map +0 -1
  454. package/dist/form-field-BriWAXyg.js +0 -63
  455. package/dist/form-field-BriWAXyg.js.map +0 -1
  456. package/dist/forms-numeric-DIhghX1Q.js +0 -910
  457. package/dist/forms-numeric-DIhghX1Q.js.map +0 -1
  458. package/dist/header-DMMxG__r.js.map +0 -1
  459. package/dist/item-DjCcM18E.js.map +0 -1
  460. package/dist/layout.types-Cn7aUzJp.js +0 -20
  461. package/dist/layout.types-Cn7aUzJp.js.map +0 -1
  462. package/dist/mentions-0_4nWuI-.js.map +0 -1
  463. package/dist/message-g8p7eVtN.js +0 -128
  464. package/dist/message-g8p7eVtN.js.map +0 -1
  465. package/dist/navigation-C90-oQFq.js.map +0 -1
  466. package/dist/navigation-DaRjthVk.js.map +0 -1
  467. package/dist/number-CRU3kGuk.js.map +0 -1
  468. package/dist/overlays-BSgCtM2v.js.map +0 -1
  469. package/dist/popover-B85RenIl.js.map +0 -1
  470. package/dist/primitives-ByWgGUgt.js.map +0 -1
  471. package/dist/rich-text-Dth5E882.js +0 -78
  472. package/dist/rich-text-Dth5E882.js.map +0 -1
  473. package/dist/rich-text-editor-C1fOjBTd.js +0 -1195
  474. package/dist/rich-text-editor-C1fOjBTd.js.map +0 -1
  475. package/dist/rich-text-editor-toolbar-laT3tpBT.js.map +0 -1
  476. package/dist/safe-image-src-C6kQSMBZ.js +0 -17
  477. package/dist/safe-image-src-C6kQSMBZ.js.map +0 -1
  478. package/dist/sanitize-html-DsQmI48u.js.map +0 -1
  479. package/dist/settings-Bar5wiSo.js +0 -167
  480. package/dist/settings-Bar5wiSo.js.map +0 -1
  481. package/dist/sidebar-D-JYMMbY.js +0 -686
  482. package/dist/sidebar-D-JYMMbY.js.map +0 -1
  483. package/dist/sidebar-f9gRWXIR.js.map +0 -1
  484. package/dist/table-B4TE7iOV.js.map +0 -1
  485. package/dist/table-CFOWY9pQ.js.map +0 -1
  486. package/dist/tabs-e7ko9S2o.js.map +0 -1
  487. package/dist/upload-BOW6U2tI.js.map +0 -1
  488. package/dist/utils-B6kKb8jB.js.map +0 -1
  489. package/dist/value-typography-uAmWUAL1.js.map +0 -1
@@ -0,0 +1,1273 @@
1
+ "use client";
2
+ import { interpolateString as e, useStrings as t } from "./lib/strings.js";
3
+ import { t as n } from "./utils-DhuoqFy4.js";
4
+ import { n as r } from "./buttons-DeW0bQeK.js";
5
+ import { c as i } from "./typography-C7-YMW1S.js";
6
+ import { t as a } from "./structure-DZJ2wbAU.js";
7
+ import { r as o, t as s } from "./sanitize-html-BWkH4dLM.js";
8
+ import { g as c } from "./primitives-BkkQjYl7.js";
9
+ import { t as l } from "./number-CYqBcrSj.js";
10
+ import { t as u } from "./input-7KAc7XQL.js";
11
+ import { t as d } from "./form-field-CAPdwdnZ.js";
12
+ import { n as ee } from "./field-control-attributes-B6i335wr.js";
13
+ import { n as f, t as te } from "./rich-text-editor-toolbar-DbXig7Jk.js";
14
+ import { t as ne } from "./rich-text-editor.strings-CB59ekH2.js";
15
+ import { forwardRef as p, useCallback as m, useEffect as h, useId as re, useImperativeHandle as ie, useLayoutEffect as ae, useMemo as g, useRef as _, useState as v } from "react";
16
+ import { Fragment as y, jsx as b, jsxs as x } from "react/jsx-runtime";
17
+ import { AlertCircle as S, Bold as oe, ImagePlus as C, Italic as se, List as ce, ListOrdered as le, Loader2 as ue, Quote as de, Redo2 as fe, Strikethrough as pe, Undo2 as me } from "lucide-react";
18
+ import { createPortal as he } from "react-dom";
19
+ import * as w from "@tiptap/react";
20
+ import * as T from "@tiptap/starter-kit";
21
+ //#region src/components/features/rich-text-editor/partials/caret-helpers.ts
22
+ function ge() {
23
+ if (typeof window > "u") return null;
24
+ let e = window.getSelection();
25
+ if (!e || e.rangeCount === 0) return null;
26
+ let t = e.getRangeAt(0);
27
+ if (!t.collapsed) return null;
28
+ let n = t.startContainer, r = t.startOffset, i = n;
29
+ for (; i && i.nodeType !== Node.ELEMENT_NODE;) i = i.parentNode;
30
+ if (!i) return null;
31
+ let a = i.closest("[contenteditable=\"true\"]") ?? i.closest(".ProseMirror");
32
+ if (!a) return null;
33
+ let o = "";
34
+ n.nodeType === Node.TEXT_NODE && (o = (n.textContent ?? "").slice(0, r));
35
+ let s = n;
36
+ for (; s && s !== a && s !== i;) {
37
+ let e = s.previousSibling;
38
+ for (; e;) o = (e.textContent ?? "") + o, e = e.previousSibling;
39
+ if (s = s.parentNode, s && s.matches?.("p, li, h1, h2, h3, h4, h5, h6, blockquote")) break;
40
+ }
41
+ let c, l = t.getBoundingClientRect();
42
+ return l && (l.top || l.left || l.right || l.bottom) && (c = {
43
+ top: l.top,
44
+ left: l.left,
45
+ bottom: l.bottom,
46
+ right: l.right
47
+ }), {
48
+ textBefore: o,
49
+ rect: c
50
+ };
51
+ }
52
+ function _e(e, t, n, r) {
53
+ if (typeof window > "u") return;
54
+ if (e) {
55
+ let { selection: r } = e.state;
56
+ if (!r.empty) return;
57
+ let i = r.from - Math.min(t, r.$from.parentOffset);
58
+ e.chain().focus().insertContentAt({
59
+ from: i,
60
+ to: r.from
61
+ }, n).run();
62
+ return;
63
+ }
64
+ let i = window.getSelection();
65
+ if (!i || i.rangeCount === 0) return;
66
+ let a = i.getRangeAt(0);
67
+ if (!a.collapsed) return;
68
+ let o = t, s = a.startContainer, c = a.startOffset;
69
+ for (; o > 0;) {
70
+ if (s.nodeType === Node.TEXT_NODE) {
71
+ let e = Math.min(c, o);
72
+ if (c -= e, o -= e, o === 0) break;
73
+ }
74
+ let e = ye(s);
75
+ if (!e) break;
76
+ s = e, c = e.textContent?.length ?? 0;
77
+ }
78
+ let l = document.createRange();
79
+ l.setStart(s, c), l.setEnd(a.endContainer, a.endOffset), i.removeAllRanges(), i.addRange(l), l.deleteContents();
80
+ let u = document.createRange().createContextualFragment(n);
81
+ l.insertNode(u), i.collapseToEnd();
82
+ let d = s?.parentElement?.closest?.("[contenteditable=\"true\"]") ?? null;
83
+ d && r?.(d.innerHTML);
84
+ }
85
+ function ve(e, t) {
86
+ if (typeof window > "u" || !e) return;
87
+ e.focus();
88
+ let n = window.getSelection();
89
+ if (!n || n.rangeCount === 0) {
90
+ e.insertAdjacentHTML("beforeend", t);
91
+ return;
92
+ }
93
+ let r = n.getRangeAt(0);
94
+ if (!e.contains(r.commonAncestorContainer)) {
95
+ e.insertAdjacentHTML("beforeend", t);
96
+ return;
97
+ }
98
+ r.deleteContents();
99
+ let i = document.createRange().createContextualFragment(t);
100
+ r.insertNode(i), r.collapse(!1), n.removeAllRanges(), n.addRange(r);
101
+ }
102
+ function ye(e) {
103
+ let t = e;
104
+ for (; t;) {
105
+ if (t.previousSibling) {
106
+ for (t = t.previousSibling; t && t.lastChild;) t = t.lastChild;
107
+ if (t && t.nodeType === Node.TEXT_NODE) return t;
108
+ continue;
109
+ }
110
+ if (t = t.parentNode, !t || t.matches?.("p, li, h1, h2, h3, h4, h5, h6, blockquote, [contenteditable=\"true\"]")) return null;
111
+ }
112
+ return null;
113
+ }
114
+ //#endregion
115
+ //#region src/components/features/rich-text-editor/partials/counts-footer.tsx
116
+ function be({ text: e, maxLength: t, strings: r, className: a }) {
117
+ let o = e.length, s = e.trim().length > 0 ? e.trim().split(/\s+/).length : 0, u = typeof t == "number" && o > t;
118
+ return /* @__PURE__ */ x("div", {
119
+ className: n("counts-footer-text--component border-border flex items-center justify-end gap-space-lg border-t px-surface-xs py-space-sm", a),
120
+ children: [/* @__PURE__ */ x(i, {
121
+ tag: "span",
122
+ size: "xs",
123
+ type: u ? "error" : "secondary",
124
+ weight: u ? "medium" : "regular",
125
+ className: n("tabular-nums"),
126
+ children: [
127
+ /* @__PURE__ */ b(l, {
128
+ value: o,
129
+ size: "xs",
130
+ type: u ? "error" : "secondary",
131
+ align: "left"
132
+ }),
133
+ typeof t == "number" && /* @__PURE__ */ x(y, { children: [" / ", /* @__PURE__ */ b(l, {
134
+ value: t,
135
+ size: "xs",
136
+ type: u ? "error" : "secondary",
137
+ align: "left"
138
+ })] }),
139
+ " ",
140
+ r.counts.characters
141
+ ]
142
+ }), /* @__PURE__ */ x(c, {
143
+ size: "xs",
144
+ className: "tabular-nums",
145
+ children: [
146
+ /* @__PURE__ */ b(l, {
147
+ value: s,
148
+ size: "xs",
149
+ type: "secondary",
150
+ align: "left"
151
+ }),
152
+ " ",
153
+ r.counts.words
154
+ ]
155
+ })]
156
+ });
157
+ }
158
+ be.displayName = "CountsFooterText";
159
+ function xe({ editor: e, sourceMode: t, sourceValue: n, maxLength: r, strings: i }) {
160
+ let a = t ? n.replace(/<[^>]*>/g, "") : e?.getText() ?? "";
161
+ return /* @__PURE__ */ b(be, {
162
+ text: a,
163
+ maxLength: r,
164
+ strings: i
165
+ });
166
+ }
167
+ xe.displayName = "CountsFooter";
168
+ //#endregion
169
+ //#region src/components/features/rich-text-editor/partials/editor-field-aria.ts
170
+ function Se(e, t, n) {
171
+ return t ? {
172
+ role: "combobox",
173
+ "aria-label": e,
174
+ "aria-expanded": "true",
175
+ "aria-haspopup": "listbox",
176
+ "aria-autocomplete": "list",
177
+ "aria-controls": t,
178
+ ...n ? { "aria-activedescendant": n } : {}
179
+ } : {
180
+ role: "textbox",
181
+ "aria-label": e,
182
+ "aria-multiline": "true"
183
+ };
184
+ }
185
+ //#endregion
186
+ //#region src/components/features/rich-text-editor/partials/html-helpers.ts
187
+ function E(e) {
188
+ let t = e.trim();
189
+ return t === "" || t === "<p></p>" || t === "<p><br></p>" ? "" : t;
190
+ }
191
+ function D(e) {
192
+ let t = E(e);
193
+ return t === "" ? "<p></p>" : t;
194
+ }
195
+ //#endregion
196
+ //#region src/components/features/rich-text-editor/partials/inline-reference-node.ts
197
+ var Ce = "rsc-mention inline-reference--chip", we = "inlineReference";
198
+ function Te(e) {
199
+ return ({ editor: t }) => t.commands.command(({ tr: t, state: n }) => {
200
+ let { selection: r } = n;
201
+ if (!r.empty) return !1;
202
+ let { $from: i } = r, a = e === "backward" ? i.nodeBefore : i.nodeAfter;
203
+ if (a?.type.name !== we) return !1;
204
+ let o = e === "backward" ? i.pos - a.nodeSize : i.pos;
205
+ return t.delete(o, o + a.nodeSize), !0;
206
+ });
207
+ }
208
+ var Ee = null;
209
+ function De() {
210
+ return Ee ??= w.Node.create({
211
+ name: we,
212
+ group: "inline",
213
+ inline: !0,
214
+ atom: !0,
215
+ selectable: !0,
216
+ draggable: !1,
217
+ addAttributes() {
218
+ return {
219
+ id: {
220
+ default: null,
221
+ parseHTML: (e) => e.getAttribute("data-ref-id"),
222
+ renderHTML: (e) => ({ "data-ref-id": e.id })
223
+ },
224
+ kind: {
225
+ default: null,
226
+ parseHTML: (e) => e.getAttribute("data-ref-kind"),
227
+ renderHTML: (e) => e.kind ? { "data-ref-kind": e.kind } : {}
228
+ },
229
+ tone: {
230
+ default: null,
231
+ parseHTML: (e) => e.getAttribute("data-ref-tone"),
232
+ renderHTML: (e) => e.tone ? { "data-ref-tone": e.tone } : {}
233
+ },
234
+ label: {
235
+ default: "",
236
+ parseHTML: (e) => e.textContent ?? "",
237
+ renderHTML: () => ({})
238
+ }
239
+ };
240
+ },
241
+ parseHTML() {
242
+ return [{ tag: "span[data-ref-id]" }];
243
+ },
244
+ renderHTML({ node: e, HTMLAttributes: t }) {
245
+ return [
246
+ "span",
247
+ w.mergeAttributes({
248
+ class: "rsc-mention",
249
+ contenteditable: "false"
250
+ }, t),
251
+ e.attrs.label
252
+ ];
253
+ },
254
+ renderText({ node: e }) {
255
+ return e.attrs.label;
256
+ },
257
+ addNodeView() {
258
+ return ({ node: e }) => {
259
+ let t = document.createElement("span");
260
+ return t.className = Ce, t.setAttribute("contenteditable", "false"), t.setAttribute("data-ref-id", String(e.attrs.id ?? "")), e.attrs.kind && t.setAttribute("data-ref-kind", String(e.attrs.kind)), e.attrs.tone && t.setAttribute("data-ref-tone", String(e.attrs.tone)), t.textContent = String(e.attrs.label ?? ""), { dom: t };
261
+ };
262
+ },
263
+ addKeyboardShortcuts() {
264
+ return {
265
+ Backspace: Te("backward"),
266
+ Delete: Te("forward")
267
+ };
268
+ }
269
+ }), Ee;
270
+ }
271
+ var O = "data-rte-upload", Oe = "rich-text-editor--upload my-space-xs flex min-h-control items-center rounded-radius border border-dashed border-input bg-muted/30 px-row-x py-row-y", k = RegExp(`<span[^>]*\\b${O}="[^"]*"[^>]*>[\\s\\S]*?</span>`, "g");
272
+ function ke(e) {
273
+ return e.includes("data-rte-upload") ? e.replace(k, "") : e;
274
+ }
275
+ function A(e, t) {
276
+ let n = e.type.toLowerCase(), r = e.name.toLowerCase();
277
+ return t.split(",").map((e) => e.trim().toLowerCase()).filter(Boolean).some((e) => e.startsWith(".") ? r.endsWith(e) : e.endsWith("/*") ? n.startsWith(e.slice(0, -1)) : n === e);
278
+ }
279
+ function Ae(e) {
280
+ return e.replace(/\.[^.]+$/, "").replace(/[-_]+/g, " ").trim();
281
+ }
282
+ function je(e) {
283
+ return Array.from(e?.files ?? []).filter((e) => e.type.startsWith("image/"));
284
+ }
285
+ var j = 0;
286
+ function Me(t, n, r) {
287
+ let [i, a] = v([]), [s, c] = v(null), l = _(/* @__PURE__ */ new Map());
288
+ h(() => () => {
289
+ for (let e of l.current.values()) e.controller?.abort();
290
+ }, []);
291
+ let u = m((e) => {
292
+ l.current.get(e)?.controller?.abort(), l.current.delete(e), a((t) => t.filter((t) => t.id !== e));
293
+ }, []), d = m(async (e) => {
294
+ let r = l.current.get(e);
295
+ if (!r || !t) return;
296
+ r.controller?.abort();
297
+ let i = new AbortController();
298
+ r.controller = i;
299
+ let s = {
300
+ id: e,
301
+ name: r.file.name,
302
+ status: "uploading"
303
+ };
304
+ a((t) => t.some((t) => t.id === e) ? t.map((t) => t.id === e ? s : t) : [...t, s]);
305
+ try {
306
+ let a = await t.upload(r.file, { signal: i.signal });
307
+ if (i.signal.aborted) return;
308
+ let s = o(a?.src);
309
+ if (!s) throw Error(`The uploaded image source for ${r.file.name} is not an allowed URL.`);
310
+ let c = n.current?.findPlaceholder(e);
311
+ u(e), c && n.current?.resolvePlaceholder(e, {
312
+ src: s,
313
+ alt: a.alt ?? Ae(r.file.name),
314
+ width: a.width,
315
+ height: a.height
316
+ });
317
+ } catch (n) {
318
+ if (i.signal.aborted) return;
319
+ t.onError?.(n, r.file), a((t) => t.map((t) => t.id === e ? {
320
+ ...t,
321
+ status: "error"
322
+ } : t));
323
+ }
324
+ }, [
325
+ n,
326
+ u,
327
+ t
328
+ ]);
329
+ return {
330
+ uploads: i,
331
+ notice: s,
332
+ dismissNotice: () => c(null),
333
+ addFiles: m((i) => {
334
+ if (!t) return;
335
+ let a = t.accept ?? "image/png,image/jpeg,image/gif,image/webp", o = [];
336
+ for (let s of i) {
337
+ let i = A(s, a) ? t.maxSize && s.size > t.maxSize ? r.tooLarge : null : r.unsupported;
338
+ if (i) {
339
+ let n = e(i, { name: s.name });
340
+ o.push(n), t.onError?.(Error(n), s);
341
+ continue;
342
+ }
343
+ j += 1;
344
+ let c = `upload-${j}`;
345
+ l.current.set(c, { file: s }), n.current?.insertPlaceholder(c), d(c);
346
+ }
347
+ c(o.length > 0 ? o.join(" ") : null);
348
+ }, [
349
+ n,
350
+ t,
351
+ d,
352
+ r.tooLarge,
353
+ r.unsupported
354
+ ]),
355
+ retry: m((e) => {
356
+ d(e);
357
+ }, [d]),
358
+ remove: m((e) => {
359
+ u(e), n.current?.removePlaceholder(e);
360
+ }, [n, u]),
361
+ prune: m(() => {
362
+ for (let e of Array.from(l.current.keys())) n.current?.findPlaceholder(e) || u(e);
363
+ }, [n, u])
364
+ };
365
+ }
366
+ function M({ upload: t, strings: n, onRetry: o, onRemove: s }) {
367
+ let c = t.status === "error";
368
+ return /* @__PURE__ */ x(a, {
369
+ direction: "horizontal",
370
+ align: "center",
371
+ gap: "sm",
372
+ wrap: !0,
373
+ className: "rich-text-editor--upload-status w-full min-w-0",
374
+ "data-status": t.status,
375
+ children: [
376
+ c ? /* @__PURE__ */ b(S, {
377
+ className: "size-icon shrink-0 text-destructive",
378
+ "aria-hidden": "true"
379
+ }) : /* @__PURE__ */ b(ue, {
380
+ className: "size-icon shrink-0 animate-spin text-muted-foreground motion-reduce:animate-none",
381
+ "aria-hidden": "true"
382
+ }),
383
+ /* @__PURE__ */ b(i, {
384
+ tag: "span",
385
+ size: "xs",
386
+ type: c ? "error" : "secondary",
387
+ role: c ? "alert" : "status",
388
+ className: "min-w-0 flex-1 basis-40 break-words",
389
+ children: e(c ? n.failed : n.uploading, { name: t.name })
390
+ }),
391
+ c && /* @__PURE__ */ b(r, {
392
+ type: "button",
393
+ size: "sm",
394
+ onClick: o,
395
+ children: n.retry
396
+ }),
397
+ /* @__PURE__ */ b(r, {
398
+ type: "button",
399
+ size: "sm",
400
+ buttonStyle: "ghost",
401
+ onClick: s,
402
+ children: c ? n.remove : n.cancel
403
+ })
404
+ ]
405
+ });
406
+ }
407
+ function Ne({ queue: e, adapterRef: t, strings: n }) {
408
+ return /* @__PURE__ */ b(y, { children: e.uploads.map((r) => {
409
+ let i = t.current?.findPlaceholder(r.id);
410
+ return i ? he(/* @__PURE__ */ b(M, {
411
+ upload: r,
412
+ strings: n,
413
+ onRetry: () => e.retry(r.id),
414
+ onRemove: () => e.remove(r.id)
415
+ }), i, r.id) : null;
416
+ }) });
417
+ }
418
+ function Pe(e, t, n, r) {
419
+ let i = _(null), a = _(r);
420
+ a.current = r;
421
+ let o = !!e;
422
+ return {
423
+ item: g(() => o ? {
424
+ id: "insert-image",
425
+ icon: C,
426
+ label: t.insert,
427
+ toggle: !1,
428
+ onClick: () => {
429
+ a.current?.(), i.current?.click();
430
+ }
431
+ } : null, [o, t.insert]),
432
+ input: e ? /* @__PURE__ */ b("input", {
433
+ ref: i,
434
+ type: "file",
435
+ accept: e.accept ?? "image/png,image/jpeg,image/gif,image/webp",
436
+ multiple: !0,
437
+ hidden: !0,
438
+ tabIndex: -1,
439
+ "aria-hidden": "true",
440
+ onChange: (e) => {
441
+ let t = Array.from(e.target.files ?? []);
442
+ e.target.value = "", t.length > 0 && n(t);
443
+ }
444
+ }) : null
445
+ };
446
+ }
447
+ function Fe({ alt: e, onAltChange: t, onRemove: n, notice: o, onDismissNotice: s, strings: c }) {
448
+ let l = re();
449
+ return e === null && !o ? null : /* @__PURE__ */ x(a, {
450
+ gap: "sm",
451
+ className: "rich-text-editor--image-details border-t border-border/60 px-surface-xs py-space-sm",
452
+ children: [!!o && /* @__PURE__ */ x(a, {
453
+ direction: "horizontal",
454
+ align: "center",
455
+ gap: "sm",
456
+ children: [/* @__PURE__ */ b(i, {
457
+ tag: "span",
458
+ size: "xs",
459
+ type: "error",
460
+ role: "alert",
461
+ className: "min-w-0 flex-1",
462
+ children: o
463
+ }), /* @__PURE__ */ b(r, {
464
+ type: "button",
465
+ size: "sm",
466
+ buttonStyle: "ghost",
467
+ onClick: s,
468
+ children: c.remove
469
+ })]
470
+ }), e !== null && /* @__PURE__ */ b(d, {
471
+ label: c.descriptionLabel,
472
+ hint: c.descriptionHint,
473
+ htmlFor: l,
474
+ children: /* @__PURE__ */ b(y, { children: /* @__PURE__ */ x(a, {
475
+ direction: "horizontal",
476
+ align: "center",
477
+ gap: "sm",
478
+ wrap: !1,
479
+ children: [/* @__PURE__ */ b(u, {
480
+ id: l,
481
+ value: e,
482
+ className: "min-w-0 flex-1",
483
+ onChange: (e) => t(e.target.value)
484
+ }), /* @__PURE__ */ b(r, {
485
+ type: "button",
486
+ buttonStyle: "outline",
487
+ onClick: n,
488
+ children: c.removeImage
489
+ })]
490
+ }) })
491
+ })]
492
+ });
493
+ }
494
+ //#endregion
495
+ //#region src/components/features/rich-text-editor/partials/image-nodes.ts
496
+ function N(e) {
497
+ let t = Number(e);
498
+ return Number.isFinite(t) && t > 0 ? t : null;
499
+ }
500
+ var Ie = null, P = null;
501
+ function Le() {
502
+ return Ie ??= w.Node.create({
503
+ name: "image",
504
+ group: "inline",
505
+ inline: !0,
506
+ atom: !0,
507
+ selectable: !0,
508
+ draggable: !0,
509
+ addAttributes() {
510
+ return {
511
+ src: {
512
+ default: null,
513
+ parseHTML: (e) => o(e.getAttribute("src")) ?? null
514
+ },
515
+ alt: {
516
+ default: "",
517
+ parseHTML: (e) => e.getAttribute("alt") ?? ""
518
+ },
519
+ title: { default: null },
520
+ width: {
521
+ default: null,
522
+ parseHTML: (e) => N(e.getAttribute("width"))
523
+ },
524
+ height: {
525
+ default: null,
526
+ parseHTML: (e) => N(e.getAttribute("height"))
527
+ }
528
+ };
529
+ },
530
+ parseHTML() {
531
+ return [{
532
+ tag: "img[src]",
533
+ getAttrs: (e) => o(e.getAttribute("src")) ? null : !1
534
+ }];
535
+ },
536
+ renderHTML({ HTMLAttributes: e }) {
537
+ let t = o(e.src);
538
+ return ["img", w.mergeAttributes(e, { src: t ?? null })];
539
+ }
540
+ }), Ie;
541
+ }
542
+ function Re() {
543
+ return P ??= w.Node.create({
544
+ name: "imageUpload",
545
+ group: "inline",
546
+ inline: !0,
547
+ atom: !0,
548
+ selectable: !1,
549
+ addAttributes() {
550
+ return { id: { default: null } };
551
+ },
552
+ parseHTML() {
553
+ return [];
554
+ },
555
+ renderHTML({ node: e }) {
556
+ return ["span", { [O]: e.attrs.id }];
557
+ },
558
+ addNodeView() {
559
+ return ({ node: e }) => {
560
+ let t = document.createElement("span");
561
+ return t.setAttribute(O, String(e.attrs.id)), t.setAttribute("contenteditable", "false"), t.className = Oe, {
562
+ dom: t,
563
+ ignoreMutation: () => !0,
564
+ stopEvent: () => !0
565
+ };
566
+ };
567
+ }
568
+ }), P;
569
+ }
570
+ //#endregion
571
+ //#region src/components/features/rich-text-editor/partials/rich-text-editor-tiptap.tsx
572
+ function F(e) {
573
+ return E(ke(e?.getHTML() ?? ""));
574
+ }
575
+ var ze = w.EditorContent, Be = w.useEditor, I = w.useEditorState, Ve = "default" in T ? T.default : T, L = p(function({ value: e, onValueChange: r, placeholder: a, compact: o = !1, bodyHeight: s, minHeight: c, maxHeight: l, disabled: u = !1, invalid: d, id: p, onBlur: re, "aria-label": y, "aria-labelledby": S, "aria-describedby": C, "aria-invalid": ue, showCounts: he = !1, maxLength: w, extraToolbarItems: T, toolbarTrailing: ve, footerSlot: ye, hideSourceToggle: be = !1, autoFocus: Ce = !1, className: we, onCaretChange: Te, onEditorKeyDown: Ee, suggestionPopup: O, strings: Oe, images: k }, ke) {
576
+ let A = t(ne, Oe), { ariaInvalid: Ae } = ee(d, ue), j = !!k, M = _(null), N = _(null), [Ie, P] = v(!1), [L, R] = v(!1), z = _(null), [B, He] = v(""), Ue = _(!1), V = _(E(e)), H = _(Te);
577
+ H.current = Te;
578
+ let U = u ? void 0 : Ee, We = _(U);
579
+ ae(() => {
580
+ We.current = U;
581
+ }, [U]);
582
+ let W = O?.listboxId, Ge = O?.activeOptionId, G = y ?? A.editorLabel, K = g(() => {
583
+ let e = {
584
+ "data-slot": "editor-field",
585
+ class: f.editable
586
+ }, t = {
587
+ ...Se(G, W, Ge),
588
+ id: p,
589
+ "aria-labelledby": S,
590
+ "aria-describedby": C,
591
+ "aria-invalid": Ae
592
+ };
593
+ for (let [n, r] of Object.entries(t)) r !== void 0 && (e[n] = String(r));
594
+ return e;
595
+ }, [
596
+ Ge,
597
+ C,
598
+ Ae,
599
+ S,
600
+ G,
601
+ p,
602
+ W
603
+ ]), q = Be({
604
+ extensions: g(() => [
605
+ Ve,
606
+ De(),
607
+ ...j ? [Le(), Re()] : []
608
+ ], [j]),
609
+ content: D(e),
610
+ editable: !u,
611
+ immediatelyRender: !1,
612
+ autofocus: Ce ? "end" : !1,
613
+ onFocus: () => {
614
+ Ue.current = !0, P(!0);
615
+ },
616
+ onBlur: () => {
617
+ Ue.current = !1, P(!1);
618
+ },
619
+ onUpdate: ({ editor: e }) => {
620
+ M.current?.prune();
621
+ let t = F(e);
622
+ t !== V.current && (V.current = t, r(t)), Ue.current && H.current?.();
623
+ },
624
+ editorProps: {
625
+ handleKeyDown: (e, t) => We.current?.(t) ? (t.preventDefault(), t.stopPropagation(), !0) : !1,
626
+ handlePaste: (e, t) => {
627
+ let n = je(t.clipboardData);
628
+ return !M.current || !J.current || n.length === 0 ? !1 : (M.current.addFiles(n), !0);
629
+ },
630
+ handleDrop: (e, t, n, r) => {
631
+ let i = je(t.dataTransfer);
632
+ if (r || !M.current || !J.current || i.length === 0) return !1;
633
+ let a = e.posAtCoords({
634
+ left: t.clientX,
635
+ top: t.clientY
636
+ });
637
+ return a && N.current?.commands.setTextSelection(a.pos), M.current.addFiles(i), !0;
638
+ },
639
+ attributes: K
640
+ }
641
+ }, [j]);
642
+ ae(() => {
643
+ q && q.options.editorProps.attributes !== K && q.setOptions({ editorProps: {
644
+ ...q.options.editorProps,
645
+ attributes: K
646
+ } });
647
+ }, [q, K]), h(() => {
648
+ if (!q) return;
649
+ let t = F(q), n = E(e);
650
+ V.current = n, t !== n && q.chain().setMeta("addToHistory", !1).setContent(D(n), { emitUpdate: !1 }).run();
651
+ }, [q, e]), h(() => {
652
+ q && L && He(q.getHTML());
653
+ }, [
654
+ q,
655
+ L,
656
+ e
657
+ ]), h(() => {
658
+ q && q.setEditable(!u, !1);
659
+ }, [u, q]), h(() => {
660
+ if (typeof document > "u") return;
661
+ let e = () => {
662
+ Ue.current && H.current?.();
663
+ };
664
+ return document.addEventListener("selectionchange", e), () => document.removeEventListener("selectionchange", e);
665
+ }, []), ie(ke, () => ({
666
+ focus: () => {
667
+ z.current ? z.current.focus() : q?.chain().focus().run();
668
+ },
669
+ getHTML: () => F(q),
670
+ setHTML: (e) => {
671
+ let t = E(e);
672
+ V.current = t, q?.commands.setContent(D(t), { emitUpdate: !1 }), r(t);
673
+ },
674
+ insertHTML: (e) => {
675
+ q && q.chain().focus().insertContent(e).run();
676
+ },
677
+ isEmpty: () => F(q) === "",
678
+ clear: () => {
679
+ V.current = "", q?.commands.setContent("<p></p>", { emitUpdate: !1 }), r("");
680
+ },
681
+ getCaretContext: () => ge(),
682
+ replaceBeforeCaret: (e, t) => {
683
+ q && _e(q, e, t);
684
+ }
685
+ }), [q, r]), N.current = q ?? null;
686
+ let J = _(k);
687
+ J.current = k;
688
+ let Y = m(() => {
689
+ if (!q) return;
690
+ let e = F(q);
691
+ e !== V.current && (V.current = e, r(e));
692
+ }, [q, r]), Ke = m((e) => {
693
+ let t = null;
694
+ return q?.state.doc.descendants((n, r) => (!t && e(n) && (t = {
695
+ pos: r,
696
+ node: n
697
+ }), !t)), t;
698
+ }, [q]), qe = _(null);
699
+ qe.current = q ? {
700
+ insertPlaceholder: (e) => {
701
+ q.chain().focus().insertContent({
702
+ type: "imageUpload",
703
+ attrs: { id: e }
704
+ }).run();
705
+ },
706
+ findPlaceholder: (e) => q.view.dom.querySelector(`[data-rte-upload="${e}"]`),
707
+ resolvePlaceholder: (e, t) => {
708
+ let n = Ke((t) => t.type.name === "imageUpload" && t.attrs.id === e);
709
+ if (!n) return;
710
+ let r = q.schema.nodes.image.create({
711
+ src: t.src,
712
+ alt: t.alt ?? "",
713
+ width: t.width ?? null,
714
+ height: t.height ?? null
715
+ });
716
+ q.view.dispatch(q.state.tr.replaceWith(n.pos, n.pos + n.node.nodeSize, r)), Y();
717
+ },
718
+ removePlaceholder: (e) => {
719
+ let t = Ke((t) => t.type.name === "imageUpload" && t.attrs.id === e);
720
+ t && (q.view.dispatch(q.state.tr.delete(t.pos, t.pos + t.node.nodeSize)), Y());
721
+ }
722
+ } : null;
723
+ let X = Me(k, qe, A.images);
724
+ M.current = j ? X : null;
725
+ let Z = Pe(k, A.images, X.addFiles), Je = g(() => Z.item ? [Z.item, ...T ?? []] : T, [T, Z.item]), [Q, Ye] = v(null);
726
+ h(() => {
727
+ if (!q || !j) return;
728
+ let e = () => {
729
+ let e = q.state.selection, t = null;
730
+ if (e.node?.type.name === "image") t = {
731
+ pos: e.from,
732
+ alt: String(e.node.attrs.alt ?? "")
733
+ };
734
+ else if (e.empty) {
735
+ let { nodeBefore: n, nodeAfter: r } = e.$from;
736
+ n?.type.name === "image" ? t = {
737
+ pos: e.from - n.nodeSize,
738
+ alt: String(n.attrs.alt ?? "")
739
+ } : r?.type.name === "image" && (t = {
740
+ pos: e.from,
741
+ alt: String(r.attrs.alt ?? "")
742
+ });
743
+ }
744
+ Ye(t);
745
+ };
746
+ return q.on("selectionUpdate", e), q.on("update", e), () => {
747
+ q.off("selectionUpdate", e), q.off("update", e);
748
+ };
749
+ }, [q, j]);
750
+ let Xe = f.bodyMinHeight[s ?? (o ? "control" : "document")], Ze = g(() => ({
751
+ ...c ? { minHeight: c } : {},
752
+ ...l ? {
753
+ maxHeight: l,
754
+ overflowY: "auto"
755
+ } : {}
756
+ }), [l, c]), Qe = m(() => {
757
+ q && (L ? (B !== q.getHTML() && (q.commands.setContent(D(B), { emitUpdate: !1 }), Y()), R(!1)) : (He(q.getHTML()), R(!0)));
758
+ }, [
759
+ q,
760
+ Y,
761
+ L,
762
+ B
763
+ ]), $ = I({
764
+ editor: q,
765
+ selector: ({ editor: e }) => ({
766
+ bold: e?.isActive("bold") ?? !1,
767
+ italic: e?.isActive("italic") ?? !1,
768
+ strike: e?.isActive("strike") ?? !1,
769
+ bulletList: e?.isActive("bulletList") ?? !1,
770
+ orderedList: e?.isActive("orderedList") ?? !1,
771
+ blockquote: e?.isActive("blockquote") ?? !1,
772
+ canUndo: e?.can().undo() ?? !1,
773
+ canRedo: e?.can().redo() ?? !1,
774
+ extraActive: Je?.map((e) => e.isActive?.() ?? !1)
775
+ })
776
+ }), $e = g(() => [
777
+ {
778
+ id: "bold",
779
+ icon: oe,
780
+ label: A.toolbar.bold,
781
+ isActive: () => $?.bold ?? !1,
782
+ toggle: !0,
783
+ run: () => q?.chain().focus().toggleBold().run()
784
+ },
785
+ {
786
+ id: "italic",
787
+ icon: se,
788
+ label: A.toolbar.italic,
789
+ isActive: () => $?.italic ?? !1,
790
+ toggle: !0,
791
+ run: () => q?.chain().focus().toggleItalic().run()
792
+ },
793
+ {
794
+ id: "strike",
795
+ icon: pe,
796
+ label: A.toolbar.strike,
797
+ isActive: () => $?.strike ?? !1,
798
+ toggle: !0,
799
+ run: () => q?.chain().focus().toggleStrike().run()
800
+ },
801
+ {
802
+ id: "bullet-list",
803
+ icon: ce,
804
+ label: A.toolbar.bulletList,
805
+ isActive: () => $?.bulletList ?? !1,
806
+ toggle: !0,
807
+ run: () => q?.chain().focus().toggleBulletList().run()
808
+ },
809
+ {
810
+ id: "ordered-list",
811
+ icon: le,
812
+ label: A.toolbar.orderedList,
813
+ isActive: () => $?.orderedList ?? !1,
814
+ toggle: !0,
815
+ run: () => q?.chain().focus().toggleOrderedList().run()
816
+ },
817
+ {
818
+ id: "blockquote",
819
+ icon: de,
820
+ label: A.toolbar.blockquote,
821
+ isActive: () => $?.blockquote ?? !1,
822
+ toggle: !0,
823
+ run: () => q?.chain().focus().toggleBlockquote().run()
824
+ },
825
+ {
826
+ id: "undo",
827
+ icon: me,
828
+ label: A.toolbar.undo,
829
+ isActive: () => !1,
830
+ run: () => q?.chain().focus().undo().run(),
831
+ disabled: !$?.canUndo
832
+ },
833
+ {
834
+ id: "redo",
835
+ icon: fe,
836
+ label: A.toolbar.redo,
837
+ isActive: () => !1,
838
+ run: () => q?.chain().focus().redo().run(),
839
+ disabled: !$?.canRedo
840
+ }
841
+ ], [
842
+ q,
843
+ A,
844
+ $
845
+ ]), et = he && q ? /* @__PURE__ */ b(xe, {
846
+ editor: q,
847
+ sourceMode: L,
848
+ sourceValue: B,
849
+ maxLength: w,
850
+ strings: A
851
+ }) : null, tt = typeof a == "string" ? a : "", nt = tt.length > 0 && !Ie && q?.isEmpty ? /* @__PURE__ */ b(i, {
852
+ tag: "span",
853
+ size: "sm",
854
+ type: "secondary",
855
+ className: f.placeholder,
856
+ children: tt
857
+ }) : null;
858
+ return /* @__PURE__ */ x("div", {
859
+ onBlur: re && ((e) => {
860
+ e.currentTarget.contains(e.relatedTarget) || re(e);
861
+ }),
862
+ className: n(f.frame, u && f.disabled, we),
863
+ children: [
864
+ /* @__PURE__ */ b(te, {
865
+ buttons: $e,
866
+ extraToolbarItems: Je,
867
+ extraToolbarActive: $?.extraActive,
868
+ hideSourceToggle: be,
869
+ sourceMode: L,
870
+ toggleSourceMode: Qe,
871
+ disabled: u,
872
+ hasEditor: !!q,
873
+ toolbarTrailing: ve,
874
+ strings: A
875
+ }),
876
+ L ? /* @__PURE__ */ b("textarea", {
877
+ ref: z,
878
+ id: p,
879
+ "data-slot": "editor-field",
880
+ "aria-label": y ?? A.sourceLabel,
881
+ "aria-labelledby": S,
882
+ "aria-describedby": C,
883
+ "aria-invalid": Ae,
884
+ value: B,
885
+ onChange: (e) => He(e.target.value),
886
+ disabled: u,
887
+ spellCheck: !1,
888
+ className: n(f.source, Xe, u && "cursor-not-allowed"),
889
+ style: Ze
890
+ }) : /* @__PURE__ */ x("div", {
891
+ className: n("relative", Xe),
892
+ style: Ze,
893
+ children: [nt, /* @__PURE__ */ b(ze, {
894
+ editor: q,
895
+ className: f.content
896
+ })]
897
+ }),
898
+ j && /* @__PURE__ */ b(Fe, {
899
+ alt: Q ? Q.alt : null,
900
+ onAltChange: (e) => {
901
+ q && Q && q.state.doc.nodeAt(Q.pos)?.type.name === "image" && (q.view.dispatch(q.state.tr.setNodeAttribute(Q.pos, "alt", e)), Ye({
902
+ ...Q,
903
+ alt: e
904
+ }), Y());
905
+ },
906
+ onRemove: () => {
907
+ if (!q || !Q) return;
908
+ let e = q.state.doc.nodeAt(Q.pos);
909
+ e?.type.name === "image" && (q.view.dispatch(q.state.tr.delete(Q.pos, Q.pos + e.nodeSize)), Ye(null), Y(), q.commands.focus());
910
+ },
911
+ notice: X.notice,
912
+ onDismissNotice: X.dismissNotice,
913
+ strings: A.images
914
+ }),
915
+ !!ye && /* @__PURE__ */ b("div", {
916
+ className: n(f.regionX, "pb-space-md pt-space-xs"),
917
+ children: ye
918
+ }),
919
+ et,
920
+ Z.input,
921
+ j && /* @__PURE__ */ b(Ne, {
922
+ queue: X,
923
+ adapterRef: qe,
924
+ strings: A.images
925
+ })
926
+ ]
927
+ });
928
+ });
929
+ L.displayName = "TiptapRichTextEditor";
930
+ var R = ((e) => typeof e == "function" || typeof e == "object" && !!e && "$$typeof" in e)(ze) && typeof Be == "function" && typeof I == "function" && typeof Ve == "object" && !!Ve;
931
+ //#endregion
932
+ //#region src/components/features/rich-text-editor/partials/rich-text-editor-fallback.tsx
933
+ function z(e) {
934
+ if (!e) return "";
935
+ if (!e.querySelector("[data-rte-upload]")) return e.innerHTML;
936
+ let t = e.cloneNode(!0);
937
+ for (let e of Array.from(t.querySelectorAll(`[${O}]`))) e.remove();
938
+ return t.innerHTML;
939
+ }
940
+ function B(e) {
941
+ for (let t of Array.from(e.querySelectorAll("img"))) o(t.getAttribute("src")) || t.remove();
942
+ }
943
+ function He(e) {
944
+ let t = window.getSelection();
945
+ if (!t || t.rangeCount === 0) return null;
946
+ let n = t.getRangeAt(0);
947
+ if (!e.contains(n.commonAncestorContainer)) return null;
948
+ for (let t of Array.from(e.querySelectorAll("img"))) if (n.intersectsNode(t) && !n.collapsed) return t;
949
+ if (!n.collapsed) return null;
950
+ let { startContainer: r, startOffset: i } = n;
951
+ return (r.nodeType === Node.TEXT_NODE ? [i === 0 ? r.previousSibling : null, i === (r.textContent?.length ?? 0) ? r.nextSibling : null] : [r.childNodes[i - 1] ?? null, r.childNodes[i] ?? null]).find((e) => e instanceof HTMLImageElement) ?? null;
952
+ }
953
+ function Ue(e, t) {
954
+ let n = document, r = n.caretRangeFromPoint?.(e, t) ?? null;
955
+ if (!r) {
956
+ let i = n.caretPositionFromPoint?.(e, t);
957
+ i && (r = document.createRange(), r.setStart(i.offsetNode, i.offset));
958
+ }
959
+ if (!r) return;
960
+ r.collapse(!0);
961
+ let i = window.getSelection();
962
+ i?.removeAllRanges(), i?.addRange(r);
963
+ }
964
+ var V = p(function({ value: e, onValueChange: r, placeholder: a, compact: o = !1, bodyHeight: c, minHeight: l, maxHeight: u, disabled: d = !1, invalid: p, id: re, onBlur: ae, "aria-label": y, "aria-labelledby": S, "aria-describedby": C, "aria-invalid": ue, showCounts: he = !1, maxLength: w, extraToolbarItems: T, toolbarTrailing: ye, footerSlot: xe, hideSourceToggle: Ce = !1, autoFocus: we = !1, className: Te, onCaretChange: Ee, onEditorKeyDown: De, suggestionPopup: k, strings: ke, images: A }, Ae) {
965
+ let j = t(ne, ke), { ariaInvalid: M } = ee(p, ue), N = _(null), Ie = _(null), [P, Le] = v(null), [Re, F] = v(""), [ze, Be] = v(!1), [I, Ve] = v(!1), L = _(null), [R, V] = v(""), H = _(E(e)), U = _(Ee);
966
+ U.current = Ee;
967
+ let We = m((e) => {
968
+ N.current = e, e && e.innerHTML === "" && (e.innerHTML = D(H.current));
969
+ }, []);
970
+ h(() => {
971
+ let t = N.current;
972
+ if (!t || ze) return;
973
+ let n = D(e);
974
+ E(z(t)) !== E(n) && (t.innerHTML = n), H.current = E(e);
975
+ }, [ze, e]), h(() => {
976
+ I && (H.current = E(e), V(D(e)));
977
+ }, [I, e]), h(() => {
978
+ we && N.current?.focus();
979
+ }, [we]);
980
+ let W = m(() => {
981
+ let e = N.current, t = E(z(e));
982
+ H.current = t, r(t), U.current?.();
983
+ }, [r]), Ge = _(null);
984
+ Ge.current = {
985
+ insertPlaceholder: (e) => {
986
+ let t = N.current;
987
+ if (!t) return;
988
+ let n = Ie.current;
989
+ if (n && t.contains(n.commonAncestorContainer) && !t.contains(document.activeElement)) {
990
+ t.focus();
991
+ let e = window.getSelection();
992
+ e?.removeAllRanges(), e?.addRange(n);
993
+ }
994
+ ve(t, `<span ${O}="${e}" contenteditable="false" class="${Oe}"></span>`);
995
+ },
996
+ findPlaceholder: (e) => N.current?.querySelector(`[data-rte-upload="${e}"]`) ?? null,
997
+ resolvePlaceholder: (e, t) => {
998
+ let n = N.current?.querySelector(`[${O}="${e}"]`);
999
+ if (!n) return;
1000
+ let r = document.createElement("img");
1001
+ r.setAttribute("src", t.src), r.setAttribute("alt", t.alt ?? ""), t.width && r.setAttribute("width", String(t.width)), t.height && r.setAttribute("height", String(t.height)), n.replaceWith(r), W();
1002
+ },
1003
+ removePlaceholder: (e) => {
1004
+ N.current?.querySelector(`[${O}="${e}"]`)?.remove(), W();
1005
+ }
1006
+ };
1007
+ let G = Me(A, Ge, j.images), K = Pe(A, j.images, G.addFiles, () => {
1008
+ let e = window.getSelection(), t = e && e.rangeCount > 0 ? e.getRangeAt(0) : null;
1009
+ Ie.current = t && N.current?.contains(t.commonAncestorContainer) ? t.cloneRange() : null;
1010
+ }), q = g(() => K.item ? [K.item, ...T ?? []] : T, [T, K.item]), J = m(() => {
1011
+ let e = N.current;
1012
+ if (!A || !e) return;
1013
+ let t = window.getSelection();
1014
+ if (t && t.rangeCount > 0 && !e.contains(t.getRangeAt(0).commonAncestorContainer)) return;
1015
+ let n = He(e);
1016
+ Le(n), F(n?.getAttribute("alt") ?? "");
1017
+ }, [A]);
1018
+ h(() => {
1019
+ if (A && typeof document < "u") return document.addEventListener("selectionchange", J), () => document.removeEventListener("selectionchange", J);
1020
+ }, [A, J]);
1021
+ let Y = m(() => {
1022
+ let e = N.current;
1023
+ A && e && (B(e), G.prune(), P && !P.isConnected && Le(null)), W();
1024
+ }, [
1025
+ P,
1026
+ W,
1027
+ A,
1028
+ G
1029
+ ]);
1030
+ ie(Ae, () => ({
1031
+ focus: () => (L.current ?? N.current)?.focus(),
1032
+ getHTML: () => E(z(N.current)),
1033
+ setHTML: (e) => {
1034
+ let t = E(e);
1035
+ H.current = t, N.current && (N.current.innerHTML = D(t)), r(t);
1036
+ },
1037
+ insertHTML: (e) => {
1038
+ ve(N.current, e), W();
1039
+ },
1040
+ isEmpty: () => E(z(N.current)) === "",
1041
+ clear: () => {
1042
+ H.current = "", N.current && (N.current.innerHTML = "<p></p>"), r("");
1043
+ },
1044
+ getCaretContext: () => ge(),
1045
+ replaceBeforeCaret: (e, t) => {
1046
+ _e(null, e, t, () => W());
1047
+ }
1048
+ }), [W, r]);
1049
+ let Ke = f.bodyMinHeight[c ?? (o ? "control" : "document")], qe = g(() => ({
1050
+ ...l ? { minHeight: l } : {},
1051
+ ...u ? {
1052
+ maxHeight: u,
1053
+ overflowY: "auto"
1054
+ } : {}
1055
+ }), [u, l]), X = m(() => {
1056
+ if (I) {
1057
+ let e = document.createElement("template");
1058
+ e.innerHTML = s(R, { images: !!A });
1059
+ let t = E(e.innerHTML);
1060
+ t !== H.current && (H.current = t, r(t)), Ve(!1);
1061
+ return;
1062
+ }
1063
+ V(N.current?.innerHTML ?? D(e)), Ve(!0);
1064
+ }, [
1065
+ A,
1066
+ r,
1067
+ I,
1068
+ R,
1069
+ e
1070
+ ]), Z = typeof a == "string" ? a : "", Je = E(H.current) === "" && G.uploads.length === 0, Q = Z.length > 0 && !ze && Je ? /* @__PURE__ */ b(i, {
1071
+ tag: "span",
1072
+ size: "sm",
1073
+ type: "secondary",
1074
+ className: f.placeholder,
1075
+ children: Z
1076
+ }) : null, Ye = g(() => [
1077
+ {
1078
+ id: "bold",
1079
+ toggle: !0,
1080
+ icon: oe,
1081
+ label: j.toolbar.bold,
1082
+ isActive: () => !1,
1083
+ run: () => void 0,
1084
+ disabled: !0
1085
+ },
1086
+ {
1087
+ id: "italic",
1088
+ toggle: !0,
1089
+ icon: se,
1090
+ label: j.toolbar.italic,
1091
+ isActive: () => !1,
1092
+ run: () => void 0,
1093
+ disabled: !0
1094
+ },
1095
+ {
1096
+ id: "strike",
1097
+ toggle: !0,
1098
+ icon: pe,
1099
+ label: j.toolbar.strike,
1100
+ isActive: () => !1,
1101
+ run: () => void 0,
1102
+ disabled: !0
1103
+ },
1104
+ {
1105
+ id: "bullet-list",
1106
+ toggle: !0,
1107
+ icon: ce,
1108
+ label: j.toolbar.bulletList,
1109
+ isActive: () => !1,
1110
+ run: () => void 0,
1111
+ disabled: !0
1112
+ },
1113
+ {
1114
+ id: "ordered-list",
1115
+ toggle: !0,
1116
+ icon: le,
1117
+ label: j.toolbar.orderedList,
1118
+ isActive: () => !1,
1119
+ run: () => void 0,
1120
+ disabled: !0
1121
+ },
1122
+ {
1123
+ id: "blockquote",
1124
+ toggle: !0,
1125
+ icon: de,
1126
+ label: j.toolbar.blockquote,
1127
+ isActive: () => !1,
1128
+ run: () => void 0,
1129
+ disabled: !0
1130
+ },
1131
+ {
1132
+ id: "undo",
1133
+ icon: me,
1134
+ label: j.toolbar.undo,
1135
+ isActive: () => !1,
1136
+ run: () => void 0,
1137
+ disabled: !0
1138
+ },
1139
+ {
1140
+ id: "redo",
1141
+ icon: fe,
1142
+ label: j.toolbar.redo,
1143
+ isActive: () => !1,
1144
+ run: () => void 0,
1145
+ disabled: !0
1146
+ }
1147
+ ], [j]), Xe = I ? R.replace(/<[^>]*>/g, "") : N.current?.innerText ?? E(e).replace(/<[^>]*>/g, ""), Ze = he ? /* @__PURE__ */ b(be, {
1148
+ text: Xe,
1149
+ maxLength: w,
1150
+ strings: j
1151
+ }) : null;
1152
+ return /* @__PURE__ */ x("div", {
1153
+ onBlur: ae && ((e) => {
1154
+ e.currentTarget.contains(e.relatedTarget) || ae(e);
1155
+ }),
1156
+ className: n(f.frame, d && f.disabled, Te),
1157
+ children: [
1158
+ /* @__PURE__ */ b(te, {
1159
+ buttons: Ye,
1160
+ extraToolbarItems: q,
1161
+ hideSourceToggle: Ce,
1162
+ sourceMode: I,
1163
+ toggleSourceMode: X,
1164
+ disabled: d,
1165
+ hasEditor: !0,
1166
+ toolbarTrailing: ye,
1167
+ strings: j
1168
+ }),
1169
+ I ? /* @__PURE__ */ b("textarea", {
1170
+ ref: L,
1171
+ id: re,
1172
+ "data-slot": "editor-field",
1173
+ "aria-label": y ?? j.sourceLabel,
1174
+ "aria-labelledby": S,
1175
+ "aria-describedby": C,
1176
+ "aria-invalid": M,
1177
+ value: R,
1178
+ onChange: (e) => V(e.target.value),
1179
+ disabled: d,
1180
+ spellCheck: !1,
1181
+ className: n(f.source, Ke, d && "cursor-not-allowed"),
1182
+ style: qe
1183
+ }) : /* @__PURE__ */ x("div", {
1184
+ className: n("relative", Ke),
1185
+ style: qe,
1186
+ children: [Q, /* @__PURE__ */ b("div", {
1187
+ ref: We,
1188
+ id: re,
1189
+ "data-slot": "editor-field",
1190
+ ...Se(y ?? j.editorLabel, k?.listboxId, k?.activeOptionId),
1191
+ "aria-labelledby": S,
1192
+ "aria-describedby": C,
1193
+ "aria-invalid": M,
1194
+ contentEditable: !d,
1195
+ suppressContentEditableWarning: !0,
1196
+ onInput: Y,
1197
+ onKeyDown: De && !d ? (e) => {
1198
+ De(e.nativeEvent) && (e.preventDefault(), e.stopPropagation());
1199
+ } : void 0,
1200
+ onKeyUp: () => U.current?.(),
1201
+ onMouseUp: () => U.current?.(),
1202
+ onClick: A ? (e) => {
1203
+ if (!(e.target instanceof HTMLImageElement)) return;
1204
+ let t = document.createRange();
1205
+ t.selectNode(e.target);
1206
+ let n = window.getSelection();
1207
+ n?.removeAllRanges(), n?.addRange(t);
1208
+ } : void 0,
1209
+ onPaste: A ? (e) => {
1210
+ let t = je(e.clipboardData);
1211
+ t.length !== 0 && (e.preventDefault(), G.addFiles(t));
1212
+ } : void 0,
1213
+ onDragOver: A ? (e) => {
1214
+ Array.from(e.dataTransfer.types).includes("Files") && e.preventDefault();
1215
+ } : void 0,
1216
+ onDrop: A ? (e) => {
1217
+ let t = je(e.dataTransfer);
1218
+ t.length !== 0 && (e.preventDefault(), N.current?.focus(), Ue(e.clientX, e.clientY), G.addFiles(t));
1219
+ } : void 0,
1220
+ onFocus: () => Be(!0),
1221
+ onBlur: () => Be(!1),
1222
+ className: n(f.editable, "h-full min-h-full", d && "cursor-not-allowed")
1223
+ })]
1224
+ }),
1225
+ !!A && /* @__PURE__ */ b(Fe, {
1226
+ alt: P ? Re : null,
1227
+ onAltChange: (e) => {
1228
+ F(e), P?.setAttribute("alt", e), W();
1229
+ },
1230
+ onRemove: () => {
1231
+ P?.remove(), Le(null), W(), N.current?.focus();
1232
+ },
1233
+ notice: G.notice,
1234
+ onDismissNotice: G.dismissNotice,
1235
+ strings: j.images
1236
+ }),
1237
+ !!xe && /* @__PURE__ */ b("div", {
1238
+ className: n(f.regionX, "pb-space-md pt-space-xs"),
1239
+ children: xe
1240
+ }),
1241
+ Ze,
1242
+ K.input,
1243
+ /* @__PURE__ */ b(Ne, {
1244
+ queue: G,
1245
+ adapterRef: Ge,
1246
+ strings: j.images
1247
+ })
1248
+ ]
1249
+ });
1250
+ });
1251
+ V.displayName = "FallbackRichTextEditor";
1252
+ //#endregion
1253
+ //#region src/components/features/rich-text-editor/rich-text-editor.tsx
1254
+ var H = p(function({ name: e, ...t }, r) {
1255
+ return /* @__PURE__ */ x(y, { children: [R ? /* @__PURE__ */ b(L, {
1256
+ ...t,
1257
+ ref: r
1258
+ }) : /* @__PURE__ */ b(V, {
1259
+ ...t,
1260
+ ref: r,
1261
+ className: n("rich-text-editor--component", t.className)
1262
+ }), e && /* @__PURE__ */ b("input", {
1263
+ type: "hidden",
1264
+ name: e,
1265
+ value: t.value,
1266
+ disabled: t.disabled
1267
+ })] });
1268
+ });
1269
+ H.displayName = "RichTextEditor";
1270
+ //#endregion
1271
+ export { be as n, H as t };
1272
+
1273
+ //# sourceMappingURL=rich-text-editor-CAurDwT5.js.map