@alfadocs/ui-kit-debug 0.68.0 → 0.69.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (735) hide show
  1. package/dist/_chunks/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
  2. package/dist/_chunks/accordion-DnIa7OHX.js.map +1 -0
  3. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js +2061 -0
  4. package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js.map +1 -0
  5. package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
  6. package/dist/_chunks/address-autocomplete-BEX9PXty.js.map +1 -0
  7. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
  8. package/dist/_chunks/{agenda-card.agent-B_R47-c9.js.map → agenda-card.agent-mTCrkKSZ.js.map} +1 -1
  9. package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-g0kg7HwB.js} +36 -24
  10. package/dist/_chunks/agenda-tray-g0kg7HwB.js.map +1 -0
  11. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-CXlsNX1c.js} +3 -3
  12. package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js.map → ai-consent-banner-CXlsNX1c.js.map} +1 -1
  13. package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
  14. package/dist/_chunks/ai-prompt-input-CuhTo9mh.js.map +1 -0
  15. package/dist/_chunks/{ai-tools-rail-CInA_1-E.js → ai-tools-rail-BA_sqy1A.js} +87 -70
  16. package/dist/_chunks/ai-tools-rail-BA_sqy1A.js.map +1 -0
  17. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
  18. package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js.map → alia-sidebar-B47qRQb5.js.map} +1 -1
  19. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DRmE24OQ.js} +2 -2
  20. package/dist/_chunks/{anamnesis-card-N8pIKWuS.js.map → anamnesis-card-DRmE24OQ.js.map} +1 -1
  21. package/dist/_chunks/{appointment-tray-BMl89NPW.js → appointment-tray-CZtvtaH-.js} +32 -20
  22. package/dist/_chunks/appointment-tray-CZtvtaH-.js.map +1 -0
  23. package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-DYXXnGug.js} +59 -56
  24. package/dist/_chunks/audio-recorder-DYXXnGug.js.map +1 -0
  25. package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
  26. package/dist/_chunks/autocomplete-DOeGouCL.js.map +1 -0
  27. package/dist/_chunks/bishop-score-PJI3AXzA.js +304 -0
  28. package/dist/_chunks/bishop-score-PJI3AXzA.js.map +1 -0
  29. package/dist/_chunks/bmi-calculator-BZtIJ53x.js +434 -0
  30. package/dist/_chunks/bmi-calculator-BZtIJ53x.js.map +1 -0
  31. package/dist/_chunks/{booking-L8-YP8BJ.js → booking-C3VqFReX.js} +420 -397
  32. package/dist/_chunks/booking-C3VqFReX.js.map +1 -0
  33. package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
  34. package/dist/_chunks/breadcrumb-CchdeG7d.js.map +1 -0
  35. package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
  36. package/dist/_chunks/{calculator-dialog-CFk4I91b.js.map → calculator-dialog-BR5iU0kf.js.map} +1 -1
  37. package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
  38. package/dist/_chunks/calendar-CZUjL8SZ.js.map +1 -0
  39. package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-CvFGXa2z.js} +10 -6
  40. package/dist/_chunks/care-plan-card-CvFGXa2z.js.map +1 -0
  41. package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-C3E_gClk.js} +17 -13
  42. package/dist/_chunks/care-plan-entry-card-C3E_gClk.js.map +1 -0
  43. package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
  44. package/dist/_chunks/{carousel.agent-vt21A_el.js.map → carousel.agent-4v8Emr9E.js.map} +1 -1
  45. package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
  46. package/dist/_chunks/chart-CMr3eW62.js.map +1 -0
  47. package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
  48. package/dist/_chunks/chat-container-DWho5hPR.js.map +1 -0
  49. package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
  50. package/dist/_chunks/chat-input-BcXTetgM.js.map +1 -0
  51. package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
  52. package/dist/_chunks/checkbox-BuZ1u__2.js.map +1 -0
  53. package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
  54. package/dist/_chunks/{checkbox-group-CpUwlHug.js.map → checkbox-group-PqNmQ-cE.js.map} +1 -1
  55. package/dist/_chunks/{clinical-note-card-gtrxv6zn.js → clinical-note-card-DqQYf_D4.js} +2 -2
  56. package/dist/_chunks/{clinical-note-card-gtrxv6zn.js.map → clinical-note-card-DqQYf_D4.js.map} +1 -1
  57. package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
  58. package/dist/_chunks/collapsible-BrnRiCC6.js.map +1 -0
  59. package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
  60. package/dist/_chunks/color-picker-C_fZl6sA.js.map +1 -0
  61. package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
  62. package/dist/_chunks/combobox-Clum7gJ1.js.map +1 -0
  63. package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
  64. package/dist/_chunks/command-palette-CJzmc5pC.js.map +1 -0
  65. package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-Dramqa9C.js} +13 -11
  66. package/dist/_chunks/contact-profile-card-Dramqa9C.js.map +1 -0
  67. package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
  68. package/dist/_chunks/copy-field-Bjw9u2cV.js.map +1 -0
  69. package/dist/_chunks/counter-dRlTNC_y.js +55 -0
  70. package/dist/_chunks/counter-dRlTNC_y.js.map +1 -0
  71. package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-DmRGJNaT.js} +3 -3
  72. package/dist/_chunks/{cycle-calculator-BF0ointe.js.map → cycle-calculator-DmRGJNaT.js.map} +1 -1
  73. package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
  74. package/dist/_chunks/{date-picker-oGg5BnXL.js.map → date-picker-Dl9RKxaV.js.map} +1 -1
  75. package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
  76. package/dist/_chunks/date-range-picker-CTUeR6Bj.js.map +1 -0
  77. package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
  78. package/dist/_chunks/date-time-picker-BhoogS5Q.js.map +1 -0
  79. package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-CG_FOHya.js} +44 -30
  80. package/dist/_chunks/dependent-selector-CG_FOHya.js.map +1 -0
  81. package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
  82. package/dist/_chunks/dialog-ZNuboNmy.js.map +1 -0
  83. package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-CTubA0-N.js} +12 -4
  84. package/dist/_chunks/document-scanner-CTubA0-N.js.map +1 -0
  85. package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
  86. package/dist/_chunks/dropdown-menu-qrxjymfw.js.map +1 -0
  87. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-BTmsIQqD.js} +4 -4
  88. package/dist/_chunks/{due-date-calculator-DU9AEWNy.js.map → due-date-calculator-BTmsIQqD.js.map} +1 -1
  89. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +448 -0
  90. package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js.map +1 -0
  91. package/dist/_chunks/{email-input-lQivsFrw.js → email-input-B_Y55f5G.js} +3 -3
  92. package/dist/_chunks/{email-input-lQivsFrw.js.map → email-input-B_Y55f5G.js.map} +1 -1
  93. package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-CRz7KE2D.js} +2 -2
  94. package/dist/_chunks/{fetal-weight-BVSzOhuR.js.map → fetal-weight-CRz7KE2D.js.map} +1 -1
  95. package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-5ScQd4fE.js} +118 -100
  96. package/dist/_chunks/file-upload-5ScQd4fE.js.map +1 -0
  97. package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
  98. package/dist/_chunks/fiscal-code-input-Cf-8O4Fj.js.map +1 -0
  99. package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-DZ2mBS3w.js} +78 -71
  100. package/dist/_chunks/freemium-paywall-DZ2mBS3w.js.map +1 -0
  101. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-BleUdhbI.js} +5 -5
  102. package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js.map → gestational-age-calculator-BleUdhbI.js.map} +1 -1
  103. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-CnjDXX6U.js} +3 -3
  104. package/dist/_chunks/{hcg-doubling-if4Q8aSX.js.map → hcg-doubling-CnjDXX6U.js.map} +1 -1
  105. package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
  106. package/dist/_chunks/header-settings-DJqoAl5m.js.map +1 -0
  107. package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
  108. package/dist/_chunks/{index.modern-D2LGACWg.js.map → index.modern-Zta-A4Jm.js.map} +1 -1
  109. package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
  110. package/dist/_chunks/list-DgE1xWBM.js.map +1 -0
  111. package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
  112. package/dist/_chunks/locale-picker-ChYYSX2N.js.map +1 -0
  113. package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
  114. package/dist/_chunks/map-view-BkOoGoX2.js.map +1 -0
  115. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-6T9W4Knl.js} +4 -4
  116. package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js.map → marketplace-app-shell-6T9W4Knl.js.map} +1 -1
  117. package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
  118. package/dist/_chunks/message-card.agent-ZLhx3Bs5.js.map +1 -0
  119. package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
  120. package/dist/_chunks/message-tray-DwrBLJlf.js.map +1 -0
  121. package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
  122. package/dist/_chunks/multi-select-BdHHDrRN.js.map +1 -0
  123. package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
  124. package/dist/_chunks/navigation-menu-DRUi6sSj.js.map +1 -0
  125. package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
  126. package/dist/_chunks/notification-card.agent-DxGBZb8T.js.map +1 -0
  127. package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-Btb9oQeZ.js} +112 -97
  128. package/dist/_chunks/notification-tray-Btb9oQeZ.js.map +1 -0
  129. package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
  130. package/dist/_chunks/number-input-DxphVG_A.js.map +1 -0
  131. package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CP2Nhupm.js} +12 -8
  132. package/dist/_chunks/operator-hero-CP2Nhupm.js.map +1 -0
  133. package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
  134. package/dist/_chunks/otp-input-DzBQ-CpE.js.map +1 -0
  135. package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
  136. package/dist/_chunks/pagination-D58kglCr.js.map +1 -0
  137. package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-CBC_ySF6.js} +69 -60
  138. package/dist/_chunks/patient-search-CBC_ySF6.js.map +1 -0
  139. package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
  140. package/dist/_chunks/{patient-shell-BfgufL_q.js.map → patient-shell-DV3XEtIB.js.map} +1 -1
  141. package/dist/_chunks/{patient-summary-card-hEmr4eTW.js → patient-summary-card-B836_fDB.js} +95 -103
  142. package/dist/_chunks/patient-summary-card-B836_fDB.js.map +1 -0
  143. package/dist/_chunks/patient-table-CDuosVru.js +889 -0
  144. package/dist/_chunks/patient-table-CDuosVru.js.map +1 -0
  145. package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-DvjwYVIT.js} +56 -44
  146. package/dist/_chunks/payment-form-DvjwYVIT.js.map +1 -0
  147. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-DioWKBUq.js} +2 -2
  148. package/dist/_chunks/{payment-request-card-CYE5vhZ0.js.map → payment-request-card-DioWKBUq.js.map} +1 -1
  149. package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-D6BPfW2D.js} +205 -157
  150. package/dist/_chunks/pdf-viewer-D6BPfW2D.js.map +1 -0
  151. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-BuDEMbHE.js} +2 -2
  152. package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js.map → periodontal-chart-card-BuDEMbHE.js.map} +1 -1
  153. package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
  154. package/dist/_chunks/phone-input-DjU-XmO_.js.map +1 -0
  155. package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
  156. package/dist/_chunks/popover-B2qCDhJC.js.map +1 -0
  157. package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-KrTHqZua.js} +278 -242
  158. package/dist/_chunks/practice-results-KrTHqZua.js.map +1 -0
  159. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-DORUAOHB.js} +6 -6
  160. package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js.map → pregnancy-dating-DORUAOHB.js.map} +1 -1
  161. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-DVz4rr7-.js} +3 -3
  162. package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js.map → pregnancy-weight-gain-DVz4rr7-.js.map} +1 -1
  163. package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
  164. package/dist/_chunks/privacy-lock-BzMLQu-j.js.map +1 -0
  165. package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
  166. package/dist/_chunks/product-hub-panel-e6pW220e.js.map +1 -0
  167. package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
  168. package/dist/_chunks/{progress-kzIRcdaq.js.map → progress-DA413-zn.js.map} +1 -1
  169. package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
  170. package/dist/_chunks/public-footer.agent-D0cFbjWl.js.map +1 -0
  171. package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
  172. package/dist/_chunks/{public-header.agent-BOhJgZEU.js.map → public-header.agent-DqkqA-ca.js.map} +1 -1
  173. package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
  174. package/dist/_chunks/qr-code-CPkEs5mG.js.map +1 -0
  175. package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
  176. package/dist/_chunks/{radio-group-CLjK-SlK.js.map → radio-group-BPt7pKZW.js.map} +1 -1
  177. package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
  178. package/dist/_chunks/recaptcha-widget-BC-4To9b.js.map +1 -0
  179. package/dist/_chunks/registry-DvAUVLHh.js +51 -0
  180. package/dist/_chunks/registry-DvAUVLHh.js.map +1 -0
  181. package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
  182. package/dist/_chunks/resizable-DVGcfOrk.js.map +1 -0
  183. package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
  184. package/dist/_chunks/reviews-panel-Dq7LMDcH.js.map +1 -0
  185. package/dist/_chunks/{rich-text-editor-VawKN1FI.js → rich-text-editor-BsV7zUdg.js} +736 -647
  186. package/dist/_chunks/rich-text-editor-BsV7zUdg.js.map +1 -0
  187. package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
  188. package/dist/_chunks/search-bar-C_T3pBJn.js.map +1 -0
  189. package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
  190. package/dist/_chunks/{search-input-DbxrnHkW.js.map → search-input-DQvGxR74.js.map} +1 -1
  191. package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
  192. package/dist/_chunks/search-input.agent-DRH54coT.js.map +1 -0
  193. package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
  194. package/dist/_chunks/select-DMLG44F5.js.map +1 -0
  195. package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
  196. package/dist/_chunks/{session-countdown-LPnhTHjn.js.map → session-countdown-X1Ki6i0M.js.map} +1 -1
  197. package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
  198. package/dist/_chunks/sheet-BxsE7eQm.js.map +1 -0
  199. package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
  200. package/dist/_chunks/sidebar-DY9jGjgt.js.map +1 -0
  201. package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-B4DeRhTe.js} +75 -49
  202. package/dist/_chunks/sign-document-B4DeRhTe.js.map +1 -0
  203. package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
  204. package/dist/_chunks/signature-capture-Ct_4Md4e.js.map +1 -0
  205. package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
  206. package/dist/_chunks/slider-DN1CWkKB.js.map +1 -0
  207. package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
  208. package/dist/_chunks/sparkline-iOXYgvJe.js.map +1 -0
  209. package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
  210. package/dist/_chunks/stepper-accordion.agent-cmEguIdx.js.map +1 -0
  211. package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
  212. package/dist/_chunks/stepper-progress-Bv0njx4g.js.map +1 -0
  213. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
  214. package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js.map → suggestion-chip.agent-Brn3CiFE.js.map} +1 -1
  215. package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
  216. package/dist/_chunks/switch-OILsBLWo.js.map +1 -0
  217. package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
  218. package/dist/_chunks/tabs-BxcOziCo.js.map +1 -0
  219. package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
  220. package/dist/_chunks/task-card.agent-Bt14CzUd.js.map +1 -0
  221. package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
  222. package/dist/_chunks/task-tray-qOEQflu4.js.map +1 -0
  223. package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
  224. package/dist/_chunks/text-area-Bt3p7Pt0.js.map +1 -0
  225. package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
  226. package/dist/_chunks/text-input-B-OWQ1Je.js.map +1 -0
  227. package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
  228. package/dist/_chunks/theme-toggle-XB6o_lgs.js.map +1 -0
  229. package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
  230. package/dist/_chunks/time-picker-BPlJWm8w.js.map +1 -0
  231. package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
  232. package/dist/_chunks/timeline-CqA4nKTI.js.map +1 -0
  233. package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
  234. package/dist/_chunks/{toast.agent-vuLRRn2a.js.map → toast.agent-57UzyR9U.js.map} +1 -1
  235. package/dist/_chunks/{tooth-scheme-BIx1O2aJ.js → tooth-scheme-yBr53cvv.js} +421 -348
  236. package/dist/_chunks/tooth-scheme-yBr53cvv.js.map +1 -0
  237. package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
  238. package/dist/_chunks/transcript-panel-3THQX6nJ.js.map +1 -0
  239. package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
  240. package/dist/_chunks/unit-converter-YEpD9evj.js.map +1 -0
  241. package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
  242. package/dist/_chunks/use-password-requirements-BXvS2MBS.js.map +1 -0
  243. package/dist/_chunks/users-MBVtUzwd.js +17 -0
  244. package/dist/_chunks/users-MBVtUzwd.js.map +1 -0
  245. package/dist/_chunks/warning-stack-BsgaEbL8.js +283 -0
  246. package/dist/_chunks/warning-stack-BsgaEbL8.js.map +1 -0
  247. package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
  248. package/dist/_chunks/whatsapp-button-BIy6NaJK.js.map +1 -0
  249. package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Bdam9pGp.js} +99 -88
  250. package/dist/_chunks/workflow-map-Bdam9pGp.js.map +1 -0
  251. package/dist/agent/index.d.ts +4 -4
  252. package/dist/agent/index.d.ts.map +1 -1
  253. package/dist/agent/index.js +36 -0
  254. package/dist/agent/index.js.map +1 -0
  255. package/dist/agent/registry.d.ts +33 -0
  256. package/dist/agent/registry.d.ts.map +1 -1
  257. package/dist/agent/types.d.ts +78 -2
  258. package/dist/agent/types.d.ts.map +1 -1
  259. package/dist/agent-catalog.json +6905 -509
  260. package/dist/agent-i18n/en.json +1175 -0
  261. package/dist/components/accordion/accordion.agent.d.ts.map +1 -1
  262. package/dist/components/accordion/accordion.d.ts.map +1 -1
  263. package/dist/components/accordion/index.js +1 -1
  264. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
  265. package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts.map +1 -0
  266. package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
  267. package/dist/components/address-autocomplete/address-autocomplete.d.ts.map +1 -1
  268. package/dist/components/address-autocomplete/index.d.ts +2 -1
  269. package/dist/components/address-autocomplete/index.d.ts.map +1 -1
  270. package/dist/components/address-autocomplete/index.js +3 -2
  271. package/dist/components/agenda-card/agenda-card.agent.d.ts.map +1 -1
  272. package/dist/components/agenda-card/index.js +1 -1
  273. package/dist/components/agenda-tray/agenda-tray.agent.d.ts.map +1 -1
  274. package/dist/components/agenda-tray/index.js +1 -1
  275. package/dist/components/ai-consent-banner/index.js +1 -1
  276. package/dist/components/ai-prompt-input/ai-prompt-input.agent.d.ts.map +1 -1
  277. package/dist/components/ai-prompt-input/index.js +1 -1
  278. package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +1 -1
  279. package/dist/components/ai-tools-rail/index.js +1 -1
  280. package/dist/components/anamnesis-card/index.js +1 -1
  281. package/dist/components/appointment-card/appointment-card.agent.d.ts.map +1 -1
  282. package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
  283. package/dist/components/appointment-card/index.js +1 -1
  284. package/dist/components/audio-recorder/audio-recorder.agent.d.ts.map +1 -1
  285. package/dist/components/audio-recorder/index.js +1 -1
  286. package/dist/components/autocomplete/autocomplete.agent.d.ts.map +1 -1
  287. package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
  288. package/dist/components/autocomplete/index.js +1 -1
  289. package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
  290. package/dist/components/bishop-score/bishop-score.agent.d.ts.map +1 -0
  291. package/dist/components/bishop-score/bishop-score.d.ts +17 -1
  292. package/dist/components/bishop-score/bishop-score.d.ts.map +1 -1
  293. package/dist/components/bishop-score/index.js +1 -1
  294. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
  295. package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts.map +1 -0
  296. package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
  297. package/dist/components/bmi-calculator/bmi-calculator.d.ts.map +1 -1
  298. package/dist/components/bmi-calculator/index.js +1 -1
  299. package/dist/components/booking/booking.agent.d.ts.map +1 -1
  300. package/dist/components/booking/index.js +1 -1
  301. package/dist/components/breadcrumb/breadcrumb.agent.d.ts.map +1 -1
  302. package/dist/components/breadcrumb/index.js +1 -1
  303. package/dist/components/calculator-dialog/index.js +1 -1
  304. package/dist/components/calendar/calendar.agent.d.ts.map +1 -1
  305. package/dist/components/calendar/index.js +1 -1
  306. package/dist/components/care-plan-card/care-plan-card.agent.d.ts.map +1 -1
  307. package/dist/components/care-plan-card/index.js +1 -1
  308. package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts.map +1 -1
  309. package/dist/components/care-plan-entry-card/index.js +1 -1
  310. package/dist/components/carousel/carousel.agent.d.ts.map +1 -1
  311. package/dist/components/carousel/index.js +1 -1
  312. package/dist/components/chart/chart.agent.d.ts.map +1 -1
  313. package/dist/components/chart/index.js +1 -1
  314. package/dist/components/chat-container/chat-container.agent.d.ts.map +1 -1
  315. package/dist/components/chat-container/index.js +1 -1
  316. package/dist/components/chat-input/chat-input.agent.d.ts.map +1 -1
  317. package/dist/components/chat-input/index.js +1 -1
  318. package/dist/components/checkbox/checkbox.agent.d.ts.map +1 -1
  319. package/dist/components/checkbox/index.js +1 -1
  320. package/dist/components/checkbox-group/index.js +1 -1
  321. package/dist/components/clinical-note-card/index.js +1 -1
  322. package/dist/components/collapsible/collapsible.agent.d.ts.map +1 -1
  323. package/dist/components/collapsible/index.js +1 -1
  324. package/dist/components/color-picker/color-picker.agent.d.ts.map +1 -1
  325. package/dist/components/color-picker/index.js +1 -1
  326. package/dist/components/combobox/combobox.agent.d.ts.map +1 -1
  327. package/dist/components/combobox/combobox.d.ts.map +1 -1
  328. package/dist/components/combobox/index.js +1 -1
  329. package/dist/components/command-palette/command-palette.agent.d.ts.map +1 -1
  330. package/dist/components/command-palette/command-palette.d.ts.map +1 -1
  331. package/dist/components/command-palette/index.js +1 -1
  332. package/dist/components/contact-profile-card/contact-profile-card.agent.d.ts.map +1 -1
  333. package/dist/components/contact-profile-card/index.js +1 -1
  334. package/dist/components/copy-field/copy-field.agent.d.ts.map +1 -1
  335. package/dist/components/copy-field/index.js +1 -1
  336. package/dist/components/counter/counter.d.ts +22 -0
  337. package/dist/components/counter/counter.d.ts.map +1 -0
  338. package/dist/components/counter/index.d.ts +3 -0
  339. package/dist/components/counter/index.d.ts.map +1 -0
  340. package/dist/components/counter/index.js +5 -0
  341. package/dist/components/counter/index.js.map +1 -0
  342. package/dist/components/cycle-calculator/index.js +1 -1
  343. package/dist/components/data-table/data-table.agent.d.ts.map +1 -1
  344. package/dist/components/data-table/index.js +31 -30
  345. package/dist/components/data-table/index.js.map +1 -1
  346. package/dist/components/data-table/toolbar.d.ts.map +1 -1
  347. package/dist/components/date-picker/date-picker.agent.d.ts.map +1 -1
  348. package/dist/components/date-picker/index.js +1 -1
  349. package/dist/components/date-range-picker/date-range-picker.agent.d.ts.map +1 -1
  350. package/dist/components/date-range-picker/index.js +1 -1
  351. package/dist/components/date-time-picker/date-time-picker.agent.d.ts.map +1 -1
  352. package/dist/components/date-time-picker/index.js +1 -1
  353. package/dist/components/dependent-selector/dependent-selector.agent.d.ts.map +1 -1
  354. package/dist/components/dependent-selector/index.js +1 -1
  355. package/dist/components/dialog/dialog.agent.d.ts.map +1 -1
  356. package/dist/components/dialog/index.js +1 -1
  357. package/dist/components/document-scanner/document-scanner.agent.d.ts.map +1 -1
  358. package/dist/components/document-scanner/index.js +1 -1
  359. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
  360. package/dist/components/dropdown-menu/index.js +1 -1
  361. package/dist/components/due-date-calculator/index.js +1 -1
  362. package/dist/components/email-input/index.js +1 -1
  363. package/dist/components/fetal-weight/index.js +1 -1
  364. package/dist/components/file-upload/file-upload.agent.d.ts.map +1 -1
  365. package/dist/components/file-upload/index.js +1 -1
  366. package/dist/components/fiscal-code-input/fiscal-code-input.agent.d.ts.map +1 -1
  367. package/dist/components/fiscal-code-input/index.js +1 -1
  368. package/dist/components/freemium-paywall/freemium-paywall.agent.d.ts.map +1 -1
  369. package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
  370. package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
  371. package/dist/components/freemium-paywall/index.js +1 -1
  372. package/dist/components/gestational-age-calculator/index.js +1 -1
  373. package/dist/components/hcg-doubling/index.js +1 -1
  374. package/dist/components/header-settings/header-settings.agent.d.ts.map +1 -1
  375. package/dist/components/header-settings/index.js +1 -1
  376. package/dist/components/index.d.ts +2 -0
  377. package/dist/components/index.d.ts.map +1 -1
  378. package/dist/components/list/index.js +1 -1
  379. package/dist/components/list/list.agent.d.ts.map +1 -1
  380. package/dist/components/locale-picker/index.js +1 -1
  381. package/dist/components/locale-picker/locale-picker.agent.d.ts.map +1 -1
  382. package/dist/components/map-view/index.js +1 -1
  383. package/dist/components/map-view/map-view.agent.d.ts.map +1 -1
  384. package/dist/components/message-card/index.js +1 -1
  385. package/dist/components/message-card/message-card.agent.d.ts.map +1 -1
  386. package/dist/components/message-tray/index.js +1 -1
  387. package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
  388. package/dist/components/multi-select/index.js +1 -1
  389. package/dist/components/multi-select/multi-select.agent.d.ts.map +1 -1
  390. package/dist/components/multi-select/multi-select.d.ts.map +1 -1
  391. package/dist/components/navigation-menu/index.js +1 -1
  392. package/dist/components/navigation-menu/navigation-menu.agent.d.ts.map +1 -1
  393. package/dist/components/notification-card/index.js +1 -1
  394. package/dist/components/notification-card/notification-card.agent.d.ts.map +1 -1
  395. package/dist/components/notification-tray/index.js +1 -1
  396. package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
  397. package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
  398. package/dist/components/number-input/index.js +1 -1
  399. package/dist/components/number-input/number-input.agent.d.ts.map +1 -1
  400. package/dist/components/operator-hero/index.js +1 -1
  401. package/dist/components/operator-hero/operator-hero.agent.d.ts.map +1 -1
  402. package/dist/components/otp-input/index.js +1 -1
  403. package/dist/components/otp-input/otp-input.agent.d.ts.map +1 -1
  404. package/dist/components/pagination/index.js +1 -1
  405. package/dist/components/pagination/pagination.agent.d.ts.map +1 -1
  406. package/dist/components/password-input/index.js +1 -1
  407. package/dist/components/password-input/password-input.agent.d.ts.map +1 -1
  408. package/dist/components/patient-search/index.js +1 -1
  409. package/dist/components/patient-search/patient-search.agent.d.ts.map +1 -1
  410. package/dist/components/patient-summary-card/index.js +1 -1
  411. package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -1
  412. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
  413. package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts.map +1 -0
  414. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
  415. package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts.map +1 -0
  416. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +45 -0
  417. package/dist/components/patient-table/cell-renderers/contact-cell.d.ts.map +1 -0
  418. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
  419. package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts.map +1 -0
  420. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +26 -0
  421. package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts.map +1 -0
  422. package/dist/components/patient-table/columns.d.ts +102 -0
  423. package/dist/components/patient-table/columns.d.ts.map +1 -0
  424. package/dist/components/patient-table/index.d.ts +24 -0
  425. package/dist/components/patient-table/index.d.ts.map +1 -0
  426. package/dist/components/patient-table/index.js +13 -0
  427. package/dist/components/patient-table/index.js.map +1 -0
  428. package/dist/components/patient-table/patient-table.d.ts +138 -0
  429. package/dist/components/patient-table/patient-table.d.ts.map +1 -0
  430. package/dist/components/patient-table/types.d.ts +172 -0
  431. package/dist/components/patient-table/types.d.ts.map +1 -0
  432. package/dist/components/patient-table/use-responsive-columns.d.ts +109 -0
  433. package/dist/components/patient-table/use-responsive-columns.d.ts.map +1 -0
  434. package/dist/components/payment-card/index.js +1 -1
  435. package/dist/components/payment-form/index.js +1 -1
  436. package/dist/components/payment-form/payment-form.agent.d.ts.map +1 -1
  437. package/dist/components/pdf-viewer/index.js +1 -1
  438. package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
  439. package/dist/components/periodontal-chart-card/index.js +1 -1
  440. package/dist/components/phone-input/index.js +1 -1
  441. package/dist/components/phone-input/phone-input.agent.d.ts.map +1 -1
  442. package/dist/components/popover/index.js +1 -1
  443. package/dist/components/popover/popover.agent.d.ts.map +1 -1
  444. package/dist/components/practice-results/index.js +1 -1
  445. package/dist/components/practice-results/practice-results.agent.d.ts.map +1 -1
  446. package/dist/components/pregnancy-dating/index.js +1 -1
  447. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  448. package/dist/components/privacy-lock/index.js +1 -1
  449. package/dist/components/privacy-lock/privacy-lock.agent.d.ts.map +1 -1
  450. package/dist/components/product-hub-tray/index.js +1 -1
  451. package/dist/components/product-hub-tray/product-hub-panel.agent.d.ts.map +1 -1
  452. package/dist/components/product-hub-tray/product-hub-tray.agent.d.ts.map +1 -1
  453. package/dist/components/progress/index.js +1 -1
  454. package/dist/components/public-footer/index.js +1 -1
  455. package/dist/components/public-footer/public-footer.agent.d.ts.map +1 -1
  456. package/dist/components/public-footer/public-footer.d.ts.map +1 -1
  457. package/dist/components/public-header/index.js +1 -1
  458. package/dist/components/public-header/public-header.agent.d.ts.map +1 -1
  459. package/dist/components/qr-code/index.js +1 -1
  460. package/dist/components/qr-code/qr-code.agent.d.ts.map +1 -1
  461. package/dist/components/radio-group/index.js +1 -1
  462. package/dist/components/recaptcha-widget/index.js +1 -1
  463. package/dist/components/recaptcha-widget/recaptcha-widget.agent.d.ts.map +1 -1
  464. package/dist/components/resizable/index.js +1 -1
  465. package/dist/components/resizable/resizable.agent.d.ts.map +1 -1
  466. package/dist/components/resizable/resizable.d.ts.map +1 -1
  467. package/dist/components/reviews-panel/index.js +1 -1
  468. package/dist/components/reviews-panel/reviews-panel.agent.d.ts.map +1 -1
  469. package/dist/components/rich-text-editor/index.js +1 -1
  470. package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
  471. package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
  472. package/dist/components/search-bar/index.js +1 -1
  473. package/dist/components/search-bar/search-bar.agent.d.ts.map +1 -1
  474. package/dist/components/search-input/index.js +2 -2
  475. package/dist/components/search-input/search-input.agent.d.ts.map +1 -1
  476. package/dist/components/select/index.js +1 -1
  477. package/dist/components/select/select.agent.d.ts.map +1 -1
  478. package/dist/components/session-countdown/index.js +1 -1
  479. package/dist/components/sheet/index.js +1 -1
  480. package/dist/components/sheet/sheet.agent.d.ts.map +1 -1
  481. package/dist/components/sidebar/index.js +1 -1
  482. package/dist/components/sidebar/sidebar.agent.d.ts.map +1 -1
  483. package/dist/components/sidebar/sidebar.d.ts +7 -0
  484. package/dist/components/sidebar/sidebar.d.ts.map +1 -1
  485. package/dist/components/sign-document/index.js +1 -1
  486. package/dist/components/sign-document/sign-document.agent.d.ts.map +1 -1
  487. package/dist/components/signature-capture/index.js +1 -1
  488. package/dist/components/signature-capture/signature-capture.agent.d.ts.map +1 -1
  489. package/dist/components/slider/index.js +1 -1
  490. package/dist/components/slider/slider.agent.d.ts.map +1 -1
  491. package/dist/components/sparkline/index.js +1 -1
  492. package/dist/components/sparkline/sparkline.agent.d.ts.map +1 -1
  493. package/dist/components/stepper-accordion/index.js +1 -1
  494. package/dist/components/stepper-accordion/stepper-accordion.agent.d.ts.map +1 -1
  495. package/dist/components/stepper-progress/index.js +1 -1
  496. package/dist/components/stepper-progress/stepper-progress.agent.d.ts.map +1 -1
  497. package/dist/components/suggestion-chip/index.js +1 -1
  498. package/dist/components/suggestion-chip/suggestion-chip.agent.d.ts.map +1 -1
  499. package/dist/components/switch/index.js +1 -1
  500. package/dist/components/switch/switch.agent.d.ts.map +1 -1
  501. package/dist/components/tabs/index.js +1 -1
  502. package/dist/components/tabs/tabs.agent.d.ts.map +1 -1
  503. package/dist/components/tabs/tabs.d.ts.map +1 -1
  504. package/dist/components/task-card/index.js +1 -1
  505. package/dist/components/task-card/task-card.agent.d.ts.map +1 -1
  506. package/dist/components/task-tray/index.js +1 -1
  507. package/dist/components/task-tray/task-tray.agent.d.ts.map +1 -1
  508. package/dist/components/text-area/index.js +1 -1
  509. package/dist/components/text-area/text-area.agent.d.ts.map +1 -1
  510. package/dist/components/text-input/index.js +1 -1
  511. package/dist/components/text-input/text-input.agent.d.ts.map +1 -1
  512. package/dist/components/theme-toggle/index.js +1 -1
  513. package/dist/components/theme-toggle/theme-toggle.agent.d.ts.map +1 -1
  514. package/dist/components/time-picker/index.js +1 -1
  515. package/dist/components/time-picker/time-picker.agent.d.ts.map +1 -1
  516. package/dist/components/timeline/index.js +1 -1
  517. package/dist/components/timeline/timeline.agent.d.ts.map +1 -1
  518. package/dist/components/toast/index.js +1 -1
  519. package/dist/components/toast/toast.agent.d.ts.map +1 -1
  520. package/dist/components/toast/toast.d.ts.map +1 -1
  521. package/dist/components/tooth-scheme/index.js +1 -1
  522. package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
  523. package/dist/components/transcript-panel/index.js +1 -1
  524. package/dist/components/transcript-panel/transcript-panel.agent.d.ts.map +1 -1
  525. package/dist/components/unit-converter/index.js +1 -1
  526. package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
  527. package/dist/components/unit-converter/unit-converter.agent.d.ts.map +1 -0
  528. package/dist/components/unit-converter/unit-converter.d.ts +27 -0
  529. package/dist/components/unit-converter/unit-converter.d.ts.map +1 -1
  530. package/dist/components/warning-stack/index.js +1 -1
  531. package/dist/components/warning-stack/warning-stack.d.ts +9 -0
  532. package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
  533. package/dist/components/whatsapp-button/index.d.ts +1 -1
  534. package/dist/components/whatsapp-button/index.d.ts.map +1 -1
  535. package/dist/components/whatsapp-button/index.js +3 -2
  536. package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
  537. package/dist/components/whatsapp-button/whatsapp-button.d.ts.map +1 -1
  538. package/dist/components/workflow/index.js +1 -1
  539. package/dist/components/workflow/workflow.agent.d.ts.map +1 -1
  540. package/dist/i18n/locales/ar.d.ts +72 -0
  541. package/dist/i18n/locales/ar.d.ts.map +1 -1
  542. package/dist/i18n/locales/ar.js +73 -1
  543. package/dist/i18n/locales/ar.js.map +1 -1
  544. package/dist/i18n/locales/de.d.ts +72 -0
  545. package/dist/i18n/locales/de.d.ts.map +1 -1
  546. package/dist/i18n/locales/de.js +73 -1
  547. package/dist/i18n/locales/de.js.map +1 -1
  548. package/dist/i18n/locales/el.d.ts +72 -0
  549. package/dist/i18n/locales/el.d.ts.map +1 -1
  550. package/dist/i18n/locales/el.js +73 -1
  551. package/dist/i18n/locales/el.js.map +1 -1
  552. package/dist/i18n/locales/en.d.ts +90 -0
  553. package/dist/i18n/locales/en.d.ts.map +1 -1
  554. package/dist/i18n/locales/en.js +91 -1
  555. package/dist/i18n/locales/en.js.map +1 -1
  556. package/dist/i18n/locales/es.d.ts +72 -0
  557. package/dist/i18n/locales/es.d.ts.map +1 -1
  558. package/dist/i18n/locales/es.js +73 -1
  559. package/dist/i18n/locales/es.js.map +1 -1
  560. package/dist/i18n/locales/fr.d.ts +72 -0
  561. package/dist/i18n/locales/fr.d.ts.map +1 -1
  562. package/dist/i18n/locales/fr.js +73 -1
  563. package/dist/i18n/locales/fr.js.map +1 -1
  564. package/dist/i18n/locales/hi.d.ts +72 -0
  565. package/dist/i18n/locales/hi.d.ts.map +1 -1
  566. package/dist/i18n/locales/hi.js +73 -1
  567. package/dist/i18n/locales/hi.js.map +1 -1
  568. package/dist/i18n/locales/it.d.ts +72 -0
  569. package/dist/i18n/locales/it.d.ts.map +1 -1
  570. package/dist/i18n/locales/it.js +73 -1
  571. package/dist/i18n/locales/it.js.map +1 -1
  572. package/dist/i18n/locales/ja.d.ts +72 -0
  573. package/dist/i18n/locales/ja.d.ts.map +1 -1
  574. package/dist/i18n/locales/ja.js +73 -1
  575. package/dist/i18n/locales/ja.js.map +1 -1
  576. package/dist/i18n/locales/nl.d.ts +72 -0
  577. package/dist/i18n/locales/nl.d.ts.map +1 -1
  578. package/dist/i18n/locales/nl.js +73 -1
  579. package/dist/i18n/locales/nl.js.map +1 -1
  580. package/dist/i18n/locales/pl.d.ts +72 -0
  581. package/dist/i18n/locales/pl.d.ts.map +1 -1
  582. package/dist/i18n/locales/pl.js +73 -1
  583. package/dist/i18n/locales/pl.js.map +1 -1
  584. package/dist/i18n/locales/pt.d.ts +72 -0
  585. package/dist/i18n/locales/pt.d.ts.map +1 -1
  586. package/dist/i18n/locales/pt.js +73 -1
  587. package/dist/i18n/locales/pt.js.map +1 -1
  588. package/dist/i18n/locales/ro.d.ts +72 -0
  589. package/dist/i18n/locales/ro.d.ts.map +1 -1
  590. package/dist/i18n/locales/ro.js +73 -1
  591. package/dist/i18n/locales/ro.js.map +1 -1
  592. package/dist/i18n/locales/ru.d.ts +72 -0
  593. package/dist/i18n/locales/ru.d.ts.map +1 -1
  594. package/dist/i18n/locales/ru.js +73 -1
  595. package/dist/i18n/locales/ru.js.map +1 -1
  596. package/dist/i18n/locales/sq.d.ts +72 -0
  597. package/dist/i18n/locales/sq.d.ts.map +1 -1
  598. package/dist/i18n/locales/sq.js +73 -1
  599. package/dist/i18n/locales/sq.js.map +1 -1
  600. package/dist/i18n/locales/sv.d.ts +72 -0
  601. package/dist/i18n/locales/sv.d.ts.map +1 -1
  602. package/dist/i18n/locales/sv.js +73 -1
  603. package/dist/i18n/locales/sv.js.map +1 -1
  604. package/dist/i18n/locales/tr.d.ts +72 -0
  605. package/dist/i18n/locales/tr.d.ts.map +1 -1
  606. package/dist/i18n/locales/tr.js +73 -1
  607. package/dist/i18n/locales/tr.js.map +1 -1
  608. package/dist/i18n/locales/zh.d.ts +72 -0
  609. package/dist/i18n/locales/zh.d.ts.map +1 -1
  610. package/dist/i18n/locales/zh.js +73 -1
  611. package/dist/i18n/locales/zh.js.map +1 -1
  612. package/dist/index.js +688 -673
  613. package/dist/index.js.map +1 -1
  614. package/dist/locales/ar.json +73 -1
  615. package/dist/locales/de.json +73 -1
  616. package/dist/locales/el.json +73 -1
  617. package/dist/locales/en.json +73 -1
  618. package/dist/locales/es.json +73 -1
  619. package/dist/locales/fr.json +73 -1
  620. package/dist/locales/hi.json +73 -1
  621. package/dist/locales/it.json +73 -1
  622. package/dist/locales/ja.json +73 -1
  623. package/dist/locales/nl.json +73 -1
  624. package/dist/locales/pl.json +73 -1
  625. package/dist/locales/pt.json +73 -1
  626. package/dist/locales/ro.json +73 -1
  627. package/dist/locales/ru.json +73 -1
  628. package/dist/locales/sq.json +73 -1
  629. package/dist/locales/sv.json +73 -1
  630. package/dist/locales/tr.json +73 -1
  631. package/dist/locales/zh.json +73 -1
  632. package/dist/patterns/alia-assistant/index.js +1 -1
  633. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  634. package/dist/patterns/patient-shell/index.js +1 -1
  635. package/dist/tokens.css +3 -2
  636. package/package.json +14 -1
  637. package/dist/_chunks/accordion-9lJSMMsZ.js.map +0 -1
  638. package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
  639. package/dist/_chunks/address-autocomplete-CT-9AOli.js.map +0 -1
  640. package/dist/_chunks/agenda-tray-T-BumlGZ.js.map +0 -1
  641. package/dist/_chunks/ai-prompt-input-BwEACCPm.js.map +0 -1
  642. package/dist/_chunks/ai-tools-rail-CInA_1-E.js.map +0 -1
  643. package/dist/_chunks/appointment-tray-BMl89NPW.js.map +0 -1
  644. package/dist/_chunks/audio-recorder-DjXLP4aF.js.map +0 -1
  645. package/dist/_chunks/autocomplete-CcCFlVf-.js.map +0 -1
  646. package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
  647. package/dist/_chunks/bishop-score-CjsB9bM-.js.map +0 -1
  648. package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
  649. package/dist/_chunks/bmi-calculator-n-823_1V.js.map +0 -1
  650. package/dist/_chunks/booking-L8-YP8BJ.js.map +0 -1
  651. package/dist/_chunks/breadcrumb-OTbaY70e.js.map +0 -1
  652. package/dist/_chunks/calendar-oYWOCrnf.js.map +0 -1
  653. package/dist/_chunks/care-plan-card-BwVUyUBb.js.map +0 -1
  654. package/dist/_chunks/care-plan-entry-card-VzdQHcOL.js.map +0 -1
  655. package/dist/_chunks/chart-Cg3e9EH9.js.map +0 -1
  656. package/dist/_chunks/chat-container-ogB4OskO.js.map +0 -1
  657. package/dist/_chunks/chat-input-B5zjNEUN.js.map +0 -1
  658. package/dist/_chunks/checkbox-DRcOdmXv.js.map +0 -1
  659. package/dist/_chunks/collapsible-X3oaLPU3.js.map +0 -1
  660. package/dist/_chunks/color-picker-FXpItIaF.js.map +0 -1
  661. package/dist/_chunks/combobox-BC-DFx8G.js.map +0 -1
  662. package/dist/_chunks/command-palette-BiPAAno-.js.map +0 -1
  663. package/dist/_chunks/contact-profile-card-7BMB85T6.js.map +0 -1
  664. package/dist/_chunks/copy-field-CCq7j6Zc.js.map +0 -1
  665. package/dist/_chunks/date-range-picker-C5BWfH_T.js.map +0 -1
  666. package/dist/_chunks/date-time-picker-Ze1My59T.js.map +0 -1
  667. package/dist/_chunks/dependent-selector-DpzGtr_J.js.map +0 -1
  668. package/dist/_chunks/dialog-DMGnSelc.js.map +0 -1
  669. package/dist/_chunks/document-scanner-D2qehl3-.js.map +0 -1
  670. package/dist/_chunks/dropdown-menu-DwwPovMZ.js.map +0 -1
  671. package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.js +0 -2409
  672. package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.js.map +0 -1
  673. package/dist/_chunks/file-upload-BosbPDb1.js.map +0 -1
  674. package/dist/_chunks/fiscal-code-input-DPtqluVb.js.map +0 -1
  675. package/dist/_chunks/freemium-paywall-CkWjv3o6.js.map +0 -1
  676. package/dist/_chunks/header-settings-CNOqIhoW.js.map +0 -1
  677. package/dist/_chunks/list-BOwqwy03.js.map +0 -1
  678. package/dist/_chunks/locale-picker-C9JmBht3.js.map +0 -1
  679. package/dist/_chunks/map-view-Tb5VfK9Y.js.map +0 -1
  680. package/dist/_chunks/message-card.agent-4IeIgrnJ.js.map +0 -1
  681. package/dist/_chunks/message-tray-CVyJajVJ.js.map +0 -1
  682. package/dist/_chunks/multi-select-BcPylvHR.js.map +0 -1
  683. package/dist/_chunks/navigation-menu-C6lBYVv9.js.map +0 -1
  684. package/dist/_chunks/notification-card.agent-Rqt3ofk9.js.map +0 -1
  685. package/dist/_chunks/notification-tray-DlgenTEe.js.map +0 -1
  686. package/dist/_chunks/number-input-Dj5L3pXK.js.map +0 -1
  687. package/dist/_chunks/operator-hero-f_KaRhw5.js.map +0 -1
  688. package/dist/_chunks/otp-input-xQ4Ps5VY.js.map +0 -1
  689. package/dist/_chunks/pagination-DQOgnxxw.js.map +0 -1
  690. package/dist/_chunks/patient-search-DR9XUYRQ.js.map +0 -1
  691. package/dist/_chunks/patient-summary-card-hEmr4eTW.js.map +0 -1
  692. package/dist/_chunks/payment-form-nXocS_MX.js.map +0 -1
  693. package/dist/_chunks/pdf-viewer-GsfNqeeT.js.map +0 -1
  694. package/dist/_chunks/phone-input-DVXhNlIl.js.map +0 -1
  695. package/dist/_chunks/popover-DTbfAuR0.js.map +0 -1
  696. package/dist/_chunks/practice-results-DND2SAt7.js.map +0 -1
  697. package/dist/_chunks/privacy-lock-C7JyMf0y.js.map +0 -1
  698. package/dist/_chunks/product-hub-panel-CAXDFeGP.js.map +0 -1
  699. package/dist/_chunks/public-footer.agent-CfXuW1x6.js.map +0 -1
  700. package/dist/_chunks/qr-code-DNXhi6se.js.map +0 -1
  701. package/dist/_chunks/recaptcha-widget-BCNHsgqt.js.map +0 -1
  702. package/dist/_chunks/registry-nPAVE19X.js +0 -21
  703. package/dist/_chunks/registry-nPAVE19X.js.map +0 -1
  704. package/dist/_chunks/resizable-3vzqDlg6.js.map +0 -1
  705. package/dist/_chunks/reviews-panel-DBktKm7i.js.map +0 -1
  706. package/dist/_chunks/rich-text-editor-VawKN1FI.js.map +0 -1
  707. package/dist/_chunks/search-bar-SY2BcV2N.js.map +0 -1
  708. package/dist/_chunks/search-input.agent-CfZvViOd.js.map +0 -1
  709. package/dist/_chunks/select-CEtRcon5.js.map +0 -1
  710. package/dist/_chunks/sheet-taJer-Ha.js.map +0 -1
  711. package/dist/_chunks/sidebar-DaB4ulxH.js.map +0 -1
  712. package/dist/_chunks/sign-document-CdAiHiCh.js.map +0 -1
  713. package/dist/_chunks/signature-capture-COi0Uiqu.js.map +0 -1
  714. package/dist/_chunks/slider-BHWzXdjt.js.map +0 -1
  715. package/dist/_chunks/sparkline-DGhCSw8M.js.map +0 -1
  716. package/dist/_chunks/stepper-accordion.agent-C4quJ-MD.js.map +0 -1
  717. package/dist/_chunks/stepper-progress-DDjq5nei.js.map +0 -1
  718. package/dist/_chunks/switch-BJ6HD3Mn.js.map +0 -1
  719. package/dist/_chunks/tabs-BIQ0ew1T.js.map +0 -1
  720. package/dist/_chunks/task-card.agent-CUPKYd7w.js.map +0 -1
  721. package/dist/_chunks/task-tray-CAncV-QQ.js.map +0 -1
  722. package/dist/_chunks/text-area-BIx0tZ05.js.map +0 -1
  723. package/dist/_chunks/text-input-BaClJL8Y.js.map +0 -1
  724. package/dist/_chunks/theme-toggle-DETmSu_h.js.map +0 -1
  725. package/dist/_chunks/time-picker-B5umYwfv.js.map +0 -1
  726. package/dist/_chunks/timeline-DQa5Tyz4.js.map +0 -1
  727. package/dist/_chunks/tooth-scheme-BIx1O2aJ.js.map +0 -1
  728. package/dist/_chunks/transcript-panel-CLHmv83g.js.map +0 -1
  729. package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
  730. package/dist/_chunks/unit-converter-C1V3ACM9.js.map +0 -1
  731. package/dist/_chunks/use-password-requirements-DsgduV1x.js.map +0 -1
  732. package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
  733. package/dist/_chunks/warning-stack-Cv4fr5zo.js.map +0 -1
  734. package/dist/_chunks/whatsapp-button-DUjlWGKf.js.map +0 -1
  735. package/dist/_chunks/workflow-map-JAZryZJr.js.map +0 -1
