@alfadocs/ui-kit-debug 0.63.0 → 0.65.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 (445) hide show
  1. package/dist/_chunks/{agenda-tray-DA6qj8BL.js → agenda-tray-Bh1KfEOG.js} +2 -2
  2. package/dist/_chunks/{agenda-tray-DA6qj8BL.js.map → agenda-tray-Bh1KfEOG.js.map} +1 -1
  3. package/dist/_chunks/{ai-consent-banner-DBKV27je.js → ai-consent-banner-Btzmk8OH.js} +3 -2
  4. package/dist/_chunks/{ai-consent-banner-DBKV27je.js.map → ai-consent-banner-Btzmk8OH.js.map} +1 -1
  5. package/dist/_chunks/{ai-prompt-input-C6sCr1Vi.js → ai-prompt-input-BwEACCPm.js} +3 -3
  6. package/dist/_chunks/{ai-prompt-input-C6sCr1Vi.js.map → ai-prompt-input-BwEACCPm.js.map} +1 -1
  7. package/dist/_chunks/{ai-tools-rail-7tC3GT4h.js → ai-tools-rail-JnlTqfS4.js} +2 -2
  8. package/dist/_chunks/{ai-tools-rail-7tC3GT4h.js.map → ai-tools-rail-JnlTqfS4.js.map} +1 -1
  9. package/dist/_chunks/{alia-sidebar-DlvyXgVC.js → alia-sidebar-CN8pA6c-.js} +7 -7
  10. package/dist/_chunks/{alia-sidebar-DlvyXgVC.js.map → alia-sidebar-CN8pA6c-.js.map} +1 -1
  11. package/dist/_chunks/{anamnesis-card-CmkBVAln.js → anamnesis-card-qeLYRG79.js} +2 -2
  12. package/dist/_chunks/{anamnesis-card-CmkBVAln.js.map → anamnesis-card-qeLYRG79.js.map} +1 -1
  13. package/dist/_chunks/{antenatal-schedule-timeline-CdiqkF05.js → antenatal-schedule-timeline-BfzFjEyb.js} +3 -3
  14. package/dist/_chunks/{antenatal-schedule-timeline-CdiqkF05.js.map → antenatal-schedule-timeline-BfzFjEyb.js.map} +1 -1
  15. package/dist/_chunks/{appointment-tray-BwDHhWWC.js → appointment-tray-BQnJEora.js} +2 -2
  16. package/dist/_chunks/{appointment-tray-BwDHhWWC.js.map → appointment-tray-BQnJEora.js.map} +1 -1
  17. package/dist/_chunks/{ar-C68WKG5a.js → ar-Cn5Fq48Z.js} +2 -2
  18. package/dist/_chunks/{ar-C68WKG5a.js.map → ar-Cn5Fq48Z.js.map} +1 -1
  19. package/dist/_chunks/{audio-recorder-D6OVfNiZ.js → audio-recorder-DjXLP4aF.js} +3 -3
  20. package/dist/_chunks/{audio-recorder-D6OVfNiZ.js.map → audio-recorder-DjXLP4aF.js.map} +1 -1
  21. package/dist/_chunks/{autocomplete-CDqxB68B.js → autocomplete-CcCFlVf-.js} +4 -4
  22. package/dist/_chunks/{autocomplete-CDqxB68B.js.map → autocomplete-CcCFlVf-.js.map} +1 -1
  23. package/dist/_chunks/{bishop-score-B9tvgoIq.js → bishop-score-x2fNqbuZ.js} +3 -3
  24. package/dist/_chunks/{bishop-score-B9tvgoIq.js.map → bishop-score-x2fNqbuZ.js.map} +1 -1
  25. package/dist/_chunks/{bmi-calculator-DA2NGmVK.js → bmi-calculator-C3roxbqD.js} +2 -2
  26. package/dist/_chunks/{bmi-calculator-DA2NGmVK.js.map → bmi-calculator-C3roxbqD.js.map} +1 -1
  27. package/dist/_chunks/{booking-BUV9fspj.js → booking-L8-YP8BJ.js} +149 -149
  28. package/dist/_chunks/booking-L8-YP8BJ.js.map +1 -0
  29. package/dist/_chunks/calendar-B6soK1Yb.js +17 -0
  30. package/dist/_chunks/calendar-B6soK1Yb.js.map +1 -0
  31. package/dist/_chunks/{calendar-CkuJIg3s.js → calendar-oYWOCrnf.js} +1 -1
  32. package/dist/_chunks/{calendar-CkuJIg3s.js.map → calendar-oYWOCrnf.js.map} +1 -1
  33. package/dist/_chunks/{care-plan-card-QmNpGggC.js → care-plan-card-D42WD4-T.js} +2 -2
  34. package/dist/_chunks/{care-plan-card-QmNpGggC.js.map → care-plan-card-D42WD4-T.js.map} +1 -1
  35. package/dist/_chunks/{care-plan-entry-card-Cnra7vUc.js → care-plan-entry-card-BukNI7Uy.js} +2 -2
  36. package/dist/_chunks/{care-plan-entry-card-Cnra7vUc.js.map → care-plan-entry-card-BukNI7Uy.js.map} +1 -1
  37. package/dist/_chunks/{carousel.agent-DrX96W-1.js → carousel.agent-vt21A_el.js} +2 -2
  38. package/dist/_chunks/{carousel.agent-DrX96W-1.js.map → carousel.agent-vt21A_el.js.map} +1 -1
  39. package/dist/_chunks/{chat-input-CFwc7JxL.js → chat-input-B5zjNEUN.js} +2 -2
  40. package/dist/_chunks/{chat-input-CFwc7JxL.js.map → chat-input-B5zjNEUN.js.map} +1 -1
  41. package/dist/_chunks/{chat-message-Dm8U2RY1.js → chat-message-3V54YipB.js} +2 -2
  42. package/dist/_chunks/{chat-message-Dm8U2RY1.js.map → chat-message-3V54YipB.js.map} +1 -1
  43. package/dist/_chunks/{code-block-HoddNOKJ.js → code-block-BBWHhIc8.js} +2 -2
  44. package/dist/_chunks/{code-block-HoddNOKJ.js.map → code-block-BBWHhIc8.js.map} +1 -1
  45. package/dist/_chunks/{contact-profile-card-DvvVfAA2.js → contact-profile-card-CCeJmjbd.js} +2 -2
  46. package/dist/_chunks/{contact-profile-card-DvvVfAA2.js.map → contact-profile-card-CCeJmjbd.js.map} +1 -1
  47. package/dist/_chunks/{cycle-calculator-C_t1Hs8V.js → cycle-calculator-DrVXbIB4.js} +4 -4
  48. package/dist/_chunks/{cycle-calculator-C_t1Hs8V.js.map → cycle-calculator-DrVXbIB4.js.map} +1 -1
  49. package/dist/_chunks/{date-picker-BfHblqwA.js → date-picker-oGg5BnXL.js} +12 -11
  50. package/dist/_chunks/{date-picker-BfHblqwA.js.map → date-picker-oGg5BnXL.js.map} +1 -1
  51. package/dist/_chunks/{date-picker-variants-CXEAx3O_.js → date-picker-variants-DAcSLTua.js} +358 -372
  52. package/dist/_chunks/date-picker-variants-DAcSLTua.js.map +1 -0
  53. package/dist/_chunks/{date-range-picker-hcAMs1wO.js → date-range-picker-C5BWfH_T.js} +34 -25
  54. package/dist/_chunks/{date-range-picker-hcAMs1wO.js.map → date-range-picker-C5BWfH_T.js.map} +1 -1
  55. package/dist/_chunks/{date-time-picker-H-3Pwqlb.js → date-time-picker-Ze1My59T.js} +18 -17
  56. package/dist/_chunks/{date-time-picker-H-3Pwqlb.js.map → date-time-picker-Ze1My59T.js.map} +1 -1
  57. package/dist/_chunks/{de-DK4A9_a8.js → de-CrJs4ZsX.js} +2 -2
  58. package/dist/_chunks/{de-DK4A9_a8.js.map → de-CrJs4ZsX.js.map} +1 -1
  59. package/dist/_chunks/{description-list-BEbK2g93.js → description-list-gkNGWk5G.js} +2 -2
  60. package/dist/_chunks/{description-list-BEbK2g93.js.map → description-list-gkNGWk5G.js.map} +1 -1
  61. package/dist/_chunks/{due-date-calculator-Q8MIwEVV.js → due-date-calculator-D4K1BnE2.js} +4 -4
  62. package/dist/_chunks/{due-date-calculator-Q8MIwEVV.js.map → due-date-calculator-D4K1BnE2.js.map} +1 -1
  63. package/dist/_chunks/{editable-currency-cell-renderer-D5C5tCfu.js → editable-currency-cell-renderer-CFqQc56y.js} +305 -295
  64. package/dist/_chunks/editable-currency-cell-renderer-CFqQc56y.js.map +1 -0
  65. package/dist/_chunks/editor-overlay-wYm22wZK.js +88 -0
  66. package/dist/_chunks/editor-overlay-wYm22wZK.js.map +1 -0
  67. package/dist/_chunks/{el-B29HXhG5.js → el-DHdMOIhL.js} +6 -6
  68. package/dist/_chunks/{el-B29HXhG5.js.map → el-DHdMOIhL.js.map} +1 -1
  69. package/dist/_chunks/{es-BOwPVwWn.js → es-DCATCfqo.js} +2 -2
  70. package/dist/_chunks/{es-BOwPVwWn.js.map → es-DCATCfqo.js.map} +1 -1
  71. package/dist/_chunks/{fetal-weight-D1a6BmM-.js → fetal-weight-B_pBjlO7.js} +2 -2
  72. package/dist/_chunks/{fetal-weight-D1a6BmM-.js.map → fetal-weight-B_pBjlO7.js.map} +1 -1
  73. package/dist/_chunks/{fiscal-code-input-BZ0FxwUl.js → fiscal-code-input-DPtqluVb.js} +2 -2
  74. package/dist/_chunks/{fiscal-code-input-BZ0FxwUl.js.map → fiscal-code-input-DPtqluVb.js.map} +1 -1
  75. package/dist/_chunks/{fr-DoDBtn0T.js → fr-BfGEMshF.js} +2 -2
  76. package/dist/_chunks/{fr-DoDBtn0T.js.map → fr-BfGEMshF.js.map} +1 -1
  77. package/dist/_chunks/{freemium-paywall-gHGA44dW.js → freemium-paywall-CkWjv3o6.js} +2 -2
  78. package/dist/_chunks/{freemium-paywall-gHGA44dW.js.map → freemium-paywall-CkWjv3o6.js.map} +1 -1
  79. package/dist/_chunks/{gestational-age-calculator-AkNFfZYs.js → gestational-age-calculator-BETQAVkA.js} +7 -7
  80. package/dist/_chunks/{gestational-age-calculator-AkNFfZYs.js.map → gestational-age-calculator-BETQAVkA.js.map} +1 -1
  81. package/dist/_chunks/{hcg-doubling-Dg0Hr7ey.js → hcg-doubling-8zXCJgAQ.js} +3 -3
  82. package/dist/_chunks/{hcg-doubling-Dg0Hr7ey.js.map → hcg-doubling-8zXCJgAQ.js.map} +1 -1
  83. package/dist/_chunks/{header-Ce1Br27u.js → header-CNszv2WQ.js} +2 -2
  84. package/dist/_chunks/{header-Ce1Br27u.js.map → header-CNszv2WQ.js.map} +1 -1
  85. package/dist/_chunks/{header-settings-D5Z2B_Yz.js → header-settings-CNOqIhoW.js} +3 -3
  86. package/dist/_chunks/{header-settings-D5Z2B_Yz.js.map → header-settings-CNOqIhoW.js.map} +1 -1
  87. package/dist/_chunks/{hi-DGByrKby.js → hi-CBFRXEIm.js} +2 -2
  88. package/dist/_chunks/{hi-DGByrKby.js.map → hi-CBFRXEIm.js.map} +1 -1
  89. package/dist/_chunks/icon-button-LqoiKcUN.js +78 -0
  90. package/dist/_chunks/icon-button-LqoiKcUN.js.map +1 -0
  91. package/dist/_chunks/{insert-result-C1SYdueh.js → insert-result-DIAG3ltJ.js} +115 -136
  92. package/dist/_chunks/insert-result-DIAG3ltJ.js.map +1 -0
  93. package/dist/_chunks/{isSameWeek-B1odL2vR.js → isSameWeek-I3DfXUp1.js} +2 -2
  94. package/dist/_chunks/{isSameWeek-B1odL2vR.js.map → isSameWeek-I3DfXUp1.js.map} +1 -1
  95. package/dist/_chunks/{it-B16rEecm.js → it-nz6vAKwG.js} +7 -7
  96. package/dist/_chunks/{it-B16rEecm.js.map → it-nz6vAKwG.js.map} +1 -1
  97. package/dist/_chunks/{ja-B0viOgft.js → ja-DQcqdAEJ.js} +2 -2
  98. package/dist/_chunks/{ja-B0viOgft.js.map → ja-DQcqdAEJ.js.map} +1 -1
  99. package/dist/_chunks/{key-value-pair-CkQIb9EG.js → key-value-pair-BrgbMfbF.js} +2 -2
  100. package/dist/_chunks/{key-value-pair-CkQIb9EG.js.map → key-value-pair-BrgbMfbF.js.map} +1 -1
  101. package/dist/_chunks/{locale-picker-D99UyZVJ.js → locale-picker-C9JmBht3.js} +3 -3
  102. package/dist/_chunks/{locale-picker-D99UyZVJ.js.map → locale-picker-C9JmBht3.js.map} +1 -1
  103. package/dist/_chunks/{marketplace-app-shell-C4OYAC22.js → marketplace-app-shell-BXfRMiRk.js} +4 -4
  104. package/dist/_chunks/{marketplace-app-shell-C4OYAC22.js.map → marketplace-app-shell-BXfRMiRk.js.map} +1 -1
  105. package/dist/_chunks/{message-card-Dvl1TgaN.js → message-card-Bgcvfj6-.js} +2 -2
  106. package/dist/_chunks/{message-card-Dvl1TgaN.js.map → message-card-Bgcvfj6-.js.map} +1 -1
  107. package/dist/_chunks/{message-tray-Dl6GQaaV.js → message-tray-saAVMeHP.js} +3 -3
  108. package/dist/_chunks/{message-tray-Dl6GQaaV.js.map → message-tray-saAVMeHP.js.map} +1 -1
  109. package/dist/_chunks/{multi-select-DOLO3K_z.js → multi-select-BcPylvHR.js} +100 -90
  110. package/dist/_chunks/multi-select-BcPylvHR.js.map +1 -0
  111. package/dist/_chunks/{nl-cBxEX2QU.js → nl-L5SuDjyl.js} +2 -2
  112. package/dist/_chunks/{nl-cBxEX2QU.js.map → nl-L5SuDjyl.js.map} +1 -1
  113. package/dist/_chunks/{notification-card-CObnGdJu.js → notification-card-BiESdm8q.js} +2 -2
  114. package/dist/_chunks/{notification-card-CObnGdJu.js.map → notification-card-BiESdm8q.js.map} +1 -1
  115. package/dist/_chunks/{notification-tray-BWHDIjgd.js → notification-tray-DlgenTEe.js} +3 -3
  116. package/dist/_chunks/{notification-tray-BWHDIjgd.js.map → notification-tray-DlgenTEe.js.map} +1 -1
  117. package/dist/_chunks/{patient-search-CArmRKeg.js → patient-search-Bw9ONucF.js} +2 -2
  118. package/dist/_chunks/{patient-search-CArmRKeg.js.map → patient-search-Bw9ONucF.js.map} +1 -1
  119. package/dist/_chunks/{patient-shell-Coarf346.js → patient-shell-CF_qon7C.js} +3 -3
  120. package/dist/_chunks/{patient-shell-Coarf346.js.map → patient-shell-CF_qon7C.js.map} +1 -1
  121. package/dist/_chunks/{patient-summary-card-BnTqxcTr.js → patient-summary-card-Bgso0p_l.js} +2 -2
  122. package/dist/_chunks/{patient-summary-card-BnTqxcTr.js.map → patient-summary-card-Bgso0p_l.js.map} +1 -1
  123. package/dist/_chunks/{payment-form-DJ9vnzrT.js → payment-form-nXocS_MX.js} +11 -4
  124. package/dist/_chunks/{payment-form-DJ9vnzrT.js.map → payment-form-nXocS_MX.js.map} +1 -1
  125. package/dist/_chunks/{payment-request-card-B_lyobd0.js → payment-request-card-DBz3hVDz.js} +3 -3
  126. package/dist/_chunks/{payment-request-card-B_lyobd0.js.map → payment-request-card-DBz3hVDz.js.map} +1 -1
  127. package/dist/_chunks/{pdf-viewer-chMpwpA4.js → pdf-viewer-GsfNqeeT.js} +3 -3
  128. package/dist/_chunks/pdf-viewer-GsfNqeeT.js.map +1 -0
  129. package/dist/_chunks/{periodontal-chart-card-BYs9hax1.js → periodontal-chart-card-AYyHtU9K.js} +2 -2
  130. package/dist/_chunks/{periodontal-chart-card-BYs9hax1.js.map → periodontal-chart-card-AYyHtU9K.js.map} +1 -1
  131. package/dist/_chunks/phone-input-DVXhNlIl.js +563 -0
  132. package/dist/_chunks/phone-input-DVXhNlIl.js.map +1 -0
  133. package/dist/_chunks/{pl-DtS08ioY.js → pl-YAn5z2wR.js} +3 -3
  134. package/dist/_chunks/{pl-DtS08ioY.js.map → pl-YAn5z2wR.js.map} +1 -1
  135. package/dist/_chunks/{popover-Devce-tT.js → popover-DTbfAuR0.js} +2 -2
  136. package/dist/_chunks/{popover-Devce-tT.js.map → popover-DTbfAuR0.js.map} +1 -1
  137. package/dist/_chunks/{practice-results-CtfciF2v.js → practice-results-CVAgY2RZ.js} +3 -3
  138. package/dist/_chunks/{practice-results-CtfciF2v.js.map → practice-results-CVAgY2RZ.js.map} +1 -1
  139. package/dist/_chunks/{pregnancy-dating-Dg6dTe1p.js → pregnancy-dating-BuzLTwjy.js} +7 -7
  140. package/dist/_chunks/{pregnancy-dating-Dg6dTe1p.js.map → pregnancy-dating-BuzLTwjy.js.map} +1 -1
  141. package/dist/_chunks/{pregnancy-weight-gain-DI7X-0JX.js → pregnancy-weight-gain-aicn7qs7.js} +2 -2
  142. package/dist/_chunks/{pregnancy-weight-gain-DI7X-0JX.js.map → pregnancy-weight-gain-aicn7qs7.js.map} +1 -1
  143. package/dist/_chunks/{privacy-lock-BN3L-alb.js → privacy-lock-C7JyMf0y.js} +2 -2
  144. package/dist/_chunks/{privacy-lock-BN3L-alb.js.map → privacy-lock-C7JyMf0y.js.map} +1 -1
  145. package/dist/_chunks/{product-hub-panel-CkfZBA3t.js → product-hub-panel-CAXDFeGP.js} +2 -2
  146. package/dist/_chunks/{product-hub-panel-CkfZBA3t.js.map → product-hub-panel-CAXDFeGP.js.map} +1 -1
  147. package/dist/_chunks/{pt-yFXs1VvH.js → pt-D9xdT5KQ.js} +6 -6
  148. package/dist/_chunks/{pt-yFXs1VvH.js.map → pt-D9xdT5KQ.js.map} +1 -1
  149. package/dist/_chunks/{public-header.agent-CYQK6T6F.js → public-header.agent-BOhJgZEU.js} +3 -3
  150. package/dist/_chunks/{public-header.agent-CYQK6T6F.js.map → public-header.agent-BOhJgZEU.js.map} +1 -1
  151. package/dist/_chunks/{reviews-panel-CPrXu5TX.js → reviews-panel-DBktKm7i.js} +2 -2
  152. package/dist/_chunks/{reviews-panel-CPrXu5TX.js.map → reviews-panel-DBktKm7i.js.map} +1 -1
  153. package/dist/_chunks/rich-text-editor-u36FqSWz.js +1190 -0
  154. package/dist/_chunks/rich-text-editor-u36FqSWz.js.map +1 -0
  155. package/dist/_chunks/{ro-DsCzSrzR.js → ro-Cp--52bT.js} +2 -2
  156. package/dist/_chunks/{ro-DsCzSrzR.js.map → ro-Cp--52bT.js.map} +1 -1
  157. package/dist/_chunks/{ru-DgDxL0pc.js → ru-BM8eX_Zz.js} +3 -3
  158. package/dist/_chunks/{ru-DgDxL0pc.js.map → ru-BM8eX_Zz.js.map} +1 -1
  159. package/dist/_chunks/{search-bar-CvN_S0jW.js → search-bar-SY2BcV2N.js} +2 -2
  160. package/dist/_chunks/{search-bar-CvN_S0jW.js.map → search-bar-SY2BcV2N.js.map} +1 -1
  161. package/dist/_chunks/{search-input-D3aMvi4l.js → search-input-DbxrnHkW.js} +3 -3
  162. package/dist/_chunks/{search-input-D3aMvi4l.js.map → search-input-DbxrnHkW.js.map} +1 -1
  163. package/dist/_chunks/{select-hsCaJSX3.js → select-CEtRcon5.js} +46 -45
  164. package/dist/_chunks/select-CEtRcon5.js.map +1 -0
  165. package/dist/_chunks/{sheet-xbzu4YiY.js → sheet-taJer-Ha.js} +2 -2
  166. package/dist/_chunks/{sheet-xbzu4YiY.js.map → sheet-taJer-Ha.js.map} +1 -1
  167. package/dist/_chunks/{sign-document--nr5cxsB.js → sign-document-CdAiHiCh.js} +2 -2
  168. package/dist/_chunks/{sign-document--nr5cxsB.js.map → sign-document-CdAiHiCh.js.map} +1 -1
  169. package/dist/_chunks/{sign-in-with-alfadocs-button-BpAjVmsI.js → sign-in-with-alfadocs-button-LppxjlFt.js} +2 -2
  170. package/dist/_chunks/{sign-in-with-alfadocs-button-BpAjVmsI.js.map → sign-in-with-alfadocs-button-LppxjlFt.js.map} +1 -1
  171. package/dist/_chunks/{signature-field-DbhbpLha.js → signature-field-Dy1JRjzE.js} +10 -3
  172. package/dist/_chunks/{signature-field-DbhbpLha.js.map → signature-field-Dy1JRjzE.js.map} +1 -1
  173. package/dist/_chunks/{slot-grid-BlHHP9Qy.js → slot-grid-FsqumOaS.js} +2 -2
  174. package/dist/_chunks/{slot-grid-BlHHP9Qy.js.map → slot-grid-FsqumOaS.js.map} +1 -1
  175. package/dist/_chunks/smart-date-CWikAqZx.js +114 -0
  176. package/dist/_chunks/smart-date-CWikAqZx.js.map +1 -0
  177. package/dist/_chunks/{social-sign-in-button-uJYLM366.js → social-sign-in-button-dlpPI5l7.js} +2 -2
  178. package/dist/_chunks/{social-sign-in-button-uJYLM366.js.map → social-sign-in-button-dlpPI5l7.js.map} +1 -1
  179. package/dist/_chunks/{spinner-OjQNn8oN.js → spinner-hbwuKwMf.js} +10 -10
  180. package/dist/_chunks/{spinner-OjQNn8oN.js.map → spinner-hbwuKwMf.js.map} +1 -1
  181. package/dist/_chunks/{sq-DHlCYN67.js → sq-XRpr0r49.js} +6 -6
  182. package/dist/_chunks/{sq-DHlCYN67.js.map → sq-XRpr0r49.js.map} +1 -1
  183. package/dist/_chunks/{streaming-text-CfhDqtIT.js → streaming-text-BB9mvK4m.js} +2 -2
  184. package/dist/_chunks/{streaming-text-CfhDqtIT.js.map → streaming-text-BB9mvK4m.js.map} +1 -1
  185. package/dist/_chunks/subDays-BcYv1Lxi.js +8 -0
  186. package/dist/_chunks/{subDays-Bs00akhK.js.map → subDays-BcYv1Lxi.js.map} +1 -1
  187. package/dist/_chunks/{sv-O0QaQs_s.js → sv-Z3APomE8.js} +2 -2
  188. package/dist/_chunks/{sv-O0QaQs_s.js.map → sv-Z3APomE8.js.map} +1 -1
  189. package/dist/_chunks/{tabs-BpPYVme_.js → tabs-BIQ0ew1T.js} +2 -2
  190. package/dist/_chunks/{tabs-BpPYVme_.js.map → tabs-BIQ0ew1T.js.map} +1 -1
  191. package/dist/_chunks/{task-tray-Cb_hK4yb.js → task-tray-CAncV-QQ.js} +2 -2
  192. package/dist/_chunks/{task-tray-Cb_hK4yb.js.map → task-tray-CAncV-QQ.js.map} +1 -1
  193. package/dist/_chunks/{theme-toggle-DAW7uC0B.js → theme-toggle-DETmSu_h.js} +2 -2
  194. package/dist/_chunks/{theme-toggle-DAW7uC0B.js.map → theme-toggle-DETmSu_h.js.map} +1 -1
  195. package/dist/_chunks/{toast.agent-B0MCsvdZ.js → toast.agent-vuLRRn2a.js} +2 -2
  196. package/dist/_chunks/{toast.agent-B0MCsvdZ.js.map → toast.agent-vuLRRn2a.js.map} +1 -1
  197. package/dist/_chunks/tooth-scheme-BIx1O2aJ.js +1257 -0
  198. package/dist/_chunks/tooth-scheme-BIx1O2aJ.js.map +1 -0
  199. package/dist/_chunks/{tr-BmNDRuio.js → tr-e0-P4FON.js} +2 -2
  200. package/dist/_chunks/{tr-BmNDRuio.js.map → tr-e0-P4FON.js.map} +1 -1
  201. package/dist/_chunks/{transcript-panel-B4HiC7ed.js → transcript-panel-CLHmv83g.js} +2 -2
  202. package/dist/_chunks/{transcript-panel-B4HiC7ed.js.map → transcript-panel-CLHmv83g.js.map} +1 -1
  203. package/dist/_chunks/type-DZ5OMRA2.js +28 -0
  204. package/dist/_chunks/type-DZ5OMRA2.js.map +1 -0
  205. package/dist/_chunks/{unit-converter-3sINXO3m.js → unit-converter-CHN2cZ4b.js} +3 -3
  206. package/dist/_chunks/{unit-converter-3sINXO3m.js.map → unit-converter-CHN2cZ4b.js.map} +1 -1
  207. package/dist/_chunks/{wallet-pay-button-DuDPBlCO.js → wallet-pay-button--dnR6NfJ.js} +2 -2
  208. package/dist/_chunks/{wallet-pay-button-DuDPBlCO.js.map → wallet-pay-button--dnR6NfJ.js.map} +1 -1
  209. package/dist/_chunks/{workflow-map-BJDUNYlX.js → workflow-map-BX3JY1Bu.js} +3 -3
  210. package/dist/_chunks/{workflow-map-BJDUNYlX.js.map → workflow-map-BX3JY1Bu.js.map} +1 -1
  211. package/dist/_chunks/{zh-CN-CgVJZEzz.js → zh-CN-B-igM5gY.js} +3 -3
  212. package/dist/_chunks/{zh-CN-CgVJZEzz.js.map → zh-CN-B-igM5gY.js.map} +1 -1
  213. package/dist/agent-catalog.json +72 -4
  214. package/dist/components/agenda-tray/index.js +1 -1
  215. package/dist/components/ai-consent-banner/ai-consent-banner.d.ts.map +1 -1
  216. package/dist/components/ai-consent-banner/index.js +1 -1
  217. package/dist/components/ai-prompt-input/index.js +1 -1
  218. package/dist/components/ai-tools-rail/index.js +1 -1
  219. package/dist/components/anamnesis-card/index.js +1 -1
  220. package/dist/components/appointment-card/index.js +1 -1
  221. package/dist/components/audio-recorder/index.js +1 -1
  222. package/dist/components/autocomplete/index.js +1 -1
  223. package/dist/components/bishop-score/index.js +1 -1
  224. package/dist/components/bmi-calculator/index.js +1 -1
  225. package/dist/components/booking/details-form.d.ts.map +1 -1
  226. package/dist/components/booking/index.js +1 -1
  227. package/dist/components/button/icon-button.d.ts.map +1 -1
  228. package/dist/components/button/index.js +1 -1
  229. package/dist/components/calendar/index.js +1 -1
  230. package/dist/components/care-plan-card/index.js +1 -1
  231. package/dist/components/care-plan-entry-card/index.js +1 -1
  232. package/dist/components/carousel/index.js +1 -1
  233. package/dist/components/chat-input/index.js +1 -1
  234. package/dist/components/chat-message/index.js +1 -1
  235. package/dist/components/contact-profile-card/index.js +1 -1
  236. package/dist/components/cycle-calculator/index.js +1 -1
  237. package/dist/components/data-table/filters/date-range-filter.d.ts.map +1 -1
  238. package/dist/components/data-table/filters/select-filter.d.ts.map +1 -1
  239. package/dist/components/data-table/index.js +1 -1
  240. package/dist/components/date-picker/index.js +1 -1
  241. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  242. package/dist/components/date-range-picker/index.js +1 -1
  243. package/dist/components/date-time-picker/index.js +1 -1
  244. package/dist/components/description-list/index.js +1 -1
  245. package/dist/components/due-date-calculator/index.js +2 -2
  246. package/dist/components/editor-overlay/editor-overlay.d.ts +19 -0
  247. package/dist/components/editor-overlay/editor-overlay.d.ts.map +1 -0
  248. package/dist/components/editor-overlay/index.d.ts +3 -0
  249. package/dist/components/editor-overlay/index.d.ts.map +1 -0
  250. package/dist/components/editor-overlay/index.js +5 -0
  251. package/dist/components/editor-overlay/index.js.map +1 -0
  252. package/dist/components/fetal-weight/index.js +1 -1
  253. package/dist/components/fiscal-code-input/index.js +1 -1
  254. package/dist/components/freemium-paywall/index.js +1 -1
  255. package/dist/components/gestational-age-calculator/index.js +1 -1
  256. package/dist/components/hcg-doubling/index.js +1 -1
  257. package/dist/components/header/index.js +1 -1
  258. package/dist/components/header-settings/index.js +1 -1
  259. package/dist/components/icon-button/index.js +1 -1
  260. package/dist/components/index.d.ts +2 -0
  261. package/dist/components/index.d.ts.map +1 -1
  262. package/dist/components/key-value-pair/index.js +1 -1
  263. package/dist/components/locale-picker/index.js +1 -1
  264. package/dist/components/message-card/index.js +1 -1
  265. package/dist/components/message-tray/index.js +1 -1
  266. package/dist/components/multi-select/index.js +1 -1
  267. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  268. package/dist/components/notification-card/index.js +1 -1
  269. package/dist/components/notification-tray/index.js +1 -1
  270. package/dist/components/patient-search/index.js +1 -1
  271. package/dist/components/patient-summary-card/index.js +1 -1
  272. package/dist/components/payment-card/index.js +1 -1
  273. package/dist/components/payment-form/index.js +1 -1
  274. package/dist/components/payment-form/payment-form.d.ts.map +1 -1
  275. package/dist/components/pdf-viewer/index.js +1 -1
  276. package/dist/components/periodontal-chart-card/index.js +1 -1
  277. package/dist/components/phone-input/index.js +1 -1
  278. package/dist/components/phone-input/phone-input.d.ts +9 -0
  279. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  280. package/dist/components/popover/index.js +1 -1
  281. package/dist/components/practice-results/index.js +1 -1
  282. package/dist/components/pregnancy-dating/index.js +1 -1
  283. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  284. package/dist/components/privacy-lock/index.js +1 -1
  285. package/dist/components/product-hub-tray/index.js +1 -1
  286. package/dist/components/public-header/index.js +1 -1
  287. package/dist/components/reviews-panel/index.js +1 -1
  288. package/dist/components/rich-text-editor/editor-toolbar.d.ts +16 -0
  289. package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -0
  290. package/dist/components/rich-text-editor/help-me-write-overlay.d.ts +25 -0
  291. package/dist/components/rich-text-editor/help-me-write-overlay.d.ts.map +1 -0
  292. package/dist/components/rich-text-editor/index.js +1 -1
  293. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  294. package/dist/components/rich-text-editor/rich-text-editor.d.ts +43 -0
  295. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  296. package/dist/components/search-bar/index.js +1 -1
  297. package/dist/components/search-input/index.js +1 -1
  298. package/dist/components/select/index.js +1 -1
  299. package/dist/components/select/select.d.ts +8 -0
  300. package/dist/components/select/select.d.ts.map +1 -1
  301. package/dist/components/sheet/index.js +1 -1
  302. package/dist/components/sign-document/index.js +1 -1
  303. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  304. package/dist/components/signature-field/index.js +1 -1
  305. package/dist/components/signature-field/signature-field.d.ts.map +1 -1
  306. package/dist/components/slot-grid/index.js +1 -1
  307. package/dist/components/smart-date/index.d.ts +3 -0
  308. package/dist/components/smart-date/index.d.ts.map +1 -0
  309. package/dist/components/smart-date/index.js +5 -0
  310. package/dist/components/smart-date/index.js.map +1 -0
  311. package/dist/components/smart-date/smart-date.d.ts +32 -0
  312. package/dist/components/smart-date/smart-date.d.ts.map +1 -0
  313. package/dist/components/social-sign-in-button/index.js +1 -1
  314. package/dist/components/spinner/index.js +1 -1
  315. package/dist/components/streaming-text/index.js +1 -1
  316. package/dist/components/tabs/index.js +1 -1
  317. package/dist/components/task-tray/index.js +1 -1
  318. package/dist/components/theme-toggle/index.js +1 -1
  319. package/dist/components/toast/index.js +1 -1
  320. package/dist/components/tooth-scheme/index.d.ts +2 -2
  321. package/dist/components/tooth-scheme/index.d.ts.map +1 -1
  322. package/dist/components/tooth-scheme/index.js +22 -15
  323. package/dist/components/tooth-scheme/tooth-data.d.ts +79 -18
  324. package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
  325. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -0
  326. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  327. package/dist/components/tooth-scheme/tooth-scheme.d.ts +48 -1
  328. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  329. package/dist/components/transcript-panel/index.js +1 -1
  330. package/dist/components/unit-converter/index.js +1 -1
  331. package/dist/components/wallet-pay-button/index.js +1 -1
  332. package/dist/components/workflow/index.js +1 -1
  333. package/dist/i18n/locales/ar.d.ts +61 -0
  334. package/dist/i18n/locales/ar.d.ts.map +1 -1
  335. package/dist/i18n/locales/ar.js +63 -2
  336. package/dist/i18n/locales/ar.js.map +1 -1
  337. package/dist/i18n/locales/de.d.ts +61 -0
  338. package/dist/i18n/locales/de.d.ts.map +1 -1
  339. package/dist/i18n/locales/de.js +63 -2
  340. package/dist/i18n/locales/de.js.map +1 -1
  341. package/dist/i18n/locales/el.d.ts +61 -0
  342. package/dist/i18n/locales/el.d.ts.map +1 -1
  343. package/dist/i18n/locales/el.js +63 -2
  344. package/dist/i18n/locales/el.js.map +1 -1
  345. package/dist/i18n/locales/en.d.ts +61 -0
  346. package/dist/i18n/locales/en.d.ts.map +1 -1
  347. package/dist/i18n/locales/en.js +67 -2
  348. package/dist/i18n/locales/en.js.map +1 -1
  349. package/dist/i18n/locales/es.d.ts +61 -0
  350. package/dist/i18n/locales/es.d.ts.map +1 -1
  351. package/dist/i18n/locales/es.js +63 -2
  352. package/dist/i18n/locales/es.js.map +1 -1
  353. package/dist/i18n/locales/fr.d.ts +61 -0
  354. package/dist/i18n/locales/fr.d.ts.map +1 -1
  355. package/dist/i18n/locales/fr.js +63 -2
  356. package/dist/i18n/locales/fr.js.map +1 -1
  357. package/dist/i18n/locales/hi.d.ts +61 -0
  358. package/dist/i18n/locales/hi.d.ts.map +1 -1
  359. package/dist/i18n/locales/hi.js +63 -2
  360. package/dist/i18n/locales/hi.js.map +1 -1
  361. package/dist/i18n/locales/it.d.ts +61 -0
  362. package/dist/i18n/locales/it.d.ts.map +1 -1
  363. package/dist/i18n/locales/it.js +63 -2
  364. package/dist/i18n/locales/it.js.map +1 -1
  365. package/dist/i18n/locales/ja.d.ts +61 -0
  366. package/dist/i18n/locales/ja.d.ts.map +1 -1
  367. package/dist/i18n/locales/ja.js +63 -2
  368. package/dist/i18n/locales/ja.js.map +1 -1
  369. package/dist/i18n/locales/nl.d.ts +61 -0
  370. package/dist/i18n/locales/nl.d.ts.map +1 -1
  371. package/dist/i18n/locales/nl.js +63 -2
  372. package/dist/i18n/locales/nl.js.map +1 -1
  373. package/dist/i18n/locales/pl.d.ts +61 -0
  374. package/dist/i18n/locales/pl.d.ts.map +1 -1
  375. package/dist/i18n/locales/pl.js +63 -2
  376. package/dist/i18n/locales/pl.js.map +1 -1
  377. package/dist/i18n/locales/pt.d.ts +61 -0
  378. package/dist/i18n/locales/pt.d.ts.map +1 -1
  379. package/dist/i18n/locales/pt.js +63 -2
  380. package/dist/i18n/locales/pt.js.map +1 -1
  381. package/dist/i18n/locales/ro.d.ts +61 -0
  382. package/dist/i18n/locales/ro.d.ts.map +1 -1
  383. package/dist/i18n/locales/ro.js +63 -2
  384. package/dist/i18n/locales/ro.js.map +1 -1
  385. package/dist/i18n/locales/ru.d.ts +61 -0
  386. package/dist/i18n/locales/ru.d.ts.map +1 -1
  387. package/dist/i18n/locales/ru.js +63 -2
  388. package/dist/i18n/locales/ru.js.map +1 -1
  389. package/dist/i18n/locales/sq.d.ts +61 -0
  390. package/dist/i18n/locales/sq.d.ts.map +1 -1
  391. package/dist/i18n/locales/sq.js +63 -2
  392. package/dist/i18n/locales/sq.js.map +1 -1
  393. package/dist/i18n/locales/sv.d.ts +61 -0
  394. package/dist/i18n/locales/sv.d.ts.map +1 -1
  395. package/dist/i18n/locales/sv.js +63 -2
  396. package/dist/i18n/locales/sv.js.map +1 -1
  397. package/dist/i18n/locales/tr.d.ts +61 -0
  398. package/dist/i18n/locales/tr.d.ts.map +1 -1
  399. package/dist/i18n/locales/tr.js +63 -2
  400. package/dist/i18n/locales/tr.js.map +1 -1
  401. package/dist/i18n/locales/zh.d.ts +61 -0
  402. package/dist/i18n/locales/zh.d.ts.map +1 -1
  403. package/dist/i18n/locales/zh.js +63 -2
  404. package/dist/i18n/locales/zh.js.map +1 -1
  405. package/dist/index.js +511 -500
  406. package/dist/index.js.map +1 -1
  407. package/dist/locales/ar.json +63 -2
  408. package/dist/locales/de.json +63 -2
  409. package/dist/locales/el.json +63 -2
  410. package/dist/locales/en.json +63 -2
  411. package/dist/locales/es.json +63 -2
  412. package/dist/locales/fr.json +63 -2
  413. package/dist/locales/hi.json +63 -2
  414. package/dist/locales/it.json +63 -2
  415. package/dist/locales/ja.json +63 -2
  416. package/dist/locales/nl.json +63 -2
  417. package/dist/locales/pl.json +63 -2
  418. package/dist/locales/pt.json +63 -2
  419. package/dist/locales/ro.json +63 -2
  420. package/dist/locales/ru.json +63 -2
  421. package/dist/locales/sq.json +63 -2
  422. package/dist/locales/sv.json +63 -2
  423. package/dist/locales/tr.json +63 -2
  424. package/dist/locales/zh.json +63 -2
  425. package/dist/patterns/alia-assistant/index.js +1 -1
  426. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  427. package/dist/patterns/patient-shell/index.js +1 -1
  428. package/dist/tokens.css +36 -22
  429. package/package.json +10 -1
  430. package/dist/_chunks/booking-BUV9fspj.js.map +0 -1
  431. package/dist/_chunks/date-picker-variants-CXEAx3O_.js.map +0 -1
  432. package/dist/_chunks/editable-currency-cell-renderer-D5C5tCfu.js.map +0 -1
  433. package/dist/_chunks/icon-button-CKEOrN37.js +0 -70
  434. package/dist/_chunks/icon-button-CKEOrN37.js.map +0 -1
  435. package/dist/_chunks/insert-result-C1SYdueh.js.map +0 -1
  436. package/dist/_chunks/multi-select-DOLO3K_z.js.map +0 -1
  437. package/dist/_chunks/pdf-viewer-chMpwpA4.js.map +0 -1
  438. package/dist/_chunks/phone-input-DfZbPPvh.js +0 -525
  439. package/dist/_chunks/phone-input-DfZbPPvh.js.map +0 -1
  440. package/dist/_chunks/rich-text-editor-B03qM22-.js +0 -334
  441. package/dist/_chunks/rich-text-editor-B03qM22-.js.map +0 -1
  442. package/dist/_chunks/select-hsCaJSX3.js.map +0 -1
  443. package/dist/_chunks/subDays-Bs00akhK.js +0 -8
  444. package/dist/_chunks/tooth-scheme-CxlsLjfN.js +0 -753
  445. package/dist/_chunks/tooth-scheme-CxlsLjfN.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"message-tray-Dl6GQaaV.js","sources":["../../src/components/message-tray/message-tray.agent.ts","../../src/components/message-tray/message-tray.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — MessageTray. */\n/* */\n/* Tray-level surface: open/close the inbox panel, read message ids and */\n/* unread flag (never sender names / subjects / previews — those are */\n/* PHI), and route per-message operations through the curated handle. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { MessageTrayHandle } from './message-tray';\n\nexport const messageTrayAgent: AgentAdapter<MessageTrayHandle> = {\n id: 'message-tray',\n capabilities: ['open', 'close', 'select_single', 'dismiss'],\n state: {\n items: {\n type: 'Array<{ id: string; read: boolean }>',\n descriptionKey: 'ui.agent.messageTray.state.items',\n description:\n 'Currently-displayed messages. Ids + read flag only — no PHI / no sender names.',\n read: (handle) => handle.getItems(),\n },\n unreadCount: {\n type: 'number',\n descriptionKey: 'ui.agent.messageTray.state.unreadCount',\n description: 'Badge unread count surfaced by the host.',\n read: (handle) => handle.getUnreadCount(),\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.messageTray.state.isOpen',\n description: 'Whether the dropdown panel is currently open.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n descriptionKey: 'ui.agent.messageTray.actions.open',\n description: 'Open the message panel.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n descriptionKey: 'ui.agent.messageTray.actions.close',\n description: 'Close the message panel.',\n invoke: (handle) => {\n handle.close();\n },\n },\n select_item: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.messageTray.actions.selectItem',\n description: 'Activate the message with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n mark_read: {\n safety: 'write',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.messageTray.actions.markRead',\n description: 'Request the host to mark a message as read.',\n invoke: (handle, args: { id: string }) => {\n handle.markRead(args.id);\n },\n },\n dismiss: {\n safety: 'destructive',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.messageTray.actions.dismiss',\n description:\n 'Request the host to dismiss / archive the message with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.dismiss(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'message-tray',\n description: 'Marks the MessageTray 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 tray from the agent.',\n },\n item: {\n attr: 'data-message-id',\n description:\n 'Stable message id emitted on each rendered MessageCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { Mail } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Button } from '../button/button';\nimport { Separator } from '../separator/separator';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { MessageCard, type MessageItem } from '../message-card/message-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { messageTrayAgent } from './message-tray.agent';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * Curated imperative handle for MessageTray. Exposed as the forwardRef\n * target so a future agent / MCP UI bridge can drive the tray without\n * touching the DOM. See `message-tray.agent.ts`.\n */\nexport interface MessageTrayHandle {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n getItems: () => Array<{ id: string; read: boolean }>;\n getUnreadCount: () => number;\n selectItem: (id: string) => void;\n markRead: (id: string) => void;\n dismiss: (id: string) => void;\n}\n\nexport interface MessageTrayProps\n extends\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onClick' | 'children' | 'role' | 'id'\n >,\n VariantProps<typeof messageTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so\n * an agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n /** Fires when the host should mark a single message as read (used by agent integration). */\n onMarkRead?: (item: MessageItem) => void;\n /** Messages rendered in the dropdown panel. */\n items: MessageItem[];\n /** Number of unread messages. Drives the badge count. */\n unreadCount?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Fires when the open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Fires when the user activates an item (click or Enter/Space). */\n onItemClick?: (item: MessageItem) => void;\n /** Fires when the user dismisses / archives a message. */\n onDismiss?: (item: MessageItem) => void;\n /** Fires when the user clicks the header \"Mark all as read\" action. */\n onMarkAllRead?: () => void;\n /** When true the panel shows skeleton placeholders. */\n loading?: boolean;\n /**\n * Advisory item count before the list scrolls. Consumers override the cap\n * via the `--message-tray-max-block-size` custom property.\n */\n maxVisible?: number;\n /** When set renders a footer link that invokes `onViewAll`. */\n viewAllLabel?: string;\n /** Fires when the footer \"View all\" link is clicked. */\n onViewAll?: () => void;\n /** Panel alignment relative to the trigger. Default `'end'`. */\n align?: 'start' | 'center' | 'end';\n /** Side of the trigger to open on. Default `'bottom'`. */\n side?: 'top' | 'bottom';\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst messageTrayVariants = cva('ds:relative ds:inline-flex ds:items-center', {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nconst panelVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:border ds:border-[color:var(--card-border)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n // Width: fluid below the design cap so narrow viewports keep a visible\n // gutter on both sides (shadow included). Cap slightly wider than\n // NotificationTray because message rows carry subject + preview.\n 'ds:w-[min(26rem,calc(100vw-2*var(--spacing-md)))]',\n // Height: below the `sm` breakpoint the panel takes a near-full-screen\n // sheet shape so the user gets room to triage an inbox without\n // scrolling a tiny popover. `6rem` reserves space for the Header\n // (≈4rem) plus the sideOffset + collisionPadding (≈2rem). Above `sm`\n // it returns to `h-auto` so the list's own cap governs the height.\n 'ds:h-[calc(100dvh-6rem)] ds:sm:h-auto',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:focus-visible:outline-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-xs)]',\n md: 'ds:p-[var(--spacing-sm)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst badgeVariants = cva(\n [\n 'ds:absolute ds:-top-[var(--spacing-xs)] ds:-end-[var(--spacing-xs)]',\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-w-[calc(var(--spacing-md)+var(--spacing-xs))] ds:h-[calc(var(--spacing-md)+var(--spacing-xs))] ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[color:var(--destructive)] ds:text-[color:var(--destructive-foreground)]',\n 'ds:text-[length:var(--font-size-xs)] ds:font-semibold ds:leading-none',\n 'ds:pointer-events-none ds:select-none',\n 'ds:forced-colors:outline ds:forced-colors:outline-1 ds:forced-colors:outline-[CanvasText]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number, overflowLabel: string): string {\n return count > 99 ? overflowLabel : String(count);\n}\n\nfunction SkeletonRow() {\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\"\n >\n <Skeleton variant=\"circular\" size=\"sm\" />\n <div className=\"ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <Skeleton variant=\"text\" size=\"md\" width=\"60%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"80%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"95%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"30%\" />\n </div>\n </div>\n );\n}\n\nfunction EmptyPanel() {\n const { t } = useTranslation();\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:flex ds:flex-col ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-lg)] ds:text-center\"\n >\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:items-center ds:justify-center ds:size-10 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--muted)] ds:text-[color:var(--muted-foreground)] ds:[&>svg]:size-5\"\n >\n <Mail />\n </span>\n <p className=\"type-title-item ds:text-[color:var(--foreground)]\">\n {t('messageTray.noMessages', 'No messages')}\n </p>\n <p className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('messageTray.noMessagesDescription', 'Your inbox is clear.')}\n </p>\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const MessageTray = forwardRef<HTMLDivElement, MessageTrayProps>(\n (\n {\n id,\n items,\n unreadCount,\n open,\n onOpenChange,\n onItemClick,\n onDismiss,\n onMarkRead,\n onMarkAllRead,\n loading = false,\n maxVisible,\n viewAllLabel,\n onViewAll,\n align = 'end',\n side = 'bottom',\n size = 'md',\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const [isOpenRaw, handleOpenChange] = useControllableState<boolean>({\n value: open,\n defaultValue: false,\n onChange: onOpenChange,\n });\n const isOpen = isOpenRaw ?? false;\n\n /* Exit-animation list — same AnimatePresence-style bookkeeping as\n * NotificationTray. See that component for rationale. */\n type Displayed = { item: MessageItem; leaving: boolean };\n const [displayed, setDisplayed] = useState<Displayed[]>(() =>\n items.map((item) => ({ item, leaving: false })),\n );\n\n const animationDurationMs = useCallback((): number => {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n if (!raw) return 200;\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n setDisplayed((prev) => {\n const nextIds = new Set(items.map((i) => i.id));\n const prevIds = new Set(prev.map((d) => d.item.id));\n\n const merged: Displayed[] = prev.map((d) => {\n if (nextIds.has(d.item.id)) {\n const fresh = items.find((i) => i.id === d.item.id);\n return fresh\n ? { item: fresh, leaving: false }\n : { ...d, leaving: true };\n }\n return { ...d, leaving: true };\n });\n\n for (const i of items) {\n if (!prevIds.has(i.id)) merged.push({ item: i, leaving: false });\n }\n return merged;\n });\n }, [items]);\n\n useEffect(() => {\n if (!displayed.some((d) => d.leaving)) return;\n const ms = animationDurationMs();\n const timer = setTimeout(() => {\n setDisplayed((prev) => prev.filter((d) => !d.leaving));\n }, ms);\n return () => clearTimeout(timer);\n }, [displayed, animationDurationMs]);\n\n const liveRegionRef = useRef<HTMLDivElement | null>(null);\n const lastTopIdRef = useRef<string | undefined>(items[0]?.id);\n\n useEffect(() => {\n const topId = items[0]?.id;\n const prev = lastTopIdRef.current;\n if (prev && topId && prev !== topId && liveRegionRef.current) {\n const newest = items[0];\n if (newest && !newest.read) {\n liveRegionRef.current.textContent = t('messageTray.newMessage', {\n sender: newest.sender.name,\n defaultValue: 'New message from {{sender}}',\n });\n }\n }\n lastTopIdRef.current = topId;\n }, [items, t]);\n\n const displayCount = unreadCount ?? 0;\n const triggerAriaLabel =\n displayCount > 0\n ? t('messageTray.triggerLabel', {\n count: displayCount,\n defaultValue: 'Messages, {{count}} unread',\n })\n : t('messageTray.triggerLabelNone', 'Messages, none unread');\n\n const badgeLabel = formatBadgeCount(\n displayCount,\n t('messageTray.badgeCountOverflow', '99+'),\n );\n\n const panelClass = panelVariants({ size });\n\n /* Curated imperative handle for agent integration. See\n * message-tray.agent.ts. */\n const itemsRef = useRef<MessageItem[]>(items);\n itemsRef.current = items;\n const unreadRef = useRef<number | undefined>(unreadCount);\n unreadRef.current = unreadCount;\n const isOpenRef = useRef<boolean>(isOpen);\n isOpenRef.current = isOpen;\n\n const handle = useMemo<MessageTrayHandle>(\n () => ({\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n isOpen: () => isOpenRef.current,\n getItems: () =>\n itemsRef.current.map((i) => ({ id: i.id, read: !!i.read })),\n getUnreadCount: () =>\n unreadRef.current ?? itemsRef.current.filter((i) => !i.read).length,\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onItemClick?.(found);\n },\n markRead: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onMarkRead?.(found);\n },\n dismiss: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onDismiss?.(found);\n },\n }),\n [handleOpenChange, onItemClick, onMarkRead, onDismiss],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n useAgentRegistration(messageTrayAgent, handle, id);\n\n return (\n <div\n ref={rootRef}\n data-component=\"message-tray\"\n data-component-id={id}\n className={[messageTrayVariants({ size }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <RadixPopover.Root open={isOpen} onOpenChange={handleOpenChange}>\n <RadixPopover.Trigger asChild>\n <IconButton\n icon={<Mail />}\n intent=\"outline\"\n size={size === 'sm' ? 'sm' : 'md'}\n aria-label={triggerAriaLabel}\n aria-haspopup=\"dialog\"\n />\n </RadixPopover.Trigger>\n {displayCount > 0 ? (\n <span\n aria-hidden=\"true\"\n data-testid=\"message-tray-badge\"\n className={badgeVariants()}\n >\n {badgeLabel}\n </span>\n ) : null}\n <div\n ref={liveRegionRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n />\n <RadixPopover.Portal>\n <RadixPopover.Content\n role=\"dialog\"\n aria-label={t('messageTray.panelTitle', 'Messages')}\n side={side}\n align={align}\n sideOffset={8}\n // `spacing-md` (16px) keeps Radix's collision-avoidance from\n // flush-mounting the panel against the viewport edge when the\n // trigger is near the inline-end of a narrow screen.\n collisionPadding={16}\n className={panelClass}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]\">\n <h3 className=\"ds:m-0 type-title-card ds:text-[color:var(--foreground)]\">\n {t('messageTray.panelTitle', 'Messages')}\n </h3>\n {onMarkAllRead && items.some((item) => !item.read) ? (\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onMarkAllRead}\n className=\"ds:text-[length:var(--font-size-xs)]\"\n >\n {t('messageTray.markAllRead', 'Mark all as read')}\n </Button>\n ) : null}\n </div>\n <Separator />\n <div\n // Only carry `role=\"list\"` when there are list children —\n // axe's `aria-required-children` rule fires on an empty\n // list. The loading skeleton + populated rendering both\n // produce role=\"listitem\" descendants below.\n role={displayed.length > 0 ? 'list' : undefined}\n data-max-visible={maxVisible}\n // Below `sm` the panel is a near-full-screen sheet (see\n // `panelVariants`) and the list expands to fill the\n // remaining space with `flex-1`. Above `sm` the list\n // caps at the `--message-tray-max-block-size` custom\n // property so the popover stays compact.\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:overflow-y-auto ds:pt-[var(--spacing-xs)] ds:flex-1 ds:sm:flex-none ds:sm:[max-block-size:var(--message-tray-max-block-size,26rem)]\"\n >\n {loading ? (\n <>\n <SkeletonRow />\n <SkeletonRow />\n <SkeletonRow />\n </>\n ) : displayed.length === 0 ? (\n <EmptyPanel />\n ) : (\n displayed.map(({ item, leaving }) => (\n <MessageCard\n key={item.id}\n item={item}\n variant=\"compact\"\n leaving={leaving}\n onActivate={onItemClick}\n onDismiss={onDismiss}\n data-message-id={item.id}\n />\n ))\n )}\n </div>\n {viewAllLabel ? (\n <>\n <Separator />\n <div className=\"ds:pt-[var(--spacing-xs)]\">\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onViewAll}\n className=\"ds:w-full ds:justify-center\"\n >\n {viewAllLabel}\n </Button>\n </div>\n </>\n ) : null}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n </div>\n );\n },\n);\n\nMessageTray.displayName = 'MessageTray';\n"],"names":["messageTrayAgent","handle","args","messageTrayVariants","cva","panelVariants","badgeVariants","formatBadgeCount","count","overflowLabel","SkeletonRow","jsxs","jsx","Skeleton","EmptyPanel","t","useTranslation","Mail","MessageTray","forwardRef","id","items","unreadCount","open","onOpenChange","onItemClick","onDismiss","onMarkRead","onMarkAllRead","loading","maxVisible","viewAllLabel","onViewAll","align","side","size","className","rest","ref","isOpenRaw","handleOpenChange","useControllableState","isOpen","displayed","setDisplayed","useState","item","animationDurationMs","useCallback","raw","trimmed","useIsomorphicLayoutEffect","prev","nextIds","prevIds","d","merged","fresh","i","useEffect","ms","timer","liveRegionRef","useRef","lastTopIdRef","_a","topId","newest","displayCount","triggerAriaLabel","badgeLabel","panelClass","itemsRef","unreadRef","isOpenRef","useMemo","targetId","found","rootRef","useImperativeHandle","useAgentRegistration","RadixPopover","IconButton","Button","Separator","Fragment","leaving","MessageCard"],"mappings":"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"}
