@alfadocs/ui-kit-debug 0.1.8 → 0.1.9

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 (742) hide show
  1. package/dist/_chunks/{accordion-B6fyINUk.js → accordion-BEnrZmAn.js} +34 -32
  2. package/dist/_chunks/accordion-BEnrZmAn.js.map +1 -0
  3. package/dist/_chunks/accordion.agent-BTjeO1Sx.js +52 -0
  4. package/dist/_chunks/accordion.agent-BTjeO1Sx.js.map +1 -0
  5. package/dist/_chunks/{agenda-card-DIWDvWum.js → agenda-card-DwLIxgi7.js} +2 -1
  6. package/dist/_chunks/{agenda-card-DIWDvWum.js.map → agenda-card-DwLIxgi7.js.map} +1 -1
  7. package/dist/_chunks/agenda-card.agent-B_R47-c9.js +22 -0
  8. package/dist/_chunks/agenda-card.agent-B_R47-c9.js.map +1 -0
  9. package/dist/_chunks/agenda-tray-DUvengGQ.js +178 -0
  10. package/dist/_chunks/agenda-tray-DUvengGQ.js.map +1 -0
  11. package/dist/_chunks/ai-prompt-input.agent-0NHYLTWD.js +476 -0
  12. package/dist/_chunks/ai-prompt-input.agent-0NHYLTWD.js.map +1 -0
  13. package/dist/_chunks/{aspect-ratio-CxsdG8vk.js → aspect-ratio-DeSNzASA.js} +12 -12
  14. package/dist/_chunks/aspect-ratio-DeSNzASA.js.map +1 -0
  15. package/dist/_chunks/audio-recorder.agent--VKeykUp.js +458 -0
  16. package/dist/_chunks/audio-recorder.agent--VKeykUp.js.map +1 -0
  17. package/dist/_chunks/autocomplete.agent-Dh7KioS6.js +432 -0
  18. package/dist/_chunks/autocomplete.agent-Dh7KioS6.js.map +1 -0
  19. package/dist/_chunks/{balance-cell-renderer-BWm3knY9.js → balance-cell-renderer-5CA7zpAi.js} +3 -3
  20. package/dist/_chunks/{balance-cell-renderer-BWm3knY9.js.map → balance-cell-renderer-5CA7zpAi.js.map} +1 -1
  21. package/dist/_chunks/breadcrumb.agent-GM2hAKFX.js +371 -0
  22. package/dist/_chunks/breadcrumb.agent-GM2hAKFX.js.map +1 -0
  23. package/dist/_chunks/{chart.agent-BdS-_8MO.js → chart.agent-_pRYS17d.js} +112 -105
  24. package/dist/_chunks/chart.agent-_pRYS17d.js.map +1 -0
  25. package/dist/_chunks/{chat-container-Cm3SlR2p.js → chat-container-Dl0Kfy5a.js} +33 -32
  26. package/dist/_chunks/chat-container-Dl0Kfy5a.js.map +1 -0
  27. package/dist/_chunks/{chat-container.agent-Dhw9xCJt.js → chat-container.agent-CM4WModE.js} +9 -4
  28. package/dist/_chunks/{chat-container.agent-Dhw9xCJt.js.map → chat-container.agent-CM4WModE.js.map} +1 -1
  29. package/dist/_chunks/{chat-input-DreOPP8A.js → chat-input-C_tMQv92.js} +108 -82
  30. package/dist/_chunks/chat-input-C_tMQv92.js.map +1 -0
  31. package/dist/_chunks/chat-input.agent-Bsz3ckGa.js +69 -0
  32. package/dist/_chunks/chat-input.agent-Bsz3ckGa.js.map +1 -0
  33. package/dist/_chunks/checkbox-CtPM6Rup.js +196 -0
  34. package/dist/_chunks/checkbox-CtPM6Rup.js.map +1 -0
  35. package/dist/_chunks/checkbox-group-BTdEB6Yo.js +208 -0
  36. package/dist/_chunks/checkbox-group-BTdEB6Yo.js.map +1 -0
  37. package/dist/_chunks/collapsible.agent-DkS1jVyn.js +149 -0
  38. package/dist/_chunks/collapsible.agent-DkS1jVyn.js.map +1 -0
  39. package/dist/_chunks/{color-picker-e9PmpaGH.js → color-picker-94qcBZqZ.js} +234 -184
  40. package/dist/_chunks/color-picker-94qcBZqZ.js.map +1 -0
  41. package/dist/_chunks/combobox.agent-CAvUkkIe.js +410 -0
  42. package/dist/_chunks/combobox.agent-CAvUkkIe.js.map +1 -0
  43. package/dist/_chunks/{command-palette.agent-js2rxgeR.js → command-palette.agent-HatEt_EM.js} +161 -121
  44. package/dist/_chunks/command-palette.agent-HatEt_EM.js.map +1 -0
  45. package/dist/_chunks/date-picker-BqPTn7bO.js +1813 -0
  46. package/dist/_chunks/date-picker-BqPTn7bO.js.map +1 -0
  47. package/dist/_chunks/date-range-picker-B2hGsffw.js +274 -0
  48. package/dist/_chunks/date-range-picker-B2hGsffw.js.map +1 -0
  49. package/dist/_chunks/date-time-picker-Bzt0S8yO.js +293 -0
  50. package/dist/_chunks/date-time-picker-Bzt0S8yO.js.map +1 -0
  51. package/dist/_chunks/dialog.agent-Daf1TTko.js +179 -0
  52. package/dist/_chunks/dialog.agent-Daf1TTko.js.map +1 -0
  53. package/dist/_chunks/{dropdown-menu-Cw3EyPZv.js → dropdown-menu-C7AZipNz.js} +75 -71
  54. package/dist/_chunks/dropdown-menu-C7AZipNz.js.map +1 -0
  55. package/dist/_chunks/dropdown-menu.agent-BcxIKOjK.js +43 -0
  56. package/dist/_chunks/dropdown-menu.agent-BcxIKOjK.js.map +1 -0
  57. package/dist/_chunks/{file-upload.agent-B9AN82LA.js → file-upload.agent-DJaH2dHg.js} +275 -243
  58. package/dist/_chunks/file-upload.agent-DJaH2dHg.js.map +1 -0
  59. package/dist/_chunks/freemium-paywall.agent-_nQqLyRF.js +260 -0
  60. package/dist/_chunks/freemium-paywall.agent-_nQqLyRF.js.map +1 -0
  61. package/dist/_chunks/{leo-sidebar-nbHib2D-.js → leo-sidebar-BwINPdix.js} +6 -6
  62. package/dist/_chunks/{leo-sidebar-nbHib2D-.js.map → leo-sidebar-BwINPdix.js.map} +1 -1
  63. package/dist/_chunks/link-QheANk74.js +121 -0
  64. package/dist/_chunks/link-QheANk74.js.map +1 -0
  65. package/dist/_chunks/list.agent-D0iWt4VI.js +420 -0
  66. package/dist/_chunks/list.agent-D0iWt4VI.js.map +1 -0
  67. package/dist/_chunks/{message-card-qAp2-WQK.js → message-card-qhoGv947.js} +2 -1
  68. package/dist/_chunks/message-card-qhoGv947.js.map +1 -0
  69. package/dist/_chunks/message-card.agent-4IeIgrnJ.js +22 -0
  70. package/dist/_chunks/message-card.agent-4IeIgrnJ.js.map +1 -0
  71. package/dist/_chunks/message-tray-xHUCra-Y.js +419 -0
  72. package/dist/_chunks/message-tray-xHUCra-Y.js.map +1 -0
  73. package/dist/_chunks/{multi-select.agent-CNsyW3n9.js → multi-select.agent-Do6CeQUT.js} +239 -179
  74. package/dist/_chunks/multi-select.agent-Do6CeQUT.js.map +1 -0
  75. package/dist/_chunks/navigation-menu.agent-D69ND6Qq.js +266 -0
  76. package/dist/_chunks/navigation-menu.agent-D69ND6Qq.js.map +1 -0
  77. package/dist/_chunks/{notification-card-BF2_veHy.js → notification-card-CsVEYJE-.js} +13 -12
  78. package/dist/_chunks/{notification-card-BF2_veHy.js.map → notification-card-CsVEYJE-.js.map} +1 -1
  79. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js +22 -0
  80. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js.map +1 -0
  81. package/dist/_chunks/notification-tray-DTXMq42J.js +444 -0
  82. package/dist/_chunks/notification-tray-DTXMq42J.js.map +1 -0
  83. package/dist/_chunks/number-input-fvGmnRy9.js +333 -0
  84. package/dist/_chunks/number-input-fvGmnRy9.js.map +1 -0
  85. package/dist/_chunks/otp-input-EglXOUue.js +257 -0
  86. package/dist/_chunks/otp-input-EglXOUue.js.map +1 -0
  87. package/dist/_chunks/pagination.agent-BkZQl45y.js +422 -0
  88. package/dist/_chunks/pagination.agent-BkZQl45y.js.map +1 -0
  89. package/dist/_chunks/password-input-D6kuYXmr.js +304 -0
  90. package/dist/_chunks/password-input-D6kuYXmr.js.map +1 -0
  91. package/dist/_chunks/{patient-shell-7cXqIMFg.js → patient-shell-BRmrrUUW.js} +3 -3
  92. package/dist/_chunks/{patient-shell-7cXqIMFg.js.map → patient-shell-BRmrrUUW.js.map} +1 -1
  93. package/dist/_chunks/{payment-form-hcl-gGrp.js → payment-form-BWaXas8z.js} +120 -118
  94. package/dist/_chunks/payment-form-BWaXas8z.js.map +1 -0
  95. package/dist/_chunks/{payment-form.agent-BkEnRerR.js → payment-form.agent-kuIfodCj.js} +7 -2
  96. package/dist/_chunks/payment-form.agent-kuIfodCj.js.map +1 -0
  97. package/dist/_chunks/{pdf-viewer.agent-CfIHhcHx.js → pdf-viewer.agent-BaGEDheA.js} +358 -351
  98. package/dist/_chunks/pdf-viewer.agent-BaGEDheA.js.map +1 -0
  99. package/dist/_chunks/phone-input-C8Op4sEc.js +513 -0
  100. package/dist/_chunks/phone-input-C8Op4sEc.js.map +1 -0
  101. package/dist/_chunks/popover-kFN8s84V.js +229 -0
  102. package/dist/_chunks/popover-kFN8s84V.js.map +1 -0
  103. package/dist/_chunks/popover.agent-K_d1cfbj.js +39 -0
  104. package/dist/_chunks/popover.agent-K_d1cfbj.js.map +1 -0
  105. package/dist/_chunks/privacy-lock.agent-C1i1-T58.js +185 -0
  106. package/dist/_chunks/privacy-lock.agent-C1i1-T58.js.map +1 -0
  107. package/dist/_chunks/progress-wNsqkw8I.js +253 -0
  108. package/dist/_chunks/progress-wNsqkw8I.js.map +1 -0
  109. package/dist/_chunks/progress.agent-C68rDOXL.js +27 -0
  110. package/dist/_chunks/progress.agent-C68rDOXL.js.map +1 -0
  111. package/dist/_chunks/{radio-cs8N1wJi.js → radio-DvF59ThA.js} +14 -13
  112. package/dist/_chunks/radio-DvF59ThA.js.map +1 -0
  113. package/dist/_chunks/radio-group-Cz1a4QCA.js +152 -0
  114. package/dist/_chunks/radio-group-Cz1a4QCA.js.map +1 -0
  115. package/dist/_chunks/recaptcha-widget.agent-BGHpU5zD.js +183 -0
  116. package/dist/_chunks/recaptcha-widget.agent-BGHpU5zD.js.map +1 -0
  117. package/dist/_chunks/resizable.agent-CMwZzvsi.js +456 -0
  118. package/dist/_chunks/resizable.agent-CMwZzvsi.js.map +1 -0
  119. package/dist/_chunks/{rich-text-editor.agent-COSb5_2D.js → rich-text-editor.agent-DnE125Tz.js} +221 -214
  120. package/dist/_chunks/rich-text-editor.agent-DnE125Tz.js.map +1 -0
  121. package/dist/_chunks/search-bar.agent-DxFAxctc.js +562 -0
  122. package/dist/_chunks/search-bar.agent-DxFAxctc.js.map +1 -0
  123. package/dist/_chunks/search-input-Xw3cdWXW.js +227 -0
  124. package/dist/_chunks/search-input-Xw3cdWXW.js.map +1 -0
  125. package/dist/_chunks/search-input.agent-CfZvViOd.js +69 -0
  126. package/dist/_chunks/search-input.agent-CfZvViOd.js.map +1 -0
  127. package/dist/_chunks/select-DY1Cb2Tg.js +410 -0
  128. package/dist/_chunks/select-DY1Cb2Tg.js.map +1 -0
  129. package/dist/_chunks/{sheet-BhNpLHc9.js → sheet-B9kH9pcI.js} +55 -54
  130. package/dist/_chunks/sheet-B9kH9pcI.js.map +1 -0
  131. package/dist/_chunks/sheet.agent-QAyTOxgk.js +46 -0
  132. package/dist/_chunks/sheet.agent-QAyTOxgk.js.map +1 -0
  133. package/dist/_chunks/{sidebar-OVzwN3jE.js → sidebar-CHF5xr_P.js} +188 -185
  134. package/dist/_chunks/sidebar-CHF5xr_P.js.map +1 -0
  135. package/dist/_chunks/sidebar.agent-C9TM_ZDZ.js +49 -0
  136. package/dist/_chunks/sidebar.agent-C9TM_ZDZ.js.map +1 -0
  137. package/dist/_chunks/{signature-capture.agent-C38VPXxg.js → signature-capture.agent-BpeDwFht.js} +127 -120
  138. package/dist/_chunks/signature-capture.agent-BpeDwFht.js.map +1 -0
  139. package/dist/_chunks/slider-CcsQTZTA.js +322 -0
  140. package/dist/_chunks/slider-CcsQTZTA.js.map +1 -0
  141. package/dist/_chunks/sparkline.agent-56Sj7nOP.js +245 -0
  142. package/dist/_chunks/sparkline.agent-56Sj7nOP.js.map +1 -0
  143. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js +322 -0
  144. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js.map +1 -0
  145. package/dist/_chunks/stepper-calendar.agent-9iT3ClIB.js +646 -0
  146. package/dist/_chunks/stepper-calendar.agent-9iT3ClIB.js.map +1 -0
  147. package/dist/_chunks/stepper-progress-Bmen-YXB.js +149 -0
  148. package/dist/_chunks/stepper-progress-Bmen-YXB.js.map +1 -0
  149. package/dist/_chunks/stepper-progress.agent-q9InWca4.js +61 -0
  150. package/dist/_chunks/stepper-progress.agent-q9InWca4.js.map +1 -0
  151. package/dist/_chunks/suggestion-chip-DhFrkRPj.js +169 -0
  152. package/dist/_chunks/suggestion-chip-DhFrkRPj.js.map +1 -0
  153. package/dist/_chunks/suggestion-chip.agent-6sNWFj7m.js +46 -0
  154. package/dist/_chunks/suggestion-chip.agent-6sNWFj7m.js.map +1 -0
  155. package/dist/_chunks/switch-BYEH8I53.js +196 -0
  156. package/dist/_chunks/switch-BYEH8I53.js.map +1 -0
  157. package/dist/_chunks/{tabs.agent-BpbVA-Zh.js → tabs.agent-h7NvsTR1.js} +146 -123
  158. package/dist/_chunks/tabs.agent-h7NvsTR1.js.map +1 -0
  159. package/dist/_chunks/{task-card-yW7tKlG4.js → task-card-CY5ztNkU.js} +2 -1
  160. package/dist/_chunks/{task-card-yW7tKlG4.js.map → task-card-CY5ztNkU.js.map} +1 -1
  161. package/dist/_chunks/task-card.agent-CUPKYd7w.js +22 -0
  162. package/dist/_chunks/task-card.agent-CUPKYd7w.js.map +1 -0
  163. package/dist/_chunks/task-tray-CCoUdorl.js +194 -0
  164. package/dist/_chunks/task-tray-CCoUdorl.js.map +1 -0
  165. package/dist/_chunks/text-area-C_M8wliK.js +239 -0
  166. package/dist/_chunks/text-area-C_M8wliK.js.map +1 -0
  167. package/dist/_chunks/text-input-BX39e6T6.js +272 -0
  168. package/dist/_chunks/text-input-BX39e6T6.js.map +1 -0
  169. package/dist/_chunks/theme-toggle.agent-btmXTWdW.js +394 -0
  170. package/dist/_chunks/theme-toggle.agent-btmXTWdW.js.map +1 -0
  171. package/dist/_chunks/time-picker-B8AMIrX7.js +410 -0
  172. package/dist/_chunks/time-picker-B8AMIrX7.js.map +1 -0
  173. package/dist/_chunks/timeline.agent-CRPza9wc.js +279 -0
  174. package/dist/_chunks/timeline.agent-CRPza9wc.js.map +1 -0
  175. package/dist/_chunks/{toast-lOhJDKOH.js → toast.agent-BjEGuq1Z.js} +403 -342
  176. package/dist/_chunks/toast.agent-BjEGuq1Z.js.map +1 -0
  177. package/dist/_chunks/{tooth-scheme.agent-BlDyu-Gx.js → tooth-scheme.agent-CWrQBjJM.js} +218 -211
  178. package/dist/_chunks/tooth-scheme.agent-CWrQBjJM.js.map +1 -0
  179. package/dist/_chunks/transcript-panel.agent-BXEYP6w-.js +337 -0
  180. package/dist/_chunks/transcript-panel.agent-BXEYP6w-.js.map +1 -0
  181. package/dist/_chunks/{workflow-map-XeqHDFvp.js → workflow-map-D2A7rTEG.js} +465 -368
  182. package/dist/_chunks/workflow-map-D2A7rTEG.js.map +1 -0
  183. package/dist/agent-catalog.json +2929 -268
  184. package/dist/components/accordion/accordion.agent.d.ts +2 -1
  185. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  186. package/dist/components/accordion/accordion.d.ts +6 -0
  187. package/dist/components/accordion/accordion.d.ts.map +1 -1
  188. package/dist/components/accordion/index.js +2 -2
  189. package/dist/components/agenda-card/agenda-card.agent.d.ts +3 -0
  190. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -0
  191. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  192. package/dist/components/agenda-card/index.d.ts +1 -0
  193. package/dist/components/agenda-card/index.d.ts.map +1 -1
  194. package/dist/components/agenda-card/index.js +3 -1
  195. package/dist/components/agenda-card/index.js.map +1 -1
  196. package/dist/components/agenda-tray/agenda-tray.agent.d.ts +4 -0
  197. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -0
  198. package/dist/components/agenda-tray/agenda-tray.d.ts +19 -2
  199. package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
  200. package/dist/components/agenda-tray/index.d.ts +2 -1
  201. package/dist/components/agenda-tray/index.d.ts.map +1 -1
  202. package/dist/components/agenda-tray/index.js +3 -2
  203. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts +4 -0
  204. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -0
  205. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts +18 -1
  206. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  207. package/dist/components/ai-prompt-input/index.d.ts +2 -1
  208. package/dist/components/ai-prompt-input/index.d.ts.map +1 -1
  209. package/dist/components/ai-prompt-input/index.js +3 -2
  210. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  211. package/dist/components/aspect-ratio/index.js +1 -1
  212. package/dist/components/audio-recorder/audio-recorder.agent.d.ts +4 -0
  213. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -0
  214. package/dist/components/audio-recorder/audio-recorder.d.ts +10 -1
  215. package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
  216. package/dist/components/audio-recorder/index.d.ts +2 -1
  217. package/dist/components/audio-recorder/index.d.ts.map +1 -1
  218. package/dist/components/audio-recorder/index.js +3 -2
  219. package/dist/components/autocomplete/autocomplete.agent.d.ts +2 -1
  220. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  221. package/dist/components/autocomplete/autocomplete.d.ts +10 -0
  222. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  223. package/dist/components/autocomplete/index.js +1 -1
  224. package/dist/components/breadcrumb/breadcrumb.agent.d.ts +8 -0
  225. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -0
  226. package/dist/components/breadcrumb/breadcrumb.d.ts +21 -2
  227. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  228. package/dist/components/breadcrumb/index.d.ts +2 -1
  229. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  230. package/dist/components/breadcrumb/index.js +5 -4
  231. package/dist/components/button/button.d.ts +1 -1
  232. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  233. package/dist/components/chart/chart.d.ts +2 -0
  234. package/dist/components/chart/chart.d.ts.map +1 -1
  235. package/dist/components/chart/index.js +1 -1
  236. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  237. package/dist/components/chat-container/chat-container.d.ts +3 -1
  238. package/dist/components/chat-container/chat-container.d.ts.map +1 -1
  239. package/dist/components/chat-container/index.js +2 -2
  240. package/dist/components/chat-input/chat-input.agent.d.ts +4 -0
  241. package/dist/components/chat-input/chat-input.agent.d.ts.map +1 -0
  242. package/dist/components/chat-input/chat-input.d.ts +10 -1
  243. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  244. package/dist/components/chat-input/index.d.ts +2 -1
  245. package/dist/components/chat-input/index.d.ts.map +1 -1
  246. package/dist/components/chat-input/index.js +4 -2
  247. package/dist/components/chat-input/index.js.map +1 -1
  248. package/dist/components/checkbox/checkbox.agent.d.ts +4 -0
  249. package/dist/components/checkbox/checkbox.agent.d.ts.map +1 -0
  250. package/dist/components/checkbox/checkbox.d.ts +6 -0
  251. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  252. package/dist/components/checkbox/index.js +1 -1
  253. package/dist/components/checkbox-group/checkbox-group.agent.d.ts +4 -0
  254. package/dist/components/checkbox-group/checkbox-group.agent.d.ts.map +1 -0
  255. package/dist/components/checkbox-group/checkbox-group.d.ts +8 -0
  256. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  257. package/dist/components/checkbox-group/index.js +1 -1
  258. package/dist/components/collapsible/collapsible.agent.d.ts +4 -0
  259. package/dist/components/collapsible/collapsible.agent.d.ts.map +1 -0
  260. package/dist/components/collapsible/collapsible.d.ts +8 -1
  261. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  262. package/dist/components/collapsible/index.d.ts +2 -1
  263. package/dist/components/collapsible/index.d.ts.map +1 -1
  264. package/dist/components/collapsible/index.js +4 -3
  265. package/dist/components/color-picker/color-picker.agent.d.ts +4 -0
  266. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -0
  267. package/dist/components/color-picker/color-picker.d.ts +5 -0
  268. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  269. package/dist/components/color-picker/index.js +1 -1
  270. package/dist/components/combobox/combobox.agent.d.ts +2 -1
  271. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  272. package/dist/components/combobox/combobox.d.ts +10 -0
  273. package/dist/components/combobox/combobox.d.ts.map +1 -1
  274. package/dist/components/combobox/index.js +1 -1
  275. package/dist/components/command-palette/command-palette.agent.d.ts +2 -1
  276. package/dist/components/command-palette/command-palette.agent.d.ts.map +1 -1
  277. package/dist/components/command-palette/command-palette.d.ts +7 -0
  278. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  279. package/dist/components/command-palette/index.js +1 -1
  280. package/dist/components/data-table/index.js +1 -1
  281. package/dist/components/date-picker/date-picker.agent.d.ts +4 -0
  282. package/dist/components/date-picker/date-picker.agent.d.ts.map +1 -0
  283. package/dist/components/date-picker/date-picker.d.ts +16 -1
  284. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  285. package/dist/components/date-picker/index.d.ts +2 -1
  286. package/dist/components/date-picker/index.d.ts.map +1 -1
  287. package/dist/components/date-picker/index.js +3 -2
  288. package/dist/components/date-range-picker/date-range-picker.agent.d.ts +4 -0
  289. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -0
  290. package/dist/components/date-range-picker/date-range-picker.d.ts +16 -1
  291. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  292. package/dist/components/date-range-picker/index.d.ts +2 -1
  293. package/dist/components/date-range-picker/index.d.ts.map +1 -1
  294. package/dist/components/date-range-picker/index.js +3 -2
  295. package/dist/components/date-time-picker/date-time-picker.agent.d.ts +4 -0
  296. package/dist/components/date-time-picker/date-time-picker.agent.d.ts.map +1 -0
  297. package/dist/components/date-time-picker/date-time-picker.d.ts +16 -1
  298. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  299. package/dist/components/date-time-picker/index.d.ts +2 -1
  300. package/dist/components/date-time-picker/index.d.ts.map +1 -1
  301. package/dist/components/date-time-picker/index.js +3 -2
  302. package/dist/components/dialog/dialog.agent.d.ts +5 -6
  303. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  304. package/dist/components/dialog/dialog.d.ts +11 -2
  305. package/dist/components/dialog/dialog.d.ts.map +1 -1
  306. package/dist/components/dialog/index.js +1 -1
  307. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts +2 -1
  308. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
  309. package/dist/components/dropdown-menu/dropdown-menu.d.ts +10 -2
  310. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  311. package/dist/components/dropdown-menu/index.js +2 -2
  312. package/dist/components/file-upload/file-upload.agent.d.ts +2 -1
  313. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  314. package/dist/components/file-upload/file-upload.d.ts +12 -0
  315. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  316. package/dist/components/file-upload/index.js +1 -1
  317. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts +4 -0
  318. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -0
  319. package/dist/components/freemium-paywall/freemium-paywall.d.ts +8 -1
  320. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  321. package/dist/components/freemium-paywall/index.d.ts +2 -1
  322. package/dist/components/freemium-paywall/index.d.ts.map +1 -1
  323. package/dist/components/freemium-paywall/index.js +3 -2
  324. package/dist/components/index.d.ts +2 -0
  325. package/dist/components/index.d.ts.map +1 -1
  326. package/dist/components/link/index.d.ts +2 -0
  327. package/dist/components/link/index.d.ts.map +1 -0
  328. package/dist/components/link/index.js +5 -0
  329. package/dist/components/link/index.js.map +1 -0
  330. package/dist/components/link/link.d.ts +39 -0
  331. package/dist/components/link/link.d.ts.map +1 -0
  332. package/dist/components/list/index.d.ts +2 -1
  333. package/dist/components/list/index.d.ts.map +1 -1
  334. package/dist/components/list/index.js +3 -2
  335. package/dist/components/list/list.agent.d.ts +4 -0
  336. package/dist/components/list/list.agent.d.ts.map +1 -0
  337. package/dist/components/list/list.d.ts +8 -2
  338. package/dist/components/list/list.d.ts.map +1 -1
  339. package/dist/components/message-card/index.d.ts +1 -0
  340. package/dist/components/message-card/index.d.ts.map +1 -1
  341. package/dist/components/message-card/index.js +5 -3
  342. package/dist/components/message-card/index.js.map +1 -1
  343. package/dist/components/message-card/message-card.agent.d.ts +3 -0
  344. package/dist/components/message-card/message-card.agent.d.ts.map +1 -0
  345. package/dist/components/message-card/message-card.d.ts.map +1 -1
  346. package/dist/components/message-tray/index.d.ts +2 -1
  347. package/dist/components/message-tray/index.d.ts.map +1 -1
  348. package/dist/components/message-tray/index.js +3 -2
  349. package/dist/components/message-tray/message-tray.agent.d.ts +4 -0
  350. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -0
  351. package/dist/components/message-tray/message-tray.d.ts +27 -2
  352. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  353. package/dist/components/multi-select/index.js +1 -1
  354. package/dist/components/multi-select/multi-select.agent.d.ts +2 -1
  355. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  356. package/dist/components/multi-select/multi-select.d.ts +10 -0
  357. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  358. package/dist/components/navigation-menu/index.d.ts +2 -1
  359. package/dist/components/navigation-menu/index.d.ts.map +1 -1
  360. package/dist/components/navigation-menu/index.js +7 -6
  361. package/dist/components/navigation-menu/navigation-menu.agent.d.ts +4 -0
  362. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -0
  363. package/dist/components/navigation-menu/navigation-menu.d.ts +28 -2
  364. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  365. package/dist/components/notification-card/index.d.ts +1 -0
  366. package/dist/components/notification-card/index.d.ts.map +1 -1
  367. package/dist/components/notification-card/index.js +5 -3
  368. package/dist/components/notification-card/index.js.map +1 -1
  369. package/dist/components/notification-card/notification-card.agent.d.ts +3 -0
  370. package/dist/components/notification-card/notification-card.agent.d.ts.map +1 -0
  371. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  372. package/dist/components/notification-tray/index.d.ts +2 -1
  373. package/dist/components/notification-tray/index.d.ts.map +1 -1
  374. package/dist/components/notification-tray/index.js +3 -2
  375. package/dist/components/notification-tray/notification-tray.agent.d.ts +4 -0
  376. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -0
  377. package/dist/components/notification-tray/notification-tray.d.ts +27 -2
  378. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  379. package/dist/components/number-input/index.js +1 -1
  380. package/dist/components/number-input/number-input.agent.d.ts +4 -0
  381. package/dist/components/number-input/number-input.agent.d.ts.map +1 -0
  382. package/dist/components/number-input/number-input.d.ts +7 -0
  383. package/dist/components/number-input/number-input.d.ts.map +1 -1
  384. package/dist/components/otp-input/index.js +1 -1
  385. package/dist/components/otp-input/otp-input.agent.d.ts +4 -0
  386. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -0
  387. package/dist/components/otp-input/otp-input.d.ts +10 -0
  388. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  389. package/dist/components/pagination/index.js +1 -1
  390. package/dist/components/pagination/pagination.agent.d.ts +2 -1
  391. package/dist/components/pagination/pagination.agent.d.ts.map +1 -1
  392. package/dist/components/pagination/pagination.d.ts +7 -0
  393. package/dist/components/pagination/pagination.d.ts.map +1 -1
  394. package/dist/components/password-input/index.js +1 -1
  395. package/dist/components/password-input/password-input.agent.d.ts +4 -0
  396. package/dist/components/password-input/password-input.agent.d.ts.map +1 -0
  397. package/dist/components/password-input/password-input.d.ts +9 -0
  398. package/dist/components/password-input/password-input.d.ts.map +1 -1
  399. package/dist/components/payment-form/index.js +2 -2
  400. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  401. package/dist/components/payment-form/payment-form.d.ts +2 -0
  402. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  403. package/dist/components/pdf-viewer/index.js +1 -1
  404. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  405. package/dist/components/pdf-viewer/pdf-viewer.d.ts +2 -0
  406. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  407. package/dist/components/phone-input/index.js +1 -1
  408. package/dist/components/phone-input/phone-input.agent.d.ts +4 -0
  409. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -0
  410. package/dist/components/phone-input/phone-input.d.ts +7 -0
  411. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  412. package/dist/components/popover/index.js +2 -2
  413. package/dist/components/popover/popover.agent.d.ts +2 -1
  414. package/dist/components/popover/popover.agent.d.ts.map +1 -1
  415. package/dist/components/popover/popover.d.ts +8 -1
  416. package/dist/components/popover/popover.d.ts.map +1 -1
  417. package/dist/components/privacy-lock/index.d.ts +2 -1
  418. package/dist/components/privacy-lock/index.d.ts.map +1 -1
  419. package/dist/components/privacy-lock/index.js +3 -2
  420. package/dist/components/privacy-lock/privacy-lock.agent.d.ts +4 -0
  421. package/dist/components/privacy-lock/privacy-lock.agent.d.ts.map +1 -0
  422. package/dist/components/privacy-lock/privacy-lock.d.ts +7 -1
  423. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  424. package/dist/components/progress/index.js +2 -2
  425. package/dist/components/progress/progress.agent.d.ts.map +1 -1
  426. package/dist/components/progress/progress.d.ts.map +1 -1
  427. package/dist/components/radio/index.js +1 -1
  428. package/dist/components/radio-group/index.js +2 -2
  429. package/dist/components/radio-group/radio-group.agent.d.ts +4 -0
  430. package/dist/components/radio-group/radio-group.agent.d.ts.map +1 -0
  431. package/dist/components/radio-group/radio-group.d.ts +5 -0
  432. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  433. package/dist/components/radio-group/radio.d.ts.map +1 -1
  434. package/dist/components/recaptcha-widget/index.d.ts +3 -0
  435. package/dist/components/recaptcha-widget/index.d.ts.map +1 -0
  436. package/dist/components/recaptcha-widget/index.js +6 -0
  437. package/dist/components/recaptcha-widget/index.js.map +1 -0
  438. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts +4 -0
  439. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -0
  440. package/dist/components/recaptcha-widget/recaptcha-widget.d.ts +56 -0
  441. package/dist/components/recaptcha-widget/recaptcha-widget.d.ts.map +1 -0
  442. package/dist/components/resizable/index.js +1 -1
  443. package/dist/components/resizable/resizable.agent.d.ts +2 -1
  444. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  445. package/dist/components/resizable/resizable.d.ts +6 -0
  446. package/dist/components/resizable/resizable.d.ts.map +1 -1
  447. package/dist/components/rich-text-editor/index.js +1 -1
  448. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  449. package/dist/components/rich-text-editor/rich-text-editor.d.ts +2 -0
  450. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  451. package/dist/components/search-bar/index.d.ts +2 -1
  452. package/dist/components/search-bar/index.d.ts.map +1 -1
  453. package/dist/components/search-bar/index.js +3 -2
  454. package/dist/components/search-bar/search-bar.agent.d.ts +4 -0
  455. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -0
  456. package/dist/components/search-bar/search-bar.d.ts +27 -1
  457. package/dist/components/search-bar/search-bar.d.ts.map +1 -1
  458. package/dist/components/search-input/index.d.ts +2 -1
  459. package/dist/components/search-input/index.d.ts.map +1 -1
  460. package/dist/components/search-input/index.js +4 -2
  461. package/dist/components/search-input/index.js.map +1 -1
  462. package/dist/components/search-input/search-input.agent.d.ts +4 -0
  463. package/dist/components/search-input/search-input.agent.d.ts.map +1 -0
  464. package/dist/components/search-input/search-input.d.ts +27 -0
  465. package/dist/components/search-input/search-input.d.ts.map +1 -1
  466. package/dist/components/select/index.js +1 -1
  467. package/dist/components/select/select.agent.d.ts +4 -0
  468. package/dist/components/select/select.agent.d.ts.map +1 -0
  469. package/dist/components/select/select.d.ts +9 -0
  470. package/dist/components/select/select.d.ts.map +1 -1
  471. package/dist/components/sheet/index.js +2 -2
  472. package/dist/components/sheet/sheet.agent.d.ts +2 -1
  473. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  474. package/dist/components/sheet/sheet.d.ts +11 -2
  475. package/dist/components/sheet/sheet.d.ts.map +1 -1
  476. package/dist/components/sidebar/index.js +2 -2
  477. package/dist/components/sidebar/sidebar.agent.d.ts +2 -1
  478. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  479. package/dist/components/sidebar/sidebar.d.ts +6 -0
  480. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  481. package/dist/components/signature-capture/index.js +1 -1
  482. package/dist/components/signature-capture/signature-capture.agent.d.ts.map +1 -1
  483. package/dist/components/signature-capture/signature-capture.d.ts +2 -0
  484. package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
  485. package/dist/components/slider/index.js +1 -1
  486. package/dist/components/slider/slider.agent.d.ts +4 -0
  487. package/dist/components/slider/slider.agent.d.ts.map +1 -0
  488. package/dist/components/slider/slider.d.ts +5 -0
  489. package/dist/components/slider/slider.d.ts.map +1 -1
  490. package/dist/components/sparkline/index.js +1 -1
  491. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  492. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  493. package/dist/components/stepper-accordion/index.d.ts +2 -1
  494. package/dist/components/stepper-accordion/index.d.ts.map +1 -1
  495. package/dist/components/stepper-accordion/index.js +3 -2
  496. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts +4 -0
  497. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -0
  498. package/dist/components/stepper-accordion/stepper-accordion.d.ts +19 -1
  499. package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
  500. package/dist/components/stepper-calendar/index.d.ts +2 -1
  501. package/dist/components/stepper-calendar/index.d.ts.map +1 -1
  502. package/dist/components/stepper-calendar/index.js +3 -2
  503. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts +4 -0
  504. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts.map +1 -0
  505. package/dist/components/stepper-calendar/stepper-calendar.d.ts +19 -1
  506. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +1 -1
  507. package/dist/components/stepper-progress/index.d.ts +2 -1
  508. package/dist/components/stepper-progress/index.d.ts.map +1 -1
  509. package/dist/components/stepper-progress/index.js +4 -2
  510. package/dist/components/stepper-progress/index.js.map +1 -1
  511. package/dist/components/stepper-progress/stepper-progress.agent.d.ts +4 -0
  512. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -0
  513. package/dist/components/stepper-progress/stepper-progress.d.ts +26 -1
  514. package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
  515. package/dist/components/suggestion-chip/index.d.ts +2 -1
  516. package/dist/components/suggestion-chip/index.d.ts.map +1 -1
  517. package/dist/components/suggestion-chip/index.js +5 -3
  518. package/dist/components/suggestion-chip/index.js.map +1 -1
  519. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts +4 -0
  520. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -0
  521. package/dist/components/suggestion-chip/suggestion-chip.d.ts +7 -1
  522. package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
  523. package/dist/components/switch/index.js +1 -1
  524. package/dist/components/switch/switch.agent.d.ts +4 -0
  525. package/dist/components/switch/switch.agent.d.ts.map +1 -0
  526. package/dist/components/switch/switch.d.ts +6 -0
  527. package/dist/components/switch/switch.d.ts.map +1 -1
  528. package/dist/components/tabs/index.js +1 -1
  529. package/dist/components/tabs/tabs.agent.d.ts +2 -1
  530. package/dist/components/tabs/tabs.agent.d.ts.map +1 -1
  531. package/dist/components/tabs/tabs.d.ts +4 -0
  532. package/dist/components/tabs/tabs.d.ts.map +1 -1
  533. package/dist/components/task-card/index.d.ts +1 -0
  534. package/dist/components/task-card/index.d.ts.map +1 -1
  535. package/dist/components/task-card/index.js +5 -3
  536. package/dist/components/task-card/index.js.map +1 -1
  537. package/dist/components/task-card/task-card.agent.d.ts +3 -0
  538. package/dist/components/task-card/task-card.agent.d.ts.map +1 -0
  539. package/dist/components/task-card/task-card.d.ts.map +1 -1
  540. package/dist/components/task-tray/index.d.ts +2 -1
  541. package/dist/components/task-tray/index.d.ts.map +1 -1
  542. package/dist/components/task-tray/index.js +3 -2
  543. package/dist/components/task-tray/task-tray.agent.d.ts +4 -0
  544. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -0
  545. package/dist/components/task-tray/task-tray.d.ts +25 -2
  546. package/dist/components/task-tray/task-tray.d.ts.map +1 -1
  547. package/dist/components/text-area/index.js +1 -1
  548. package/dist/components/text-area/text-area.agent.d.ts +4 -0
  549. package/dist/components/text-area/text-area.agent.d.ts.map +1 -0
  550. package/dist/components/text-area/text-area.d.ts +7 -0
  551. package/dist/components/text-area/text-area.d.ts.map +1 -1
  552. package/dist/components/text-input/index.js +1 -1
  553. package/dist/components/text-input/text-input.agent.d.ts +4 -0
  554. package/dist/components/text-input/text-input.agent.d.ts.map +1 -0
  555. package/dist/components/text-input/text-input.d.ts +10 -0
  556. package/dist/components/text-input/text-input.d.ts.map +1 -1
  557. package/dist/components/theme-toggle/index.d.ts +2 -1
  558. package/dist/components/theme-toggle/index.d.ts.map +1 -1
  559. package/dist/components/theme-toggle/index.js +3 -2
  560. package/dist/components/theme-toggle/theme-toggle.agent.d.ts +4 -0
  561. package/dist/components/theme-toggle/theme-toggle.agent.d.ts.map +1 -0
  562. package/dist/components/theme-toggle/theme-toggle.d.ts +9 -2
  563. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  564. package/dist/components/time-picker/index.d.ts +2 -1
  565. package/dist/components/time-picker/index.d.ts.map +1 -1
  566. package/dist/components/time-picker/index.js +3 -2
  567. package/dist/components/time-picker/time-picker.agent.d.ts +4 -0
  568. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -0
  569. package/dist/components/time-picker/time-picker.d.ts +16 -1
  570. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  571. package/dist/components/timeline/index.d.ts +2 -1
  572. package/dist/components/timeline/index.d.ts.map +1 -1
  573. package/dist/components/timeline/index.js +3 -2
  574. package/dist/components/timeline/timeline.agent.d.ts +4 -0
  575. package/dist/components/timeline/timeline.agent.d.ts.map +1 -0
  576. package/dist/components/timeline/timeline.d.ts +8 -1
  577. package/dist/components/timeline/timeline.d.ts.map +1 -1
  578. package/dist/components/toast/index.d.ts +3 -2
  579. package/dist/components/toast/index.d.ts.map +1 -1
  580. package/dist/components/toast/index.js +7 -5
  581. package/dist/components/toast/toast.agent.d.ts +4 -0
  582. package/dist/components/toast/toast.agent.d.ts.map +1 -0
  583. package/dist/components/toast/toast.d.ts +8 -0
  584. package/dist/components/toast/toast.d.ts.map +1 -1
  585. package/dist/components/tooth-scheme/index.js +1 -1
  586. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  587. package/dist/components/tooth-scheme/tooth-scheme.d.ts +2 -0
  588. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  589. package/dist/components/transcript-panel/index.d.ts +2 -1
  590. package/dist/components/transcript-panel/index.d.ts.map +1 -1
  591. package/dist/components/transcript-panel/index.js +3 -2
  592. package/dist/components/transcript-panel/transcript-panel.agent.d.ts +4 -0
  593. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -0
  594. package/dist/components/transcript-panel/transcript-panel.d.ts +10 -1
  595. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  596. package/dist/components/workflow/index.d.ts +2 -1
  597. package/dist/components/workflow/index.d.ts.map +1 -1
  598. package/dist/components/workflow/index.js +10 -7
  599. package/dist/components/workflow/workflow-card.d.ts.map +1 -1
  600. package/dist/components/workflow/workflow-editor.d.ts +7 -1
  601. package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
  602. package/dist/components/workflow/workflow-map.d.ts +2 -0
  603. package/dist/components/workflow/workflow-map.d.ts.map +1 -1
  604. package/dist/components/workflow/workflow.agent.d.ts +6 -0
  605. package/dist/components/workflow/workflow.agent.d.ts.map +1 -0
  606. package/dist/i18n/config.d.ts.map +1 -1
  607. package/dist/i18n/config.js +24 -11
  608. package/dist/i18n/config.js.map +1 -1
  609. package/dist/i18n/resources.d.ts +7 -0
  610. package/dist/i18n/resources.d.ts.map +1 -1
  611. package/dist/index.js +471 -423
  612. package/dist/index.js.map +1 -1
  613. package/dist/locales/en.json +7 -0
  614. package/dist/patterns/leo-assistant/index.js +1 -1
  615. package/dist/patterns/patient-shell/index.js +1 -1
  616. package/dist/tokens.css +1 -1
  617. package/package.json +18 -2
  618. package/dist/_chunks/accordion-B6fyINUk.js.map +0 -1
  619. package/dist/_chunks/accordion.agent-Cz-yglRa.js +0 -17
  620. package/dist/_chunks/accordion.agent-Cz-yglRa.js.map +0 -1
  621. package/dist/_chunks/agenda-tray-BqQZwiHc.js +0 -120
  622. package/dist/_chunks/agenda-tray-BqQZwiHc.js.map +0 -1
  623. package/dist/_chunks/ai-prompt-input-CI27KmZ1.js +0 -380
  624. package/dist/_chunks/ai-prompt-input-CI27KmZ1.js.map +0 -1
  625. package/dist/_chunks/aspect-ratio-CxsdG8vk.js.map +0 -1
  626. package/dist/_chunks/audio-recorder-B-8SKgKn.js +0 -376
  627. package/dist/_chunks/audio-recorder-B-8SKgKn.js.map +0 -1
  628. package/dist/_chunks/autocomplete.agent-DqOy0_1P.js +0 -372
  629. package/dist/_chunks/autocomplete.agent-DqOy0_1P.js.map +0 -1
  630. package/dist/_chunks/breadcrumb-D6xpsP7n.js +0 -293
  631. package/dist/_chunks/breadcrumb-D6xpsP7n.js.map +0 -1
  632. package/dist/_chunks/chart.agent-BdS-_8MO.js.map +0 -1
  633. package/dist/_chunks/chat-container-Cm3SlR2p.js.map +0 -1
  634. package/dist/_chunks/chat-input-DreOPP8A.js.map +0 -1
  635. package/dist/_chunks/checkbox-DNK4qS2_.js +0 -116
  636. package/dist/_chunks/checkbox-DNK4qS2_.js.map +0 -1
  637. package/dist/_chunks/checkbox-group-CWpGZEF6.js +0 -146
  638. package/dist/_chunks/checkbox-group-CWpGZEF6.js.map +0 -1
  639. package/dist/_chunks/collapsible-D4LOdLxp.js +0 -67
  640. package/dist/_chunks/collapsible-D4LOdLxp.js.map +0 -1
  641. package/dist/_chunks/color-picker-e9PmpaGH.js.map +0 -1
  642. package/dist/_chunks/combobox.agent-ByobCLJ_.js +0 -350
  643. package/dist/_chunks/combobox.agent-ByobCLJ_.js.map +0 -1
  644. package/dist/_chunks/command-palette.agent-js2rxgeR.js.map +0 -1
  645. package/dist/_chunks/date-picker-DYXNsWmM.js +0 -1726
  646. package/dist/_chunks/date-picker-DYXNsWmM.js.map +0 -1
  647. package/dist/_chunks/date-range-picker-BcNDJI7m.js +0 -183
  648. package/dist/_chunks/date-range-picker-BcNDJI7m.js.map +0 -1
  649. package/dist/_chunks/date-time-picker-CmGiTU__.js +0 -202
  650. package/dist/_chunks/date-time-picker-CmGiTU__.js.map +0 -1
  651. package/dist/_chunks/dialog.agent-DEG_fVzG.js +0 -147
  652. package/dist/_chunks/dialog.agent-DEG_fVzG.js.map +0 -1
  653. package/dist/_chunks/dropdown-menu-Cw3EyPZv.js.map +0 -1
  654. package/dist/_chunks/dropdown-menu.agent-Cry4Nmes.js +0 -17
  655. package/dist/_chunks/dropdown-menu.agent-Cry4Nmes.js.map +0 -1
  656. package/dist/_chunks/file-upload.agent-B9AN82LA.js.map +0 -1
  657. package/dist/_chunks/freemium-paywall-CkefGLM_.js +0 -198
  658. package/dist/_chunks/freemium-paywall-CkefGLM_.js.map +0 -1
  659. package/dist/_chunks/list-B1ozIjQe.js +0 -359
  660. package/dist/_chunks/list-B1ozIjQe.js.map +0 -1
  661. package/dist/_chunks/message-card-qAp2-WQK.js.map +0 -1
  662. package/dist/_chunks/message-tray-VaLpQU5t.js +0 -303
  663. package/dist/_chunks/message-tray-VaLpQU5t.js.map +0 -1
  664. package/dist/_chunks/multi-select.agent-CNsyW3n9.js.map +0 -1
  665. package/dist/_chunks/navigation-menu-EVFau1O2.js +0 -180
  666. package/dist/_chunks/navigation-menu-EVFau1O2.js.map +0 -1
  667. package/dist/_chunks/notification-tray-B7U5YZYg.js +0 -328
  668. package/dist/_chunks/notification-tray-B7U5YZYg.js.map +0 -1
  669. package/dist/_chunks/number-input-DjpT_RXJ.js +0 -249
  670. package/dist/_chunks/number-input-DjpT_RXJ.js.map +0 -1
  671. package/dist/_chunks/otp-input-De5_Ih7B.js +0 -189
  672. package/dist/_chunks/otp-input-De5_Ih7B.js.map +0 -1
  673. package/dist/_chunks/pagination.agent-oEaqmtx5.js +0 -380
  674. package/dist/_chunks/pagination.agent-oEaqmtx5.js.map +0 -1
  675. package/dist/_chunks/password-input-DJDVznWH.js +0 -193
  676. package/dist/_chunks/password-input-DJDVznWH.js.map +0 -1
  677. package/dist/_chunks/payment-form-hcl-gGrp.js.map +0 -1
  678. package/dist/_chunks/payment-form.agent-BkEnRerR.js.map +0 -1
  679. package/dist/_chunks/pdf-viewer.agent-CfIHhcHx.js.map +0 -1
  680. package/dist/_chunks/phone-input-DE_39q65.js +0 -428
  681. package/dist/_chunks/phone-input-DE_39q65.js.map +0 -1
  682. package/dist/_chunks/popover-C3CTUsqh.js +0 -227
  683. package/dist/_chunks/popover-C3CTUsqh.js.map +0 -1
  684. package/dist/_chunks/popover.agent-C0qOx9WT.js +0 -13
  685. package/dist/_chunks/popover.agent-C0qOx9WT.js.map +0 -1
  686. package/dist/_chunks/privacy-lock-CQpgkLec.js +0 -132
  687. package/dist/_chunks/privacy-lock-CQpgkLec.js.map +0 -1
  688. package/dist/_chunks/progress-B4Of_pzz.js +0 -252
  689. package/dist/_chunks/progress-B4Of_pzz.js.map +0 -1
  690. package/dist/_chunks/progress.agent-CXkHURjX.js +0 -22
  691. package/dist/_chunks/progress.agent-CXkHURjX.js.map +0 -1
  692. package/dist/_chunks/radio-cs8N1wJi.js.map +0 -1
  693. package/dist/_chunks/radio-group-BIUbpWml.js +0 -89
  694. package/dist/_chunks/radio-group-BIUbpWml.js.map +0 -1
  695. package/dist/_chunks/resizable.agent-DBpPGNdy.js +0 -435
  696. package/dist/_chunks/resizable.agent-DBpPGNdy.js.map +0 -1
  697. package/dist/_chunks/rich-text-editor.agent-COSb5_2D.js.map +0 -1
  698. package/dist/_chunks/search-bar-fcGqDFW3.js +0 -397
  699. package/dist/_chunks/search-bar-fcGqDFW3.js.map +0 -1
  700. package/dist/_chunks/search-input-BVMCONyN.js +0 -197
  701. package/dist/_chunks/search-input-BVMCONyN.js.map +0 -1
  702. package/dist/_chunks/select-IY_JQa-F.js +0 -321
  703. package/dist/_chunks/select-IY_JQa-F.js.map +0 -1
  704. package/dist/_chunks/sheet-BhNpLHc9.js.map +0 -1
  705. package/dist/_chunks/sheet.agent-DwQlBqK9.js +0 -13
  706. package/dist/_chunks/sheet.agent-DwQlBqK9.js.map +0 -1
  707. package/dist/_chunks/sidebar-OVzwN3jE.js.map +0 -1
  708. package/dist/_chunks/sidebar.agent-B0fnH9CC.js +0 -17
  709. package/dist/_chunks/sidebar.agent-B0fnH9CC.js.map +0 -1
  710. package/dist/_chunks/signature-capture.agent-C38VPXxg.js.map +0 -1
  711. package/dist/_chunks/slider-DjyRt3Mp.js +0 -274
  712. package/dist/_chunks/slider-DjyRt3Mp.js.map +0 -1
  713. package/dist/_chunks/sparkline.agent-C_xp3NRB.js +0 -238
  714. package/dist/_chunks/sparkline.agent-C_xp3NRB.js.map +0 -1
  715. package/dist/_chunks/stepper-accordion-CGog0JSF.js +0 -233
  716. package/dist/_chunks/stepper-accordion-CGog0JSF.js.map +0 -1
  717. package/dist/_chunks/stepper-calendar-_fLOAjus.js +0 -570
  718. package/dist/_chunks/stepper-calendar-_fLOAjus.js.map +0 -1
  719. package/dist/_chunks/stepper-progress-rE7tn7WY.js +0 -129
  720. package/dist/_chunks/stepper-progress-rE7tn7WY.js.map +0 -1
  721. package/dist/_chunks/suggestion-chip-BNJ2M8Os.js +0 -158
  722. package/dist/_chunks/suggestion-chip-BNJ2M8Os.js.map +0 -1
  723. package/dist/_chunks/switch-aN2EYxHh.js +0 -138
  724. package/dist/_chunks/switch-aN2EYxHh.js.map +0 -1
  725. package/dist/_chunks/tabs.agent-BpbVA-Zh.js.map +0 -1
  726. package/dist/_chunks/task-tray-BzahI5FQ.js +0 -100
  727. package/dist/_chunks/task-tray-BzahI5FQ.js.map +0 -1
  728. package/dist/_chunks/text-area-DmKSd2DG.js +0 -152
  729. package/dist/_chunks/text-area-DmKSd2DG.js.map +0 -1
  730. package/dist/_chunks/text-input-CRHvl5zk.js +0 -188
  731. package/dist/_chunks/text-input-CRHvl5zk.js.map +0 -1
  732. package/dist/_chunks/theme-toggle-BHiMMEQN.js +0 -329
  733. package/dist/_chunks/theme-toggle-BHiMMEQN.js.map +0 -1
  734. package/dist/_chunks/time-picker-D-EueWUG.js +0 -322
  735. package/dist/_chunks/time-picker-D-EueWUG.js.map +0 -1
  736. package/dist/_chunks/timeline-RgAIzpMd.js +0 -220
  737. package/dist/_chunks/timeline-RgAIzpMd.js.map +0 -1
  738. package/dist/_chunks/toast-lOhJDKOH.js.map +0 -1
  739. package/dist/_chunks/tooth-scheme.agent-BlDyu-Gx.js.map +0 -1
  740. package/dist/_chunks/transcript-panel-CNbVGG9L.js +0 -266
  741. package/dist/_chunks/transcript-panel-CNbVGG9L.js.map +0 -1
  742. package/dist/_chunks/workflow-map-XeqHDFvp.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"rich-text-editor.agent-COSb5_2D.js","sources":["../../node_modules/lucide-react/dist/esm/icons/bold.js","../../node_modules/lucide-react/dist/esm/icons/code.js","../../node_modules/lucide-react/dist/esm/icons/image.js","../../node_modules/lucide-react/dist/esm/icons/italic.js","../../node_modules/lucide-react/dist/esm/icons/link-2.js","../../node_modules/lucide-react/dist/esm/icons/list-ordered.js","../../node_modules/lucide-react/dist/esm/icons/list.js","../../node_modules/lucide-react/dist/esm/icons/minus.js","../../node_modules/lucide-react/dist/esm/icons/quote.js","../../node_modules/lucide-react/dist/esm/icons/redo.js","../../node_modules/lucide-react/dist/esm/icons/table.js","../../node_modules/lucide-react/dist/esm/icons/undo.js","../../src/components/rich-text-editor/rich-text-editor.tsx","../../src/components/rich-text-editor/rich-text-editor.agent.ts"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n { d: \"M6 12h9a4 4 0 0 1 0 8H7a1 1 0 0 1-1-1V5a1 1 0 0 1 1-1h7a4 4 0 0 1 0 8\", key: \"mg9rjx\" }\n ]\n];\nconst Bold = createLucideIcon(\"bold\", __iconNode);\n\nexport { __iconNode, Bold as default };\n//# sourceMappingURL=bold.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"m16 18 6-6-6-6\", key: \"eg8j8\" }],\n [\"path\", { d: \"m8 6-6 6 6 6\", key: \"ppft3o\" }]\n];\nconst Code = createLucideIcon(\"code\", __iconNode);\n\nexport { __iconNode, Code as default };\n//# sourceMappingURL=code.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", ry: \"2\", key: \"1m3agn\" }],\n [\"circle\", { cx: \"9\", cy: \"9\", r: \"2\", key: \"af1f0g\" }],\n [\"path\", { d: \"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21\", key: \"1xmnt7\" }]\n];\nconst Image = createLucideIcon(\"image\", __iconNode);\n\nexport { __iconNode, Image as default };\n//# sourceMappingURL=image.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"line\", { x1: \"19\", x2: \"10\", y1: \"4\", y2: \"4\", key: \"15jd3p\" }],\n [\"line\", { x1: \"14\", x2: \"5\", y1: \"20\", y2: \"20\", key: \"bu0au3\" }],\n [\"line\", { x1: \"15\", x2: \"9\", y1: \"4\", y2: \"20\", key: \"uljnxc\" }]\n];\nconst Italic = createLucideIcon(\"italic\", __iconNode);\n\nexport { __iconNode, Italic as default };\n//# sourceMappingURL=italic.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M9 17H7A5 5 0 0 1 7 7h2\", key: \"8i5ue5\" }],\n [\"path\", { d: \"M15 7h2a5 5 0 1 1 0 10h-2\", key: \"1b9ql8\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"12\", y2: \"12\", key: \"1jonct\" }]\n];\nconst Link2 = createLucideIcon(\"link-2\", __iconNode);\n\nexport { __iconNode, Link2 as default };\n//# sourceMappingURL=link-2.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M11 5h10\", key: \"1cz7ny\" }],\n [\"path\", { d: \"M11 12h10\", key: \"1438ji\" }],\n [\"path\", { d: \"M11 19h10\", key: \"11t30w\" }],\n [\"path\", { d: \"M4 4h1v5\", key: \"10yrso\" }],\n [\"path\", { d: \"M4 9h2\", key: \"r1h2o0\" }],\n [\"path\", { d: \"M6.5 20H3.4c0-1 2.6-1.925 2.6-3.5a1.5 1.5 0 0 0-2.6-1.02\", key: \"xtkcd5\" }]\n];\nconst ListOrdered = createLucideIcon(\"list-ordered\", __iconNode);\n\nexport { __iconNode, ListOrdered as default };\n//# sourceMappingURL=list-ordered.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 5h.01\", key: \"18ugdj\" }],\n [\"path\", { d: \"M3 12h.01\", key: \"nlz23k\" }],\n [\"path\", { d: \"M3 19h.01\", key: \"noohij\" }],\n [\"path\", { d: \"M8 5h13\", key: \"1pao27\" }],\n [\"path\", { d: \"M8 12h13\", key: \"1za7za\" }],\n [\"path\", { d: \"M8 19h13\", key: \"m83p4d\" }]\n];\nconst List = createLucideIcon(\"list\", __iconNode);\n\nexport { __iconNode, List as default };\n//# sourceMappingURL=list.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }]];\nconst Minus = createLucideIcon(\"minus\", __iconNode);\n\nexport { __iconNode, Minus as default };\n//# sourceMappingURL=minus.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M16 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z\",\n key: \"rib7q0\"\n }\n ],\n [\n \"path\",\n {\n d: \"M5 3a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2 1 1 0 0 1 1 1v1a2 2 0 0 1-2 2 1 1 0 0 0-1 1v2a1 1 0 0 0 1 1 6 6 0 0 0 6-6V5a2 2 0 0 0-2-2z\",\n key: \"1ymkrd\"\n }\n ]\n];\nconst Quote = createLucideIcon(\"quote\", __iconNode);\n\nexport { __iconNode, Quote as default };\n//# sourceMappingURL=quote.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M21 7v6h-6\", key: \"3ptur4\" }],\n [\"path\", { d: \"M3 17a9 9 0 0 1 9-9 9 9 0 0 1 6 2.3l3 2.7\", key: \"1kgawr\" }]\n];\nconst Redo = createLucideIcon(\"redo\", __iconNode);\n\nexport { __iconNode, Redo as default };\n//# sourceMappingURL=redo.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M12 3v18\", key: \"108xh3\" }],\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }],\n [\"path\", { d: \"M3 9h18\", key: \"1pudct\" }],\n [\"path\", { d: \"M3 15h18\", key: \"5xshup\" }]\n];\nconst Table = createLucideIcon(\"table\", __iconNode);\n\nexport { __iconNode, Table as default };\n//# sourceMappingURL=table.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M3 7v6h6\", key: \"1v2h90\" }],\n [\"path\", { d: \"M21 17a9 9 0 0 0-9-9 9 9 0 0 0-6 2.3L3 13\", key: \"1r6uu6\" }]\n];\nconst Undo = createLucideIcon(\"undo\", __iconNode);\n\nexport { __iconNode, Undo as default };\n//# sourceMappingURL=undo.js.map\n","/* ------------------------------------------------------------------ */\n/* RichTextEditor — thin, secure wrapper over Tiptap (`@tiptap/react`). */\n/* */\n/* - Extensions: StarterKit + Link + Image + Table family + */\n/* tiptap-markdown. Static imports — no lazy loading in this pass */\n/* (see TODO below). */\n/* - Security: a `transformPastedHTML` hook runs everything pasted */\n/* through DOMPurify with an explicit FORBID list, and the imperative*/\n/* `setContent` handle reuses the same sanitiser. */\n/* - Link: the scheme allow-list is `http | https | mailto | tel`. */\n/* `javascript:` and `data:` hrefs are rejected by the `validate` */\n/* callback. */\n/* - Accessibility: toolbar is a WAI-ARIA toolbar with roving */\n/* tabindex, Home/End/ArrowLeft/ArrowRight semantics, `aria-pressed` */\n/* reflecting `editor.isActive(...)`, and `aria-disabled` in place */\n/* of the `disabled` HTML attribute so screen readers can still */\n/* focus the controls. */\n/* - i18n: every tooltip / aria-label comes from `t('editor.*')`. */\n/* Placeholder default goes through `t('editor.placeholder')`. */\n/* When `document.dir === 'rtl'` the toolbar mirrors via a CVA */\n/* compound variant. */\n/* - Cmd/Ctrl+/ opens a Radix Dialog with the keyboard-shortcut */\n/* cheat sheet (all strings translated). */\n/* */\n/* TODO: dynamic `import()` of heavier extensions (image, table) once */\n/* the bundle-split story is set up. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent as ReactKeyboardEvent,\n type MouseEvent as ReactMouseEvent,\n type ReactNode,\n} from 'react';\nimport { useEditor, EditorContent, type Editor } from '@tiptap/react';\nimport StarterKit from '@tiptap/starter-kit';\nimport Link from '@tiptap/extension-link';\nimport Image from '@tiptap/extension-image';\nimport { Table } from '@tiptap/extension-table';\nimport TableRow from '@tiptap/extension-table-row';\nimport TableCell from '@tiptap/extension-table-cell';\nimport TableHeader from '@tiptap/extension-table-header';\nimport { Markdown } from 'tiptap-markdown';\nimport DOMPurify, { type Config as DOMPurifyConfig } from 'dompurify';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport {\n Bold,\n Italic,\n Link2,\n List,\n ListOrdered,\n Quote,\n Image as ImageIcon,\n Table as TableIcon,\n Code,\n Minus,\n Undo,\n Redo,\n ChevronDown,\n X,\n} from 'lucide-react';\n\nimport '../../tokens/themes/bridges/tiptap-theme.css';\n\nimport { safeImageSrc } from '../_shared';\n\n/* ------------------------------------------------------------------ */\n/* Sanitisation */\n/* ------------------------------------------------------------------ */\n\n// DOMPurify strips all `on*` attributes by defaults; the explicit FORBID_ATTR\n// list is defence-in-depth, not a replacement for defaults. FORBID_TAGS adds\n// tags that aren't stripped by defaults in every configuration: `<form>` (CSRF\n// via action injection), `<object>`/`<embed>` (plugin surface), `<base>`/\n// `<meta>` (URL rewriting). See user story security-hardening.mdx.\nconst PURIFY_CONFIG: DOMPurifyConfig = {\n FORBID_TAGS: [\n 'script',\n 'style',\n 'iframe',\n 'object',\n 'embed',\n 'form',\n 'base',\n 'meta',\n ],\n FORBID_ATTR: [\n 'onerror',\n 'onclick',\n 'onload',\n 'onmouseover',\n 'onfocus',\n 'onblur',\n ],\n};\n\nfunction sanitiseHtml(input: string): string {\n return DOMPurify.sanitize(input, PURIFY_CONFIG) as unknown as string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type RichTextEditorToolbar = 'minimal' | 'standard' | 'full';\n\nexport interface RichTextEditorProps {\n /** HTML or Markdown initial value. Runs through DOMPurify. */\n defaultValue?: string;\n /** Controlled value (HTML). */\n value?: string;\n /** Emits on every change — debounced by 100ms. */\n onChange?: (payload: { html: string; markdown: string }) => void;\n /** Toolbar preset. */\n toolbar?: RichTextEditorToolbar;\n /** Placeholder text — translates via useTranslation if omitted. */\n placeholder?: string;\n /** Read-only mode. */\n readOnly?: boolean;\n /** Accessible name for the editing region. */\n ariaLabel?: string;\n /** Size variant for the minimum block-size of the editing region. */\n minHeight?: 'sm' | 'md' | 'lg';\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface RichTextEditorHandle {\n getHTML: () => string;\n getMarkdown: () => string;\n /** HTML goes through DOMPurify before reaching Tiptap. */\n setContent: (html: string) => void;\n focus: () => void;\n clear: () => void;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva(\n 'tiptap-theme-alfadocs ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]',\n);\n\nconst toolbarVariants = cva(\n [\n 'ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:p-[var(--spacing-xs)]',\n ].join(' '),\n {\n variants: {\n direction: {\n ltr: '',\n rtl: 'ds:flex-row-reverse',\n },\n },\n defaultVariants: { direction: 'ltr' },\n },\n);\n\nconst toolbarButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:min-inline-size-[var(--min-target-size)]',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:bg-transparent ds:text-[var(--foreground)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n ].join(' '),\n {\n variants: {\n pressed: {\n true: 'ds:bg-[var(--muted)] ds:text-[var(--primary)]',\n false: '',\n },\n disabled: {\n true: 'ds:opacity-[var(--opacity-50)] ds:cursor-not-allowed',\n false: '',\n },\n },\n defaultVariants: { pressed: false, disabled: false },\n },\n);\n\nconst editorSurfaceVariants = cva(\n [\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Toolbar presets — which commands to expose */\n/* ------------------------------------------------------------------ */\n\ntype ToolbarItemKey =\n | 'bold'\n | 'italic'\n | 'link'\n | 'heading'\n | 'bulletList'\n | 'orderedList'\n | 'quote'\n | 'image'\n | 'table'\n | 'codeBlock'\n | 'horizontalRule'\n | 'undo'\n | 'redo';\n\nconst PRESETS: Record<RichTextEditorToolbar, ToolbarItemKey[]> = {\n minimal: ['bold', 'italic', 'link'],\n standard: [\n 'bold',\n 'italic',\n 'link',\n 'heading',\n 'bulletList',\n 'orderedList',\n 'quote',\n ],\n full: [\n 'bold',\n 'italic',\n 'link',\n 'heading',\n 'bulletList',\n 'orderedList',\n 'quote',\n 'image',\n 'table',\n 'codeBlock',\n 'horizontalRule',\n 'undo',\n 'redo',\n ],\n};\n\n/* ------------------------------------------------------------------ */\n/* Heading dropdown (Radix-free to keep the toolbar in one <div>) */\n/* The dropdown is a `details`-free popover implemented with a button */\n/* + a collapsible listbox wired into the roving-tabindex loop. */\n/* ------------------------------------------------------------------ */\n\ninterface HeadingSelectProps {\n editor: Editor;\n registerRef: (el: HTMLButtonElement | null) => void;\n tabIndex: number;\n onFocus: () => void;\n onKeyDown: (event: ReactKeyboardEvent<HTMLButtonElement>) => void;\n label: string;\n disabled: boolean;\n pressed: boolean;\n}\n\nfunction HeadingSelect({\n editor,\n registerRef,\n tabIndex,\n onFocus,\n onKeyDown,\n label,\n disabled,\n pressed,\n}: HeadingSelectProps): ReactNode {\n const [open, setOpen] = useState(false);\n const rootRef = useRef<HTMLDivElement>(null);\n\n useEffect(() => {\n if (!open) return undefined;\n function handler(event: globalThis.MouseEvent) {\n const target = event.target as Node | null;\n if (rootRef.current && target && !rootRef.current.contains(target)) {\n setOpen(false);\n }\n }\n document.addEventListener('mousedown', handler);\n return () => document.removeEventListener('mousedown', handler);\n }, [open]);\n\n function apply(level: 1 | 2 | 3): void {\n editor.chain().focus().toggleHeading({ level }).run();\n setOpen(false);\n }\n\n return (\n <div ref={rootRef} className=\"ds:relative ds:inline-flex\">\n <button\n type=\"button\"\n ref={registerRef}\n tabIndex={tabIndex}\n onFocus={onFocus}\n onKeyDown={onKeyDown}\n onClick={() => {\n if (!disabled) setOpen((v) => !v);\n }}\n aria-haspopup=\"listbox\"\n aria-expanded={open}\n aria-disabled={disabled || undefined}\n aria-label={label}\n title={label}\n className={toolbarButtonVariants({ pressed, disabled })}\n >\n <span aria-hidden=\"true\" className=\"ds:text-[length:var(--font-size-sm)] ds:font-semibold\">\n H\n </span>\n <ChevronDown aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />\n </button>\n {open && !disabled ? (\n <ul\n role=\"listbox\"\n aria-label={label}\n className={[\n 'ds:absolute ds:top-full ds:mt-[var(--spacing-xs)] ds:start-0 ds:z-[var(--z-dropdown)]',\n 'ds:min-inline-size-[8rem] ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)] ds:bg-[var(--background)]',\n 'ds:shadow-[var(--shadow-lg)] ds:p-[var(--spacing-xs)]',\n ].join(' ')}\n >\n {[1, 2, 3].map((level) => (\n <li key={level} role=\"none\">\n <button\n type=\"button\"\n role=\"option\"\n aria-selected={editor.isActive('heading', { level }) || undefined}\n onClick={() => apply(level as 1 | 2 | 3)}\n className={[\n 'ds:flex ds:w-full ds:items-center',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)] ds:text-start',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n >\n {`H${level}`}\n </button>\n </li>\n ))}\n </ul>\n ) : null}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Keyboard-shortcuts cheat sheet */\n/* ------------------------------------------------------------------ */\n\ninterface ShortcutsDialogProps {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\nfunction ShortcutsDialog({ open, onOpenChange }: ShortcutsDialogProps): ReactNode {\n const { t } = useTranslation();\n return (\n <RadixDialog.Root open={open} onOpenChange={onOpenChange}>\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n className={[\n 'ds:fixed ds:inset-0 ds:z-[var(--z-modal-backdrop)]',\n 'ds:bg-[var(--background)]/[var(--opacity-70)]',\n 'ds:backdrop-blur-sm',\n ].join(' ')}\n />\n <RadixDialog.Content\n className={[\n 'ds:fixed ds:z-[var(--z-modal)]',\n 'ds:start-1/2 ds:top-1/2 ds:-translate-x-1/2 ds:-translate-y-1/2',\n 'ds:w-[calc(100%-var(--spacing-lg)*2)] ds:max-w-[var(--dialog-width-md)]',\n 'ds:rounded-[var(--radius-lg)]',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-xl)] ds:p-[var(--spacing-lg)]',\n 'ds:focus-visible:outline-none',\n ].join(' ')}\n >\n <div className=\"ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-md)]\">\n <RadixDialog.Title\n className=\"type-title-card ds:leading-snug\"\n >\n {t('editor.shortcuts.title')}\n </RadixDialog.Title>\n <RadixDialog.Close asChild>\n <button\n type=\"button\"\n aria-label={t('editor.shortcuts.close')}\n className={[\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-block-size-[var(--min-target-size)]',\n 'ds:min-inline-size-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:hover:bg-[var(--muted)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n >\n <X aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />\n </button>\n </RadixDialog.Close>\n </div>\n <ul className=\"ds:mt-[var(--spacing-md)] ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {[\n { key: 'editor.shortcuts.bold', combo: '⌘/Ctrl + B' },\n { key: 'editor.shortcuts.italic', combo: '⌘/Ctrl + I' },\n { key: 'editor.shortcuts.link', combo: '⌘/Ctrl + K' },\n { key: 'editor.shortcuts.undo', combo: '⌘/Ctrl + Z' },\n { key: 'editor.shortcuts.redo', combo: '⌘/Ctrl + Shift + Z' },\n { key: 'editor.shortcuts.open', combo: '⌘/Ctrl + /' },\n ].map((row) => (\n <li\n key={row.key}\n className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-md)]\"\n >\n <span className=\"ds:text-[length:var(--font-size-sm)]\">{t(row.key)}</span>\n <kbd\n className={[\n 'ds:font-[var(--font-mono)] ds:text-[length:var(--font-size-xs)]',\n 'ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:bg-[var(--muted)]',\n ].join(' ')}\n >\n {row.combo}\n </kbd>\n </li>\n ))}\n </ul>\n </RadixDialog.Content>\n </RadixDialog.Portal>\n </RadixDialog.Root>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* RichTextEditor */\n/* ------------------------------------------------------------------ */\n\nexport const RichTextEditor = forwardRef<RichTextEditorHandle, RichTextEditorProps>(\n (\n {\n defaultValue,\n value,\n onChange,\n toolbar = 'standard',\n placeholder,\n readOnly = false,\n ariaLabel,\n minHeight,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const rawId = useId();\n const editorId = useMemo(\n () => `rte-${rawId.replace(/[^a-zA-Z0-9-_]/g, '')}`,\n [rawId],\n );\n\n const [isRtl, setIsRtl] = useState(false);\n useEffect(() => {\n if (typeof document === 'undefined') return;\n setIsRtl(document.documentElement.dir === 'rtl');\n }, []);\n\n const [shortcutsOpen, setShortcutsOpen] = useState(false);\n\n /* ---- onChange debounce ref ----------------------------------- */\n const debounceRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const onChangeRef = useRef<RichTextEditorProps['onChange']>(onChange);\n useEffect(() => {\n onChangeRef.current = onChange;\n }, [onChange]);\n\n /* ---- Tiptap editor ------------------------------------------- */\n const initialContent = useMemo(() => {\n const raw = value ?? defaultValue ?? '';\n return raw ? sanitiseHtml(raw) : '';\n }, [defaultValue, value]);\n\n const editor = useEditor({\n extensions: [\n StarterKit.configure({\n heading: { levels: [1, 2, 3] },\n }),\n Link.configure({\n protocols: ['http', 'https', 'mailto', 'tel'],\n HTMLAttributes: {\n rel: 'noopener noreferrer',\n target: '_blank',\n },\n validate: (href: string) => /^(https?:|mailto:|tel:)/i.test(href),\n }),\n Image,\n Table.configure({ resizable: false }),\n TableRow,\n TableCell,\n TableHeader,\n Markdown.configure({\n html: false,\n transformPastedText: true,\n }),\n ],\n content: initialContent,\n editable: !readOnly,\n immediatelyRender: false,\n shouldRerenderOnTransaction: true,\n editorProps: {\n attributes: {\n role: 'textbox',\n 'aria-multiline': 'true',\n 'aria-label': ariaLabel ?? t('editor.placeholder'),\n 'data-placeholder': placeholder ?? t('editor.placeholder'),\n },\n transformPastedHTML(html: string): string {\n return sanitiseHtml(html);\n },\n handleKeyDown(_, event): boolean {\n if ((event.metaKey || event.ctrlKey) && event.key === '/') {\n event.preventDefault();\n setShortcutsOpen(true);\n return true;\n }\n return false;\n },\n },\n onUpdate({ editor: updatedEditor }) {\n if (!onChangeRef.current) return;\n if (debounceRef.current) clearTimeout(debounceRef.current);\n debounceRef.current = setTimeout(() => {\n const html = updatedEditor.getHTML();\n const storage = updatedEditor.storage as { markdown?: { getMarkdown: () => string } };\n const markdown = storage.markdown?.getMarkdown?.() ?? '';\n onChangeRef.current?.({ html, markdown });\n }, 100);\n },\n });\n\n /* ---- Cleanup debounce on unmount ----------------------------- */\n useEffect(() => {\n return () => {\n if (debounceRef.current) clearTimeout(debounceRef.current);\n };\n }, []);\n\n /* ---- Keep readOnly in sync with prop ------------------------- */\n useEffect(() => {\n if (!editor) return;\n editor.setEditable(!readOnly);\n }, [editor, readOnly]);\n\n /* ---- Keep controlled `value` in sync ------------------------- */\n useEffect(() => {\n if (!editor || value === undefined) return;\n const current = editor.getHTML();\n if (current === value) return;\n const safe = sanitiseHtml(value);\n editor.commands.setContent(safe, { emitUpdate: false });\n }, [editor, value]);\n\n /* ---- Imperative handle --------------------------------------- */\n useImperativeHandle(\n ref,\n () => ({\n getHTML(): string {\n return editor?.getHTML() ?? '';\n },\n getMarkdown(): string {\n if (!editor) return '';\n const storage = editor.storage as {\n markdown?: { getMarkdown: () => string };\n };\n return storage.markdown?.getMarkdown?.() ?? '';\n },\n setContent(html: string): void {\n if (!editor) return;\n const safe = sanitiseHtml(html);\n editor.commands.setContent(safe);\n },\n focus(): void {\n editor?.commands.focus();\n },\n clear(): void {\n editor?.commands.clearContent();\n },\n }),\n [editor],\n );\n\n /* ---- Toolbar roving tabindex --------------------------------- */\n const buttonsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n\n const items = useMemo(() => PRESETS[toolbar], [toolbar]);\n\n const registerButton = useCallback(\n (index: number) => (el: HTMLButtonElement | null) => {\n buttonsRef.current[index] = el;\n },\n [],\n );\n\n const focusButton = useCallback((index: number) => {\n const btn = buttonsRef.current[index];\n if (btn) btn.focus();\n }, []);\n\n const handleToolbarKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLButtonElement>) => {\n const count = items.length;\n if (count === 0) return;\n // In RTL, Left/Right arrows swap inline meaning.\n const forward = isRtl ? 'ArrowLeft' : 'ArrowRight';\n const backward = isRtl ? 'ArrowRight' : 'ArrowLeft';\n\n let next: number | null = null;\n if (event.key === forward) next = (focusIndex + 1) % count;\n else if (event.key === backward) next = (focusIndex - 1 + count) % count;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n\n if (next !== null) {\n event.preventDefault();\n setFocusIndex(next);\n focusButton(next);\n }\n },\n [focusIndex, focusButton, isRtl, items.length],\n );\n\n /* ---- Link handler ------------------------------------------- */\n const promptForLink = useCallback(\n (event: ReactMouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n if (!editor) return;\n const existing = editor.getAttributes('link').href as string | undefined;\n const raw = window.prompt(t('editor.link.insert'), existing ?? '');\n if (raw === null) return;\n const trimmed = raw.trim();\n if (trimmed === '') {\n editor.chain().focus().unsetLink().run();\n return;\n }\n if (!/^(https?:|mailto:|tel:)/i.test(trimmed)) {\n // Reject unsafe scheme silently — validate() in the extension also\n // blocks it, but we short-circuit before Tiptap ever sees it.\n return;\n }\n editor.chain().focus().extendMarkRange('link').setLink({ href: trimmed }).run();\n },\n [editor, t],\n );\n\n /* ---- Image handler ------------------------------------------ */\n // Raster-only via the shared allow-list — rejects data:image/svg+xml and\n // other XSS vectors. Sharing the helper keeps the two call sites from\n // drifting. See security-hardening.mdx.\n const promptForImage = useCallback(() => {\n if (!editor) return;\n const raw = window.prompt(t('editor.image.insert'), '');\n if (raw === null) return;\n const validated = safeImageSrc(raw);\n if (!validated) return;\n editor.chain().focus().setImage({ src: validated }).run();\n }, [editor, t]);\n\n /* ---- Render button map -------------------------------------- */\n function renderItem(\n key: ToolbarItemKey,\n index: number,\n ): ReactNode {\n if (!editor) return null;\n\n const registerRef = registerButton(index);\n const common = {\n tabIndex: index === focusIndex ? 0 : -1,\n onFocus: () => setFocusIndex(index),\n onKeyDown: handleToolbarKeyDown,\n };\n\n const buttonClass = (pressed: boolean, disabled: boolean): string =>\n toolbarButtonVariants({ pressed, disabled });\n\n function toggleButton(opts: {\n label: string;\n pressed: boolean;\n disabled: boolean;\n /** Space-separated modifier+key strings, e.g. \"Control+B Meta+B\". */\n shortcut?: string;\n onActivate: () => void;\n icon: ReactNode;\n }): ReactNode {\n return (\n <button\n type=\"button\"\n ref={registerRef}\n {...common}\n aria-label={opts.label}\n aria-pressed={opts.pressed}\n aria-disabled={opts.disabled || undefined}\n aria-keyshortcuts={opts.shortcut}\n title={opts.label}\n onClick={(event) => {\n event.preventDefault();\n if (!opts.disabled) opts.onActivate();\n }}\n className={buttonClass(opts.pressed, opts.disabled)}\n >\n {opts.icon}\n </button>\n );\n }\n\n function actionButton(opts: {\n label: string;\n disabled: boolean;\n shortcut?: string;\n onActivate: (event: ReactMouseEvent<HTMLButtonElement>) => void;\n icon: ReactNode;\n }): ReactNode {\n return (\n <button\n type=\"button\"\n ref={registerRef}\n {...common}\n aria-label={opts.label}\n aria-disabled={opts.disabled || undefined}\n aria-keyshortcuts={opts.shortcut}\n title={opts.label}\n onClick={(event) => {\n if (opts.disabled) {\n event.preventDefault();\n return;\n }\n opts.onActivate(event);\n }}\n className={buttonClass(false, opts.disabled)}\n >\n {opts.icon}\n </button>\n );\n }\n\n switch (key) {\n case 'bold':\n return toggleButton({\n label: t('editor.bold'),\n pressed: editor.isActive('bold'),\n disabled: readOnly,\n shortcut: 'Control+B Meta+B',\n onActivate: () => editor.chain().focus().toggleBold().run(),\n icon: <Bold aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'italic':\n return toggleButton({\n label: t('editor.italic'),\n pressed: editor.isActive('italic'),\n disabled: readOnly,\n shortcut: 'Control+I Meta+I',\n onActivate: () => editor.chain().focus().toggleItalic().run(),\n icon: <Italic aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'link':\n return actionButton({\n label: t('editor.link.insert'),\n disabled: readOnly,\n shortcut: 'Control+K Meta+K',\n onActivate: promptForLink,\n icon: <Link2 aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'heading':\n return (\n <HeadingSelect\n editor={editor}\n registerRef={registerRef}\n tabIndex={index === focusIndex ? 0 : -1}\n onFocus={() => setFocusIndex(index)}\n onKeyDown={handleToolbarKeyDown}\n label={t('editor.heading')}\n disabled={readOnly}\n pressed={\n editor.isActive('heading', { level: 1 }) ||\n editor.isActive('heading', { level: 2 }) ||\n editor.isActive('heading', { level: 3 })\n }\n />\n );\n case 'bulletList':\n return toggleButton({\n label: t('editor.list.bullet'),\n pressed: editor.isActive('bulletList'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleBulletList().run(),\n icon: <List aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'orderedList':\n return toggleButton({\n label: t('editor.list.ordered'),\n pressed: editor.isActive('orderedList'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleOrderedList().run(),\n icon: <ListOrdered aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'quote':\n return toggleButton({\n label: t('editor.quote'),\n pressed: editor.isActive('blockquote'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleBlockquote().run(),\n icon: <Quote aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'image':\n return actionButton({\n label: t('editor.image.insert'),\n disabled: readOnly,\n onActivate: promptForImage,\n icon: <ImageIcon aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'table':\n return actionButton({\n label: t('editor.table.insert'),\n disabled: readOnly,\n onActivate: () =>\n editor\n .chain()\n .focus()\n .insertTable({ rows: 3, cols: 3, withHeaderRow: true })\n .run(),\n icon: <TableIcon aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'codeBlock':\n return toggleButton({\n label: t('editor.codeBlock'),\n pressed: editor.isActive('codeBlock'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().toggleCodeBlock().run(),\n icon: <Code aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'horizontalRule':\n return actionButton({\n label: t('editor.horizontalRule'),\n disabled: readOnly,\n onActivate: () => editor.chain().focus().setHorizontalRule().run(),\n icon: <Minus aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'undo':\n return actionButton({\n label: t('editor.undo'),\n disabled: readOnly || !editor.can().undo(),\n shortcut: 'Control+Z Meta+Z',\n onActivate: () => editor.chain().focus().undo().run(),\n icon: <Undo aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n case 'redo':\n return actionButton({\n label: t('editor.redo'),\n disabled: readOnly || !editor.can().redo(),\n shortcut: 'Control+Shift+Z Meta+Shift+Z',\n onActivate: () => editor.chain().focus().redo().run(),\n icon: <Redo aria-hidden=\"true\" className=\"ds:block-size-4 ds:inline-size-4\" />,\n });\n default:\n return null;\n }\n }\n\n /* ---- Compose min-height class ------------------------------- */\n // `minHeight` is a size-variant keyword, not a raw CSS value, so we\n // pick a pre-authored Tailwind utility. The tiptap-theme.css bridge\n // already sets a sensible default (`min-block-size: 10rem`) on the\n // editing surface; consumers wanting taller/shorter regions can pass\n // 'sm' / 'md' / 'lg'.\n const minHeightClass = (() => {\n switch (minHeight) {\n case 'sm':\n return 'min-block-size-[8rem]';\n case 'md':\n return 'min-block-size-[16rem]';\n case 'lg':\n return 'min-block-size-[24rem]';\n default:\n return undefined;\n }\n })();\n\n return (\n <div\n id={editorId}\n className={[wrapperVariants(), className].filter(Boolean).join(' ')}\n dir={isRtl ? 'rtl' : undefined}\n data-component=\"rich-text-editor\"\n >\n {!readOnly ? (\n <div\n role=\"toolbar\"\n aria-label={t('editor.toolbarLabel')}\n className={toolbarVariants({ direction: isRtl ? 'rtl' : 'ltr' })}\n >\n {items.map((key, index) => (\n <span key={key} className=\"ds:contents\">\n {renderItem(key, index)}\n </span>\n ))}\n </div>\n ) : null}\n\n <div\n className={[editorSurfaceVariants(), minHeightClass]\n .filter(Boolean)\n .join(' ')}\n >\n <EditorContent editor={editor} />\n </div>\n\n <ShortcutsDialog open={shortcutsOpen} onOpenChange={setShortcutsOpen} />\n </div>\n );\n },\n);\n\nRichTextEditor.displayName = 'RichTextEditor';\n\nexport {\n toolbarButtonVariants,\n toolbarVariants,\n wrapperVariants,\n editorSurfaceVariants,\n};\n","import type { AgentAdapter } from '../../agent/types';\nimport type { RichTextEditorHandle } from './rich-text-editor';\n\nexport const richTextEditorAgent: AgentAdapter<RichTextEditorHandle> = {\n id: 'rich-text-editor',\n capabilities: ['edit_inline'],\n state: {\n html: {\n type: 'string',\n description: 'Sanitised HTML representation of the editor content.',\n read: (handle) => handle.getHTML(),\n },\n markdown: {\n type: 'string',\n description: 'Markdown representation of the editor content.',\n read: (handle) => handle.getMarkdown(),\n },\n },\n actions: {\n set_content: {\n safety: 'destructive',\n argsType: '{ html: string }',\n description: 'Replace the editor content. Loses unsaved input.',\n invoke: (handle, args: { html: string }) => {\n handle.setContent(args.html);\n },\n },\n clear: {\n safety: 'destructive',\n description: 'Empty the editor. Loses unsaved input.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n description: 'Move keyboard focus to the editor surface.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'rich-text-editor' },\n },\n};\n"],"names":["__iconNode","Bold","createLucideIcon","Code","Image","Italic","Link2","ListOrdered","List","Minus","Quote","Redo","Table","Undo","PURIFY_CONFIG","sanitiseHtml","input","DOMPurify","wrapperVariants","cva","toolbarVariants","toolbarButtonVariants","editorSurfaceVariants","PRESETS","HeadingSelect","editor","registerRef","tabIndex","onFocus","onKeyDown","label","disabled","pressed","open","setOpen","useState","rootRef","useRef","useEffect","handler","event","target","apply","level","jsxs","v","jsx","ChevronDown","ShortcutsDialog","onOpenChange","t","useTranslation","RadixDialog","X","row","RichTextEditor","forwardRef","defaultValue","value","onChange","toolbar","placeholder","readOnly","ariaLabel","minHeight","className","ref","rawId","useId","editorId","useMemo","isRtl","setIsRtl","shortcutsOpen","setShortcutsOpen","debounceRef","onChangeRef","initialContent","raw","useEditor","StarterKit","Link","href","TableRow","TableCell","TableHeader","Markdown","html","_","updatedEditor","markdown","_b","_a","_c","safe","useImperativeHandle","buttonsRef","focusIndex","setFocusIndex","items","registerButton","useCallback","index","el","focusButton","btn","handleToolbarKeyDown","count","forward","backward","next","promptForLink","existing","trimmed","promptForImage","validated","safeImageSrc","renderItem","key","common","buttonClass","toggleButton","opts","actionButton","ImageIcon","TableIcon","minHeightClass","EditorContent","richTextEditorAgent","handle","args"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11]}
