@alfadocs/ui-kit-debug 0.67.1 → 0.69.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 (745) hide show
  1. package/dist/_chunks/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
  2. package/dist/_chunks/accordion-DnIa7OHX.js.map +1 -0
  3. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js +2061 -0
  4. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js.map +1 -0
  5. package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
  6. package/dist/_chunks/address-autocomplete-BEX9PXty.js.map +1 -0
  7. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
  8. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js.map → agenda-card.agent-mTCrkKSZ.js.map} +1 -1
  9. package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-g0kg7HwB.js} +36 -24
  10. package/dist/_chunks/agenda-tray-g0kg7HwB.js.map +1 -0
  11. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-CXlsNX1c.js} +3 -3
  12. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js.map → ai-consent-banner-CXlsNX1c.js.map} +1 -1
  13. package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
  14. package/dist/_chunks/ai-prompt-input-CuhTo9mh.js.map +1 -0
  15. package/dist/_chunks/{ai-tools-rail-CInA_1-E.js → ai-tools-rail-BA_sqy1A.js} +87 -70
  16. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js.map +1 -0
  17. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
  18. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js.map → alia-sidebar-B47qRQb5.js.map} +1 -1
  19. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DRmE24OQ.js} +2 -2
  20. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js.map → anamnesis-card-DRmE24OQ.js.map} +1 -1
  21. package/dist/_chunks/{appointment-tray-BMl89NPW.js → appointment-tray-CZtvtaH-.js} +32 -20
  22. package/dist/_chunks/appointment-tray-CZtvtaH-.js.map +1 -0
  23. package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-DYXXnGug.js} +59 -56
  24. package/dist/_chunks/audio-recorder-DYXXnGug.js.map +1 -0
  25. package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
  26. package/dist/_chunks/autocomplete-DOeGouCL.js.map +1 -0
  27. package/dist/_chunks/bishop-score-PJI3AXzA.js +304 -0
  28. package/dist/_chunks/bishop-score-PJI3AXzA.js.map +1 -0
  29. package/dist/_chunks/bmi-calculator-BZtIJ53x.js +434 -0
  30. package/dist/_chunks/bmi-calculator-BZtIJ53x.js.map +1 -0
  31. package/dist/_chunks/{booking-L8-YP8BJ.js → booking-C3VqFReX.js} +420 -397
  32. package/dist/_chunks/booking-C3VqFReX.js.map +1 -0
  33. package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
  34. package/dist/_chunks/breadcrumb-CchdeG7d.js.map +1 -0
  35. package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
  36. package/dist/_chunks/{calculator-dialog-CFk4I91b.js.map → calculator-dialog-BR5iU0kf.js.map} +1 -1
  37. package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
  38. package/dist/_chunks/calendar-CZUjL8SZ.js.map +1 -0
  39. package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-CvFGXa2z.js} +10 -6
  40. package/dist/_chunks/care-plan-card-CvFGXa2z.js.map +1 -0
  41. package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-C3E_gClk.js} +17 -13
  42. package/dist/_chunks/care-plan-entry-card-C3E_gClk.js.map +1 -0
  43. package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
  44. package/dist/_chunks/{carousel.agent-vt21A_el.js.map → carousel.agent-4v8Emr9E.js.map} +1 -1
  45. package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
  46. package/dist/_chunks/chart-CMr3eW62.js.map +1 -0
  47. package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
  48. package/dist/_chunks/chat-container-DWho5hPR.js.map +1 -0
  49. package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
  50. package/dist/_chunks/chat-input-BcXTetgM.js.map +1 -0
  51. package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
  52. package/dist/_chunks/checkbox-BuZ1u__2.js.map +1 -0
  53. package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
  54. package/dist/_chunks/{checkbox-group-CpUwlHug.js.map → checkbox-group-PqNmQ-cE.js.map} +1 -1
  55. package/dist/_chunks/{clinical-note-card-gtrxv6zn.js → clinical-note-card-DqQYf_D4.js} +2 -2
  56. package/dist/_chunks/{clinical-note-card-gtrxv6zn.js.map → clinical-note-card-DqQYf_D4.js.map} +1 -1
  57. package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
  58. package/dist/_chunks/collapsible-BrnRiCC6.js.map +1 -0
  59. package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
  60. package/dist/_chunks/color-picker-C_fZl6sA.js.map +1 -0
  61. package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
  62. package/dist/_chunks/combobox-Clum7gJ1.js.map +1 -0
  63. package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
  64. package/dist/_chunks/command-palette-CJzmc5pC.js.map +1 -0
  65. package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-Dramqa9C.js} +13 -11
  66. package/dist/_chunks/contact-profile-card-Dramqa9C.js.map +1 -0
  67. package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
  68. package/dist/_chunks/copy-field-Bjw9u2cV.js.map +1 -0
  69. package/dist/_chunks/counter-dRlTNC_y.js +55 -0
  70. package/dist/_chunks/counter-dRlTNC_y.js.map +1 -0
  71. package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-DmRGJNaT.js} +3 -3
  72. package/dist/_chunks/{cycle-calculator-BF0ointe.js.map → cycle-calculator-DmRGJNaT.js.map} +1 -1
  73. package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
  74. package/dist/_chunks/{date-picker-oGg5BnXL.js.map → date-picker-Dl9RKxaV.js.map} +1 -1
  75. package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
  76. package/dist/_chunks/date-range-picker-CTUeR6Bj.js.map +1 -0
  77. package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
  78. package/dist/_chunks/date-time-picker-BhoogS5Q.js.map +1 -0
  79. package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-CG_FOHya.js} +44 -30
  80. package/dist/_chunks/dependent-selector-CG_FOHya.js.map +1 -0
  81. package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
  82. package/dist/_chunks/dialog-ZNuboNmy.js.map +1 -0
  83. package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-CTubA0-N.js} +12 -4
  84. package/dist/_chunks/document-scanner-CTubA0-N.js.map +1 -0
  85. package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
  86. package/dist/_chunks/dropdown-menu-qrxjymfw.js.map +1 -0
  87. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-BTmsIQqD.js} +4 -4
  88. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js.map → due-date-calculator-BTmsIQqD.js.map} +1 -1
  89. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +448 -0
  90. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js.map +1 -0
  91. package/dist/_chunks/editor-overlay-wYm22wZK.js.map +1 -1
  92. package/dist/_chunks/{email-input-lQivsFrw.js → email-input-B_Y55f5G.js} +3 -3
  93. package/dist/_chunks/{email-input-lQivsFrw.js.map → email-input-B_Y55f5G.js.map} +1 -1
  94. package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-CRz7KE2D.js} +2 -2
  95. package/dist/_chunks/{fetal-weight-BVSzOhuR.js.map → fetal-weight-CRz7KE2D.js.map} +1 -1
  96. package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-5ScQd4fE.js} +118 -100
  97. package/dist/_chunks/file-upload-5ScQd4fE.js.map +1 -0
  98. package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
  99. package/dist/_chunks/fiscal-code-input-Cf-8O4Fj.js.map +1 -0
  100. package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-DZ2mBS3w.js} +78 -71
  101. package/dist/_chunks/freemium-paywall-DZ2mBS3w.js.map +1 -0
  102. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-BleUdhbI.js} +5 -5
  103. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js.map → gestational-age-calculator-BleUdhbI.js.map} +1 -1
  104. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-CnjDXX6U.js} +3 -3
  105. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js.map → hcg-doubling-CnjDXX6U.js.map} +1 -1
  106. package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
  107. package/dist/_chunks/header-settings-DJqoAl5m.js.map +1 -0
  108. package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
  109. package/dist/_chunks/{index.modern-D2LGACWg.js.map → index.modern-Zta-A4Jm.js.map} +1 -1
  110. package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
  111. package/dist/_chunks/list-DgE1xWBM.js.map +1 -0
  112. package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
  113. package/dist/_chunks/locale-picker-ChYYSX2N.js.map +1 -0
  114. package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
  115. package/dist/_chunks/map-view-BkOoGoX2.js.map +1 -0
  116. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-6T9W4Knl.js} +4 -4
  117. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js.map → marketplace-app-shell-6T9W4Knl.js.map} +1 -1
  118. package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
  119. package/dist/_chunks/message-card.agent-ZLhx3Bs5.js.map +1 -0
  120. package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
  121. package/dist/_chunks/message-tray-DwrBLJlf.js.map +1 -0
  122. package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
  123. package/dist/_chunks/multi-select-BdHHDrRN.js.map +1 -0
  124. package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
  125. package/dist/_chunks/navigation-menu-DRUi6sSj.js.map +1 -0
  126. package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
  127. package/dist/_chunks/notification-card.agent-DxGBZb8T.js.map +1 -0
  128. package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-Btb9oQeZ.js} +112 -97
  129. package/dist/_chunks/notification-tray-Btb9oQeZ.js.map +1 -0
  130. package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
  131. package/dist/_chunks/number-input-DxphVG_A.js.map +1 -0
  132. package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CP2Nhupm.js} +12 -8
  133. package/dist/_chunks/operator-hero-CP2Nhupm.js.map +1 -0
  134. package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
  135. package/dist/_chunks/otp-input-DzBQ-CpE.js.map +1 -0
  136. package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
  137. package/dist/_chunks/pagination-D58kglCr.js.map +1 -0
  138. package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-CBC_ySF6.js} +69 -60
  139. package/dist/_chunks/patient-search-CBC_ySF6.js.map +1 -0
  140. package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
  141. package/dist/_chunks/{patient-shell-BfgufL_q.js.map → patient-shell-DV3XEtIB.js.map} +1 -1
  142. package/dist/_chunks/{patient-summary-card-hEmr4eTW.js → patient-summary-card-B836_fDB.js} +95 -103
  143. package/dist/_chunks/patient-summary-card-B836_fDB.js.map +1 -0
  144. package/dist/_chunks/patient-table-CDuosVru.js +889 -0
  145. package/dist/_chunks/patient-table-CDuosVru.js.map +1 -0
  146. package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-DvjwYVIT.js} +56 -44
  147. package/dist/_chunks/payment-form-DvjwYVIT.js.map +1 -0
  148. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-DioWKBUq.js} +2 -2
  149. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js.map → payment-request-card-DioWKBUq.js.map} +1 -1
  150. package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-D6BPfW2D.js} +205 -157
  151. package/dist/_chunks/pdf-viewer-D6BPfW2D.js.map +1 -0
  152. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-BuDEMbHE.js} +2 -2
  153. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js.map → periodontal-chart-card-BuDEMbHE.js.map} +1 -1
  154. package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
  155. package/dist/_chunks/phone-input-DjU-XmO_.js.map +1 -0
  156. package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
  157. package/dist/_chunks/popover-B2qCDhJC.js.map +1 -0
  158. package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-KrTHqZua.js} +278 -242
  159. package/dist/_chunks/practice-results-KrTHqZua.js.map +1 -0
  160. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-DORUAOHB.js} +6 -6
  161. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js.map → pregnancy-dating-DORUAOHB.js.map} +1 -1
  162. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-DVz4rr7-.js} +3 -3
  163. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js.map → pregnancy-weight-gain-DVz4rr7-.js.map} +1 -1
  164. package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
  165. package/dist/_chunks/privacy-lock-BzMLQu-j.js.map +1 -0
  166. package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
  167. package/dist/_chunks/product-hub-panel-e6pW220e.js.map +1 -0
  168. package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
  169. package/dist/_chunks/{progress-kzIRcdaq.js.map → progress-DA413-zn.js.map} +1 -1
  170. package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
  171. package/dist/_chunks/public-footer.agent-D0cFbjWl.js.map +1 -0
  172. package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
  173. package/dist/_chunks/{public-header.agent-BOhJgZEU.js.map → public-header.agent-DqkqA-ca.js.map} +1 -1
  174. package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
  175. package/dist/_chunks/qr-code-CPkEs5mG.js.map +1 -0
  176. package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
  177. package/dist/_chunks/{radio-group-CLjK-SlK.js.map → radio-group-BPt7pKZW.js.map} +1 -1
  178. package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
  179. package/dist/_chunks/recaptcha-widget-BC-4To9b.js.map +1 -0
  180. package/dist/_chunks/registry-DvAUVLHh.js +51 -0
  181. package/dist/_chunks/registry-DvAUVLHh.js.map +1 -0
  182. package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
  183. package/dist/_chunks/resizable-DVGcfOrk.js.map +1 -0
  184. package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
  185. package/dist/_chunks/reviews-panel-Dq7LMDcH.js.map +1 -0
  186. package/dist/_chunks/rich-text-editor-BsV7zUdg.js +2142 -0
  187. package/dist/_chunks/rich-text-editor-BsV7zUdg.js.map +1 -0
  188. package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
  189. package/dist/_chunks/search-bar-C_T3pBJn.js.map +1 -0
  190. package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
  191. package/dist/_chunks/{search-input-DbxrnHkW.js.map → search-input-DQvGxR74.js.map} +1 -1
  192. package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
  193. package/dist/_chunks/search-input.agent-DRH54coT.js.map +1 -0
  194. package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
  195. package/dist/_chunks/select-DMLG44F5.js.map +1 -0
  196. package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
  197. package/dist/_chunks/{session-countdown-LPnhTHjn.js.map → session-countdown-X1Ki6i0M.js.map} +1 -1
  198. package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
  199. package/dist/_chunks/sheet-BxsE7eQm.js.map +1 -0
  200. package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
  201. package/dist/_chunks/sidebar-DY9jGjgt.js.map +1 -0
  202. package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-B4DeRhTe.js} +75 -49
  203. package/dist/_chunks/sign-document-B4DeRhTe.js.map +1 -0
  204. package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
  205. package/dist/_chunks/signature-capture-Ct_4Md4e.js.map +1 -0
  206. package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
  207. package/dist/_chunks/slider-DN1CWkKB.js.map +1 -0
  208. package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
  209. package/dist/_chunks/sparkline-iOXYgvJe.js.map +1 -0
  210. package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
  211. package/dist/_chunks/stepper-accordion.agent-cmEguIdx.js.map +1 -0
  212. package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
  213. package/dist/_chunks/stepper-progress-Bv0njx4g.js.map +1 -0
  214. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
  215. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js.map → suggestion-chip.agent-Brn3CiFE.js.map} +1 -1
  216. package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
  217. package/dist/_chunks/switch-OILsBLWo.js.map +1 -0
  218. package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
  219. package/dist/_chunks/tabs-BxcOziCo.js.map +1 -0
  220. package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
  221. package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +1 -0
  222. package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
  223. package/dist/_chunks/task-tray-qOEQflu4.js.map +1 -0
  224. package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
  225. package/dist/_chunks/text-area-Bt3p7Pt0.js.map +1 -0
  226. package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
  227. package/dist/_chunks/text-input-B-OWQ1Je.js.map +1 -0
  228. package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
  229. package/dist/_chunks/theme-toggle-XB6o_lgs.js.map +1 -0
  230. package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
  231. package/dist/_chunks/time-picker-BPlJWm8w.js.map +1 -0
  232. package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
  233. package/dist/_chunks/timeline-CqA4nKTI.js.map +1 -0
  234. package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
  235. package/dist/_chunks/{toast.agent-vuLRRn2a.js.map → toast.agent-57UzyR9U.js.map} +1 -1
  236. package/dist/_chunks/{tooth-scheme-BIx1O2aJ.js → tooth-scheme-yBr53cvv.js} +421 -348
  237. package/dist/_chunks/tooth-scheme-yBr53cvv.js.map +1 -0
  238. package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
  239. package/dist/_chunks/transcript-panel-3THQX6nJ.js.map +1 -0
  240. package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
  241. package/dist/_chunks/unit-converter-YEpD9evj.js.map +1 -0
  242. package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
  243. package/dist/_chunks/use-password-requirements-BXvS2MBS.js.map +1 -0
  244. package/dist/_chunks/users-MBVtUzwd.js +17 -0
  245. package/dist/_chunks/users-MBVtUzwd.js.map +1 -0
  246. package/dist/_chunks/warning-stack-BsgaEbL8.js +283 -0
  247. package/dist/_chunks/warning-stack-BsgaEbL8.js.map +1 -0
  248. package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
  249. package/dist/_chunks/whatsapp-button-BIy6NaJK.js.map +1 -0
  250. package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Bdam9pGp.js} +99 -88
  251. package/dist/_chunks/workflow-map-Bdam9pGp.js.map +1 -0
  252. package/dist/agent/index.d.ts +4 -4
  253. package/dist/agent/index.d.ts.map +1 -1
  254. package/dist/agent/index.js +36 -0
  255. package/dist/agent/index.js.map +1 -0
  256. package/dist/agent/registry.d.ts +33 -0
  257. package/dist/agent/registry.d.ts.map +1 -1
  258. package/dist/agent/types.d.ts +78 -2
  259. package/dist/agent/types.d.ts.map +1 -1
  260. package/dist/agent-catalog.json +6905 -509
  261. package/dist/agent-i18n/en.json +1175 -0
  262. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  263. package/dist/components/accordion/accordion.d.ts.map +1 -1
  264. package/dist/components/accordion/index.js +1 -1
  265. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
  266. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts.map +1 -0
  267. package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
  268. package/dist/components/address-autocomplete/address-autocomplete.d.ts.map +1 -1
  269. package/dist/components/address-autocomplete/index.d.ts +2 -1
  270. package/dist/components/address-autocomplete/index.d.ts.map +1 -1
  271. package/dist/components/address-autocomplete/index.js +3 -2
  272. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
  273. package/dist/components/agenda-card/index.js +1 -1
  274. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -1
  275. package/dist/components/agenda-tray/index.js +1 -1
  276. package/dist/components/ai-consent-banner/index.js +1 -1
  277. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -1
  278. package/dist/components/ai-prompt-input/index.js +1 -1
  279. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +1 -1
  280. package/dist/components/ai-tools-rail/index.js +1 -1
  281. package/dist/components/anamnesis-card/index.js +1 -1
  282. package/dist/components/appointment-card/appointment-card.agent.d.ts.map +1 -1
  283. package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
  284. package/dist/components/appointment-card/index.js +1 -1
  285. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -1
  286. package/dist/components/audio-recorder/index.js +1 -1
  287. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  288. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  289. package/dist/components/autocomplete/index.js +1 -1
  290. package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
  291. package/dist/components/bishop-score/bishop-score.agent.d.ts.map +1 -0
  292. package/dist/components/bishop-score/bishop-score.d.ts +17 -1
  293. package/dist/components/bishop-score/bishop-score.d.ts.map +1 -1
  294. package/dist/components/bishop-score/index.js +1 -1
  295. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
  296. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts.map +1 -0
  297. package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
  298. package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
  299. package/dist/components/bmi-calculator/index.js +1 -1
  300. package/dist/components/booking/booking.agent.d.ts.map +1 -1
  301. package/dist/components/booking/index.js +1 -1
  302. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -1
  303. package/dist/components/breadcrumb/index.js +1 -1
  304. package/dist/components/calculator-dialog/index.js +1 -1
  305. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  306. package/dist/components/calendar/index.js +1 -1
  307. package/dist/components/care-plan-card/care-plan-card.agent.d.ts.map +1 -1
  308. package/dist/components/care-plan-card/index.js +1 -1
  309. package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts.map +1 -1
  310. package/dist/components/care-plan-entry-card/index.js +1 -1
  311. package/dist/components/carousel/carousel.agent.d.ts.map +1 -1
  312. package/dist/components/carousel/index.js +1 -1
  313. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  314. package/dist/components/chart/index.js +1 -1
  315. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  316. package/dist/components/chat-container/index.js +1 -1
  317. package/dist/components/chat-input/chat-input.agent.d.ts.map +1 -1
  318. package/dist/components/chat-input/index.js +1 -1
  319. package/dist/components/checkbox/checkbox.agent.d.ts.map +1 -1
  320. package/dist/components/checkbox/index.js +1 -1
  321. package/dist/components/checkbox-group/index.js +1 -1
  322. package/dist/components/clinical-note-card/index.js +1 -1
  323. package/dist/components/collapsible/collapsible.agent.d.ts.map +1 -1
  324. package/dist/components/collapsible/index.js +1 -1
  325. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -1
  326. package/dist/components/color-picker/index.js +1 -1
  327. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  328. package/dist/components/combobox/combobox.d.ts.map +1 -1
  329. package/dist/components/combobox/index.js +1 -1
  330. package/dist/components/command-palette/command-palette.agent.d.ts.map +1 -1
  331. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  332. package/dist/components/command-palette/index.js +1 -1
  333. package/dist/components/contact-profile-card/contact-profile-card.agent.d.ts.map +1 -1
  334. package/dist/components/contact-profile-card/index.js +1 -1
  335. package/dist/components/copy-field/copy-field.agent.d.ts.map +1 -1
  336. package/dist/components/copy-field/index.js +1 -1
  337. package/dist/components/counter/counter.d.ts +22 -0
  338. package/dist/components/counter/counter.d.ts.map +1 -0
  339. package/dist/components/counter/index.d.ts +3 -0
  340. package/dist/components/counter/index.d.ts.map +1 -0
  341. package/dist/components/counter/index.js +5 -0
  342. package/dist/components/counter/index.js.map +1 -0
  343. package/dist/components/cycle-calculator/index.js +1 -1
  344. package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
  345. package/dist/components/data-table/data-table.d.ts +1 -1
  346. package/dist/components/data-table/data-table.d.ts.map +1 -1
  347. package/dist/components/data-table/filters/date-range-filter.d.ts +1 -1
  348. package/dist/components/data-table/filters/date-range-filter.d.ts.map +1 -1
  349. package/dist/components/data-table/index.js +31 -30
  350. package/dist/components/data-table/index.js.map +1 -1
  351. package/dist/components/data-table/toolbar.d.ts +4 -1
  352. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  353. package/dist/components/date-picker/date-picker.agent.d.ts.map +1 -1
  354. package/dist/components/date-picker/index.js +1 -1
  355. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -1
  356. package/dist/components/date-range-picker/index.js +1 -1
  357. package/dist/components/date-time-picker/date-time-picker.agent.d.ts.map +1 -1
  358. package/dist/components/date-time-picker/index.js +1 -1
  359. package/dist/components/dependent-selector/dependent-selector.agent.d.ts.map +1 -1
  360. package/dist/components/dependent-selector/index.js +1 -1
  361. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  362. package/dist/components/dialog/index.js +1 -1
  363. package/dist/components/document-scanner/document-scanner.agent.d.ts.map +1 -1
  364. package/dist/components/document-scanner/index.js +1 -1
  365. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
  366. package/dist/components/dropdown-menu/index.js +1 -1
  367. package/dist/components/due-date-calculator/index.js +1 -1
  368. package/dist/components/editor-overlay/editor-overlay.d.ts.map +1 -1
  369. package/dist/components/email-input/index.js +1 -1
  370. package/dist/components/fetal-weight/index.js +1 -1
  371. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  372. package/dist/components/file-upload/index.js +1 -1
  373. package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts.map +1 -1
  374. package/dist/components/fiscal-code-input/index.js +1 -1
  375. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -1
  376. package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
  377. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  378. package/dist/components/freemium-paywall/index.js +1 -1
  379. package/dist/components/gestational-age-calculator/index.js +1 -1
  380. package/dist/components/hcg-doubling/index.js +1 -1
  381. package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
  382. package/dist/components/header-settings/index.js +1 -1
  383. package/dist/components/index.d.ts +2 -0
  384. package/dist/components/index.d.ts.map +1 -1
  385. package/dist/components/list/index.js +1 -1
  386. package/dist/components/list/list.agent.d.ts.map +1 -1
  387. package/dist/components/locale-picker/index.js +1 -1
  388. package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
  389. package/dist/components/map-view/index.js +1 -1
  390. package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
  391. package/dist/components/message-card/index.js +1 -1
  392. package/dist/components/message-card/message-card.agent.d.ts.map +1 -1
  393. package/dist/components/message-tray/index.js +1 -1
  394. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
  395. package/dist/components/multi-select/index.js +1 -1
  396. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  397. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  398. package/dist/components/navigation-menu/index.js +1 -1
  399. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -1
  400. package/dist/components/notification-card/index.js +1 -1
  401. package/dist/components/notification-card/notification-card.agent.d.ts.map +1 -1
  402. package/dist/components/notification-tray/index.js +1 -1
  403. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
  404. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  405. package/dist/components/number-input/index.js +1 -1
  406. package/dist/components/number-input/number-input.agent.d.ts.map +1 -1
  407. package/dist/components/operator-hero/index.js +1 -1
  408. package/dist/components/operator-hero/operator-hero.agent.d.ts.map +1 -1
  409. package/dist/components/otp-input/index.js +1 -1
  410. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -1
  411. package/dist/components/pagination/index.js +1 -1
  412. package/dist/components/pagination/pagination.agent.d.ts.map +1 -1
  413. package/dist/components/password-input/index.js +1 -1
  414. package/dist/components/password-input/password-input.agent.d.ts.map +1 -1
  415. package/dist/components/patient-search/index.js +1 -1
  416. package/dist/components/patient-search/patient-search.agent.d.ts.map +1 -1
  417. package/dist/components/patient-summary-card/index.js +1 -1
  418. package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -1
  419. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
  420. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts.map +1 -0
  421. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
  422. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts.map +1 -0
  423. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +45 -0
  424. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts.map +1 -0
  425. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
  426. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts.map +1 -0
  427. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +26 -0
  428. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts.map +1 -0
  429. package/dist/components/patient-table/columns.d.ts +102 -0
  430. package/dist/components/patient-table/columns.d.ts.map +1 -0
  431. package/dist/components/patient-table/index.d.ts +24 -0
  432. package/dist/components/patient-table/index.d.ts.map +1 -0
  433. package/dist/components/patient-table/index.js +13 -0
  434. package/dist/components/patient-table/index.js.map +1 -0
  435. package/dist/components/patient-table/patient-table.d.ts +138 -0
  436. package/dist/components/patient-table/patient-table.d.ts.map +1 -0
  437. package/dist/components/patient-table/types.d.ts +172 -0
  438. package/dist/components/patient-table/types.d.ts.map +1 -0
  439. package/dist/components/patient-table/use-responsive-columns.d.ts +109 -0
  440. package/dist/components/patient-table/use-responsive-columns.d.ts.map +1 -0
  441. package/dist/components/payment-card/index.js +1 -1
  442. package/dist/components/payment-form/index.js +1 -1
  443. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  444. package/dist/components/pdf-viewer/index.js +1 -1
  445. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  446. package/dist/components/periodontal-chart-card/index.js +1 -1
  447. package/dist/components/phone-input/index.js +1 -1
  448. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -1
  449. package/dist/components/popover/index.js +1 -1
  450. package/dist/components/popover/popover.agent.d.ts.map +1 -1
  451. package/dist/components/practice-results/index.js +1 -1
  452. package/dist/components/practice-results/practice-results.agent.d.ts.map +1 -1
  453. package/dist/components/pregnancy-dating/index.js +1 -1
  454. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  455. package/dist/components/privacy-lock/index.js +1 -1
  456. package/dist/components/privacy-lock/privacy-lock.agent.d.ts.map +1 -1
  457. package/dist/components/product-hub-tray/index.js +1 -1
  458. package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts.map +1 -1
  459. package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts.map +1 -1
  460. package/dist/components/progress/index.js +1 -1
  461. package/dist/components/public-footer/index.js +1 -1
  462. package/dist/components/public-footer/public-footer.agent.d.ts.map +1 -1
  463. package/dist/components/public-footer/public-footer.d.ts.map +1 -1
  464. package/dist/components/public-header/index.js +1 -1
  465. package/dist/components/public-header/public-header.agent.d.ts.map +1 -1
  466. package/dist/components/qr-code/index.js +1 -1
  467. package/dist/components/qr-code/qr-code.agent.d.ts.map +1 -1
  468. package/dist/components/radio-group/index.js +1 -1
  469. package/dist/components/recaptcha-widget/index.js +1 -1
  470. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -1
  471. package/dist/components/resizable/index.js +1 -1
  472. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  473. package/dist/components/resizable/resizable.d.ts.map +1 -1
  474. package/dist/components/reviews-panel/index.js +1 -1
  475. package/dist/components/reviews-panel/reviews-panel.agent.d.ts.map +1 -1
  476. package/dist/components/rich-text-editor/help-me-write-overlay.d.ts.map +1 -1
  477. package/dist/components/rich-text-editor/index.js +1 -1
  478. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  479. package/dist/components/rich-text-editor/rich-text-editor.d.ts +15 -0
  480. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  481. package/dist/components/search-bar/index.js +1 -1
  482. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -1
  483. package/dist/components/search-input/index.js +2 -2
  484. package/dist/components/search-input/search-input.agent.d.ts.map +1 -1
  485. package/dist/components/select/index.js +1 -1
  486. package/dist/components/select/select.agent.d.ts.map +1 -1
  487. package/dist/components/session-countdown/index.js +1 -1
  488. package/dist/components/sheet/index.js +1 -1
  489. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  490. package/dist/components/sidebar/index.js +1 -1
  491. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  492. package/dist/components/sidebar/sidebar.d.ts +7 -0
  493. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  494. package/dist/components/sign-document/index.js +1 -1
  495. package/dist/components/sign-document/sign-document.agent.d.ts.map +1 -1
  496. package/dist/components/signature-capture/index.js +1 -1
  497. package/dist/components/signature-capture/signature-capture.agent.d.ts.map +1 -1
  498. package/dist/components/slider/index.js +1 -1
  499. package/dist/components/slider/slider.agent.d.ts.map +1 -1
  500. package/dist/components/sparkline/index.js +1 -1
  501. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  502. package/dist/components/stepper-accordion/index.js +1 -1
  503. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -1
  504. package/dist/components/stepper-progress/index.js +1 -1
  505. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -1
  506. package/dist/components/suggestion-chip/index.js +1 -1
  507. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -1
  508. package/dist/components/switch/index.js +1 -1
  509. package/dist/components/switch/switch.agent.d.ts.map +1 -1
  510. package/dist/components/tabs/index.js +1 -1
  511. package/dist/components/tabs/tabs.agent.d.ts.map +1 -1
  512. package/dist/components/tabs/tabs.d.ts.map +1 -1
  513. package/dist/components/task-card/index.js +1 -1
  514. package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
  515. package/dist/components/task-tray/index.js +1 -1
  516. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -1
  517. package/dist/components/text-area/index.js +1 -1
  518. package/dist/components/text-area/text-area.agent.d.ts.map +1 -1
  519. package/dist/components/text-input/index.js +1 -1
  520. package/dist/components/text-input/text-input.agent.d.ts.map +1 -1
  521. package/dist/components/theme-toggle/index.js +1 -1
  522. package/dist/components/theme-toggle/theme-toggle.agent.d.ts.map +1 -1
  523. package/dist/components/time-picker/index.js +1 -1
  524. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -1
  525. package/dist/components/timeline/index.js +1 -1
  526. package/dist/components/timeline/timeline.agent.d.ts.map +1 -1
  527. package/dist/components/toast/index.js +1 -1
  528. package/dist/components/toast/toast.agent.d.ts.map +1 -1
  529. package/dist/components/toast/toast.d.ts.map +1 -1
  530. package/dist/components/tooth-scheme/index.js +1 -1
  531. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  532. package/dist/components/transcript-panel/index.js +1 -1
  533. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -1
  534. package/dist/components/unit-converter/index.js +1 -1
  535. package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
  536. package/dist/components/unit-converter/unit-converter.agent.d.ts.map +1 -0
  537. package/dist/components/unit-converter/unit-converter.d.ts +27 -0
  538. package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
  539. package/dist/components/warning-stack/index.js +1 -1
  540. package/dist/components/warning-stack/warning-stack.d.ts +9 -0
  541. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  542. package/dist/components/whatsapp-button/index.d.ts +1 -1
  543. package/dist/components/whatsapp-button/index.d.ts.map +1 -1
  544. package/dist/components/whatsapp-button/index.js +3 -2
  545. package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
  546. package/dist/components/whatsapp-button/whatsapp-button.d.ts.map +1 -1
  547. package/dist/components/workflow/index.js +1 -1
  548. package/dist/components/workflow/workflow.agent.d.ts.map +1 -1
  549. package/dist/i18n/locales/ar.d.ts +74 -0
  550. package/dist/i18n/locales/ar.d.ts.map +1 -1
  551. package/dist/i18n/locales/ar.js +76 -2
  552. package/dist/i18n/locales/ar.js.map +1 -1
  553. package/dist/i18n/locales/de.d.ts +74 -0
  554. package/dist/i18n/locales/de.d.ts.map +1 -1
  555. package/dist/i18n/locales/de.js +76 -2
  556. package/dist/i18n/locales/de.js.map +1 -1
  557. package/dist/i18n/locales/el.d.ts +74 -0
  558. package/dist/i18n/locales/el.d.ts.map +1 -1
  559. package/dist/i18n/locales/el.js +76 -2
  560. package/dist/i18n/locales/el.js.map +1 -1
  561. package/dist/i18n/locales/en.d.ts +92 -0
  562. package/dist/i18n/locales/en.d.ts.map +1 -1
  563. package/dist/i18n/locales/en.js +94 -2
  564. package/dist/i18n/locales/en.js.map +1 -1
  565. package/dist/i18n/locales/es.d.ts +74 -0
  566. package/dist/i18n/locales/es.d.ts.map +1 -1
  567. package/dist/i18n/locales/es.js +76 -2
  568. package/dist/i18n/locales/es.js.map +1 -1
  569. package/dist/i18n/locales/fr.d.ts +74 -0
  570. package/dist/i18n/locales/fr.d.ts.map +1 -1
  571. package/dist/i18n/locales/fr.js +76 -2
  572. package/dist/i18n/locales/fr.js.map +1 -1
  573. package/dist/i18n/locales/hi.d.ts +74 -0
  574. package/dist/i18n/locales/hi.d.ts.map +1 -1
  575. package/dist/i18n/locales/hi.js +76 -2
  576. package/dist/i18n/locales/hi.js.map +1 -1
  577. package/dist/i18n/locales/it.d.ts +74 -0
  578. package/dist/i18n/locales/it.d.ts.map +1 -1
  579. package/dist/i18n/locales/it.js +76 -2
  580. package/dist/i18n/locales/it.js.map +1 -1
  581. package/dist/i18n/locales/ja.d.ts +74 -0
  582. package/dist/i18n/locales/ja.d.ts.map +1 -1
  583. package/dist/i18n/locales/ja.js +76 -2
  584. package/dist/i18n/locales/ja.js.map +1 -1
  585. package/dist/i18n/locales/nl.d.ts +74 -0
  586. package/dist/i18n/locales/nl.d.ts.map +1 -1
  587. package/dist/i18n/locales/nl.js +76 -2
  588. package/dist/i18n/locales/nl.js.map +1 -1
  589. package/dist/i18n/locales/pl.d.ts +74 -0
  590. package/dist/i18n/locales/pl.d.ts.map +1 -1
  591. package/dist/i18n/locales/pl.js +76 -2
  592. package/dist/i18n/locales/pl.js.map +1 -1
  593. package/dist/i18n/locales/pt.d.ts +74 -0
  594. package/dist/i18n/locales/pt.d.ts.map +1 -1
  595. package/dist/i18n/locales/pt.js +76 -2
  596. package/dist/i18n/locales/pt.js.map +1 -1
  597. package/dist/i18n/locales/ro.d.ts +74 -0
  598. package/dist/i18n/locales/ro.d.ts.map +1 -1
  599. package/dist/i18n/locales/ro.js +76 -2
  600. package/dist/i18n/locales/ro.js.map +1 -1
  601. package/dist/i18n/locales/ru.d.ts +74 -0
  602. package/dist/i18n/locales/ru.d.ts.map +1 -1
  603. package/dist/i18n/locales/ru.js +76 -2
  604. package/dist/i18n/locales/ru.js.map +1 -1
  605. package/dist/i18n/locales/sq.d.ts +74 -0
  606. package/dist/i18n/locales/sq.d.ts.map +1 -1
  607. package/dist/i18n/locales/sq.js +76 -2
  608. package/dist/i18n/locales/sq.js.map +1 -1
  609. package/dist/i18n/locales/sv.d.ts +74 -0
  610. package/dist/i18n/locales/sv.d.ts.map +1 -1
  611. package/dist/i18n/locales/sv.js +76 -2
  612. package/dist/i18n/locales/sv.js.map +1 -1
  613. package/dist/i18n/locales/tr.d.ts +74 -0
  614. package/dist/i18n/locales/tr.d.ts.map +1 -1
  615. package/dist/i18n/locales/tr.js +76 -2
  616. package/dist/i18n/locales/tr.js.map +1 -1
  617. package/dist/i18n/locales/zh.d.ts +74 -0
  618. package/dist/i18n/locales/zh.d.ts.map +1 -1
  619. package/dist/i18n/locales/zh.js +76 -2
  620. package/dist/i18n/locales/zh.js.map +1 -1
  621. package/dist/index.js +688 -673
  622. package/dist/index.js.map +1 -1
  623. package/dist/locales/ar.json +76 -2
  624. package/dist/locales/de.json +76 -2
  625. package/dist/locales/el.json +76 -2
  626. package/dist/locales/en.json +76 -2
  627. package/dist/locales/es.json +76 -2
  628. package/dist/locales/fr.json +76 -2
  629. package/dist/locales/hi.json +76 -2
  630. package/dist/locales/it.json +76 -2
  631. package/dist/locales/ja.json +76 -2
  632. package/dist/locales/nl.json +76 -2
  633. package/dist/locales/pl.json +76 -2
  634. package/dist/locales/pt.json +76 -2
  635. package/dist/locales/ro.json +76 -2
  636. package/dist/locales/ru.json +76 -2
  637. package/dist/locales/sq.json +76 -2
  638. package/dist/locales/sv.json +76 -2
  639. package/dist/locales/tr.json +76 -2
  640. package/dist/locales/zh.json +76 -2
  641. package/dist/patterns/alia-assistant/index.js +1 -1
  642. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  643. package/dist/patterns/patient-shell/index.js +1 -1
  644. package/dist/tokens.css +3 -2
  645. package/package.json +14 -1
  646. package/dist/_chunks/accordion-9lJSMMsZ.js.map +0 -1
  647. package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
  648. package/dist/_chunks/address-autocomplete-CT-9AOli.js.map +0 -1
  649. package/dist/_chunks/agenda-tray-T-BumlGZ.js.map +0 -1
  650. package/dist/_chunks/ai-prompt-input-BwEACCPm.js.map +0 -1
  651. package/dist/_chunks/ai-tools-rail-CInA_1-E.js.map +0 -1
  652. package/dist/_chunks/appointment-tray-BMl89NPW.js.map +0 -1
  653. package/dist/_chunks/audio-recorder-DjXLP4aF.js.map +0 -1
  654. package/dist/_chunks/autocomplete-CcCFlVf-.js.map +0 -1
  655. package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
  656. package/dist/_chunks/bishop-score-CjsB9bM-.js.map +0 -1
  657. package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
  658. package/dist/_chunks/bmi-calculator-n-823_1V.js.map +0 -1
  659. package/dist/_chunks/booking-L8-YP8BJ.js.map +0 -1
  660. package/dist/_chunks/breadcrumb-OTbaY70e.js.map +0 -1
  661. package/dist/_chunks/calendar-oYWOCrnf.js.map +0 -1
  662. package/dist/_chunks/care-plan-card-BwVUyUBb.js.map +0 -1
  663. package/dist/_chunks/care-plan-entry-card-VzdQHcOL.js.map +0 -1
  664. package/dist/_chunks/chart-Cg3e9EH9.js.map +0 -1
  665. package/dist/_chunks/chat-container-ogB4OskO.js.map +0 -1
  666. package/dist/_chunks/chat-input-B5zjNEUN.js.map +0 -1
  667. package/dist/_chunks/checkbox-DRcOdmXv.js.map +0 -1
  668. package/dist/_chunks/collapsible-X3oaLPU3.js.map +0 -1
  669. package/dist/_chunks/color-picker-FXpItIaF.js.map +0 -1
  670. package/dist/_chunks/combobox-BC-DFx8G.js.map +0 -1
  671. package/dist/_chunks/command-palette-BiPAAno-.js.map +0 -1
  672. package/dist/_chunks/contact-profile-card-7BMB85T6.js.map +0 -1
  673. package/dist/_chunks/copy-field-CCq7j6Zc.js.map +0 -1
  674. package/dist/_chunks/date-range-picker-C5BWfH_T.js.map +0 -1
  675. package/dist/_chunks/date-time-picker-Ze1My59T.js.map +0 -1
  676. package/dist/_chunks/dependent-selector-DpzGtr_J.js.map +0 -1
  677. package/dist/_chunks/dialog-DMGnSelc.js.map +0 -1
  678. package/dist/_chunks/document-scanner-D2qehl3-.js.map +0 -1
  679. package/dist/_chunks/dropdown-menu-DwwPovMZ.js.map +0 -1
  680. package/dist/_chunks/editable-currency-cell-renderer-D1ewvJKO.js +0 -2391
  681. package/dist/_chunks/editable-currency-cell-renderer-D1ewvJKO.js.map +0 -1
  682. package/dist/_chunks/file-upload-BosbPDb1.js.map +0 -1
  683. package/dist/_chunks/fiscal-code-input-DPtqluVb.js.map +0 -1
  684. package/dist/_chunks/freemium-paywall-CkWjv3o6.js.map +0 -1
  685. package/dist/_chunks/header-settings-CNOqIhoW.js.map +0 -1
  686. package/dist/_chunks/list-BOwqwy03.js.map +0 -1
  687. package/dist/_chunks/locale-picker-C9JmBht3.js.map +0 -1
  688. package/dist/_chunks/map-view-Tb5VfK9Y.js.map +0 -1
  689. package/dist/_chunks/message-card.agent-4IeIgrnJ.js.map +0 -1
  690. package/dist/_chunks/message-tray-CVyJajVJ.js.map +0 -1
  691. package/dist/_chunks/multi-select-BcPylvHR.js.map +0 -1
  692. package/dist/_chunks/navigation-menu-C6lBYVv9.js.map +0 -1
  693. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js.map +0 -1
  694. package/dist/_chunks/notification-tray-DlgenTEe.js.map +0 -1
  695. package/dist/_chunks/number-input-Dj5L3pXK.js.map +0 -1
  696. package/dist/_chunks/operator-hero-f_KaRhw5.js.map +0 -1
  697. package/dist/_chunks/otp-input-xQ4Ps5VY.js.map +0 -1
  698. package/dist/_chunks/pagination-DQOgnxxw.js.map +0 -1
  699. package/dist/_chunks/patient-search-DR9XUYRQ.js.map +0 -1
  700. package/dist/_chunks/patient-summary-card-hEmr4eTW.js.map +0 -1
  701. package/dist/_chunks/payment-form-nXocS_MX.js.map +0 -1
  702. package/dist/_chunks/pdf-viewer-GsfNqeeT.js.map +0 -1
  703. package/dist/_chunks/phone-input-DVXhNlIl.js.map +0 -1
  704. package/dist/_chunks/popover-DTbfAuR0.js.map +0 -1
  705. package/dist/_chunks/practice-results-DND2SAt7.js.map +0 -1
  706. package/dist/_chunks/privacy-lock-C7JyMf0y.js.map +0 -1
  707. package/dist/_chunks/product-hub-panel-CAXDFeGP.js.map +0 -1
  708. package/dist/_chunks/public-footer.agent-CfXuW1x6.js.map +0 -1
  709. package/dist/_chunks/qr-code-DNXhi6se.js.map +0 -1
  710. package/dist/_chunks/recaptcha-widget-BCNHsgqt.js.map +0 -1
  711. package/dist/_chunks/registry-nPAVE19X.js +0 -21
  712. package/dist/_chunks/registry-nPAVE19X.js.map +0 -1
  713. package/dist/_chunks/resizable-3vzqDlg6.js.map +0 -1
  714. package/dist/_chunks/reviews-panel-DBktKm7i.js.map +0 -1
  715. package/dist/_chunks/rich-text-editor-DAeCXiQG.js +0 -1973
  716. package/dist/_chunks/rich-text-editor-DAeCXiQG.js.map +0 -1
  717. package/dist/_chunks/search-bar-SY2BcV2N.js.map +0 -1
  718. package/dist/_chunks/search-input.agent-CfZvViOd.js.map +0 -1
  719. package/dist/_chunks/select-CEtRcon5.js.map +0 -1
  720. package/dist/_chunks/sheet-taJer-Ha.js.map +0 -1
  721. package/dist/_chunks/sidebar-DaB4ulxH.js.map +0 -1
  722. package/dist/_chunks/sign-document-CdAiHiCh.js.map +0 -1
  723. package/dist/_chunks/signature-capture-COi0Uiqu.js.map +0 -1
  724. package/dist/_chunks/slider-BHWzXdjt.js.map +0 -1
  725. package/dist/_chunks/sparkline-DGhCSw8M.js.map +0 -1
  726. package/dist/_chunks/stepper-accordion.agent-C4quJ-MD.js.map +0 -1
  727. package/dist/_chunks/stepper-progress-DDjq5nei.js.map +0 -1
  728. package/dist/_chunks/switch-BJ6HD3Mn.js.map +0 -1
  729. package/dist/_chunks/tabs-BIQ0ew1T.js.map +0 -1
  730. package/dist/_chunks/task-card.agent-CUPKYd7w.js.map +0 -1
  731. package/dist/_chunks/task-tray-CAncV-QQ.js.map +0 -1
  732. package/dist/_chunks/text-area-BIx0tZ05.js.map +0 -1
  733. package/dist/_chunks/text-input-BaClJL8Y.js.map +0 -1
  734. package/dist/_chunks/theme-toggle-DETmSu_h.js.map +0 -1
  735. package/dist/_chunks/time-picker-B5umYwfv.js.map +0 -1
  736. package/dist/_chunks/timeline-DQa5Tyz4.js.map +0 -1
  737. package/dist/_chunks/tooth-scheme-BIx1O2aJ.js.map +0 -1
  738. package/dist/_chunks/transcript-panel-CLHmv83g.js.map +0 -1
  739. package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
  740. package/dist/_chunks/unit-converter-C1V3ACM9.js.map +0 -1
  741. package/dist/_chunks/use-password-requirements-DsgduV1x.js.map +0 -1
  742. package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
  743. package/dist/_chunks/warning-stack-Cv4fr5zo.js.map +0 -1
  744. package/dist/_chunks/whatsapp-button-DUjlWGKf.js.map +0 -1
  745. package/dist/_chunks/workflow-map-JAZryZJr.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transcript-panel-3THQX6nJ.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', 'copy'],\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 argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n idempotent: true,\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 // Clipboard write of dictated PHI text — write + reaches the system\n // clipboard (openWorld).\n safety: 'write',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n openWorld: true,\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 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';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\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-[color:var(--card-border)]',\n 'ds:shadow-[var(--shadow-card)] ds:[.theme-accessible_&]:border-2',\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 useIsomorphicLayoutEffect(() => {\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('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('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('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('chat.transcript.search')}\n aria-label={t('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('chat.transcript.noMatches')\n : t('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","useIsomorphicLayoutEffect","scroller","target","prefersReducedMotion","renderLine","index","extras","isActive","slot","lowConfidence","jsxs","rootRef","useImperativeHandle","agentHandle","id","btn","useAgentRegistration","SearchInput","v","vi"],"mappings":"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"}
@@ -0,0 +1,337 @@
1
+ import { jsxs as y, jsx as n } from "react/jsx-runtime";
2
+ import { forwardRef as H, useState as h, useMemo as $, useEffect as j, useRef as q } from "react";
3
+ import { c as z } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as M } from "react-i18next";
5
+ import { u as Y } from "./registry-DvAUVLHh.js";
6
+ import { F as C } from "./form-field-BOm9hK35.js";
7
+ import { N as B } from "./number-input-DxphVG_A.js";
8
+ import { S } from "./select-DMLG44F5.js";
9
+ import { I as D } from "./insert-result-njqBthzT.js";
10
+ const L = [
11
+ "weight",
12
+ "length",
13
+ "temperature",
14
+ "glucose"
15
+ ], P = {
16
+ id: "unit-converter",
17
+ capabilities: ["set_value", "view_change"],
18
+ state: {
19
+ category: {
20
+ type: "'weight' | 'length' | 'temperature' | 'glucose'",
21
+ descriptionKey: "ui.agent.unitConverter.state.category",
22
+ description: "Active measurement family. Determines which from/to units are selectable.",
23
+ read: (e) => e.getCategory()
24
+ },
25
+ inputs: {
26
+ type: "{ value: number | null, fromId: string, toId: string }",
27
+ descriptionKey: "ui.agent.unitConverter.state.inputs",
28
+ description: "Source value plus the from-unit and to-unit ids within the active category.",
29
+ read: (e) => e.getInputs()
30
+ },
31
+ result: {
32
+ type: "number | null",
33
+ descriptionKey: "ui.agent.unitConverter.state.result",
34
+ description: "Converted value in the to-unit, or null when the source value is empty.",
35
+ read: (e) => e.getResult()
36
+ }
37
+ },
38
+ actions: {
39
+ set_value: {
40
+ safety: "write",
41
+ argsType: "{ value: number | null }",
42
+ argsSchema: {
43
+ type: "object",
44
+ properties: {
45
+ value: {
46
+ type: ["number", "null"],
47
+ description: "Source value to convert, or null to clear."
48
+ }
49
+ },
50
+ required: ["value"]
51
+ },
52
+ idempotent: !0,
53
+ descriptionKey: "ui.agent.unitConverter.actions.setValue",
54
+ description: "Set the source value to convert.",
55
+ examples: [{ args: { value: 70 }, note: "Convert 70 of the from-unit." }],
56
+ invoke: (e, o) => {
57
+ e.setValue(o.value);
58
+ }
59
+ },
60
+ set_units: {
61
+ safety: "read",
62
+ argsType: "{ fromId?: string, toId?: string }",
63
+ argsSchema: {
64
+ type: "object",
65
+ properties: {
66
+ fromId: {
67
+ type: "string",
68
+ description: "Source unit id within the active category."
69
+ },
70
+ toId: {
71
+ type: "string",
72
+ description: "Target unit id within the active category."
73
+ }
74
+ },
75
+ additionalProperties: !1
76
+ },
77
+ idempotent: !0,
78
+ descriptionKey: "ui.agent.unitConverter.actions.setUnits",
79
+ description: "Set the from-unit and/or to-unit. Ids outside the active category are ignored.",
80
+ examples: [
81
+ { args: { fromId: "kg", toId: "lb" }, note: "Convert kg → lb." }
82
+ ],
83
+ invoke: (e, o) => {
84
+ e.setUnits(o);
85
+ }
86
+ },
87
+ set_category: {
88
+ safety: "read",
89
+ argsType: "{ category: 'weight' | 'length' | 'temperature' | 'glucose' }",
90
+ argsSchema: {
91
+ type: "object",
92
+ properties: {
93
+ category: {
94
+ enum: [...L],
95
+ description: "Measurement family to switch to."
96
+ }
97
+ },
98
+ required: ["category"]
99
+ },
100
+ idempotent: !0,
101
+ descriptionKey: "ui.agent.unitConverter.actions.setCategory",
102
+ description: "Switch the measurement family. Resets the from/to units to that category defaults.",
103
+ invoke: (e, o) => {
104
+ e.setCategory(o.category);
105
+ }
106
+ },
107
+ get_result: {
108
+ safety: "read",
109
+ returns: "number | null",
110
+ returnsSchema: { type: ["number", "null"] },
111
+ idempotent: !0,
112
+ descriptionKey: "ui.agent.unitConverter.actions.getResult",
113
+ description: "Return the converted value in the to-unit, or null when no source value is set.",
114
+ invoke: (e) => e.getResult()
115
+ }
116
+ },
117
+ domHooks: {
118
+ root: {
119
+ attr: "data-component",
120
+ value: "unit-converter",
121
+ description: "Marks the UnitConverter wrapper."
122
+ },
123
+ instanceId: {
124
+ attr: "data-component-id",
125
+ sourceProp: "id",
126
+ description: "Sourced from the id prop. Required to address a specific converter instance."
127
+ }
128
+ }
129
+ }, E = {
130
+ // weight → base kg
131
+ kg: { id: "kg", category: "weight", factor: 1, offset: 0 },
132
+ g: { id: "g", category: "weight", factor: 1e-3, offset: 0 },
133
+ lb: { id: "lb", category: "weight", factor: 0.45359237, offset: 0 },
134
+ oz: { id: "oz", category: "weight", factor: 0.028349523125, offset: 0 },
135
+ // length → base cm
136
+ cm: { id: "cm", category: "length", factor: 1, offset: 0 },
137
+ m: { id: "m", category: "length", factor: 100, offset: 0 },
138
+ in: { id: "in", category: "length", factor: 2.54, offset: 0 },
139
+ ft: { id: "ft", category: "length", factor: 30.48, offset: 0 },
140
+ // temperature → base °C (affine: °C = °F·5/9 − 32·5/9)
141
+ c: { id: "c", category: "temperature", factor: 1, offset: 0 },
142
+ f: { id: "f", category: "temperature", factor: 5 / 9, offset: -160 / 9 },
143
+ // glucose → base mmol/L (1 mg/dL = 1/18.0156 mmol/L)
144
+ mmol_l: { id: "mmol_l", category: "glucose", factor: 1, offset: 0 },
145
+ mg_dl: { id: "mg_dl", category: "glucose", factor: 1 / 18.0156, offset: 0 }
146
+ }, v = {
147
+ weight: ["kg", "g", "lb", "oz"],
148
+ length: ["cm", "m", "in", "ft"],
149
+ temperature: ["c", "f"],
150
+ glucose: ["mmol_l", "mg_dl"]
151
+ }, J = [
152
+ "weight",
153
+ "length",
154
+ "temperature",
155
+ "glucose"
156
+ ];
157
+ function Q(e, o, m) {
158
+ const a = E[o], u = E[m];
159
+ if (!a || !u) throw new Error(`Unknown unit: ${o} → ${m}`);
160
+ if (a.category !== u.category)
161
+ throw new Error(
162
+ `Cannot convert across categories: ${a.category} → ${u.category}`
163
+ );
164
+ return (e * a.factor + a.offset - u.offset) / u.factor;
165
+ }
166
+ const W = z("ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]", {
167
+ variants: {
168
+ width: { full: "ds:w-full", auto: "ds:inline-flex" }
169
+ },
170
+ defaultVariants: { width: "full" }
171
+ }), X = {
172
+ weight: "--info",
173
+ length: "--success",
174
+ temperature: "--warning-readable",
175
+ glucose: "--accent"
176
+ };
177
+ function Z(e) {
178
+ return X[e];
179
+ }
180
+ const ee = H(
181
+ ({
182
+ defaultCategory: e = "weight",
183
+ onResultChange: o,
184
+ onInsert: m,
185
+ insertVariant: a = "insert",
186
+ onCopy: u,
187
+ onError: T,
188
+ insertBrand: R,
189
+ id: _,
190
+ width: K,
191
+ className: V
192
+ }, A) => {
193
+ const { t: r, i18n: k } = M(), [g, F] = h(e), [s, N] = h(null), [l, b] = h(
194
+ v[e][0]
195
+ ), [c, w] = h(
196
+ v[e][1]
197
+ ), U = (t) => {
198
+ const p = t, I = v[p];
199
+ F(p), b(I[0]), w(I[1] ?? I[0]);
200
+ }, i = $(
201
+ () => s === null ? null : Q(s, l, c),
202
+ [s, l, c]
203
+ ), f = $(
204
+ () => new Intl.NumberFormat(k.language, { maximumFractionDigits: 3 }),
205
+ [k.language]
206
+ );
207
+ j(() => {
208
+ o == null || o(i);
209
+ }, [i, o]);
210
+ const d = q({ category: g, value: s, fromId: l, toId: c, converted: i });
211
+ d.current = { category: g, value: s, fromId: l, toId: c, converted: i };
212
+ const O = $(
213
+ () => ({
214
+ getCategory: () => d.current.category,
215
+ setCategory: (t) => U(t),
216
+ getInputs: () => ({
217
+ value: d.current.value,
218
+ fromId: d.current.fromId,
219
+ toId: d.current.toId
220
+ }),
221
+ setValue: (t) => N(t),
222
+ setUnits: (t) => {
223
+ const p = v[d.current.category];
224
+ t.fromId !== void 0 && p.includes(t.fromId) && b(t.fromId), t.toId !== void 0 && p.includes(t.toId) && w(t.toId);
225
+ },
226
+ getResult: () => d.current.converted
227
+ }),
228
+ []
229
+ );
230
+ Y(P, O, _);
231
+ const G = J.map((t) => ({
232
+ value: t,
233
+ label: r(`unitConverter.category.${t}`)
234
+ })), x = v[g].map((t) => ({
235
+ value: t,
236
+ label: r(`unitConverter.units.${t}`)
237
+ }));
238
+ return /* @__PURE__ */ y(
239
+ "div",
240
+ {
241
+ ref: A,
242
+ "data-component": "unit-converter",
243
+ "data-component-id": _,
244
+ className: W({ width: K, className: V }),
245
+ children: [
246
+ /* @__PURE__ */ n(C, { label: r("unitConverter.categoryLabel"), children: /* @__PURE__ */ n(
247
+ S,
248
+ {
249
+ options: G,
250
+ value: g,
251
+ onValueChange: U
252
+ }
253
+ ) }),
254
+ /* @__PURE__ */ y("div", { className: "ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3", children: [
255
+ /* @__PURE__ */ n(C, { label: r("unitConverter.value"), children: /* @__PURE__ */ n(B, { mode: "decimal", value: s, onChange: N }) }),
256
+ /* @__PURE__ */ n(C, { label: r("unitConverter.from"), children: /* @__PURE__ */ n(
257
+ S,
258
+ {
259
+ options: x,
260
+ value: l,
261
+ onValueChange: b
262
+ }
263
+ ) }),
264
+ /* @__PURE__ */ n(C, { label: r("unitConverter.to"), children: /* @__PURE__ */ n(
265
+ S,
266
+ {
267
+ options: x,
268
+ value: c,
269
+ onValueChange: w
270
+ }
271
+ ) })
272
+ ] }),
273
+ /* @__PURE__ */ n("p", { className: "ds:sr-only", role: "status", "aria-live": "polite", children: i !== null ? `${f.format(s ?? 0)} ${r(
274
+ `unitConverter.units.${l}`
275
+ )} = ${f.format(i)} ${r(
276
+ `unitConverter.units.${c}`
277
+ )}` : "" }),
278
+ i !== null ? /* @__PURE__ */ y("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
279
+ /* @__PURE__ */ n("span", { className: "type-label ds:text-muted-foreground", children: r("unitConverter.result") }),
280
+ /* @__PURE__ */ y("span", { className: "type-metric ds:text-foreground", children: [
281
+ f.format(i),
282
+ " ",
283
+ r(`unitConverter.units.${c}`)
284
+ ] }),
285
+ a === "copy" || m ? /* @__PURE__ */ n(
286
+ D,
287
+ {
288
+ variant: a,
289
+ onInsert: m,
290
+ onCopy: u,
291
+ onError: T,
292
+ card: {
293
+ title: r("insert.title.unitConverter"),
294
+ icon: "ruler",
295
+ highlight: r(`unitConverter.category.${g}`),
296
+ // Chip tints by measurement family so the inserted card
297
+ // signals the category at a glance — with the contrast-safe
298
+ // orange override for the `--warning` temperature family.
299
+ highlightToken: Z(g),
300
+ brand: R,
301
+ fields: [
302
+ {
303
+ // Source measurement → ruler glyph (matches the header).
304
+ icon: "ruler",
305
+ label: r("unitConverter.from"),
306
+ value: `${f.format(s ?? 0)} ${r(
307
+ `unitConverter.units.${l}`
308
+ )}`
309
+ },
310
+ {
311
+ // Converted result → trending-up (arrow) glyph signals the
312
+ // conversion direction to the output value.
313
+ icon: "trending-up",
314
+ label: r("unitConverter.to"),
315
+ value: `${f.format(i)} ${r(
316
+ `unitConverter.units.${c}`
317
+ )}`
318
+ }
319
+ ]
320
+ }
321
+ }
322
+ ) : null
323
+ ] }) : /* @__PURE__ */ n("p", { className: "type-body ds:text-muted-foreground", children: r("unitConverter.empty") })
324
+ ]
325
+ }
326
+ );
327
+ }
328
+ );
329
+ ee.displayName = "UnitConverter";
330
+ export {
331
+ J as C,
332
+ E as U,
333
+ v as a,
334
+ ee as b,
335
+ Q as c
336
+ };
337
+ //# sourceMappingURL=unit-converter-YEpD9evj.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"unit-converter-YEpD9evj.js","sources":["../../src/components/unit-converter/unit-converter.agent.ts","../../src/components/unit-converter/units.ts","../../src/components/unit-converter/unit-converter.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — UnitConverter. */\n/* */\n/* Generic clinical/everyday unit conversion. The agent-relevant surface */\n/* is the read-only converted result plus the structural inputs (category, */\n/* source value, from-unit, to-unit) and `set_value` actions to drive */\n/* them. Values are plain measurements — no patient identity. The handle */\n/* is the curated `UnitConverterHandle`. See `src/docs/26-agent-readiness`.*/\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { UnitConverterHandle } from './unit-converter';\nimport type { UnitCategory } from './units';\n\n/**\n * Measurement families, mirrored from `./units`'s `CATEGORIES`. Inlined as a\n * literal (rather than runtime-imported) so the ESM catalog build can load this\n * pure module without TS path resolution; `satisfies` keeps it in lockstep with\n * the `UnitCategory` union at compile time.\n */\nconst CATEGORIES = [\n 'weight',\n 'length',\n 'temperature',\n 'glucose',\n] as const satisfies readonly UnitCategory[];\n\nexport const unitConverterAgent: AgentAdapter<UnitConverterHandle> = {\n id: 'unit-converter',\n capabilities: ['set_value', 'view_change'],\n state: {\n category: {\n type: \"'weight' | 'length' | 'temperature' | 'glucose'\",\n descriptionKey: 'ui.agent.unitConverter.state.category',\n description:\n 'Active measurement family. Determines which from/to units are selectable.',\n read: (handle) => handle.getCategory(),\n },\n inputs: {\n type: '{ value: number | null, fromId: string, toId: string }',\n descriptionKey: 'ui.agent.unitConverter.state.inputs',\n description:\n 'Source value plus the from-unit and to-unit ids within the active category.',\n read: (handle) => handle.getInputs(),\n },\n result: {\n type: 'number | null',\n descriptionKey: 'ui.agent.unitConverter.state.result',\n description:\n 'Converted value in the to-unit, or null when the source value is empty.',\n read: (handle) => handle.getResult(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: number | null }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: ['number', 'null'],\n description: 'Source value to convert, or null to clear.',\n },\n },\n required: ['value'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.unitConverter.actions.setValue',\n description: 'Set the source value to convert.',\n examples: [{ args: { value: 70 }, note: 'Convert 70 of the from-unit.' }],\n invoke: (handle, args: { value: number | null }) => {\n handle.setValue(args.value);\n },\n },\n set_units: {\n safety: 'read',\n argsType: '{ fromId?: string, toId?: string }',\n argsSchema: {\n type: 'object',\n properties: {\n fromId: {\n type: 'string',\n description: 'Source unit id within the active category.',\n },\n toId: {\n type: 'string',\n description: 'Target unit id within the active category.',\n },\n },\n additionalProperties: false,\n },\n idempotent: true,\n descriptionKey: 'ui.agent.unitConverter.actions.setUnits',\n description:\n 'Set the from-unit and/or to-unit. Ids outside the active category are ignored.',\n examples: [\n { args: { fromId: 'kg', toId: 'lb' }, note: 'Convert kg → lb.' },\n ],\n invoke: (handle, args: { fromId?: string; toId?: string }) => {\n handle.setUnits(args);\n },\n },\n set_category: {\n safety: 'read',\n argsType: \"{ category: 'weight' | 'length' | 'temperature' | 'glucose' }\",\n argsSchema: {\n type: 'object',\n properties: {\n category: {\n enum: [...CATEGORIES],\n description: 'Measurement family to switch to.',\n },\n },\n required: ['category'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.unitConverter.actions.setCategory',\n description:\n 'Switch the measurement family. Resets the from/to units to that category defaults.',\n invoke: (\n handle,\n args: {\n category: 'weight' | 'length' | 'temperature' | 'glucose';\n },\n ) => {\n handle.setCategory(args.category);\n },\n },\n get_result: {\n safety: 'read',\n returns: 'number | null',\n returnsSchema: { type: ['number', 'null'] },\n idempotent: true,\n descriptionKey: 'ui.agent.unitConverter.actions.getResult',\n description:\n 'Return the converted value in the to-unit, or null when no source value is set.',\n invoke: (handle) => handle.getResult(),\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'unit-converter',\n description: 'Marks the UnitConverter wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific converter instance.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* Generic unit conversion — pure, framework-free, unit-testable. */\n/* */\n/* Every unit is described by an affine map to its category's base */\n/* unit: base = value * factor + offset. Conversion is base-in then */\n/* base-out, so the same code handles linear scales (weight, length, */\n/* glucose) and offset scales (temperature) uniformly. */\n/* ------------------------------------------------------------------ */\n\nexport type UnitCategory = 'weight' | 'length' | 'temperature' | 'glucose';\n\nexport interface UnitDef {\n id: string;\n category: UnitCategory;\n /** Multiplier to the category base unit. */\n factor: number;\n /** Additive offset to the base unit (non-zero only for temperature). */\n offset: number;\n}\n\n/* Base units: kg, cm, °C, mmol/L. */\nexport const UNITS: Record<string, UnitDef> = {\n // weight → base kg\n kg: { id: 'kg', category: 'weight', factor: 1, offset: 0 },\n g: { id: 'g', category: 'weight', factor: 0.001, offset: 0 },\n lb: { id: 'lb', category: 'weight', factor: 0.45359237, offset: 0 },\n oz: { id: 'oz', category: 'weight', factor: 0.028349523125, offset: 0 },\n // length → base cm\n cm: { id: 'cm', category: 'length', factor: 1, offset: 0 },\n m: { id: 'm', category: 'length', factor: 100, offset: 0 },\n in: { id: 'in', category: 'length', factor: 2.54, offset: 0 },\n ft: { id: 'ft', category: 'length', factor: 30.48, offset: 0 },\n // temperature → base °C (affine: °C = °F·5/9 − 32·5/9)\n c: { id: 'c', category: 'temperature', factor: 1, offset: 0 },\n f: { id: 'f', category: 'temperature', factor: 5 / 9, offset: (-32 * 5) / 9 },\n // glucose → base mmol/L (1 mg/dL = 1/18.0156 mmol/L)\n mmol_l: { id: 'mmol_l', category: 'glucose', factor: 1, offset: 0 },\n mg_dl: { id: 'mg_dl', category: 'glucose', factor: 1 / 18.0156, offset: 0 },\n};\n\nexport const UNITS_BY_CATEGORY: Record<UnitCategory, string[]> = {\n weight: ['kg', 'g', 'lb', 'oz'],\n length: ['cm', 'm', 'in', 'ft'],\n temperature: ['c', 'f'],\n glucose: ['mmol_l', 'mg_dl'],\n};\n\nexport const CATEGORIES: UnitCategory[] = [\n 'weight',\n 'length',\n 'temperature',\n 'glucose',\n];\n\n/**\n * Convert `value` from one unit to another. Both ids must belong to the same\n * category; mismatched categories throw (a programming error, not user input).\n */\nexport function convertUnits(\n value: number,\n fromId: string,\n toId: string,\n): number {\n const from = UNITS[fromId];\n const to = UNITS[toId];\n if (!from || !to) throw new Error(`Unknown unit: ${fromId} → ${toId}`);\n if (from.category !== to.category) {\n throw new Error(\n `Cannot convert across categories: ${from.category} → ${to.category}`,\n );\n }\n const base = value * from.factor + from.offset;\n return (base - to.offset) / to.factor;\n}\n","/* ------------------------------------------------------------------ */\n/* UnitConverter — generic clinical/everyday unit conversion across */\n/* weight, length, temperature and glucose. */\n/* */\n/* Maths lives in `./units` (pure, separately tested). */\n/* ------------------------------------------------------------------ */\n\nimport { forwardRef, useEffect, useMemo, useRef, useState } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { unitConverterAgent } from './unit-converter.agent';\nimport { FormField } from '../form-field';\nimport { NumberInput } from '../number-input';\nimport { Select } from '../select';\nimport {\n InsertButton,\n type InsertPayload,\n type InsertVariant,\n type InsertMode,\n} from '../_shared/insert-result';\nimport {\n type UnitCategory,\n CATEGORIES,\n UNITS_BY_CATEGORY,\n convertUnits,\n} from './units';\n\nconst rootVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]', {\n variants: {\n width: { full: 'ds:w-full', auto: 'ds:inline-flex' },\n },\n defaultVariants: { width: 'full' },\n});\n\n/**\n * DS token NAME backing the result-card category chip, one per measurement\n * family. The converter shows no on-screen badge, but the inserted card carries\n * a category chip so the reader can tell at a glance which family the figure\n * belongs to; each token is a closed-palette semantic alias resolved to a\n * concrete colour at raster time by `InsertButton`.\n */\nconst CATEGORY_HIGHLIGHT_TOKEN: Record<UnitCategory, string> = {\n weight: '--info',\n length: '--success',\n temperature: '--warning-readable',\n glucose: '--accent',\n};\n\n/**\n * Category chip token. The `temperature` family resolves to `--warning-readable`,\n * which the result card's colour probe resolves in the live themed DOM: orange-600\n * in light, non-accessible mode (where bare `--warning` yellow only reaches\n * ~3.2:1 on the white card) and `--warning` elsewhere, whose deepened ramp already\n * clears contrast. Resolving the token NAME at the card means the choice tracks\n * the live theme regardless of where the theme class lives. Other families are\n * unchanged.\n */\nfunction categoryHighlightToken(category: UnitCategory): string {\n return CATEGORY_HIGHLIGHT_TOKEN[category];\n}\n\nexport interface UnitConverterProps extends VariantProps<typeof rootVariants> {\n /** Initial category. Defaults to `'weight'`. */\n defaultCategory?: UnitCategory;\n /** Fires with the converted value (and `null` when input is empty). */\n onResultChange?: (value: number | null) => void;\n /** When provided, shows an \"Insert\" button that emits the result for an editor. */\n onInsert?: (payload: InsertPayload) => void;\n /**\n * Which verb the result button performs. Defaults to `'insert'`.\n * Use `'copy'` in an app-shell surface (no editor to insert into) — the\n * button writes the result to the clipboard as a multi-format `ClipboardItem`.\n */\n insertVariant?: InsertVariant;\n /** `copy` variant only — fired after a successful clipboard write. */\n onCopy?: (mode: InsertMode) => void;\n /** `copy` variant only — fired if the clipboard write can't proceed. */\n onError?: (error: unknown) => void;\n /**\n * Brand wordmark printed in the inserted/copied result-card footer.\n * Omitted → no brand line (and no footer hairline); a string → that custom\n * brand; `false` → no brand line. Brand is opt-in.\n */\n insertBrand?: string | false;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n /** Extra class names on the wrapper. */\n className?: string;\n}\n\n/**\n * Curated imperative handle for agent / external automation. Reads/writes the\n * structural inputs (category, value, from/to units) and the converted result.\n * No patient identity. Consumed by the `unit-converter.agent.ts` adapter; the\n * public `ref` stays the DOM element.\n */\nexport interface UnitConverterHandle {\n /** Active measurement family. */\n getCategory: () => UnitCategory;\n /** Switch the measurement family (resets from/to units to that category). */\n setCategory: (next: UnitCategory) => void;\n /** Source value + from/to unit ids. */\n getInputs: () => { value: number | null; fromId: string; toId: string };\n /** Set the source value to convert. */\n setValue: (value: number | null) => void;\n /** Set from-unit and/or to-unit (ids outside the active category are ignored). */\n setUnits: (next: { fromId?: string; toId?: string }) => void;\n /** Converted value in the to-unit, or null when no source value is set. */\n getResult: () => number | null;\n}\n\nexport const UnitConverter = forwardRef<HTMLDivElement, UnitConverterProps>(\n (\n {\n defaultCategory = 'weight',\n onResultChange,\n onInsert,\n insertVariant = 'insert',\n onCopy,\n onError,\n insertBrand,\n id,\n width,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n const [category, setCategory] = useState<UnitCategory>(defaultCategory);\n const [value, setValue] = useState<number | null>(null);\n const [fromId, setFromId] = useState<string>(\n UNITS_BY_CATEGORY[defaultCategory][0],\n );\n const [toId, setToId] = useState<string>(\n UNITS_BY_CATEGORY[defaultCategory][1],\n );\n\n const handleCategoryChange = (next: string): void => {\n const cat = next as UnitCategory;\n const units = UNITS_BY_CATEGORY[cat];\n setCategory(cat);\n setFromId(units[0]);\n setToId(units[1] ?? units[0]);\n };\n\n const converted = useMemo(\n () => (value === null ? null : convertUnits(value, fromId, toId)),\n [value, fromId, toId],\n );\n\n const numberFmt = useMemo(\n () => new Intl.NumberFormat(i18n.language, { maximumFractionDigits: 3 }),\n [i18n.language],\n );\n\n useEffect(() => {\n onResultChange?.(converted);\n }, [converted, onResultChange]);\n\n // Live refs so the once-built agent handle reads/writes current state\n // without re-creating on every keystroke. Public `ref` stays the DOM node.\n const liveRef = useRef({ category, value, fromId, toId, converted });\n liveRef.current = { category, value, fromId, toId, converted };\n const agentHandle = useMemo<UnitConverterHandle>(\n () => ({\n getCategory: () => liveRef.current.category,\n setCategory: (next) => handleCategoryChange(next),\n getInputs: () => ({\n value: liveRef.current.value,\n fromId: liveRef.current.fromId,\n toId: liveRef.current.toId,\n }),\n setValue: (next) => setValue(next),\n setUnits: (next) => {\n const units = UNITS_BY_CATEGORY[liveRef.current.category];\n if (next.fromId !== undefined && units.includes(next.fromId)) {\n setFromId(next.fromId);\n }\n if (next.toId !== undefined && units.includes(next.toId)) {\n setToId(next.toId);\n }\n },\n getResult: () => liveRef.current.converted,\n }),\n [],\n );\n useAgentRegistration(unitConverterAgent, agentHandle, id);\n\n const categoryOptions = CATEGORIES.map((c) => ({\n value: c,\n label: t(`unitConverter.category.${c}`),\n }));\n const unitOptions = UNITS_BY_CATEGORY[category].map((u) => ({\n value: u,\n label: t(`unitConverter.units.${u}`),\n }));\n\n return (\n <div\n ref={ref}\n data-component=\"unit-converter\"\n data-component-id={id}\n className={rootVariants({ width, className })}\n >\n <FormField label={t('unitConverter.categoryLabel')}>\n <Select\n options={categoryOptions}\n value={category}\n onValueChange={handleCategoryChange}\n />\n </FormField>\n\n <div className=\"ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)] ds:sm:grid-cols-3\">\n <FormField label={t('unitConverter.value')}>\n <NumberInput mode=\"decimal\" value={value} onChange={setValue} />\n </FormField>\n <FormField label={t('unitConverter.from')}>\n <Select\n options={unitOptions}\n value={fromId}\n onValueChange={setFromId}\n />\n </FormField>\n <FormField label={t('unitConverter.to')}>\n <Select\n options={unitOptions}\n value={toId}\n onValueChange={setToId}\n />\n </FormField>\n </div>\n\n <p className=\"ds:sr-only\" role=\"status\" aria-live=\"polite\">\n {converted !== null\n ? `${numberFmt.format(value ?? 0)} ${t(\n `unitConverter.units.${fromId}`,\n )} = ${numberFmt.format(converted)} ${t(\n `unitConverter.units.${toId}`,\n )}`\n : ''}\n </p>\n\n {converted !== null ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <span className=\"type-label ds:text-muted-foreground\">\n {t('unitConverter.result')}\n </span>\n <span className=\"type-metric ds:text-foreground\">\n {numberFmt.format(converted)} {t(`unitConverter.units.${toId}`)}\n </span>\n {insertVariant === 'copy' || onInsert ? (\n <InsertButton\n variant={insertVariant}\n onInsert={onInsert}\n onCopy={onCopy}\n onError={onError}\n card={{\n title: t('insert.title.unitConverter'),\n icon: 'ruler',\n highlight: t(`unitConverter.category.${category}`),\n // Chip tints by measurement family so the inserted card\n // signals the category at a glance — with the contrast-safe\n // orange override for the `--warning` temperature family.\n highlightToken: categoryHighlightToken(category),\n brand: insertBrand,\n fields: [\n {\n // Source measurement → ruler glyph (matches the header).\n icon: 'ruler',\n label: t('unitConverter.from'),\n value: `${numberFmt.format(value ?? 0)} ${t(\n `unitConverter.units.${fromId}`,\n )}`,\n },\n {\n // Converted result → trending-up (arrow) glyph signals the\n // conversion direction to the output value.\n icon: 'trending-up',\n label: t('unitConverter.to'),\n value: `${numberFmt.format(converted)} ${t(\n `unitConverter.units.${toId}`,\n )}`,\n },\n ],\n }}\n />\n ) : null}\n </div>\n ) : (\n <p className=\"type-body ds:text-muted-foreground\">\n {t('unitConverter.empty')}\n </p>\n )}\n </div>\n );\n },\n);\n\nUnitConverter.displayName = 'UnitConverter';\n"],"names":["CATEGORIES","unitConverterAgent","handle","args","UNITS","UNITS_BY_CATEGORY","convertUnits","value","fromId","toId","from","to","rootVariants","cva","CATEGORY_HIGHLIGHT_TOKEN","categoryHighlightToken","category","UnitConverter","forwardRef","defaultCategory","onResultChange","onInsert","insertVariant","onCopy","onError","insertBrand","id","width","className","ref","t","i18n","useTranslation","setCategory","useState","setValue","setFromId","setToId","handleCategoryChange","next","cat","units","converted","useMemo","numberFmt","useEffect","liveRef","useRef","agentHandle","useAgentRegistration","categoryOptions","c","unitOptions","u","jsxs","jsx","FormField","Select","NumberInput","InsertButton"],"mappings":"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"}