1
+ {"version":3,"file":"message-tray-saAVMeHP.js","sources":["../../src/components/message-tray/message-tray.agent.ts","../../src/components/message-tray/message-tray.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — MessageTray. */\n/* */\n/* Tray-level surface: open/close the inbox panel, read message ids and */\n/* unread flag (never sender names / subjects / previews — those are */\n/* PHI), and route per-message operations through the curated handle. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { MessageTrayHandle } from './message-tray';\n\nexport const messageTrayAgent: AgentAdapter<MessageTrayHandle> = {\n id: 'message-tray',\n capabilities: ['open', 'close', 'select_single', 'dismiss'],\n state: {\n items: {\n type: 'Array<{ id: string; read: boolean }>',\n descriptionKey: 'ui.agent.messageTray.state.items',\n description:\n 'Currently-displayed messages. Ids + read flag only — no PHI / no sender names.',\n read: (handle) => handle.getItems(),\n },\n unreadCount: {\n type: 'number',\n descriptionKey: 'ui.agent.messageTray.state.unreadCount',\n description: 'Badge unread count surfaced by the host.',\n read: (handle) => handle.getUnreadCount(),\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.messageTray.state.isOpen',\n description: 'Whether the dropdown panel is currently open.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n descriptionKey: 'ui.agent.messageTray.actions.open',\n description: 'Open the message panel.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n descriptionKey: 'ui.agent.messageTray.actions.close',\n description: 'Close the message panel.',\n invoke: (handle) => {\n handle.close();\n },\n },\n select_item: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.messageTray.actions.selectItem',\n description: 'Activate the message with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n mark_read: {\n safety: 'write',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.messageTray.actions.markRead',\n description: 'Request the host to mark a message as read.',\n invoke: (handle, args: { id: string }) => {\n handle.markRead(args.id);\n },\n },\n dismiss: {\n safety: 'destructive',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.messageTray.actions.dismiss',\n description:\n 'Request the host to dismiss / archive the message with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.dismiss(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'message-tray',\n description: 'Marks the MessageTray 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 tray from the agent.',\n },\n item: {\n attr: 'data-message-id',\n description:\n 'Stable message id emitted on each rendered MessageCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { Mail } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Button } from '../button/button';\nimport { Separator } from '../separator/separator';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { MessageCard, type MessageItem } from '../message-card/message-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { messageTrayAgent } from './message-tray.agent';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * Curated imperative handle for MessageTray. Exposed as the forwardRef\n * target so a future agent / MCP UI bridge can drive the tray without\n * touching the DOM. See `message-tray.agent.ts`.\n */\nexport interface MessageTrayHandle {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n getItems: () => Array<{ id: string; read: boolean }>;\n getUnreadCount: () => number;\n selectItem: (id: string) => void;\n markRead: (id: string) => void;\n dismiss: (id: string) => void;\n}\n\nexport interface MessageTrayProps\n extends\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onClick' | 'children' | 'role' | 'id'\n >,\n VariantProps<typeof messageTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so\n * an agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n /** Fires when the host should mark a single message as read (used by agent integration). */\n onMarkRead?: (item: MessageItem) => void;\n /** Messages rendered in the dropdown panel. */\n items: MessageItem[];\n /** Number of unread messages. Drives the badge count. */\n unreadCount?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Fires when the open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Fires when the user activates an item (click or Enter/Space). */\n onItemClick?: (item: MessageItem) => void;\n /** Fires when the user dismisses / archives a message. */\n onDismiss?: (item: MessageItem) => void;\n /** Fires when the user clicks the header \"Mark all as read\" action. */\n onMarkAllRead?: () => void;\n /** When true the panel shows skeleton placeholders. */\n loading?: boolean;\n /**\n * Advisory item count before the list scrolls. Consumers override the cap\n * via the `--message-tray-max-block-size` custom property.\n */\n maxVisible?: number;\n /** When set renders a footer link that invokes `onViewAll`. */\n viewAllLabel?: string;\n /** Fires when the footer \"View all\" link is clicked. */\n onViewAll?: () => void;\n /** Panel alignment relative to the trigger. Default `'end'`. */\n align?: 'start' | 'center' | 'end';\n /** Side of the trigger to open on. Default `'bottom'`. */\n side?: 'top' | 'bottom';\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst messageTrayVariants = cva('ds:relative ds:inline-flex ds:items-center', {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nconst panelVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:border ds:border-[color:var(--card-border)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n // Width: fluid below the design cap so narrow viewports keep a visible\n // gutter on both sides (shadow included). Cap slightly wider than\n // NotificationTray because message rows carry subject + preview.\n 'ds:w-[min(26rem,calc(100vw-2*var(--spacing-md)))]',\n // Height: below the `sm` breakpoint the panel takes a near-full-screen\n // sheet shape so the user gets room to triage an inbox without\n // scrolling a tiny popover. `6rem` reserves space for the Header\n // (≈4rem) plus the sideOffset + collisionPadding (≈2rem). Above `sm`\n // it returns to `h-auto` so the list's own cap governs the height.\n 'ds:h-[calc(100dvh-6rem)] ds:sm:h-auto',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:focus-visible:outline-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-xs)]',\n md: 'ds:p-[var(--spacing-sm)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst badgeVariants = cva(\n [\n 'ds:absolute ds:-top-[var(--spacing-xs)] ds:-end-[var(--spacing-xs)]',\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-w-[calc(var(--spacing-md)+var(--spacing-xs))] ds:h-[calc(var(--spacing-md)+var(--spacing-xs))] ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[color:var(--destructive)] ds:text-[color:var(--destructive-foreground)]',\n 'ds:text-[length:var(--font-size-xs)] ds:font-semibold ds:leading-none',\n 'ds:pointer-events-none ds:select-none',\n 'ds:forced-colors:outline ds:forced-colors:outline-1 ds:forced-colors:outline-[CanvasText]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number, overflowLabel: string): string {\n return count > 99 ? overflowLabel : String(count);\n}\n\nfunction SkeletonRow() {\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\"\n >\n <Skeleton variant=\"circular\" size=\"sm\" />\n <div className=\"ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <Skeleton variant=\"text\" size=\"md\" width=\"60%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"80%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"95%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"30%\" />\n </div>\n </div>\n );\n}\n\nfunction EmptyPanel() {\n const { t } = useTranslation();\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:flex ds:flex-col ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-lg)] ds:text-center\"\n >\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:items-center ds:justify-center ds:size-10 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--muted)] ds:text-[color:var(--muted-foreground)] ds:[&>svg]:size-5\"\n >\n <Mail />\n </span>\n <p className=\"type-title-item ds:text-[color:var(--foreground)]\">\n {t('messageTray.noMessages', 'No messages')}\n </p>\n <p className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('messageTray.noMessagesDescription', 'Your inbox is clear.')}\n </p>\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const MessageTray = forwardRef<HTMLDivElement, MessageTrayProps>(\n (\n {\n id,\n items,\n unreadCount,\n open,\n onOpenChange,\n onItemClick,\n onDismiss,\n onMarkRead,\n onMarkAllRead,\n loading = false,\n maxVisible,\n viewAllLabel,\n onViewAll,\n align = 'end',\n side = 'bottom',\n size = 'md',\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const [isOpenRaw, handleOpenChange] = useControllableState<boolean>({\n value: open,\n defaultValue: false,\n onChange: onOpenChange,\n });\n const isOpen = isOpenRaw ?? false;\n\n /* Exit-animation list — same AnimatePresence-style bookkeeping as\n * NotificationTray. See that component for rationale. */\n type Displayed = { item: MessageItem; leaving: boolean };\n const [displayed, setDisplayed] = useState<Displayed[]>(() =>\n items.map((item) => ({ item, leaving: false })),\n );\n\n const animationDurationMs = useCallback((): number => {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n if (!raw) return 200;\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n setDisplayed((prev) => {\n const nextIds = new Set(items.map((i) => i.id));\n const prevIds = new Set(prev.map((d) => d.item.id));\n\n const merged: Displayed[] = prev.map((d) => {\n if (nextIds.has(d.item.id)) {\n const fresh = items.find((i) => i.id === d.item.id);\n return fresh\n ? { item: fresh, leaving: false }\n : { ...d, leaving: true };\n }\n return { ...d, leaving: true };\n });\n\n for (const i of items) {\n if (!prevIds.has(i.id)) merged.push({ item: i, leaving: false });\n }\n return merged;\n });\n }, [items]);\n\n useEffect(() => {\n if (!displayed.some((d) => d.leaving)) return;\n const ms = animationDurationMs();\n const timer = setTimeout(() => {\n setDisplayed((prev) => prev.filter((d) => !d.leaving));\n }, ms);\n return () => clearTimeout(timer);\n }, [displayed, animationDurationMs]);\n\n const liveRegionRef = useRef<HTMLDivElement | null>(null);\n const lastTopIdRef = useRef<string | undefined>(items[0]?.id);\n\n useEffect(() => {\n const topId = items[0]?.id;\n const prev = lastTopIdRef.current;\n if (prev && topId && prev !== topId && liveRegionRef.current) {\n const newest = items[0];\n if (newest && !newest.read) {\n liveRegionRef.current.textContent = t('messageTray.newMessage', {\n sender: newest.sender.name,\n defaultValue: 'New message from {{sender}}',\n });\n }\n }\n lastTopIdRef.current = topId;\n }, [items, t]);\n\n const displayCount = unreadCount ?? 0;\n const triggerAriaLabel =\n displayCount > 0\n ? t('messageTray.triggerLabel', {\n count: displayCount,\n defaultValue: 'Messages, {{count}} unread',\n })\n : t('messageTray.triggerLabelNone', 'Messages, none unread');\n\n const badgeLabel = formatBadgeCount(\n displayCount,\n t('messageTray.badgeCountOverflow', '99+'),\n );\n\n const panelClass = panelVariants({ size });\n\n /* Curated imperative handle for agent integration. See\n * message-tray.agent.ts. */\n const itemsRef = useRef<MessageItem[]>(items);\n itemsRef.current = items;\n const unreadRef = useRef<number | undefined>(unreadCount);\n unreadRef.current = unreadCount;\n const isOpenRef = useRef<boolean>(isOpen);\n isOpenRef.current = isOpen;\n\n const handle = useMemo<MessageTrayHandle>(\n () => ({\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n isOpen: () => isOpenRef.current,\n getItems: () =>\n itemsRef.current.map((i) => ({ id: i.id, read: !!i.read })),\n getUnreadCount: () =>\n unreadRef.current ?? itemsRef.current.filter((i) => !i.read).length,\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onItemClick?.(found);\n },\n markRead: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onMarkRead?.(found);\n },\n dismiss: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onDismiss?.(found);\n },\n }),\n [handleOpenChange, onItemClick, onMarkRead, onDismiss],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n useAgentRegistration(messageTrayAgent, handle, id);\n\n return (\n <div\n ref={rootRef}\n data-component=\"message-tray\"\n data-component-id={id}\n className={[messageTrayVariants({ size }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <RadixPopover.Root open={isOpen} onOpenChange={handleOpenChange}>\n <RadixPopover.Trigger asChild>\n <IconButton\n icon={<Mail />}\n intent=\"outline\"\n size={size === 'sm' ? 'sm' : 'md'}\n aria-label={triggerAriaLabel}\n aria-haspopup=\"dialog\"\n />\n </RadixPopover.Trigger>\n {displayCount > 0 ? (\n <span\n aria-hidden=\"true\"\n data-testid=\"message-tray-badge\"\n className={badgeVariants()}\n >\n {badgeLabel}\n </span>\n ) : null}\n <div\n ref={liveRegionRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n />\n <RadixPopover.Portal>\n <RadixPopover.Content\n role=\"dialog\"\n aria-label={t('messageTray.panelTitle', 'Messages')}\n side={side}\n align={align}\n sideOffset={8}\n // `spacing-md` (16px) keeps Radix's collision-avoidance from\n // flush-mounting the panel against the viewport edge when the\n // trigger is near the inline-end of a narrow screen.\n collisionPadding={16}\n className={panelClass}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]\">\n <h3 className=\"ds:m-0 type-title-card ds:text-[color:var(--foreground)]\">\n {t('messageTray.panelTitle', 'Messages')}\n </h3>\n {onMarkAllRead && items.some((item) => !item.read) ? (\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onMarkAllRead}\n className=\"ds:text-[length:var(--font-size-xs)]\"\n >\n {t('messageTray.markAllRead', 'Mark all as read')}\n </Button>\n ) : null}\n </div>\n <Separator />\n <div\n // Only carry `role=\"list\"` when there are list children —\n // axe's `aria-required-children` rule fires on an empty\n // list. The loading skeleton + populated rendering both\n // produce role=\"listitem\" descendants below.\n role={displayed.length > 0 ? 'list' : undefined}\n data-max-visible={maxVisible}\n // Below `sm` the panel is a near-full-screen sheet (see\n // `panelVariants`) and the list expands to fill the\n // remaining space with `flex-1`. Above `sm` the list\n // caps at the `--message-tray-max-block-size` custom\n // property so the popover stays compact.\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:overflow-y-auto ds:pt-[var(--spacing-xs)] ds:flex-1 ds:sm:flex-none ds:sm:[max-block-size:var(--message-tray-max-block-size,26rem)]\"\n >\n {loading ? (\n <>\n <SkeletonRow />\n <SkeletonRow />\n <SkeletonRow />\n </>\n ) : displayed.length === 0 ? (\n <EmptyPanel />\n ) : (\n displayed.map(({ item, leaving }) => (\n <MessageCard\n key={item.id}\n item={item}\n variant=\"compact\"\n leaving={leaving}\n onActivate={onItemClick}\n onDismiss={onDismiss}\n data-message-id={item.id}\n />\n ))\n )}\n </div>\n {viewAllLabel ? (\n <>\n <Separator />\n <div className=\"ds:pt-[var(--spacing-xs)]\">\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onViewAll}\n className=\"ds:w-full ds:justify-center\"\n >\n {viewAllLabel}\n </Button>\n </div>\n </>\n ) : null}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n </div>\n );\n },\n);\n\nMessageTray.displayName = 'MessageTray';\n"],"names":["messageTrayAgent","handle","args","messageTrayVariants","cva","panelVariants","badgeVariants","formatBadgeCount","count","overflowLabel","SkeletonRow","jsxs","jsx","Skeleton","EmptyPanel","t","useTranslation","Mail","MessageTray","forwardRef","id","items","unreadCount","open","onOpenChange","onItemClick","onDismiss","onMarkRead","onMarkAllRead","loading","maxVisible","viewAllLabel","onViewAll","align","side","size","className","rest","ref","isOpenRaw","handleOpenChange","useControllableState","isOpen","displayed","setDisplayed","useState","item","animationDurationMs","useCallback","raw","trimmed","useIsomorphicLayoutEffect","prev","nextIds","prevIds","d","merged","fresh","i","useEffect","ms","timer","liveRegionRef","useRef","lastTopIdRef","_a","topId","newest","displayCount","triggerAriaLabel","badgeLabel","panelClass","itemsRef","unreadRef","isOpenRef","useMemo","targetId","found","rootRef","useImperativeHandle","useAgentRegistration","RadixPopover","IconButton","Button","Separator","Fragment","leaving","MessageCard"],"mappings":"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"}
@@ -1,20 +1,20 @@
1
- import { jsx as n, jsxs as I } from "react/jsx-runtime";
2
- import { forwardRef as qe, useContext as Me, useState as K, useRef as x, useMemo as F, useEffect as U, useCallback as Pe } from "react";
1
+ import { jsx as n, jsxs as x } from "react/jsx-runtime";
2
+ import { forwardRef as Me, useContext as Pe, useState as K, useRef as k, useMemo as F, useEffect as U, useCallback as je } from "react";
3
3
  import * as D from "@radix-ui/react-popover";
