@alfadocs/ui-kit-debug 0.1.8 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (984) hide show
  1. package/README.md +30 -0
  2. package/dist/_chunks/accordion-DOmxGEWU.js +228 -0
  3. package/dist/_chunks/accordion-DOmxGEWU.js.map +1 -0
  4. package/dist/_chunks/{agenda-card-DIWDvWum.js → agenda-card-CalZqycc.js} +13 -3
  5. package/dist/_chunks/agenda-card-CalZqycc.js.map +1 -0
  6. package/dist/_chunks/agenda-card.agent-B_R47-c9.js +22 -0
  7. package/dist/_chunks/agenda-card.agent-B_R47-c9.js.map +1 -0
  8. package/dist/_chunks/agenda-tray-3ffFDQZC.js +181 -0
  9. package/dist/_chunks/agenda-tray-3ffFDQZC.js.map +1 -0
  10. package/dist/_chunks/ai-prompt-input-BBiDlEIS.js +476 -0
  11. package/dist/_chunks/ai-prompt-input-BBiDlEIS.js.map +1 -0
  12. package/dist/_chunks/{alert-BlOUMkXj.js → alert-B1sj8Ss0.js} +24 -14
  13. package/dist/_chunks/alert-B1sj8Ss0.js.map +1 -0
  14. package/dist/_chunks/{apexcharts-theme-BkSShpEy.js → apexcharts-theme-BJigns_V.js} +7 -2
  15. package/dist/_chunks/{apexcharts-theme-BkSShpEy.js.map → apexcharts-theme-BJigns_V.js.map} +1 -1
  16. package/dist/_chunks/{app-frame-6d7Lu4ea.js → app-frame-CDJOgPXe.js} +7 -16
  17. package/dist/_chunks/app-frame-CDJOgPXe.js.map +1 -0
  18. package/dist/_chunks/{aspect-ratio-CxsdG8vk.js → aspect-ratio-DeSNzASA.js} +12 -12
  19. package/dist/_chunks/aspect-ratio-DeSNzASA.js.map +1 -0
  20. package/dist/_chunks/audio-recorder-B4U1LuiQ.js +457 -0
  21. package/dist/_chunks/audio-recorder-B4U1LuiQ.js.map +1 -0
  22. package/dist/_chunks/{audio-visualiser-CeMPCZkd.js → audio-visualiser-ByDEFLNm.js} +25 -19
  23. package/dist/_chunks/audio-visualiser-ByDEFLNm.js.map +1 -0
  24. package/dist/_chunks/autocomplete-D4oUZbsP.js +466 -0
  25. package/dist/_chunks/autocomplete-D4oUZbsP.js.map +1 -0
  26. package/dist/_chunks/avatar-Dcr6XuDQ.js.map +1 -1
  27. package/dist/_chunks/{badge-mrstWxve.js → badge-DKFbntoa.js} +16 -13
  28. package/dist/_chunks/badge-DKFbntoa.js.map +1 -0
  29. package/dist/_chunks/{balance-cell-renderer-BWm3knY9.js → balance-cell-renderer-B8zgIM-m.js} +64 -45
  30. package/dist/_chunks/balance-cell-renderer-B8zgIM-m.js.map +1 -0
  31. package/dist/_chunks/breadcrumb-D1snXjPb.js +379 -0
  32. package/dist/_chunks/breadcrumb-D1snXjPb.js.map +1 -0
  33. package/dist/_chunks/{button-7mLWcMp_.js → button-DD_0Xdmr.js} +12 -2
  34. package/dist/_chunks/button-DD_0Xdmr.js.map +1 -0
  35. package/dist/_chunks/button-group-CONver7M.js.map +1 -1
  36. package/dist/_chunks/button.agent-BuGZBktn.js.map +1 -1
  37. package/dist/_chunks/{calendar-nGEgelJs.js → calendar-zy0tUUVG.js} +13 -18
  38. package/dist/_chunks/calendar-zy0tUUVG.js.map +1 -0
  39. package/dist/_chunks/{card-BEy58ZKp.js → card-CWzuTLYE.js} +40 -34
  40. package/dist/_chunks/card-CWzuTLYE.js.map +1 -0
  41. package/dist/_chunks/chart-BLvFl169.js +292 -0
  42. package/dist/_chunks/chart-BLvFl169.js.map +1 -0
  43. package/dist/_chunks/chat-container-ClzsWXp2.js +220 -0
  44. package/dist/_chunks/chat-container-ClzsWXp2.js.map +1 -0
  45. package/dist/_chunks/chat-input-DOlsB1fm.js +333 -0
  46. package/dist/_chunks/chat-input-DOlsB1fm.js.map +1 -0
  47. package/dist/_chunks/{chat-message-ByouZpPP.js → chat-message-DoAhgUTj.js} +23 -13
  48. package/dist/_chunks/chat-message-DoAhgUTj.js.map +1 -0
  49. package/dist/_chunks/checkbox-CtPM6Rup.js +196 -0
  50. package/dist/_chunks/checkbox-CtPM6Rup.js.map +1 -0
  51. package/dist/_chunks/checkbox-group-BTdEB6Yo.js +208 -0
  52. package/dist/_chunks/checkbox-group-BTdEB6Yo.js.map +1 -0
  53. package/dist/_chunks/collapsible-CuxUBoHJ.js +147 -0
  54. package/dist/_chunks/collapsible-CuxUBoHJ.js.map +1 -0
  55. package/dist/_chunks/{color-picker-e9PmpaGH.js → color-picker-CTIcHlDF.js} +321 -205
  56. package/dist/_chunks/color-picker-CTIcHlDF.js.map +1 -0
  57. package/dist/_chunks/combobox-DCNXqbC7.js +460 -0
  58. package/dist/_chunks/combobox-DCNXqbC7.js.map +1 -0
  59. package/dist/_chunks/command-palette-C_vgSgrI.js +441 -0
  60. package/dist/_chunks/command-palette-C_vgSgrI.js.map +1 -0
  61. package/dist/_chunks/date-picker-B1PO1ZQP.js +1822 -0
  62. package/dist/_chunks/date-picker-B1PO1ZQP.js.map +1 -0
  63. package/dist/_chunks/date-range-picker-mix2nEVC.js +287 -0
  64. package/dist/_chunks/date-range-picker-mix2nEVC.js.map +1 -0
  65. package/dist/_chunks/date-time-picker-Dnong_BY.js +308 -0
  66. package/dist/_chunks/date-time-picker-Dnong_BY.js.map +1 -0
  67. package/dist/_chunks/{description-list-DvJbp6Yg.js → description-list-BYA77Yud.js} +26 -23
  68. package/dist/_chunks/description-list-BYA77Yud.js.map +1 -0
  69. package/dist/_chunks/dialog-BPD7wlGE.js +211 -0
  70. package/dist/_chunks/dialog-BPD7wlGE.js.map +1 -0
  71. package/dist/_chunks/dropdown-menu-CpiF6CPz.js +300 -0
  72. package/dist/_chunks/dropdown-menu-CpiF6CPz.js.map +1 -0
  73. package/dist/_chunks/{empty-state-DQPtRp2b.js → empty-state-3CLJIXSj.js} +132 -101
  74. package/dist/_chunks/empty-state-3CLJIXSj.js.map +1 -0
  75. package/dist/_chunks/file-upload-C947ACDK.js +829 -0
  76. package/dist/_chunks/file-upload-C947ACDK.js.map +1 -0
  77. package/dist/_chunks/flag-DZ6V7-hU.js.map +1 -1
  78. package/dist/_chunks/{floating-action-button-Cnw-f6AG.js → floating-action-button-C8OYj8mE.js} +9 -2
  79. package/dist/_chunks/floating-action-button-C8OYj8mE.js.map +1 -0
  80. package/dist/_chunks/{form-field-BfsPLTSc.js → form-field-Bmkeh7WY.js} +12 -11
  81. package/dist/_chunks/form-field-Bmkeh7WY.js.map +1 -0
  82. package/dist/_chunks/{form-field-context-94LwgYTQ.js → form-field-context-B3APVHKx.js} +4 -2
  83. package/dist/_chunks/form-field-context-B3APVHKx.js.map +1 -0
  84. package/dist/_chunks/freemium-paywall-CnvceDav.js +267 -0
  85. package/dist/_chunks/freemium-paywall-CnvceDav.js.map +1 -0
  86. package/dist/_chunks/{header-BGn1mRp8.js → header-D0ULgQl3.js} +69 -68
  87. package/dist/_chunks/header-D0ULgQl3.js.map +1 -0
  88. package/dist/_chunks/{icon-button-Wnnde5lc.js → icon-button-C4CGcYuz.js} +11 -3
  89. package/dist/_chunks/icon-button-C4CGcYuz.js.map +1 -0
  90. package/dist/_chunks/icon-button-group-DeV3FpNY.js.map +1 -1
  91. package/dist/_chunks/{kbd-8baVw3KU.js → kbd-Cglkd7CY.js} +6 -2
  92. package/dist/_chunks/kbd-Cglkd7CY.js.map +1 -0
  93. package/dist/_chunks/{key-value-pair-JRFS9Xrh.js → key-value-pair-CgWvAIGb.js} +2 -2
  94. package/dist/_chunks/key-value-pair-CgWvAIGb.js.map +1 -0
  95. package/dist/_chunks/{leo-sidebar-nbHib2D-.js → leo-sidebar-CfEY-xi2.js} +16 -20
  96. package/dist/_chunks/leo-sidebar-CfEY-xi2.js.map +1 -0
  97. package/dist/_chunks/link-8QmFjIz2.js +118 -0
  98. package/dist/_chunks/link-8QmFjIz2.js.map +1 -0
  99. package/dist/_chunks/list-qP6p0NTw.js +434 -0
  100. package/dist/_chunks/list-qP6p0NTw.js.map +1 -0
  101. package/dist/_chunks/live-region-C41SO3cA.js.map +1 -1
  102. package/dist/_chunks/{logo-BpFoCL-s.js → logo-_Z-jLq80.js} +155 -26
  103. package/dist/_chunks/logo-_Z-jLq80.js.map +1 -0
  104. package/dist/_chunks/{matrix-rain-BEkvux64.js → matrix-rain-CRPMXcVx.js} +8 -2
  105. package/dist/_chunks/matrix-rain-CRPMXcVx.js.map +1 -0
  106. package/dist/_chunks/{message-card-qAp2-WQK.js → message-card-ChCX9Iv6.js} +64 -60
  107. package/dist/_chunks/message-card-ChCX9Iv6.js.map +1 -0
  108. package/dist/_chunks/message-card.agent-4IeIgrnJ.js +22 -0
  109. package/dist/_chunks/message-card.agent-4IeIgrnJ.js.map +1 -0
  110. package/dist/_chunks/message-tray-n8q9ITXI.js +414 -0
  111. package/dist/_chunks/message-tray-n8q9ITXI.js.map +1 -0
  112. package/dist/_chunks/multi-select-wqqrgjUQ.js +545 -0
  113. package/dist/_chunks/multi-select-wqqrgjUQ.js.map +1 -0
  114. package/dist/_chunks/navigation-menu-ClbHeawy.js +279 -0
  115. package/dist/_chunks/navigation-menu-ClbHeawy.js.map +1 -0
  116. package/dist/_chunks/normalize-diacritics-BNGbFNlJ.js.map +1 -1
  117. package/dist/_chunks/{notification-card-BF2_veHy.js → notification-card-hBlPN1-c.js} +15 -14
  118. package/dist/_chunks/notification-card-hBlPN1-c.js.map +1 -0
  119. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js +22 -0
  120. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js.map +1 -0
  121. package/dist/_chunks/notification-tray-C5cnXbl9.js +448 -0
  122. package/dist/_chunks/notification-tray-C5cnXbl9.js.map +1 -0
  123. package/dist/_chunks/number-input-Q7wkHnvQ.js +337 -0
  124. package/dist/_chunks/number-input-Q7wkHnvQ.js.map +1 -0
  125. package/dist/_chunks/otp-input-C9gUByF0.js +260 -0
  126. package/dist/_chunks/otp-input-C9gUByF0.js.map +1 -0
  127. package/dist/_chunks/pagination-3AC4zTsi.js +462 -0
  128. package/dist/_chunks/pagination-3AC4zTsi.js.map +1 -0
  129. package/dist/_chunks/password-input-C4LmjIH1.js +301 -0
  130. package/dist/_chunks/password-input-C4LmjIH1.js.map +1 -0
  131. package/dist/_chunks/{patient-shell-7cXqIMFg.js → patient-shell-BlsEUKWB.js} +10 -15
  132. package/dist/_chunks/{patient-shell-7cXqIMFg.js.map → patient-shell-BlsEUKWB.js.map} +1 -1
  133. package/dist/_chunks/{payment-form-hcl-gGrp.js → payment-form-C3vT_npe.js} +212 -201
  134. package/dist/_chunks/payment-form-C3vT_npe.js.map +1 -0
  135. package/dist/_chunks/pdf-viewer-CZIfY08H.js +895 -0
  136. package/dist/_chunks/pdf-viewer-CZIfY08H.js.map +1 -0
  137. package/dist/_chunks/phone-input-CSHJOJ13.js +508 -0
  138. package/dist/_chunks/phone-input-CSHJOJ13.js.map +1 -0
  139. package/dist/_chunks/popover-DekUKNBk.js +293 -0
  140. package/dist/_chunks/popover-DekUKNBk.js.map +1 -0
  141. package/dist/_chunks/privacy-lock-BKsI6ReN.js +193 -0
  142. package/dist/_chunks/privacy-lock-BKsI6ReN.js.map +1 -0
  143. package/dist/_chunks/progress-C11tqhoI.js +298 -0
  144. package/dist/_chunks/progress-C11tqhoI.js.map +1 -0
  145. package/dist/_chunks/{radio-cs8N1wJi.js → radio-DvF59ThA.js} +14 -13
  146. package/dist/_chunks/radio-DvF59ThA.js.map +1 -0
  147. package/dist/_chunks/radio-group-Cz1a4QCA.js +152 -0
  148. package/dist/_chunks/radio-group-Cz1a4QCA.js.map +1 -0
  149. package/dist/_chunks/react-day-picker-C04L_28V.js.map +1 -1
  150. package/dist/_chunks/recaptcha-widget-NyfOfLII.js +192 -0
  151. package/dist/_chunks/recaptcha-widget-NyfOfLII.js.map +1 -0
  152. package/dist/_chunks/resizable-mpXXyIsN.js +483 -0
  153. package/dist/_chunks/resizable-mpXXyIsN.js.map +1 -0
  154. package/dist/_chunks/{rich-text-editor.agent-COSb5_2D.js → rich-text-editor-C7TCIlQO.js} +387 -291
  155. package/dist/_chunks/rich-text-editor-C7TCIlQO.js.map +1 -0
  156. package/dist/_chunks/safe-image-src-DstKgCo7.js.map +1 -1
  157. package/dist/_chunks/{scroll-area-DLr5w9Dd.js → scroll-area-DEDU-lp-.js} +67 -54
  158. package/dist/_chunks/scroll-area-DEDU-lp-.js.map +1 -0
  159. package/dist/_chunks/search-bar-BTDfgYtg.js +585 -0
  160. package/dist/_chunks/search-bar-BTDfgYtg.js.map +1 -0
  161. package/dist/_chunks/search-input-CdJIEjFo.js +236 -0
  162. package/dist/_chunks/search-input-CdJIEjFo.js.map +1 -0
  163. package/dist/_chunks/search-input.agent-CfZvViOd.js +69 -0
  164. package/dist/_chunks/search-input.agent-CfZvViOd.js.map +1 -0
  165. package/dist/_chunks/select-y6bXV1f1.js +411 -0
  166. package/dist/_chunks/select-y6bXV1f1.js.map +1 -0
  167. package/dist/_chunks/{separator-B4wXDLNC.js → separator-CYU_bGFn.js} +2 -5
  168. package/dist/_chunks/separator-CYU_bGFn.js.map +1 -0
  169. package/dist/_chunks/{sheet-BhNpLHc9.js → sheet-4tgMFwj0.js} +141 -65
  170. package/dist/_chunks/sheet-4tgMFwj0.js.map +1 -0
  171. package/dist/_chunks/{sidebar-OVzwN3jE.js → sidebar-Bx3wCDyy.js} +576 -484
  172. package/dist/_chunks/sidebar-Bx3wCDyy.js.map +1 -0
  173. package/dist/_chunks/{sign-in-with-alfadocs-button-BN_FPGHT.js → sign-in-with-alfadocs-button-B9UrqOqH.js} +9 -5
  174. package/dist/_chunks/sign-in-with-alfadocs-button-B9UrqOqH.js.map +1 -0
  175. package/dist/_chunks/{signature-capture.agent-C38VPXxg.js → signature-capture-DjMlFOzS.js} +258 -253
  176. package/dist/_chunks/signature-capture-DjMlFOzS.js.map +1 -0
  177. package/dist/_chunks/{skeleton-dtqyF09N.js → skeleton-CZbwyJAA.js} +9 -3
  178. package/dist/_chunks/skeleton-CZbwyJAA.js.map +1 -0
  179. package/dist/_chunks/skip-link-DmZ3c6cb.js.map +1 -1
  180. package/dist/_chunks/slider-BT2bZWsy.js +326 -0
  181. package/dist/_chunks/slider-BT2bZWsy.js.map +1 -0
  182. package/dist/_chunks/{slot-grid-D_l5VsHG.js → slot-grid-CgpYgBkW.js} +105 -95
  183. package/dist/_chunks/slot-grid-CgpYgBkW.js.map +1 -0
  184. package/dist/_chunks/sparkline-_gy8aJDG.js +252 -0
  185. package/dist/_chunks/sparkline-_gy8aJDG.js.map +1 -0
  186. package/dist/_chunks/{spinner-GCcv67vh.js → spinner-DLaYfLPl.js} +66 -14
  187. package/dist/_chunks/spinner-DLaYfLPl.js.map +1 -0
  188. package/dist/_chunks/{stat-DUB6g90R.js → stat-B9PHSPbN.js} +45 -27
  189. package/dist/_chunks/stat-B9PHSPbN.js.map +1 -0
  190. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js +322 -0
  191. package/dist/_chunks/stepper-accordion.agent-ckKYZCIP.js.map +1 -0
  192. package/dist/_chunks/stepper-calendar-BLOJUE0-.js +648 -0
  193. package/dist/_chunks/stepper-calendar-BLOJUE0-.js.map +1 -0
  194. package/dist/_chunks/stepper-progress-jFY8BSf7.js +208 -0
  195. package/dist/_chunks/stepper-progress-jFY8BSf7.js.map +1 -0
  196. package/dist/_chunks/streaming-text-BgjCTVOw.js.map +1 -1
  197. package/dist/_chunks/suggestion-chip-C4Jz0LrM.js +167 -0
  198. package/dist/_chunks/suggestion-chip-C4Jz0LrM.js.map +1 -0
  199. package/dist/_chunks/suggestion-chip.agent-6sNWFj7m.js +46 -0
  200. package/dist/_chunks/suggestion-chip.agent-6sNWFj7m.js.map +1 -0
  201. package/dist/_chunks/switch-C0psfIQF.js +196 -0
  202. package/dist/_chunks/switch-C0psfIQF.js.map +1 -0
  203. package/dist/_chunks/tabs-DaFA3Muo.js +399 -0
  204. package/dist/_chunks/tabs-DaFA3Muo.js.map +1 -0
  205. package/dist/_chunks/{tag-BqidXKo3.js → tag-DuLMjRbF.js} +90 -32
  206. package/dist/_chunks/tag-DuLMjRbF.js.map +1 -0
  207. package/dist/_chunks/{task-card-yW7tKlG4.js → task-card-Dw_ZJDL8.js} +6 -2
  208. package/dist/_chunks/task-card-Dw_ZJDL8.js.map +1 -0
  209. package/dist/_chunks/task-card.agent-CUPKYd7w.js +22 -0
  210. package/dist/_chunks/task-card.agent-CUPKYd7w.js.map +1 -0
  211. package/dist/_chunks/task-tray-XlIW9ueh.js +195 -0
  212. package/dist/_chunks/task-tray-XlIW9ueh.js.map +1 -0
  213. package/dist/_chunks/text-area-CO9Dz0qX.js +239 -0
  214. package/dist/_chunks/text-area-CO9Dz0qX.js.map +1 -0
  215. package/dist/_chunks/text-input-DZwt9L8H.js +275 -0
  216. package/dist/_chunks/text-input-DZwt9L8H.js.map +1 -0
  217. package/dist/_chunks/{theme-root-DDb0TJjd.js → theme-root-CSKD5ZRm.js} +9 -2
  218. package/dist/_chunks/{theme-root-DDb0TJjd.js.map → theme-root-CSKD5ZRm.js.map} +1 -1
  219. package/dist/_chunks/theme-toggle-B9zzCnvl.js +396 -0
  220. package/dist/_chunks/theme-toggle-B9zzCnvl.js.map +1 -0
  221. package/dist/_chunks/time-picker-DvPUmHH-.js +412 -0
  222. package/dist/_chunks/time-picker-DvPUmHH-.js.map +1 -0
  223. package/dist/_chunks/timeline-BvmnQadS.js +279 -0
  224. package/dist/_chunks/timeline-BvmnQadS.js.map +1 -0
  225. package/dist/_chunks/timestamp-BV2lC-wV.js.map +1 -1
  226. package/dist/_chunks/{toast-lOhJDKOH.js → toast.agent-BwKXA0km.js} +443 -344
  227. package/dist/_chunks/toast.agent-BwKXA0km.js.map +1 -0
  228. package/dist/_chunks/{tooth-scheme.agent-BlDyu-Gx.js → tooth-scheme-3mITSXiZ.js} +256 -265
  229. package/dist/_chunks/tooth-scheme-3mITSXiZ.js.map +1 -0
  230. package/dist/_chunks/transcript-panel-Bx5ANMsv.js +346 -0
  231. package/dist/_chunks/transcript-panel-Bx5ANMsv.js.map +1 -0
  232. package/dist/_chunks/{typing-indicator-CbUBf-Dx.js → typing-indicator-BZ5jXZPn.js} +27 -5
  233. package/dist/_chunks/typing-indicator-BZ5jXZPn.js.map +1 -0
  234. package/dist/_chunks/use-prefers-reduced-motion-BMwIQRjB.js.map +1 -1
  235. package/dist/_chunks/{use-theme-BMUhembX.js → use-theme-B1cwAXJR.js} +2 -5
  236. package/dist/_chunks/use-theme-B1cwAXJR.js.map +1 -0
  237. package/dist/_chunks/{visually-hidden-Bw7vBHLm.js → visually-hidden-BHxEUGyT.js} +11 -2
  238. package/dist/_chunks/{visually-hidden-Bw7vBHLm.js.map → visually-hidden-BHxEUGyT.js.map} +1 -1
  239. package/dist/_chunks/{warning-stack-8Pa3pekh.js → warning-stack-VygGHSqC.js} +11 -13
  240. package/dist/_chunks/warning-stack-VygGHSqC.js.map +1 -0
  241. package/dist/_chunks/{workflow-map-XeqHDFvp.js → workflow-map-C-nlogPC.js} +563 -488
  242. package/dist/_chunks/workflow-map-C-nlogPC.js.map +1 -0
  243. package/dist/agent-catalog.json +3577 -351
  244. package/dist/brand/logo-asset/Alfadocs_Logo_BW.d.ts.map +1 -1
  245. package/dist/brand/logo-asset/Alfadocs_Logo_Main.d.ts.map +1 -1
  246. package/dist/brand/logo-asset/Alfadocs_Logo_Mark.d.ts.map +1 -1
  247. package/dist/brand/logo-asset/Alfadocs_Logo_Neg.d.ts.map +1 -1
  248. package/dist/brand/logo-asset/Alfadocs_Logo_Purple.d.ts.map +1 -1
  249. package/dist/components/_shared/date-locale.d.ts.map +1 -1
  250. package/dist/components/_shared/index.d.ts +2 -2
  251. package/dist/components/_shared/index.d.ts.map +1 -1
  252. package/dist/components/_shared/normalize-diacritics.d.ts.map +1 -1
  253. package/dist/components/_shared/safe-html.d.ts.map +1 -1
  254. package/dist/components/_shared/safe-image-src.d.ts.map +1 -1
  255. package/dist/components/_shared/use-focus-trap.d.ts.map +1 -1
  256. package/dist/components/accordion/accordion.agent.d.ts +2 -1
  257. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  258. package/dist/components/accordion/accordion.d.ts +6 -0
  259. package/dist/components/accordion/accordion.d.ts.map +1 -1
  260. package/dist/components/accordion/index.d.ts +1 -1
  261. package/dist/components/accordion/index.d.ts.map +1 -1
  262. package/dist/components/accordion/index.js +5 -6
  263. package/dist/components/accordion/index.js.map +1 -1
  264. package/dist/components/agenda-card/agenda-card.agent.d.ts +3 -0
  265. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -0
  266. package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
  267. package/dist/components/agenda-card/index.d.ts +1 -0
  268. package/dist/components/agenda-card/index.d.ts.map +1 -1
  269. package/dist/components/agenda-card/index.js +3 -1
  270. package/dist/components/agenda-card/index.js.map +1 -1
  271. package/dist/components/agenda-tray/agenda-tray.agent.d.ts +4 -0
  272. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -0
  273. package/dist/components/agenda-tray/agenda-tray.d.ts +18 -1
  274. package/dist/components/agenda-tray/agenda-tray.d.ts.map +1 -1
  275. package/dist/components/agenda-tray/index.d.ts +2 -1
  276. package/dist/components/agenda-tray/index.d.ts.map +1 -1
  277. package/dist/components/agenda-tray/index.js +3 -2
  278. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts +4 -0
  279. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -0
  280. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts +18 -1
  281. package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
  282. package/dist/components/ai-prompt-input/index.d.ts +2 -1
  283. package/dist/components/ai-prompt-input/index.d.ts.map +1 -1
  284. package/dist/components/ai-prompt-input/index.js +3 -2
  285. package/dist/components/alert/alert.d.ts.map +1 -1
  286. package/dist/components/alert/index.d.ts +1 -1
  287. package/dist/components/alert/index.d.ts.map +1 -1
  288. package/dist/components/alert/index.js +1 -1
  289. package/dist/components/app-frame/app-frame.d.ts.map +1 -1
  290. package/dist/components/app-frame/index.js +1 -1
  291. package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
  292. package/dist/components/aspect-ratio/index.js +1 -1
  293. package/dist/components/audio-recorder/audio-recorder.agent.d.ts +4 -0
  294. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -0
  295. package/dist/components/audio-recorder/audio-recorder.d.ts +10 -1
  296. package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
  297. package/dist/components/audio-recorder/index.d.ts +2 -1
  298. package/dist/components/audio-recorder/index.d.ts.map +1 -1
  299. package/dist/components/audio-recorder/index.js +3 -2
  300. package/dist/components/audio-visualiser/audio-visualiser.d.ts.map +1 -1
  301. package/dist/components/audio-visualiser/index.js +1 -1
  302. package/dist/components/autocomplete/autocomplete.agent.d.ts +2 -1
  303. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  304. package/dist/components/autocomplete/autocomplete.d.ts +10 -0
  305. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  306. package/dist/components/autocomplete/index.js +1 -1
  307. package/dist/components/avatar/avatar.d.ts.map +1 -1
  308. package/dist/components/badge/badge.d.ts.map +1 -1
  309. package/dist/components/badge/index.js +1 -1
  310. package/dist/components/breadcrumb/breadcrumb.agent.d.ts +8 -0
  311. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -0
  312. package/dist/components/breadcrumb/breadcrumb.d.ts +20 -1
  313. package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
  314. package/dist/components/breadcrumb/index.d.ts +2 -1
  315. package/dist/components/breadcrumb/index.d.ts.map +1 -1
  316. package/dist/components/breadcrumb/index.js +5 -4
  317. package/dist/components/button/button.agent.d.ts.map +1 -1
  318. package/dist/components/button/button.d.ts +1 -1
  319. package/dist/components/button/button.d.ts.map +1 -1
  320. package/dist/components/button/icon-button.d.ts.map +1 -1
  321. package/dist/components/button/index.js +2 -2
  322. package/dist/components/button-group/button-group.d.ts.map +1 -1
  323. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  324. package/dist/components/calendar/calendar.d.ts.map +1 -1
  325. package/dist/components/calendar/contrast-warning.d.ts.map +1 -1
  326. package/dist/components/calendar/index.js +1 -1
  327. package/dist/components/card/card.d.ts.map +1 -1
  328. package/dist/components/card/index.js +1 -1
  329. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  330. package/dist/components/chart/chart.d.ts +2 -0
  331. package/dist/components/chart/chart.d.ts.map +1 -1
  332. package/dist/components/chart/index.d.ts +1 -1
  333. package/dist/components/chart/index.d.ts.map +1 -1
  334. package/dist/components/chart/index.js +1 -1
  335. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  336. package/dist/components/chat-container/chat-container.d.ts +4 -2
  337. package/dist/components/chat-container/chat-container.d.ts.map +1 -1
  338. package/dist/components/chat-container/index.js +2 -3
  339. package/dist/components/chat-container/index.js.map +1 -1
  340. package/dist/components/chat-input/chat-input.agent.d.ts +4 -0
  341. package/dist/components/chat-input/chat-input.agent.d.ts.map +1 -0
  342. package/dist/components/chat-input/chat-input.d.ts +10 -1
  343. package/dist/components/chat-input/chat-input.d.ts.map +1 -1
  344. package/dist/components/chat-input/index.d.ts +2 -1
  345. package/dist/components/chat-input/index.d.ts.map +1 -1
  346. package/dist/components/chat-input/index.js +3 -2
  347. package/dist/components/chat-message/chat-message.d.ts.map +1 -1
  348. package/dist/components/chat-message/index.js +1 -1
  349. package/dist/components/checkbox/checkbox.agent.d.ts +4 -0
  350. package/dist/components/checkbox/checkbox.agent.d.ts.map +1 -0
  351. package/dist/components/checkbox/checkbox.d.ts +6 -0
  352. package/dist/components/checkbox/checkbox.d.ts.map +1 -1
  353. package/dist/components/checkbox/index.js +1 -1
  354. package/dist/components/checkbox-group/checkbox-group.agent.d.ts +4 -0
  355. package/dist/components/checkbox-group/checkbox-group.agent.d.ts.map +1 -0
  356. package/dist/components/checkbox-group/checkbox-group.d.ts +8 -0
  357. package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
  358. package/dist/components/checkbox-group/index.d.ts +1 -1
  359. package/dist/components/checkbox-group/index.d.ts.map +1 -1
  360. package/dist/components/checkbox-group/index.js +1 -1
  361. package/dist/components/collapsible/collapsible.agent.d.ts +4 -0
  362. package/dist/components/collapsible/collapsible.agent.d.ts.map +1 -0
  363. package/dist/components/collapsible/collapsible.d.ts +7 -0
  364. package/dist/components/collapsible/collapsible.d.ts.map +1 -1
  365. package/dist/components/collapsible/index.d.ts +3 -2
  366. package/dist/components/collapsible/index.d.ts.map +1 -1
  367. package/dist/components/collapsible/index.js +4 -3
  368. package/dist/components/color-picker/color-picker.agent.d.ts +4 -0
  369. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -0
  370. package/dist/components/color-picker/color-picker.d.ts +5 -0
  371. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  372. package/dist/components/color-picker/index.js +1 -1
  373. package/dist/components/combobox/combobox.agent.d.ts +2 -1
  374. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  375. package/dist/components/combobox/combobox.d.ts +10 -0
  376. package/dist/components/combobox/combobox.d.ts.map +1 -1
  377. package/dist/components/combobox/index.d.ts +1 -1
  378. package/dist/components/combobox/index.d.ts.map +1 -1
  379. package/dist/components/combobox/index.js +1 -1
  380. package/dist/components/command-palette/command-palette.agent.d.ts +2 -1
  381. package/dist/components/command-palette/command-palette.agent.d.ts.map +1 -1
  382. package/dist/components/command-palette/command-palette.d.ts +52 -12
  383. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  384. package/dist/components/command-palette/index.js +1 -1
  385. package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts.map +1 -1
  386. package/dist/components/data-table/cell-renderers/balance-cell-renderer.d.ts.map +1 -1
  387. package/dist/components/data-table/cell-renderers/color-dot-cell-renderer.d.ts.map +1 -1
  388. package/dist/components/data-table/cell-renderers/currency-cell-renderer.d.ts.map +1 -1
  389. package/dist/components/data-table/cell-renderers/date-cell-renderer.d.ts.map +1 -1
  390. package/dist/components/data-table/cell-renderers/link-cell-renderer.d.ts.map +1 -1
  391. package/dist/components/data-table/cell-renderers/toggle-cell-renderer.d.ts.map +1 -1
  392. package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
  393. package/dist/components/data-table/data-table.d.ts +3 -1
  394. package/dist/components/data-table/data-table.d.ts.map +1 -1
  395. package/dist/components/data-table/index.js +1 -1
  396. package/dist/components/data-table/toolbar.d.ts +6 -5
  397. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  398. package/dist/components/date-picker/date-picker.agent.d.ts +4 -0
  399. package/dist/components/date-picker/date-picker.agent.d.ts.map +1 -0
  400. package/dist/components/date-picker/date-picker.d.ts +15 -0
  401. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  402. package/dist/components/date-picker/index.d.ts +2 -1
  403. package/dist/components/date-picker/index.d.ts.map +1 -1
  404. package/dist/components/date-picker/index.js +3 -2
  405. package/dist/components/date-range-picker/date-range-picker.agent.d.ts +4 -0
  406. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -0
  407. package/dist/components/date-range-picker/date-range-picker.d.ts +16 -1
  408. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  409. package/dist/components/date-range-picker/index.d.ts +2 -1
  410. package/dist/components/date-range-picker/index.d.ts.map +1 -1
  411. package/dist/components/date-range-picker/index.js +3 -2
  412. package/dist/components/date-time-picker/date-time-picker.agent.d.ts +4 -0
  413. package/dist/components/date-time-picker/date-time-picker.agent.d.ts.map +1 -0
  414. package/dist/components/date-time-picker/date-time-picker.d.ts +16 -1
  415. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  416. package/dist/components/date-time-picker/index.d.ts +2 -1
  417. package/dist/components/date-time-picker/index.d.ts.map +1 -1
  418. package/dist/components/date-time-picker/index.js +3 -2
  419. package/dist/components/description-list/description-list.d.ts +1 -2
  420. package/dist/components/description-list/description-list.d.ts.map +1 -1
  421. package/dist/components/description-list/index.js +1 -1
  422. package/dist/components/dialog/dialog.agent.d.ts +5 -6
  423. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  424. package/dist/components/dialog/dialog.d.ts +11 -2
  425. package/dist/components/dialog/dialog.d.ts.map +1 -1
  426. package/dist/components/dialog/index.js +1 -1
  427. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts +2 -1
  428. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
  429. package/dist/components/dropdown-menu/dropdown-menu.d.ts +20 -17
  430. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  431. package/dist/components/dropdown-menu/index.js +3 -4
  432. package/dist/components/dropdown-menu/index.js.map +1 -1
  433. package/dist/components/empty-state/empty-state.d.ts.map +1 -1
  434. package/dist/components/empty-state/index.js +1 -1
  435. package/dist/components/file-upload/file-upload.agent.d.ts +2 -1
  436. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  437. package/dist/components/file-upload/file-upload.d.ts +12 -0
  438. package/dist/components/file-upload/file-upload.d.ts.map +1 -1
  439. package/dist/components/file-upload/index.d.ts +1 -1
  440. package/dist/components/file-upload/index.d.ts.map +1 -1
  441. package/dist/components/file-upload/index.js +1 -1
  442. package/dist/components/flag/flag.d.ts.map +1 -1
  443. package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
  444. package/dist/components/floating-action-button/index.js +1 -1
  445. package/dist/components/form-field/form-field-context.d.ts.map +1 -1
  446. package/dist/components/form-field/form-field.d.ts.map +1 -1
  447. package/dist/components/form-field/index.js +2 -2
  448. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts +4 -0
  449. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -0
  450. package/dist/components/freemium-paywall/freemium-paywall.d.ts +7 -0
  451. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  452. package/dist/components/freemium-paywall/index.d.ts +2 -1
  453. package/dist/components/freemium-paywall/index.d.ts.map +1 -1
  454. package/dist/components/freemium-paywall/index.js +3 -2
  455. package/dist/components/header/header.d.ts.map +1 -1
  456. package/dist/components/header/index.js +1 -1
  457. package/dist/components/icon-button/index.js +1 -1
  458. package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
  459. package/dist/components/index.d.ts +2 -0
  460. package/dist/components/index.d.ts.map +1 -1
  461. package/dist/components/kbd/index.js +1 -1
  462. package/dist/components/kbd/kbd.d.ts.map +1 -1
  463. package/dist/components/key-value-pair/index.js +1 -1
  464. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  465. package/dist/components/link/index.d.ts +2 -0
  466. package/dist/components/link/index.d.ts.map +1 -0
  467. package/dist/components/link/index.js +5 -0
  468. package/dist/components/link/index.js.map +1 -0
  469. package/dist/components/link/link.d.ts +39 -0
  470. package/dist/components/link/link.d.ts.map +1 -0
  471. package/dist/components/list/index.d.ts +2 -1
  472. package/dist/components/list/index.d.ts.map +1 -1
  473. package/dist/components/list/index.js +3 -2
  474. package/dist/components/list/list.agent.d.ts +4 -0
  475. package/dist/components/list/list.agent.d.ts.map +1 -0
  476. package/dist/components/list/list.d.ts +8 -2
  477. package/dist/components/list/list.d.ts.map +1 -1
  478. package/dist/components/live-region/live-region.d.ts.map +1 -1
  479. package/dist/components/logo/index.js +1 -1
  480. package/dist/components/logo/logo.d.ts.map +1 -1
  481. package/dist/components/matrix-rain/index.js +1 -1
  482. package/dist/components/matrix-rain/matrix-rain.d.ts.map +1 -1
  483. package/dist/components/message-card/index.d.ts +2 -1
  484. package/dist/components/message-card/index.d.ts.map +1 -1
  485. package/dist/components/message-card/index.js +5 -3
  486. package/dist/components/message-card/index.js.map +1 -1
  487. package/dist/components/message-card/message-card.agent.d.ts +3 -0
  488. package/dist/components/message-card/message-card.agent.d.ts.map +1 -0
  489. package/dist/components/message-card/message-card.d.ts.map +1 -1
  490. package/dist/components/message-tray/index.d.ts +2 -1
  491. package/dist/components/message-tray/index.d.ts.map +1 -1
  492. package/dist/components/message-tray/index.js +3 -2
  493. package/dist/components/message-tray/message-tray.agent.d.ts +4 -0
  494. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -0
  495. package/dist/components/message-tray/message-tray.d.ts +26 -1
  496. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  497. package/dist/components/multi-select/index.js +1 -1
  498. package/dist/components/multi-select/multi-select.agent.d.ts +2 -1
  499. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  500. package/dist/components/multi-select/multi-select.d.ts +10 -0
  501. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  502. package/dist/components/navigation-menu/index.d.ts +2 -1
  503. package/dist/components/navigation-menu/index.d.ts.map +1 -1
  504. package/dist/components/navigation-menu/index.js +7 -6
  505. package/dist/components/navigation-menu/navigation-menu.agent.d.ts +4 -0
  506. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -0
  507. package/dist/components/navigation-menu/navigation-menu.d.ts +27 -1
  508. package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
  509. package/dist/components/notification-card/index.d.ts +2 -1
  510. package/dist/components/notification-card/index.d.ts.map +1 -1
  511. package/dist/components/notification-card/index.js +5 -3
  512. package/dist/components/notification-card/index.js.map +1 -1
  513. package/dist/components/notification-card/notification-card.agent.d.ts +3 -0
  514. package/dist/components/notification-card/notification-card.agent.d.ts.map +1 -0
  515. package/dist/components/notification-card/notification-card.d.ts.map +1 -1
  516. package/dist/components/notification-tray/index.d.ts +2 -1
  517. package/dist/components/notification-tray/index.d.ts.map +1 -1
  518. package/dist/components/notification-tray/index.js +3 -2
  519. package/dist/components/notification-tray/notification-tray.agent.d.ts +4 -0
  520. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -0
  521. package/dist/components/notification-tray/notification-tray.d.ts +26 -1
  522. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  523. package/dist/components/number-input/index.js +1 -1
  524. package/dist/components/number-input/number-input.agent.d.ts +4 -0
  525. package/dist/components/number-input/number-input.agent.d.ts.map +1 -0
  526. package/dist/components/number-input/number-input.d.ts +7 -0
  527. package/dist/components/number-input/number-input.d.ts.map +1 -1
  528. package/dist/components/number-input/use-locale-number.d.ts.map +1 -1
  529. package/dist/components/otp-input/index.js +1 -1
  530. package/dist/components/otp-input/otp-input.agent.d.ts +4 -0
  531. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -0
  532. package/dist/components/otp-input/otp-input.d.ts +10 -0
  533. package/dist/components/otp-input/otp-input.d.ts.map +1 -1
  534. package/dist/components/pagination/index.js +1 -1
  535. package/dist/components/pagination/pagination.agent.d.ts +2 -1
  536. package/dist/components/pagination/pagination.agent.d.ts.map +1 -1
  537. package/dist/components/pagination/pagination.d.ts +11 -6
  538. package/dist/components/pagination/pagination.d.ts.map +1 -1
  539. package/dist/components/password-input/index.js +1 -1
  540. package/dist/components/password-input/password-input.agent.d.ts +4 -0
  541. package/dist/components/password-input/password-input.agent.d.ts.map +1 -0
  542. package/dist/components/password-input/password-input.d.ts +9 -0
  543. package/dist/components/password-input/password-input.d.ts.map +1 -1
  544. package/dist/components/payment-form/index.js +7 -8
  545. package/dist/components/payment-form/index.js.map +1 -1
  546. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  547. package/dist/components/payment-form/payment-form.d.ts +3 -1
  548. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  549. package/dist/components/pdf-viewer/index.js +1 -1
  550. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  551. package/dist/components/pdf-viewer/pdf-viewer.d.ts +2 -0
  552. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  553. package/dist/components/phone-input/index.d.ts +1 -1
  554. package/dist/components/phone-input/index.d.ts.map +1 -1
  555. package/dist/components/phone-input/index.js +1 -1
  556. package/dist/components/phone-input/phone-input.agent.d.ts +4 -0
  557. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -0
  558. package/dist/components/phone-input/phone-input.d.ts +7 -0
  559. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  560. package/dist/components/popover/index.js +3 -4
  561. package/dist/components/popover/index.js.map +1 -1
  562. package/dist/components/popover/popover.agent.d.ts +2 -1
  563. package/dist/components/popover/popover.agent.d.ts.map +1 -1
  564. package/dist/components/popover/popover.d.ts +8 -1
  565. package/dist/components/popover/popover.d.ts.map +1 -1
  566. package/dist/components/privacy-lock/index.d.ts +2 -1
  567. package/dist/components/privacy-lock/index.d.ts.map +1 -1
  568. package/dist/components/privacy-lock/index.js +3 -2
  569. package/dist/components/privacy-lock/privacy-lock.agent.d.ts +4 -0
  570. package/dist/components/privacy-lock/privacy-lock.agent.d.ts.map +1 -0
  571. package/dist/components/privacy-lock/privacy-lock.d.ts +6 -0
  572. package/dist/components/privacy-lock/privacy-lock.d.ts.map +1 -1
  573. package/dist/components/progress/index.js +3 -4
  574. package/dist/components/progress/index.js.map +1 -1
  575. package/dist/components/progress/progress.agent.d.ts.map +1 -1
  576. package/dist/components/progress/progress.d.ts.map +1 -1
  577. package/dist/components/radio/index.js +1 -1
  578. package/dist/components/radio-group/index.js +2 -2
  579. package/dist/components/radio-group/radio-group.agent.d.ts +4 -0
  580. package/dist/components/radio-group/radio-group.agent.d.ts.map +1 -0
  581. package/dist/components/radio-group/radio-group.d.ts +5 -0
  582. package/dist/components/radio-group/radio-group.d.ts.map +1 -1
  583. package/dist/components/radio-group/radio.d.ts.map +1 -1
  584. package/dist/components/recaptcha-widget/index.d.ts +3 -0
  585. package/dist/components/recaptcha-widget/index.d.ts.map +1 -0
  586. package/dist/components/recaptcha-widget/index.js +6 -0
  587. package/dist/components/recaptcha-widget/index.js.map +1 -0
  588. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts +4 -0
  589. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -0
  590. package/dist/components/recaptcha-widget/recaptcha-widget.d.ts +56 -0
  591. package/dist/components/recaptcha-widget/recaptcha-widget.d.ts.map +1 -0
  592. package/dist/components/resizable/index.d.ts +1 -1
  593. package/dist/components/resizable/index.d.ts.map +1 -1
  594. package/dist/components/resizable/index.js +1 -1
  595. package/dist/components/resizable/resizable-context.d.ts.map +1 -1
  596. package/dist/components/resizable/resizable.agent.d.ts +2 -1
  597. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  598. package/dist/components/resizable/resizable.d.ts +6 -0
  599. package/dist/components/resizable/resizable.d.ts.map +1 -1
  600. package/dist/components/rich-text-editor/index.js +1 -1
  601. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  602. package/dist/components/rich-text-editor/rich-text-editor.d.ts +2 -0
  603. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  604. package/dist/components/scroll-area/index.js +1 -1
  605. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  606. package/dist/components/search-bar/index.d.ts +2 -1
  607. package/dist/components/search-bar/index.d.ts.map +1 -1
  608. package/dist/components/search-bar/index.js +3 -2
  609. package/dist/components/search-bar/search-bar.agent.d.ts +4 -0
  610. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -0
  611. package/dist/components/search-bar/search-bar.d.ts +26 -0
  612. package/dist/components/search-bar/search-bar.d.ts.map +1 -1
  613. package/dist/components/search-input/index.d.ts +2 -1
  614. package/dist/components/search-input/index.d.ts.map +1 -1
  615. package/dist/components/search-input/index.js +4 -2
  616. package/dist/components/search-input/index.js.map +1 -1
  617. package/dist/components/search-input/search-input.agent.d.ts +4 -0
  618. package/dist/components/search-input/search-input.agent.d.ts.map +1 -0
  619. package/dist/components/search-input/search-input.d.ts +27 -0
  620. package/dist/components/search-input/search-input.d.ts.map +1 -1
  621. package/dist/components/select/index.js +1 -1
  622. package/dist/components/select/select.agent.d.ts +4 -0
  623. package/dist/components/select/select.agent.d.ts.map +1 -0
  624. package/dist/components/select/select.d.ts +10 -1
  625. package/dist/components/select/select.d.ts.map +1 -1
  626. package/dist/components/separator/index.js +1 -1
  627. package/dist/components/separator/separator.d.ts.map +1 -1
  628. package/dist/components/sheet/index.js +3 -4
  629. package/dist/components/sheet/index.js.map +1 -1
  630. package/dist/components/sheet/sheet.agent.d.ts +2 -1
  631. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  632. package/dist/components/sheet/sheet.d.ts +11 -2
  633. package/dist/components/sheet/sheet.d.ts.map +1 -1
  634. package/dist/components/sidebar/index.js +7 -8
  635. package/dist/components/sidebar/index.js.map +1 -1
  636. package/dist/components/sidebar/sidebar.agent.d.ts +2 -1
  637. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  638. package/dist/components/sidebar/sidebar.d.ts +4 -0
  639. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  640. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  641. package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
  642. package/dist/components/signature-capture/index.js +1 -1
  643. package/dist/components/signature-capture/signature-capture.agent.d.ts.map +1 -1
  644. package/dist/components/signature-capture/signature-capture.d.ts +2 -0
  645. package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
  646. package/dist/components/skeleton/index.js +1 -1
  647. package/dist/components/skeleton/skeleton.d.ts.map +1 -1
  648. package/dist/components/skip-link/skip-link.d.ts.map +1 -1
  649. package/dist/components/slider/index.js +1 -1
  650. package/dist/components/slider/slider.agent.d.ts +4 -0
  651. package/dist/components/slider/slider.agent.d.ts.map +1 -0
  652. package/dist/components/slider/slider.d.ts +5 -0
  653. package/dist/components/slider/slider.d.ts.map +1 -1
  654. package/dist/components/slot-grid/index.js +1 -1
  655. package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
  656. package/dist/components/sparkline/index.js +1 -1
  657. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  658. package/dist/components/sparkline/sparkline.d.ts.map +1 -1
  659. package/dist/components/sparkline/use-linear-trend.d.ts.map +1 -1
  660. package/dist/components/spinner/index.js +1 -1
  661. package/dist/components/spinner/spinner.d.ts.map +1 -1
  662. package/dist/components/stat/index.js +1 -1
  663. package/dist/components/stat/stat.d.ts.map +1 -1
  664. package/dist/components/stepper-accordion/index.d.ts +2 -1
  665. package/dist/components/stepper-accordion/index.d.ts.map +1 -1
  666. package/dist/components/stepper-accordion/index.js +3 -2
  667. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts +4 -0
  668. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -0
  669. package/dist/components/stepper-accordion/stepper-accordion.d.ts +19 -1
  670. package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
  671. package/dist/components/stepper-calendar/index.d.ts +2 -1
  672. package/dist/components/stepper-calendar/index.d.ts.map +1 -1
  673. package/dist/components/stepper-calendar/index.js +3 -2
  674. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts +4 -0
  675. package/dist/components/stepper-calendar/stepper-calendar.agent.d.ts.map +1 -0
  676. package/dist/components/stepper-calendar/stepper-calendar.d.ts +18 -0
  677. package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +1 -1
  678. package/dist/components/stepper-progress/index.d.ts +2 -1
  679. package/dist/components/stepper-progress/index.d.ts.map +1 -1
  680. package/dist/components/stepper-progress/index.js +3 -2
  681. package/dist/components/stepper-progress/stepper-progress.agent.d.ts +4 -0
  682. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -0
  683. package/dist/components/stepper-progress/stepper-progress.d.ts +25 -0
  684. package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
  685. package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
  686. package/dist/components/suggestion-chip/index.d.ts +2 -1
  687. package/dist/components/suggestion-chip/index.d.ts.map +1 -1
  688. package/dist/components/suggestion-chip/index.js +5 -3
  689. package/dist/components/suggestion-chip/index.js.map +1 -1
  690. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts +4 -0
  691. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -0
  692. package/dist/components/suggestion-chip/suggestion-chip.d.ts +7 -1
  693. package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
  694. package/dist/components/switch/index.js +1 -1
  695. package/dist/components/switch/switch.agent.d.ts +4 -0
  696. package/dist/components/switch/switch.agent.d.ts.map +1 -0
  697. package/dist/components/switch/switch.d.ts +6 -0
  698. package/dist/components/switch/switch.d.ts.map +1 -1
  699. package/dist/components/tabs/index.d.ts +1 -1
  700. package/dist/components/tabs/index.d.ts.map +1 -1
  701. package/dist/components/tabs/index.js +1 -1
  702. package/dist/components/tabs/tabs.agent.d.ts +2 -1
  703. package/dist/components/tabs/tabs.agent.d.ts.map +1 -1
  704. package/dist/components/tabs/tabs.d.ts +4 -0
  705. package/dist/components/tabs/tabs.d.ts.map +1 -1
  706. package/dist/components/tag/index.js +1 -1
  707. package/dist/components/tag/tag.d.ts.map +1 -1
  708. package/dist/components/task-card/index.d.ts +1 -0
  709. package/dist/components/task-card/index.d.ts.map +1 -1
  710. package/dist/components/task-card/index.js +5 -3
  711. package/dist/components/task-card/index.js.map +1 -1
  712. package/dist/components/task-card/task-card.agent.d.ts +3 -0
  713. package/dist/components/task-card/task-card.agent.d.ts.map +1 -0
  714. package/dist/components/task-card/task-card.d.ts.map +1 -1
  715. package/dist/components/task-tray/index.d.ts +2 -1
  716. package/dist/components/task-tray/index.d.ts.map +1 -1
  717. package/dist/components/task-tray/index.js +3 -2
  718. package/dist/components/task-tray/task-tray.agent.d.ts +4 -0
  719. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -0
  720. package/dist/components/task-tray/task-tray.d.ts +24 -1
  721. package/dist/components/task-tray/task-tray.d.ts.map +1 -1
  722. package/dist/components/text-area/index.js +1 -1
  723. package/dist/components/text-area/text-area.agent.d.ts +4 -0
  724. package/dist/components/text-area/text-area.agent.d.ts.map +1 -0
  725. package/dist/components/text-area/text-area.d.ts +7 -0
  726. package/dist/components/text-area/text-area.d.ts.map +1 -1
  727. package/dist/components/text-input/index.js +1 -1
  728. package/dist/components/text-input/text-input.agent.d.ts +4 -0
  729. package/dist/components/text-input/text-input.agent.d.ts.map +1 -0
  730. package/dist/components/text-input/text-input.d.ts +10 -0
  731. package/dist/components/text-input/text-input.d.ts.map +1 -1
  732. package/dist/components/theme-root/index.js +1 -1
  733. package/dist/components/theme-root/theme-root.d.ts.map +1 -1
  734. package/dist/components/theme-toggle/index.d.ts +2 -1
  735. package/dist/components/theme-toggle/index.d.ts.map +1 -1
  736. package/dist/components/theme-toggle/index.js +3 -2
  737. package/dist/components/theme-toggle/theme-toggle.agent.d.ts +4 -0
  738. package/dist/components/theme-toggle/theme-toggle.agent.d.ts.map +1 -0
  739. package/dist/components/theme-toggle/theme-toggle.d.ts +8 -1
  740. package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
  741. package/dist/components/time-picker/index.d.ts +2 -1
  742. package/dist/components/time-picker/index.d.ts.map +1 -1
  743. package/dist/components/time-picker/index.js +3 -2
  744. package/dist/components/time-picker/time-picker.agent.d.ts +4 -0
  745. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -0
  746. package/dist/components/time-picker/time-picker.d.ts +15 -0
  747. package/dist/components/time-picker/time-picker.d.ts.map +1 -1
  748. package/dist/components/timeline/index.d.ts +2 -1
  749. package/dist/components/timeline/index.d.ts.map +1 -1
  750. package/dist/components/timeline/index.js +3 -2
  751. package/dist/components/timeline/timeline.agent.d.ts +4 -0
  752. package/dist/components/timeline/timeline.agent.d.ts.map +1 -0
  753. package/dist/components/timeline/timeline.d.ts +7 -0
  754. package/dist/components/timeline/timeline.d.ts.map +1 -1
  755. package/dist/components/timestamp/timestamp.d.ts.map +1 -1
  756. package/dist/components/toast/index.d.ts +3 -2
  757. package/dist/components/toast/index.d.ts.map +1 -1
  758. package/dist/components/toast/index.js +7 -5
  759. package/dist/components/toast/toast.agent.d.ts +4 -0
  760. package/dist/components/toast/toast.agent.d.ts.map +1 -0
  761. package/dist/components/toast/toast.d.ts +8 -0
  762. package/dist/components/toast/toast.d.ts.map +1 -1
  763. package/dist/components/tooth-scheme/index.js +1 -1
  764. package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
  765. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  766. package/dist/components/tooth-scheme/tooth-scheme.d.ts +3 -1
  767. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  768. package/dist/components/transcript-panel/index.d.ts +2 -1
  769. package/dist/components/transcript-panel/index.d.ts.map +1 -1
  770. package/dist/components/transcript-panel/index.js +3 -2
  771. package/dist/components/transcript-panel/transcript-panel.agent.d.ts +4 -0
  772. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -0
  773. package/dist/components/transcript-panel/transcript-panel.d.ts +9 -0
  774. package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
  775. package/dist/components/typing-indicator/index.js +1 -1
  776. package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
  777. package/dist/components/visually-hidden/index.js +1 -1
  778. package/dist/components/visually-hidden/visually-hidden.d.ts.map +1 -1
  779. package/dist/components/warning-stack/index.js +1 -1
  780. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  781. package/dist/components/workflow/index.d.ts +2 -1
  782. package/dist/components/workflow/index.d.ts.map +1 -1
  783. package/dist/components/workflow/index.js +10 -7
  784. package/dist/components/workflow/workflow-card.d.ts.map +1 -1
  785. package/dist/components/workflow/workflow-editor.d.ts +6 -0
  786. package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
  787. package/dist/components/workflow/workflow-map.d.ts +2 -0
  788. package/dist/components/workflow/workflow-map.d.ts.map +1 -1
  789. package/dist/components/workflow/workflow-types.d.ts.map +1 -1
  790. package/dist/components/workflow/workflow.agent.d.ts +6 -0
  791. package/dist/components/workflow/workflow.agent.d.ts.map +1 -0
  792. package/dist/hooks/index.js +1 -1
  793. package/dist/hooks/use-prefers-reduced-motion.d.ts.map +1 -1
  794. package/dist/hooks/use-theme.d.ts.map +1 -1
  795. package/dist/i18n/config.d.ts.map +1 -1
  796. package/dist/i18n/config.js +24 -11
  797. package/dist/i18n/config.js.map +1 -1
  798. package/dist/i18n/resources.d.ts +7 -0
  799. package/dist/i18n/resources.d.ts.map +1 -1
  800. package/dist/index.js +463 -425
  801. package/dist/locales/en.json +7 -0
  802. package/dist/patterns/leo-assistant/index.js +1 -1
  803. package/dist/patterns/leo-assistant/leo-chat-surface.d.ts.map +1 -1
  804. package/dist/patterns/leo-assistant/leo-sidebar.d.ts.map +1 -1
  805. package/dist/patterns/patient-shell/index.js +1 -1
  806. package/dist/patterns/patient-shell/patient-shell.d.ts.map +1 -1
  807. package/dist/safe-html/index.js +20 -3
  808. package/dist/safe-html/index.js.map +1 -1
  809. package/dist/tokens/apexcharts-theme.d.ts.map +1 -1
  810. package/dist/tokens.css +2 -2
  811. package/package.json +28 -2
  812. package/dist/_chunks/accordion-B6fyINUk.js +0 -118
  813. package/dist/_chunks/accordion-B6fyINUk.js.map +0 -1
  814. package/dist/_chunks/accordion.agent-Cz-yglRa.js +0 -17
  815. package/dist/_chunks/accordion.agent-Cz-yglRa.js.map +0 -1
  816. package/dist/_chunks/agenda-card-DIWDvWum.js.map +0 -1
  817. package/dist/_chunks/agenda-tray-BqQZwiHc.js +0 -120
  818. package/dist/_chunks/agenda-tray-BqQZwiHc.js.map +0 -1
  819. package/dist/_chunks/ai-prompt-input-CI27KmZ1.js +0 -380
  820. package/dist/_chunks/ai-prompt-input-CI27KmZ1.js.map +0 -1
  821. package/dist/_chunks/alert-BlOUMkXj.js.map +0 -1
  822. package/dist/_chunks/app-frame-6d7Lu4ea.js.map +0 -1
  823. package/dist/_chunks/aspect-ratio-CxsdG8vk.js.map +0 -1
  824. package/dist/_chunks/audio-recorder-B-8SKgKn.js +0 -376
  825. package/dist/_chunks/audio-recorder-B-8SKgKn.js.map +0 -1
  826. package/dist/_chunks/audio-visualiser-CeMPCZkd.js.map +0 -1
  827. package/dist/_chunks/autocomplete.agent-DqOy0_1P.js +0 -372
  828. package/dist/_chunks/autocomplete.agent-DqOy0_1P.js.map +0 -1
  829. package/dist/_chunks/badge-mrstWxve.js.map +0 -1
  830. package/dist/_chunks/balance-cell-renderer-BWm3knY9.js.map +0 -1
  831. package/dist/_chunks/breadcrumb-D6xpsP7n.js +0 -293
  832. package/dist/_chunks/breadcrumb-D6xpsP7n.js.map +0 -1
  833. package/dist/_chunks/button-7mLWcMp_.js.map +0 -1
  834. package/dist/_chunks/calendar-nGEgelJs.js.map +0 -1
  835. package/dist/_chunks/card-BEy58ZKp.js.map +0 -1
  836. package/dist/_chunks/chart.agent-BdS-_8MO.js +0 -269
  837. package/dist/_chunks/chart.agent-BdS-_8MO.js.map +0 -1
  838. package/dist/_chunks/chat-container-Cm3SlR2p.js +0 -174
  839. package/dist/_chunks/chat-container-Cm3SlR2p.js.map +0 -1
  840. package/dist/_chunks/chat-container.agent-Dhw9xCJt.js +0 -22
  841. package/dist/_chunks/chat-container.agent-Dhw9xCJt.js.map +0 -1
  842. package/dist/_chunks/chat-input-DreOPP8A.js +0 -226
  843. package/dist/_chunks/chat-input-DreOPP8A.js.map +0 -1
  844. package/dist/_chunks/chat-message-ByouZpPP.js.map +0 -1
  845. package/dist/_chunks/checkbox-DNK4qS2_.js +0 -116
  846. package/dist/_chunks/checkbox-DNK4qS2_.js.map +0 -1
  847. package/dist/_chunks/checkbox-group-CWpGZEF6.js +0 -146
  848. package/dist/_chunks/checkbox-group-CWpGZEF6.js.map +0 -1
  849. package/dist/_chunks/collapsible-D4LOdLxp.js +0 -67
  850. package/dist/_chunks/collapsible-D4LOdLxp.js.map +0 -1
  851. package/dist/_chunks/color-picker-e9PmpaGH.js.map +0 -1
  852. package/dist/_chunks/combobox.agent-ByobCLJ_.js +0 -350
  853. package/dist/_chunks/combobox.agent-ByobCLJ_.js.map +0 -1
  854. package/dist/_chunks/command-palette.agent-js2rxgeR.js +0 -351
  855. package/dist/_chunks/command-palette.agent-js2rxgeR.js.map +0 -1
  856. package/dist/_chunks/date-picker-DYXNsWmM.js +0 -1726
  857. package/dist/_chunks/date-picker-DYXNsWmM.js.map +0 -1
  858. package/dist/_chunks/date-range-picker-BcNDJI7m.js +0 -183
  859. package/dist/_chunks/date-range-picker-BcNDJI7m.js.map +0 -1
  860. package/dist/_chunks/date-time-picker-CmGiTU__.js +0 -202
  861. package/dist/_chunks/date-time-picker-CmGiTU__.js.map +0 -1
  862. package/dist/_chunks/description-list-DvJbp6Yg.js.map +0 -1
  863. package/dist/_chunks/dialog.agent-DEG_fVzG.js +0 -147
  864. package/dist/_chunks/dialog.agent-DEG_fVzG.js.map +0 -1
  865. package/dist/_chunks/dropdown-menu-Cw3EyPZv.js +0 -215
  866. package/dist/_chunks/dropdown-menu-Cw3EyPZv.js.map +0 -1
  867. package/dist/_chunks/dropdown-menu.agent-Cry4Nmes.js +0 -17
  868. package/dist/_chunks/dropdown-menu.agent-Cry4Nmes.js.map +0 -1
  869. package/dist/_chunks/empty-state-DQPtRp2b.js.map +0 -1
  870. package/dist/_chunks/file-upload.agent-B9AN82LA.js +0 -649
  871. package/dist/_chunks/file-upload.agent-B9AN82LA.js.map +0 -1
  872. package/dist/_chunks/floating-action-button-Cnw-f6AG.js.map +0 -1
  873. package/dist/_chunks/form-field-BfsPLTSc.js.map +0 -1
  874. package/dist/_chunks/form-field-context-94LwgYTQ.js.map +0 -1
  875. package/dist/_chunks/freemium-paywall-CkefGLM_.js +0 -198
  876. package/dist/_chunks/freemium-paywall-CkefGLM_.js.map +0 -1
  877. package/dist/_chunks/header-BGn1mRp8.js.map +0 -1
  878. package/dist/_chunks/icon-button-Wnnde5lc.js.map +0 -1
  879. package/dist/_chunks/kbd-8baVw3KU.js.map +0 -1
  880. package/dist/_chunks/key-value-pair-JRFS9Xrh.js.map +0 -1
  881. package/dist/_chunks/leo-sidebar-nbHib2D-.js.map +0 -1
  882. package/dist/_chunks/list-B1ozIjQe.js +0 -359
  883. package/dist/_chunks/list-B1ozIjQe.js.map +0 -1
  884. package/dist/_chunks/logo-BpFoCL-s.js.map +0 -1
  885. package/dist/_chunks/matrix-rain-BEkvux64.js.map +0 -1
  886. package/dist/_chunks/message-card-qAp2-WQK.js.map +0 -1
  887. package/dist/_chunks/message-tray-VaLpQU5t.js +0 -303
  888. package/dist/_chunks/message-tray-VaLpQU5t.js.map +0 -1
  889. package/dist/_chunks/multi-select.agent-CNsyW3n9.js +0 -450
  890. package/dist/_chunks/multi-select.agent-CNsyW3n9.js.map +0 -1
  891. package/dist/_chunks/navigation-menu-EVFau1O2.js +0 -180
  892. package/dist/_chunks/navigation-menu-EVFau1O2.js.map +0 -1
  893. package/dist/_chunks/notification-card-BF2_veHy.js.map +0 -1
  894. package/dist/_chunks/notification-tray-B7U5YZYg.js +0 -328
  895. package/dist/_chunks/notification-tray-B7U5YZYg.js.map +0 -1
  896. package/dist/_chunks/number-input-DjpT_RXJ.js +0 -249
  897. package/dist/_chunks/number-input-DjpT_RXJ.js.map +0 -1
  898. package/dist/_chunks/otp-input-De5_Ih7B.js +0 -189
  899. package/dist/_chunks/otp-input-De5_Ih7B.js.map +0 -1
  900. package/dist/_chunks/pagination.agent-oEaqmtx5.js +0 -380
  901. package/dist/_chunks/pagination.agent-oEaqmtx5.js.map +0 -1
  902. package/dist/_chunks/password-input-DJDVznWH.js +0 -193
  903. package/dist/_chunks/password-input-DJDVznWH.js.map +0 -1
  904. package/dist/_chunks/payment-form-hcl-gGrp.js.map +0 -1
  905. package/dist/_chunks/payment-form.agent-BkEnRerR.js +0 -26
  906. package/dist/_chunks/payment-form.agent-BkEnRerR.js.map +0 -1
  907. package/dist/_chunks/pdf-viewer.agent-CfIHhcHx.js +0 -859
  908. package/dist/_chunks/pdf-viewer.agent-CfIHhcHx.js.map +0 -1
  909. package/dist/_chunks/phone-input-DE_39q65.js +0 -428
  910. package/dist/_chunks/phone-input-DE_39q65.js.map +0 -1
  911. package/dist/_chunks/popover-C3CTUsqh.js +0 -227
  912. package/dist/_chunks/popover-C3CTUsqh.js.map +0 -1
  913. package/dist/_chunks/popover.agent-C0qOx9WT.js +0 -13
  914. package/dist/_chunks/popover.agent-C0qOx9WT.js.map +0 -1
  915. package/dist/_chunks/privacy-lock-CQpgkLec.js +0 -132
  916. package/dist/_chunks/privacy-lock-CQpgkLec.js.map +0 -1
  917. package/dist/_chunks/progress-B4Of_pzz.js +0 -252
  918. package/dist/_chunks/progress-B4Of_pzz.js.map +0 -1
  919. package/dist/_chunks/progress.agent-CXkHURjX.js +0 -22
  920. package/dist/_chunks/progress.agent-CXkHURjX.js.map +0 -1
  921. package/dist/_chunks/radio-cs8N1wJi.js.map +0 -1
  922. package/dist/_chunks/radio-group-BIUbpWml.js +0 -89
  923. package/dist/_chunks/radio-group-BIUbpWml.js.map +0 -1
  924. package/dist/_chunks/resizable.agent-DBpPGNdy.js +0 -435
  925. package/dist/_chunks/resizable.agent-DBpPGNdy.js.map +0 -1
  926. package/dist/_chunks/rich-text-editor.agent-COSb5_2D.js.map +0 -1
  927. package/dist/_chunks/scroll-area-DLr5w9Dd.js.map +0 -1
  928. package/dist/_chunks/search-bar-fcGqDFW3.js +0 -397
  929. package/dist/_chunks/search-bar-fcGqDFW3.js.map +0 -1
  930. package/dist/_chunks/search-input-BVMCONyN.js +0 -197
  931. package/dist/_chunks/search-input-BVMCONyN.js.map +0 -1
  932. package/dist/_chunks/select-IY_JQa-F.js +0 -321
  933. package/dist/_chunks/select-IY_JQa-F.js.map +0 -1
  934. package/dist/_chunks/separator-B4wXDLNC.js.map +0 -1
  935. package/dist/_chunks/sheet-BhNpLHc9.js.map +0 -1
  936. package/dist/_chunks/sheet.agent-DwQlBqK9.js +0 -13
  937. package/dist/_chunks/sheet.agent-DwQlBqK9.js.map +0 -1
  938. package/dist/_chunks/sidebar-OVzwN3jE.js.map +0 -1
  939. package/dist/_chunks/sidebar.agent-B0fnH9CC.js +0 -17
  940. package/dist/_chunks/sidebar.agent-B0fnH9CC.js.map +0 -1
  941. package/dist/_chunks/sign-in-with-alfadocs-button-BN_FPGHT.js.map +0 -1
  942. package/dist/_chunks/signature-capture.agent-C38VPXxg.js.map +0 -1
  943. package/dist/_chunks/skeleton-dtqyF09N.js.map +0 -1
  944. package/dist/_chunks/slider-DjyRt3Mp.js +0 -274
  945. package/dist/_chunks/slider-DjyRt3Mp.js.map +0 -1
  946. package/dist/_chunks/slot-grid-D_l5VsHG.js.map +0 -1
  947. package/dist/_chunks/sparkline.agent-C_xp3NRB.js +0 -238
  948. package/dist/_chunks/sparkline.agent-C_xp3NRB.js.map +0 -1
  949. package/dist/_chunks/spinner-GCcv67vh.js.map +0 -1
  950. package/dist/_chunks/stat-DUB6g90R.js.map +0 -1
  951. package/dist/_chunks/stepper-accordion-CGog0JSF.js +0 -233
  952. package/dist/_chunks/stepper-accordion-CGog0JSF.js.map +0 -1
  953. package/dist/_chunks/stepper-calendar-_fLOAjus.js +0 -570
  954. package/dist/_chunks/stepper-calendar-_fLOAjus.js.map +0 -1
  955. package/dist/_chunks/stepper-progress-rE7tn7WY.js +0 -129
  956. package/dist/_chunks/stepper-progress-rE7tn7WY.js.map +0 -1
  957. package/dist/_chunks/suggestion-chip-BNJ2M8Os.js +0 -158
  958. package/dist/_chunks/suggestion-chip-BNJ2M8Os.js.map +0 -1
  959. package/dist/_chunks/switch-aN2EYxHh.js +0 -138
  960. package/dist/_chunks/switch-aN2EYxHh.js.map +0 -1
  961. package/dist/_chunks/tabs.agent-BpbVA-Zh.js +0 -348
  962. package/dist/_chunks/tabs.agent-BpbVA-Zh.js.map +0 -1
  963. package/dist/_chunks/tag-BqidXKo3.js.map +0 -1
  964. package/dist/_chunks/task-card-yW7tKlG4.js.map +0 -1
  965. package/dist/_chunks/task-tray-BzahI5FQ.js +0 -100
  966. package/dist/_chunks/task-tray-BzahI5FQ.js.map +0 -1
  967. package/dist/_chunks/text-area-DmKSd2DG.js +0 -152
  968. package/dist/_chunks/text-area-DmKSd2DG.js.map +0 -1
  969. package/dist/_chunks/text-input-CRHvl5zk.js +0 -188
  970. package/dist/_chunks/text-input-CRHvl5zk.js.map +0 -1
  971. package/dist/_chunks/theme-toggle-BHiMMEQN.js +0 -329
  972. package/dist/_chunks/theme-toggle-BHiMMEQN.js.map +0 -1
  973. package/dist/_chunks/time-picker-D-EueWUG.js +0 -322
  974. package/dist/_chunks/time-picker-D-EueWUG.js.map +0 -1
  975. package/dist/_chunks/timeline-RgAIzpMd.js +0 -220
  976. package/dist/_chunks/timeline-RgAIzpMd.js.map +0 -1
  977. package/dist/_chunks/toast-lOhJDKOH.js.map +0 -1
  978. package/dist/_chunks/tooth-scheme.agent-BlDyu-Gx.js.map +0 -1
  979. package/dist/_chunks/transcript-panel-CNbVGG9L.js +0 -266
  980. package/dist/_chunks/transcript-panel-CNbVGG9L.js.map +0 -1
  981. package/dist/_chunks/typing-indicator-CbUBf-Dx.js.map +0 -1
  982. package/dist/_chunks/use-theme-BMUhembX.js.map +0 -1
  983. package/dist/_chunks/warning-stack-8Pa3pekh.js.map +0 -1
  984. package/dist/_chunks/workflow-map-XeqHDFvp.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tooth-scheme-3mITSXiZ.js","sources":["../../src/components/tooth-scheme/tooth-scheme.agent.ts","../../src/components/tooth-scheme/tooth-data.ts","../../src/components/tooth-scheme/tooth-scheme.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { ToothSchemeHandle } from './tooth-scheme';\n\nexport const toothSchemeAgent: AgentAdapter<ToothSchemeHandle> = {\n id: 'tooth-scheme',\n capabilities: ['pick'],\n state: {\n chart: {\n type: 'object',\n description:\n 'Current dental chart state — tooth conditions keyed by FDI id.',\n read: (handle) => handle.getChart(),\n },\n },\n actions: {\n focus_tooth: {\n safety: 'read',\n argsType: '{ id: FdiId }',\n description: 'Move focus to a specific tooth by FDI id.',\n invoke: (\n handle,\n args: { id: Parameters<ToothSchemeHandle['focusTooth']>[0] },\n ) => {\n handle.focusTooth(args.id);\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'tooth-scheme' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-fdi',\n description:\n 'Each rendered tooth `<g>` carries its FDI id as `data-fdi`. Tests still use `data-testid=\"tooth-<fdi>\"` separately.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* ToothScheme — data model + lookup tables. */\n/* */\n/* FDI ISO 3950 is the canonical internal id. This module exposes */\n/* conversion tables to Universal (ADA) and a simplified Palmer-style */\n/* quadrant+position string so consuming UIs can toggle numbering. */\n/* */\n/* Why simplified Palmer? True Palmer notation uses quadrant bracket */\n/* glyphs (\"⌐\", \"¬\", \"L\", \"J\") that do not render reliably in every */\n/* browser/font combination. We emit a readable `UR3` / `LL6` form */\n/* instead and document the deviation in the component MDX. */\n/* ------------------------------------------------------------------ */\n\n/* ------------------------------------------------------------------ */\n/* Core types */\n/* ------------------------------------------------------------------ */\n\nexport type FdiId = string; // '11'–'48' permanent, '51'–'85' primary\n\nexport type Dentition = 'permanent' | 'primary' | 'mixed';\nexport type Numbering = 'fdi' | 'universal' | 'palmer';\nexport type ToothMode = 'interactive' | 'display';\nexport type Surface = 'mesial' | 'distal' | 'occlusal' | 'buccal' | 'lingual';\nexport type ToothCondition =\n | 'caries'\n | 'filled'\n | 'crowned'\n | 'missing'\n | 'implant'\n | 'rootCanal';\n\nexport interface ToothState {\n conditions: ToothCondition[];\n surfaces: Surface[];\n notes?: string;\n}\n\nexport type ToothChart = Record<FdiId, ToothState>;\n\nexport type Anatomy = 'incisor' | 'canine' | 'premolar' | 'molar';\nexport type Arch = 'upper' | 'lower';\nexport type Side = 'right' | 'left'; // patient's side (NOT viewer's)\nexport type Quadrant = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8;\n\nexport interface ToothMeta {\n fdi: FdiId;\n /** '1'–'32' for permanent, 'A'–'T' for primary. */\n universal: string;\n /** Simplified Palmer quadrant-and-position string, e.g. 'UR3', 'LL6'. */\n palmer: string;\n quadrant: Quadrant;\n /** 1–8 (permanent) or 1–5 (primary), counted from the midline outward. */\n positionInQuadrant: number;\n anatomy: Anatomy;\n arch: Arch;\n side: Side;\n dentition: 'permanent' | 'primary';\n}\n\n/* ------------------------------------------------------------------ */\n/* Layout orders */\n/* */\n/* Layout reads from the viewer's perspective, top-left to bottom- */\n/* right. The chart is FIXED in clinical convention: the patient's */\n/* right side sits on the viewer's left, regardless of document `dir`. */\n/* ------------------------------------------------------------------ */\n\n/**\n * 32 permanent teeth in visual layout order:\n * upper row: 18..11 (patient upper-right, outermost → midline), then 21..28 (upper-left, midline → outermost)\n * lower row: 48..41 (patient lower-right, outermost → midline), then 31..38 (lower-left, midline → outermost)\n */\nexport const PERMANENT_TEETH: FdiId[] = [\n // upper\n '18',\n '17',\n '16',\n '15',\n '14',\n '13',\n '12',\n '11',\n '21',\n '22',\n '23',\n '24',\n '25',\n '26',\n '27',\n '28',\n // lower\n '48',\n '47',\n '46',\n '45',\n '44',\n '43',\n '42',\n '41',\n '31',\n '32',\n '33',\n '34',\n '35',\n '36',\n '37',\n '38',\n];\n\n/**\n * 20 primary teeth in visual layout order:\n * upper row: 55..51 (upper-right outermost → midline), then 61..65\n * lower row: 85..81, then 71..75\n */\nexport const PRIMARY_TEETH: FdiId[] = [\n // upper\n '55',\n '54',\n '53',\n '52',\n '51',\n '61',\n '62',\n '63',\n '64',\n '65',\n // lower\n '85',\n '84',\n '83',\n '82',\n '81',\n '71',\n '72',\n '73',\n '74',\n '75',\n];\n\n/* ------------------------------------------------------------------ */\n/* Anatomy by position */\n/* ------------------------------------------------------------------ */\n\nfunction permanentAnatomy(positionInQuadrant: number): Anatomy {\n if (positionInQuadrant <= 2) return 'incisor';\n if (positionInQuadrant === 3) return 'canine';\n if (positionInQuadrant <= 5) return 'premolar';\n return 'molar';\n}\n\nfunction primaryAnatomy(positionInQuadrant: number): Anatomy {\n if (positionInQuadrant <= 2) return 'incisor';\n if (positionInQuadrant === 3) return 'canine';\n // Primary dentition has no premolars — positions 4 & 5 are molars.\n return 'molar';\n}\n\n/* ------------------------------------------------------------------ */\n/* Palmer helper */\n/* ------------------------------------------------------------------ */\n\nfunction palmerCode(quadrant: Quadrant, position: number): string {\n // Permanent: 1=UR, 2=UL, 3=LL, 4=LR. Primary: 5=UR, 6=UL, 7=LL, 8=LR.\n // Mapping is identical within each dentition ring; the number is what\n // changes, so we fold 5→1, 6→2, 7→3, 8→4 to derive the quadrant code.\n const normalised = ((quadrant - 1) % 4) + 1;\n const code =\n normalised === 1\n ? 'UR'\n : normalised === 2\n ? 'UL'\n : normalised === 3\n ? 'LL'\n : 'LR';\n return `${code}${position}`;\n}\n\n/* ------------------------------------------------------------------ */\n/* Universal (ADA) conversion */\n/* */\n/* Permanent — Universal numbers 1..32 run clockwise from the */\n/* patient's upper-right 3rd molar (FDI 18 = Universal 1), across */\n/* the upper arch (18→11 = 1→8, 21→28 = 9→16), then down the left */\n/* lower arch (38→31 = 17→24) and across the right lower (41→48 = */\n/* 25→32). */\n/* */\n/* Primary — Universal letters A..T walk the same path: */\n/* 55→51 = A→E, 61→65 = F→J, 75→71 = K→O, 81→85 = P→T. */\n/* ------------------------------------------------------------------ */\n\nfunction permanentUniversal(quadrant: Quadrant, position: number): string {\n switch (quadrant) {\n case 1:\n // 18→1, 17→2, …, 11→8\n return String(1 + (8 - position));\n case 2:\n // 21→9, 22→10, …, 28→16\n return String(8 + position);\n case 3:\n // 38→17, 37→18, …, 31→24\n return String(17 + (8 - position));\n case 4:\n // 41→25, 42→26, …, 48→32\n return String(24 + position);\n default:\n return '';\n }\n}\n\nfunction primaryUniversal(quadrant: Quadrant, position: number): string {\n const letters = 'ABCDEFGHIJKLMNOPQRST';\n let index = -1;\n switch (quadrant) {\n case 5:\n // 55→A, 54→B, 53→C, 52→D, 51→E\n index = 0 + (5 - position);\n break;\n case 6:\n // 61→F, 62→G, 63→H, 64→I, 65→J\n index = 5 + (position - 1);\n break;\n case 7:\n // 75→K, 74→L, 73→M, 72→N, 71→O\n index = 10 + (5 - position);\n break;\n case 8:\n // 81→P, 82→Q, 83→R, 84→S, 85→T\n index = 15 + (position - 1);\n break;\n default:\n index = -1;\n }\n return index >= 0 ? letters[index] : '';\n}\n\n/* ------------------------------------------------------------------ */\n/* Meta builder */\n/* ------------------------------------------------------------------ */\n\nfunction buildMeta(fdi: FdiId): ToothMeta {\n const quadrant = Number(fdi[0]) as Quadrant;\n const position = Number(fdi[1]);\n const isPrimary = quadrant >= 5;\n const anatomy = isPrimary\n ? primaryAnatomy(position)\n : permanentAnatomy(position);\n const arch: Arch =\n quadrant === 1 || quadrant === 2 || quadrant === 5 || quadrant === 6\n ? 'upper'\n : 'lower';\n const side: Side =\n quadrant === 1 || quadrant === 4 || quadrant === 5 || quadrant === 8\n ? 'right'\n : 'left';\n const universal = isPrimary\n ? primaryUniversal(quadrant, position)\n : permanentUniversal(quadrant, position);\n const palmer = palmerCode(quadrant, position);\n return {\n fdi,\n universal,\n palmer,\n quadrant,\n positionInQuadrant: position,\n anatomy,\n arch,\n side,\n dentition: isPrimary ? 'primary' : 'permanent',\n };\n}\n\nexport const FDI_TO_META: Record<FdiId, ToothMeta> = [\n ...PERMANENT_TEETH,\n ...PRIMARY_TEETH,\n].reduce<Record<FdiId, ToothMeta>>((acc, fdi) => {\n acc[fdi] = buildMeta(fdi);\n return acc;\n}, {});\n\nexport const FDI_TO_UNIVERSAL: Record<FdiId, string> = Object.fromEntries(\n Object.entries(FDI_TO_META).map(([fdi, meta]) => [fdi, meta.universal]),\n);\n\nexport const FDI_TO_PALMER: Record<FdiId, string> = Object.fromEntries(\n Object.entries(FDI_TO_META).map(([fdi, meta]) => [fdi, meta.palmer]),\n);\n\n/* ------------------------------------------------------------------ */\n/* Condition → token + pattern */\n/* */\n/* Every condition carries BOTH a colour AND a fill pattern so */\n/* colour-blind clinicians can distinguish states in the SVG (and in */\n/* black-and-white prints) — colour is never the sole channel. */\n/* ------------------------------------------------------------------ */\n\n/** CSS variable name (without the leading `var(...)`) that drives a condition's colour. */\nexport const CONDITION_TOKENS: Record<ToothCondition, string> = {\n caries: '--destructive',\n filled: '--info',\n crowned: '--warning',\n missing: '--muted-foreground',\n implant: '--accent',\n rootCanal: '--primary',\n};\n\n/**\n * Convenience: the `fill=\"var(--destructive)\"` string ready to paste onto\n * an SVG attribute. Kept in sync with `CONDITION_TOKENS`.\n */\nexport const CONDITION_COLORS: Record<ToothCondition, string> = {\n caries: 'var(--destructive)',\n filled: 'var(--info)',\n crowned: 'var(--warning)',\n missing: 'var(--muted-foreground)',\n implant: 'var(--accent)',\n rootCanal: 'var(--primary)',\n};\n\n/** SVG `<pattern>` ids declared in `<defs>`. `missing` renders an X glyph instead of a pattern. */\nexport const CONDITION_PATTERNS: Record<ToothCondition, string> = {\n caries: 'tooth-scheme-pattern-diagonal',\n filled: 'tooth-scheme-pattern-dots',\n crowned: 'tooth-scheme-pattern-crosshatch',\n missing: 'tooth-scheme-pattern-blank',\n implant: 'tooth-scheme-pattern-vertical',\n rootCanal: 'tooth-scheme-pattern-horizontal',\n};\n\n/* ------------------------------------------------------------------ */\n/* SVG shape paths — one per anatomy class */\n/* */\n/* Artistry is deliberately minimal for this first pass: each tooth is */\n/* a rounded rectangle with a small anatomy cue (cusp notch for */\n/* molars, pointed tip for canines, narrower body for incisors). The */\n/* shapes accept a `translate(x, y)` on the enclosing `<g>` and draw */\n/* within a 30×50 bounding box (22×50 for incisors). */\n/* ------------------------------------------------------------------ */\n\nexport interface ToothShape {\n /** Visual width inside the enclosing `<g>`. */\n width: number;\n /** Visual height inside the enclosing `<g>`. */\n height: number;\n /** SVG `d` attribute for the crown outline. */\n path: string;\n /** Optional inner decorative path (occlusal surface on molars, etc.). */\n innerPath?: string;\n}\n\nexport const TOOTH_SHAPES: Record<Anatomy, ToothShape> = {\n incisor: {\n width: 22,\n height: 50,\n // Narrow rounded rectangle — slightly wider at the occlusal/biting edge.\n path: 'M4 4 C4 2 6 0 8 0 L14 0 C16 0 18 2 18 4 L20 44 C20 47 18 50 14 50 L8 50 C4 50 2 47 2 44 Z',\n },\n canine: {\n width: 26,\n height: 50,\n // Pointed cusp at the bottom — canines present a single prominent cusp.\n path: 'M4 4 C4 2 6 0 8 0 L18 0 C20 0 22 2 22 4 L24 40 L13 50 L2 40 Z',\n },\n premolar: {\n width: 28,\n height: 50,\n // Wider rounded rectangle with a subtle horizontal notch hinting at two cusps.\n path: 'M4 4 C4 2 6 0 8 0 L20 0 C22 0 24 2 24 4 L26 44 C26 47 24 50 20 50 L8 50 C4 50 2 47 2 44 Z',\n innerPath: 'M6 34 L22 34',\n },\n molar: {\n width: 32,\n height: 50,\n // Widest rounded rectangle with a cross-notch hinting at the occlusal fissure pattern.\n path: 'M4 4 C4 2 6 0 8 0 L24 0 C26 0 28 2 28 4 L30 44 C30 47 28 50 24 50 L8 50 C4 50 2 47 2 44 Z',\n innerPath: 'M6 32 L26 32 M16 22 L16 42',\n },\n};\n\n/* ------------------------------------------------------------------ */\n/* Viewport layout helpers */\n/* ------------------------------------------------------------------ */\n\nexport const TOOTH_GAP = 4;\nexport const TOOTH_ROW_GAP = 24;\nexport const TOOTH_HIT_PAD = 4;\n\nexport interface PositionedTooth {\n fdi: FdiId;\n meta: ToothMeta;\n shape: ToothShape;\n x: number;\n y: number;\n}\n\n/**\n * Produce the positioned list of teeth for a given dentition. The layout\n * is a two-row grid reading viewer-left-to-right across the upper arch,\n * then viewer-left-to-right across the lower arch. Clinical convention\n * is preserved: the patient's right sits on the viewer's left in both\n * arches, regardless of document direction.\n */\nexport function layoutTeeth(dentition: Dentition): {\n teeth: PositionedTooth[];\n width: number;\n height: number;\n} {\n const ids: FdiId[] =\n dentition === 'primary'\n ? PRIMARY_TEETH\n : dentition === 'mixed'\n ? [...PERMANENT_TEETH, ...PRIMARY_TEETH]\n : PERMANENT_TEETH;\n\n // Upper / lower partition is inferred from meta.arch.\n const upper: FdiId[] = [];\n const lower: FdiId[] = [];\n for (const id of ids) {\n const meta = FDI_TO_META[id];\n if (meta.arch === 'upper') upper.push(id);\n else lower.push(id);\n }\n\n const rowHeight = 50;\n const maxPerRow = Math.max(upper.length, lower.length);\n\n // Centre each row on the widest one.\n function positionRow(row: FdiId[], yOffset: number): PositionedTooth[] {\n const rowWidth = row.reduce((acc, id) => {\n const shape = TOOTH_SHAPES[FDI_TO_META[id].anatomy];\n return acc + shape.width + TOOTH_GAP;\n }, 0);\n const fullRowWidth = row.length > 0 ? rowWidth - TOOTH_GAP : 0;\n\n const maxRowWidth = (function computeMax(): number {\n const bigger = upper.length >= lower.length ? upper : lower;\n const biggerWidth = bigger.reduce((acc, id) => {\n const shape = TOOTH_SHAPES[FDI_TO_META[id].anatomy];\n return acc + shape.width + TOOTH_GAP;\n }, 0);\n return biggerWidth - TOOTH_GAP;\n })();\n\n const startX = (maxRowWidth - fullRowWidth) / 2;\n let cursor = startX;\n return row.map((id) => {\n const meta = FDI_TO_META[id];\n const shape = TOOTH_SHAPES[meta.anatomy];\n const tooth: PositionedTooth = {\n fdi: id,\n meta,\n shape,\n x: cursor,\n y: yOffset,\n };\n cursor += shape.width + TOOTH_GAP;\n return tooth;\n });\n }\n\n const upperRow = positionRow(upper, 0);\n const lowerRow = positionRow(lower, rowHeight + TOOTH_ROW_GAP);\n\n // Compute the true content width / height for the viewBox.\n const maxRowWidth = Math.max(\n upperRow.reduce((acc, t) => Math.max(acc, t.x + t.shape.width), 0),\n lowerRow.reduce((acc, t) => Math.max(acc, t.x + t.shape.width), 0),\n );\n\n // Fall back to a reasonable default if a row is empty.\n const width = maxRowWidth > 0 ? maxRowWidth : maxPerRow * 30;\n const height = rowHeight * 2 + TOOTH_ROW_GAP;\n\n return { teeth: [...upperRow, ...lowerRow], width, height };\n}\n\n/* ------------------------------------------------------------------ */\n/* Labels by numbering */\n/* ------------------------------------------------------------------ */\n\nexport function labelFor(id: FdiId, numbering: Numbering): string {\n switch (numbering) {\n case 'universal':\n return FDI_TO_UNIVERSAL[id] ?? id;\n case 'palmer':\n return FDI_TO_PALMER[id] ?? id;\n case 'fdi':\n default:\n return id;\n }\n}\n\n/* ------------------------------------------------------------------ */\n/* Chart helpers */\n/* ------------------------------------------------------------------ */\n\nexport function emptyChart(): ToothChart {\n return {};\n}\n\nexport function chartFromConditions(\n conditions: Partial<Record<FdiId, ToothCondition[]>>,\n): ToothChart {\n const chart: ToothChart = {};\n for (const [id, list] of Object.entries(conditions)) {\n if (!list || list.length === 0) continue;\n chart[id] = { conditions: list, surfaces: [] };\n }\n return chart;\n}\n","/* ------------------------------------------------------------------ */\n/* ToothScheme — in-house SVG dental chart. */\n/* */\n/* - The ONLY Domain-Specific component without a third-party engine. */\n/* No DentalChart.js, no toothchart, no canvas — `src/docs/08-third- */\n/* party.mdx §Dental chart` flags every candidate as rejected (jQuery */\n/* dependency, abandoned, poor a11y), so we draw SVG ourselves. */\n/* */\n/* - Colour-not-alone: each `ToothCondition` has a translated label, a */\n/* token colour AND a `<pattern>` fill. Pattern ids live in */\n/* `CONDITION_PATTERNS`; the six `<pattern>` nodes live once per */\n/* mounted chart inside a single `<defs>` block. */\n/* */\n/* - Chart orientation is FIXED to clinical convention: the patient's */\n/* right side sits on the viewer's left in both upper and lower */\n/* arches, regardless of document `dir`. RTL mirrors the surrounding */\n/* chrome (labels, controls) but NEVER the anatomy — a mirrored */\n/* chart would invert every diagnosis recorded against it. */\n/* */\n/* TODO: */\n/* - SVG artistry is deliberately minimal (rounded-rect crowns with */\n/* anatomy cues). A future pass should replace each `<path>` with */\n/* a clinically-correct crown outline from the dental design team. */\n/* - Surface selection sub-control (mesial / distal / occlusal / …) */\n/* is stubbed via the data model only; the interactive surface */\n/* picker will land in a follow-up. */\n/* - Condition editing is a single-step cycle on Space/Enter — good */\n/* enough for demos and stories; a richer picker belongs in a */\n/* popover and will reuse Radix Popover when it's wired in. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n} from 'react';\nimport * as RadixTooltip from '@radix-ui/react-tooltip';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { toothSchemeAgent } from './tooth-scheme.agent';\n\nimport {\n CONDITION_COLORS,\n CONDITION_PATTERNS,\n CONDITION_TOKENS,\n FDI_TO_META,\n PERMANENT_TEETH,\n PRIMARY_TEETH,\n TOOTH_HIT_PAD,\n chartFromConditions,\n labelFor,\n layoutTeeth,\n type Dentition,\n type FdiId,\n type Numbering,\n type ToothChart,\n type ToothCondition,\n type ToothMode,\n type ToothState,\n} from './tooth-data';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface ToothSchemeProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n /** Which teeth to render. Default `'permanent'`. */\n dentition?: Dentition;\n /** Numbering system shown on each tooth label. Default `'fdi'`. */\n numbering?: Numbering;\n /** `'interactive'` enables selection + keyboard nav; `'display'` is read-only. Default `'interactive'`. */\n mode?: ToothMode;\n /** Controlled chart state — the full `Record<FdiId, ToothState>`. */\n value?: ToothChart;\n /** Uncontrolled initial chart state. */\n defaultValue?: ToothChart;\n /** Fired whenever the chart changes — always emits FDI ids. */\n onChange?: (next: ToothChart) => void;\n /** Fired when a tooth is focused or clicked. */\n onSelect?: (toothId: FdiId) => void;\n /** Shortcut for pre-populating conditions: `{ '16': ['caries'], '36': ['filled'] }`. */\n conditions?: Partial<Record<FdiId, ToothCondition[]>>;\n /** Accessible label override for the chart region. */\n ariaLabel?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\nexport interface ToothSchemeHandle {\n /** Programmatically focus a tooth by FDI id. */\n focusTooth: (id: FdiId) => void;\n /** Read the current chart state. */\n getChart: () => ToothChart;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n [\n 'ds:tooth-scheme-alfadocs',\n 'ds:inline-flex ds:flex-col',\n 'ds:gap-[var(--spacing-sm)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n ].join(' '),\n);\n\nconst svgVariants = cva(\n ['ds:block ds:max-w-full ds:h-auto', 'ds:text-[var(--foreground)]'].join(' '),\n);\n\n// `group` here is load-bearing — the focus-ring <rect> below uses\n// `group-focus-visible:opacity-100` to appear when the parent <g> takes\n// focus. Without this class the selector never fires and keyboard users\n// see no focus indicator (a11y-critical-fixes.mdx).\nconst toothGroupVariants = cva(\n [\n 'ds:group ds:cursor-pointer',\n 'ds:focus:outline-none',\n 'ds:transition-[fill,stroke,opacity] ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n ].join(' '),\n);\n\nconst legendVariants = cva(\n [\n 'ds:flex ds:flex-wrap ds:items-center',\n 'ds:gap-[var(--spacing-sm)]',\n 'type-meta ds:text-[var(--muted-foreground)]',\n ].join(' '),\n);\n\nconst legendItemVariants = cva(\n ['ds:inline-flex ds:items-center', 'ds:gap-[var(--spacing-xs)]'].join(' '),\n);\n\nconst legendSwatchVariants = cva(\n [\n 'ds:inline-block',\n 'ds:inline-size-[0.75rem] ds:block-size-[0.75rem]',\n 'ds:rounded-[var(--radius-xs)]',\n 'ds:border ds:border-[color:var(--border)]',\n ].join(' '),\n);\n\nconst liveRegionVariants = cva(['ds:sr-only'].join(' '));\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction isControlled(props: Pick<ToothSchemeProps, 'value'>): boolean {\n return props.value !== undefined;\n}\n\nfunction emptyState(): ToothState {\n return { conditions: [], surfaces: [] };\n}\n\nfunction cycleCondition(\n current: ToothCondition[] | undefined,\n): ToothCondition[] {\n if (!current || current.length === 0) return ['caries'];\n return [];\n}\n\nfunction sanitiseIdSuffix(raw: string): string {\n return raw.replace(/[^a-zA-Z0-9-_]/g, '');\n}\n\n/* ------------------------------------------------------------------ */\n/* Patterns <defs> */\n/* ------------------------------------------------------------------ */\n\ninterface PatternDefsProps {\n idPrefix: string;\n}\n\nfunction PatternDefs({ idPrefix }: PatternDefsProps): JSX.Element {\n // We namespace pattern ids per-instance so multiple ToothScheme charts\n // on a page don't collide. References inside the component use\n // `${idPrefix}-${CONDITION_PATTERNS[condition]}`.\n const pid = (id: string): string => `${idPrefix}-${id}`;\n return (\n <defs>\n <pattern\n id={pid(CONDITION_PATTERNS.caries)}\n patternUnits=\"userSpaceOnUse\"\n width=\"6\"\n height=\"6\"\n patternTransform=\"rotate(45)\"\n >\n <line\n x1=\"0\"\n y1=\"0\"\n x2=\"0\"\n y2=\"6\"\n stroke={CONDITION_COLORS.caries}\n strokeWidth=\"2\"\n />\n </pattern>\n <pattern\n id={pid(CONDITION_PATTERNS.filled)}\n patternUnits=\"userSpaceOnUse\"\n width=\"5\"\n height=\"5\"\n >\n <circle cx=\"2.5\" cy=\"2.5\" r=\"1\" fill={CONDITION_COLORS.filled} />\n </pattern>\n <pattern\n id={pid(CONDITION_PATTERNS.crowned)}\n patternUnits=\"userSpaceOnUse\"\n width=\"6\"\n height=\"6\"\n >\n <path\n d=\"M0 0 L6 6 M6 0 L0 6\"\n stroke={CONDITION_COLORS.crowned}\n strokeWidth=\"1\"\n />\n </pattern>\n <pattern\n id={pid(CONDITION_PATTERNS.implant)}\n patternUnits=\"userSpaceOnUse\"\n width=\"4\"\n height=\"4\"\n >\n <line\n x1=\"1\"\n y1=\"0\"\n x2=\"1\"\n y2=\"4\"\n stroke={CONDITION_COLORS.implant}\n strokeWidth=\"1\"\n />\n </pattern>\n <pattern\n id={pid(CONDITION_PATTERNS.rootCanal)}\n patternUnits=\"userSpaceOnUse\"\n width=\"4\"\n height=\"4\"\n >\n <line\n x1=\"0\"\n y1=\"1\"\n x2=\"4\"\n y2=\"1\"\n stroke={CONDITION_COLORS.rootCanal}\n strokeWidth=\"1\"\n />\n </pattern>\n {/* `missing` does not need a pattern — the renderer draws an X glyph. */}\n </defs>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Legend */\n/* ------------------------------------------------------------------ */\n\nconst ALL_CONDITIONS: ToothCondition[] = [\n 'caries',\n 'filled',\n 'crowned',\n 'missing',\n 'implant',\n 'rootCanal',\n];\n\ninterface LegendProps {\n idPrefix: string;\n}\n\nfunction Legend({ idPrefix: _idPrefix }: LegendProps): JSX.Element {\n const { t } = useTranslation();\n return (\n <ul\n className={legendVariants()}\n data-testid=\"tooth-scheme-legend\"\n aria-label={t('toothScheme.legendLabel')}\n >\n {ALL_CONDITIONS.map((condition) => (\n <li key={condition} className={legendItemVariants()}>\n <span\n className={legendSwatchVariants()}\n aria-hidden=\"true\"\n data-condition={condition}\n data-token={CONDITION_TOKENS[condition]}\n data-testid={`tooth-scheme-legend-swatch-${condition}`}\n />\n <span>{t(`toothScheme.condition.${condition}`)}</span>\n </li>\n ))}\n </ul>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Component */\n/* ------------------------------------------------------------------ */\n\nexport const ToothScheme = forwardRef<ToothSchemeHandle, ToothSchemeProps>(\n (\n {\n id,\n dentition = 'permanent',\n numbering = 'fdi',\n mode = 'interactive',\n value,\n defaultValue,\n onChange,\n onSelect,\n conditions,\n ariaLabel,\n className,\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const rawId = useId();\n const idPrefix = useMemo(() => `ts-${sanitiseIdSuffix(rawId)}`, [rawId]);\n\n // Chart state — controlled / uncontrolled.\n const [internalChart, setInternalChart] = useState<ToothChart>(() => {\n if (value !== undefined) return value;\n if (defaultValue !== undefined) return defaultValue;\n if (conditions) return chartFromConditions(conditions);\n return {};\n });\n\n const chart: ToothChart = isControlled({ value })\n ? (value as ToothChart)\n : internalChart;\n\n // Keep uncontrolled chart in sync when `conditions` shortcut updates.\n useEffect(() => {\n if (isControlled({ value })) return;\n if (conditions === undefined) return;\n setInternalChart(chartFromConditions(conditions));\n // Intentionally depend on a stable key — swapping the entire prop\n // snapshot is the consumer's signal to reset.\n }, [conditions, value]);\n\n // Layout.\n const layout = useMemo(() => layoutTeeth(dentition), [dentition]);\n const visibleIds = useMemo(() => layout.teeth.map((t) => t.fdi), [layout]);\n\n // Roving tabindex: which tooth owns `tabindex=\"0\"`.\n const firstId: FdiId | undefined = visibleIds[0];\n const [focusedId, setFocusedId] = useState<FdiId | undefined>(firstId);\n useEffect(() => {\n if (!focusedId || !visibleIds.includes(focusedId)) {\n setFocusedId(firstId);\n }\n }, [firstId, focusedId, visibleIds]);\n\n // Live-region announcement text.\n const [announcement, setAnnouncement] = useState<string>('');\n\n const svgRef = useRef<SVGSVGElement>(null);\n\n const commitChart = useCallback(\n (next: ToothChart) => {\n if (!isControlled({ value })) {\n setInternalChart(next);\n }\n onChange?.(next);\n },\n [onChange, value],\n );\n\n const focusToothById = useCallback((id: FdiId) => {\n const svg = svgRef.current;\n if (!svg) return;\n const node = svg.querySelector<SVGGElement>(`g[data-fdi=\"${id}\"]`);\n if (node) {\n node.focus();\n setFocusedId(id);\n }\n }, []);\n\n const rootRef = useRef<HTMLDivElement>(null);\n\n const agentHandle = useMemo<ToothSchemeHandle>(\n () => ({\n focusTooth: (id: FdiId) => {\n focusToothById(id);\n },\n getChart: () => chart,\n }),\n [chart, focusToothById],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(toothSchemeAgent, agentHandle, id);\n\n /* ------------------------------------------------------------- */\n /* Keyboard navigation */\n /* ------------------------------------------------------------- */\n\n const handleKeyDown = useCallback(\n (event: KeyboardEvent<SVGGElement>, id: FdiId) => {\n if (mode !== 'interactive') return;\n const meta = FDI_TO_META[id];\n if (!meta) return;\n\n // Resolve the ordered list of visible ids for Left/Right.\n const order = visibleIds;\n const currentIndex = order.indexOf(id);\n\n switch (event.key) {\n case 'ArrowRight': {\n event.preventDefault();\n const nextIndex = Math.min(order.length - 1, currentIndex + 1);\n focusToothById(order[nextIndex]);\n return;\n }\n case 'ArrowLeft': {\n event.preventDefault();\n const nextIndex = Math.max(0, currentIndex - 1);\n focusToothById(order[nextIndex]);\n return;\n }\n case 'ArrowUp':\n case 'ArrowDown': {\n event.preventDefault();\n // Map to the opposing arch, same FDI position where possible.\n // Permanent: 1 ↔ 4, 2 ↔ 3. Primary: 5 ↔ 8, 6 ↔ 7.\n const quadrantMap: Record<number, number> = {\n 1: 4,\n 4: 1,\n 2: 3,\n 3: 2,\n 5: 8,\n 8: 5,\n 6: 7,\n 7: 6,\n };\n const targetQuadrant = quadrantMap[meta.quadrant];\n if (!targetQuadrant) return;\n const candidate = `${targetQuadrant}${meta.positionInQuadrant}`;\n if (order.includes(candidate)) {\n focusToothById(candidate);\n }\n return;\n }\n case 'Home': {\n event.preventDefault();\n // First tooth in the same quadrant (visible).\n const inQuadrant = order.filter(\n (other) => FDI_TO_META[other].quadrant === meta.quadrant,\n );\n if (inQuadrant.length > 0) {\n focusToothById(inQuadrant[0]);\n }\n return;\n }\n case 'End': {\n event.preventDefault();\n const inQuadrant = order.filter(\n (other) => FDI_TO_META[other].quadrant === meta.quadrant,\n );\n if (inQuadrant.length > 0) {\n focusToothById(inQuadrant[inQuadrant.length - 1]);\n }\n return;\n }\n case ' ':\n case 'Enter': {\n event.preventDefault();\n const prev = chart[id]?.conditions;\n const nextConditions = cycleCondition(prev);\n const next: ToothChart = { ...chart };\n if (nextConditions.length === 0) {\n delete next[id];\n setAnnouncement(t('toothScheme.deselected', { id }));\n } else {\n next[id] = {\n ...(chart[id] ?? emptyState()),\n conditions: nextConditions,\n };\n setAnnouncement(\n t('toothScheme.selected', {\n id,\n conditions: nextConditions\n .map((c) => t(`toothScheme.condition.${c}`))\n .join(', '),\n }),\n );\n }\n commitChart(next);\n onSelect?.(id);\n return;\n }\n default:\n return;\n }\n },\n [chart, commitChart, focusToothById, mode, onSelect, t, visibleIds],\n );\n\n const handleClick = useCallback(\n (id: FdiId) => {\n if (mode !== 'interactive') return;\n setFocusedId(id);\n const prev = chart[id]?.conditions;\n const nextConditions = cycleCondition(prev);\n const next: ToothChart = { ...chart };\n if (nextConditions.length === 0) {\n delete next[id];\n setAnnouncement(t('toothScheme.deselected', { id }));\n } else {\n next[id] = {\n ...(chart[id] ?? emptyState()),\n conditions: nextConditions,\n };\n setAnnouncement(\n t('toothScheme.selected', {\n id,\n conditions: nextConditions\n .map((c) => t(`toothScheme.condition.${c}`))\n .join(', '),\n }),\n );\n }\n commitChart(next);\n onSelect?.(id);\n },\n [chart, commitChart, mode, onSelect, t],\n );\n\n /* ------------------------------------------------------------- */\n /* Rendering */\n /* ------------------------------------------------------------- */\n\n const viewBoxWidth = layout.width + 4; // small padding for stroke\n const viewBoxHeight = layout.height + 4;\n\n const regionLabel = ariaLabel ?? t('toothScheme.ariaLabel');\n\n return (\n <RadixTooltip.Provider delayDuration={200}>\n <div\n ref={rootRef}\n role=\"region\"\n aria-label={regionLabel}\n className={[rootVariants(), className].filter(Boolean).join(' ')}\n data-component=\"tooth-scheme\"\n data-component-id={id}\n data-testid=\"tooth-scheme-root\"\n data-dentition={dentition}\n data-numbering={numbering}\n data-mode={mode}\n >\n <svg\n ref={svgRef}\n viewBox={`0 0 ${viewBoxWidth} ${viewBoxHeight}`}\n className={svgVariants()}\n role=\"group\"\n aria-label={regionLabel}\n data-testid=\"tooth-scheme-svg\"\n focusable=\"false\"\n xmlns=\"http://www.w3.org/2000/svg\"\n >\n <PatternDefs idPrefix={idPrefix} />\n\n {layout.teeth.map((tooth) => {\n const state = chart[tooth.fdi];\n const primaryCondition: ToothCondition | undefined =\n state?.conditions?.[0];\n\n const anatomyLabel = t(\n `toothScheme.anatomy.${tooth.meta.anatomy}`,\n );\n const conditionSuffix = primaryCondition\n ? `, ${t(`toothScheme.condition.${primaryCondition}`)}`\n : '';\n const label = t('toothScheme.toothLabel', {\n id: labelFor(tooth.fdi, numbering),\n anatomy: anatomyLabel,\n conditionSuffix,\n });\n\n const tabIndex =\n mode === 'interactive'\n ? tooth.fdi === focusedId\n ? 0\n : -1\n : undefined;\n\n const fillColour: string =\n primaryCondition && primaryCondition !== 'missing'\n ? `url(#${idPrefix}-${CONDITION_PATTERNS[primaryCondition]})`\n : 'var(--muted)';\n\n const strokeColour: string =\n primaryCondition && primaryCondition !== 'missing'\n ? CONDITION_COLORS[primaryCondition]\n : 'var(--border)';\n\n const tooltipContent = primaryCondition\n ? `${anatomyLabel} · ${t(`toothScheme.condition.${primaryCondition}`)}`\n : anatomyLabel;\n\n const labelText = labelFor(tooth.fdi, numbering);\n\n return (\n <RadixTooltip.Root key={tooth.fdi}>\n <RadixTooltip.Trigger asChild>\n <g\n data-fdi={tooth.fdi}\n data-anatomy={tooth.meta.anatomy}\n data-arch={tooth.meta.arch}\n data-side={tooth.meta.side}\n data-quadrant={tooth.meta.quadrant}\n data-condition={primaryCondition ?? 'none'}\n data-testid={`tooth-${tooth.fdi}`}\n transform={`translate(${tooth.x}, ${tooth.y})`}\n tabIndex={tabIndex}\n // SVG `<g>` has no implicit role, so `aria-label`\n // would be rejected by axe's `aria-prohibited-attr`\n // rule. Give it an explicit role: `button` in\n // interactive mode, `img` in display mode (the\n // group reads as a single labelled tooth glyph).\n role={mode === 'interactive' ? 'button' : 'img'}\n aria-label={label}\n aria-pressed={\n mode === 'interactive'\n ? primaryCondition !== undefined\n : undefined\n }\n className={toothGroupVariants()}\n onClick={\n mode === 'interactive'\n ? () => handleClick(tooth.fdi)\n : undefined\n }\n onFocus={() => setFocusedId(tooth.fdi)}\n onKeyDown={(event) => handleKeyDown(event, tooth.fdi)}\n >\n {/* Invisible ≥44px hit target (WCAG 2.5.5). */}\n <rect\n x={-TOOTH_HIT_PAD}\n y={-TOOTH_HIT_PAD}\n width={tooth.shape.width + TOOTH_HIT_PAD * 2}\n height={tooth.shape.height + TOOTH_HIT_PAD * 2}\n fill=\"transparent\"\n />\n {/* Crown outline. */}\n <path\n d={tooth.shape.path}\n fill={fillColour}\n stroke={strokeColour}\n strokeWidth=\"1.5\"\n vectorEffect=\"non-scaling-stroke\"\n />\n {tooth.shape.innerPath ? (\n <path\n d={tooth.shape.innerPath}\n fill=\"none\"\n stroke=\"var(--muted-foreground)\"\n strokeWidth=\"0.75\"\n vectorEffect=\"non-scaling-stroke\"\n />\n ) : null}\n {/* Focus ring — drawn as a rect so it tracks the hit\n area. `group` on the parent <g> makes this\n group-focus-visible selector fire when a keyboard\n user focuses the tooth. In forced-colors mode the\n ring falls back to `CanvasText` so it stays visible\n when `var(--ring)` is remapped. */}\n <rect\n x={-TOOTH_HIT_PAD}\n y={-TOOTH_HIT_PAD}\n width={tooth.shape.width + TOOTH_HIT_PAD * 2}\n height={tooth.shape.height + TOOTH_HIT_PAD * 2}\n fill=\"none\"\n stroke=\"var(--ring)\"\n strokeWidth=\"var(--focus-ring-width)\"\n className={[\n 'ds:opacity-0',\n 'ds:group-focus-visible:opacity-100',\n 'ds:forced-colors:stroke-[CanvasText]',\n ].join(' ')}\n data-testid={`tooth-${tooth.fdi}-focus-ring`}\n pointerEvents=\"none\"\n rx=\"4\"\n />\n {/* Missing-tooth X glyph. */}\n {primaryCondition === 'missing' ? (\n <path\n d={`M2 2 L${tooth.shape.width - 2} ${tooth.shape.height - 2} M${tooth.shape.width - 2} 2 L2 ${tooth.shape.height - 2}`}\n stroke={CONDITION_COLORS.missing}\n strokeWidth=\"2\"\n fill=\"none\"\n />\n ) : null}\n {/* Tooth number label — sits below (upper arch) or above (lower) the crown. */}\n <text\n x={tooth.shape.width / 2}\n y={\n tooth.meta.arch === 'upper'\n ? tooth.shape.height + 12\n : -4\n }\n textAnchor=\"middle\"\n fontSize=\"10\"\n fill=\"var(--muted-foreground)\"\n className=\"ds:select-none\"\n aria-hidden=\"true\"\n >\n {labelText}\n </text>\n </g>\n </RadixTooltip.Trigger>\n <RadixTooltip.Portal>\n <RadixTooltip.Content\n side=\"top\"\n sideOffset={6}\n className=\"ds:z-[var(--z-tooltip)] ds:rounded-[var(--radius-sm)] ds:bg-[var(--foreground)] ds:text-[var(--background)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:pt-[calc(var(--spacing-xs)/2)] ds:pb-[calc(var(--spacing-xs)/2)] ds:text-[length:var(--font-size-xs)]\"\n >\n {tooltipContent}\n <RadixTooltip.Arrow className=\"ds:fill-[var(--foreground)]\" />\n </RadixTooltip.Content>\n </RadixTooltip.Portal>\n </RadixTooltip.Root>\n );\n })}\n </svg>\n\n <Legend idPrefix={idPrefix} />\n\n <div\n className={liveRegionVariants()}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n data-testid=\"tooth-scheme-live\"\n >\n {announcement}\n </div>\n </div>\n </RadixTooltip.Provider>\n );\n },\n);\n\nToothScheme.displayName = 'ToothScheme';\n\n/* ------------------------------------------------------------------ */\n/* Re-exports */\n/* ------------------------------------------------------------------ */\n\nexport { rootVariants as toothSchemeVariants, PERMANENT_TEETH, PRIMARY_TEETH };\nexport type {\n Dentition,\n FdiId,\n Numbering,\n ToothChart,\n ToothCondition,\n ToothMode,\n ToothState,\n} from './tooth-data';\n"],"names":["toothSchemeAgent","handle","args","PERMANENT_TEETH","PRIMARY_TEETH","permanentAnatomy","positionInQuadrant","primaryAnatomy","palmerCode","quadrant","position","normalised","permanentUniversal","primaryUniversal","letters","index","buildMeta","fdi","isPrimary","anatomy","arch","side","universal","palmer","FDI_TO_META","acc","FDI_TO_UNIVERSAL","meta","FDI_TO_PALMER","CONDITION_TOKENS","CONDITION_COLORS","CONDITION_PATTERNS","TOOTH_SHAPES","TOOTH_GAP","TOOTH_ROW_GAP","TOOTH_HIT_PAD","layoutTeeth","dentition","ids","upper","lower","id","rowHeight","maxPerRow","positionRow","row","yOffset","rowWidth","shape","fullRowWidth","cursor","tooth","upperRow","lowerRow","maxRowWidth","t","width","height","labelFor","numbering","emptyChart","chartFromConditions","conditions","chart","list","rootVariants","cva","svgVariants","toothGroupVariants","legendVariants","legendItemVariants","legendSwatchVariants","liveRegionVariants","isControlled","props","emptyState","cycleCondition","current","sanitiseIdSuffix","raw","PatternDefs","idPrefix","pid","jsx","ALL_CONDITIONS","Legend","_idPrefix","useTranslation","condition","ToothScheme","forwardRef","mode","value","defaultValue","onChange","onSelect","ariaLabel","className","ref","rawId","useId","useMemo","internalChart","setInternalChart","useState","useEffect","layout","visibleIds","firstId","focusedId","setFocusedId","announcement","setAnnouncement","svgRef","useRef","commitChart","useCallback","next","focusToothById","svg","node","rootRef","agentHandle","useImperativeHandle","useAgentRegistration","handleKeyDown","event","order","currentIndex","nextIndex","targetQuadrant","candidate","inQuadrant","other","prev","_a","nextConditions","c","handleClick","viewBoxWidth","viewBoxHeight","regionLabel","RadixTooltip","jsxs","state","primaryCondition","anatomyLabel","conditionSuffix","label","tabIndex","fillColour","strokeColour","tooltipContent","labelText"],"mappings":"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"}
@@ -0,0 +1,346 @@
1
+ import { jsxs as f, jsx as o } from "react/jsx-runtime";
2
+ import { forwardRef as K, useState as A, useRef as x, useId as _, useMemo as w, useCallback as R, useLayoutEffect as j, useImperativeHandle as O, Fragment as V } from "react";
3
+ import { c as D } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as F } from "react-i18next";
5
+ import { u as H } from "./registry-C9nwlNyL.js";
6
+ import { u as q } from "./index-CJE9uQmb.js";
7
+ import { S as B } from "./search-input-CdJIEjFo.js";
8
+ const U = {
9
+ id: "transcript-panel",
10
+ capabilities: ["select_single"],
11
+ state: {
12
+ selectedTurn: {
13
+ type: "string | null",
14
+ descriptionKey: "ui.agent.transcriptPanel.state.selectedTurn",
15
+ description: "Opaque id (line index) of the currently-active turn, or null when none is active.",
16
+ read: (t) => t.getSelectedTurn()
17
+ }
18
+ },
19
+ actions: {
20
+ focus_turn: {
21
+ safety: "read",
22
+ argsType: "{ id: string }",
23
+ descriptionKey: "ui.agent.transcriptPanel.actions.focusTurn",
24
+ description: "Scroll the given turn into view and focus its seek button.",
25
+ invoke: (t, n) => {
26
+ t.focusTurn(n.id);
27
+ }
28
+ },
29
+ copy_turn: {
30
+ safety: "read",
31
+ argsType: "{ id: string }",
32
+ descriptionKey: "ui.agent.transcriptPanel.actions.copyTurn",
33
+ description: "Copy the given turn's text to the clipboard.",
34
+ invoke: (t, n) => t.copyTurn(n.id)
35
+ }
36
+ },
37
+ domHooks: {
38
+ root: {
39
+ attr: "data-component",
40
+ value: "transcript-panel",
41
+ description: "Marks the TranscriptPanel wrapper."
42
+ },
43
+ instanceId: {
44
+ attr: "data-component-id",
45
+ sourceProp: "id",
46
+ description: "Sourced from the id prop."
47
+ },
48
+ item: {
49
+ attr: "data-turn-id",
50
+ description: "Stable opaque turn id (line index). Never carries the turn's dictated text."
51
+ }
52
+ }
53
+ }, G = D(
54
+ [
55
+ "ds:flex ds:flex-col ds:w-full ds:min-h-0",
56
+ "ds:rounded-[var(--radius-md)] ds:border ds:border-border",
57
+ "ds:bg-background",
58
+ "ds:focus-within:border-[color:var(--primary)]"
59
+ ].join(" "),
60
+ {
61
+ variants: {
62
+ size: {
63
+ sm: "ds:text-[length:var(--font-size-sm)]",
64
+ md: "ds:text-[length:var(--font-size-base)]",
65
+ lg: "ds:text-[length:var(--font-size-lg)]"
66
+ }
67
+ },
68
+ defaultVariants: { size: "md" }
69
+ }
70
+ ), Q = 100, Y = 8;
71
+ function z(t, n) {
72
+ const a = Math.max(0, Math.floor(t)), i = Math.floor(a / 60), u = a % 60, p = (g) => new Intl.NumberFormat(n, { minimumIntegerDigits: 2 }).format(g);
73
+ return `${p(i)}:${p(u)}`;
74
+ }
75
+ function Z(t) {
76
+ const n = Math.max(0, Math.floor(t)), a = Math.floor(n / 60), i = n % 60;
77
+ return `PT${a}M${i}S`;
78
+ }
79
+ function J(t) {
80
+ let n = 0;
81
+ for (let a = 0; a < t.length; a += 1)
82
+ n = n * 31 + t.charCodeAt(a) | 0;
83
+ return Math.abs(n) % Y;
84
+ }
85
+ const W = [
86
+ "ds:bg-[color:var(--transcript-speaker-1)]",
87
+ "ds:bg-[color:var(--transcript-speaker-2)]",
88
+ "ds:bg-[color:var(--transcript-speaker-3)]",
89
+ "ds:bg-[color:var(--transcript-speaker-4)]",
90
+ "ds:bg-[color:var(--transcript-speaker-5)]",
91
+ "ds:bg-[color:var(--transcript-speaker-6)]",
92
+ "ds:bg-[color:var(--transcript-speaker-7)]",
93
+ "ds:bg-[color:var(--transcript-speaker-8)]"
94
+ ];
95
+ function X(t) {
96
+ return t.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
97
+ }
98
+ function ee({ text: t, query: n }) {
99
+ if (!n) return t;
100
+ const a = X(n);
101
+ return t.split(new RegExp(`(${a})`, "gi")).map(
102
+ (u, p) => u.toLocaleLowerCase() === n.toLocaleLowerCase() ? /* @__PURE__ */ o(
103
+ "mark",
104
+ {
105
+ className: "ds:bg-[color:var(--warning)]/30 ds:text-[color:var(--foreground)] ds:rounded-[var(--radius-sm)]",
106
+ children: u
107
+ },
108
+ p
109
+ ) : /* @__PURE__ */ o(V, { children: u }, p)
110
+ );
111
+ }
112
+ const te = K(
113
+ ({
114
+ lines: t,
115
+ currentTime: n = 0,
116
+ onSeek: a,
117
+ searchable: i = !0,
118
+ size: u = "md",
119
+ className: p,
120
+ ...g
121
+ }, L) => {
122
+ const { t: d, i18n: b } = F(), [m, M] = A(""), h = x(null), T = x(null), P = _(), c = w(() => {
123
+ if (!Number.isFinite(n)) return -1;
124
+ for (let e = 0; e < t.length; e += 1) {
125
+ const r = t[e];
126
+ if (r.start <= n && n < r.end) return e;
127
+ }
128
+ return -1;
129
+ }, [t, n]), k = w(() => {
130
+ if (!m) return 0;
131
+ let e = 0;
132
+ const r = m.toLocaleLowerCase();
133
+ for (const s of t) {
134
+ const l = s.text.toLocaleLowerCase();
135
+ let v = l.indexOf(r);
136
+ for (; v !== -1; )
137
+ e += 1, v = l.indexOf(r, v + r.length);
138
+ }
139
+ return e;
140
+ }, [t, m]), $ = R(
141
+ (e) => {
142
+ var r;
143
+ (e.metaKey || e.ctrlKey) && e.key.toLowerCase() === "f" && i && (e.preventDefault(), (r = T.current) == null || r.focus());
144
+ },
145
+ [i]
146
+ ), N = t.length > Q, y = q({
147
+ count: N ? t.length : 0,
148
+ getScrollElement: () => h.current,
149
+ estimateSize: () => 48,
150
+ overscan: 8,
151
+ getItemKey: (e) => e
152
+ });
153
+ j(() => {
154
+ if (c < 0) return;
155
+ const e = h.current;
156
+ if (!e) return;
157
+ const r = e.querySelector(
158
+ `[data-line-index="${c}"]`
159
+ );
160
+ if (!r) return;
161
+ const s = typeof window < "u" && window.matchMedia("(prefers-reduced-motion: reduce)").matches;
162
+ r.scrollIntoView({
163
+ block: "center",
164
+ behavior: s ? "auto" : "smooth"
165
+ });
166
+ }, [c]);
167
+ const S = R(
168
+ (e, r, s) => {
169
+ const l = r === c, v = J(e.speaker), C = typeof e.confidence == "number" && e.confidence < 0.6;
170
+ return /* @__PURE__ */ f(
171
+ "li",
172
+ {
173
+ ref: s == null ? void 0 : s.liRef,
174
+ "data-line-index": r,
175
+ "data-turn-id": String(r),
176
+ "data-index": s == null ? void 0 : s.dataIndex,
177
+ "aria-current": l ? "true" : void 0,
178
+ style: s == null ? void 0 : s.style,
179
+ className: [
180
+ "ds:flex ds:items-start ds:gap-[var(--spacing-sm)]",
181
+ "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]",
182
+ l ? "ds:bg-[color:var(--accent)]/12 ds:border-s-[3px] ds:border-[color:var(--primary)]" : "ds:border-s-[3px] ds:border-transparent",
183
+ s != null && s.absolutePositioning ? "ds:absolute ds:start-0 ds:end-0 ds:top-0 ds:w-full" : ""
184
+ ].filter(Boolean).join(" "),
185
+ children: [
186
+ /* @__PURE__ */ o(
187
+ "button",
188
+ {
189
+ type: "button",
190
+ onClick: () => a == null ? void 0 : a(e.start),
191
+ "aria-label": d("ui.chat.transcript.seekTo", {
192
+ time: z(e.start, b.language)
193
+ }),
194
+ className: [
195
+ "ds:inline-flex ds:items-center ds:justify-center",
196
+ "ds:font-[family-name:var(--font-mono)]",
197
+ "type-meta",
198
+ "ds:tabular-nums",
199
+ "ds:text-[color:var(--muted-foreground)]",
200
+ "ds:rounded-[var(--radius-sm)]",
201
+ "ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]",
202
+ // WCAG 2.5.5 target size: 44×44 default, 48×48 in accessible
203
+ // themes — matches the DS `--min-target-size` token.
204
+ "ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]",
205
+ "ds:hover:bg-muted/20",
206
+ "ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
207
+ "ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
208
+ "ds:forced-colors:focus-visible:outline-[CanvasText]"
209
+ ].join(" "),
210
+ children: /* @__PURE__ */ o("time", { dir: "ltr", dateTime: Z(e.start), children: z(e.start, b.language) })
211
+ }
212
+ ),
213
+ /* @__PURE__ */ f("div", { className: "ds:flex-1 ds:min-w-0", children: [
214
+ /* @__PURE__ */ f("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
215
+ /* @__PURE__ */ o(
216
+ "span",
217
+ {
218
+ "aria-hidden": "true",
219
+ className: `ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ${W[v]}`
220
+ }
221
+ ),
222
+ /* @__PURE__ */ o("strong", { className: "type-title-item", children: d("ui.chat.transcript.speaker", { name: e.speaker }) }),
223
+ C ? /* @__PURE__ */ f("span", { className: "type-meta ds:italic ds:text-[color:var(--muted-foreground)]", children: [
224
+ "(",
225
+ d("ui.chat.transcript.lowConfidence"),
226
+ ")"
227
+ ] }) : null
228
+ ] }),
229
+ /* @__PURE__ */ o(
230
+ "span",
231
+ {
232
+ dir: "auto",
233
+ className: [
234
+ "ds:block",
235
+ C ? "ds:underline ds:decoration-dotted ds:decoration-[color:var(--muted-foreground)]" : ""
236
+ ].join(" "),
237
+ children: /* @__PURE__ */ o(ee, { text: e.text, query: m })
238
+ }
239
+ )
240
+ ] })
241
+ ]
242
+ },
243
+ r
244
+ );
245
+ },
246
+ [c, b.language, a, m, d]
247
+ ), I = x(null);
248
+ O(L, () => I.current, []);
249
+ const E = w(
250
+ () => ({
251
+ getSelectedTurn: () => c >= 0 ? String(c) : null,
252
+ focusTurn: (e) => {
253
+ var l;
254
+ const r = (l = h.current) == null ? void 0 : l.querySelector(
255
+ `[data-turn-id="${e}"]`
256
+ );
257
+ if (!r) return;
258
+ r.scrollIntoView({ block: "center", behavior: "auto" });
259
+ const s = r.querySelector(
260
+ "button"
261
+ );
262
+ s == null || s.focus();
263
+ },
264
+ copyTurn: (e) => {
265
+ const r = Number.parseInt(e, 10);
266
+ if (!Number.isFinite(r)) return;
267
+ const s = t[r];
268
+ if (s && typeof navigator < "u" && navigator.clipboard)
269
+ return navigator.clipboard.writeText(s.text);
270
+ }
271
+ }),
272
+ [c, t]
273
+ );
274
+ return H(
275
+ U,
276
+ E,
277
+ g.id
278
+ ), // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- root keyboard shortcuts (j/k navigation, /) bubble up from focused descendants
279
+ /* @__PURE__ */ f(
280
+ "div",
281
+ {
282
+ ref: I,
283
+ onKeyDown: $,
284
+ "data-component": "transcript-panel",
285
+ "data-component-id": g.id,
286
+ className: G({ size: u, className: p }),
287
+ ...g,
288
+ children: [
289
+ i ? /* @__PURE__ */ f("div", { className: "ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)] ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:border-b ds:border-border", children: [
290
+ /* @__PURE__ */ o(
291
+ B,
292
+ {
293
+ ref: T,
294
+ id: P,
295
+ placeholder: d("ui.chat.transcript.search"),
296
+ "aria-label": d("ui.chat.transcript.search"),
297
+ "aria-keyshortcuts": "Meta+F Control+F",
298
+ debounceMs: 150,
299
+ onChange: (e) => M(e),
300
+ size: "sm"
301
+ }
302
+ ),
303
+ m ? /* @__PURE__ */ o(
304
+ "span",
305
+ {
306
+ role: "status",
307
+ "aria-live": "polite",
308
+ className: "type-meta ds:text-[color:var(--muted-foreground)] ds:tabular-nums",
309
+ children: k === 0 ? d("ui.chat.transcript.noMatches") : d("ui.chat.transcript.matchCount", { count: k })
310
+ }
311
+ ) : null
312
+ ] }) : null,
313
+ /* @__PURE__ */ o(
314
+ "div",
315
+ {
316
+ ref: h,
317
+ className: "ds:flex-1 ds:min-h-0 ds:overflow-y-auto ds:overflow-x-hidden",
318
+ children: N ? /* @__PURE__ */ o(
319
+ "ol",
320
+ {
321
+ className: "ds:relative ds:list-none ds:ps-0 ds:m-0",
322
+ style: { blockSize: `${y.getTotalSize()}px` },
323
+ children: y.getVirtualItems().map((e) => {
324
+ const r = t[e.index];
325
+ return r ? S(r, e.index, {
326
+ liRef: y.measureElement,
327
+ dataIndex: e.index,
328
+ style: { transform: `translateY(${e.start}px)` },
329
+ absolutePositioning: !0
330
+ }) : null;
331
+ })
332
+ }
333
+ ) : /* @__PURE__ */ o("ol", { className: "ds:list-none ds:ps-0 ds:m-0", children: t.map((e, r) => S(e, r)) })
334
+ }
335
+ )
336
+ ]
337
+ }
338
+ );
339
+ }
340
+ );
341
+ te.displayName = "TranscriptPanel";
342
+ export {
343
+ te as T,
344
+ U as t
345
+ };
346
+ //# sourceMappingURL=transcript-panel-Bx5ANMsv.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-panel-Bx5ANMsv.js","sources":["../../src/components/transcript-panel/transcript-panel.agent.ts","../../src/components/transcript-panel/transcript-panel.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — TranscriptPanel. */\n/* */\n/* `data-turn-id` carries the line's stable index (opaque id) — never */\n/* the dictated text. Transcript content frequently contains PHI; the */\n/* DOM hook MUST NOT leak it. See PRS §26 §6.1. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TranscriptPanelHandle } from './transcript-panel';\n\nexport const transcriptPanelAgent: AgentAdapter<TranscriptPanelHandle> = {\n id: 'transcript-panel',\n capabilities: ['select_single'],\n state: {\n selectedTurn: {\n type: 'string | null',\n descriptionKey: 'ui.agent.transcriptPanel.state.selectedTurn',\n description:\n 'Opaque id (line index) of the currently-active turn, or null when none is active.',\n read: (handle) => handle.getSelectedTurn(),\n },\n },\n actions: {\n focus_turn: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.transcriptPanel.actions.focusTurn',\n description: 'Scroll the given turn into view and focus its seek button.',\n invoke: (handle, args: { id: string }) => {\n handle.focusTurn(args.id);\n },\n },\n copy_turn: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.transcriptPanel.actions.copyTurn',\n description: \"Copy the given turn's text to the clipboard.\",\n invoke: (handle, args: { id: string }) => handle.copyTurn(args.id),\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'transcript-panel',\n description: 'Marks the TranscriptPanel wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-turn-id',\n description:\n \"Stable opaque turn id (line index). Never carries the turn's dictated text.\",\n },\n },\n};\n","import {\n forwardRef,\n Fragment,\n useCallback,\n useId,\n useImperativeHandle,\n useLayoutEffect,\n useMemo,\n useRef,\n useState,\n type CSSProperties,\n type HTMLAttributes,\n type KeyboardEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { transcriptPanelAgent } from './transcript-panel.agent';\nimport { useVirtualizer } from '@tanstack/react-virtual';\nimport { SearchInput } from '../search-input';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface TranscriptLine {\n speaker: string;\n text: string;\n /** Seconds, floating-point — matches HTMLMediaElement.currentTime. */\n start: number;\n end: number;\n /** 0..1 — rendered with a dotted underline when below 0.6. */\n confidence?: number;\n}\n\n/** Curated imperative handle for agent / external automation. */\nexport interface TranscriptPanelHandle {\n /** Opaque id (line index) of the active turn, or null. */\n getSelectedTurn: () => string | null;\n /** Scroll the turn with the given id into view and focus its seek button. */\n focusTurn: (id: string) => void;\n /** Copy the turn's text to the clipboard. */\n copyTurn: (id: string) => Promise<void> | void;\n}\n\nexport interface TranscriptPanelProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'children'>,\n VariantProps<typeof rootVariants> {\n lines: TranscriptLine[];\n /** Current playback time in seconds — drives the active line highlight. */\n currentTime?: number;\n onSeek?: (seconds: number) => void;\n /** Show the search bar. */\n searchable?: boolean;\n}\n\nconst rootVariants = cva(\n [\n 'ds:flex ds:flex-col ds:w-full ds:min-h-0',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border',\n 'ds:bg-background',\n 'ds:focus-within:border-[color:var(--primary)]',\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 },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst VIRTUALIZATION_THRESHOLD = 100;\nconst SPEAKER_SLOT_COUNT = 8;\n\nfunction formatTime(seconds: number, locale: string): string {\n const total = Math.max(0, Math.floor(seconds));\n const m = Math.floor(total / 60);\n const s = total % 60;\n const fmt = (n: number) =>\n new Intl.NumberFormat(locale, { minimumIntegerDigits: 2 }).format(n);\n return `${fmt(m)}:${fmt(s)}`;\n}\n\n/** ISO-8601 duration (PT#M#S) for <time datetime=\"...\">. */\nfunction secondsToIsoDuration(seconds: number): string {\n const total = Math.max(0, Math.floor(seconds));\n const m = Math.floor(total / 60);\n const s = total % 60;\n return `PT${m}M${s}S`;\n}\n\n/** Deterministic speaker slot (0..7) based on name hash. */\nfunction speakerSlot(name: string): number {\n let hash = 0;\n for (let i = 0; i < name.length; i += 1) {\n hash = (hash * 31 + name.charCodeAt(i)) | 0;\n }\n return Math.abs(hash) % SPEAKER_SLOT_COUNT;\n}\n\n/** Per-slot background classes. Indices align with the speaker palette tokens\n * in tokens/index.css. Static strings so Tailwind can pick them up at build. */\nconst SPEAKER_BG_CLASSES = [\n 'ds:bg-[color:var(--transcript-speaker-1)]',\n 'ds:bg-[color:var(--transcript-speaker-2)]',\n 'ds:bg-[color:var(--transcript-speaker-3)]',\n 'ds:bg-[color:var(--transcript-speaker-4)]',\n 'ds:bg-[color:var(--transcript-speaker-5)]',\n 'ds:bg-[color:var(--transcript-speaker-6)]',\n 'ds:bg-[color:var(--transcript-speaker-7)]',\n 'ds:bg-[color:var(--transcript-speaker-8)]',\n] as const;\n\n/** Escape a literal string for safe use inside a RegExp. */\nfunction escapeRegExp(input: string): string {\n return input.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\n\ninterface HighlightedTextProps {\n text: string;\n query: string;\n}\n\n/** Renders text with <mark> wrapping around case-insensitive matches.\n * No dangerouslySetInnerHTML — splits text nodes only. */\nfunction HighlightedText({ text, query }: HighlightedTextProps): ReactNode {\n if (!query) return text;\n const escaped = escapeRegExp(query);\n const parts = text.split(new RegExp(`(${escaped})`, 'gi'));\n return parts.map((part, i) =>\n part.toLocaleLowerCase() === query.toLocaleLowerCase() ? (\n <mark\n key={i}\n className=\"ds:bg-[color:var(--warning)]/30 ds:text-[color:var(--foreground)] ds:rounded-[var(--radius-sm)]\"\n >\n {part}\n </mark>\n ) : (\n <Fragment key={i}>{part}</Fragment>\n ),\n );\n}\n\nexport const TranscriptPanel = forwardRef<HTMLDivElement, TranscriptPanelProps>(\n (\n {\n lines,\n currentTime = 0,\n onSeek,\n searchable = true,\n size = 'md',\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const [query, setQuery] = useState('');\n const scrollRef = useRef<HTMLDivElement | null>(null);\n const searchInputRef = useRef<HTMLInputElement | null>(null);\n const searchId = useId();\n\n /* Active-line index */\n const activeIndex = useMemo(() => {\n if (!Number.isFinite(currentTime)) return -1;\n for (let i = 0; i < lines.length; i += 1) {\n const line = lines[i];\n if (line.start <= currentTime && currentTime < line.end) return i;\n }\n return -1;\n }, [lines, currentTime]);\n\n /* Match count for search */\n const matchCount = useMemo(() => {\n if (!query) return 0;\n let count = 0;\n const needle = query.toLocaleLowerCase();\n for (const line of lines) {\n const hay = line.text.toLocaleLowerCase();\n let idx = hay.indexOf(needle);\n while (idx !== -1) {\n count += 1;\n idx = hay.indexOf(needle, idx + needle.length);\n }\n }\n return count;\n }, [lines, query]);\n\n /* Ctrl/Cmd+F shortcut — focuses the search field when focus is within. */\n const handleRootKeyDown = useCallback(\n (e: KeyboardEvent<HTMLDivElement>) => {\n if (\n (e.metaKey || e.ctrlKey) &&\n e.key.toLowerCase() === 'f' &&\n searchable\n ) {\n e.preventDefault();\n searchInputRef.current?.focus();\n }\n },\n [searchable],\n );\n\n /* Virtualisation above 100 lines */\n const virtualized = lines.length > VIRTUALIZATION_THRESHOLD;\n const virtualizer = useVirtualizer({\n count: virtualized ? lines.length : 0,\n getScrollElement: () => scrollRef.current,\n estimateSize: () => 48,\n overscan: 8,\n getItemKey: (i) => i,\n });\n\n /* Auto-scroll active line into view when it changes. */\n useLayoutEffect(() => {\n if (activeIndex < 0) return;\n const scroller = scrollRef.current;\n if (!scroller) return;\n const target = scroller.querySelector(\n `[data-line-index=\"${activeIndex}\"]`,\n ) as HTMLElement | null;\n if (!target) return;\n const prefersReducedMotion =\n typeof window !== 'undefined' &&\n window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n target.scrollIntoView({\n block: 'center',\n behavior: prefersReducedMotion ? 'auto' : 'smooth',\n });\n }, [activeIndex]);\n\n const renderLine = useCallback(\n (\n line: TranscriptLine,\n index: number,\n extras?: {\n liRef?: (node: HTMLLIElement | null) => void;\n dataIndex?: number;\n // Style is an inline-style escape hatch — virtualizer offsets\n // cannot be expressed as static Tailwind. See 23-constraints §4.\n style?: CSSProperties;\n absolutePositioning?: boolean;\n },\n ) => {\n const isActive = index === activeIndex;\n const slot = speakerSlot(line.speaker);\n const lowConfidence =\n typeof line.confidence === 'number' && line.confidence < 0.6;\n return (\n <li\n key={index}\n ref={extras?.liRef}\n data-line-index={index}\n data-turn-id={String(index)}\n data-index={extras?.dataIndex}\n aria-current={isActive ? 'true' : undefined}\n // eslint-disable-next-line react/forbid-dom-props -- virtualizer translateY offset, runtime-computed\n style={extras?.style}\n className={[\n 'ds:flex ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]',\n isActive\n ? 'ds:bg-[color:var(--accent)]/12 ds:border-s-[3px] ds:border-[color:var(--primary)]'\n : 'ds:border-s-[3px] ds:border-transparent',\n extras?.absolutePositioning\n ? 'ds:absolute ds:start-0 ds:end-0 ds:top-0 ds:w-full'\n : '',\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <button\n type=\"button\"\n onClick={() => onSeek?.(line.start)}\n aria-label={t('ui.chat.transcript.seekTo', {\n time: formatTime(line.start, i18n.language),\n })}\n className={[\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:font-[family-name:var(--font-mono)]',\n 'type-meta',\n 'ds:tabular-nums',\n 'ds:text-[color:var(--muted-foreground)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)] ds:pb-[var(--spacing-xs)]',\n // WCAG 2.5.5 target size: 44×44 default, 48×48 in accessible\n // themes — matches the DS `--min-target-size` token.\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:hover:bg-muted/20',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' ')}\n >\n <time dir=\"ltr\" dateTime={secondsToIsoDuration(line.start)}>\n {formatTime(line.start, i18n.language)}\n </time>\n </button>\n <div className=\"ds:flex-1 ds:min-w-0\">\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span\n aria-hidden=\"true\"\n className={`ds:inline-block ds:size-2 ds:rounded-[var(--radius-full)] ${SPEAKER_BG_CLASSES[slot]}`}\n />\n <strong className=\"type-title-item\">\n {t('ui.chat.transcript.speaker', { name: line.speaker })}\n </strong>\n {lowConfidence ? (\n <span className=\"type-meta ds:italic ds:text-[color:var(--muted-foreground)]\">\n ({t('ui.chat.transcript.lowConfidence')})\n </span>\n ) : null}\n </div>\n <span\n dir=\"auto\"\n className={[\n 'ds:block',\n lowConfidence\n ? 'ds:underline ds:decoration-dotted ds:decoration-[color:var(--muted-foreground)]'\n : '',\n ].join(' ')}\n >\n <HighlightedText text={line.text} query={query} />\n </span>\n </div>\n </li>\n );\n },\n [activeIndex, i18n.language, onSeek, query, t],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n\n const agentHandle = useMemo<TranscriptPanelHandle>(\n () => ({\n getSelectedTurn: () => (activeIndex >= 0 ? String(activeIndex) : null),\n focusTurn: (id: string) => {\n const target = scrollRef.current?.querySelector(\n `[data-turn-id=\"${id}\"]`,\n ) as HTMLElement | null;\n if (!target) return;\n target.scrollIntoView({ block: 'center', behavior: 'auto' });\n const btn = target.querySelector(\n 'button',\n ) as HTMLButtonElement | null;\n btn?.focus();\n },\n copyTurn: (id: string) => {\n const index = Number.parseInt(id, 10);\n if (!Number.isFinite(index)) return;\n const line = lines[index];\n if (!line) return;\n if (typeof navigator !== 'undefined' && navigator.clipboard) {\n return navigator.clipboard.writeText(line.text);\n }\n },\n }),\n [activeIndex, lines],\n );\n useAgentRegistration(\n transcriptPanelAgent,\n agentHandle,\n rest.id as string | undefined,\n );\n\n return (\n // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- root keyboard shortcuts (j/k navigation, /) bubble up from focused descendants\n <div\n ref={rootRef}\n onKeyDown={handleRootKeyDown}\n data-component=\"transcript-panel\"\n data-component-id={rest.id}\n className={rootVariants({ size, className })}\n {...rest}\n >\n {searchable ? (\n <div className=\"ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)] ds:flex ds:items-center ds:gap-[var(--spacing-sm)] ds:border-b ds:border-border\">\n <SearchInput\n ref={searchInputRef}\n id={searchId}\n placeholder={t('ui.chat.transcript.search')}\n aria-label={t('ui.chat.transcript.search')}\n aria-keyshortcuts=\"Meta+F Control+F\"\n debounceMs={150}\n onChange={(v) => setQuery(v)}\n size=\"sm\"\n />\n {query ? (\n <span\n role=\"status\"\n aria-live=\"polite\"\n className=\"type-meta ds:text-[color:var(--muted-foreground)] ds:tabular-nums\"\n >\n {matchCount === 0\n ? t('ui.chat.transcript.noMatches')\n : t('ui.chat.transcript.matchCount', { count: matchCount })}\n </span>\n ) : null}\n </div>\n ) : null}\n\n <div\n ref={scrollRef}\n className=\"ds:flex-1 ds:min-h-0 ds:overflow-y-auto ds:overflow-x-hidden\"\n >\n {virtualized ? (\n <ol\n className=\"ds:relative ds:list-none ds:ps-0 ds:m-0\"\n // eslint-disable-next-line react/forbid-dom-props -- virtualizer total size, runtime-computed\n style={{ blockSize: `${virtualizer.getTotalSize()}px` }}\n >\n {virtualizer.getVirtualItems().map((vi) => {\n const line = lines[vi.index];\n if (!line) return null;\n // Put the measureElement ref on the <li> directly — a <div>\n // child of <ol> is invalid and breaks list semantics for\n // assistive tech.\n return renderLine(line, vi.index, {\n liRef: virtualizer.measureElement,\n dataIndex: vi.index,\n style: { transform: `translateY(${vi.start}px)` },\n absolutePositioning: true,\n });\n })}\n </ol>\n ) : (\n <ol className=\"ds:list-none ds:ps-0 ds:m-0\">\n {lines.map((line, index) => renderLine(line, index))}\n </ol>\n )}\n </div>\n </div>\n );\n },\n);\n\nTranscriptPanel.displayName = 'TranscriptPanel';\n"],"names":["transcriptPanelAgent","handle","args","rootVariants","cva","VIRTUALIZATION_THRESHOLD","SPEAKER_SLOT_COUNT","formatTime","seconds","locale","total","m","s","fmt","n","secondsToIsoDuration","speakerSlot","name","hash","i","SPEAKER_BG_CLASSES","escapeRegExp","input","HighlightedText","text","query","escaped","part","jsx","Fragment","TranscriptPanel","forwardRef","lines","currentTime","onSeek","searchable","size","className","rest","ref","t","i18n","useTranslation","setQuery","useState","scrollRef","useRef","searchInputRef","searchId","useId","activeIndex","useMemo","line","matchCount","count","needle","hay","idx","handleRootKeyDown","useCallback","_a","virtualized","virtualizer","useVirtualizer","useLayoutEffect","scroller","target","prefersReducedMotion","renderLine","index","extras","isActive","slot","lowConfidence","jsxs","rootRef","useImperativeHandle","agentHandle","id","btn","useAgentRegistration","SearchInput","v","vi"],"mappings":"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"}
@@ -50,7 +50,14 @@ const g = i(
50
50
  defaultVariants: { size: "md" }
51
51
  }
52
52
  ), x = f(
53
- ({ size: a = "md", density: e = "default", label: r, hideLabel: n = !1, className: l, ...c }, m) => {
53
+ ({
54
+ size: a = "md",
55
+ density: e = "default",
56
+ label: r,
57
+ hideLabel: n = !1,
58
+ className: l,
59
+ ...c
60
+ }, m) => {
54
61
  const { t: p } = u(), d = r ?? p("ui.chat.typing");
55
62
  return /* @__PURE__ */ o(
56
63
  "div",
@@ -65,9 +72,24 @@ const g = i(
65
72
  ...c,
66
73
  children: [
67
74
  /* @__PURE__ */ o("span", { "aria-hidden": "true", className: v({ density: e }), children: [
68
- /* @__PURE__ */ s("span", { className: `${t({ size: a })} ds:[animation-delay:0ms]` }),
69
- /* @__PURE__ */ s("span", { className: `${t({ size: a })} ds:[animation-delay:200ms]` }),
70
- /* @__PURE__ */ s("span", { className: `${t({ size: a })} ds:[animation-delay:400ms]` })
75
+ /* @__PURE__ */ s(
76
+ "span",
77
+ {
78
+ className: `${t({ size: a })} ds:[animation-delay:0ms]`
79
+ }
80
+ ),
81
+ /* @__PURE__ */ s(
82
+ "span",
83
+ {
84
+ className: `${t({ size: a })} ds:[animation-delay:200ms]`
85
+ }
86
+ ),
87
+ /* @__PURE__ */ s(
88
+ "span",
89
+ {
90
+ className: `${t({ size: a })} ds:[animation-delay:400ms]`
91
+ }
92
+ )
71
93
  ] }),
72
94
  n ? null : /* @__PURE__ */ s("span", { className: "ds:font-medium", children: d })
73
95
  ]
@@ -79,4 +101,4 @@ x.displayName = "TypingIndicator";
79
101
  export {
80
102
  x as T
81
103
  };
82
- //# sourceMappingURL=typing-indicator-CbUBf-Dx.js.map
104
+ //# sourceMappingURL=typing-indicator-BZ5jXZPn.js.map