@alfadocs/ui-kit-debug 1.56.0 → 1.58.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/{address-fields-BfjxS05Z.js → address-fields-CJtu7LQU.js} +2 -2
  2. package/dist/_chunks/{address-fields-BfjxS05Z.js.map → address-fields-CJtu7LQU.js.map} +1 -1
  3. package/dist/_chunks/{ai-credits-notice-BoNJtOuE.js → ai-credits-notice-ktklr8fy.js} +2 -2
  4. package/dist/_chunks/{ai-credits-notice-BoNJtOuE.js.map → ai-credits-notice-ktklr8fy.js.map} +1 -1
  5. package/dist/_chunks/ai-permission-notice-DyuEGwAt.js +206 -0
  6. package/dist/_chunks/ai-permission-notice-DyuEGwAt.js.map +1 -0
  7. package/dist/_chunks/alia-sidebar-dybRpWml.js +1284 -0
  8. package/dist/_chunks/alia-sidebar-dybRpWml.js.map +1 -0
  9. package/dist/_chunks/{anamnesis-summary-rows-CQ-XGr0T.js → anamnesis-summary-rows-M-FUkw9p.js} +6 -6
  10. package/dist/_chunks/{anamnesis-summary-rows-CQ-XGr0T.js.map → anamnesis-summary-rows-M-FUkw9p.js.map} +1 -1
  11. package/dist/_chunks/{app-frame-B-0O9CrU.js → app-frame-CqmDh2v5.js} +2 -2
  12. package/dist/_chunks/{app-frame-B-0O9CrU.js.map → app-frame-CqmDh2v5.js.map} +1 -1
  13. package/dist/_chunks/{appointment-peek-BIZaDeCi.js → appointment-peek-WvNbE4JG.js} +2 -2
  14. package/dist/_chunks/{appointment-peek-BIZaDeCi.js.map → appointment-peek-WvNbE4JG.js.map} +1 -1
  15. package/dist/_chunks/{appointment-timeline-DmqYEIT9.js → appointment-timeline-Z0494xO-.js} +2 -2
  16. package/dist/_chunks/{appointment-timeline-DmqYEIT9.js.map → appointment-timeline-Z0494xO-.js.map} +1 -1
  17. package/dist/_chunks/{balance-badge-cell-DmDcXw0c.js → balance-badge-cell-CGoJZlKf.js} +3 -3
  18. package/dist/_chunks/{balance-badge-cell-DmDcXw0c.js.map → balance-badge-cell-CGoJZlKf.js.map} +1 -1
  19. package/dist/_chunks/{booking-WyNGKPE2.js → booking-CiFSAMR-.js} +4 -4
  20. package/dist/_chunks/{booking-WyNGKPE2.js.map → booking-CiFSAMR-.js.map} +1 -1
  21. package/dist/_chunks/{calculator-dialog-pCPWta7h.js → calculator-dialog-CzQv03p0.js} +2 -2
  22. package/dist/_chunks/{calculator-dialog-pCPWta7h.js.map → calculator-dialog-CzQv03p0.js.map} +1 -1
  23. package/dist/_chunks/{calendar-workspace-Du2ryaI-.js → calendar-workspace-DNHzjG7O.js} +19 -19
  24. package/dist/_chunks/calendar-workspace-DNHzjG7O.js.map +1 -0
  25. package/dist/_chunks/{care-plan-card-Ddjh5Doc.js → care-plan-card-DxrRLRdW.js} +2 -2
  26. package/dist/_chunks/{care-plan-card-Ddjh5Doc.js.map → care-plan-card-DxrRLRdW.js.map} +1 -1
  27. package/dist/_chunks/{care-plan-header-DUX_SVvF.js → care-plan-header-BMwZIgHJ.js} +2 -2
  28. package/dist/_chunks/{care-plan-header-DUX_SVvF.js.map → care-plan-header-BMwZIgHJ.js.map} +1 -1
  29. package/dist/_chunks/{chart-HsF1KHbx.js → chart-ZMkX-Gqy.js} +338 -341
  30. package/dist/_chunks/chart-ZMkX-Gqy.js.map +1 -0
  31. package/dist/_chunks/{city-input-BC_nYINn.js → city-input-3J3bz9EO.js} +2 -2
  32. package/dist/_chunks/{city-input-BC_nYINn.js.map → city-input-3J3bz9EO.js.map} +1 -1
  33. package/dist/_chunks/{clinical-note-card-14JIoUR0.js → clinical-note-card-hx939bvw.js} +2 -2
  34. package/dist/_chunks/{clinical-note-card-14JIoUR0.js.map → clinical-note-card-hx939bvw.js.map} +1 -1
  35. package/dist/_chunks/{color-picker-BRQ4Y9SO.js → color-picker-BsggJovx.js} +128 -123
  36. package/dist/_chunks/color-picker-BsggJovx.js.map +1 -0
  37. package/dist/_chunks/{contact-card-CmK05vNb.js → contact-card-fHBMwEsx.js} +2 -2
  38. package/dist/_chunks/{contact-card-CmK05vNb.js.map → contact-card-fHBMwEsx.js.map} +1 -1
  39. package/dist/_chunks/{contact-profile-card-Ci8lBQ6a.js → contact-profile-card-CMyBYgRR.js} +2 -2
  40. package/dist/_chunks/{contact-profile-card-Ci8lBQ6a.js.map → contact-profile-card-CMyBYgRR.js.map} +1 -1
  41. package/dist/_chunks/{control-room-rail-Tx2jW250.js → control-room-rail-CJ85HkS2.js} +2 -2
  42. package/dist/_chunks/{control-room-rail-Tx2jW250.js.map → control-room-rail-CJ85HkS2.js.map} +1 -1
  43. package/dist/_chunks/{cycle-calculator-Dgfqr4Q4.js → cycle-calculator-Cww9DzIa.js} +2 -2
  44. package/dist/_chunks/{cycle-calculator-Dgfqr4Q4.js.map → cycle-calculator-Cww9DzIa.js.map} +1 -1
  45. package/dist/_chunks/dashboard-grid-Cs7cJAsA.js +933 -0
  46. package/dist/_chunks/dashboard-grid-Cs7cJAsA.js.map +1 -0
  47. package/dist/_chunks/{data-table-D8fuhqO1.js → data-table-Yn5xiGzs.js} +3 -3
  48. package/dist/_chunks/{data-table-D8fuhqO1.js.map → data-table-Yn5xiGzs.js.map} +1 -1
  49. package/dist/_chunks/{data-table-tabs-Xhg5G0gU.js → data-table-tabs-CHYAAeHy.js} +2 -2
  50. package/dist/_chunks/{data-table-tabs-Xhg5G0gU.js.map → data-table-tabs-CHYAAeHy.js.map} +1 -1
  51. package/dist/_chunks/{date-picker-wRAcq2lt.js → date-picker-BSZuKo13.js} +69 -62
  52. package/dist/_chunks/date-picker-BSZuKo13.js.map +1 -0
  53. package/dist/_chunks/{date-range-picker-CtUOI38x.js → date-range-picker-CFk-5O3R.js} +176 -171
  54. package/dist/_chunks/date-range-picker-CFk-5O3R.js.map +1 -0
  55. package/dist/_chunks/{date-time-picker-CLeLKuv9.js → date-time-picker-CjxTkblD.js} +92 -85
  56. package/dist/_chunks/date-time-picker-CjxTkblD.js.map +1 -0
  57. package/dist/_chunks/{dialog-CUzbnKLw.js → dialog-Dn-iQ0Jp.js} +2 -2
  58. package/dist/_chunks/{dialog-CUzbnKLw.js.map → dialog-Dn-iQ0Jp.js.map} +1 -1
  59. package/dist/_chunks/{document-preview-uoTekVR7.js → document-preview-CHGGG0l_.js} +2 -2
  60. package/dist/_chunks/{document-preview-uoTekVR7.js.map → document-preview-CHGGG0l_.js.map} +1 -1
  61. package/dist/_chunks/{due-date-calculator-CSjklbyw.js → due-date-calculator-D_qFUiHp.js} +2 -2
  62. package/dist/_chunks/{due-date-calculator-CSjklbyw.js.map → due-date-calculator-D_qFUiHp.js.map} +1 -1
  63. package/dist/_chunks/{entity-summary-DcB0fIiv.js → entity-summary-CWcCSThK.js} +2 -2
  64. package/dist/_chunks/{entity-summary-DcB0fIiv.js.map → entity-summary-CWcCSThK.js.map} +1 -1
  65. package/dist/_chunks/{face-scheme-BicuUA2K.js → face-scheme-DSKDdIsb.js} +2 -2
  66. package/dist/_chunks/{face-scheme-BicuUA2K.js.map → face-scheme-DSKDdIsb.js.map} +1 -1
  67. package/dist/_chunks/{file-manager-Cc_uO8r2.js → file-manager-DEtkQR1F.js} +4 -4
  68. package/dist/_chunks/{file-manager-Cc_uO8r2.js.map → file-manager-DEtkQR1F.js.map} +1 -1
  69. package/dist/_chunks/{forgot-password-form-DEx-M_QR.js → forgot-password-form-CEqOmNuX.js} +2 -2
  70. package/dist/_chunks/{forgot-password-form-DEx-M_QR.js.map → forgot-password-form-CEqOmNuX.js.map} +1 -1
  71. package/dist/_chunks/{gestational-age-calculator-DqVeJke2.js → gestational-age-calculator-CZi43xKG.js} +2 -2
  72. package/dist/_chunks/{gestational-age-calculator-DqVeJke2.js.map → gestational-age-calculator-CZi43xKG.js.map} +1 -1
  73. package/dist/_chunks/{hcg-doubling-BIYyI2Yo.js → hcg-doubling-Ccvh7OaU.js} +2 -2
  74. package/dist/_chunks/{hcg-doubling-BIYyI2Yo.js.map → hcg-doubling-Ccvh7OaU.js.map} +1 -1
  75. package/dist/_chunks/{header-settings-ge_3gYEq.js → header-settings-BMcCx2LC.js} +2 -2
  76. package/dist/_chunks/{header-settings-ge_3gYEq.js.map → header-settings-BMcCx2LC.js.map} +1 -1
  77. package/dist/_chunks/{heatmap-Gf9r7Tn1.js → heatmap-DiyOSQk9.js} +2 -2
  78. package/dist/_chunks/{heatmap-Gf9r7Tn1.js.map → heatmap-DiyOSQk9.js.map} +1 -1
  79. package/dist/_chunks/{help-me-write-templates-fV-Apf72.js → help-me-write-templates-CM1p6qkm.js} +3 -3
  80. package/dist/_chunks/{help-me-write-templates-fV-Apf72.js.map → help-me-write-templates-CM1p6qkm.js.map} +1 -1
  81. package/dist/_chunks/{hover-card-BnTueNS2.js → hover-card-U_ZYoh1n.js} +201 -187
  82. package/dist/_chunks/hover-card-U_ZYoh1n.js.map +1 -0
  83. package/dist/_chunks/{icon-picker-DWrqmI1c.js → icon-picker-rOFTawXk.js} +3 -3
  84. package/dist/_chunks/{icon-picker-DWrqmI1c.js.map → icon-picker-rOFTawXk.js.map} +1 -1
  85. package/dist/_chunks/{info-tip-B0jmIt6M.js → info-tip-CJpNpzZe.js} +2 -2
  86. package/dist/_chunks/{info-tip-B0jmIt6M.js.map → info-tip-CJpNpzZe.js.map} +1 -1
  87. package/dist/_chunks/{kit-extensions-Byfxy6sy.js → kit-extensions-DYVxWcqv.js} +4 -4
  88. package/dist/_chunks/{kit-extensions-Byfxy6sy.js.map → kit-extensions-DYVxWcqv.js.map} +1 -1
  89. package/dist/_chunks/{link-cell-renderer-TeJNvymP.js → link-cell-renderer-C1wOyxDF.js} +3 -3
  90. package/dist/_chunks/{link-cell-renderer-TeJNvymP.js.map → link-cell-renderer-C1wOyxDF.js.map} +1 -1
  91. package/dist/_chunks/link-gRw3NtOt.js +137 -0
  92. package/dist/_chunks/link-gRw3NtOt.js.map +1 -0
  93. package/dist/_chunks/{list-RRN2TJ_7.js → list-CNnn7DOD.js} +75 -73
  94. package/dist/_chunks/list-CNnn7DOD.js.map +1 -0
  95. package/dist/_chunks/{locale-picker-DfNSdOpy.js → locale-picker-BGfrZyTw.js} +2 -2
  96. package/dist/_chunks/{locale-picker-DfNSdOpy.js.map → locale-picker-BGfrZyTw.js.map} +1 -1
  97. package/dist/_chunks/{login-dev-card-DmZ1B0lB.js → login-dev-card-CIim81VB.js} +2 -2
  98. package/dist/_chunks/{login-dev-card-DmZ1B0lB.js.map → login-dev-card-CIim81VB.js.map} +1 -1
  99. package/dist/_chunks/marketplace-app-shell-CSDmGLPW.js +613 -0
  100. package/dist/_chunks/marketplace-app-shell-CSDmGLPW.js.map +1 -0
  101. package/dist/_chunks/{message-tray-BB95DA82.js → message-tray-DmU0poD7.js} +76 -69
  102. package/dist/_chunks/message-tray-DmU0poD7.js.map +1 -0
  103. package/dist/_chunks/{nav-grid-BqCPH8sm.js → nav-grid-Byx8PxuB.js} +2 -2
  104. package/dist/_chunks/{nav-grid-BqCPH8sm.js.map → nav-grid-Byx8PxuB.js.map} +1 -1
  105. package/dist/_chunks/navigation-dismiss-B1mcW1CT.js +9 -0
  106. package/dist/_chunks/navigation-dismiss-B1mcW1CT.js.map +1 -0
  107. package/dist/_chunks/non-modal-tab-exit-j3CPOuE3.js +89 -0
  108. package/dist/_chunks/non-modal-tab-exit-j3CPOuE3.js.map +1 -0
  109. package/dist/_chunks/{note-attachment-I1NLoeRZ.js → note-attachment-Bt2cddsZ.js} +2 -2
  110. package/dist/_chunks/{note-attachment-I1NLoeRZ.js.map → note-attachment-Bt2cddsZ.js.map} +1 -1
  111. package/dist/_chunks/{note-timeline-CsY8YOE7.js → note-timeline-CX9nAgAR.js} +2 -2
  112. package/dist/_chunks/{note-timeline-CsY8YOE7.js.map → note-timeline-CX9nAgAR.js.map} +1 -1
  113. package/dist/_chunks/{notes-panel-DceRhthG.js → notes-panel-DHLHsxpW.js} +4 -4
  114. package/dist/_chunks/{notes-panel-DceRhthG.js.map → notes-panel-DHLHsxpW.js.map} +1 -1
  115. package/dist/_chunks/{notification-tray-__sJXnsz.js → notification-tray-DPU-Xg0i.js} +83 -76
  116. package/dist/_chunks/notification-tray-DPU-Xg0i.js.map +1 -0
  117. package/dist/_chunks/{panel-subview-BT-Apwgb.js → panel-subview-D4o6ar6_.js} +61 -47
  118. package/dist/_chunks/panel-subview-D4o6ar6_.js.map +1 -0
  119. package/dist/_chunks/{patient-details-DsTtjpuX.js → patient-details-BCaVuaXz.js} +2 -2
  120. package/dist/_chunks/{patient-details-DsTtjpuX.js.map → patient-details-BCaVuaXz.js.map} +1 -1
  121. package/dist/_chunks/{patient-field-row-BvZ9luz-.js → patient-field-row-jcRSTrp4.js} +7 -7
  122. package/dist/_chunks/{patient-field-row-BvZ9luz-.js.map → patient-field-row-jcRSTrp4.js.map} +1 -1
  123. package/dist/_chunks/{patient-summary-card-9nQWTQf6.js → patient-summary-card-kQIfPQOE.js} +4 -4
  124. package/dist/_chunks/{patient-summary-card-9nQWTQf6.js.map → patient-summary-card-kQIfPQOE.js.map} +1 -1
  125. package/dist/_chunks/{payment-automation-upsell-DiHovmUL.js → payment-automation-upsell-C4wHOxsp.js} +2 -2
  126. package/dist/_chunks/{payment-automation-upsell-DiHovmUL.js.map → payment-automation-upsell-C4wHOxsp.js.map} +1 -1
  127. package/dist/_chunks/{payment-request-card-CwDpwXUC.js → payment-request-card-DAniJNLX.js} +2 -2
  128. package/dist/_chunks/{payment-request-card-CwDpwXUC.js.map → payment-request-card-DAniJNLX.js.map} +1 -1
  129. package/dist/_chunks/{pdf-viewer-C3minW5b.js → pdf-viewer-CNQxa4tv.js} +396 -391
  130. package/dist/_chunks/pdf-viewer-CNQxa4tv.js.map +1 -0
  131. package/dist/_chunks/{phone-input-DxkHMYmu.js → phone-input-O9camxkq.js} +156 -151
  132. package/dist/_chunks/phone-input-O9camxkq.js.map +1 -0
  133. package/dist/_chunks/popover-BG75rYjN.js +367 -0
  134. package/dist/_chunks/popover-BG75rYjN.js.map +1 -0
  135. package/dist/_chunks/{practice-results-Dhbo-fc_.js → practice-results-D07wgCqV.js} +2 -2
  136. package/dist/_chunks/{practice-results-Dhbo-fc_.js.map → practice-results-D07wgCqV.js.map} +1 -1
  137. package/dist/_chunks/{pregnancy-dating-Bfu0Cq4H.js → pregnancy-dating-BFzv9g1N.js} +2 -2
  138. package/dist/_chunks/{pregnancy-dating-Bfu0Cq4H.js.map → pregnancy-dating-BFzv9g1N.js.map} +1 -1
  139. package/dist/_chunks/{product-hub-panel-BSSiGGG4.js → product-hub-panel-DCYX0rPG.js} +103 -96
  140. package/dist/_chunks/product-hub-panel-DCYX0rPG.js.map +1 -0
  141. package/dist/_chunks/{public-footer-CxpG6J1M.js → public-footer-ZWTEG1Rq.js} +2 -2
  142. package/dist/_chunks/{public-footer-CxpG6J1M.js.map → public-footer-ZWTEG1Rq.js.map} +1 -1
  143. package/dist/_chunks/{public-header.agent-pr2hyiND.js → public-header.agent-C1SlVSYt.js} +2 -2
  144. package/dist/_chunks/{public-header.agent-pr2hyiND.js.map → public-header.agent-C1SlVSYt.js.map} +1 -1
  145. package/dist/_chunks/{radiograph-panel.agent-DkUokbEa.js → radiograph-panel.agent-DyqbTECc.js} +4 -4
  146. package/dist/_chunks/{radiograph-panel.agent-DkUokbEa.js.map → radiograph-panel.agent-DyqbTECc.js.map} +1 -1
  147. package/dist/_chunks/{registration-form-D7iNqMBF.js → registration-form-DrSR9Sjk.js} +4 -4
  148. package/dist/_chunks/{registration-form-D7iNqMBF.js.map → registration-form-DrSR9Sjk.js.map} +1 -1
  149. package/dist/_chunks/{rich-text-editor-CkFfmA3v.js → rich-text-editor-UgXri8h6.js} +490 -485
  150. package/dist/_chunks/rich-text-editor-UgXri8h6.js.map +1 -0
  151. package/dist/_chunks/{scroll-area-ZtFCv9K7.js → scroll-area-CY5SLYNw.js} +104 -74
  152. package/dist/_chunks/scroll-area-CY5SLYNw.js.map +1 -0
  153. package/dist/_chunks/{search-bar-DQJS0wJN.js → search-bar-mA4bPe3t.js} +294 -255
  154. package/dist/_chunks/search-bar-mA4bPe3t.js.map +1 -0
  155. package/dist/_chunks/{sheet-C7SwIxwB.js → sheet-Dtjk0CVv.js} +3 -3
  156. package/dist/_chunks/{sheet-C7SwIxwB.js.map → sheet-Dtjk0CVv.js.map} +1 -1
  157. package/dist/_chunks/sidebar-D4Wllqfz.js +2029 -0
  158. package/dist/_chunks/sidebar-D4Wllqfz.js.map +1 -0
  159. package/dist/_chunks/{sign-document-B6HlyCGV.js → sign-document-D4iHS_Ug.js} +2 -2
  160. package/dist/_chunks/{sign-document-B6HlyCGV.js.map → sign-document-D4iHS_Ug.js.map} +1 -1
  161. package/dist/_chunks/{signature-request-DhbpB9N9.js → signature-request-dAVgE0_5.js} +3 -3
  162. package/dist/_chunks/{signature-request-DhbpB9N9.js.map → signature-request-dAVgE0_5.js.map} +1 -1
  163. package/dist/_chunks/{signed-out-frame-B2GTIeqA.js → signed-out-frame-DOJpobp8.js} +3 -3
  164. package/dist/_chunks/{signed-out-frame-B2GTIeqA.js.map → signed-out-frame-DOJpobp8.js.map} +1 -1
  165. package/dist/_chunks/{state-backed-text-input-DECQy5aA.js → state-backed-text-input-Cgh4ms3p.js} +2 -2
  166. package/dist/_chunks/{state-backed-text-input-DECQy5aA.js.map → state-backed-text-input-Cgh4ms3p.js.map} +1 -1
  167. package/dist/_chunks/{task-editor-ByyRu29Y.js → task-editor-BflEZmcF.js} +7 -6
  168. package/dist/_chunks/task-editor-BflEZmcF.js.map +1 -0
  169. package/dist/_chunks/{tool-rail-Bwyuw_Ot.js → tool-rail-CTq1KwxW.js} +115 -114
  170. package/dist/_chunks/{tool-rail-Bwyuw_Ot.js.map → tool-rail-CTq1KwxW.js.map} +1 -1
  171. package/dist/_chunks/{use-appointment-details-read-JsDM48tf.js → use-appointment-details-read-izwoXh-G.js} +8 -8
  172. package/dist/_chunks/{use-appointment-details-read-JsDM48tf.js.map → use-appointment-details-read-izwoXh-G.js.map} +1 -1
  173. package/dist/_chunks/use-state-backed-input-DhRQo6gM.js +57 -0
  174. package/dist/_chunks/use-state-backed-input-DhRQo6gM.js.map +1 -0
  175. package/dist/_chunks/{voice-control-panel-Bg1eklL0.js → voice-control-panel-an-bpQfF.js} +3 -3
  176. package/dist/_chunks/{voice-control-panel-Bg1eklL0.js.map → voice-control-panel-an-bpQfF.js.map} +1 -1
  177. package/dist/_chunks/{widget-picker-DXYBMTfe.js → widget-picker-DlJOgYrZ.js} +80 -57
  178. package/dist/_chunks/widget-picker-DlJOgYrZ.js.map +1 -0
  179. package/dist/agent-catalog.json +3 -3
  180. package/dist/agent-i18n/en.json +1 -1
  181. package/dist/components/_shared/navigation-dismiss.d.ts +8 -0
  182. package/dist/components/_shared/navigation-dismiss.d.ts.map +1 -0
  183. package/dist/components/_shared/non-modal-tab-exit.d.ts +15 -4
  184. package/dist/components/_shared/non-modal-tab-exit.d.ts.map +1 -1
  185. package/dist/components/_shared/use-state-backed-input.d.ts +3 -2
  186. package/dist/components/_shared/use-state-backed-input.d.ts.map +1 -1
  187. package/dist/components/address-fields/index.js +1 -1
  188. package/dist/components/ai-credits-notice/index.js +1 -1
  189. package/dist/components/ai-permission-notice/ai-permission-notice.d.ts +32 -0
  190. package/dist/components/ai-permission-notice/ai-permission-notice.d.ts.map +1 -1
  191. package/dist/components/ai-permission-notice/index.d.ts +1 -1
  192. package/dist/components/ai-permission-notice/index.d.ts.map +1 -1
  193. package/dist/components/ai-permission-notice/index.js +1 -1
  194. package/dist/components/app-frame/index.js +1 -1
  195. package/dist/components/appointment-details-panel/index.js +1 -1
  196. package/dist/components/appointment-peek/index.js +1 -1
  197. package/dist/components/appointment-timeline/index.js +1 -1
  198. package/dist/components/booking/index.js +1 -1
  199. package/dist/components/calculator-dialog/index.js +1 -1
  200. package/dist/components/care-plan-card/index.js +1 -1
  201. package/dist/components/care-plan-header/index.js +1 -1
  202. package/dist/components/chart/chart.d.ts +5 -5
  203. package/dist/components/chart/chart.d.ts.map +1 -1
  204. package/dist/components/chart/index.js +1 -1
  205. package/dist/components/city-input/index.js +1 -1
  206. package/dist/components/clinical-note-card/index.js +1 -1
  207. package/dist/components/color-picker/color-picker.d.ts.map +1 -1
  208. package/dist/components/color-picker/index.js +1 -1
  209. package/dist/components/contact-card/index.js +1 -1
  210. package/dist/components/contact-profile-card/index.js +1 -1
  211. package/dist/components/control-room-rail/index.js +1 -1
  212. package/dist/components/cycle-calculator/index.js +1 -1
  213. package/dist/components/dashboard-grid/dashboard-grid.d.ts +33 -8
  214. package/dist/components/dashboard-grid/dashboard-grid.d.ts.map +1 -1
  215. package/dist/components/dashboard-grid/index.js +1 -1
  216. package/dist/components/data-table/index.js +2 -2
  217. package/dist/components/data-table-tabs/index.js +1 -1
  218. package/dist/components/date-picker/date-picker.d.ts.map +1 -1
  219. package/dist/components/date-picker/index.js +1 -1
  220. package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
  221. package/dist/components/date-range-picker/index.js +1 -1
  222. package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
  223. package/dist/components/date-time-picker/index.js +1 -1
  224. package/dist/components/dialog/index.js +1 -1
  225. package/dist/components/document-preview/index.js +1 -1
  226. package/dist/components/due-date-calculator/index.js +1 -1
  227. package/dist/components/entity-summary/index.js +1 -1
  228. package/dist/components/face-scheme/index.js +1 -1
  229. package/dist/components/file-manager/index.js +1 -1
  230. package/dist/components/gestational-age-calculator/index.js +1 -1
  231. package/dist/components/hcg-doubling/index.js +1 -1
  232. package/dist/components/header-settings/index.js +1 -1
  233. package/dist/components/heatmap/index.js +1 -1
  234. package/dist/components/hover-card/hover-card.d.ts.map +1 -1
  235. package/dist/components/hover-card/index.js +1 -1
  236. package/dist/components/icon-picker/index.js +1 -1
  237. package/dist/components/info-tip/index.js +1 -1
  238. package/dist/components/link/index.js +1 -1
  239. package/dist/components/link/link.d.ts +5 -3
  240. package/dist/components/link/link.d.ts.map +1 -1
  241. package/dist/components/list/index.js +1 -1
  242. package/dist/components/list/list.d.ts.map +1 -1
  243. package/dist/components/locale-picker/index.js +1 -1
  244. package/dist/components/message-tray/index.js +1 -1
  245. package/dist/components/message-tray/message-tray.d.ts.map +1 -1
  246. package/dist/components/nav-grid/index.js +1 -1
  247. package/dist/components/note-timeline/index.js +1 -1
  248. package/dist/components/notes-panel/index.js +1 -1
  249. package/dist/components/notification-tray/index.js +1 -1
  250. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  251. package/dist/components/panel-subview/index.js +1 -1
  252. package/dist/components/panel-subview/panel-subview.d.ts.map +1 -1
  253. package/dist/components/patient-details/index.js +1 -1
  254. package/dist/components/patient-summary-card/index.js +1 -1
  255. package/dist/components/patient-table/index.js +1 -1
  256. package/dist/components/payment-card/index.js +1 -1
  257. package/dist/components/pdf-viewer/index.js +1 -1
  258. package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
  259. package/dist/components/phone-input/index.js +1 -1
  260. package/dist/components/phone-input/phone-input.d.ts.map +1 -1
  261. package/dist/components/popover/index.js +1 -1
  262. package/dist/components/popover/popover.d.ts +1 -1
  263. package/dist/components/popover/popover.d.ts.map +1 -1
  264. package/dist/components/practice-results/index.js +1 -1
  265. package/dist/components/pregnancy-dating/index.js +1 -1
  266. package/dist/components/product-hub-tray/index.js +1 -1
  267. package/dist/components/product-hub-tray/product-hub-tray.d.ts.map +1 -1
  268. package/dist/components/public-footer/index.js +1 -1
  269. package/dist/components/public-header/index.js +1 -1
  270. package/dist/components/radiograph-panel/index.js +1 -1
  271. package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
  272. package/dist/components/rich-text-editor/index.js +2 -2
  273. package/dist/components/scroll-area/index.js +1 -1
  274. package/dist/components/scroll-area/scroll-area.d.ts +6 -5
  275. package/dist/components/scroll-area/scroll-area.d.ts.map +1 -1
  276. package/dist/components/search-bar/index.js +1 -1
  277. package/dist/components/search-bar/search-bar.d.ts +1 -1
  278. package/dist/components/search-bar/search-bar.d.ts.map +1 -1
  279. package/dist/components/sheet/index.js +1 -1
  280. package/dist/components/sidebar/index.d.ts +1 -1
  281. package/dist/components/sidebar/index.d.ts.map +1 -1
  282. package/dist/components/sidebar/index.js +1 -1
  283. package/dist/components/sidebar/sidebar-move.d.ts +88 -0
  284. package/dist/components/sidebar/sidebar-move.d.ts.map +1 -0
  285. package/dist/components/sidebar/sidebar.d.ts +26 -1
  286. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  287. package/dist/components/sign-document/index.js +1 -1
  288. package/dist/components/task-editor/index.js +1 -1
  289. package/dist/components/task-editor/task-editor.d.ts.map +1 -1
  290. package/dist/components/tool-rail/index.js +1 -1
  291. package/dist/components/tool-rail/tool-rail.d.ts.map +1 -1
  292. package/dist/components/voice-control-panel/index.js +1 -1
  293. package/dist/components/widget-picker/index.js +1 -1
  294. package/dist/components/widget-picker/widget-picker.d.ts.map +1 -1
  295. package/dist/host-compat.css +2 -1
  296. package/dist/i18n/locales/ar.d.ts +24 -0
  297. package/dist/i18n/locales/ar.d.ts.map +1 -1
  298. package/dist/i18n/locales/ar.js +26 -2
  299. package/dist/i18n/locales/ar.js.map +1 -1
  300. package/dist/i18n/locales/de.d.ts +24 -0
  301. package/dist/i18n/locales/de.d.ts.map +1 -1
  302. package/dist/i18n/locales/de.js +26 -2
  303. package/dist/i18n/locales/de.js.map +1 -1
  304. package/dist/i18n/locales/el.d.ts +24 -0
  305. package/dist/i18n/locales/el.d.ts.map +1 -1
  306. package/dist/i18n/locales/el.js +26 -2
  307. package/dist/i18n/locales/el.js.map +1 -1
  308. package/dist/i18n/locales/en.d.ts +24 -0
  309. package/dist/i18n/locales/en.d.ts.map +1 -1
  310. package/dist/i18n/locales/en.js +26 -2
  311. package/dist/i18n/locales/en.js.map +1 -1
  312. package/dist/i18n/locales/es.d.ts +24 -0
  313. package/dist/i18n/locales/es.d.ts.map +1 -1
  314. package/dist/i18n/locales/es.js +26 -2
  315. package/dist/i18n/locales/es.js.map +1 -1
  316. package/dist/i18n/locales/fr.d.ts +24 -0
  317. package/dist/i18n/locales/fr.d.ts.map +1 -1
  318. package/dist/i18n/locales/fr.js +26 -2
  319. package/dist/i18n/locales/fr.js.map +1 -1
  320. package/dist/i18n/locales/hi.d.ts +24 -0
  321. package/dist/i18n/locales/hi.d.ts.map +1 -1
  322. package/dist/i18n/locales/hi.js +26 -2
  323. package/dist/i18n/locales/hi.js.map +1 -1
  324. package/dist/i18n/locales/it.d.ts +24 -0
  325. package/dist/i18n/locales/it.d.ts.map +1 -1
  326. package/dist/i18n/locales/it.js +26 -2
  327. package/dist/i18n/locales/it.js.map +1 -1
  328. package/dist/i18n/locales/ja.d.ts +24 -0
  329. package/dist/i18n/locales/ja.d.ts.map +1 -1
  330. package/dist/i18n/locales/ja.js +26 -2
  331. package/dist/i18n/locales/ja.js.map +1 -1
  332. package/dist/i18n/locales/nl.d.ts +24 -0
  333. package/dist/i18n/locales/nl.d.ts.map +1 -1
  334. package/dist/i18n/locales/nl.js +26 -2
  335. package/dist/i18n/locales/nl.js.map +1 -1
  336. package/dist/i18n/locales/pl.d.ts +24 -0
  337. package/dist/i18n/locales/pl.d.ts.map +1 -1
  338. package/dist/i18n/locales/pl.js +26 -2
  339. package/dist/i18n/locales/pl.js.map +1 -1
  340. package/dist/i18n/locales/pt.d.ts +24 -0
  341. package/dist/i18n/locales/pt.d.ts.map +1 -1
  342. package/dist/i18n/locales/pt.js +26 -2
  343. package/dist/i18n/locales/pt.js.map +1 -1
  344. package/dist/i18n/locales/ro.d.ts +24 -0
  345. package/dist/i18n/locales/ro.d.ts.map +1 -1
  346. package/dist/i18n/locales/ro.js +26 -2
  347. package/dist/i18n/locales/ro.js.map +1 -1
  348. package/dist/i18n/locales/ru.d.ts +24 -0
  349. package/dist/i18n/locales/ru.d.ts.map +1 -1
  350. package/dist/i18n/locales/ru.js +26 -2
  351. package/dist/i18n/locales/ru.js.map +1 -1
  352. package/dist/i18n/locales/sq.d.ts +24 -0
  353. package/dist/i18n/locales/sq.d.ts.map +1 -1
  354. package/dist/i18n/locales/sq.js +26 -2
  355. package/dist/i18n/locales/sq.js.map +1 -1
  356. package/dist/i18n/locales/sv.d.ts +24 -0
  357. package/dist/i18n/locales/sv.d.ts.map +1 -1
  358. package/dist/i18n/locales/sv.js +26 -2
  359. package/dist/i18n/locales/sv.js.map +1 -1
  360. package/dist/i18n/locales/tr.d.ts +24 -0
  361. package/dist/i18n/locales/tr.d.ts.map +1 -1
  362. package/dist/i18n/locales/tr.js +26 -2
  363. package/dist/i18n/locales/tr.js.map +1 -1
  364. package/dist/i18n/locales/zh.d.ts +24 -0
  365. package/dist/i18n/locales/zh.d.ts.map +1 -1
  366. package/dist/i18n/locales/zh.js +26 -2
  367. package/dist/i18n/locales/zh.js.map +1 -1
  368. package/dist/index.js +204 -203
  369. package/dist/locales/ar.json +26 -2
  370. package/dist/locales/de.json +26 -2
  371. package/dist/locales/el.json +26 -2
  372. package/dist/locales/en.json +26 -2
  373. package/dist/locales/es.json +26 -2
  374. package/dist/locales/fr.json +26 -2
  375. package/dist/locales/hi.json +26 -2
  376. package/dist/locales/it.json +26 -2
  377. package/dist/locales/ja.json +26 -2
  378. package/dist/locales/nl.json +26 -2
  379. package/dist/locales/pl.json +26 -2
  380. package/dist/locales/pt.json +26 -2
  381. package/dist/locales/ro.json +26 -2
  382. package/dist/locales/ru.json +26 -2
  383. package/dist/locales/sq.json +26 -2
  384. package/dist/locales/sv.json +26 -2
  385. package/dist/locales/tr.json +26 -2
  386. package/dist/locales/zh.json +26 -2
  387. package/dist/patterns/alia-assistant/alia-asteroid-icon.d.ts +10 -13
  388. package/dist/patterns/alia-assistant/alia-asteroid-icon.d.ts.map +1 -1
  389. package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
  390. package/dist/patterns/alia-assistant/alia-popout.d.ts +5 -3
  391. package/dist/patterns/alia-assistant/alia-popout.d.ts.map +1 -1
  392. package/dist/patterns/alia-assistant/index.d.ts +2 -0
  393. package/dist/patterns/alia-assistant/index.d.ts.map +1 -1
  394. package/dist/patterns/alia-assistant/index.js +6 -5
  395. package/dist/patterns/anamnesis/index.js +1 -1
  396. package/dist/patterns/calendar/index.js +1 -1
  397. package/dist/patterns/forgot-password-form/index.js +1 -1
  398. package/dist/patterns/help-me-write-templates/index.js +1 -1
  399. package/dist/patterns/login-form/index.js +1 -1
  400. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  401. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +40 -10
  402. package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
  403. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  404. package/dist/patterns/registration-form/index.js +1 -1
  405. package/dist/patterns/signature-request/index.js +1 -1
  406. package/dist/patterns/signed-out-frame/index.js +1 -1
  407. package/dist/tokens.css +1 -1
  408. package/package.json +1 -1
  409. package/dist/_chunks/ai-permission-notice-5vpblPCx.js +0 -171
  410. package/dist/_chunks/ai-permission-notice-5vpblPCx.js.map +0 -1
  411. package/dist/_chunks/alia-sidebar-DOei4Iyu.js +0 -1183
  412. package/dist/_chunks/alia-sidebar-DOei4Iyu.js.map +0 -1
  413. package/dist/_chunks/calendar-workspace-Du2ryaI-.js.map +0 -1
  414. package/dist/_chunks/chart-HsF1KHbx.js.map +0 -1
  415. package/dist/_chunks/color-picker-BRQ4Y9SO.js.map +0 -1
  416. package/dist/_chunks/dashboard-grid-DfEY2qci.js +0 -844
  417. package/dist/_chunks/dashboard-grid-DfEY2qci.js.map +0 -1
  418. package/dist/_chunks/date-picker-wRAcq2lt.js.map +0 -1
  419. package/dist/_chunks/date-range-picker-CtUOI38x.js.map +0 -1
  420. package/dist/_chunks/date-time-picker-CLeLKuv9.js.map +0 -1
  421. package/dist/_chunks/hover-card-BnTueNS2.js.map +0 -1
  422. package/dist/_chunks/link-2HokYuIi.js +0 -130
  423. package/dist/_chunks/link-2HokYuIi.js.map +0 -1
  424. package/dist/_chunks/list-RRN2TJ_7.js.map +0 -1
  425. package/dist/_chunks/marketplace-app-shell-Dcx-JEjg.js +0 -541
  426. package/dist/_chunks/marketplace-app-shell-Dcx-JEjg.js.map +0 -1
  427. package/dist/_chunks/message-tray-BB95DA82.js.map +0 -1
  428. package/dist/_chunks/non-modal-tab-exit-D2Bd93Bq.js +0 -65
  429. package/dist/_chunks/non-modal-tab-exit-D2Bd93Bq.js.map +0 -1
  430. package/dist/_chunks/notification-tray-__sJXnsz.js.map +0 -1
  431. package/dist/_chunks/panel-subview-BT-Apwgb.js.map +0 -1
  432. package/dist/_chunks/pdf-viewer-C3minW5b.js.map +0 -1
  433. package/dist/_chunks/phone-input-DxkHMYmu.js.map +0 -1
  434. package/dist/_chunks/popover-BI3oV3eY.js +0 -305
  435. package/dist/_chunks/popover-BI3oV3eY.js.map +0 -1
  436. package/dist/_chunks/product-hub-panel-BSSiGGG4.js.map +0 -1
  437. package/dist/_chunks/rich-text-editor-CkFfmA3v.js.map +0 -1
  438. package/dist/_chunks/scroll-area-ZtFCv9K7.js.map +0 -1
  439. package/dist/_chunks/search-bar-DQJS0wJN.js.map +0 -1
  440. package/dist/_chunks/sidebar-DLsG2AIk.js +0 -1349
  441. package/dist/_chunks/sidebar-DLsG2AIk.js.map +0 -1
  442. package/dist/_chunks/task-editor-ByyRu29Y.js.map +0 -1
  443. package/dist/_chunks/use-state-backed-input-C7ESmxKB.js +0 -59
  444. package/dist/_chunks/use-state-backed-input-C7ESmxKB.js.map +0 -1
  445. package/dist/_chunks/widget-picker-DXYBMTfe.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"phone-input-O9camxkq.js","sources":["../../src/components/phone-input/phone-input.agent.ts","../../src/components/phone-input/phone-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — PhoneInput. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { PhoneInputHandle } from './phone-input';\n\nexport const phoneInputAgent: AgentAdapter<PhoneInputHandle> = {\n id: 'phone-input',\n // A phone number is a single form value, not free-form rich text — `set_value`\n // (not `edit_inline`, which is reserved for in-place rich/cell editing).\n capabilities: ['set_value'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.phoneInput.state.value',\n description:\n 'Current E.164 phone number, or empty string when not yet valid.',\n read: (handle) => handle.getValue(),\n },\n isEmpty: {\n type: 'boolean',\n descriptionKey: 'ui.agent.phoneInput.state.isEmpty',\n description: 'Whether the input has no value.',\n read: (handle) => handle.getValue() === '',\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: 'string',\n description:\n 'Phone number in E.164 or national format; the parser infers the country.',\n },\n },\n required: ['value'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.phoneInput.actions.setValue',\n description:\n 'Replace the phone number (E.164 or national format; parser will infer country).',\n examples: [\n { args: { value: '+393331234567' }, note: 'Set an Italian mobile.' },\n ],\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.phoneInput.actions.clear',\n description: 'Empty the input. Loses any typed value.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n descriptionKey: 'ui.agent.phoneInput.actions.focus',\n description: 'Move keyboard focus to the phone-number input.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'phone-input',\n description: 'Marks the PhoneInput wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type FocusEvent,\n} from 'react';\nimport { useAgentRegistration } from '../../agent';\nimport { phoneInputAgent } from './phone-input.agent';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { useDomValue } from '../_shared/use-dom-value';\n\n/** Agent-readiness curated handle for PhoneInput. */\nexport interface PhoneInputHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n clear: () => void;\n focus: () => void;\n}\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n findPopoverTrigger,\n useNonModalTabExit,\n} from '../_shared/non-modal-tab-exit';\nimport { Command, defaultFilter } from 'cmdk';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport {\n AsYouType,\n getCountries,\n getCountryCallingCode,\n parsePhoneNumberFromString,\n type CountryCode,\n} from 'libphonenumber-js/min';\nimport {\n FormFieldContext,\n useFormField,\n useFormFieldControlId,\n} from '../form-field/form-field-context';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { normalizeDiacritics } from '../_shared/normalize-diacritics';\nimport { MENU_ROW_HIGHLIGHT } from '../_shared/menu-row';\nimport { Flag } from '../flag';\n\nexport interface PhoneInputChangeMeta {\n country: CountryCode;\n isValid: boolean;\n isPossible: boolean;\n type?: string;\n}\n\nexport interface PhoneInputProps {\n value?: string;\n defaultValue?: string;\n /**\n * Country pre-selected when no value is supplied. Defaults to `IT`\n * (AlfaDocs's dominant user base is Italian). Pass a different\n * `CountryCode` to override, or enable `detectBrowserCountry` to\n * derive it from the browser locale.\n */\n defaultCountry?: CountryCode;\n /**\n * When true, infer the default country from `navigator.language` /\n * `Intl.Locale` before falling back to `defaultCountry` (or `IT`).\n * Off by default — most AlfaDocs flows should stay on IT regardless\n * of the visitor's browser locale.\n */\n detectBrowserCountry?: boolean;\n onChange?: (e164: string, meta: PhoneInputChangeMeta) => void;\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n disabled?: boolean;\n readOnly?: boolean;\n placeholder?: string;\n popularCountries?: CountryCode[];\n /**\n * Restrict the country picker to this set (ISO 3166-1 alpha-2 codes), in\n * the order given. Unsupported or duplicate codes are dropped; an empty /\n * all-invalid list is ignored (every country stays selectable).\n * `popularCountries` is intersected with this set. When the list resolves\n * to a single country the picker collapses to a fixed, non-interactive\n * dial code — only the national-number field stays editable.\n */\n allowedCountries?: CountryCode[];\n className?: string;\n id?: string;\n name?: string;\n /**\n * What `name` posts in a native form. `national` (the default) posts the\n * number field's own text, e.g. `333 123 4567`. `e164` posts the full\n * number from a hidden field instead, e.g. `+393331234567`: the string\n * `onChange` reports, so it is empty while the text is not yet a number.\n */\n nameFormat?: 'national' | 'e164';\n required?: boolean;\n /**\n * Fires once when focus has left the whole control. Moving between the\n * country picker and the number field does not fire it. It takes no\n * event: the control has several parts, so there is no single target.\n */\n onBlur?: () => void;\n 'aria-label'?: string;\n}\n\nconst phoneInputWrapperVariants = cva(\n [\n 'ds:group ds:relative ds:inline-flex ds:items-stretch ds:w-full',\n 'ds:rounded-[var(--radius-sm)] ds:border ds:border-[color:var(--control-border)] ds:bg-input',\n 'ds:shadow-[var(--shadow-input)]',\n 'ds:text-foreground',\n 'ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n /* The ring is for the number field only. The country button draws its\n own, and `focus-within` here would draw a second one around it. */\n 'ds:has-[input:focus]:outline-[length:var(--focus-ring-width)] ds:has-[input:focus]:outline-solid',\n 'ds:has-[input:focus]:outline-ring ds:has-[input:focus]:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:has-[input:focus]:outline-[CanvasText]',\n 'ds:has-[:disabled]:cursor-not-allowed ds:has-[:disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:text-[length:var(--font-size-lg)]',\n },\n tone: {\n default: '',\n error: 'ds:border-destructive ds:has-[input:focus]:outline-destructive',\n },\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n },\n },\n);\n\nconst countryTriggerVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:bg-transparent ds:text-foreground',\n 'ds:border-0 ds:border-e ds:border-e-border',\n 'ds:rounded-s-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-muted',\n 'ds:focus:outline-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-3 ds:pe-2',\n md: 'ds:ps-3 ds:pe-2',\n lg: 'ds:ps-4 ds:pe-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst phoneNumberInputVariants = cva(\n [\n 'ds:flex-1 ds:min-w-0 ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:outline-none',\n 'ds:disabled:cursor-not-allowed',\n 'ds:read-only:cursor-default',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:ps-2 ds:pe-3 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:ps-3 ds:pe-4 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst pickerContentClasses = [\n 'ds:z-[var(--z-popover)] ds:overflow-hidden ds:w-72',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2',\n 'ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:animate-none',\n].join(' ');\n\nconst pickerSearchClasses = [\n 'ds:w-full ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:border-0 ds:border-b ds:border-b-border ds:outline-none',\n 'ds:ps-3 ds:pe-3 ds:py-2 ds:text-[var(--font-size-sm)]',\n 'ds:focus:outline-none',\n].join(' ');\n\nconst pickerListClasses =\n 'ds:max-h-72 ds:overflow-y-auto ds:p-[var(--spacing-xs)]';\n\nconst pickerItemClasses = [\n 'ds:relative ds:flex ds:cursor-pointer ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)] ds:ps-3 ds:pe-3 ds:py-2 ds:text-[var(--font-size-sm)]',\n 'ds:text-foreground ds:outline-none ds:select-none',\n MENU_ROW_HIGHLIGHT.selected,\n].join(' ');\n\nconst pickerGroupHeadingClasses = [\n 'ds:ps-3 ds:pe-3 ds:py-1.5',\n 'type-eyebrow ds:text-muted-foreground',\n].join(' ');\n\nconst pickerEmptyClasses =\n 'ds:ps-3 ds:pe-3 ds:py-2 type-body-sm ds:text-muted-foreground';\n\nconst chevronSizeBySize = {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n} as const;\n\nconst flagSizeBySize = {\n sm: 'sm',\n md: 'md',\n lg: 'lg',\n} as const satisfies Record<'sm' | 'md' | 'lg', 'sm' | 'md' | 'lg'>;\n\nfunction countDigitsBefore(str: string, position: number): number {\n let digits = 0;\n for (let i = 0; i < position && i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') digits++;\n }\n return digits;\n}\n\nfunction positionAfterDigits(str: string, targetDigits: number): number {\n if (targetDigits === 0) return 0;\n let count = 0;\n for (let i = 0; i < str.length; i++) {\n if (str[i] >= '0' && str[i] <= '9') {\n count++;\n if (count === targetDigits) return i + 1;\n }\n }\n return str.length;\n}\n\nfunction resolveDefaultCountry(\n explicit: CountryCode | undefined,\n supported: Set<string>,\n detectBrowser: boolean,\n locale: string,\n allowedList: CountryCode[] | null,\n): CountryCode {\n const allowed =\n allowedList && allowedList.length ? new Set<string>(allowedList) : null;\n const ok = (code: string) =>\n supported.has(code) && (!allowed || allowed.has(code));\n\n if (explicit && ok(explicit)) return explicit;\n\n if (detectBrowser) {\n const fromNavigator =\n typeof navigator !== 'undefined' ? navigator.language : undefined;\n if (fromNavigator) {\n const match = fromNavigator.match(/-([A-Za-z]{2})/);\n if (match) {\n const candidate = match[1].toUpperCase();\n if (ok(candidate)) return candidate as CountryCode;\n }\n }\n\n try {\n const region = new Intl.Locale(locale).region;\n if (region && ok(region.toUpperCase())) {\n return region.toUpperCase() as CountryCode;\n }\n } catch {\n // Intl.Locale may throw on malformed BCP-47 — fall through.\n }\n }\n\n // A restricted list with no explicit / detected hit defaults to the\n // consumer's first listed country; otherwise AlfaDocs's Italian-first\n // fallback.\n if (allowed) return allowedList![0];\n return 'IT';\n}\n\ninterface CountryRow {\n code: CountryCode;\n name: string;\n dialCode: string;\n}\n\nfunction buildCountryRows(\n locale: string,\n countries: CountryCode[],\n): CountryRow[] {\n let displayNames: Intl.DisplayNames;\n try {\n displayNames = new Intl.DisplayNames([locale], { type: 'region' });\n } catch {\n displayNames = new Intl.DisplayNames(['en'], { type: 'region' });\n }\n const rows = countries.map<CountryRow>((code) => ({\n code,\n name: displayNames.of(code) ?? code,\n dialCode: getCountryCallingCode(code),\n }));\n const collator = new Intl.Collator(locale);\n return rows.sort((a, b) => collator.compare(a.name, b.name));\n}\n\nexport const PhoneInput = forwardRef<HTMLInputElement, PhoneInputProps>(\n function PhoneInput(\n {\n value,\n defaultValue,\n defaultCountry,\n detectBrowserCountry = false,\n onChange,\n size = 'md',\n tone = 'default',\n disabled,\n readOnly,\n placeholder,\n popularCountries,\n allowedCountries,\n className,\n id,\n name,\n nameFormat = 'national',\n required,\n onBlur,\n 'aria-label': ariaLabel,\n },\n ref,\n ) {\n const { t, i18n } = useTranslation('ui');\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const supportedCountries = useMemo(\n () => new Set(getCountries() as string[]),\n [],\n );\n\n // Consumer-restricted country set, filtered to supported + deduped with\n // order preserved. `null` means \"no restriction\" (every country shown).\n const allowedList = useMemo<CountryCode[] | null>(() => {\n if (!allowedCountries || allowedCountries.length === 0) return null;\n const seen = new Set<string>();\n const filtered = allowedCountries.filter((code) => {\n if (!supportedCountries.has(code) || seen.has(code)) return false;\n seen.add(code);\n return true;\n });\n return filtered.length > 0 ? filtered : null;\n }, [allowedCountries, supportedCountries]);\n\n // A single allowed country has nothing to pick — render the dial code as a\n // fixed, non-interactive prefix instead of a one-item picker.\n const isCountryFixed = allowedList !== null && allowedList.length === 1;\n\n const initialState = useMemo(() => {\n const resolvedCountry = resolveDefaultCountry(\n defaultCountry,\n supportedCountries,\n detectBrowserCountry,\n i18n.language,\n allowedList,\n );\n const raw = value ?? defaultValue;\n if (raw) {\n const parsed = parsePhoneNumberFromString(raw);\n if (parsed?.country) {\n // Clamp the parsed country to `allowedCountries` so the rendered dial\n // code can never leave the allowed set — a single-country lock stays\n // on its country even when handed an off-set value.\n if (!allowedList || allowedList.includes(parsed.country)) {\n return {\n country: parsed.country,\n display: parsed.formatNational(),\n pinned: true,\n };\n }\n return {\n country: resolvedCountry,\n display: new AsYouType(resolvedCountry).input(\n parsed.nationalNumber,\n ),\n pinned: true,\n };\n }\n return { country: resolvedCountry, display: raw, pinned: false };\n }\n return { country: resolvedCountry, display: '', pinned: false };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const [country, setCountry] = useState<CountryCode>(initialState.country);\n const [displayValue, setDisplayValue] = useState<string>(\n initialState.display,\n );\n const [pickerOpen, setPickerOpen] = useState(false);\n const [pickerSearch, setPickerSearch] = useState('');\n\n const isControlled = value !== undefined;\n const lastEmittedRef = useRef<string>('');\n const pendingCaretRef = useRef<number | null>(null);\n // Pins the country once the user (or an incoming value) selects one,\n // so the locale-flip effect below stops re-resolving.\n const userSelectedCountryRef = useRef(initialState.pinned);\n\n const inputRef = useRef<HTMLInputElement | null>(null);\n const composedInputRef = composeRefs(ref, inputRef);\n // The number is written to the input's DOM property, never to its\n // `value` attribute, where a copied outerHTML or a session replay\n // could read it. Declared before the caret effect below, which places\n // the caret in the text this one writes.\n const syncDisplay = useDomValue(inputRef, displayValue);\n const wrapperRef = useRef<HTMLDivElement | null>(null);\n const pickerContentRef = useRef<HTMLDivElement | null>(null);\n\n // Re-resolve the country when i18n.language flips from the bootstrap\n // fallback to the real locale on first paint, unless the user has\n // already pinned a country.\n useEffect(() => {\n if (userSelectedCountryRef.current) return;\n const next = resolveDefaultCountry(\n defaultCountry,\n supportedCountries,\n detectBrowserCountry,\n i18n.language,\n allowedList,\n );\n setCountry((prev) => (prev === next ? prev : next));\n }, [\n i18n.language,\n defaultCountry,\n supportedCountries,\n detectBrowserCountry,\n allowedList,\n ]);\n\n // Sync state back from a controlled `value` prop change that did not\n // originate from this component (e.g. parent reset). Skip the sync when\n // the incoming value matches what we just emitted.\n useEffect(() => {\n if (!isControlled) return;\n const current = value ?? '';\n if (current === lastEmittedRef.current) return;\n if (current === '') {\n setDisplayValue('');\n return;\n }\n const parsed = parsePhoneNumberFromString(current);\n if (\n parsed?.country &&\n (!allowedList || allowedList.includes(parsed.country))\n ) {\n userSelectedCountryRef.current = true;\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n } else {\n // Off-set or unparseable controlled value — keep the country within the\n // allowed set; only sync the displayed digits.\n setDisplayValue(parsed ? parsed.formatNational() : current);\n }\n }, [value, isControlled, allowedList]);\n\n useIsomorphicLayoutEffect(() => {\n if (pendingCaretRef.current == null) return;\n const pos = pendingCaretRef.current;\n pendingCaretRef.current = null;\n const node = inputRef.current;\n if (node && document.activeElement === node) {\n node.setSelectionRange(pos, pos);\n }\n });\n\n const emit = useCallback(\n (nextDisplay: string, nextCountry: CountryCode) => {\n const parsed = parsePhoneNumberFromString(nextDisplay, nextCountry);\n const e164 = parsed?.number ?? '';\n lastEmittedRef.current = e164;\n onChange?.(e164, {\n country: nextCountry,\n isValid: parsed?.isValid() ?? false,\n isPossible: parsed?.isPossible() ?? false,\n type: parsed?.getType(),\n });\n },\n [onChange],\n );\n\n const controlId = useFormFieldControlId(ctx, id);\n const inputId = id ?? (inFormField ? controlId : undefined);\n const effectiveDisabled =\n (inFormField ? ctx.disabled : false) || Boolean(disabled);\n const effectiveRequired =\n (inFormField ? ctx.required : false) || Boolean(required);\n const effectiveInvalid = inFormField ? ctx.invalid : false;\n const effectiveTone = effectiveInvalid ? 'error' : tone;\n const describedBy =\n inFormField && ctx.describedBy ? ctx.describedBy : undefined;\n\n const resolvedPlaceholder =\n placeholder ?? t('inputs.phone.placeholder', 'Phone number');\n\n /* Focus leaving the whole control. The picker is portalled, so it is\n outside the wrapper in the DOM but still part of the control. */\n const onBlurRef = useRef(onBlur);\n onBlurRef.current = onBlur;\n const focusInsideRef = useRef(false);\n const pressInsideRef = useRef(false);\n const isInside = useCallback(\n (node: EventTarget | null) =>\n node instanceof Node &&\n Boolean(\n wrapperRef.current?.contains(node) ||\n pickerContentRef.current?.contains(node),\n ),\n [],\n );\n const leave = useCallback(() => {\n if (!focusInsideRef.current) return;\n focusInsideRef.current = false;\n onBlurRef.current?.();\n }, []);\n const handleFocus = () => {\n focusInsideRef.current = true;\n };\n const handleBlur = (event: FocusEvent<HTMLDivElement>) => {\n const next = event.relatedTarget;\n if (isInside(next)) return;\n /* Safari does not focus a button on click: pressing the country\n button blurs the number field to nowhere. */\n if (next === null && pressInsideRef.current) return;\n leave();\n };\n const listensForBlur = onBlur !== undefined;\n useEffect(() => {\n if (!listensForBlur) return;\n let check: number | undefined;\n const onPointerDown = (event: PointerEvent) => {\n pressInsideRef.current = isInside(event.target);\n if (pressInsideRef.current) return;\n /* A press outside closes the picker, and its focused search box\n can unmount without a blur event. */\n check = window.setTimeout(() => {\n if (!isInside(document.activeElement)) leave();\n }, 0);\n };\n const onPointerUp = () => {\n pressInsideRef.current = false;\n };\n document.addEventListener('pointerdown', onPointerDown, true);\n document.addEventListener('pointerup', onPointerUp, true);\n document.addEventListener('pointercancel', onPointerUp, true);\n return () => {\n window.clearTimeout(check);\n document.removeEventListener('pointerdown', onPointerDown, true);\n document.removeEventListener('pointerup', onPointerUp, true);\n document.removeEventListener('pointercancel', onPointerUp, true);\n };\n }, [listensForBlur, isInside, leave]);\n\n const postsE164 = nameFormat === 'e164' && name !== undefined;\n const e164Value = postsE164\n ? (parsePhoneNumberFromString(displayValue, country)?.number ?? '')\n : '';\n\n const handleInputChange = (event: ChangeEvent<HTMLInputElement>) => {\n // A keystroke the formatter drops (or a read-only field refuses)\n // leaves the text as it was, so no render follows: ask for one, to\n // take the refused character out.\n syncDisplay();\n if (readOnly) return;\n const target = event.target;\n const raw = target.value;\n const caret = target.selectionStart ?? raw.length;\n const digitsBefore = countDigitsBefore(raw, caret);\n\n const formatter = new AsYouType(country);\n const formatted = formatter.input(raw);\n\n pendingCaretRef.current = positionAfterDigits(formatted, digitsBefore);\n setDisplayValue(formatted);\n emit(formatted, country);\n };\n\n const lastEmittedRefForHandle = lastEmittedRef;\n const agentHandle = useMemo<PhoneInputHandle>(\n () => ({\n getValue: () => lastEmittedRefForHandle.current,\n setValue: (next) => {\n if (next === '') {\n setDisplayValue('');\n emit('', country);\n return;\n }\n const parsed = parsePhoneNumberFromString(next);\n if (parsed?.country) {\n userSelectedCountryRef.current = true;\n setCountry(parsed.country);\n setDisplayValue(parsed.formatNational());\n emit(parsed.formatNational(), parsed.country);\n } else {\n const formatter = new AsYouType(country);\n const formatted = formatter.input(next);\n setDisplayValue(formatted);\n emit(formatted, country);\n }\n },\n clear: () => {\n setDisplayValue('');\n emit('', country);\n },\n focus: () => inputRef.current?.focus(),\n }),\n [country, emit, lastEmittedRefForHandle],\n );\n useAgentRegistration(phoneInputAgent, agentHandle, id);\n const exitOnTab = useNonModalTabExit(true, {\n getAnchor: findPopoverTrigger,\n onReturnToTrigger: () => setPickerOpen(false),\n });\n\n const handleCountrySelect = (nextCountry: CountryCode) => {\n if (nextCountry === country) {\n setPickerOpen(false);\n return;\n }\n const digits = displayValue.replace(/\\D/g, '');\n const formatter = new AsYouType(nextCountry);\n const reformatted = digits ? formatter.input(digits) : '';\n userSelectedCountryRef.current = true;\n setCountry(nextCountry);\n setDisplayValue(reformatted);\n setPickerOpen(false);\n setPickerSearch('');\n emit(reformatted, nextCountry);\n requestAnimationFrame(() => {\n inputRef.current?.focus();\n });\n };\n\n const countryRows = useMemo(\n () =>\n buildCountryRows(\n i18n.language,\n allowedList ?? (Array.from(supportedCountries) as CountryCode[]),\n ),\n [i18n.language, supportedCountries, allowedList],\n );\n\n const popularRows = useMemo(() => {\n if (!popularCountries || popularCountries.length === 0) return [];\n const byCode = new Map(countryRows.map((row) => [row.code, row]));\n return popularCountries\n .filter((code): code is CountryCode => supportedCountries.has(code))\n .map((code) => byCode.get(code))\n .filter((row): row is CountryRow => Boolean(row));\n }, [popularCountries, countryRows, supportedCountries]);\n\n const popularCodes = useMemo(\n () => new Set(popularRows.map((row) => row.code)),\n [popularRows],\n );\n\n const remainingRows = useMemo(\n () =>\n popularCodes.size > 0\n ? countryRows.filter((row) => !popularCodes.has(row.code))\n : countryRows,\n [countryRows, popularCodes],\n );\n\n const selected = useMemo(\n () => countryRows.find((row) => row.code === country),\n [countryRows, country],\n );\n const selectedDialCode = selected ? selected.dialCode : '';\n const selectedName = selected ? selected.name : country;\n\n const triggerLabel = t('inputs.phone.countryPickerLabel', 'Country');\n const triggerAccessibleName = `${triggerLabel}: ${selectedName}, +${selectedDialCode}`;\n\n const filterFn = useCallback(\n (candidate: string, searchStr: string, keywords?: string[]) => {\n const normalizedCandidate = normalizeDiacritics(candidate);\n const normalizedSearch = normalizeDiacritics(searchStr);\n const normalizedKeywords = keywords?.map(normalizeDiacritics);\n return defaultFilter(\n normalizedCandidate,\n normalizedSearch,\n normalizedKeywords,\n );\n },\n [],\n );\n\n const renderRow = (row: CountryRow) => {\n const accessibleLabel = `${row.name}, +${row.dialCode}`;\n return (\n <Command.Item\n key={row.code}\n value={row.code}\n keywords={[row.name, row.dialCode, `+${row.dialCode}`]}\n onSelect={() => handleCountrySelect(row.code)}\n className={pickerItemClasses}\n aria-label={accessibleLabel}\n >\n <Flag country={row.code} size={flagSizeBySize[size]} />\n <span className=\"ds:flex-1 ds:truncate\">{row.name}</span>\n <bdi dir=\"ltr\" className=\"ds:text-muted-foreground ds:tabular-nums\">\n +{row.dialCode}\n </bdi>\n </Command.Item>\n );\n };\n\n return (\n <div\n ref={wrapperRef}\n onFocus={handleFocus}\n onBlur={handleBlur}\n data-component=\"phone-input\"\n data-component-id={id}\n data-slot=\"phone-input\"\n className={phoneInputWrapperVariants({\n size,\n tone: effectiveTone,\n className,\n })}\n >\n {isCountryFixed ? (\n <span\n data-slot=\"phone-country-fixed\"\n className={`${countryTriggerVariants({ size })} ds:cursor-default ds:hover:bg-transparent`}\n >\n <span className=\"ds:sr-only\">{`${triggerLabel}: ${selectedName}`}</span>\n <Flag country={country} size={flagSizeBySize[size]} />\n <bdi dir=\"ltr\" className=\"ds:tabular-nums\">\n +{selectedDialCode}\n </bdi>\n </span>\n ) : (\n <Popover.Root open={pickerOpen} onOpenChange={setPickerOpen}>\n <Popover.Trigger asChild>\n <button\n type=\"button\"\n disabled={effectiveDisabled}\n // What opens is a dialog: a search box over the list.\n aria-haspopup=\"dialog\"\n aria-expanded={pickerOpen}\n aria-label={triggerAccessibleName}\n className={countryTriggerVariants({ size })}\n >\n <Flag country={country} size={flagSizeBySize[size]} />\n <bdi dir=\"ltr\" className=\"ds:tabular-nums\">\n +{selectedDialCode}\n </bdi>\n <ChevronDown\n aria-hidden=\"true\"\n className={[\n chevronSizeBySize[size],\n 'ds:shrink-0 ds:text-muted-foreground',\n 'ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n pickerOpen ? 'ds:rotate-180' : '',\n ].join(' ')}\n />\n </button>\n </Popover.Trigger>\n <Popover.Portal>\n <Popover.Content\n ref={pickerContentRef}\n onKeyDown={exitOnTab}\n sideOffset={6}\n align=\"start\"\n // Radix gives the content role=\"dialog\" with no name.\n aria-label={triggerLabel}\n className={pickerContentClasses}\n >\n <Command\n filter={filterFn}\n shouldFilter\n loop\n label={triggerLabel}\n >\n <Command.Input\n asChild\n value={pickerSearch}\n onValueChange={setPickerSearch}\n >\n <input\n data-phone-country-search=\"true\"\n type=\"text\"\n autoComplete=\"off\"\n autoCorrect=\"off\"\n spellCheck={false}\n placeholder={t(\n 'inputs.phone.searchCountry',\n 'Search countries…',\n )}\n className={pickerSearchClasses}\n />\n </Command.Input>\n <Command.List className={pickerListClasses}>\n <Command.Empty className={pickerEmptyClasses}>\n {t('inputs.phone.noCountryFound', 'No country found')}\n </Command.Empty>\n {popularRows.length > 0 ? (\n <Command.Group\n heading={\n <span className={pickerGroupHeadingClasses}>\n {t('inputs.phone.popularCountries', 'Popular')}\n </span>\n }\n >\n {popularRows.map(renderRow)}\n </Command.Group>\n ) : null}\n <Command.Group\n heading={\n popularRows.length > 0 ? (\n <span className={pickerGroupHeadingClasses}>\n {t('inputs.phone.allCountries', 'All countries')}\n </span>\n ) : undefined\n }\n >\n {remainingRows.map(renderRow)}\n </Command.Group>\n </Command.List>\n </Command>\n </Popover.Content>\n </Popover.Portal>\n </Popover.Root>\n )}\n <input\n ref={composedInputRef}\n id={inputId}\n name={postsE164 ? undefined : name}\n type=\"tel\"\n inputMode=\"tel\"\n autoComplete=\"tel-national\"\n placeholder={resolvedPlaceholder}\n disabled={effectiveDisabled}\n readOnly={readOnly}\n required={effectiveRequired}\n aria-label={ariaLabel}\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n onChange={handleInputChange}\n className={phoneNumberInputVariants({ size })}\n />\n {postsE164 ? (\n <input\n type=\"hidden\"\n name={name}\n value={e164Value}\n disabled={effectiveDisabled}\n />\n ) : null}\n </div>\n );\n },\n);\n\nPhoneInput.displayName = 'PhoneInput';\n\nexport {\n phoneInputWrapperVariants,\n countryTriggerVariants,\n phoneNumberInputVariants,\n};\n"],"names":["phoneInputAgent","handle","args","phoneInputWrapperVariants","cva","countryTriggerVariants","phoneNumberInputVariants","pickerContentClasses","pickerSearchClasses","pickerListClasses","pickerItemClasses","MENU_ROW_HIGHLIGHT","pickerGroupHeadingClasses","pickerEmptyClasses","chevronSizeBySize","flagSizeBySize","countDigitsBefore","str","position","digits","i","positionAfterDigits","targetDigits","count","resolveDefaultCountry","explicit","supported","detectBrowser","locale","allowedList","allowed","ok","code","fromNavigator","match","candidate","region","buildCountryRows","countries","displayNames","rows","getCountryCallingCode","collator","a","b","PhoneInput","forwardRef","value","defaultValue","defaultCountry","detectBrowserCountry","onChange","size","tone","disabled","readOnly","placeholder","popularCountries","allowedCountries","className","id","name","nameFormat","required","onBlur","ariaLabel","ref","t","i18n","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","supportedCountries","useMemo","getCountries","seen","filtered","isCountryFixed","initialState","resolvedCountry","raw","parsed","parsePhoneNumberFromString","AsYouType","country","setCountry","useState","displayValue","setDisplayValue","pickerOpen","setPickerOpen","pickerSearch","setPickerSearch","isControlled","lastEmittedRef","useRef","pendingCaretRef","userSelectedCountryRef","inputRef","composedInputRef","composeRefs","syncDisplay","useDomValue","wrapperRef","pickerContentRef","useEffect","next","prev","current","useIsomorphicLayoutEffect","pos","node","emit","useCallback","nextDisplay","nextCountry","e164","controlId","useFormFieldControlId","inputId","effectiveDisabled","effectiveRequired","effectiveInvalid","effectiveTone","describedBy","resolvedPlaceholder","onBlurRef","focusInsideRef","pressInsideRef","isInside","_a","_b","leave","handleFocus","handleBlur","event","listensForBlur","check","onPointerDown","onPointerUp","postsE164","e164Value","handleInputChange","target","caret","digitsBefore","formatted","lastEmittedRefForHandle","agentHandle","useAgentRegistration","exitOnTab","useNonModalTabExit","findPopoverTrigger","handleCountrySelect","formatter","reformatted","countryRows","popularRows","byCode","row","popularCodes","remainingRows","selected","selectedDialCode","selectedName","triggerLabel","triggerAccessibleName","filterFn","searchStr","keywords","normalizedCandidate","normalizeDiacritics","normalizedSearch","normalizedKeywords","defaultFilter","renderRow","accessibleLabel","jsxs","Command","jsx","Flag","Popover","ChevronDown"],"mappings":"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"}