@@ -0,0 +1,283 @@
1
+ import { jsxs as u, jsx as e, Fragment as dn } from "react/jsx-runtime";
2
+ import { forwardRef as cn, useId as P, useState as y, useEffect as f, useMemo as U, useRef as N, useCallback as b } from "react";
3
+ import { c as X } from "./index-D2ZczOXr.js";
4
+ import { useTranslation as ln } from "react-i18next";
5
+ import { u as un } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
6
+ import { A as C } from "./alert-_mUKLmwA.js";
7
+ import { B as fn } from "./button-DD_0Xdmr.js";
8
+ import { I as mn } from "./icon-button-LqoiKcUN.js";
9
+ import { X as gn } from "./x-CCcI3eJp.js";
10
+ import { C as hn } from "./chevron-down-BX_NP2Yh.js";
11
+ const pn = X(
12
+ [
13
+ "ds:flex ds:flex-col",
14
+ "ds:rounded-[var(--radius-lg)]",
15
+ "ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]",
16
+ "ds:shadow-[var(--shadow-card)]",
17
+ "ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2",
18
+ "ds:p-[var(--spacing-md)]"
19
+ ].join(" "),
20
+ {
21
+ variants: {
22
+ size: {
23
+ sm: "ds:gap-[var(--spacing-sm)]",
24
+ md: "ds:gap-[var(--spacing-md)]"
25
+ },
26
+ // `stretch: true` fills the parent layout cell — mirrors the `stretch`
27
+ // prop on `Card` so a WarningStack rendered next to a Card in a grid
28
+ // row ends up at matching height.
29
+ stretch: {
30
+ true: "ds:h-full ds:self-stretch",
31
+ false: ""
32
+ }
33
+ },
34
+ defaultVariants: {
35
+ size: "md",
36
+ stretch: !1
37
+ }
38
+ }
39
+ ), wn = X(
40
+ [
41
+ "ds:grid ds:grid-cols-1",
42
+ "ds:@3xl/warning-stack:grid-cols-2",
43
+ "ds:@3xl/warning-stack:[&>li:nth-child(odd):last-child]:col-span-full"
44
+ ].join(" "),
45
+ {
46
+ variants: {
47
+ size: {
48
+ sm: "ds:gap-[var(--spacing-sm)]",
49
+ md: "ds:gap-[var(--spacing-md)]"
50
+ }
51
+ },
52
+ defaultVariants: { size: "md" }
53
+ }
54
+ ), vn = [
55
+ "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:self-start"
56
+ ].join(" "), Sn = 250;
57
+ function xn() {
58
+ if (typeof window > "u") return 200;
59
+ const i = window.getComputedStyle(document.documentElement).getPropertyValue("--animation-duration").trim(), l = parseFloat(i);
60
+ return Number.isFinite(l) ? i.endsWith("ms") ? l : l * 1e3 : 200;
61
+ }
62
+ function kn(o, i) {
63
+ return [
64
+ "ds:grid ds:transition-[grid-template-rows]",
65
+ "ds:duration-[var(--animation-duration)]",
66
+ "ds:motion-reduce:transition-none",
67
+ o ? "ds:grid-rows-[0fr]" : "ds:grid-rows-[1fr]",
68
+ i ? "ds:h-full ds:self-stretch" : ""
69
+ ].filter(Boolean).join(" ");
70
+ }
71
+ function yn(o, i) {
72
+ return [
73
+ "ds:min-h-0",
74
+ "ds:transition-opacity ds:duration-[var(--animation-duration)]",
75
+ "ds:motion-reduce:transition-none",
76
+ o ? "ds:opacity-0 ds:overflow-hidden" : "ds:opacity-100",
77
+ i ? "ds:pointer-events-none" : ""
78
+ ].filter(Boolean).join(" ");
79
+ }
80
+ const Nn = cn(
81
+ ({
82
+ items: o,
83
+ title: i,
84
+ description: l,
85
+ maxVisible: m,
86
+ defaultCollapsed: H = !0,
87
+ onDismiss: w,
88
+ onDismissAll: g,
89
+ dismissAllLabel: J,
90
+ size: A = "md",
91
+ stretch: B = !1,
92
+ ariaLabel: K,
93
+ emptyState: E,
94
+ className: Q,
95
+ ...Y
96
+ }, h) => {
97
+ const { t: c } = ln(), I = P(), R = P(), [T, j] = y(
98
+ () => /* @__PURE__ */ new Set()
99
+ );
100
+ f(() => {
101
+ j((n) => {
102
+ if (n.size === 0) return n;
103
+ const t = new Set(o.map((d) => d.id)), a = new Set([...n].filter((d) => t.has(d)));
104
+ return a.size === n.size ? n : a;
105
+ });
106
+ }, [o]);
107
+ const r = U(
108
+ () => o.filter((n) => !T.has(n.id)),
109
+ [o, T]
110
+ ), v = m !== void 0 && r.length > m, [p, Z] = y(H), z = N(null), W = N(r.length);
111
+ f(() => {
112
+ if (!z.current) return;
113
+ const n = W.current, t = r.length;
114
+ n !== t && (z.current.textContent = c("warningStack.countChanged", {
115
+ count: t,
116
+ defaultValue: "{{count}} warnings to review"
117
+ })), W.current = t;
118
+ }, [r.length, c]);
119
+ const $ = U(() => !v || !p ? r : r.slice(0, m), [r, v, p, m]), D = v ? r.length - (m ?? 0) : 0, F = r.length > 0, L = E != null, S = F || L, [s, x] = y(S ? "open" : "closed"), [M, _] = y(!1);
120
+ un(() => {
121
+ S ? s !== "open" && ((s === "closing" || s === "closed") && _(!0), x("open")) : s === "open" && x("settling");
122
+ }, [S, s]), f(() => {
123
+ if (s !== "settling") return;
124
+ const n = window.requestAnimationFrame(() => x("closing"));
125
+ return () => window.cancelAnimationFrame(n);
126
+ }, [s]), f(() => {
127
+ if (s !== "closing") return;
128
+ const n = Math.max(xn(), Sn), t = window.setTimeout(() => x("closed"), n);
129
+ return () => window.clearTimeout(t);
130
+ }, [s]), f(() => {
131
+ if (!M) return;
132
+ const n = window.requestAnimationFrame(() => _(!1));
133
+ return () => window.cancelAnimationFrame(n);
134
+ }, [M]);
135
+ const O = s === "closing", q = O || M, nn = S || s === "settling" || s === "closing", V = N(null), tn = b(
136
+ (n) => {
137
+ V.current = n, typeof h == "function" ? h(n) : h && (h.current = n);
138
+ },
139
+ [h]
140
+ ), k = N(null);
141
+ f(() => {
142
+ if (k.current === null) return;
143
+ const n = k.current;
144
+ k.current = null;
145
+ const t = V.current;
146
+ if (!t) return;
147
+ const a = Array.from(
148
+ t.querySelectorAll("[data-alert-dismiss]")
149
+ ), d = a[Math.min(n, a.length - 1)];
150
+ d ? d.focus() : L && t.focus();
151
+ });
152
+ const en = b(
153
+ (n, t) => (a) => {
154
+ a || (k.current = t, j((d) => new Set(d).add(n.id)), w == null || w(n));
155
+ },
156
+ [w]
157
+ ), sn = b(() => {
158
+ j((n) => {
159
+ const t = new Set(n);
160
+ for (const a of r) t.add(a.id);
161
+ return t;
162
+ }), g == null || g();
163
+ }, [r, g]), rn = b(() => Z((n) => !n), []), an = K ?? c("warningStack.regionLabel", "Warnings"), G = i ? /* @__PURE__ */ u("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
164
+ /* @__PURE__ */ e(
165
+ "h2",
166
+ {
167
+ id: I,
168
+ className: "ds:text-start type-title-section ds:text-[var(--foreground)]",
169
+ children: i
170
+ }
171
+ ),
172
+ l ? /* @__PURE__ */ e("p", { className: "ds:text-start type-body-sm ds:text-[var(--muted-foreground)]", children: l }) : null
173
+ ] }) : /* @__PURE__ */ e("h2", { id: I, className: "ds:sr-only", children: an }), on = g != null && F ? /* @__PURE__ */ u("div", { className: "ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
174
+ G,
175
+ /* @__PURE__ */ e(
176
+ mn,
177
+ {
178
+ type: "button",
179
+ icon: /* @__PURE__ */ e(gn, { "aria-hidden": "true" }),
180
+ intent: "ghost",
181
+ size: "sm",
182
+ "aria-label": J ?? c("warningStack.dismissAll", "Dismiss all notices"),
183
+ onClick: sn,
184
+ className: "ds:-me-[var(--spacing-2xs)] ds:shrink-0"
185
+ }
186
+ )
187
+ ] }) : G;
188
+ return nn ? (
189
+ // Outer: height-collapse track. Carries the bounding marker so it is
190
+ // the cascade-reset boundary even mid-fold.
191
+ /* @__PURE__ */ e(
192
+ "div",
193
+ {
194
+ "data-component": "warning-stack",
195
+ className: kn(q, B),
196
+ children: /* @__PURE__ */ e("div", { className: yn(q, O), children: /* @__PURE__ */ u(
197
+ "section",
198
+ {
199
+ ref: tn,
200
+ "aria-labelledby": I,
201
+ tabIndex: -1,
202
+ className: [pn({ size: A, stretch: B }), Q].filter(Boolean).join(" "),
203
+ ...Y,
204
+ children: [
205
+ on,
206
+ L ? null : /* @__PURE__ */ e(
207
+ "div",
208
+ {
209
+ ref: z,
210
+ "aria-live": "polite",
211
+ "aria-atomic": "true",
212
+ className: "ds:sr-only"
213
+ }
214
+ ),
215
+ F ? /* @__PURE__ */ u(dn, { children: [
216
+ /* @__PURE__ */ e("div", { className: "ds:@container/warning-stack", children: /* @__PURE__ */ e(
217
+ "ul",
218
+ {
219
+ id: R,
220
+ className: wn({ size: A }),
221
+ "aria-label": c("warningStack.listLabel", "Notices"),
222
+ children: $.map((n, t) => {
223
+ const a = n.variant ?? "warning";
224
+ return /* @__PURE__ */ e("li", { children: /* @__PURE__ */ u(
225
+ C,
226
+ {
227
+ variant: a,
228
+ dismissible: n.dismissible,
229
+ icon: n.icon,
230
+ onOpenChange: en(n, t),
231
+ className: "ds:h-full",
232
+ children: [
233
+ /* @__PURE__ */ e(C.Title, { as: "h3", children: n.title }),
234
+ n.description ? /* @__PURE__ */ e(C.Description, { children: n.description }) : null,
235
+ n.actions ? /* @__PURE__ */ e(C.Action, { children: n.actions }) : null
236
+ ]
237
+ }
238
+ ) }, n.id);
239
+ })
240
+ }
241
+ ) }),
242
+ v ? /* @__PURE__ */ u(
243
+ fn,
244
+ {
245
+ type: "button",
246
+ intent: "link",
247
+ size: "sm",
248
+ "aria-expanded": !p,
249
+ "aria-controls": R,
250
+ onClick: rn,
251
+ className: vn,
252
+ children: [
253
+ /* @__PURE__ */ e(
254
+ hn,
255
+ {
256
+ "aria-hidden": "true",
257
+ className: [
258
+ "ds:size-4 ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
259
+ p ? "" : "ds:rotate-180"
260
+ ].join(" ")
261
+ }
262
+ ),
263
+ p ? c("warningStack.showMore", {
264
+ count: D,
265
+ defaultValue: "Show {{count}} more warnings"
266
+ }) : c("warningStack.showLess", "Show less")
267
+ ]
268
+ }
269
+ ) : null
270
+ ] }) : E
271
+ ]
272
+ }
273
+ ) })
274
+ }
275
+ )
276
+ ) : null;
277
+ }
278
+ );
279
+ Nn.displayName = "WarningStack";
280
+ export {
281
+ Nn as W
282
+ };
283
+ //# sourceMappingURL=warning-stack-BsgaEbL8.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"warning-stack-BsgaEbL8.js","sources":["../../src/components/warning-stack/warning-stack.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type MutableRefObject,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown, X } from 'lucide-react';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { Alert, type AlertProps } from '../alert/alert';\nimport { Button } from '../button/button';\nimport { IconButton } from '../button/icon-button';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface WarningStackItem {\n id: string;\n variant?: AlertProps['variant'];\n title: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n actions?: ReactNode;\n dismissible?: boolean;\n}\n\n/** Empty-collapse fold phases (no-`emptyState` path only). See the fold\n * state machine in the component body. */\ntype FoldPhase = 'open' | 'settling' | 'closing' | 'closed';\n\nconst stackVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:rounded-[var(--radius-lg)]',\n 'ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:shadow-[var(--shadow-card)]',\n 'ds:border ds:border-[color:var(--card-border)] ds:[.theme-accessible_&]:border-2',\n 'ds:p-[var(--spacing-md)]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:gap-[var(--spacing-sm)]',\n md: 'ds:gap-[var(--spacing-md)]',\n },\n // `stretch: true` fills the parent layout cell — mirrors the `stretch`\n // prop on `Card` so a WarningStack rendered next to a Card in a grid\n // row ends up at matching height.\n stretch: {\n true: 'ds:h-full ds:self-stretch',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n stretch: false,\n },\n },\n);\n\n// Single column by default; two columns once the stack itself is wide\n// enough (container query — viewport width lies when the stack sits in\n// a narrow grid cell). A trailing odd item spans both columns so the\n// grid never ends on a half-width hole, which also keeps a lone item\n// full-width exactly as before.\nconst listVariants = cva(\n [\n 'ds:grid ds:grid-cols-1',\n 'ds:@3xl/warning-stack:grid-cols-2',\n 'ds:@3xl/warning-stack:[&>li:nth-child(odd):last-child]:col-span-full',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:gap-[var(--spacing-sm)]',\n md: 'ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst TOGGLE_CLASSES = [\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:self-start',\n].join(' ');\n\n/* ------------------------------------------------------------------ */\n/* Empty-collapse animation */\n/* */\n/* When the stack empties (every notice dismissed) and no `emptyState` */\n/* is supplied, the whole region folds away instead of leaving a hole. */\n/* The grid `1fr → 0fr` track is the only CSS-only way to animate to/ */\n/* from `height: auto`; JS-measured `max-height` is barred by the */\n/* no-inline-styles constraint. The outer wrapper owns the height */\n/* track; the inner wrapper owns the cross-fade + overflow clip. */\n/* ------------------------------------------------------------------ */\n\n/** Floor for how long the folding region stays mounted after it empties, so a\n * screen reader can voice the cleared count even when `--animation-duration`\n * is 0ms (accessible themes). The region is already visually collapsed, so\n * this window is imperceptible. */\nconst MIN_FOLD_UNMOUNT_MS = 250;\n\n/** Reads `--animation-duration` (ms) so the unmount timer matches the\n * CSS transition. Falls back to 200ms when it can't be resolved. */\nfunction readAnimationDurationMs(): number {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n}\n\n/** Outer height-collapse track. Always a grid so the `grid-template-rows`\n * transition has a stable from/to; only the row size flips. */\nfunction collapseTrackClass(collapsed: boolean, stretch: boolean): string {\n return [\n 'ds:grid ds:transition-[grid-template-rows]',\n 'ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n collapsed ? 'ds:grid-rows-[0fr]' : 'ds:grid-rows-[1fr]',\n stretch ? 'ds:h-full ds:self-stretch' : '',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\n/** Inner cross-fade layer. `min-h-0` lets the grid item shrink below its\n * content; `overflow-hidden` (only while animating) clips the fold so the\n * card's resting drop-shadow isn't clipped at rest. */\nfunction collapseInnerClass(collapsed: boolean, closing: boolean): string {\n return [\n 'ds:min-h-0',\n 'ds:transition-opacity ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n collapsed ? 'ds:opacity-0 ds:overflow-hidden' : 'ds:opacity-100',\n closing ? 'ds:pointer-events-none' : '',\n ]\n .filter(Boolean)\n .join(' ');\n}\n\nexport interface WarningStackProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role' | 'title'>,\n VariantProps<typeof stackVariants> {\n /** Items rendered inside the stack. */\n items: WarningStackItem[];\n /** Fill the parent layout cell — use in a dashboard grid row so the\n * stack ends up with matching height to sibling Cards. */\n stretch?: boolean;\n /** Visible title rendered as an `<h2>` above the stack. Also labels the\n * region for assistive tech. When omitted, the region is labelled via a\n * visually hidden heading using `ariaLabel` (or the default \"Warnings\"). */\n title?: ReactNode;\n /** Optional short description rendered under the title. */\n description?: ReactNode;\n /** Cap on visible items before a \"Show N more\" toggle appears. */\n maxVisible?: number;\n /** Whether the stack starts collapsed when items exceed `maxVisible`. */\n defaultCollapsed?: boolean;\n /** Fires when a dismissible item's close control is activated. */\n onDismiss?: (item: WarningStackItem) => void;\n /** When provided, a close control is rendered at the top inline-end of the\n * header that clears the whole stack at once. Activating it dismisses every\n * currently-visible notice (folding the region away) and then fires this\n * callback so the consumer can mirror the bulk dismissal into its store.\n * Opt-in: omit it when the stack carries notices that must not be bulk-cleared. */\n onDismissAll?: () => void;\n /** Accessible label for the whole-stack close control. Defaults to the\n * localised \"Dismiss all notices\". */\n dismissAllLabel?: string;\n /** Accessible label for the region when `title` is not set. */\n ariaLabel?: string;\n /** Optional node rendered when the stack has zero items. */\n emptyState?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const WarningStack = forwardRef<HTMLDivElement, WarningStackProps>(\n (\n {\n items,\n title,\n description,\n maxVisible,\n defaultCollapsed = true,\n onDismiss,\n onDismissAll,\n dismissAllLabel,\n size = 'md',\n stretch = false,\n ariaLabel,\n emptyState,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const labelId = useId();\n const listId = useId();\n\n // Track dismissed ids internally so the <li> unmounts even when the\n // consumer doesn't mirror dismissal into `items` — otherwise the list\n // keeps a ghost entry (and the two-column grid a blank cell). Pruned\n // when an id leaves `items`, so a re-pushed item renders again.\n const [dismissedIds, setDismissedIds] = useState<ReadonlySet<string>>(\n () => new Set(),\n );\n useEffect(() => {\n setDismissedIds((prev) => {\n if (prev.size === 0) return prev;\n const ids = new Set(items.map((item) => item.id));\n const next = new Set([...prev].filter((id) => ids.has(id)));\n return next.size === prev.size ? prev : next;\n });\n }, [items]);\n\n const liveItems = useMemo(\n () => items.filter((item) => !dismissedIds.has(item.id)),\n [items, dismissedIds],\n );\n\n const overflow = maxVisible !== undefined && liveItems.length > maxVisible;\n const [collapsed, setCollapsed] = useState(defaultCollapsed);\n\n // Live-region announces the count when items change.\n const liveRef = useRef<HTMLDivElement>(null);\n const lastCountRef = useRef<number>(liveItems.length);\n\n useEffect(() => {\n if (!liveRef.current) return;\n const prev = lastCountRef.current;\n const next = liveItems.length;\n if (prev !== next) {\n liveRef.current.textContent = t('warningStack.countChanged', {\n count: next,\n defaultValue: '{{count}} warnings to review',\n });\n }\n lastCountRef.current = next;\n }, [liveItems.length, t]);\n\n const visible = useMemo(() => {\n if (!overflow || !collapsed) return liveItems;\n return liveItems.slice(0, maxVisible);\n }, [liveItems, overflow, collapsed, maxVisible]);\n\n const hiddenCount = overflow ? liveItems.length - (maxVisible ?? 0) : 0;\n\n /* ----- Empty-collapse phase ------------------------------------- */\n const hasItems = liveItems.length > 0;\n const hasEmptyState = emptyState != null;\n // There is something to show whenever a live notice remains, or an\n // empty state has been supplied to fill the region in its place.\n const present = hasItems || hasEmptyState;\n\n // Only the no-`emptyState` path animates the fold. It runs in two beats\n // so the height transition has a stable start: a CSS transition can't\n // interpolate when the element's content changes in the same commit as\n // the track flip, so `settling` first re-renders the emptied region at\n // full height (track still open), then `closing` flips the track to 0fr\n // on the next frame — now the browser animates from a real height.\n // open → settling → closing → closed (unmounted, until a notice lands)\n const [phase, setPhase] = useState<FoldPhase>(present ? 'open' : 'closed');\n // Drives the expand-in when a notice lands after the region had folded.\n const [entering, setEntering] = useState(false);\n\n useIsomorphicLayoutEffect(() => {\n if (present) {\n if (phase !== 'open') {\n // Replay the expand only when re-appearing from a collapsed state.\n if (phase === 'closing' || phase === 'closed') setEntering(true);\n setPhase('open');\n }\n } else if (phase === 'open') {\n setPhase('settling');\n }\n }, [present, phase]);\n\n // settling → closing: flip the track shut one frame after the emptied\n // region has painted at full height, so the collapse actually animates.\n useEffect(() => {\n if (phase !== 'settling') return;\n const raf = window.requestAnimationFrame(() => setPhase('closing'));\n return () => window.cancelAnimationFrame(raf);\n }, [phase]);\n\n // closing → closed: unmount once the collapse transition has run. The\n // delay is floored so the polite live region (which lives in this subtree)\n // survives long enough for assistive tech to voice the cleared count\n // before the node is removed — otherwise an accessible theme, where\n // `--animation-duration` is 0ms, would unmount in the same frame and\n // swallow the announcement. The region is already collapsed to zero\n // height by then, so the extra mounted time is invisible.\n useEffect(() => {\n if (phase !== 'closing') return;\n const delay = Math.max(readAnimationDurationMs(), MIN_FOLD_UNMOUNT_MS);\n const id = window.setTimeout(() => setPhase('closed'), delay);\n return () => window.clearTimeout(id);\n }, [phase]);\n\n // Expand-in: clear the collapsed start-state on the next frame so the\n // grid track animates open instead of snapping to full height.\n useEffect(() => {\n if (!entering) return;\n const raf = window.requestAnimationFrame(() => setEntering(false));\n return () => window.cancelAnimationFrame(raf);\n }, [entering]);\n\n const closing = phase === 'closing';\n const animCollapsed = closing || entering;\n const mounted = present || phase === 'settling' || phase === 'closing';\n\n // Focus hand-off: dismissing unmounts the focused close button, which\n // would otherwise drop focus to <body> (WCAG 2.4.3). Aim for the\n // dismiss control now occupying the same list position (the next\n // item), else the last remaining one, else the region itself.\n const sectionRef = useRef<HTMLElement | null>(null);\n const setSectionRef = useCallback(\n (node: HTMLElement | null) => {\n sectionRef.current = node;\n if (typeof ref === 'function') {\n ref(node as HTMLDivElement | null);\n } else if (ref) {\n (ref as MutableRefObject<HTMLDivElement | null>).current =\n node as HTMLDivElement | null;\n }\n },\n [ref],\n );\n const pendingFocusIndexRef = useRef<number | null>(null);\n // No dependency array on purpose: this runs after every render but is\n // gated by `pendingFocusIndexRef`, which is only non-null on the render\n // that immediately follows a dismissal. Don't \"fix\" it to `[liveItems]`.\n useEffect(() => {\n if (pendingFocusIndexRef.current === null) return;\n const index = pendingFocusIndexRef.current;\n pendingFocusIndexRef.current = null;\n const section = sectionRef.current;\n if (!section) return;\n const dismissControls = Array.from(\n section.querySelectorAll<HTMLButtonElement>('[data-alert-dismiss]'),\n );\n const target =\n dismissControls[Math.min(index, dismissControls.length - 1)];\n if (target) target.focus();\n // Last notice gone: only land focus on the region if it survives the\n // dismissal (an emptyState keeps it mounted). When the stack folds\n // away entirely there is no stable target here — the consumer owns\n // re-homing focus (see the dashboard pattern) and the live region\n // announces the cleared count.\n else if (hasEmptyState) section.focus();\n });\n\n const handleDismiss = useCallback(\n (item: WarningStackItem, index: number) => (open: boolean) => {\n if (open) return;\n pendingFocusIndexRef.current = index;\n setDismissedIds((prev) => new Set(prev).add(item.id));\n onDismiss?.(item);\n },\n [onDismiss],\n );\n\n // Whole-stack close: dismiss every currently-visible notice in one go,\n // which empties `liveItems` and folds the region away. Focus re-homing on\n // the fold is the consumer's responsibility (same as the last-item case) —\n // there's no surviving in-component target once the header unmounts.\n const handleDismissAll = useCallback(() => {\n setDismissedIds((prev) => {\n const next = new Set(prev);\n for (const item of liveItems) next.add(item.id);\n return next;\n });\n onDismissAll?.();\n }, [liveItems, onDismissAll]);\n\n const toggle = useCallback(() => setCollapsed((c) => !c), []);\n\n const regionLabel = ariaLabel ?? t('warningStack.regionLabel', 'Warnings');\n\n // Title block: a visible header when `title` is provided; otherwise a\n // visually hidden heading so the region still has a programmatic name.\n // A `<div>` rather than `<header>` wrapper keeps the `<header>` element's\n // implicit banner role from leaking out of the region. The whole-stack\n // close control (when enabled) sits at the inline-end of this row.\n const titleBlock = title ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h2\n id={labelId}\n className=\"ds:text-start type-title-section ds:text-[var(--foreground)]\"\n >\n {title}\n </h2>\n {description ? (\n <p className=\"ds:text-start type-body-sm ds:text-[var(--muted-foreground)]\">\n {description}\n </p>\n ) : null}\n </div>\n ) : (\n <h2 id={labelId} className=\"ds:sr-only\">\n {regionLabel}\n </h2>\n );\n\n const showStackClose = onDismissAll != null && hasItems;\n const header = showStackClose ? (\n <div className=\"ds:flex ds:items-start ds:justify-between ds:gap-[var(--spacing-sm)]\">\n {titleBlock}\n <IconButton\n type=\"button\"\n icon={<X aria-hidden=\"true\" />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={\n dismissAllLabel ??\n t('warningStack.dismissAll', 'Dismiss all notices')\n }\n onClick={handleDismissAll}\n // Pull flush to the card's inline-end padding edge, and never let\n // the button compress when the title wraps.\n className=\"ds:-me-[var(--spacing-2xs)] ds:shrink-0\"\n />\n </div>\n ) : (\n titleBlock\n );\n\n // Fully folded away (or cold-start empty with no emptyState): render\n // nothing. Matches the long-standing \"empty + no emptyState → null\"\n // contract, now reached via the fold-out animation rather than instantly.\n if (!mounted) return null;\n\n return (\n // Outer: height-collapse track. Carries the bounding marker so it is\n // the cascade-reset boundary even mid-fold.\n <div\n data-component=\"warning-stack\"\n className={collapseTrackClass(animCollapsed, stretch)}\n >\n {/* Inner: cross-fade + overflow clip while folding. */}\n <div className={collapseInnerClass(animCollapsed, closing)}>\n <section\n ref={setSectionRef}\n aria-labelledby={labelId}\n // Programmatically focusable so a surviving region can take the\n // last dismissal's focus (see the focus hand-off above).\n tabIndex={-1}\n className={[stackVariants({ size, stretch }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n {header}\n {/* The live region announces the count as it changes. Omitted in\n emptyState mode, where the empty state itself communicates. */}\n {!hasEmptyState ? (\n <div\n ref={liveRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n />\n ) : null}\n {hasItems ? (\n <>\n {/* Container-type lives on this wrapper (never on the flex\n section itself) so the list can query its own inline size. */}\n <div className=\"ds:@container/warning-stack\">\n <ul\n id={listId}\n className={listVariants({ size })}\n // Neutral wording — the list mixes warnings with info\n // notices and promo offers.\n aria-label={t('warningStack.listLabel', 'Notices')}\n >\n {visible.map((item, index) => {\n const variant = item.variant ?? 'warning';\n return (\n <li key={item.id}>\n <Alert\n variant={variant}\n dismissible={item.dismissible}\n icon={item.icon}\n onOpenChange={handleDismiss(item, index)}\n // Fill the row so side-by-side alerts equalise height.\n className=\"ds:h-full\"\n >\n {/* `as=\"h3\"` keeps a clean heading ladder — the\n stack's h2 labels the region, then each item's\n h3 rises from it. */}\n <Alert.Title as=\"h3\">{item.title}</Alert.Title>\n {item.description ? (\n <Alert.Description>\n {item.description}\n </Alert.Description>\n ) : null}\n {item.actions ? (\n <Alert.Action>{item.actions}</Alert.Action>\n ) : null}\n </Alert>\n </li>\n );\n })}\n </ul>\n </div>\n\n {overflow ? (\n <Button\n type=\"button\"\n intent=\"link\"\n size=\"sm\"\n aria-expanded={!collapsed}\n aria-controls={listId}\n onClick={toggle}\n className={TOGGLE_CLASSES}\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={[\n 'ds:size-4 ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n collapsed ? '' : 'ds:rotate-180',\n ].join(' ')}\n />\n {collapsed\n ? t('warningStack.showMore', {\n count: hiddenCount,\n defaultValue: 'Show {{count}} more warnings',\n })\n : t('warningStack.showLess', 'Show less')}\n </Button>\n ) : null}\n </>\n ) : (\n emptyState\n )}\n </section>\n </div>\n </div>\n );\n },\n);\n\nWarningStack.displayName = 'WarningStack';\n"],"names":["stackVariants","cva","listVariants","TOGGLE_CLASSES","MIN_FOLD_UNMOUNT_MS","readAnimationDurationMs","trimmed","n","collapseTrackClass","collapsed","stretch","collapseInnerClass","closing","WarningStack","forwardRef","items","title","description","maxVisible","defaultCollapsed","onDismiss","onDismissAll","dismissAllLabel","size","ariaLabel","emptyState","className","rest","ref","t","useTranslation","labelId","useId","listId","dismissedIds","setDismissedIds","useState","useEffect","prev","ids","item","next","id","liveItems","useMemo","overflow","setCollapsed","liveRef","useRef","lastCountRef","visible","hiddenCount","hasItems","hasEmptyState","present","phase","setPhase","entering","setEntering","useIsomorphicLayoutEffect","raf","delay","animCollapsed","mounted","sectionRef","setSectionRef","useCallback","node","pendingFocusIndexRef","index","section","dismissControls","target","handleDismiss","open","handleDismissAll","toggle","c","regionLabel","titleBlock","jsxs","jsx","header","IconButton","X","Fragment","variant","Alert","Button","ChevronDown"],"mappings":"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"}
@@ -2,7 +2,9 @@ import { jsxs as c, jsx as i } from "react/jsx-runtime";
2
2
  import { forwardRef as A, useMemo as C } from "react";