4
4
  import { _ as u } from "./index-4xgbg-sn.js";
5
5
  import { c as de } from "./index-D2ZczOXr.js";
6
- import { useTranslation as je } from "react-i18next";
7
- import { u as $e, F as Be } from "./form-field-context-B3APVHKx.js";
6
+ import { useTranslation as $e } from "react-i18next";
7
+ import { u as Be, F as Ke } from "./form-field-context-B3APVHKx.js";
8
8
  import { T as oe } from "./tooltip-DvmfrNvB.js";
9
- import { c as Ke } from "./compose-refs-C0k0tdqF.js";
10
- import { u as Ue } from "./use-controllable-state-BiY4xTzM.js";
11
- import { u as Qe } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
12
- import { g as Ye } from "./group-options-BvKhQ3xb.js";
13
- import { b as Q, c as Ge } from "./input-surface-xyERuLU_.js";
14
- import { u as He } from "./registry-nPAVE19X.js";
15
- import { X as Xe } from "./x-CCcI3eJp.js";
16
- import { C as Je } from "./check-DPdL_Sm7.js";
17
- const We = {
9
+ import { c as Ue } from "./compose-refs-C0k0tdqF.js";
10
+ import { u as Qe } from "./use-controllable-state-BiY4xTzM.js";
11
+ import { u as Ye } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
12
+ import { g as Ge } from "./group-options-BvKhQ3xb.js";
13
+ import { b as Q, c as He } from "./input-surface-xyERuLU_.js";
14
+ import { u as Xe } from "./registry-nPAVE19X.js";
15
+ import { X as Je } from "./x-CCcI3eJp.js";
16
+ import { C as We } from "./check-DPdL_Sm7.js";
17
+ const Ze = {
18
18
  id: "multi-select",
19
19
  capabilities: ["select_multiple", "filter", "open", "close"],
20
20
  state: {
@@ -85,10 +85,10 @@ const We = {
85
85
  description: "Each option emits its value as data-option-id."
86
86
  }
87
87
  }
88
- }, Ze = de(
88
+ }, et = de(
89
89
  [
90
90
  "ds:inline-flex ds:flex-wrap ds:items-center ds:gap-1 ds:w-full",
91
- Ge,
91
+ He,
92
92
  "ds:aria-[invalid=true]:border-destructive",
93
93
  "ds:aria-disabled:cursor-not-allowed ds:aria-disabled:opacity-50"
94
94
  ],
@@ -122,7 +122,7 @@ const We = {
122
122
  },
123
123
  defaultVariants: { size: "md" }
124
124
  }
125
- ), et = [
125
+ ), tt = [
126
126
  "ds:inline-flex ds:items-center ds:justify-center ds:shrink-0",
127
127
  "ds:rounded-[var(--radius-sm)]",
128
128
  "ds:text-muted-foreground ds:hover:text-foreground",
@@ -131,7 +131,7 @@ const We = {
131
131
  "ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
132
132
  "ds:size-4",
133
133
  'ds:relative ds:before:absolute ds:before:inset-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[""]'
134
- ].join(" "), tt = [
134
+ ].join(" "), st = [
135
135
  "ds:z-[var(--z-dropdown)] ds:overflow-hidden",
136
136
  "ds:min-w-[var(--radix-popover-trigger-width)]",
137
137
  "ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground",
@@ -142,7 +142,7 @@ const We = {
142
142
  "ds:data-[side=bottom]:slide-in-from-top-2",
143
143
  "ds:data-[side=top]:slide-in-from-bottom-2",
144
144
  "ds:motion-reduce:animate-none"
145
- ].join(" "), st = [
145
+ ].join(" "), rt = [
146
146
  "ds:relative ds:flex ds:cursor-pointer ds:items-center",
147
147
  "ds:rounded-[var(--radius-sm)] ds:ps-2 ds:pe-2 ds:py-1.5",
148
148
  "ds:text-[var(--font-size-sm)] ds:text-foreground ds:outline-none ds:select-none",
@@ -154,7 +154,7 @@ const We = {
154
154
  "ds:rounded-[var(--radius-sm)] ds:ps-2 ds:pe-2 ds:py-1.5",
155
155
  "ds:text-[var(--font-size-sm)] ds:font-medium ds:text-primary ds:outline-none ds:select-none",
156
156
  "ds:data-[selected=true]:bg-muted"
157
- ].join(" "), rt = "__ui-multiselect-select-all__", nt = "__ui-multiselect-clear-all__", le = qe(
157
+ ].join(" "), nt = "__ui-multiselect-select-all__", ot = "__ui-multiselect-clear-all__", le = Me(
158
158
  function({
159
159
  options: c,
160
160
  value: ce,
@@ -162,7 +162,7 @@ const We = {
162
162
  onChange: fe,
163
163
  onComplete: L,
164
164
  placeholder: me,
165
- maxSelections: v,
165
+ maxSelections: b,
166
166
  allowSelectAll: Y = !1,
167
167
  allowClear: G = !1,
168
168
  filter: O,
@@ -170,19 +170,28 @@ const We = {
170
170
  disabled: pe,
171
171
  className: he,
172
172
  id: z,
173
- ...ge
173
+ // Pull `aria-label` out of the div spread so it names the combobox
174
+ // INPUT (the interactive control) rather than the wrapper div. Lets a
175
+ // consumer give the trigger a meaningful name when there's no visible
176
+ // label or FormField (e.g. a data-table floating filter naming itself
177
+ // after its column). Untouched callers fall back to the placeholder.
178
+ // ONLY set this when the control has no visible / FormField label —
179
+ // `aria-label` wins over an associated `<label>`, so passing both would
180
+ // silently override the visible text (WCAG 2.5.3 Label in Name).
181
+ "aria-label": ge,
182
+ ...be
174
183
  }, ve) {
175
- const { t: f } = je(), b = $e(), k = Me(Be) !== null, [be, q] = Ue({
184
+ const { t: f } = $e(), v = Be(), y = Pe(Ke) !== null, [ye, q] = Qe({
176
185
  value: ce,
177
186
  defaultValue: ue ?? [],
178
187
  onChange: fe
179
- }), r = be ?? [], [C, m] = K(!1), [p, M] = K(""), y = x(null), w = x([]), H = x(null), ye = Ke(ve, H), g = k && b.disabled || !!pe, we = k && b.required, X = k && b.invalid, Ie = k && b.describedBy ? b.describedBy : void 0, xe = z ?? (k ? b.id : void 0), ke = F(() => {
188
+ }), r = ye ?? [], [C, m] = K(!1), [p, M] = K(""), w = k(null), I = k([]), H = k(null), we = Ue(ve, H), g = y && v.disabled || !!pe, Ie = y && v.required, X = y && v.invalid, xe = y && v.describedBy ? v.describedBy : void 0, ke = z ?? (y ? v.id : void 0), Ce = F(() => {
180
189
  const e = /* @__PURE__ */ new Map();
181
190
  for (const t of c) e.set(t.value, t.label);
182
191
  return e;
183
- }, [c]), J = typeof v == "number" && r.length >= v, S = (e) => {
192
+ }, [c]), J = typeof b == "number" && r.length >= b, S = (e) => {
184
193
  q(e);
185
- }, Ce = (e) => {
194
+ }, Se = (e) => {
186
195
  if (r.includes(e)) {
187
196
  S(r.filter((t) => t !== e));
188
197
  return;
@@ -191,29 +200,29 @@ const We = {
191
200
  }, P = (e) => {
192
201
  const t = r.filter((s, o) => o !== e);
193
202
  return S(t), t;
194
- }, Se = () => {
195
- const e = c.filter((s) => !s.disabled).map((s) => s.value), t = typeof v == "number" ? v : e.length;
196
- S(e.slice(0, t));
197
203
  }, Ae = () => {
204
+ const e = c.filter((s) => !s.disabled).map((s) => s.value), t = typeof b == "number" ? b : e.length;
205
+ S(e.slice(0, t));
206
+ }, Ne = () => {
198
207
  S([]);
199
- }, W = x(r);
208
+ }, W = k(r);
200
209
  U(() => {
201
210
  W.current = r;
202
211
  }, [r]);
203
- const Z = x(p);
212
+ const Z = k(p);
204
213
  U(() => {
205
214
  Z.current = p;
206
215
  }, [p]);
207
- const ee = x(C);
216
+ const ee = k(C);
208
217
  U(() => {
209
218
  ee.current = C;
210
219
  }, [C]);
211
- const j = Pe(
220
+ const j = je(
212
221
  (e) => {
213
222
  q(e);
214
223
  },
215
224
  [q]
216
- ), Ne = F(
225
+ ), _e = F(
217
226
  () => ({
218
227
  getSelection: () => [...W.current],
219
228
  getQuery: () => Z.current,
@@ -226,15 +235,15 @@ const We = {
226
235
  }),
227
236
  [j]
228
237
  );
229
- He(We, Ne, z);
238
+ Xe(Ze, _e, z);
230
239
  const te = me ?? f("inputs.multiSelect.placeholder", "Select…"), se = F(() => {
231
240
  if (!p) return c;
232
241
  const e = p.toLowerCase();
233
242
  return c.filter((t) => O ? O(p, t) : t.label.toLowerCase().includes(e));
234
- }, [c, p, O]), _e = F(
235
- () => Ye(se),
243
+ }, [c, p, O]), Re = F(
244
+ () => Ge(se),
236
245
  [se]
237
- ), Re = (e) => {
246
+ ), Te = (e) => {
238
247
  var o;
239
248
  const t = e.currentTarget;
240
249
  if (e.key === "Backspace" && p === "" && r.length > 0) {
@@ -242,7 +251,7 @@ const We = {
242
251
  const a = r.length - 1, l = P(a).length - 1;
243
252
  l >= 0 && requestAnimationFrame(() => {
244
253
  var h;
245
- (h = w.current[l]) == null || h.focus();
254
+ (h = I.current[l]) == null || h.focus();
246
255
  });
247
256
  return;
248
257
  }
@@ -252,7 +261,7 @@ const We = {
252
261
  if (a && e.key === "ArrowRight" || !a && e.key === "ArrowLeft") {
253
262
  e.preventDefault();
254
263
  const l = r.length - 1;
255
- (o = w.current[l]) == null || o.focus();
264
+ (o = I.current[l]) == null || o.focus();
256
265
  }
257
266
  return;
258
267
  }
@@ -261,7 +270,7 @@ const We = {
261
270
  return;
262
271
  }
263
272
  !C && (e.key === "ArrowDown" || e.key === "Enter") && m(!0);
264
- }, Te = (e) => (t) => {
273
+ }, Ee = (e) => (t) => {
265
274
  var d, l, h, N;
266
275
  if (t.key === "Backspace" || t.key === "Delete" || t.key === "Enter" || t.key === " ") {
267
276
  t.preventDefault(), t.stopPropagation();
@@ -269,14 +278,14 @@ const We = {
269
278
  if (V.length === 0) {
270
279
  requestAnimationFrame(() => {
271
280
  var _;
272
- return (_ = y.current) == null ? void 0 : _.focus();
281
+ return (_ = w.current) == null ? void 0 : _.focus();
273
282
  });
274
283
  return;
275
284
  }
276
- const ze = Math.min(e, V.length - 1);
285
+ const qe = Math.min(e, V.length - 1);
277
286
  requestAnimationFrame(() => {
278
287
  var _;
279
- (_ = w.current[ze]) == null || _.focus();
288
+ (_ = I.current[qe]) == null || _.focus();
280
289
  });
281
290
  return;
282
291
  }
@@ -284,18 +293,18 @@ const We = {
284
293
  if (t.key === o) {
285
294
  t.preventDefault();
286
295
  const V = Math.max(0, e - 1);
287
- (d = w.current[V]) == null || d.focus();
296
+ (d = I.current[V]) == null || d.focus();
288
297
  return;
289
298
  }
290
299
  if (t.key === a) {
291
- t.preventDefault(), e < r.length - 1 ? (l = w.current[e + 1]) == null || l.focus() : (h = y.current) == null || h.focus();
300
+ t.preventDefault(), e < r.length - 1 ? (l = I.current[e + 1]) == null || l.focus() : (h = w.current) == null || h.focus();
292
301
  return;
293
302
  }
294
- t.key === "Escape" && (m(!1), (N = y.current) == null || N.focus());
303
+ t.key === "Escape" && (m(!1), (N = w.current) == null || N.focus());
295
304
  }, [T, $] = K(
296
305
  Number.POSITIVE_INFINITY
297
306
  );
298
- Qe(() => {
307
+ Ye(() => {
299
308
  const e = H.current;
300
309
  if (!e) return;
301
310
  const t = () => {
@@ -319,49 +328,49 @@ const We = {
319
328
  }, [r.length, R]);
320
329
  const E = r.map((e) => ({
321
330
  value: e,
322
- label: ke.get(e) ?? e
323
- })), re = T === Number.POSITIVE_INFINITY || T >= E.length, Ee = re ? E : E.slice(0, T), ne = re ? [] : E.slice(T), A = ne.length, Ve = (e) => {
331
+ label: Ce.get(e) ?? e
332
+ })), re = T === Number.POSITIVE_INFINITY || T >= E.length, Ve = re ? E : E.slice(0, T), ne = re ? [] : E.slice(T), A = ne.length, Fe = (e) => {
324
333
  var s;
325
334
  if (g) return;
326
335
  const t = e.target;
327
- t.closest('[data-ui-chip="true"]') || t.closest('[data-ui-chip-dismiss="true"]') || (m(!0), (s = y.current) == null || s.focus());
328
- }, Fe = (e) => {
336
+ t.closest('[data-ui-chip="true"]') || t.closest('[data-ui-chip-dismiss="true"]') || (m(!0), (s = w.current) == null || s.focus());
337
+ }, De = (e) => {
329
338
  if (g) {
330
339
  m(!1);
331
340
  return;
332
341
  }
333
342
  m(e), e || (M(""), L == null || L(r));
334
- }, De = Y || G, Le = f("inputs.multiSelect.selected", {
343
+ }, Le = Y || G, Oe = f("inputs.multiSelect.selected", {
335
344
  count: r.length,
336
345
  defaultValue: `${r.length} selected`
337
- }), { onClick: B, ...Oe } = ge;
338
- return /* @__PURE__ */ n(u, { shouldFilter: !1, label: Le, children: /* @__PURE__ */ I(D.Root, { open: C, onOpenChange: Fe, children: [
339
- /* @__PURE__ */ n(D.Anchor, { asChild: !0, children: /* @__PURE__ */ I(
346
+ }), { onClick: B, ...ze } = be;
347
+ return /* @__PURE__ */ n(u, { shouldFilter: !1, label: Oe, children: /* @__PURE__ */ x(D.Root, { open: C, onOpenChange: De, children: [
348
+ /* @__PURE__ */ n(D.Anchor, { asChild: !0, children: /* @__PURE__ */ x(
340
349
  "div",
341
350
  {
342
- ref: ye,
343
- className: Ze({ size: R, className: he }),
351
+ ref: we,
352
+ className: et({ size: R, className: he }),
344
353
  "aria-disabled": g || void 0,
345
354
  "aria-invalid": X || void 0,
346
355
  "data-component": "multi-select",
347
356
  "data-component-id": z,
348
357
  onClick: (e) => {
349
- B == null || B(e), Ve(e);
358
+ B == null || B(e), Fe(e);
350
359
  },
351
- ...Oe,
360
+ ...ze,
352
361
  children: [
353
- Ee.map((e, t) => (
362
+ Ve.map((e, t) => (
354
363
  // eslint-disable-next-line jsx-a11y/no-static-element-interactions -- chip pill receives focus via roving tabindex; chip removal uses an inner button
355
- /* @__PURE__ */ I(
364
+ /* @__PURE__ */ x(
356
365
  "span",
357
366
  {
358
367
  ref: (s) => {
359
- w.current[t] = s;
368
+ I.current[t] = s;
360
369
  },
361
370
  tabIndex: g ? -1 : 0,
362
371
  "data-ui-chip": "true",
363
372
  className: ie({ size: R }),
364
- onKeyDown: Te(t),
373
+ onKeyDown: Ee(t),
365
374
  "aria-label": e.label,
366
375
  children: [
367
376
  /* @__PURE__ */ n("span", { children: e.label }),
@@ -379,11 +388,11 @@ const We = {
379
388
  onClick: (s) => {
380
389
  s.stopPropagation(), P(t), requestAnimationFrame(() => {
381
390
  var o;
382
- return (o = y.current) == null ? void 0 : o.focus();
391
+ return (o = w.current) == null ? void 0 : o.focus();
383
392
  });
384
393
  },
385
- className: et,
386
- children: /* @__PURE__ */ n(Xe, { "aria-hidden": "true", className: "ds:size-3.5" })
394
+ className: tt,
395
+ children: /* @__PURE__ */ n(Je, { "aria-hidden": "true", className: "ds:size-3.5" })
387
396
  }
388
397
  )
389
398
  ]
@@ -417,18 +426,19 @@ const We = {
417
426
  /* @__PURE__ */ n(
418
427
  u.Input,
419
428
  {
420
- ref: y,
429
+ ref: w,
421
430
  value: p,
422
431
  onValueChange: M,
423
- onKeyDown: Re,
432
+ onKeyDown: Te,
424
433
  onFocus: () => {
425
434
  g || m(!0);
426
435
  },
427
436
  placeholder: r.length === 0 ? te : "",
428
- id: xe,
429
- "aria-describedby": Ie,
437
+ id: ke,
438
+ "aria-label": y ? void 0 : ge,
439
+ "aria-describedby": xe,
430
440
  "aria-invalid": X || void 0,
431
- "aria-required": we || void 0,
441
+ "aria-required": Ie || void 0,
432
442
  disabled: g,
433
443
  className: [
434
444
  "ds:flex-1 ds:min-w-[6rem] ds:bg-transparent ds:outline-none",
@@ -447,8 +457,8 @@ const We = {
447
457
  onCloseAutoFocus: (e) => e.preventDefault(),
448
458
  align: "start",
449
459
  sideOffset: 4,
450
- className: tt,
451
- children: /* @__PURE__ */ I(
460
+ className: st,
461
+ children: /* @__PURE__ */ x(
452
462
  u.List,
453
463
  {
454
464
  role: "listbox",
@@ -456,12 +466,12 @@ const We = {
456
466
  "aria-label": te,
457
467
  className: "ds:max-h-[20rem] ds:overflow-y-auto ds:p-1",
458
468
  children: [
459
- De ? /* @__PURE__ */ I(u.Group, { children: [
469
+ Le ? /* @__PURE__ */ x(u.Group, { children: [
460
470
  Y ? /* @__PURE__ */ n(
461
471
  u.Item,
462
472
  {
463
- value: rt,
464
- onSelect: Se,
473
+ value: nt,
474
+ onSelect: Ae,
465
475
  className: ae,
466
476
  children: f("inputs.multiSelect.selectAll", "Select all")
467
477
  }
@@ -469,27 +479,27 @@ const We = {
469
479
  G ? /* @__PURE__ */ n(
470
480
  u.Item,
471
481
  {
472
- value: nt,
473
- onSelect: Ae,
482
+ value: ot,
483
+ onSelect: Ne,
474
484
  className: ae,
475
485
  children: f("inputs.multiSelect.clearAll", "Clear all")
476
486
  }
477
487
  ) : null
478
488
  ] }) : null,
479
489
  /* @__PURE__ */ n(u.Empty, { className: "ds:ps-2 ds:pe-2 ds:py-2 type-body-sm ds:text-muted-foreground", children: f("inputs.multiSelect.noOptions", "No options found") }),
480
- _e.map(({ group: e, items: t }, s) => {
490
+ Re.map(({ group: e, items: t }, s) => {
481
491
  const o = t.map((a) => {
482
- const d = r.includes(a.value), l = !d && J, h = !!a.disabled || l, N = /* @__PURE__ */ I(
492
+ const d = r.includes(a.value), l = !d && J, h = !!a.disabled || l, N = /* @__PURE__ */ x(
483
493
  u.Item,
484
494
  {
485
495
  value: a.value,
486
496
  disabled: h,
487
497
  onSelect: () => {
488
- h || Ce(a.value);
498
+ h || Se(a.value);
489
499
  },
490
500
  "aria-selected": d,
491
501
  "aria-disabled": h || void 0,
492
- className: st,
502
+ className: rt,
493
503
  children: [
494
504
  /* @__PURE__ */ n(
495
505
  "span",
@@ -500,7 +510,7 @@ const We = {
500
510
  d ? "ds:bg-primary ds:border-primary ds:text-primary-foreground" : "ds:bg-background"
501
511
  ].join(" "),
502
512
  "aria-hidden": "true",
503
- children: d ? /* @__PURE__ */ n(Je, { className: "ds:size-3.5" }) : null
513
+ children: d ? /* @__PURE__ */ n(We, { className: "ds:size-3.5" }) : null
504
514
  }
505
515
  ),
506
516
  /* @__PURE__ */ n("span", { className: "ds:flex-1 ds:text-start", children: a.label })
@@ -512,8 +522,8 @@ const We = {
512
522
  oe,
513
523
  {
514
524
  label: f("inputs.multiSelect.maxReached", {
515
- count: v,
516
- defaultValue: `Maximum ${v} selections`
525
+ count: b,
526
+ defaultValue: `Maximum ${b} selections`
517
527
  }),
518
528
  delayDuration: 200,
519
529
  children: N
@@ -540,10 +550,10 @@ const We = {
540
550
  }
541
551
  );
542
552
  le.displayName = "MultiSelect";
543
- const wt = le;
553
+ const It = le;
544
554
  export {
545
- wt as M,
546
- Ze as a,
547
- We as m
555
+ It as M,
556
+ et as a,
557
+ Ze as m
548
558
  };
549
- //# sourceMappingURL=multi-select-DOLO3K_z.js.map
559
+ //# sourceMappingURL=multi-select-BcPylvHR.js.map