@@ -0,0 +1,367 @@
1
+ import { jsx as i, jsxs as $ } from "react/jsx-runtime";
2
+ import { useState as V, useCallback as C, useRef as y, useEffect as N, useMemo as M, forwardRef as R, useId as X, useContext as m, createContext as k } from "react";
3
+ import * as g from "@radix-ui/react-popover";
4
+ import { c as F } from "./index-D2ZczOXr.js";
5
+ import { useTranslation as ee } from "react-i18next";
6
+ import { I as oe } from "./icon-button-COX76Jdj.js";
7
+ import { u as te } from "./registry-DvAUVLHh.js";
8
+ import { c as q } from "./compose-refs-C0k0tdqF.js";
9
+ import { f as re, u as ne } from "./non-modal-tab-exit-j3CPOuE3.js";
10
+ import { X as se } from "./x-B5YnXwCz.js";
11
+ const ie = {
12
+ id: "popover",
13
+ capabilities: ["open", "close"],
14
+ state: {
15
+ isOpen: {
16
+ type: "boolean",
17
+ descriptionKey: "ui.agent.popover.state.isOpen",
18
+ description: "True when the popover is currently open.",
19
+ read: (e) => e.getIsOpen()
20
+ }
21
+ },
22
+ actions: {
23
+ open: {
24
+ safety: "read",
25
+ idempotent: !0,
26
+ descriptionKey: "ui.agent.popover.actions.open",
27
+ description: "Open the popover.",
28
+ invoke: (e) => {
29
+ e.open();
30
+ }
31
+ },
32
+ close: {
33
+ safety: "read",
34
+ idempotent: !0,
35
+ descriptionKey: "ui.agent.popover.actions.close",
36
+ description: "Close the popover.",
37
+ invoke: (e) => {
38
+ e.close();
39
+ }
40
+ }
41
+ },
42
+ domHooks: {
43
+ root: { attr: "data-component", value: "popover" },
44
+ instanceId: {
45
+ attr: "data-component-id",
46
+ sourceProp: "id",
47
+ description: "Sourced from the id prop on Popover.Root."
48
+ }
49
+ }
50
+ }, D = k({
51
+ headingId: void 0,
52
+ setHeadingId: () => {
53
+ },
54
+ descriptionId: void 0,
55
+ setDescriptionId: () => {
56
+ }
57
+ }), G = k({
58
+ isHoverMode: !1,
59
+ clearHoverTimer: () => {
60
+ },
61
+ closeWithDelay: () => {
62
+ }
63
+ }), E = k(null);
64
+ function ae(e) {
65
+ var r;
66
+ if (!e) return null;
67
+ const o = (r = e.virtualAnchorRef.current) == null ? void 0 : r.current;
68
+ return e.triggerRef.current ? e.triggerRef.current : o instanceof HTMLElement ? o : e.anchorRef.current;
69
+ }
70
+ function de(e) {
71
+ if (e === "top" || e === "bottom") return e;
72
+ const o = typeof document < "u" && document.documentElement.dir === "rtl";
73
+ return e === "start" ? o ? "right" : "left" : o ? "left" : "right";
74
+ }
75
+ const ce = F(
76
+ [
77
+ // `--card-border` 32% alpha provides a subtle edge that survives dark
78
+ // without becoming a heavy outline. The previous transparent border
79
+ // relied on the drop-shadow alone, which reads as a faint halo against
80
+ // dark surfaces and lets the popover float as an unbounded blob; the
81
+ // earlier heavy `--border` (grey-800 since WCAG 1.4.11 bump in 67fef8c)
82
+ // overcorrected the other way and made the popover read as a charcoal
83
+ // box. The forced-colors override below upgrades the border to
84
+ // `CanvasText` so HCM still repaints a fully visible edge.
85
+ "ds:relative ds:bg-[var(--popover)] ds:border ds:border-[color:var(--card-border)] ds:rounded-[var(--radius-md)]",
86
+ "ds:p-[var(--spacing-md)]",
87
+ "ds:shadow-[var(--shadow-lg)]",
88
+ "ds:z-[var(--z-popover)]",
89
+ "ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]",
90
+ "ds:break-words",
91
+ "ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out",
92
+ "ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0",
93
+ "ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95",
94
+ "ds:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2",
95
+ "ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2",
96
+ "ds:motion-reduce:transition-none ds:motion-reduce:animate-none",
97
+ "ds:forced-colors:border-[CanvasText]",
98
+ "ds:focus-visible:outline-none"
99
+ ].join(" "),
100
+ {
101
+ variants: {
102
+ size: {
103
+ sm: "ds:max-w-[var(--popover-size-sm)]",
104
+ md: "ds:max-w-[var(--popover-size-md)]",
105
+ lg: "ds:max-w-[var(--popover-size-lg)]"
106
+ }
107
+ },
108
+ defaultVariants: {
109
+ size: "md"
110
+ }
111
+ }
112
+ ), J = k(void 0);
113
+ function S({
114
+ openOn: e = "click",
115
+ children: o,
116
+ id: r,
117
+ open: t,
118
+ onOpenChange: n,
119
+ defaultOpen: s,
120
+ modal: u
121
+ }) {
122
+ const [j, I] = V(s ?? !1), T = t !== void 0, h = T ? t : j, a = C(
123
+ (w) => {
124
+ T || I(w), n == null || n(w);
125
+ },
126
+ [T, n]
127
+ ), f = y(null), x = e === "hover" || e === "hover-or-click", c = C(() => {
128
+ f.current && (clearTimeout(f.current), f.current = null);
129
+ }, []), z = C(() => {
130
+ c(), f.current = setTimeout(() => {
131
+ a(!0);
132
+ }, 300);
133
+ }, [c, a]), b = C(() => {
134
+ c(), f.current = setTimeout(() => {
135
+ a(!1);
136
+ }, 300);
137
+ }, [c, a]);
138
+ N(() => () => c(), [c]);
139
+ const A = y(h);
140
+ N(() => {
141
+ A.current = h;
142
+ }, [h]);
143
+ const p = M(
144
+ () => ({
145
+ getIsOpen: () => A.current,
146
+ open: () => a(!0),
147
+ close: () => a(!1)
148
+ }),
149
+ [a]
150
+ );
151
+ te(ie, p, r);
152
+ const O = y(null), B = y(null), P = y(void 0), W = M(
153
+ () => ({
154
+ modal: u ?? !1,
155
+ close: () => a(!1),
156
+ triggerRef: O,
157
+ anchorRef: B,
158
+ virtualAnchorRef: P
159
+ }),
160
+ [u, a]
161
+ ), [H, d] = V(void 0), [l, v] = V(
162
+ void 0
163
+ ), L = x ? {
164
+ onMouseEnter: z,
165
+ onMouseLeave: b,
166
+ onFocus: () => {
167
+ c(), a(!0);
168
+ },
169
+ onBlur: b
170
+ } : {};
171
+ return /* @__PURE__ */ i(J.Provider, { value: r, children: /* @__PURE__ */ i(
172
+ D.Provider,
173
+ {
174
+ value: { headingId: H, setHeadingId: d, descriptionId: l, setDescriptionId: v },
175
+ children: /* @__PURE__ */ i(
176
+ G.Provider,
177
+ {
178
+ value: { isHoverMode: x, clearHoverTimer: c, closeWithDelay: b },
179
+ children: /* @__PURE__ */ i(E.Provider, { value: W, children: /* @__PURE__ */ i(
180
+ g.Root,
181
+ {
182
+ open: h,
183
+ onOpenChange: a,
184
+ modal: u,
185
+ children: x ? /* @__PURE__ */ i("span", { className: "ds:inline-flex", ...L, children: o }) : o
186
+ }
187
+ ) })
188
+ }
189
+ )
190
+ }
191
+ ) });
192
+ }
193
+ S.displayName = "Popover.Root";
194
+ const K = R(({ children: e, ...o }, r) => {
195
+ var s;
196
+ const t = (s = m(E)) == null ? void 0 : s.triggerRef, n = M(
197
+ () => q(r, t),
198
+ [r, t]
199
+ );
200
+ return /* @__PURE__ */ i(g.Trigger, { ref: n, ...o, children: e });
201
+ });
202
+ K.displayName = "Popover.Trigger";
203
+ const Q = R(({ virtualRef: e, ...o }, r) => {
204
+ const t = m(E), n = t == null ? void 0 : t.anchorRef, s = t == null ? void 0 : t.virtualAnchorRef, u = M(
205
+ () => q(r, n),
206
+ [r, n]
207
+ );
208
+ return N(() => {
209
+ if (s)
210
+ return s.current = e, () => {
211
+ s.current === e && (s.current = void 0);
212
+ };
213
+ }, [s, e]), /* @__PURE__ */ i(g.Anchor, { ref: u, virtualRef: e, ...o });
214
+ });
215
+ Q.displayName = "Popover.Anchor";
216
+ const U = R(
217
+ ({
218
+ side: e = "bottom",
219
+ align: o = "center",
220
+ size: r = "md",
221
+ showArrow: t = !0,
222
+ className: n,
223
+ children: s,
224
+ onKeyDown: u,
225
+ onFocus: j,
226
+ onCloseAutoFocus: I,
227
+ ...T
228
+ }, h) => {
229
+ const { headingId: a, descriptionId: f } = m(D), x = m(J), {
230
+ isHoverMode: c,
231
+ clearHoverTimer: z,
232
+ closeWithDelay: b
233
+ } = m(G), A = de(e), p = m(E), O = C(
234
+ (d) => ae(p) ?? re(d),
235
+ [p]
236
+ ), B = ne(!(p != null && p.modal), {
237
+ getAnchor: O,
238
+ onReturnToTrigger: c || p == null ? void 0 : p.close
239
+ }), P = y(null), W = c ? {
240
+ onMouseEnter: z,
241
+ onMouseLeave: b,
242
+ onBlur: b
243
+ } : {}, H = j ?? (c ? z : void 0);
244
+ return /* @__PURE__ */ i(g.Portal, { children: /* @__PURE__ */ $(
245
+ g.Content,
246
+ {
247
+ ref: h,
248
+ side: A,
249
+ align: o,
250
+ sideOffset: 8,
251
+ collisionPadding: 8,
252
+ "aria-labelledby": a,
253
+ "aria-describedby": f,
254
+ className: ce({ size: r, className: n }),
255
+ "data-component": "popover",
256
+ "data-component-id": x,
257
+ ...W,
258
+ ...T,
259
+ onFocus: (d) => {
260
+ P.current = null, H == null || H(d);
261
+ },
262
+ onKeyDown: (d) => {
263
+ const l = d.currentTarget, v = l.ownerDocument, L = l.contains(v.activeElement);
264
+ u == null || u(d), B(d);
265
+ const w = !l.contains(v.activeElement);
266
+ d.key === "Tab" && L && w && (P.current = v);
267
+ },
268
+ onCloseAutoFocus: (d) => {
269
+ const l = P.current;
270
+ P.current = null;
271
+ const v = l == null ? void 0 : l.activeElement;
272
+ if (l && v && v !== l.body) {
273
+ d.preventDefault();
274
+ return;
275
+ }
276
+ I == null || I(d);
277
+ },
278
+ children: [
279
+ s,
280
+ t && /* @__PURE__ */ i(
281
+ g.Arrow,
282
+ {
283
+ width: 12,
284
+ height: 6,
285
+ className: "ds:fill-[var(--popover)]"
286
+ }
287
+ )
288
+ ]
289
+ }
290
+ ) });
291
+ }
292
+ );
293
+ U.displayName = "Popover.Content";
294
+ const Y = R(
295
+ ({ className: e }, o) => {
296
+ const { t: r } = ee("ui");
297
+ return /* @__PURE__ */ i(
298
+ "div",
299
+ {
300
+ className: [
301
+ "ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]",
302
+ e
303
+ ].filter(Boolean).join(" "),
304
+ children: /* @__PURE__ */ i(g.Close, { asChild: !0, children: /* @__PURE__ */ i(
305
+ oe,
306
+ {
307
+ ref: o,
308
+ icon: /* @__PURE__ */ i(se, {}),
309
+ intent: "ghost",
310
+ size: "sm",
311
+ "aria-label": r("common.close", "Close")
312
+ }
313
+ ) })
314
+ }
315
+ );
316
+ }
317
+ );
318
+ Y.displayName = "Popover.Close";
319
+ const Z = R(
320
+ ({ as: e = "h3", className: o, ...r }, t) => {
321
+ const n = X(), { setHeadingId: s } = m(D);
322
+ return N(() => (s(n), () => s(void 0)), [n, s]), /* @__PURE__ */ i(
323
+ e,
324
+ {
325
+ ref: t,
326
+ id: n,
327
+ className: [
328
+ "type-title-item ds:leading-snug ds:break-words",
329
+ "ds:pe-[var(--spacing-xl)]",
330
+ o
331
+ ].filter(Boolean).join(" "),
332
+ ...r
333
+ }
334
+ );
335
+ }
336
+ );
337
+ Z.displayName = "Popover.Heading";
338
+ const _ = R(({ className: e, ...o }, r) => {
339
+ const t = X(), { setDescriptionId: n } = m(D);
340
+ return N(() => (n(t), () => n(void 0)), [t, n]), /* @__PURE__ */ i(
341
+ "div",
342
+ {
343
+ ref: r,
344
+ id: t,
345
+ className: [
346
+ "ds:text-[var(--muted-foreground)] type-body-sm ds:mt-[var(--spacing-xs)]",
347
+ e
348
+ ].filter(Boolean).join(" "),
349
+ ...o
350
+ }
351
+ );
352
+ });
353
+ _.displayName = "Popover.Description";
354
+ const Pe = Object.assign(S, {
355
+ Root: S,
356
+ Trigger: K,
357
+ Anchor: Q,
358
+ Content: U,
359
+ Close: Y,
360
+ Heading: Z,
361
+ Description: _
362
+ });
363
+ export {
364
+ Pe as P,
365
+ ie as p
366
+ };
367
+ //# sourceMappingURL=popover-BG75rYjN.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"popover-BG75rYjN.js","sources":["../../src/components/popover/popover.agent.ts","../../src/components/popover/popover.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { PopoverHandle } from './popover';\n\nexport const popoverAgent: AgentAdapter<PopoverHandle> = {\n id: 'popover',\n capabilities: ['open', 'close'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.popover.state.isOpen',\n description: 'True when the popover is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.popover.actions.open',\n description: 'Open the popover.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.popover.actions.close',\n description: 'Close the popover.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'popover' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Popover.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\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 { X } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { useAgentRegistration } from '../../agent';\nimport { composeRefs } from '../_shared/compose-refs';\nimport {\n findPopoverTrigger,\n useNonModalTabExit,\n} from '../_shared/non-modal-tab-exit';\nimport { popoverAgent } from './popover.agent';\n\ninterface PopoverA11yContext {\n headingId: string | undefined;\n setHeadingId: (id: string | undefined) => void;\n descriptionId: string | undefined;\n setDescriptionId: (id: string | undefined) => void;\n}\n\nconst A11yContext = createContext<PopoverA11yContext>({\n headingId: undefined,\n setHeadingId: () => {},\n descriptionId: undefined,\n setDescriptionId: () => {},\n});\n\ninterface PopoverHoverContext {\n isHoverMode: boolean;\n clearHoverTimer: () => void;\n closeWithDelay: () => void;\n}\n\nconst HoverContext = createContext<PopoverHoverContext>({\n isHoverMode: false,\n clearHoverTimer: () => {},\n closeWithDelay: () => {},\n});\n\ntype VirtualAnchorRef = ComponentPropsWithoutRef<\n typeof RadixPopover.Anchor\n>['virtualRef'];\n\n// Where a non-modal popover sits in reading order: Tab leaves to just after\n// its trigger, or its anchor when there is no trigger.\ninterface PopoverPlacementContext {\n modal: boolean;\n close: () => void;\n triggerRef: MutableRefObject<HTMLElement | null>;\n anchorRef: MutableRefObject<HTMLElement | null>;\n virtualAnchorRef: MutableRefObject<VirtualAnchorRef>;\n}\n\nconst PlacementContext = createContext<PopoverPlacementContext | null>(null);\n\nfunction resolveAnchor(\n placement: PopoverPlacementContext | null,\n): HTMLElement | null {\n if (!placement) return null;\n const virtual = placement.virtualAnchorRef.current?.current;\n if (placement.triggerRef.current) return placement.triggerRef.current;\n if (virtual instanceof HTMLElement) return virtual;\n return placement.anchorRef.current;\n}\n\nfunction resolvePhysicalSide(\n logicalSide: 'start' | 'top' | 'end' | 'bottom',\n): 'left' | 'top' | 'right' | 'bottom' {\n if (logicalSide === 'top' || logicalSide === 'bottom') return logicalSide;\n const isRtl =\n typeof document !== 'undefined' && document.documentElement.dir === 'rtl';\n if (logicalSide === 'start') return isRtl ? 'right' : 'left';\n /* logicalSide === 'end' */\n return isRtl ? 'left' : 'right';\n}\n\nconst contentVariants = cva(\n [\n // `--card-border` 32% alpha provides a subtle edge that survives dark\n // without becoming a heavy outline. The previous transparent border\n // relied on the drop-shadow alone, which reads as a faint halo against\n // dark surfaces and lets the popover float as an unbounded blob; the\n // earlier heavy `--border` (grey-800 since WCAG 1.4.11 bump in 67fef8c)\n // overcorrected the other way and made the popover read as a charcoal\n // box. The forced-colors override below upgrades the border to\n // `CanvasText` so HCM still repaints a fully visible edge.\n 'ds:relative ds:bg-[var(--popover)] ds:border ds:border-[color:var(--card-border)] ds:rounded-[var(--radius-md)]',\n 'ds:p-[var(--spacing-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n 'ds:text-[var(--popover-foreground)] ds:text-[length:var(--font-size-sm)]',\n 'ds:break-words',\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:data-[side=bottom]:slide-in-from-top-2 ds:data-[side=left]:slide-in-from-right-2',\n 'ds:data-[side=right]:slide-in-from-left-2 ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:forced-colors:border-[CanvasText]',\n 'ds:focus-visible:outline-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:max-w-[var(--popover-size-sm)]',\n md: 'ds:max-w-[var(--popover-size-md)]',\n lg: 'ds:max-w-[var(--popover-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\n// Curated agent-readiness handle — see popover.agent.ts.\nexport interface PopoverHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface PopoverRootProps extends ComponentPropsWithoutRef<\n typeof RadixPopover.Root\n> {\n openOn?: 'click' | 'hover' | 'hover-or-click';\n /** Opaque instance id — forwarded to Popover.Content as `data-component-id`. */\n id?: string;\n children: ReactNode;\n}\n\nconst PopoverIdContext = createContext<string | undefined>(undefined);\n\nfunction PopoverRoot({\n openOn = 'click',\n children,\n id,\n open: controlledOpen,\n onOpenChange,\n defaultOpen,\n modal,\n}: PopoverRootProps) {\n const [internalOpen, setInternalOpen] = useState(defaultOpen ?? false);\n const isControlled = controlledOpen !== undefined;\n const isOpen = isControlled ? controlledOpen : internalOpen;\n\n const handleOpenChange = useCallback(\n (nextOpen: boolean) => {\n if (!isControlled) setInternalOpen(nextOpen);\n onOpenChange?.(nextOpen);\n },\n [isControlled, onOpenChange],\n );\n\n const hoverTimerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n const isHoverMode = openOn === 'hover' || openOn === 'hover-or-click';\n\n const clearHoverTimer = useCallback(() => {\n if (hoverTimerRef.current) {\n clearTimeout(hoverTimerRef.current);\n hoverTimerRef.current = null;\n }\n }, []);\n\n const openWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(true);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n const closeWithDelay = useCallback(() => {\n clearHoverTimer();\n hoverTimerRef.current = setTimeout(() => {\n handleOpenChange(false);\n }, 300);\n }, [clearHoverTimer, handleOpenChange]);\n\n useEffect(() => {\n return () => clearHoverTimer();\n }, [clearHoverTimer]);\n\n // Agent handle.\n const openRef = useRef(isOpen);\n useEffect(() => {\n openRef.current = isOpen;\n }, [isOpen]);\n\n const agentHandle = useMemo<PopoverHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n }),\n [handleOpenChange],\n );\n useAgentRegistration(popoverAgent, agentHandle, id);\n\n const triggerRef = useRef<HTMLElement | null>(null);\n const anchorRef = useRef<HTMLElement | null>(null);\n const virtualAnchorRef = useRef<VirtualAnchorRef>(undefined);\n const placement = useMemo<PopoverPlacementContext>(\n () => ({\n modal: modal ?? false,\n close: () => handleOpenChange(false),\n triggerRef,\n anchorRef,\n virtualAnchorRef,\n }),\n [modal, handleOpenChange],\n );\n\n /* a11y context state */\n const [headingId, setHeadingId] = useState<string | undefined>(undefined);\n const [descriptionId, setDescriptionId] = useState<string | undefined>(\n undefined,\n );\n\n const hoverHandlers = isHoverMode\n ? {\n onMouseEnter: openWithDelay,\n onMouseLeave: closeWithDelay,\n onFocus: () => {\n clearHoverTimer();\n handleOpenChange(true);\n },\n onBlur: closeWithDelay,\n }\n : {};\n\n return (\n <PopoverIdContext.Provider value={id}>\n <A11yContext.Provider\n value={{ headingId, setHeadingId, descriptionId, setDescriptionId }}\n >\n <HoverContext.Provider\n value={{ isHoverMode, clearHoverTimer, closeWithDelay }}\n >\n <PlacementContext.Provider value={placement}>\n <RadixPopover.Root\n open={isOpen}\n onOpenChange={handleOpenChange}\n modal={modal}\n >\n {isHoverMode ? (\n <span className=\"ds:inline-flex\" {...hoverHandlers}>\n {children}\n </span>\n ) : (\n children\n )}\n </RadixPopover.Root>\n </PlacementContext.Provider>\n </HoverContext.Provider>\n </A11yContext.Provider>\n </PopoverIdContext.Provider>\n );\n}\nPopoverRoot.displayName = 'Popover.Root';\n\nconst PopoverTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixPopover.Trigger>\n>(({ children, ...props }, ref) => {\n const triggerRef = useContext(PlacementContext)?.triggerRef;\n const composedRef = useMemo(\n () => composeRefs<HTMLElement>(ref, triggerRef),\n [ref, triggerRef],\n );\n return (\n <RadixPopover.Trigger ref={composedRef} {...props}>\n {children}\n </RadixPopover.Trigger>\n );\n});\nPopoverTrigger.displayName = 'Popover.Trigger';\n\n// Positions Content against an arbitrary element when a Trigger button is\n// unsuitable (e.g. an editor on a role=tab). Wraps Radix to record the anchor\n// for Tab order; props and ref pass straight through.\nconst PopoverAnchor = forwardRef<\n ElementRef<typeof RadixPopover.Anchor>,\n ComponentPropsWithoutRef<typeof RadixPopover.Anchor>\n>(({ virtualRef, ...props }, ref) => {\n const placement = useContext(PlacementContext);\n const anchorRef = placement?.anchorRef;\n const virtualAnchorRef = placement?.virtualAnchorRef;\n const composedRef = useMemo(\n () => composeRefs<HTMLElement>(ref, anchorRef),\n [ref, anchorRef],\n );\n useEffect(() => {\n if (!virtualAnchorRef) return;\n virtualAnchorRef.current = virtualRef;\n return () => {\n if (virtualAnchorRef.current === virtualRef) {\n virtualAnchorRef.current = undefined;\n }\n };\n }, [virtualAnchorRef, virtualRef]);\n return (\n <RadixPopover.Anchor ref={composedRef} virtualRef={virtualRef} {...props} />\n );\n});\nPopoverAnchor.displayName = 'Popover.Anchor';\n\nexport interface PopoverContentProps\n extends\n Omit<\n ComponentPropsWithoutRef<typeof RadixPopover.Content>,\n 'side' | 'align'\n >,\n VariantProps<typeof contentVariants> {\n side?: 'start' | 'top' | 'end' | 'bottom';\n align?: 'start' | 'center' | 'end';\n size?: 'sm' | 'md' | 'lg';\n showArrow?: boolean;\n className?: string;\n children: ReactNode;\n}\n\nconst PopoverContent = forwardRef<HTMLDivElement, PopoverContentProps>(\n (\n {\n side = 'bottom',\n align = 'center',\n size = 'md',\n showArrow = true,\n className,\n children,\n onKeyDown,\n onFocus,\n onCloseAutoFocus,\n ...props\n },\n ref,\n ) => {\n const { headingId, descriptionId } = useContext(A11yContext);\n const instanceId = useContext(PopoverIdContext);\n const {\n isHoverMode: isHover,\n clearHoverTimer: cancelTimer,\n closeWithDelay: delayClose,\n } = useContext(HoverContext);\n const physicalSide = resolvePhysicalSide(side);\n\n const placement = useContext(PlacementContext);\n const getAnchor = useCallback(\n (content: HTMLElement) =>\n resolveAnchor(placement) ?? findPopoverTrigger(content),\n [placement],\n );\n // A hover popover shows while its trigger has focus, so it stays open there.\n const exitOnTab = useNonModalTabExit(!placement?.modal, {\n getAnchor,\n onReturnToTrigger: isHover ? undefined : placement?.close,\n });\n // The document Tab carried focus out into. If focus still rests there when\n // the popover closes, the consumer's focus return is skipped.\n const tabbedOutRef = useRef<Document | null>(null);\n\n const contentHoverHandlers = isHover\n ? {\n onMouseEnter: cancelTimer,\n onMouseLeave: delayClose,\n onBlur: delayClose,\n }\n : {};\n const handleFocus = onFocus ?? (isHover ? cancelTimer : undefined);\n\n return (\n <RadixPopover.Portal>\n <RadixPopover.Content\n ref={ref}\n side={physicalSide}\n align={align}\n sideOffset={8}\n collisionPadding={8}\n aria-labelledby={headingId}\n aria-describedby={descriptionId}\n className={contentVariants({ size, className })}\n data-component=\"popover\"\n data-component-id={instanceId}\n {...contentHoverHandlers}\n {...props}\n onFocus={(event) => {\n tabbedOutRef.current = null;\n handleFocus?.(event);\n }}\n onKeyDown={(event) => {\n const content = event.currentTarget;\n const doc = content.ownerDocument;\n const wasInside = content.contains(doc.activeElement);\n onKeyDown?.(event);\n exitOnTab(event);\n const isOut = !content.contains(doc.activeElement);\n if (event.key === 'Tab' && wasInside && isOut) {\n tabbedOutRef.current = doc;\n }\n }}\n onCloseAutoFocus={(event) => {\n const doc = tabbedOutRef.current;\n tabbedOutRef.current = null;\n const resting = doc?.activeElement;\n if (doc && resting && resting !== doc.body) {\n event.preventDefault();\n return;\n }\n onCloseAutoFocus?.(event);\n }}\n >\n {children}\n {showArrow && (\n <RadixPopover.Arrow\n width={12}\n height={6}\n className=\"ds:fill-[var(--popover)]\"\n />\n )}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n );\n },\n);\nPopoverContent.displayName = 'Popover.Content';\n\nconst PopoverClose = forwardRef<HTMLButtonElement, { className?: string }>(\n ({ className }, ref) => {\n const { t } = useTranslation('ui');\n\n return (\n <div\n className={[\n 'ds:absolute ds:top-[var(--spacing-sm)] ds:end-[var(--spacing-sm)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n >\n <RadixPopover.Close asChild>\n <IconButton\n ref={ref}\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('common.close', 'Close')}\n />\n </RadixPopover.Close>\n </div>\n );\n },\n);\nPopoverClose.displayName = 'Popover.Close';\n\ninterface PopoverHeadingProps extends HTMLAttributes<HTMLHeadingElement> {\n as?: 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n}\n\nconst PopoverHeading = forwardRef<HTMLHeadingElement, PopoverHeadingProps>(\n ({ as: Tag = 'h3', className, ...props }, ref) => {\n const generatedId = useId();\n const { setHeadingId } = useContext(A11yContext);\n\n useEffect(() => {\n setHeadingId(generatedId);\n return () => setHeadingId(undefined);\n }, [generatedId, setHeadingId]);\n\n return (\n <Tag\n ref={ref}\n id={generatedId}\n className={[\n 'type-title-item ds:leading-snug ds:break-words',\n 'ds:pe-[var(--spacing-xl)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n },\n);\nPopoverHeading.displayName = 'Popover.Heading';\n\n/**\n * The popover's description region.\n *\n * A `div`, not a `p`. A popover body routinely holds structured content —\n * the calendar's hover peek puts `KeyValuePair`s in here — and a `p` may\n * only contain phrasing content, so the browser silently closed the\n * paragraph and re-parented the rest. That breaks the DOM the\n * `aria-describedby` region points at, so the description a screen reader\n * announces was not the description on screen. React said so on every\n * open: \"validateDOMNesting: <div> cannot appear as a descendant of <p>\".\n *\n * The accessible wiring is by id, not by tag, so nothing about the\n * announcement depends on the element being a paragraph.\n */\nconst PopoverDescription = forwardRef<\n HTMLDivElement,\n HTMLAttributes<HTMLDivElement>\n>(({ className, ...props }, ref) => {\n const generatedId = useId();\n const { setDescriptionId } = useContext(A11yContext);\n\n useEffect(() => {\n setDescriptionId(generatedId);\n return () => setDescriptionId(undefined);\n }, [generatedId, setDescriptionId]);\n\n return (\n <div\n ref={ref}\n id={generatedId}\n className={[\n 'ds:text-[var(--muted-foreground)] type-body-sm ds:mt-[var(--spacing-xs)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n );\n});\nPopoverDescription.displayName = 'Popover.Description';\n\nexport const Popover = Object.assign(PopoverRoot, {\n Root: PopoverRoot,\n Trigger: PopoverTrigger,\n Anchor: PopoverAnchor,\n Content: PopoverContent,\n Close: PopoverClose,\n Heading: PopoverHeading,\n Description: PopoverDescription,\n});\n\nexport type { PopoverRootProps as PopoverProps, PopoverHeadingProps };\n"],"names":["popoverAgent","handle","A11yContext","createContext","HoverContext","PlacementContext","resolveAnchor","placement","virtual","_a","resolvePhysicalSide","logicalSide","isRtl","contentVariants","cva","PopoverIdContext","PopoverRoot","openOn","children","id","controlledOpen","onOpenChange","defaultOpen","modal","internalOpen","setInternalOpen","useState","isControlled","isOpen","handleOpenChange","useCallback","nextOpen","hoverTimerRef","useRef","isHoverMode","clearHoverTimer","openWithDelay","closeWithDelay","useEffect","openRef","agentHandle","useMemo","useAgentRegistration","triggerRef","anchorRef","virtualAnchorRef","headingId","setHeadingId","descriptionId","setDescriptionId","hoverHandlers","jsx","RadixPopover","PopoverTrigger","forwardRef","props","ref","useContext","composedRef","composeRefs","PopoverAnchor","virtualRef","PopoverContent","side","align","size","showArrow","className","onKeyDown","onFocus","onCloseAutoFocus","instanceId","isHover","cancelTimer","delayClose","physicalSide","getAnchor","content","findPopoverTrigger","exitOnTab","useNonModalTabExit","tabbedOutRef","contentHoverHandlers","handleFocus","jsxs","event","doc","wasInside","isOut","resting","PopoverClose","t","useTranslation","IconButton","X","PopoverHeading","Tag","generatedId","useId","PopoverDescription","Popover"],"mappings":";;;;;;;;;;AAGO,MAAMA,KAA4C;AAAA,EACvD,IAAI;AAAA,EACJ,cAAc,CAAC,QAAQ,OAAO;AAAA,EAC9B,OAAO;AAAA,IACL,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACC,MAAWA,EAAO,UAAA;AAAA,IAAU;AAAA,EACrC;AAAA,EAEF,SAAS;AAAA,IACP,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,KAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,MAAA;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM,EAAE,MAAM,kBAAkB,OAAO,UAAA;AAAA,IACvC,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ,GCNMC,IAAcC,EAAkC;AAAA,EACpD,WAAW;AAAA,EACX,cAAc,MAAM;AAAA,EAAC;AAAA,EACrB,eAAe;AAAA,EACf,kBAAkB,MAAM;AAAA,EAAC;AAC3B,CAAC,GAQKC,IAAeD,EAAmC;AAAA,EACtD,aAAa;AAAA,EACb,iBAAiB,MAAM;AAAA,EAAC;AAAA,EACxB,gBAAgB,MAAM;AAAA,EAAC;AACzB,CAAC,GAgBKE,IAAmBF,EAA8C,IAAI;AAE3E,SAASG,GACPC,GACoB;;AACpB,MAAI,CAACA,EAAW,QAAO;AACvB,QAAMC,KAAUC,IAAAF,EAAU,iBAAiB,YAA3B,gBAAAE,EAAoC;AACpD,SAAIF,EAAU,WAAW,UAAgBA,EAAU,WAAW,UAC1DC,aAAmB,cAAoBA,IACpCD,EAAU,UAAU;AAC7B;AAEA,SAASG,GACPC,GACqC;AACrC,MAAIA,MAAgB,SAASA,MAAgB,SAAU,QAAOA;AAC9D,QAAMC,IACJ,OAAO,WAAa,OAAe,SAAS,gBAAgB,QAAQ;AACtE,SAAID,MAAgB,UAAgBC,IAAQ,UAAU,SAE/CA,IAAQ,SAAS;AAC1B;AAEA,MAAMC,KAAkBC;AAAA,EACtB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IASE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB;AAAA,MACf,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAkBMC,IAAmBZ,EAAkC,MAAS;AAEpE,SAASa,EAAY;AAAA,EACnB,QAAAC,IAAS;AAAA,EACT,UAAAC;AAAA,EACA,IAAAC;AAAA,EACA,MAAMC;AAAA,EACN,cAAAC;AAAA,EACA,aAAAC;AAAA,EACA,OAAAC;AACF,GAAqB;AACnB,QAAM,CAACC,GAAcC,CAAe,IAAIC,EAASJ,KAAe,EAAK,GAC/DK,IAAeP,MAAmB,QAClCQ,IAASD,IAAeP,IAAiBI,GAEzCK,IAAmBC;AAAA,IACvB,CAACC,MAAsB;AACrB,MAAKJ,KAAcF,EAAgBM,CAAQ,GAC3CV,KAAA,QAAAA,EAAeU;AAAA,IACjB;AAAA,IACA,CAACJ,GAAcN,CAAY;AAAA,EAAA,GAGvBW,IAAgBC,EAA6C,IAAI,GACjEC,IAAcjB,MAAW,WAAWA,MAAW,kBAE/CkB,IAAkBL,EAAY,MAAM;AACxC,IAAIE,EAAc,YAChB,aAAaA,EAAc,OAAO,GAClCA,EAAc,UAAU;AAAA,EAE5B,GAAG,CAAA,CAAE,GAECI,IAAgBN,EAAY,MAAM;AACtC,IAAAK,EAAA,GACAH,EAAc,UAAU,WAAW,MAAM;AACvC,MAAAH,EAAiB,EAAI;AAAA,IACvB,GAAG,GAAG;AAAA,EACR,GAAG,CAACM,GAAiBN,CAAgB,CAAC,GAEhCQ,IAAiBP,EAAY,MAAM;AACvC,IAAAK,EAAA,GACAH,EAAc,UAAU,WAAW,MAAM;AACvC,MAAAH,EAAiB,EAAK;AAAA,IACxB,GAAG,GAAG;AAAA,EACR,GAAG,CAACM,GAAiBN,CAAgB,CAAC;AAEtC,EAAAS,EAAU,MACD,MAAMH,EAAA,GACZ,CAACA,CAAe,CAAC;AAGpB,QAAMI,IAAUN,EAAOL,CAAM;AAC7B,EAAAU,EAAU,MAAM;AACd,IAAAC,EAAQ,UAAUX;AAAA,EACpB,GAAG,CAACA,CAAM,CAAC;AAEX,QAAMY,IAAcC;AAAA,IAClB,OAAO;AAAA,MACL,WAAW,MAAMF,EAAQ;AAAA,MACzB,MAAM,MAAMV,EAAiB,EAAI;AAAA,MACjC,OAAO,MAAMA,EAAiB,EAAK;AAAA,IAAA;AAAA,IAErC,CAACA,CAAgB;AAAA,EAAA;AAEnB,EAAAa,GAAqB1C,IAAcwC,GAAarB,CAAE;AAElD,QAAMwB,IAAaV,EAA2B,IAAI,GAC5CW,IAAYX,EAA2B,IAAI,GAC3CY,IAAmBZ,EAAyB,MAAS,GACrD1B,IAAYkC;AAAA,IAChB,OAAO;AAAA,MACL,OAAOlB,KAAS;AAAA,MAChB,OAAO,MAAMM,EAAiB,EAAK;AAAA,MACnC,YAAAc;AAAA,MACA,WAAAC;AAAA,MACA,kBAAAC;AAAA,IAAA;AAAA,IAEF,CAACtB,GAAOM,CAAgB;AAAA,EAAA,GAIpB,CAACiB,GAAWC,CAAY,IAAIrB,EAA6B,MAAS,GAClE,CAACsB,GAAeC,CAAgB,IAAIvB;AAAA,IACxC;AAAA,EAAA,GAGIwB,IAAgBhB,IAClB;AAAA,IACE,cAAcE;AAAA,IACd,cAAcC;AAAA,IACd,SAAS,MAAM;AACb,MAAAF,EAAA,GACAN,EAAiB,EAAI;AAAA,IACvB;AAAA,IACA,QAAQQ;AAAA,EAAA,IAEV,CAAA;AAEJ,SACE,gBAAAc,EAACpC,EAAiB,UAAjB,EAA0B,OAAOI,GAChC,UAAA,gBAAAgC;AAAA,IAACjD,EAAY;AAAA,IAAZ;AAAA,MACC,OAAO,EAAE,WAAA4C,GAAW,cAAAC,GAAc,eAAAC,GAAe,kBAAAC,EAAA;AAAA,MAEjD,UAAA,gBAAAE;AAAA,QAAC/C,EAAa;AAAA,QAAb;AAAA,UACC,OAAO,EAAE,aAAA8B,GAAa,iBAAAC,GAAiB,gBAAAE,EAAA;AAAA,UAEvC,UAAA,gBAAAc,EAAC9C,EAAiB,UAAjB,EAA0B,OAAOE,GAChC,UAAA,gBAAA4C;AAAA,YAACC,EAAa;AAAA,YAAb;AAAA,cACC,MAAMxB;AAAA,cACN,cAAcC;AAAA,cACd,OAAAN;AAAA,cAEC,UAAAW,sBACE,QAAA,EAAK,WAAU,kBAAkB,GAAGgB,GAClC,UAAAhC,GACH,IAEAA;AAAA,YAAA;AAAA,UAAA,EAEJ,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IACF;AAAA,EAAA,GAEJ;AAEJ;AACAF,EAAY,cAAc;AAE1B,MAAMqC,IAAiBC,EAGrB,CAAC,EAAE,UAAApC,GAAU,GAAGqC,EAAA,GAASC,MAAQ;;AACjC,QAAMb,KAAalC,IAAAgD,EAAWpD,CAAgB,MAA3B,gBAAAI,EAA8B,YAC3CiD,IAAcjB;AAAA,IAClB,MAAMkB,EAAyBH,GAAKb,CAAU;AAAA,IAC9C,CAACa,GAAKb,CAAU;AAAA,EAAA;AAElB,SACE,gBAAAQ,EAACC,EAAa,SAAb,EAAqB,KAAKM,GAAc,GAAGH,GACzC,UAAArC,GACH;AAEJ,CAAC;AACDmC,EAAe,cAAc;AAK7B,MAAMO,IAAgBN,EAGpB,CAAC,EAAE,YAAAO,GAAY,GAAGN,EAAA,GAASC,MAAQ;AACnC,QAAMjD,IAAYkD,EAAWpD,CAAgB,GACvCuC,IAAYrC,KAAA,gBAAAA,EAAW,WACvBsC,IAAmBtC,KAAA,gBAAAA,EAAW,kBAC9BmD,IAAcjB;AAAA,IAClB,MAAMkB,EAAyBH,GAAKZ,CAAS;AAAA,IAC7C,CAACY,GAAKZ,CAAS;AAAA,EAAA;AAEjB,SAAAN,EAAU,MAAM;AACd,QAAKO;AACL,aAAAA,EAAiB,UAAUgB,GACpB,MAAM;AACX,QAAIhB,EAAiB,YAAYgB,MAC/BhB,EAAiB,UAAU;AAAA,MAE/B;AAAA,EACF,GAAG,CAACA,GAAkBgB,CAAU,CAAC,GAE/B,gBAAAV,EAACC,EAAa,QAAb,EAAoB,KAAKM,GAAa,YAAAG,GAAyB,GAAGN,GAAO;AAE9E,CAAC;AACDK,EAAc,cAAc;AAiB5B,MAAME,IAAiBR;AAAA,EACrB,CACE;AAAA,IACE,MAAAS,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,WAAAC,IAAY;AAAA,IACZ,WAAAC;AAAA,IACA,UAAAjD;AAAA,IACA,WAAAkD;AAAA,IACA,SAAAC;AAAA,IACA,kBAAAC;AAAA,IACA,GAAGf;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,WAAAV,GAAW,eAAAE,MAAkBS,EAAWvD,CAAW,GACrDqE,IAAad,EAAW1C,CAAgB,GACxC;AAAA,MACJ,aAAayD;AAAA,MACb,iBAAiBC;AAAA,MACjB,gBAAgBC;AAAA,IAAA,IACdjB,EAAWrD,CAAY,GACrBuE,IAAejE,GAAoBqD,CAAI,GAEvCxD,IAAYkD,EAAWpD,CAAgB,GACvCuE,IAAY9C;AAAA,MAChB,CAAC+C,MACCvE,GAAcC,CAAS,KAAKuE,GAAmBD,CAAO;AAAA,MACxD,CAACtE,CAAS;AAAA,IAAA,GAGNwE,IAAYC,GAAmB,EAACzE,KAAA,QAAAA,EAAW,QAAO;AAAA,MACtD,WAAAqE;AAAA,MACA,mBAAmBJ,KAAsBjE,KAAA,OAAZ,SAAYA,EAAW;AAAA,IAAA,CACrD,GAGK0E,IAAehD,EAAwB,IAAI,GAE3CiD,IAAuBV,IACzB;AAAA,MACE,cAAcC;AAAA,MACd,cAAcC;AAAA,MACd,QAAQA;AAAA,IAAA,IAEV,CAAA,GACES,IAAcd,MAAYG,IAAUC,IAAc;AAExD,WACE,gBAAAtB,EAACC,EAAa,QAAb,EACC,UAAA,gBAAAgC;AAAA,MAAChC,EAAa;AAAA,MAAb;AAAA,QACC,KAAAI;AAAA,QACA,MAAMmB;AAAA,QACN,OAAAX;AAAA,QACA,YAAY;AAAA,QACZ,kBAAkB;AAAA,QAClB,mBAAiBlB;AAAA,QACjB,oBAAkBE;AAAA,QAClB,WAAWnC,GAAgB,EAAE,MAAAoD,GAAM,WAAAE,GAAW;AAAA,QAC9C,kBAAe;AAAA,QACf,qBAAmBI;AAAA,QAClB,GAAGW;AAAA,QACH,GAAG3B;AAAA,QACJ,SAAS,CAAC8B,MAAU;AAClB,UAAAJ,EAAa,UAAU,MACvBE,KAAA,QAAAA,EAAcE;AAAA,QAChB;AAAA,QACA,WAAW,CAACA,MAAU;AACpB,gBAAMR,IAAUQ,EAAM,eAChBC,IAAMT,EAAQ,eACdU,IAAYV,EAAQ,SAASS,EAAI,aAAa;AACpD,UAAAlB,KAAA,QAAAA,EAAYiB,IACZN,EAAUM,CAAK;AACf,gBAAMG,IAAQ,CAACX,EAAQ,SAASS,EAAI,aAAa;AACjD,UAAID,EAAM,QAAQ,SAASE,KAAaC,MACtCP,EAAa,UAAUK;AAAA,QAE3B;AAAA,QACA,kBAAkB,CAACD,MAAU;AAC3B,gBAAMC,IAAML,EAAa;AACzB,UAAAA,EAAa,UAAU;AACvB,gBAAMQ,IAAUH,KAAA,gBAAAA,EAAK;AACrB,cAAIA,KAAOG,KAAWA,MAAYH,EAAI,MAAM;AAC1C,YAAAD,EAAM,eAAA;AACN;AAAA,UACF;AACA,UAAAf,KAAA,QAAAA,EAAmBe;AAAA,QACrB;AAAA,QAEC,UAAA;AAAA,UAAAnE;AAAA,UACAgD,KACC,gBAAAf;AAAA,YAACC,EAAa;AAAA,YAAb;AAAA,cACC,OAAO;AAAA,cACP,QAAQ;AAAA,cACR,WAAU;AAAA,YAAA;AAAA,UAAA;AAAA,QACZ;AAAA,MAAA;AAAA,IAAA,GAGN;AAAA,EAEJ;AACF;AACAU,EAAe,cAAc;AAE7B,MAAM4B,IAAepC;AAAA,EACnB,CAAC,EAAE,WAAAa,EAAA,GAAaX,MAAQ;AACtB,UAAM,EAAE,GAAAmC,EAAA,IAAMC,GAAe,IAAI;AAEjC,WACE,gBAAAzC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAW;AAAA,UACT;AAAA,UACAgB;AAAA,QAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QAEX,UAAA,gBAAAhB,EAACC,EAAa,OAAb,EAAmB,SAAO,IACzB,UAAA,gBAAAD;AAAA,UAAC0C;AAAA,UAAA;AAAA,YACC,KAAArC;AAAA,YACA,wBAAOsC,IAAA,EAAE;AAAA,YACT,QAAO;AAAA,YACP,MAAK;AAAA,YACL,cAAYH,EAAE,gBAAgB,OAAO;AAAA,UAAA;AAAA,QAAA,EACvC,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAGN;AACF;AACAD,EAAa,cAAc;AAM3B,MAAMK,IAAiBzC;AAAA,EACrB,CAAC,EAAE,IAAI0C,IAAM,MAAM,WAAA7B,GAAW,GAAGZ,EAAA,GAASC,MAAQ;AAChD,UAAMyC,IAAcC,EAAA,GACd,EAAE,cAAAnD,EAAA,IAAiBU,EAAWvD,CAAW;AAE/C,WAAAoC,EAAU,OACRS,EAAakD,CAAW,GACjB,MAAMlD,EAAa,MAAS,IAClC,CAACkD,GAAalD,CAAY,CAAC,GAG5B,gBAAAI;AAAA,MAAC6C;AAAA,MAAA;AAAA,QACC,KAAAxC;AAAA,QACA,IAAIyC;AAAA,QACJ,WAAW;AAAA,UACT;AAAA,UACA;AAAA,UACA9B;AAAA,QAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,QACV,GAAGZ;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AACAwC,EAAe,cAAc;AAgB7B,MAAMI,IAAqB7C,EAGzB,CAAC,EAAE,WAAAa,GAAW,GAAGZ,EAAA,GAASC,MAAQ;AAClC,QAAMyC,IAAcC,EAAA,GACd,EAAE,kBAAAjD,EAAA,IAAqBQ,EAAWvD,CAAW;AAEnD,SAAAoC,EAAU,OACRW,EAAiBgD,CAAW,GACrB,MAAMhD,EAAiB,MAAS,IACtC,CAACgD,GAAahD,CAAgB,CAAC,GAGhC,gBAAAE;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAAK;AAAA,MACA,IAAIyC;AAAA,MACJ,WAAW;AAAA,QACT;AAAA,QACA9B;AAAA,MAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,MACV,GAAGZ;AAAA,IAAA;AAAA,EAAA;AAGV,CAAC;AACD4C,EAAmB,cAAc;AAE1B,MAAMC,KAAU,OAAO,OAAOpF,GAAa;AAAA,EAChD,MAAMA;AAAA,EACN,SAASqC;AAAA,EACT,QAAQO;AAAA,EACR,SAASE;AAAA,EACT,OAAO4B;AAAA,EACP,SAASK;AAAA,EACT,aAAaI;AACf,CAAC;"}
@@ -9,7 +9,7 @@ import { D } from "./dropdown-menu-BQSNVp4x.js";
9
9
  import { E as st } from "./empty-state-gNG3qYCX.js";
10
10
  import { M as it } from "./map-view-CO2v0hfp.js";
11
11
  import { R as Ne } from "./rating-C1Vrmpsi.js";
12
- import { S as I } from "./sheet-C7SwIxwB.js";
12
+ import { S as I } from "./sheet-Dtjk0CVv.js";
13
13
  import { S as rt } from "./skeleton-B1KTdJ4N.js";
14
14
  import { S as ot } from "./spinner-CoflYlEx.js";
15
15
  import { B as $ } from "./badge-hnBt8o7n.js";
@@ -1742,4 +1742,4 @@ export {
1742
1742
  Ot as P,
1743
1743
  bt as p
1744
1744
  };
1745
- //# sourceMappingURL=practice-results-Dhbo-fc_.js.map
1745
+ //# sourceMappingURL=practice-results-D07wgCqV.js.map