3
3
  import { c as m } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as _ } from "react-i18next";
5
- function u({ className: a }) {
5
+ function u({
6
+ className: a
7
+ }) {
6
8
  return /* @__PURE__ */ i(
7
9
  "svg",
8
10
  {
@@ -182,6 +184,7 @@ const N = A(
182
184
  );
183
185
  N.displayName = "WhatsAppButton";
184
186
  export {
185
- N as W
187
+ N as W,
188
+ u as a
186
189
  };
187
- //# sourceMappingURL=whatsapp-button-DUjlWGKf.js.map
190
+ //# sourceMappingURL=whatsapp-button-BIy6NaJK.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"whatsapp-button-BIy6NaJK.js","sources":["../../src/components/whatsapp-button/whatsapp-button.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* WhatsAppButton — kit-tokened Click-to-Chat affordance. */\n/* */\n/* Replaces the booking website's loose green-circle-with-caption */\n/* combo (see HTP screenshot in the rebrand discussion) with a single */\n/* well-anchored affordance. Two variants: */\n/* */\n/* - `pill` — inline rounded button, brand green + white glyph + */\n/* label. Drops anywhere in card / header chrome. */\n/* - `fab` — circular floating action button, glyph only, */\n/* persistently anchored in the page corner. Carries an */\n/* `aria-label` so the SR announcement is \"Open WhatsApp */\n/* chat\" without rendering a loose visible caption. */\n/* */\n/* WhatsApp brand guidance requires the canonical #25D366 surface and */\n/* the official phone-bubble glyph — those live in `--brand-whatsapp` */\n/* tokens (added under `src/tokens/index.css`) so all four themes can */\n/* shift the green for accessible contrast without bleeding the brand */\n/* requirement into component code. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useMemo,\n type AnchorHTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\n\n/* ------------------------------------------------------------------ */\n/* WhatsApp glyph */\n/* */\n/* Inlined SVG — no external icon dep. The path matches WhatsApp's */\n/* official brand mark (speech bubble + phone). `currentColor` lets */\n/* the kit's `--brand-whatsapp-foreground` paint the glyph from a */\n/* single CVA class, so accessible-theme shifts apply without code. */\n/* ------------------------------------------------------------------ */\n\nexport function WhatsAppGlyph({\n className,\n}: {\n className?: string;\n}): ReactNode {\n return (\n <svg\n aria-hidden=\"true\"\n viewBox=\"0 0 24 24\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <path d=\"M17.472 14.382c-.297-.149-1.758-.867-2.03-.967-.273-.099-.471-.149-.67.15-.197.297-.767.966-.94 1.164-.173.199-.347.223-.644.075-.297-.15-1.255-.463-2.39-1.475-.883-.788-1.48-1.761-1.653-2.059-.173-.297-.018-.458.13-.606.134-.133.298-.347.446-.52.149-.174.198-.298.298-.497.099-.198.05-.371-.025-.52-.075-.149-.669-1.612-.916-2.207-.242-.579-.487-.5-.669-.51-.173-.008-.371-.01-.57-.01-.198 0-.52.074-.792.372-.272.297-1.04 1.016-1.04 2.479 0 1.462 1.065 2.875 1.213 3.074.149.198 2.096 3.2 5.077 4.487.71.306 1.263.489 1.694.625.712.227 1.36.195 1.871.118.571-.085 1.758-.719 2.006-1.413.248-.694.248-1.289.173-1.413-.074-.124-.272-.198-.57-.347m-5.421 7.403h-.004a9.87 9.87 0 0 1-5.031-1.378l-.361-.214-3.741.982.998-3.648-.235-.374a9.86 9.86 0 0 1-1.51-5.26c.001-5.45 4.436-9.884 9.888-9.884 2.64 0 5.122 1.03 6.988 2.898a9.825 9.825 0 0 1 2.893 6.994c-.003 5.45-4.437 9.884-9.885 9.884m8.413-18.297A11.815 11.815 0 0 0 12.05 0C5.495 0 .16 5.335.157 11.892c0 2.096.547 4.142 1.588 5.945L.057 24l6.305-1.654a11.882 11.882 0 0 0 5.683 1.448h.005c6.554 0 11.89-5.335 11.893-11.893a11.821 11.821 0 0 0-3.48-8.413Z\" />\n </svg>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n [\n // `position` is provided by `positionVariants` below — `static`\n // sets `ds:relative` (so the pseudo-element touch-target anchors),\n // `bottom-end` / `bottom-start` set `ds:fixed`. Keeping `relative`\n // off the base avoids the cascade conflict that made `position:\n // relative` win against `position: fixed` in the compiled CSS\n // (booking-website was patching with `style={{position:'fixed'}}`).\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:font-medium ds:whitespace-nowrap',\n 'ds:bg-[var(--brand-whatsapp)] ds:text-[var(--brand-whatsapp-foreground)]',\n 'ds:hover:bg-[var(--brand-whatsapp-hover)]',\n 'ds:active:opacity-90',\n 'ds:transition-[background-color,box-shadow,opacity]',\n 'ds:duration-[var(--animation-duration)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n // Focus ring colour is `var(--ring)` (= `--primary` in light, ditto\n // through theme cascade) — NOT `--brand-whatsapp`. Painting the\n // ring brand-green on a brand-green surface makes it invisible.\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n // Under Windows High Contrast Mode the bg + shadow are stripped;\n // repaint a solid border + swap the focus ring to CanvasText so\n // the affordance stays identifiable.\n 'ds:forced-colors:border ds:forced-colors:border-[ButtonBorder]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed',\n 'ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n variant: {\n // Pill — inline rounded button. Visible label is the brand\n // affordance text; glyph sits leading.\n pill: 'ds:rounded-[var(--radius-full)] ds:gap-[var(--spacing-xs)]',\n // FAB — circular floating action button. Glyph only; the\n // label resolves into `aria-label`.\n fab: [\n 'ds:rounded-full ds:shadow-[var(--shadow-lg)]',\n 'ds:hover:shadow-[var(--shadow-xl)] ds:active:shadow-[var(--shadow-md)]',\n ].join(' '),\n },\n size: {\n sm: '',\n md: '',\n lg: '',\n },\n },\n compoundVariants: [\n {\n variant: 'pill',\n size: 'sm',\n class:\n 'ds:h-9 ds:ps-3 ds:pe-3.5 ds:text-[length:var(--font-size-sm)] ds:[&_svg]:size-4 ds:min-h-[var(--min-target-size)] ds:sm:min-h-0 ds:before:absolute ds:before:inset-x-[calc((var(--min-target-size)-100%)/-2)] ds:before:inset-y-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"] ds:sm:before:hidden',\n },\n {\n variant: 'pill',\n size: 'md',\n class:\n 'ds:h-10 ds:ps-4 ds:pe-5 ds:text-[length:var(--font-size-base)] ds:[&_svg]:size-5',\n },\n {\n variant: 'pill',\n size: 'lg',\n class:\n 'ds:h-12 ds:ps-5 ds:pe-6 ds:text-[length:var(--font-size-lg)] ds:[&_svg]:size-6',\n },\n // FAB — fixed square dimensions; the `sm` case mirrors the\n // FloatingActionButton's pseudo-target expansion below the\n // `sm:` breakpoint so a 40px circle still hits 44/48 px on\n // mobile.\n {\n variant: 'fab',\n size: 'sm',\n class:\n 'ds:h-10 ds:w-10 ds:[&_svg]:size-5 ds:before:absolute ds:before:inset-x-[calc((var(--min-target-size)-100%)/-2)] ds:before:inset-y-[calc((var(--min-target-size)-100%)/-2)] ds:before:content-[\"\"] ds:sm:before:hidden',\n },\n {\n variant: 'fab',\n size: 'md',\n class: 'ds:h-14 ds:w-14 ds:[&_svg]:size-7',\n },\n {\n variant: 'fab',\n size: 'lg',\n class: 'ds:h-16 ds:w-16 ds:[&_svg]:size-8',\n },\n ],\n defaultVariants: {\n variant: 'pill',\n size: 'md',\n },\n },\n);\n\nconst positionVariants = cva('', {\n variants: {\n position: {\n // `relative` so the `::before` pseudo touch-target (defined in\n // the `pill sm` / `fab sm` compound variants) anchors to the\n // button's box. The fixed-positioning variants below don't need\n // this — `position: fixed` is itself a positioning context for\n // descendants and pseudo-elements.\n static: 'ds:relative',\n 'bottom-end':\n 'ds:fixed ds:z-[var(--z-fixed)] ds:bottom-[calc(var(--spacing-lg)+env(safe-area-inset-bottom,0px))] ds:end-[var(--spacing-lg)]',\n 'bottom-start':\n 'ds:fixed ds:z-[var(--z-fixed)] ds:bottom-[calc(var(--spacing-lg)+env(safe-area-inset-bottom,0px))] ds:start-[var(--spacing-lg)]',\n },\n },\n defaultVariants: { position: 'static' },\n});\n\n/* ------------------------------------------------------------------ */\n/* URL builder */\n/* ------------------------------------------------------------------ */\n\n/**\n * Build a `wa.me` deep-link from an E.164 phone number and an\n * optional prefilled message. The number is stripped to digits — the\n * `wa.me` host requires digits only (no `+`, no separators).\n *\n * Returns `null` (not an empty `wa.me/` URL) when the input contains\n * no digits — the caller is then responsible for rendering a disabled\n * affordance rather than shipping a broken link. In dev a `console.warn`\n * fires so the typo is visible during development.\n */\nfunction buildWaMeUrl(phoneNumber: string, message?: string): string | null {\n const digits = phoneNumber.replace(/\\D/g, '');\n if (digits.length === 0) {\n if (\n typeof import.meta !== 'undefined' &&\n typeof import.meta.env !== 'undefined' &&\n import.meta.env.DEV === true\n ) {\n console.warn(\n `[WhatsAppButton] phoneNumber \"${phoneNumber}\" contains no digits — ` +\n `the affordance will render disabled. Pass an E.164 number ` +\n `(e.g. \"+393331234567\") to fix.`,\n );\n }\n return null;\n }\n const base = `https://wa.me/${digits}`;\n if (!message) return base;\n return `${base}?text=${encodeURIComponent(message)}`;\n}\n\n/* ------------------------------------------------------------------ */\n/* Props */\n/* ------------------------------------------------------------------ */\n\nexport interface WhatsAppButtonProps\n extends\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, 'href' | 'children'>,\n VariantProps<typeof rootVariants>,\n VariantProps<typeof positionVariants> {\n /**\n * Phone number to chat to. E.164 format is recommended\n * (e.g. `+393331234567`). Any non-digit characters are stripped\n * before the URL is built — `wa.me` requires digits only.\n */\n phoneNumber: string;\n /**\n * Optional prefilled message. The receiver sees this in their\n * compose box. Keep it short and human — long pasted text is the\n * single most common reason consumers drop the affordance.\n */\n message?: string;\n /**\n * Override the visible / accessible label. Defaults to\n * `t('whatsApp.label')` (or `t('whatsApp.questionPrompt')` when\n * `tone=\"question\"`) for the pill variant, and\n * `t('whatsApp.fabLabel')` for the FAB.\n */\n label?: ReactNode;\n /**\n * Copy tone for the pill variant.\n * - `standard` (default) — brief \"Chat on WhatsApp\" affordance.\n * - `question` — invitational \"Have questions? Chat on WhatsApp\"\n * copy. Routes through `t('whatsApp.questionPrompt')`. Use on\n * public-facing surfaces (booking pages, marketing) where the\n * button is the only prompt encouraging engagement.\n *\n * Ignored for `variant=\"fab\"` — the floating action button is\n * glyph-only and its `aria-label` stays concise via `fabLabel`.\n */\n tone?: 'standard' | 'question';\n}\n\n/* ------------------------------------------------------------------ */\n/* WhatsAppButton */\n/* ------------------------------------------------------------------ */\n\nexport const WhatsAppButton = forwardRef<\n HTMLAnchorElement,\n WhatsAppButtonProps\n>(\n (\n {\n phoneNumber,\n message,\n variant = 'pill',\n size = 'md',\n position,\n label,\n tone = 'standard',\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const href = useMemo(\n () => buildWaMeUrl(phoneNumber, message),\n [phoneNumber, message],\n );\n // Default-label cascade:\n // FAB → `whatsApp.fabLabel` (always concise)\n // pill, tone=question → `whatsApp.questionPrompt` (invitational)\n // pill, tone=standard → `whatsApp.label` (default)\n // Consumer's `label` prop overrides any of the above.\n const defaultLabelKey =\n variant === 'fab'\n ? 'whatsApp.fabLabel'\n : tone === 'question'\n ? 'whatsApp.questionPrompt'\n : 'whatsApp.label';\n const resolvedLabel = label ?? t(defaultLabelKey);\n\n const composedClassName = [\n rootVariants({ variant, size }),\n positionVariants({ position }),\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n // When the input has no digits, render an `aria-disabled` anchor\n // with the same chrome but no `href` — assistive tech announces the\n // disabled state and click does nothing. `buildWaMeUrl` already\n // emitted a dev-mode warning above. `target` / `rel` are stripped\n // too because they're meaningless without `href`.\n const isDisabled = href === null;\n const commonAnchorProps = {\n ref,\n ...(isDisabled\n ? {}\n : {\n href: href as string,\n target: '_blank' as const,\n rel: 'noopener noreferrer' as const,\n }),\n 'aria-disabled': isDisabled ? true : undefined,\n 'data-component': 'whatsapp-button' as const,\n 'data-variant': variant,\n onClick: (event: React.MouseEvent<HTMLAnchorElement>) => {\n if (isDisabled) event.preventDefault();\n rest.onClick?.(event);\n },\n className: composedClassName,\n };\n\n // Screen-reader cue for the new-tab behaviour. WCAG 3.2.5 / G201:\n // user-initiated link openings to a new context should be\n // announced. Reused `link.opensInNewTab` from the kit's `ui` ns —\n // single source of truth across every external-link affordance.\n const opensInNewTabSrText = isDisabled\n ? null\n : t('link.opensInNewTab', 'Opens in a new tab');\n\n if (variant === 'fab') {\n // FAB — circular, glyph-only. The accessible name lives on the\n // anchor's `aria-label` (resolved label). No visible caption,\n // which is exactly what the redesign fixes vs. the legacy\n // green-circle-with-loose-text affordance.\n const fabAriaLabel =\n typeof resolvedLabel === 'string'\n ? opensInNewTabSrText\n ? `${resolvedLabel} — ${opensInNewTabSrText}`\n : resolvedLabel\n : undefined;\n return (\n <a {...rest} {...commonAnchorProps} aria-label={fabAriaLabel}>\n <WhatsAppGlyph />\n {typeof resolvedLabel !== 'string' ? (\n <span className=\"ds:sr-only\">\n {resolvedLabel}\n {opensInNewTabSrText ? ` — ${opensInNewTabSrText}` : null}\n </span>\n ) : null}\n </a>\n );\n }\n\n return (\n <a {...rest} {...commonAnchorProps}>\n <WhatsAppGlyph />\n <span>{resolvedLabel}</span>\n {opensInNewTabSrText ? (\n <span className=\"ds:sr-only\"> — {opensInNewTabSrText}</span>\n ) : null}\n </a>\n );\n },\n);\nWhatsAppButton.displayName = 'WhatsAppButton';\n"],"names":["WhatsAppGlyph","className","jsx","rootVariants","cva","positionVariants","buildWaMeUrl","phoneNumber","message","digits","base","WhatsAppButton","forwardRef","variant","size","position","label","tone","rest","ref","t","useTranslation","href","useMemo","resolvedLabel","composedClassName","isDisabled","commonAnchorProps","event","_a","opensInNewTabSrText","fabAriaLabel","jsxs"],"mappings":";;;;AAuCO,SAASA,EAAc;AAAA,EAC5B,WAAAC;AACF,GAEc;AACZ,SACE,gBAAAC;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,eAAY;AAAA,MACZ,SAAQ;AAAA,MACR,MAAK;AAAA,MACL,OAAM;AAAA,MACN,WAAAD;AAAA,MAEA,UAAA,gBAAAC,EAAC,QAAA,EAAK,GAAE,4lCAA2lC;AAAA,IAAA;AAAA,EAAA;AAGzmC;AAMA,MAAMC,IAAeC;AAAA,EACnB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,IAOE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA;AAAA;AAAA,QAGP,MAAM;AAAA;AAAA;AAAA,QAGN,KAAK;AAAA,UACH;AAAA,UACA;AAAA,QAAA,EACA,KAAK,GAAG;AAAA,MAAA;AAAA,MAEZ,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,kBAAkB;AAAA,MAChB;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA,MAEJ;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA,MAEJ;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMJ;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA,MAEJ;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET;AAAA,QACE,SAAS;AAAA,QACT,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,IAAA;AAAA,EACR;AAEJ,GAEMC,IAAmBD,EAAI,IAAI;AAAA,EAC/B,UAAU;AAAA,IACR,UAAU;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,MAMR,QAAQ;AAAA,MACR,cACE;AAAA,MACF,gBACE;AAAA,IAAA;AAAA,EACJ;AAAA,EAEF,iBAAiB,EAAE,UAAU,SAAA;AAC/B,CAAC;AAgBD,SAASE,EAAaC,GAAqBC,GAAiC;AAC1E,QAAMC,IAASF,EAAY,QAAQ,OAAO,EAAE;AAC5C,MAAIE,EAAO,WAAW;AAYpB,WAAO;AAET,QAAMC,IAAO,iBAAiBD,CAAM;AACpC,SAAKD,IACE,GAAGE,CAAI,SAAS,mBAAmBF,CAAO,CAAC,KAD7BE;AAEvB;AAgDO,MAAMC,IAAiBC;AAAA,EAI5B,CACE;AAAA,IACE,aAAAL;AAAA,IACA,SAAAC;AAAA,IACA,SAAAK,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,OAAAC;AAAA,IACA,MAAAC,IAAO;AAAA,IACP,WAAAhB;AAAA,IACA,GAAGiB;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAOC;AAAA,MACX,MAAMjB,EAAaC,GAAaC,CAAO;AAAA,MACvC,CAACD,GAAaC,CAAO;AAAA,IAAA,GAajBgB,IAAgBR,KAASI,EAL7BP,MAAY,QACR,sBACAI,MAAS,aACP,4BACA,gBACwC,GAE1CQ,IAAoB;AAAA,MACxBtB,EAAa,EAAE,SAAAU,GAAS,MAAAC,GAAM;AAAA,MAC9BT,EAAiB,EAAE,UAAAU,GAAU;AAAA,MAC7Bd;AAAA,IAAA,EAEC,OAAO,OAAO,EACd,KAAK,GAAG,GAOLyB,IAAaJ,MAAS,MACtBK,IAAoB;AAAA,MACxB,KAAAR;AAAA,MACA,GAAIO,IACA,CAAA,IACA;AAAA,QACE,MAAAJ;AAAA,QACA,QAAQ;AAAA,QACR,KAAK;AAAA,MAAA;AAAA,MAEX,iBAAiBI,IAAa,KAAO;AAAA,MACrC,kBAAkB;AAAA,MAClB,gBAAgBb;AAAA,MAChB,SAAS,CAACe,MAA+C;;AACvD,QAAIF,OAAkB,eAAA,IACtBG,IAAAX,EAAK,YAAL,QAAAW,EAAA,KAAAX,GAAeU;AAAA,MACjB;AAAA,MACA,WAAWH;AAAA,IAAA,GAOPK,IAAsBJ,IACxB,OACAN,EAAE,sBAAsB,oBAAoB;AAEhD,QAAIP,MAAY,OAAO;AAKrB,YAAMkB,IACJ,OAAOP,KAAkB,WACrBM,IACE,GAAGN,CAAa,MAAMM,CAAmB,KACzCN,IACF;AACN,+BACG,KAAA,EAAG,GAAGN,GAAO,GAAGS,GAAmB,cAAYI,GAC9C,UAAA;AAAA,QAAA,gBAAA7B,EAACF,GAAA,EAAc;AAAA,QACd,OAAOwB,KAAkB,WACxB,gBAAAQ,EAAC,QAAA,EAAK,WAAU,cACb,UAAA;AAAA,UAAAR;AAAA,UACAM,IAAsB,MAAMA,CAAmB,KAAK;AAAA,QAAA,EAAA,CACvD,IACE;AAAA,MAAA,GACN;AAAA,IAEJ;AAEA,6BACG,KAAA,EAAG,GAAGZ,GAAO,GAAGS,GACf,UAAA;AAAA,MAAA,gBAAAzB,EAACF,GAAA,EAAc;AAAA,MACf,gBAAAE,EAAC,UAAM,UAAAsB,GAAc;AAAA,MACpBM,IACC,gBAAAE,EAAC,QAAA,EAAK,WAAU,cAAa,UAAA;AAAA,QAAA;AAAA,QAAIF;AAAA,MAAA,EAAA,CAAoB,IACnD;AAAA,IAAA,GACN;AAAA,EAEJ;AACF;AACAnB,EAAe,cAAc;"}