@@ -1,397 +0,0 @@
1
- import { jsx as s, jsxs as D, Fragment as G } from "react/jsx-runtime";
2
- import { forwardRef as U, useState as V, useEffect as O, useRef as W, useId as J, useMemo as X, useCallback as _ } from "react";
3
- import { c as P } from "./index-D2ZczOXr.js";
4
- import { useTranslation as E } from "react-i18next";
5
- import * as j from "@radix-ui/react-popover";
6
- import { S as Y } from "./search-input-BVMCONyN.js";
7
- import { S as Z } from "./search-BonnQsHv.js";
8
- import { n as L } from "./normalize-diacritics-BNGbFNlJ.js";
9
- import { u as ee } from "./use-debounced-callback-BisrB-Fq.js";
10
- function se() {
11
- if (typeof navigator > "u") return !1;
12
- const r = navigator.userAgentData, a = (r == null ? void 0 : r.platform) ?? navigator.platform ?? "";
13
- return /mac/i.test(a);
14
- }
15
- const ae = P(
16
- [
17
- "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]",
18
- "ds:rounded-[var(--radius-md)]",
19
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
20
- // Same visual language as <SearchInput> so the launcher truly looks
21
- // like an input. --muted-foreground over --background meets AA 4.5:1
22
- // in every theme; --muted is a mid-tone not suitable as a surface.
23
- "ds:bg-[var(--background)] ds:border ds:border-[color:var(--border)]",
24
- "ds:text-[color:var(--muted-foreground)]",
25
- // Opaque hover — mix 20% muted into --background so the launcher stays a
26
- // solid surface even when placed over a brand-tinted parent (e.g. the
27
- // Header's `brand` variant).
28
- "ds:hover:bg-[color-mix(in_srgb,var(--muted)_20%,var(--background))]",
29
- "ds:transition-colors ds:motion-reduce:transition-none",
30
- "ds:focus-visible:outline-[length:var(--focus-ring-width)]",
31
- "ds:focus-visible:outline-solid",
32
- "ds:focus-visible:outline-[color:var(--ring)]",
33
- "ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
34
- "ds:forced-colors:focus-visible:outline-[CanvasText]",
35
- "ds:min-h-[var(--min-target-size)]",
36
- "ds:disabled:opacity-50 ds:disabled:cursor-not-allowed"
37
- ].join(" "),
38
- {
39
- variants: {
40
- size: {
41
- sm: "ds:text-[length:var(--font-size-sm)]",
42
- md: "ds:text-[length:var(--font-size-base)]",
43
- lg: "ds:text-[length:var(--font-size-lg)]"
44
- },
45
- density: {
46
- default: "",
47
- compact: "ds:min-h-0 ds:h-8"
48
- }
49
- },
50
- defaultVariants: {
51
- size: "md",
52
- density: "default"
53
- }
54
- }
55
- ), re = P(
56
- [
57
- "ds:inline-flex ds:flex-col",
58
- "ds:w-full"
59
- ].join(" "),
60
- {
61
- variants: {
62
- size: {
63
- sm: "",
64
- md: "",
65
- lg: ""
66
- },
67
- density: {
68
- default: "",
69
- compact: ""
70
- }
71
- },
72
- defaultVariants: {
73
- size: "md",
74
- density: "default"
75
- }
76
- }
77
- ), B = P(
78
- [
79
- "ds:hidden ds:md:inline-flex ds:items-center ds:gap-[calc(var(--spacing-xs)/2)]",
80
- "ds:ms-auto",
81
- "ds:rounded-[var(--radius-sm)]",
82
- "ds:border ds:border-[color:var(--border)]",
83
- "ds:bg-[var(--background)]",
84
- "ds:ps-[calc(var(--spacing-xs)/1.2)] ds:pe-[calc(var(--spacing-xs)/1.2)]",
85
- "ds:py-[calc(var(--spacing-xs)/2)]",
86
- // Use full --foreground (not --muted-foreground) so axe's contrast
87
- // check clears 4.5:1 even against the 1px --border edge region.
88
- "ds:text-[length:var(--font-size-xs)] ds:text-[color:var(--foreground)]",
89
- "ds:font-[family-name:var(--font-mono)]"
90
- ].join(" ")
91
- ), te = P(
92
- [
93
- "ds:z-[var(--z-dropdown)]",
94
- "ds:rounded-[var(--radius-md)]",
95
- "ds:border ds:border-[color:var(--border)]",
96
- "ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]",
97
- "ds:shadow-[var(--shadow-lg)]",
98
- "ds:p-[var(--spacing-xs)]",
99
- // Motion gates — reduced-motion honoured via .theme-accessible's 0ms
100
- // animation-duration token.
101
- "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
102
- "ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out",
103
- "ds:motion-reduce:animate-none"
104
- ].join(" ")
105
- );
106
- function ge(r, a) {
107
- const o = L(r.trim());
108
- return o === "" ? a : a.map((n) => ({
109
- ...n,
110
- items: n.items.filter(
111
- (p) => L(p.label).includes(o)
112
- )
113
- })).filter((n) => n.items.length > 0);
114
- }
115
- const ne = U(
116
- (r, a) => {
117
- const {
118
- mode: o = "launcher",
119
- size: n = "md",
120
- density: p = "default",
121
- topLevel: y = !1,
122
- placeholder: d,
123
- shortcutHint: h = !0,
124
- className: v,
125
- onOpenCommandPalette: t,
126
- value: g,
127
- defaultValue: z,
128
- onQueryChange: k,
129
- results: i,
130
- onSelect: b,
131
- debounceMs: C,
132
- ...l
133
- } = r, { t: c } = E(), [R, I] = V(!1);
134
- O(() => {
135
- I(se());
136
- }, []);
137
- const S = R ? "⌘K" : "Ctrl+K", u = "Meta+K Control+K", m = y ? { role: "search" } : { role: void 0 };
138
- if (o === "launcher") {
139
- const N = d ?? c("search.placeholder", "Search…");
140
- return /* @__PURE__ */ s("div", { ref: a, ...m, "data-component": "search-bar", className: v, children: /* @__PURE__ */ D(
141
- "button",
142
- {
143
- type: "button",
144
- onClick: t,
145
- "aria-haspopup": "dialog",
146
- "aria-label": c("search.open", "Open search"),
147
- "aria-keyshortcuts": u,
148
- className: ae({ size: n, density: p }),
149
- ...l,
150
- children: [
151
- /* @__PURE__ */ s(
152
- Z,
153
- {
154
- "aria-hidden": !0,
155
- className: "ds:size-4 ds:shrink-0",
156
- focusable: "false"
157
- }
158
- ),
159
- /* @__PURE__ */ s("span", { "aria-hidden": "true", className: "ds:truncate ds:text-start", children: N }),
160
- h ? /* @__PURE__ */ s("kbd", { className: B(), children: S }) : null
161
- ]
162
- }
163
- ) });
164
- }
165
- return /* @__PURE__ */ s(
166
- oe,
167
- {
168
- forwardedRef: a,
169
- size: n,
170
- density: p,
171
- landmarkProps: m,
172
- placeholder: d,
173
- shortcutHint: h,
174
- shortcutLabel: S,
175
- ariaKeyshortcuts: u,
176
- className: v,
177
- ...r
178
- }
179
- );
180
- }
181
- );
182
- ne.displayName = "SearchBar";
183
- function oe(r) {
184
- const {
185
- forwardedRef: a,
186
- size: o,
187
- density: n,
188
- landmarkProps: p,
189
- placeholder: y,
190
- shortcutHint: d,
191
- shortcutLabel: h,
192
- ariaKeyshortcuts: v,
193
- className: t,
194
- value: g,
195
- defaultValue: z,
196
- onQueryChange: k,
197
- results: i,
198
- onSelect: b,
199
- debounceMs: C = 150
200
- } = r, { t: l } = E(), c = g !== void 0, [R, I] = V(z ?? ""), S = c ? g ?? "" : R, [u, m] = V(!1), [x, N] = V(0), H = W(null), M = J(), $ = ee((e) => {
201
- k == null || k(e);
202
- }, C), f = X(() => i ? i.flatMap((e) => e.items) : [], [i]);
203
- O(() => {
204
- x > f.length - 1 && N(0);
205
- }, [f.length, x]);
206
- const q = _(
207
- (e) => {
208
- c || I(e), $(e), m(e.trim().length > 0);
209
- },
210
- [$, c]
211
- ), A = _(
212
- (e) => {
213
- b == null || b(e), m(!1), c || I("");
214
- },
215
- [b, c]
216
- ), F = _(
217
- (e) => {
218
- if (!(e.nativeEvent.isComposing || e.keyCode === 229)) {
219
- if (!u && e.key === "ArrowDown" && f.length > 0) {
220
- e.preventDefault(), m(!0);
221
- return;
222
- }
223
- if (u)
224
- if (e.key === "ArrowDown")
225
- e.preventDefault(), N((w) => (w + 1) % Math.max(f.length, 1));
226
- else if (e.key === "ArrowUp")
227
- e.preventDefault(), N(
228
- (w) => (w - 1 + Math.max(f.length, 1)) % Math.max(f.length, 1)
229
- );
230
- else if (e.key === "Enter") {
231
- const w = f[x];
232
- w && (e.preventDefault(), A(w));
233
- } else e.key === "Escape" && (e.preventDefault(), m(!1));
234
- }
235
- },
236
- [u, f, x, A]
237
- ), Q = y ?? l("search.placeholder", "Search…"), K = f.length > 0, T = u && K ? `${M}-option-${x}` : void 0;
238
- return /* @__PURE__ */ s(j.Root, { open: u && K, onOpenChange: m, children: /* @__PURE__ */ D(
239
- "div",
240
- {
241
- ref: a,
242
- ...p,
243
- "data-component": "search-bar",
244
- className: [re({ size: o, density: n }), t].filter(Boolean).join(" "),
245
- children: [
246
- /* @__PURE__ */ s(j.Anchor, { asChild: !0, children: /* @__PURE__ */ D(
247
- "div",
248
- {
249
- className: "ds:relative ds:flex ds:items-center",
250
- onKeyDown: F,
251
- children: [
252
- /* @__PURE__ */ s(
253
- Y,
254
- {
255
- ref: H,
256
- size: o,
257
- value: S,
258
- onInput: q,
259
- placeholder: Q,
260
- "aria-label": l("search.label", "Search"),
261
- "aria-keyshortcuts": v,
262
- role: "combobox",
263
- "aria-expanded": u && K,
264
- "aria-controls": M,
265
- "aria-activedescendant": T
266
- }
267
- ),
268
- d ? /* @__PURE__ */ s(
269
- "kbd",
270
- {
271
- className: [
272
- B(),
273
- "ds:absolute ds:end-[var(--spacing-sm)] ds:top-1/2 ds:-translate-y-1/2",
274
- "ds:pointer-events-none"
275
- ].join(" "),
276
- children: h
277
- }
278
- ) : null
279
- ]
280
- }
281
- ) }),
282
- /* @__PURE__ */ s(j.Portal, { children: /* @__PURE__ */ s(
283
- j.Content,
284
- {
285
- side: "bottom",
286
- align: "start",
287
- sideOffset: 4,
288
- "aria-label": l("search.resultsLabel", "Search results"),
289
- onOpenAutoFocus: (e) => e.preventDefault(),
290
- className: [
291
- te(),
292
- "ds:w-[var(--radix-popover-trigger-width)]"
293
- ].join(" "),
294
- children: /* @__PURE__ */ s(
295
- "div",
296
- {
297
- id: M,
298
- role: "listbox",
299
- "aria-label": l("search.resultsLabel", "Search results"),
300
- className: "ds:flex ds:flex-col ds:gap-[calc(var(--spacing-xs)/2)]",
301
- children: i && i.length > 0 ? de(
302
- i,
303
- x,
304
- M,
305
- A,
306
- N
307
- ) : /* @__PURE__ */ s(
308
- "div",
309
- {
310
- role: "presentation",
311
- className: "ds:p-[var(--spacing-sm)] type-body-sm ds:text-[color:var(--foreground)]",
312
- children: l("search.noResults", "No results for “{{query}}”", {
313
- query: S
314
- })
315
- }
316
- )
317
- }
318
- )
319
- }
320
- ) })
321
- ]
322
- }
323
- ) });
324
- }
325
- function de(r, a, o, n, p) {
326
- let y = 0;
327
- return r.map((d, h) => {
328
- const v = d.heading ? `${o}-group-${h}-heading` : void 0;
329
- return /* @__PURE__ */ D(
330
- "div",
331
- {
332
- role: d.heading ? "group" : "presentation",
333
- "aria-labelledby": v,
334
- children: [
335
- d.heading ? /* @__PURE__ */ s(
336
- "div",
337
- {
338
- id: v,
339
- "aria-hidden": "true",
340
- className: "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)] type-eyebrow ds:text-[color:var(--foreground)]",
341
- children: d.heading
342
- }
343
- ) : null,
344
- d.items.map((t) => {
345
- const g = y;
346
- y += 1;
347
- const z = g === a, k = `${o}-option-${g}`, i = ie(t.href), b = [
348
- "ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
349
- "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]",
350
- "ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]",
351
- "ds:rounded-[var(--radius-sm)]",
352
- "ds:cursor-pointer",
353
- "ds:no-underline ds:text-[color:var(--foreground)]",
354
- "ds:min-h-[var(--min-target-size)]",
355
- z ? "ds:bg-[var(--muted)]/40" : ""
356
- ].join(" "), C = /* @__PURE__ */ D(G, { children: [
357
- t.icon ? /* @__PURE__ */ s(
358
- "span",
359
- {
360
- "aria-hidden": "true",
361
- className: "ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center",
362
- children: t.icon
363
- }
364
- ) : null,
365
- /* @__PURE__ */ s("span", { className: "ds:flex-1 ds:text-[length:var(--font-size-sm)]", children: t.label }),
366
- t.meta ? /* @__PURE__ */ s("span", { className: "ds:ms-auto type-meta ds:text-[color:var(--foreground)]", children: t.meta }) : null
367
- ] }), l = {
368
- id: k,
369
- role: "option",
370
- "aria-selected": z,
371
- // onMouseDown rather than onClick so we trigger before the
372
- // input loses focus to the pointer-down on the popover.
373
- onMouseDown: (c) => {
374
- c.preventDefault(), n(t);
375
- },
376
- onMouseEnter: () => p(g),
377
- className: b
378
- };
379
- return i ? /* @__PURE__ */ s("a", { href: i, ...l, children: C }, t.id) : /* @__PURE__ */ s("div", { ...l, children: C }, t.id);
380
- })
381
- ]
382
- },
383
- `g-${h}`
384
- );
385
- });
386
- }
387
- function ie(r) {
388
- if (!r) return;
389
- const a = r.trim();
390
- if (a !== "" && (/^(https?:|mailto:|tel:)/i.test(a) || /^(\/|\.\/|\.\.\/)/.test(a)))
391
- return a;
392
- }
393
- export {
394
- ne as S,
395
- ge as f
396
- };
397
- //# sourceMappingURL=search-bar-fcGqDFW3.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"search-bar-fcGqDFW3.js","sources":["../../src/components/search-bar/search-bar.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { SearchInput } from '../search-input/search-input';\nimport { useDebouncedCallback, normalizeDiacritics } from '../_shared';\n\n/* ------------------------------------------------------------------ */\n/* Shortcut detection */\n/* ------------------------------------------------------------------ */\n\nfunction isMacLike(): boolean {\n if (typeof navigator === 'undefined') return false;\n // Prefer `userAgentData.platform` where supported; fall back to the\n // deprecated `navigator.platform`. Both are strings; we just look for\n // `mac`.\n const uaData = (navigator as unknown as {\n userAgentData?: { platform?: string };\n }).userAgentData;\n const platformString = uaData?.platform ?? navigator.platform ?? '';\n return /mac/i.test(platformString);\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst launcherVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n // Same visual language as <SearchInput> so the launcher truly looks\n // like an input. --muted-foreground over --background meets AA 4.5:1\n // in every theme; --muted is a mid-tone not suitable as a surface.\n 'ds:bg-[var(--background)] ds:border ds:border-[color:var(--border)]',\n 'ds:text-[color:var(--muted-foreground)]',\n // Opaque hover — mix 20% muted into --background so the launcher stays a\n // solid surface even when placed over a brand-tinted parent (e.g. the\n // Header's `brand` variant).\n 'ds:hover:bg-[color-mix(in_srgb,var(--muted)_20%,var(--background))]',\n 'ds:transition-colors ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)]',\n 'ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n density: {\n default: '',\n compact: 'ds:min-h-0 ds:h-8',\n },\n },\n defaultVariants: {\n size: 'md',\n density: 'default',\n },\n },\n);\n\nconst inlineWrapperVariants = cva(\n [\n 'ds:inline-flex ds:flex-col',\n 'ds:w-full',\n ].join(' '),\n {\n variants: {\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n density: {\n default: '',\n compact: '',\n },\n },\n defaultVariants: {\n size: 'md',\n density: 'default',\n },\n },\n);\n\nconst shortcutPillVariants = cva(\n [\n 'ds:hidden ds:md:inline-flex ds:items-center ds:gap-[calc(var(--spacing-xs)/2)]',\n 'ds:ms-auto',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--background)]',\n 'ds:ps-[calc(var(--spacing-xs)/1.2)] ds:pe-[calc(var(--spacing-xs)/1.2)]',\n 'ds:py-[calc(var(--spacing-xs)/2)]',\n // Use full --foreground (not --muted-foreground) so axe's contrast\n // check clears 4.5:1 even against the 1px --border edge region.\n 'ds:text-[length:var(--font-size-xs)] ds:text-[color:var(--foreground)]',\n 'ds:font-[family-name:var(--font-mono)]',\n ].join(' '),\n);\n\nconst popoverContentVariants = cva(\n [\n 'ds:z-[var(--z-dropdown)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:border ds:border-[color:var(--border)]',\n 'ds:bg-[var(--popover)] ds:text-[color:var(--popover-foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-xs)]',\n // Motion gates — reduced-motion honoured via .theme-accessible's 0ms\n // animation-duration token.\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=open]:fade-in ds:data-[state=closed]:fade-out',\n 'ds:motion-reduce:animate-none',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface SearchBarResultItem {\n id: string;\n /** Display label. */\n label: string;\n /** Optional icon rendered on inline-start (aria-hidden). */\n icon?: ReactNode;\n /** Optional right-aligned meta text (tag, count, section label). */\n meta?: string;\n /** Optional href — the list renders anchors when present. */\n href?: string;\n}\n\nexport interface SearchBarResultGroup {\n /** Heading displayed above the items (aria-hidden=\"true\" — visual only). */\n heading?: string;\n items: SearchBarResultItem[];\n}\n\ntype SharedProps = {\n size?: 'sm' | 'md' | 'lg';\n density?: 'default' | 'compact';\n /** `true` wraps in <search role=\"search\"> when this is the page's primary search. */\n topLevel?: boolean;\n placeholder?: string;\n /** Platform-aware shortcut pill — default `true` (hidden below `md` breakpoint). */\n shortcutHint?: boolean;\n className?: string;\n};\n\ntype LauncherProps = SharedProps & {\n mode?: 'launcher';\n /** Called on click / Enter / global Cmd/Ctrl+K. */\n onOpenCommandPalette: () => void;\n // Not used in launcher mode.\n value?: never;\n defaultValue?: never;\n onQueryChange?: never;\n results?: never;\n onSelect?: never;\n debounceMs?: never;\n};\n\ntype InlineProps = SharedProps & {\n mode: 'inline';\n value?: string;\n defaultValue?: string;\n onQueryChange?: (query: string) => void;\n /** Groups of results rendered in the popover. */\n results?: SearchBarResultGroup[];\n onSelect?: (item: SearchBarResultItem) => void;\n debounceMs?: number;\n // Not used in inline mode.\n onOpenCommandPalette?: never;\n};\n\nexport type SearchBarProps = (LauncherProps | InlineProps) &\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'role' | 'onChange' | 'children' | 'defaultValue' | 'results'\n > &\n VariantProps<typeof launcherVariants>;\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nexport function filterSearchResults(\n query: string,\n groups: SearchBarResultGroup[],\n): SearchBarResultGroup[] {\n const needle = normalizeDiacritics(query.trim());\n if (needle === '') return groups;\n return groups\n .map((g) => ({\n ...g,\n items: g.items.filter((item) =>\n normalizeDiacritics(item.label).includes(needle),\n ),\n }))\n .filter((g) => g.items.length > 0);\n}\n\n/* ------------------------------------------------------------------ */\n/* SearchBar */\n/* ------------------------------------------------------------------ */\n\nexport const SearchBar = forwardRef<HTMLDivElement, SearchBarProps>(\n (props, ref) => {\n // Strip every API prop from `...rest` so nothing leaks to the DOM as\n // an unknown attribute (React warns in DEV and some become invalid\n // HTML in production).\n const {\n mode = 'launcher',\n size = 'md',\n density = 'default',\n topLevel = false,\n placeholder,\n shortcutHint = true,\n className,\n onOpenCommandPalette,\n value: _value,\n defaultValue: _defaultValue,\n onQueryChange: _onQueryChange,\n results: _results,\n onSelect: _onSelect,\n debounceMs: _debounceMs,\n ...rest\n } = props as SearchBarProps & { className?: string };\n // silence unused-var warnings for the destructured siblings we only\n // needed to peel off the spread target.\n void _value;\n void _defaultValue;\n void _onQueryChange;\n void _results;\n void _onSelect;\n void _debounceMs;\n\n const { t } = useTranslation();\n const [isMac, setIsMac] = useState(false);\n useEffect(() => {\n setIsMac(isMacLike());\n }, []);\n\n const shortcutLabel = isMac ? '\\u2318K' : 'Ctrl+K';\n // Advertise the shortcut on the launcher button. The binding itself\n // lives in `useCommandPalette()` (CommandPalette owns its open state);\n // duplicating the listener here would cause a double-fire.\n const ariaKeyshortcuts = 'Meta+K Control+K';\n\n /* ---- Landmark role --------------------------------------------- */\n const landmarkProps = topLevel\n ? { role: 'search' as const }\n : { role: undefined };\n\n /* ---- LAUNCHER MODE -------------------------------------------- */\n if (mode === 'launcher') {\n const resolvedPlaceholder =\n placeholder ?? t('search.placeholder', 'Search\\u2026');\n return (\n <div ref={ref} {...landmarkProps} data-component=\"search-bar\" className={className}>\n <button\n type=\"button\"\n onClick={onOpenCommandPalette}\n aria-haspopup=\"dialog\"\n aria-label={t('search.open', 'Open search')}\n aria-keyshortcuts={ariaKeyshortcuts}\n className={launcherVariants({ size, density })}\n {...(rest as HTMLAttributes<HTMLButtonElement>)}\n >\n <Search\n aria-hidden\n className=\"ds:size-4 ds:shrink-0\"\n focusable=\"false\"\n />\n <span aria-hidden=\"true\" className=\"ds:truncate ds:text-start\">\n {resolvedPlaceholder}\n </span>\n {shortcutHint ? (\n <kbd className={shortcutPillVariants()}>{shortcutLabel}</kbd>\n ) : null}\n </button>\n </div>\n );\n }\n\n /* ---- INLINE MODE ---------------------------------------------- */\n const inlineProps = props as InlineProps;\n return (\n <InlineSearchBar\n forwardedRef={ref}\n size={size}\n density={density}\n landmarkProps={landmarkProps}\n placeholder={placeholder}\n shortcutHint={shortcutHint}\n shortcutLabel={shortcutLabel}\n ariaKeyshortcuts={ariaKeyshortcuts}\n className={className}\n {...inlineProps}\n />\n );\n },\n);\n\nSearchBar.displayName = 'SearchBar';\n\n/* ------------------------------------------------------------------ */\n/* InlineSearchBar — internal */\n/* ------------------------------------------------------------------ */\n\ninterface InlineInternalProps extends InlineProps {\n forwardedRef: React.ForwardedRef<HTMLDivElement>;\n size: 'sm' | 'md' | 'lg';\n density: 'default' | 'compact';\n landmarkProps: { role?: 'search' };\n shortcutHint: boolean;\n shortcutLabel: string;\n ariaKeyshortcuts: string;\n className?: string;\n}\n\nfunction InlineSearchBar(props: InlineInternalProps): ReactNode {\n const {\n forwardedRef,\n size,\n density,\n landmarkProps,\n placeholder,\n shortcutHint,\n shortcutLabel,\n ariaKeyshortcuts,\n className,\n value,\n defaultValue,\n onQueryChange,\n results,\n onSelect,\n debounceMs = 150,\n } = props;\n\n const { t } = useTranslation();\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState(defaultValue ?? '');\n const query = isControlled ? (value ?? '') : internalValue;\n\n const [open, setOpen] = useState(false);\n const [activeIndex, setActiveIndex] = useState(0);\n const inputRef = useRef<HTMLInputElement | null>(null);\n const listboxId = useId();\n\n const debouncedQueryChange = useDebouncedCallback((next: string) => {\n onQueryChange?.(next);\n }, debounceMs);\n\n const flatResults = useMemo<SearchBarResultItem[]>(() => {\n if (!results) return [];\n return results.flatMap((g) => g.items);\n }, [results]);\n\n // Reset active index whenever the result count changes.\n useEffect(() => {\n if (activeIndex > flatResults.length - 1) setActiveIndex(0);\n }, [flatResults.length, activeIndex]);\n\n const handleInput = useCallback(\n (raw: string) => {\n if (!isControlled) setInternalValue(raw);\n debouncedQueryChange(raw);\n setOpen(raw.trim().length > 0);\n },\n [debouncedQueryChange, isControlled],\n );\n\n const commit = useCallback(\n (item: SearchBarResultItem) => {\n onSelect?.(item);\n setOpen(false);\n if (!isControlled) setInternalValue('');\n },\n [onSelect, isControlled],\n );\n\n const handleKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (event.nativeEvent.isComposing || event.keyCode === 229) return;\n if (!open && event.key === 'ArrowDown' && flatResults.length > 0) {\n event.preventDefault();\n setOpen(true);\n return;\n }\n if (!open) return;\n if (event.key === 'ArrowDown') {\n event.preventDefault();\n setActiveIndex((i) => (i + 1) % Math.max(flatResults.length, 1));\n } else if (event.key === 'ArrowUp') {\n event.preventDefault();\n setActiveIndex(\n (i) =>\n (i - 1 + Math.max(flatResults.length, 1)) %\n Math.max(flatResults.length, 1),\n );\n } else if (event.key === 'Enter') {\n const item = flatResults[activeIndex];\n if (item) {\n event.preventDefault();\n commit(item);\n }\n } else if (event.key === 'Escape') {\n event.preventDefault();\n setOpen(false);\n }\n },\n [open, flatResults, activeIndex, commit],\n );\n\n const resolvedPlaceholder =\n placeholder ?? t('search.placeholder', 'Search\\u2026');\n\n const hasResults = flatResults.length > 0;\n // aria-activedescendant may only reference an element that actually exists\n // in the DOM — so only set it when the popover is open AND there are\n // results to land on. Referencing a non-existent option is an a11y\n // violation (aria-valid-attr-value).\n const activeDescendantId =\n open && hasResults ? `${listboxId}-option-${activeIndex}` : undefined;\n\n return (\n <RadixPopover.Root open={open && hasResults} onOpenChange={setOpen}>\n <div\n ref={forwardedRef}\n {...landmarkProps}\n data-component=\"search-bar\"\n className={[inlineWrapperVariants({ size, density }), className]\n .filter(Boolean)\n .join(' ')}\n >\n <RadixPopover.Anchor asChild>\n <div\n className=\"ds:relative ds:flex ds:items-center\"\n onKeyDown={handleKeyDown}\n >\n <SearchInput\n ref={inputRef}\n size={size}\n value={query}\n onInput={handleInput}\n placeholder={resolvedPlaceholder}\n aria-label={t('search.label', 'Search')}\n aria-keyshortcuts={ariaKeyshortcuts}\n role=\"combobox\"\n aria-expanded={open && hasResults}\n aria-controls={listboxId}\n aria-activedescendant={activeDescendantId}\n />\n {shortcutHint ? (\n <kbd\n className={[\n shortcutPillVariants(),\n 'ds:absolute ds:end-[var(--spacing-sm)] ds:top-1/2 ds:-translate-y-1/2',\n 'ds:pointer-events-none',\n ].join(' ')}\n >\n {shortcutLabel}\n </kbd>\n ) : null}\n </div>\n </RadixPopover.Anchor>\n <RadixPopover.Portal>\n <RadixPopover.Content\n side=\"bottom\"\n align=\"start\"\n sideOffset={4}\n aria-label={t('search.resultsLabel', 'Search results')}\n onOpenAutoFocus={(e) => e.preventDefault()}\n // Width matches the anchor via Radix's CSS variable. Applied\n // as a Tailwind arbitrary-value class so no inline style is\n // needed (23-constraints §4).\n className={[\n popoverContentVariants(),\n 'ds:w-[var(--radix-popover-trigger-width)]',\n ].join(' ')}\n >\n {/* listbox uses <div> rather than <ul> so the option role\n children don't trip the `<ul> must only contain <li>` axe\n rule. Options are direct descendants of the listbox root\n per the WAI-ARIA listbox pattern. */}\n <div\n id={listboxId}\n role=\"listbox\"\n aria-label={t('search.resultsLabel', 'Search results')}\n className=\"ds:flex ds:flex-col ds:gap-[calc(var(--spacing-xs)/2)]\"\n >\n {results && results.length > 0 ? (\n renderGroups(\n results,\n activeIndex,\n listboxId,\n commit,\n setActiveIndex,\n )\n ) : (\n <div\n role=\"presentation\"\n className=\"ds:p-[var(--spacing-sm)] type-body-sm ds:text-[color:var(--foreground)]\"\n >\n {t('search.noResults', 'No results for \\u201C{{query}}\\u201D', {\n query,\n })}\n </div>\n )}\n </div>\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </div>\n </RadixPopover.Root>\n );\n}\n\nfunction renderGroups(\n groups: SearchBarResultGroup[],\n activeIndex: number,\n listboxId: string,\n onCommit: (item: SearchBarResultItem) => void,\n setActive: (index: number) => void,\n): ReactNode {\n let flatIndex = 0;\n // Flatten groups + headings into a single-level sequence of divs at the\n // listbox root. `role=\"group\"` wrappers keep the visual grouping while\n // keeping options as direct descendants of the listbox.\n return groups.map((group, gi) => {\n const headingId = group.heading ? `${listboxId}-group-${gi}-heading` : undefined;\n return (\n <div\n key={`g-${gi}`}\n role={group.heading ? 'group' : 'presentation'}\n aria-labelledby={headingId}\n >\n {group.heading ? (\n <div\n id={headingId}\n aria-hidden=\"true\"\n className=\"ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)] type-eyebrow ds:text-[color:var(--foreground)]\"\n >\n {group.heading}\n </div>\n ) : null}\n {group.items.map((item) => {\n const myIndex = flatIndex;\n flatIndex += 1;\n const isActive = myIndex === activeIndex;\n const optionId = `${listboxId}-option-${myIndex}`;\n const safeHref = safeNavigationHref(item.href);\n const commonClass = [\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:cursor-pointer',\n 'ds:no-underline ds:text-[color:var(--foreground)]',\n 'ds:min-h-[var(--min-target-size)]',\n isActive ? 'ds:bg-[var(--muted)]/40' : '',\n ].join(' ');\n const body = (\n <>\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:size-4 ds:shrink-0 ds:items-center ds:justify-center\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex-1 ds:text-[length:var(--font-size-sm)]\">\n {item.label}\n </span>\n {item.meta ? (\n <span className=\"ds:ms-auto type-meta ds:text-[color:var(--foreground)]\">\n {item.meta}\n </span>\n ) : null}\n </>\n );\n const shared = {\n id: optionId,\n role: 'option' as const,\n 'aria-selected': isActive,\n // onMouseDown rather than onClick so we trigger before the\n // input loses focus to the pointer-down on the popover.\n onMouseDown: (e: React.MouseEvent) => {\n e.preventDefault();\n onCommit(item);\n },\n onMouseEnter: () => setActive(myIndex),\n className: commonClass,\n };\n if (safeHref) {\n return (\n <a key={item.id} href={safeHref} {...shared}>\n {body}\n </a>\n );\n }\n return (\n <div key={item.id} {...shared}>\n {body}\n </div>\n );\n })}\n </div>\n );\n });\n}\n\n/**\n * Allow-list for result-item `href` strings. Same allow-list as the\n * chat-message token renderer: http(s) + mailto + tel + same-origin\n * relative paths. Anything else (including `javascript:` and `data:`)\n * returns `undefined`, causing the renderer to fall back to a <div>.\n */\nfunction safeNavigationHref(href: string | undefined): string | undefined {\n if (!href) return undefined;\n const trimmed = href.trim();\n if (trimmed === '') return undefined;\n if (/^(https?:|mailto:|tel:)/i.test(trimmed)) return trimmed;\n // Same-origin relative paths are safe because the browser resolves\n // against `window.location`. Leading `/` or `./` or `../` qualify.\n if (/^(\\/|\\.\\/|\\.\\.\\/)/.test(trimmed)) return trimmed;\n return undefined;\n}\n"],"names":["isMacLike","uaData","platformString","launcherVariants","cva","inlineWrapperVariants","shortcutPillVariants","popoverContentVariants","filterSearchResults","query","groups","needle","normalizeDiacritics","g","item","SearchBar","forwardRef","props","ref","mode","size","density","topLevel","placeholder","shortcutHint","className","onOpenCommandPalette","_value","_defaultValue","_onQueryChange","_results","_onSelect","_debounceMs","rest","t","useTranslation","isMac","setIsMac","useState","useEffect","shortcutLabel","ariaKeyshortcuts","landmarkProps","resolvedPlaceholder","jsxs","jsx","Search","InlineSearchBar","forwardedRef","value","defaultValue","onQueryChange","results","onSelect","debounceMs","isControlled","internalValue","setInternalValue","open","setOpen","activeIndex","setActiveIndex","inputRef","useRef","listboxId","useId","debouncedQueryChange","useDebouncedCallback","next","flatResults","useMemo","handleInput","useCallback","raw","commit","handleKeyDown","event","i","hasResults","activeDescendantId","RadixPopover","SearchInput","renderGroups","onCommit","setActive","flatIndex","group","gi","headingId","myIndex","isActive","optionId","safeHref","safeNavigationHref","commonClass","body","Fragment","shared","e","href","trimmed"],"mappings":"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"}