@alfadocs/ui-kit-debug 1.50.0 → 1.51.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 (518) hide show
  1. package/dist/_chunks/{actions-cell-renderer-DMittsR3.js → actions-cell-renderer-DBI33cMp.js} +4 -4
  2. package/dist/_chunks/{actions-cell-renderer-DMittsR3.js.map → actions-cell-renderer-DBI33cMp.js.map} +1 -1
  3. package/dist/_chunks/{agenda-tray-BhZASyJm.js → agenda-tray-CGhEEnFE.js} +3 -3
  4. package/dist/_chunks/{agenda-tray-BhZASyJm.js.map → agenda-tray-CGhEEnFE.js.map} +1 -1
  5. package/dist/_chunks/{ai-credits-notice-C-kz_RrY.js → ai-credits-notice-C9K_ley1.js} +3 -3
  6. package/dist/_chunks/{ai-credits-notice-C-kz_RrY.js.map → ai-credits-notice-C9K_ley1.js.map} +1 -1
  7. package/dist/_chunks/{ai-permission-notice-BRZeS3mT.js → ai-permission-notice-DMG1o4Qa.js} +2 -2
  8. package/dist/_chunks/{ai-permission-notice-BRZeS3mT.js.map → ai-permission-notice-DMG1o4Qa.js.map} +1 -1
  9. package/dist/_chunks/{ai-prompt-input-CxvnXsAs.js → ai-prompt-input-ucwO-z8g.js} +2 -2
  10. package/dist/_chunks/{ai-prompt-input-CxvnXsAs.js.map → ai-prompt-input-ucwO-z8g.js.map} +1 -1
  11. package/dist/_chunks/{alia-sidebar-Dx-oeOV2.js → alia-sidebar-K3gaNH94.js} +7 -7
  12. package/dist/_chunks/{alia-sidebar-Dx-oeOV2.js.map → alia-sidebar-K3gaNH94.js.map} +1 -1
  13. package/dist/_chunks/{anamnesis-card-D8Si-2GV.js → anamnesis-card-CPjry4ur.js} +2 -2
  14. package/dist/_chunks/{anamnesis-card-D8Si-2GV.js.map → anamnesis-card-CPjry4ur.js.map} +1 -1
  15. package/dist/_chunks/{anamnesis-summary-rows-CZirLRuv.js → anamnesis-summary-rows-D9LZZHLw.js} +9 -9
  16. package/dist/_chunks/{anamnesis-summary-rows-CZirLRuv.js.map → anamnesis-summary-rows-D9LZZHLw.js.map} +1 -1
  17. package/dist/_chunks/{appointment-card-BgLpE6T5.js → appointment-card-DETaIfBb.js} +2 -2
  18. package/dist/_chunks/{appointment-card-BgLpE6T5.js.map → appointment-card-DETaIfBb.js.map} +1 -1
  19. package/dist/_chunks/{appointment-peek-Dk11UOVW.js → appointment-peek-B79v56Zc.js} +4 -4
  20. package/dist/_chunks/{appointment-peek-Dk11UOVW.js.map → appointment-peek-B79v56Zc.js.map} +1 -1
  21. package/dist/_chunks/{appointment-timeline-wQ-PdkFV.js → appointment-timeline-tyJJPgVU.js} +5 -5
  22. package/dist/_chunks/{appointment-timeline-wQ-PdkFV.js.map → appointment-timeline-tyJJPgVU.js.map} +1 -1
  23. package/dist/_chunks/{appointment-tray-D7Gt6m8x.js → appointment-tray-Dq4zto_L.js} +4 -4
  24. package/dist/_chunks/{appointment-tray-D7Gt6m8x.js.map → appointment-tray-Dq4zto_L.js.map} +1 -1
  25. package/dist/_chunks/{audio-recorder-DZBtAvLH.js → audio-recorder-Ddlp5rVg.js} +3 -3
  26. package/dist/_chunks/{audio-recorder-DZBtAvLH.js.map → audio-recorder-Ddlp5rVg.js.map} +1 -1
  27. package/dist/_chunks/{balance-badge-cell-klaxFNL_.js → balance-badge-cell-BCEsdEOe.js} +4 -4
  28. package/dist/_chunks/{balance-badge-cell-klaxFNL_.js.map → balance-badge-cell-BCEsdEOe.js.map} +1 -1
  29. package/dist/_chunks/{bishop-score-BMLRvXYF.js → bishop-score-1NAiZh0K.js} +2 -2
  30. package/dist/_chunks/{bishop-score-BMLRvXYF.js.map → bishop-score-1NAiZh0K.js.map} +1 -1
  31. package/dist/_chunks/{bmi-calculator-DUhRyyrA.js → bmi-calculator-ZzzPZhhI.js} +2 -2
  32. package/dist/_chunks/{bmi-calculator-DUhRyyrA.js.map → bmi-calculator-ZzzPZhhI.js.map} +1 -1
  33. package/dist/_chunks/{booking-Cdzd8kyY.js → booking-DmyX24Ls.js} +5 -5
  34. package/dist/_chunks/{booking-Cdzd8kyY.js.map → booking-DmyX24Ls.js.map} +1 -1
  35. package/dist/_chunks/{button-18oBsI3n.js → button-CYPx2xFq.js} +38 -36
  36. package/dist/_chunks/button-CYPx2xFq.js.map +1 -0
  37. package/dist/_chunks/{button-group-BSDqso_C.js → button-group-t9RrsCS6.js} +3 -3
  38. package/dist/_chunks/{button-group-BSDqso_C.js.map → button-group-t9RrsCS6.js.map} +1 -1
  39. package/dist/_chunks/{calendar-zpE9qTM4.js → calendar-aqzmITxw.js} +543 -508
  40. package/dist/_chunks/calendar-aqzmITxw.js.map +1 -0
  41. package/dist/_chunks/{calendar-event-card-DplPh1wv.js → calendar-event-card-DyFSIehr.js} +148 -145
  42. package/dist/_chunks/{calendar-event-card-DplPh1wv.js.map → calendar-event-card-DyFSIehr.js.map} +1 -1
  43. package/dist/_chunks/calendar-workspace-BqoPkCUp.js +10597 -0
  44. package/dist/_chunks/calendar-workspace-BqoPkCUp.js.map +1 -0
  45. package/dist/_chunks/{care-plan-card-ciBaaguw.js → care-plan-card-amX33mMF.js} +2 -2
  46. package/dist/_chunks/{care-plan-card-ciBaaguw.js.map → care-plan-card-amX33mMF.js.map} +1 -1
  47. package/dist/_chunks/{care-plan-entry-card-D7A0whiZ.js → care-plan-entry-card-DNkEucjN.js} +2 -2
  48. package/dist/_chunks/{care-plan-entry-card-D7A0whiZ.js.map → care-plan-entry-card-DNkEucjN.js.map} +1 -1
  49. package/dist/_chunks/{care-plan-header-DKV1gLqv.js → care-plan-header-CJi853Rf.js} +2 -2
  50. package/dist/_chunks/{care-plan-header-DKV1gLqv.js.map → care-plan-header-CJi853Rf.js.map} +1 -1
  51. package/dist/_chunks/{carousel.agent-DqDGR2yH.js → carousel.agent-2EhJsAtl.js} +2 -2
  52. package/dist/_chunks/{carousel.agent-DqDGR2yH.js.map → carousel.agent-2EhJsAtl.js.map} +1 -1
  53. package/dist/_chunks/{chart-VjuXDXOZ.js → chart-B2HnwMP5.js} +3 -3
  54. package/dist/_chunks/{chart-VjuXDXOZ.js.map → chart-B2HnwMP5.js.map} +1 -1
  55. package/dist/_chunks/{chat-input-BVho_SqP.js → chat-input-CHUsUFOD.js} +2 -2
  56. package/dist/_chunks/{chat-input-BVho_SqP.js.map → chat-input-CHUsUFOD.js.map} +1 -1
  57. package/dist/_chunks/{chat-message-B4ihjNy3.js → chat-message-DTcRGhNo.js} +3 -3
  58. package/dist/_chunks/{chat-message-B4ihjNy3.js.map → chat-message-DTcRGhNo.js.map} +1 -1
  59. package/dist/_chunks/{code-block-C_eNHWaa.js → code-block-BrwcZNPq.js} +2 -2
  60. package/dist/_chunks/{code-block-C_eNHWaa.js.map → code-block-BrwcZNPq.js.map} +1 -1
  61. package/dist/_chunks/{connection-status-Cfux3TvH.js → connection-status-DMheLE65.js} +3 -3
  62. package/dist/_chunks/{connection-status-Cfux3TvH.js.map → connection-status-DMheLE65.js.map} +1 -1
  63. package/dist/_chunks/{contact-profile-card-Dj4NgBL-.js → contact-profile-card-zQLGGFKG.js} +2 -2
  64. package/dist/_chunks/{contact-profile-card-Dj4NgBL-.js.map → contact-profile-card-zQLGGFKG.js.map} +1 -1
  65. package/dist/_chunks/{control-room-rail-DAO0qfOI.js → control-room-rail-5iuM3jcm.js} +3 -3
  66. package/dist/_chunks/{control-room-rail-DAO0qfOI.js.map → control-room-rail-5iuM3jcm.js.map} +1 -1
  67. package/dist/_chunks/{copy-field-Cm4y5Bff.js → copy-field-C-KvrgOG.js} +2 -2
  68. package/dist/_chunks/{copy-field-Cm4y5Bff.js.map → copy-field-C-KvrgOG.js.map} +1 -1
  69. package/dist/_chunks/{cycle-calculator-B9lBRNiZ.js → cycle-calculator-DQMCeEzn.js} +2 -2
  70. package/dist/_chunks/{cycle-calculator-B9lBRNiZ.js.map → cycle-calculator-DQMCeEzn.js.map} +1 -1
  71. package/dist/_chunks/{dashboard-grid-uX7x1ePj.js → dashboard-grid-H7uph3HO.js} +2 -2
  72. package/dist/_chunks/{dashboard-grid-uX7x1ePj.js.map → dashboard-grid-H7uph3HO.js.map} +1 -1
  73. package/dist/_chunks/{data-table-CrI3_bjH.js → data-table-C4yPR89K.js} +7 -7
  74. package/dist/_chunks/{data-table-CrI3_bjH.js.map → data-table-C4yPR89K.js.map} +1 -1
  75. package/dist/_chunks/{data-table-tabs-CzYYKp2_.js → data-table-tabs-Dd_O1nPY.js} +3 -3
  76. package/dist/_chunks/{data-table-tabs-CzYYKp2_.js.map → data-table-tabs-Dd_O1nPY.js.map} +1 -1
  77. package/dist/_chunks/{description-list-1A2DEbE6.js → description-list-DOPu69Jg.js} +2 -2
  78. package/dist/_chunks/{description-list-1A2DEbE6.js.map → description-list-DOPu69Jg.js.map} +1 -1
  79. package/dist/_chunks/{document-preview-Od2Hz4z5.js → document-preview-Dzh1YAz8.js} +3 -3
  80. package/dist/_chunks/{document-preview-Od2Hz4z5.js.map → document-preview-Dzh1YAz8.js.map} +1 -1
  81. package/dist/_chunks/{document-scanner-p0aGlzCy.js → document-scanner-BSVwMR4V.js} +2 -2
  82. package/dist/_chunks/{document-scanner-p0aGlzCy.js.map → document-scanner-BSVwMR4V.js.map} +1 -1
  83. package/dist/_chunks/dropdown-menu-DIzxr_lp.js +594 -0
  84. package/dist/_chunks/dropdown-menu-DIzxr_lp.js.map +1 -0
  85. package/dist/_chunks/{due-date-calculator-BVqJaxzd.js → due-date-calculator-DUjw4w5O.js} +2 -2
  86. package/dist/_chunks/{due-date-calculator-BVqJaxzd.js.map → due-date-calculator-DUjw4w5O.js.map} +1 -1
  87. package/dist/_chunks/{editable-currency-cell-renderer-D_G2Ap61.js → editable-currency-cell-renderer-Cch3RIJL.js} +3 -3
  88. package/dist/_chunks/{editable-currency-cell-renderer-D_G2Ap61.js.map → editable-currency-cell-renderer-Cch3RIJL.js.map} +1 -1
  89. package/dist/_chunks/{editable-description-B4NVdjvd.js → editable-description-CRQib91p.js} +3 -3
  90. package/dist/_chunks/{editable-description-B4NVdjvd.js.map → editable-description-CRQib91p.js.map} +1 -1
  91. package/dist/_chunks/{editor-overlay-BDiBvQmL.js → editor-overlay-DsA7vR5C.js} +2 -2
  92. package/dist/_chunks/{editor-overlay-BDiBvQmL.js.map → editor-overlay-DsA7vR5C.js.map} +1 -1
  93. package/dist/_chunks/{empty-state-DTBZ1ENT.js → empty-state-Ck1wVWdN.js} +2 -2
  94. package/dist/_chunks/{empty-state-DTBZ1ENT.js.map → empty-state-Ck1wVWdN.js.map} +1 -1
  95. package/dist/_chunks/{entity-summary-CFJfBdVP.js → entity-summary-Cvs21xPr.js} +3 -3
  96. package/dist/_chunks/{entity-summary-CFJfBdVP.js.map → entity-summary-Cvs21xPr.js.map} +1 -1
  97. package/dist/_chunks/{error-boundary-BxTqEXqj.js → error-boundary-C_HAzVLO.js} +2 -2
  98. package/dist/_chunks/{error-boundary-BxTqEXqj.js.map → error-boundary-C_HAzVLO.js.map} +1 -1
  99. package/dist/_chunks/{face-scheme-fku-RShg.js → face-scheme-DVZZTuXT.js} +5 -5
  100. package/dist/_chunks/{face-scheme-fku-RShg.js.map → face-scheme-DVZZTuXT.js.map} +1 -1
  101. package/dist/_chunks/{fetal-weight-B69yOS9W.js → fetal-weight-B-lO-948.js} +2 -2
  102. package/dist/_chunks/{fetal-weight-B69yOS9W.js.map → fetal-weight-B-lO-948.js.map} +1 -1
  103. package/dist/_chunks/{field-array-lIXrFWS0.js → field-array-B3IDOct8.js} +3 -3
  104. package/dist/_chunks/{field-array-lIXrFWS0.js.map → field-array-B3IDOct8.js.map} +1 -1
  105. package/dist/_chunks/{file-manager-C6QQPQV5.js → file-manager-COUb-w8j.js} +7 -7
  106. package/dist/_chunks/{file-manager-C6QQPQV5.js.map → file-manager-COUb-w8j.js.map} +1 -1
  107. package/dist/_chunks/{finished-terminal-B2oqXO0Y.js → finished-terminal-BrAWwfOw.js} +2 -2
  108. package/dist/_chunks/{finished-terminal-B2oqXO0Y.js.map → finished-terminal-BrAWwfOw.js.map} +1 -1
  109. package/dist/_chunks/{fiscal-code-input-BEF8eKIG.js → fiscal-code-input-CwUwhUZy.js} +2 -2
  110. package/dist/_chunks/{fiscal-code-input-BEF8eKIG.js.map → fiscal-code-input-CwUwhUZy.js.map} +1 -1
  111. package/dist/_chunks/floating-action-button-pojvb9gG.js.map +1 -1
  112. package/dist/_chunks/{freemium-paywall-B6JITu4l.js → freemium-paywall-DiPJrL18.js} +2 -2
  113. package/dist/_chunks/{freemium-paywall-B6JITu4l.js.map → freemium-paywall-DiPJrL18.js.map} +1 -1
  114. package/dist/_chunks/{gestational-age-calculator-DsGN6_HS.js → gestational-age-calculator-BVPtrWKf.js} +2 -2
  115. package/dist/_chunks/{gestational-age-calculator-DsGN6_HS.js.map → gestational-age-calculator-BVPtrWKf.js.map} +1 -1
  116. package/dist/_chunks/{hcg-doubling-D2SH-e7t.js → hcg-doubling-CPktiA3H.js} +2 -2
  117. package/dist/_chunks/{hcg-doubling-D2SH-e7t.js.map → hcg-doubling-CPktiA3H.js.map} +1 -1
  118. package/dist/_chunks/{header-CCjp5GvE.js → header-C8NbLgVq.js} +2 -2
  119. package/dist/_chunks/{header-CCjp5GvE.js.map → header-C8NbLgVq.js.map} +1 -1
  120. package/dist/_chunks/header-settings-D0M3WNTS.js +305 -0
  121. package/dist/_chunks/header-settings-D0M3WNTS.js.map +1 -0
  122. package/dist/_chunks/{help-me-write-templates-DQtT1qs_.js → help-me-write-templates-CYAKuXZ3.js} +5 -5
  123. package/dist/_chunks/{help-me-write-templates-DQtT1qs_.js.map → help-me-write-templates-CYAKuXZ3.js.map} +1 -1
  124. package/dist/_chunks/{hover-card-BplP5SzQ.js → hover-card-BM0vNmq4.js} +2 -2
  125. package/dist/_chunks/{hover-card-BplP5SzQ.js.map → hover-card-BM0vNmq4.js.map} +1 -1
  126. package/dist/_chunks/{icon-button-CY7GU_Se.js → icon-button-JAXAkqWC.js} +2 -2
  127. package/dist/_chunks/icon-button-JAXAkqWC.js.map +1 -0
  128. package/dist/_chunks/{icon-button-group-B_426QN_.js → icon-button-group-ud2BLmxe.js} +3 -3
  129. package/dist/_chunks/{icon-button-group-B_426QN_.js.map → icon-button-group-ud2BLmxe.js.map} +1 -1
  130. package/dist/_chunks/{icon-picker-ZLebyB0U.js → icon-picker-B1PwkUHy.js} +3 -3
  131. package/dist/_chunks/{icon-picker-ZLebyB0U.js.map → icon-picker-B1PwkUHy.js.map} +1 -1
  132. package/dist/_chunks/{image-cropper-_HiNN79d.js → image-cropper-DM6hpXUw.js} +2 -2
  133. package/dist/_chunks/{image-cropper-_HiNN79d.js.map → image-cropper-DM6hpXUw.js.map} +1 -1
  134. package/dist/_chunks/{info-tip-laBxZhKu.js → info-tip-CywkQ1NX.js} +2 -2
  135. package/dist/_chunks/{info-tip-laBxZhKu.js.map → info-tip-CywkQ1NX.js.map} +1 -1
  136. package/dist/_chunks/{insert-result-CSuPQyKL.js → insert-result-Fu9AHxR6.js} +2 -2
  137. package/dist/_chunks/{insert-result-CSuPQyKL.js.map → insert-result-Fu9AHxR6.js.map} +1 -1
  138. package/dist/_chunks/{key-value-pair-Dcdl3Gni.js → key-value-pair-BL1J3_Km.js} +2 -2
  139. package/dist/_chunks/{key-value-pair-Dcdl3Gni.js.map → key-value-pair-BL1J3_Km.js.map} +1 -1
  140. package/dist/_chunks/{kit-extensions-BTJSnM_H.js → kit-extensions-B9Qn6VIc.js} +6 -6
  141. package/dist/_chunks/{kit-extensions-BTJSnM_H.js.map → kit-extensions-B9Qn6VIc.js.map} +1 -1
  142. package/dist/_chunks/{link-cell-renderer-CkNbUsBM.js → link-cell-renderer-BcW3F1j9.js} +2 -2
  143. package/dist/_chunks/{link-cell-renderer-CkNbUsBM.js.map → link-cell-renderer-BcW3F1j9.js.map} +1 -1
  144. package/dist/_chunks/{locale-picker-DGkQmhV9.js → locale-picker-Z42P8T-i.js} +218 -213
  145. package/dist/_chunks/locale-picker-Z42P8T-i.js.map +1 -0
  146. package/dist/_chunks/{map-view-Bb7ClKSF.js → map-view-DxYPJjM9.js} +2 -2
  147. package/dist/_chunks/{map-view-Bb7ClKSF.js.map → map-view-DxYPJjM9.js.map} +1 -1
  148. package/dist/_chunks/{marketplace-app-shell-1uKqs4gD.js → marketplace-app-shell-rTTvWRrE.js} +6 -6
  149. package/dist/_chunks/{marketplace-app-shell-1uKqs4gD.js.map → marketplace-app-shell-rTTvWRrE.js.map} +1 -1
  150. package/dist/_chunks/{message-card-C2zsvyj0.js → message-card-CUBPPn4Z.js} +3 -3
  151. package/dist/_chunks/{message-card-C2zsvyj0.js.map → message-card-CUBPPn4Z.js.map} +1 -1
  152. package/dist/_chunks/{message-tray-CMlmxdH2.js → message-tray-uy3DAIbn.js} +4 -4
  153. package/dist/_chunks/{message-tray-CMlmxdH2.js.map → message-tray-uy3DAIbn.js.map} +1 -1
  154. package/dist/_chunks/{muscle-scheme-Co0NIgbU.js → muscle-scheme-CH-vQ7Ch.js} +2 -2
  155. package/dist/_chunks/{muscle-scheme-Co0NIgbU.js.map → muscle-scheme-CH-vQ7Ch.js.map} +1 -1
  156. package/dist/_chunks/{notes-panel-xxpFt-I1.js → notes-panel-Dka4Z2M7.js} +4 -4
  157. package/dist/_chunks/{notes-panel-xxpFt-I1.js.map → notes-panel-Dka4Z2M7.js.map} +1 -1
  158. package/dist/_chunks/{notification-card-DDzBCi8l.js → notification-card-Hy8w3UWx.js} +3 -3
  159. package/dist/_chunks/{notification-card-DDzBCi8l.js.map → notification-card-Hy8w3UWx.js.map} +1 -1
  160. package/dist/_chunks/{notification-tray-PnH2PBlZ.js → notification-tray-VuV3XXB8.js} +4 -4
  161. package/dist/_chunks/{notification-tray-PnH2PBlZ.js.map → notification-tray-VuV3XXB8.js.map} +1 -1
  162. package/dist/_chunks/{optical-prescription-DUufWXfZ.js → optical-prescription-C2n6d0HO.js} +2 -2
  163. package/dist/_chunks/{optical-prescription-DUufWXfZ.js.map → optical-prescription-C2n6d0HO.js.map} +1 -1
  164. package/dist/_chunks/{panel-subview-CzHutkA8.js → panel-subview-DAY-ToM3.js} +2 -2
  165. package/dist/_chunks/{panel-subview-CzHutkA8.js.map → panel-subview-DAY-ToM3.js.map} +1 -1
  166. package/dist/_chunks/{patient-details-tTlvrJSU.js → patient-details-D9sAM3qh.js} +3 -3
  167. package/dist/_chunks/{patient-details-tTlvrJSU.js.map → patient-details-D9sAM3qh.js.map} +1 -1
  168. package/dist/_chunks/{patient-field-row-DElFbpKc.js → patient-field-row-CT04C_lZ.js} +277 -257
  169. package/dist/_chunks/patient-field-row-CT04C_lZ.js.map +1 -0
  170. package/dist/_chunks/{patient-search-DgXdGkhK.js → patient-search-DkIukAMQ.js} +3 -3
  171. package/dist/_chunks/{patient-search-DgXdGkhK.js.map → patient-search-DkIukAMQ.js.map} +1 -1
  172. package/dist/_chunks/{patient-summary-card-DQ__6DR-.js → patient-summary-card-DI0BH-Fe.js} +5 -5
  173. package/dist/_chunks/{patient-summary-card-DQ__6DR-.js.map → patient-summary-card-DI0BH-Fe.js.map} +1 -1
  174. package/dist/_chunks/{payment-automation-upsell-ugi4np1l.js → payment-automation-upsell-vQBIyUky.js} +2 -2
  175. package/dist/_chunks/{payment-automation-upsell-ugi4np1l.js.map → payment-automation-upsell-vQBIyUky.js.map} +1 -1
  176. package/dist/_chunks/{payment-request-card-DMJB57Tv.js → payment-request-card-BSaJzhxz.js} +3 -3
  177. package/dist/_chunks/{payment-request-card-DMJB57Tv.js.map → payment-request-card-BSaJzhxz.js.map} +1 -1
  178. package/dist/_chunks/{periodontal-chart-DbGzKDj7.js → periodontal-chart-BcTcOc79.js} +2 -2
  179. package/dist/_chunks/{periodontal-chart-DbGzKDj7.js.map → periodontal-chart-BcTcOc79.js.map} +1 -1
  180. package/dist/_chunks/{periodontal-chart-card-DvHyP47v.js → periodontal-chart-card-NS_nToBf.js} +2 -2
  181. package/dist/_chunks/{periodontal-chart-card-DvHyP47v.js.map → periodontal-chart-card-NS_nToBf.js.map} +1 -1
  182. package/dist/_chunks/{popover-Dvb40vPH.js → popover-SASSeAdY.js} +2 -2
  183. package/dist/_chunks/{popover-Dvb40vPH.js.map → popover-SASSeAdY.js.map} +1 -1
  184. package/dist/_chunks/{practice-results-EKRiqWtQ.js → practice-results-C3ifcObw.js} +6 -6
  185. package/dist/_chunks/{practice-results-EKRiqWtQ.js.map → practice-results-C3ifcObw.js.map} +1 -1
  186. package/dist/_chunks/{pregnancy-dating-lfjjZVZH.js → pregnancy-dating-CpJ3iYvD.js} +2 -2
  187. package/dist/_chunks/{pregnancy-dating-lfjjZVZH.js.map → pregnancy-dating-CpJ3iYvD.js.map} +1 -1
  188. package/dist/_chunks/{pregnancy-weight-gain-WpNt-S0q.js → pregnancy-weight-gain-kDOhA2vZ.js} +2 -2
  189. package/dist/_chunks/{pregnancy-weight-gain-WpNt-S0q.js.map → pregnancy-weight-gain-kDOhA2vZ.js.map} +1 -1
  190. package/dist/_chunks/{privacy-lock-D6gq0GDg.js → privacy-lock-CEyvNpC8.js} +3 -3
  191. package/dist/_chunks/{privacy-lock-D6gq0GDg.js.map → privacy-lock-CEyvNpC8.js.map} +1 -1
  192. package/dist/_chunks/{privacy-mask-BC5lw2zB.js → privacy-mask-TzMlEu3Q.js} +2 -2
  193. package/dist/_chunks/{privacy-mask-BC5lw2zB.js.map → privacy-mask-TzMlEu3Q.js.map} +1 -1
  194. package/dist/_chunks/{product-hub-panel-CKeSCSeE.js → product-hub-panel-b70i9Hi1.js} +3 -3
  195. package/dist/_chunks/{product-hub-panel-CKeSCSeE.js.map → product-hub-panel-b70i9Hi1.js.map} +1 -1
  196. package/dist/_chunks/{public-header.agent-B9wDmUeB.js → public-header.agent-D0ApOrmx.js} +3 -3
  197. package/dist/_chunks/{public-header.agent-B9wDmUeB.js.map → public-header.agent-D0ApOrmx.js.map} +1 -1
  198. package/dist/_chunks/{radiograph-panel.agent-TmyIvTOa.js → radiograph-panel.agent-jhwaIW8U.js} +4 -4
  199. package/dist/_chunks/{radiograph-panel.agent-TmyIvTOa.js.map → radiograph-panel.agent-jhwaIW8U.js.map} +1 -1
  200. package/dist/_chunks/resource-chip-DQeCJzJf.js +143 -0
  201. package/dist/_chunks/resource-chip-DQeCJzJf.js.map +1 -0
  202. package/dist/_chunks/{reviews-panel-BdwFp_0c.js → reviews-panel-B5QC4FIp.js} +4 -4
  203. package/dist/_chunks/{reviews-panel-BdwFp_0c.js.map → reviews-panel-B5QC4FIp.js.map} +1 -1
  204. package/dist/_chunks/{rich-text-editor-y6ML0KeV.js → rich-text-editor-DoBXdwmx.js} +930 -943
  205. package/dist/_chunks/rich-text-editor-DoBXdwmx.js.map +1 -0
  206. package/dist/_chunks/{session-countdown-ACJyTXH2.js → session-countdown-26XB5u38.js} +2 -2
  207. package/dist/_chunks/{session-countdown-ACJyTXH2.js.map → session-countdown-26XB5u38.js.map} +1 -1
  208. package/dist/_chunks/{sheet-D0Lh0KR2.js → sheet-CwhNzxbr.js} +2 -2
  209. package/dist/_chunks/{sheet-D0Lh0KR2.js.map → sheet-CwhNzxbr.js.map} +1 -1
  210. package/dist/_chunks/{sign-in-with-alfadocs-button-CDyJAIzW.js → sign-in-with-alfadocs-button-jxbze77L.js} +2 -2
  211. package/dist/_chunks/{sign-in-with-alfadocs-button-CDyJAIzW.js.map → sign-in-with-alfadocs-button-jxbze77L.js.map} +1 -1
  212. package/dist/_chunks/{signature-request-BUGeG8oD.js → signature-request-BorHf3CY.js} +4 -4
  213. package/dist/_chunks/{signature-request-BUGeG8oD.js.map → signature-request-BorHf3CY.js.map} +1 -1
  214. package/dist/_chunks/{slot-grid-4fWH3Euk.js → slot-grid-xgf2UKLS.js} +4 -4
  215. package/dist/_chunks/{slot-grid-4fWH3Euk.js.map → slot-grid-xgf2UKLS.js.map} +1 -1
  216. package/dist/_chunks/social-sign-in-button-dlpPI5l7.js.map +1 -1
  217. package/dist/_chunks/{streaming-text-eRiizArc.js → streaming-text-Cos2fVTw.js} +2 -2
  218. package/dist/_chunks/{streaming-text-eRiizArc.js.map → streaming-text-Cos2fVTw.js.map} +1 -1
  219. package/dist/_chunks/{tab-bar-BHFf6knq.js → tab-bar-BrkMUW0c.js} +2 -2
  220. package/dist/_chunks/{tab-bar-BHFf6knq.js.map → tab-bar-BrkMUW0c.js.map} +1 -1
  221. package/dist/_chunks/tabs-tK22Mz7r.js +413 -0
  222. package/dist/_chunks/tabs-tK22Mz7r.js.map +1 -0
  223. package/dist/_chunks/{task-card-jaOhnj_q.js → task-card-CLpHmqEY.js} +2 -2
  224. package/dist/_chunks/{task-card-jaOhnj_q.js.map → task-card-CLpHmqEY.js.map} +1 -1
  225. package/dist/_chunks/{task-editor-DlvTwAfv.js → task-editor-B4UGsU7l.js} +6 -6
  226. package/dist/_chunks/{task-editor-DlvTwAfv.js.map → task-editor-B4UGsU7l.js.map} +1 -1
  227. package/dist/_chunks/{task-tray-HHyxi9ga.js → task-tray-dsmYgjVb.js} +4 -4
  228. package/dist/_chunks/{task-tray-HHyxi9ga.js.map → task-tray-dsmYgjVb.js.map} +1 -1
  229. package/dist/_chunks/{tasks-panel-DbSjq_mz.js → tasks-panel-CwwVw491.js} +6 -6
  230. package/dist/_chunks/{tasks-panel-DbSjq_mz.js.map → tasks-panel-CwwVw491.js.map} +1 -1
  231. package/dist/_chunks/{theme-toggle-LUBxlNDm.js → theme-toggle-jyoyhbJL.js} +4 -4
  232. package/dist/_chunks/{theme-toggle-LUBxlNDm.js.map → theme-toggle-jyoyhbJL.js.map} +1 -1
  233. package/dist/_chunks/{toast-CT8hjr9r.js → toast-FijDyPnv.js} +2 -2
  234. package/dist/_chunks/{toast-CT8hjr9r.js.map → toast-FijDyPnv.js.map} +1 -1
  235. package/dist/_chunks/{token-insert-menu-klwbxVKh.js → token-insert-menu-Cjf99IdN.js} +3 -3
  236. package/dist/_chunks/{token-insert-menu-klwbxVKh.js.map → token-insert-menu-Cjf99IdN.js.map} +1 -1
  237. package/dist/_chunks/{tool-rail-DEeX4PdN.js → tool-rail-DphMl1hX.js} +2 -2
  238. package/dist/_chunks/{tool-rail-DEeX4PdN.js.map → tool-rail-DphMl1hX.js.map} +1 -1
  239. package/dist/_chunks/{tooth-scheme-BkjhkI8g.js → tooth-scheme-BaCJnyg9.js} +663 -718
  240. package/dist/_chunks/tooth-scheme-BaCJnyg9.js.map +1 -0
  241. package/dist/_chunks/{unit-converter-Dp_KDxE6.js → unit-converter-CGpOgarU.js} +2 -2
  242. package/dist/_chunks/{unit-converter-Dp_KDxE6.js.map → unit-converter-CGpOgarU.js.map} +1 -1
  243. package/dist/_chunks/{use-appointment-details-read-5-hV-2xA.js → use-appointment-details-read-uEnJLVfA.js} +14 -14
  244. package/dist/_chunks/{use-appointment-details-read-5-hV-2xA.js.map → use-appointment-details-read-uEnJLVfA.js.map} +1 -1
  245. package/dist/_chunks/wallet-pay-button--dnR6NfJ.js.map +1 -1
  246. package/dist/_chunks/{warning-stack-CEgYkI1z.js → warning-stack-7Hffm7K1.js} +3 -3
  247. package/dist/_chunks/{warning-stack-CEgYkI1z.js.map → warning-stack-7Hffm7K1.js.map} +1 -1
  248. package/dist/_chunks/{workflow-map-qGkQTNvS.js → workflow-map-Jfe9L9Wt.js} +6 -6
  249. package/dist/_chunks/{workflow-map-qGkQTNvS.js.map → workflow-map-Jfe9L9Wt.js.map} +1 -1
  250. package/dist/_chunks/{workflow-status-ClHfz4Kr.js → workflow-status-jHfsIDzi.js} +2 -2
  251. package/dist/_chunks/{workflow-status-ClHfz4Kr.js.map → workflow-status-jHfsIDzi.js.map} +1 -1
  252. package/dist/agent-catalog.json +103 -38
  253. package/dist/agent-i18n/en.json +7 -4
  254. package/dist/components/_shared/entity-card/entity-card.d.ts +1 -1
  255. package/dist/components/_shared/field-visibility-cog.d.ts.map +1 -1
  256. package/dist/components/agenda-tray/index.js +1 -1
  257. package/dist/components/ai-credits-notice/index.js +1 -1
  258. package/dist/components/ai-permission-notice/index.js +1 -1
  259. package/dist/components/ai-prompt-input/index.js +1 -1
  260. package/dist/components/anamnesis-card/index.js +1 -1
  261. package/dist/components/anamnesis-summary-card/anamnesis-summary-card.d.ts +1 -1
  262. package/dist/components/appointment-card/index.js +2 -2
  263. package/dist/components/appointment-details-panel/index.js +1 -1
  264. package/dist/components/appointment-peek/index.js +1 -1
  265. package/dist/components/appointment-timeline/index.js +1 -1
  266. package/dist/components/audio-recorder/index.js +1 -1
  267. package/dist/components/bishop-score/index.js +1 -1
  268. package/dist/components/bmi-calculator/index.js +1 -1
  269. package/dist/components/booking/index.js +1 -1
  270. package/dist/components/button/button.d.ts +11 -0
  271. package/dist/components/button/button.d.ts.map +1 -1
  272. package/dist/components/button/icon-button.d.ts +4 -0
  273. package/dist/components/button/icon-button.d.ts.map +1 -1
  274. package/dist/components/button/index.js +2 -2
  275. package/dist/components/button-group/index.js +1 -1
  276. package/dist/components/calendar/calendar.d.ts +11 -3
  277. package/dist/components/calendar/calendar.d.ts.map +1 -1
  278. package/dist/components/calendar/index.js +1 -1
  279. package/dist/components/calendar-event-card/calendar-event-card.d.ts +6 -0
  280. package/dist/components/calendar-event-card/calendar-event-card.d.ts.map +1 -1
  281. package/dist/components/calendar-event-card/index.js +1 -1
  282. package/dist/components/care-plan-card/index.js +1 -1
  283. package/dist/components/care-plan-entry-card/index.js +1 -1
  284. package/dist/components/care-plan-header/index.js +1 -1
  285. package/dist/components/carousel/index.js +1 -1
  286. package/dist/components/chart/chart.d.ts +1 -1
  287. package/dist/components/chart/index.js +1 -1
  288. package/dist/components/chat-input/index.js +1 -1
  289. package/dist/components/chat-message/index.js +1 -1
  290. package/dist/components/connection-status/index.js +1 -1
  291. package/dist/components/contact-profile-card/index.js +1 -1
  292. package/dist/components/control-room-rail/index.js +1 -1
  293. package/dist/components/copy-field/index.js +1 -1
  294. package/dist/components/cycle-calculator/index.js +1 -1
  295. package/dist/components/dashboard-grid/index.js +1 -1
  296. package/dist/components/data-table/index.js +4 -4
  297. package/dist/components/data-table-tabs/index.js +1 -1
  298. package/dist/components/description-list/index.js +1 -1
  299. package/dist/components/document-preview/index.js +1 -1
  300. package/dist/components/document-scanner/index.js +1 -1
  301. package/dist/components/dropdown-menu/dropdown-menu.agent.d.ts.map +1 -1
  302. package/dist/components/dropdown-menu/dropdown-menu.d.ts +52 -2
  303. package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
  304. package/dist/components/dropdown-menu/index.d.ts +1 -1
  305. package/dist/components/dropdown-menu/index.d.ts.map +1 -1
  306. package/dist/components/dropdown-menu/index.js +1 -1
  307. package/dist/components/due-date-calculator/index.js +1 -1
  308. package/dist/components/editable-description/index.js +1 -1
  309. package/dist/components/editor-overlay/index.js +1 -1
  310. package/dist/components/empty-state/index.js +1 -1
  311. package/dist/components/entity-summary/index.js +1 -1
  312. package/dist/components/error-boundary/index.js +1 -1
  313. package/dist/components/face-scheme/index.js +1 -1
  314. package/dist/components/fetal-weight/index.js +1 -1
  315. package/dist/components/field-array/index.js +1 -1
  316. package/dist/components/file-manager/index.js +1 -1
  317. package/dist/components/finished-terminal/index.js +1 -1
  318. package/dist/components/fiscal-code-input/index.js +1 -1
  319. package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
  320. package/dist/components/freemium-paywall/index.js +1 -1
  321. package/dist/components/gestational-age-calculator/index.js +1 -1
  322. package/dist/components/hcg-doubling/index.js +1 -1
  323. package/dist/components/header/index.js +1 -1
  324. package/dist/components/header-settings/header-settings.d.ts +3 -3
  325. package/dist/components/header-settings/header-settings.d.ts.map +1 -1
  326. package/dist/components/header-settings/index.js +1 -1
  327. package/dist/components/hover-card/index.js +1 -1
  328. package/dist/components/icon-button/index.js +1 -1
  329. package/dist/components/icon-button-group/index.js +1 -1
  330. package/dist/components/icon-picker/index.js +1 -1
  331. package/dist/components/image-cropper/index.js +1 -1
  332. package/dist/components/info-tip/index.js +1 -1
  333. package/dist/components/key-value-pair/index.js +1 -1
  334. package/dist/components/locale-picker/index.js +1 -1
  335. package/dist/components/locale-picker/locale-picker.d.ts +7 -0
  336. package/dist/components/locale-picker/locale-picker.d.ts.map +1 -1
  337. package/dist/components/map-view/index.js +1 -1
  338. package/dist/components/message-card/index.js +1 -1
  339. package/dist/components/message-tray/index.js +1 -1
  340. package/dist/components/muscle-scheme/index.js +1 -1
  341. package/dist/components/notes-panel/index.js +1 -1
  342. package/dist/components/notification-card/index.js +1 -1
  343. package/dist/components/notification-tray/index.js +1 -1
  344. package/dist/components/operator-hero/operator-hero.d.ts +1 -1
  345. package/dist/components/optical-prescription/index.js +1 -1
  346. package/dist/components/panel-subview/index.js +1 -1
  347. package/dist/components/patient-details/index.js +1 -1
  348. package/dist/components/patient-details/patient-details.d.ts +1 -1
  349. package/dist/components/patient-search/index.js +1 -1
  350. package/dist/components/patient-summary-card/index.js +1 -1
  351. package/dist/components/patient-summary-card/patient-summary-card.d.ts +1 -1
  352. package/dist/components/patient-table/index.js +1 -1
  353. package/dist/components/payment-card/index.js +1 -1
  354. package/dist/components/periodontal-chart/index.js +1 -1
  355. package/dist/components/periodontal-chart-card/index.js +1 -1
  356. package/dist/components/popover/index.js +1 -1
  357. package/dist/components/practice-results/index.js +1 -1
  358. package/dist/components/pregnancy-dating/index.js +1 -1
  359. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  360. package/dist/components/privacy-lock/index.js +1 -1
  361. package/dist/components/product-hub-tray/index.js +1 -1
  362. package/dist/components/public-header/index.js +1 -1
  363. package/dist/components/radiograph-panel/index.js +1 -1
  364. package/dist/components/resource-chip/index.d.ts +1 -1
  365. package/dist/components/resource-chip/index.d.ts.map +1 -1
  366. package/dist/components/resource-chip/index.js +3 -2
  367. package/dist/components/resource-chip/resource-chip.d.ts +20 -0
  368. package/dist/components/resource-chip/resource-chip.d.ts.map +1 -1
  369. package/dist/components/reviews-panel/index.js +1 -1
  370. package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
  371. package/dist/components/rich-text-editor/index.js +2 -2
  372. package/dist/components/session-countdown/index.js +1 -1
  373. package/dist/components/sheet/index.js +1 -1
  374. package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
  375. package/dist/components/skeleton-scheme/index.js +1 -1
  376. package/dist/components/slot-grid/index.js +1 -1
  377. package/dist/components/social-sign-in-button/social-sign-in-button.d.ts.map +1 -1
  378. package/dist/components/streaming-text/index.js +1 -1
  379. package/dist/components/tab-bar/index.js +1 -1
  380. package/dist/components/tabs/index.js +1 -1
  381. package/dist/components/tabs/tabs.d.ts.map +1 -1
  382. package/dist/components/task-card/index.js +1 -1
  383. package/dist/components/task-editor/index.js +1 -1
  384. package/dist/components/task-tray/index.js +1 -1
  385. package/dist/components/tasks-panel/index.js +1 -1
  386. package/dist/components/theme-toggle/index.js +1 -1
  387. package/dist/components/toast/index.js +1 -1
  388. package/dist/components/token-insert-menu/index.js +1 -1
  389. package/dist/components/tool-rail/index.js +1 -1
  390. package/dist/components/tooth-scheme/index.js +1 -1
  391. package/dist/components/tooth-scheme/tooth-scheme.d.ts +2 -2
  392. package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
  393. package/dist/components/unit-converter/index.js +1 -1
  394. package/dist/components/wallet-pay-button/wallet-pay-button.d.ts.map +1 -1
  395. package/dist/components/warning-stack/index.js +1 -1
  396. package/dist/components/workflow/index.js +1 -1
  397. package/dist/components/workflow/workflow-card.d.ts +1 -1
  398. package/dist/components/workflow-status/index.js +1 -1
  399. package/dist/i18n/locales/ar.d.ts +5 -0
  400. package/dist/i18n/locales/ar.d.ts.map +1 -1
  401. package/dist/i18n/locales/ar.js +5 -0
  402. package/dist/i18n/locales/ar.js.map +1 -1
  403. package/dist/i18n/locales/de.d.ts +5 -0
  404. package/dist/i18n/locales/de.d.ts.map +1 -1
  405. package/dist/i18n/locales/de.js +5 -0
  406. package/dist/i18n/locales/de.js.map +1 -1
  407. package/dist/i18n/locales/el.d.ts +5 -0
  408. package/dist/i18n/locales/el.d.ts.map +1 -1
  409. package/dist/i18n/locales/el.js +5 -0
  410. package/dist/i18n/locales/el.js.map +1 -1
  411. package/dist/i18n/locales/en.d.ts +5 -0
  412. package/dist/i18n/locales/en.d.ts.map +1 -1
  413. package/dist/i18n/locales/en.js +5 -0
  414. package/dist/i18n/locales/en.js.map +1 -1
  415. package/dist/i18n/locales/es.d.ts +5 -0
  416. package/dist/i18n/locales/es.d.ts.map +1 -1
  417. package/dist/i18n/locales/es.js +5 -0
  418. package/dist/i18n/locales/es.js.map +1 -1
  419. package/dist/i18n/locales/fr.d.ts +5 -0
  420. package/dist/i18n/locales/fr.d.ts.map +1 -1
  421. package/dist/i18n/locales/fr.js +5 -0
  422. package/dist/i18n/locales/fr.js.map +1 -1
  423. package/dist/i18n/locales/hi.d.ts +5 -0
  424. package/dist/i18n/locales/hi.d.ts.map +1 -1
  425. package/dist/i18n/locales/hi.js +5 -0
  426. package/dist/i18n/locales/hi.js.map +1 -1
  427. package/dist/i18n/locales/it.d.ts +5 -0
  428. package/dist/i18n/locales/it.d.ts.map +1 -1
  429. package/dist/i18n/locales/it.js +5 -0
  430. package/dist/i18n/locales/it.js.map +1 -1
  431. package/dist/i18n/locales/ja.d.ts +5 -0
  432. package/dist/i18n/locales/ja.d.ts.map +1 -1
  433. package/dist/i18n/locales/ja.js +5 -0
  434. package/dist/i18n/locales/ja.js.map +1 -1
  435. package/dist/i18n/locales/nl.d.ts +5 -0
  436. package/dist/i18n/locales/nl.d.ts.map +1 -1
  437. package/dist/i18n/locales/nl.js +5 -0
  438. package/dist/i18n/locales/nl.js.map +1 -1
  439. package/dist/i18n/locales/pl.d.ts +5 -0
  440. package/dist/i18n/locales/pl.d.ts.map +1 -1
  441. package/dist/i18n/locales/pl.js +5 -0
  442. package/dist/i18n/locales/pl.js.map +1 -1
  443. package/dist/i18n/locales/pt.d.ts +5 -0
  444. package/dist/i18n/locales/pt.d.ts.map +1 -1
  445. package/dist/i18n/locales/pt.js +5 -0
  446. package/dist/i18n/locales/pt.js.map +1 -1
  447. package/dist/i18n/locales/ro.d.ts +5 -0
  448. package/dist/i18n/locales/ro.d.ts.map +1 -1
  449. package/dist/i18n/locales/ro.js +5 -0
  450. package/dist/i18n/locales/ro.js.map +1 -1
  451. package/dist/i18n/locales/ru.d.ts +5 -0
  452. package/dist/i18n/locales/ru.d.ts.map +1 -1
  453. package/dist/i18n/locales/ru.js +5 -0
  454. package/dist/i18n/locales/ru.js.map +1 -1
  455. package/dist/i18n/locales/sq.d.ts +5 -0
  456. package/dist/i18n/locales/sq.d.ts.map +1 -1
  457. package/dist/i18n/locales/sq.js +5 -0
  458. package/dist/i18n/locales/sq.js.map +1 -1
  459. package/dist/i18n/locales/sv.d.ts +5 -0
  460. package/dist/i18n/locales/sv.d.ts.map +1 -1
  461. package/dist/i18n/locales/sv.js +5 -0
  462. package/dist/i18n/locales/sv.js.map +1 -1
  463. package/dist/i18n/locales/tr.d.ts +5 -0
  464. package/dist/i18n/locales/tr.d.ts.map +1 -1
  465. package/dist/i18n/locales/tr.js +5 -0
  466. package/dist/i18n/locales/tr.js.map +1 -1
  467. package/dist/i18n/locales/zh.d.ts +5 -0
  468. package/dist/i18n/locales/zh.d.ts.map +1 -1
  469. package/dist/i18n/locales/zh.js +5 -0
  470. package/dist/i18n/locales/zh.js.map +1 -1
  471. package/dist/index.js +478 -477
  472. package/dist/locales/ar.json +5 -0
  473. package/dist/locales/de.json +5 -0
  474. package/dist/locales/el.json +5 -0
  475. package/dist/locales/en.json +5 -0
  476. package/dist/locales/es.json +5 -0
  477. package/dist/locales/fr.json +5 -0
  478. package/dist/locales/hi.json +5 -0
  479. package/dist/locales/it.json +5 -0
  480. package/dist/locales/ja.json +5 -0
  481. package/dist/locales/nl.json +5 -0
  482. package/dist/locales/pl.json +5 -0
  483. package/dist/locales/pt.json +5 -0
  484. package/dist/locales/ro.json +5 -0
  485. package/dist/locales/ru.json +5 -0
  486. package/dist/locales/sq.json +5 -0
  487. package/dist/locales/sv.json +5 -0
  488. package/dist/locales/tr.json +5 -0
  489. package/dist/locales/zh.json +5 -0
  490. package/dist/patterns/alia-assistant/index.js +1 -1
  491. package/dist/patterns/anamnesis/index.js +1 -1
  492. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
  493. package/dist/patterns/calendar/calendar.surface.d.ts +4 -1
  494. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
  495. package/dist/patterns/calendar/index.js +1 -1
  496. package/dist/patterns/help-me-write-templates/index.js +1 -1
  497. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  498. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  499. package/dist/patterns/signature-request/index.js +1 -1
  500. package/dist/tokens.css +2 -1
  501. package/package.json +1 -1
  502. package/dist/_chunks/button-18oBsI3n.js.map +0 -1
  503. package/dist/_chunks/calendar-workspace-CWRH4x15.js +0 -10577
  504. package/dist/_chunks/calendar-workspace-CWRH4x15.js.map +0 -1
  505. package/dist/_chunks/calendar-zpE9qTM4.js.map +0 -1
  506. package/dist/_chunks/dropdown-menu-C8PaW3lR.js +0 -369
  507. package/dist/_chunks/dropdown-menu-C8PaW3lR.js.map +0 -1
  508. package/dist/_chunks/header-settings-ZXa6hXuu.js +0 -335
  509. package/dist/_chunks/header-settings-ZXa6hXuu.js.map +0 -1
  510. package/dist/_chunks/icon-button-CY7GU_Se.js.map +0 -1
  511. package/dist/_chunks/locale-picker-DGkQmhV9.js.map +0 -1
  512. package/dist/_chunks/patient-field-row-DElFbpKc.js.map +0 -1
  513. package/dist/_chunks/resource-chip-DYTG0IQQ.js +0 -83
  514. package/dist/_chunks/resource-chip-DYTG0IQQ.js.map +0 -1
  515. package/dist/_chunks/rich-text-editor-y6ML0KeV.js.map +0 -1
  516. package/dist/_chunks/tabs-CFsuMQ5H.js +0 -409
  517. package/dist/_chunks/tabs-CFsuMQ5H.js.map +0 -1
  518. package/dist/_chunks/tooth-scheme-BkjhkI8g.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"wallet-pay-button--dnR6NfJ.js","sources":["../../src/brand/provider-marks/apple-pay.tsx","../../src/brand/provider-marks/google-pay.tsx","../../src/components/wallet-pay-button/wallet-pay-button.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Apple Pay brand mark. */\n/* */\n/* Lives under `src/brand/**` — one of the two zones (with */\n/* `src/tokens/**`) where literal hex / brand SVG paths are sanctioned */\n/* by constraint #2. Apple's Marketing Guidelines mandate the official */\n/* Apple-logo-plus-\"Pay\" lockup and forbid recolouring it to a kit */\n/* accent. The mark is MONOCHROME: it paints in `currentColor` so the */\n/* WalletPayButton's brand-locked foreground token (white on the black */\n/* surface, near-black on the white / white-outline surface) drives it */\n/* from a single CVA class — exactly how the WhatsApp glyph inherits */\n/* `--brand-whatsapp-foreground`. Do NOT tint this with a kit colour. */\n/* */\n/* The viewBox keeps the official aspect ratio so the lockup never */\n/* distorts; the consuming button scales it via `[&_svg]:h-*` height */\n/* classes and `width:auto` so the proportion is preserved at every */\n/* size step. */\n/* ------------------------------------------------------------------ */\n\nimport type { ReactNode } from 'react';\n\nexport interface BrandMarkProps {\n /** Extra classes from the consuming button's CVA size axis. */\n className?: string;\n}\n\n/**\n * Apple Pay lockup (Apple logo + \"Pay\"). Decorative — the parent button\n * carries `aria-hidden` semantics by wrapping it next to the visible /\n * sr-only accessible name, so this SVG is marked `aria-hidden=\"true\"`.\n */\nexport function ApplePayMark({ className }: BrandMarkProps): ReactNode {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"img\"\n viewBox=\"-1 18 158 69\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n {/* Apple logo glyph */}\n <path d=\"M30.07 27.69c-1.93 2.28-5.01 4.08-8.09 3.82-.39-3.08.92-6.34 2.68-8.36 1.93-2.34 5.31-4.01 8.04-4.14.33 3.21-.92 6.34-2.63 8.68m2.6 4.13c-4.47-.26-8.29 2.54-10.41 2.54-2.15 0-5.4-2.41-8.94-2.34-4.6.07-8.88 2.67-11.23 6.82-4.83 8.29-1.26 20.57 3.41 27.32 2.28 3.34 5.01 7.01 8.62 6.88 3.41-.13 4.75-2.21 8.88-2.21 4.16 0 5.34 2.21 8.94 2.15 3.74-.07 6.08-3.34 8.36-6.68 2.6-3.8 3.67-7.5 3.74-7.69-.07-.07-7.21-2.8-7.27-11.02-.07-6.88 5.6-10.15 5.86-10.35-3.21-4.73-8.22-5.26-9.95-5.39\" />\n {/* \"Pay\" wordmark */}\n <path d=\"M71.62 22.42c9.71 0 16.47 6.69 16.47 16.43 0 9.78-6.9 16.5-16.71 16.5H60.62v17.08H52.86V22.42h18.76zM60.62 48.83h8.91c6.76 0 10.61-3.64 10.61-9.95 0-6.31-3.85-9.92-10.58-9.92h-8.94v19.87zM90.11 62.05c0-6.38 4.89-10.3 13.56-10.79l9.99-.59v-2.81c0-4.06-2.74-6.49-7.32-6.49-4.34 0-7.05 2.08-7.71 5.34h-7.08c.42-6.59 6.03-11.45 15.06-11.45 8.86 0 14.51 4.69 14.51 12.01v25.16h-7.18v-6.01h-.17c-2.11 4.06-6.73 6.62-11.52 6.62-7.15 0-12.15-4.44-12.15-11.01zm23.55-3.29v-2.88l-8.99.56c-4.48.31-7.01 2.29-7.01 5.41 0 3.19 2.64 5.27 6.66 5.27 5.24 0 9.34-3.61 9.34-8.36zM124.95 85.78v-6.07c.55.14 1.79.14 2.42.14 3.47 0 5.34-1.46 6.49-5.2 0-.07.66-2.22.66-2.25l-13.18-36.52h8.11l9.23 29.69h.14l9.23-29.69h7.9l-13.66 38.39c-3.12 8.85-6.73 11.69-14.29 11.69-.63 0-2.5-.07-3.05-.21z\" />\n </svg>\n );\n}\n","/* ------------------------------------------------------------------ */\n/* Google Pay brand mark. */\n/* */\n/* Lives under `src/brand/**` — the sanctioned zone (constraint #2) for */\n/* literal brand hex. Google's Pay Brand Guidelines mandate the */\n/* full-colour \"G Pay\" lockup: the four-colour Google \"G\" plus the */\n/* \"Pay\" wordmark. CRITICAL: unlike the Apple Pay mark (which is */\n/* monochrome `currentColor`), the four-colour Google \"G\" must STAY */\n/* FULL-COLOUR even on the white button — the four brand hues are fixed */\n/* and may not be recoloured to a kit token. Hence the literal fills */\n/* below; they are brand constants, not theme tokens. */\n/* */\n/* The \"Pay\" wordmark is the only part that flips with the surface: it */\n/* inherits `currentColor` (driven by the brand foreground token) so it */\n/* reads dark on the white surface and white on the black surface, */\n/* exactly as Google's dark/light button variants specify. The \"G\" is */\n/* never recoloured. */\n/* ------------------------------------------------------------------ */\n\nimport type { ReactNode } from 'react';\nimport type { BrandMarkProps } from './apple-pay';\n\n/**\n * Google Pay lockup (four-colour Google \"G\" + \"Pay\" wordmark). The \"G\"\n * keeps Google's mandated four brand hues at all times; the \"Pay\"\n * wordmark inherits `currentColor` so it reads against either the black\n * or the white surface (brand foreground token). Decorative —\n * `aria-hidden=\"true\"`; the accessible name comes from the parent\n * button.\n */\nexport function GooglePayMark({ className }: BrandMarkProps): ReactNode {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"img\"\n viewBox=\"1 7 101 36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n {/* Four-colour Google \"G\" — fixed brand hues, never recoloured. */}\n <g transform=\"translate(2 8)\">\n <path\n fill=\"#4285F4\"\n d=\"M31.5 16.5c0-1.16-.1-2.27-.3-3.34H16.07v6.33h8.65a7.4 7.4 0 0 1-3.21 4.85v4.03h5.19c3.04-2.8 4.8-6.92 4.8-11.87z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M16.07 32c4.34 0 7.99-1.44 10.65-3.89l-5.19-4.03c-1.44.97-3.29 1.54-5.46 1.54-4.2 0-7.76-2.84-9.03-6.65H1.67v4.17C4.32 28.4 9.71 32 16.07 32z\"\n />\n <path\n fill=\"#FBBC04\"\n d=\"M7.04 18.97A9.6 9.6 0 0 1 6.53 16c0-1.03.18-2.03.51-2.97V8.86H1.67A15.96 15.96 0 0 0 0 16c0 2.58.62 5.02 1.67 7.14l5.37-4.17z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M16.07 6.39c2.37 0 4.5.81 6.17 2.41l4.62-4.62C24.05 1.6 20.41 0 16.07 0 9.71 0 4.32 3.6 1.67 8.86l5.37 4.17c1.27-3.81 4.83-6.64 9.03-6.64z\"\n />\n </g>\n {/* \"Pay\" wordmark — flips with the surface via currentColor. */}\n <g fill=\"currentColor\" transform=\"translate(44 8)\">\n <path d=\"M11.9 17.06v9.94H8.75V2.52h8.36c2.12 0 3.93.71 5.41 2.12 1.51 1.42 2.27 3.14 2.27 5.18 0 2.09-.76 3.82-2.27 5.21-1.46 1.39-3.27 2.07-5.41 2.07H11.9v-.06zm0-11.53v8.55h5.28c1.25 0 2.29-.42 3.12-1.26.84-.84 1.26-1.86 1.26-3.01 0-1.12-.42-2.13-1.26-2.97-.83-.87-1.87-1.31-3.12-1.31H11.9z\" />\n <path d=\"M32.43 9.72c2.33 0 4.16.62 5.51 1.87 1.35 1.25 2.02 2.96 2.02 5.12V27h-3.01v-2.33h-.14c-1.3 1.92-3.05 2.88-5.23 2.88-1.85 0-3.41-.55-4.65-1.65-1.25-1.1-1.87-2.46-1.87-4.11 0-1.74.66-3.11 1.97-4.13 1.31-1.02 3.07-1.54 5.26-1.54 1.87 0 3.41.34 4.62 1.03v-.72c0-1.1-.43-2.02-1.29-2.79-.86-.77-1.87-1.15-3.02-1.15-1.74 0-3.11.72-4.11 2.18l-2.78-1.75c1.5-2.16 3.72-3.24 6.64-3.24zm-4.07 12.21c0 .82.35 1.5 1.04 2.04.69.55 1.5.81 2.43.81 1.31 0 2.48-.49 3.51-1.46 1.02-.97 1.54-2.12 1.54-3.43-.98-.77-2.34-1.16-4.09-1.16-1.28 0-2.34.31-3.2.92-.85.62-1.27 1.39-1.27 2.28z\" />\n <path d=\"M57.16 10.27L46.62 34.5h-3.25l3.91-8.47-6.93-15.76h3.43l5 12.06h.07l4.87-12.06z\" />\n </g>\n </svg>\n );\n}\n","/* ------------------------------------------------------------------ */\n/* WalletPayButton — brand-locked express-payment button. */\n/* */\n/* Renders the official Apple Pay or Google Pay mark on the brand- */\n/* mandated surface (black / white / white-outline) and fires */\n/* `onActivate` on click / Enter / Space. It is PRESENTATIONAL ONLY: */\n/* the branded surface + the trigger. The consumer's `onActivate` */\n/* handler opens the native wallet sheet (Payment Request API / Apple */\n/* Pay JS / Google Pay API) — this component never calls a payment API, */\n/* never holds a publishable key, never knows the amount, and never */\n/* drives the downstream fiscal-receipt / Sistema TS step. Same posture */\n/* as WhatsAppButton (a branded CTA) and SignInWithAlfadocsButton (a */\n/* branded provider button). */\n/* */\n/* BRAND EXCEPTION: Apple's Marketing Guidelines and Google's Pay Brand */\n/* Guidelines mandate exact button surfaces and forbid recolouring the */\n/* marks. The surfaces therefore live as component-private brand tokens */\n/* (`--brand-applepay-*` / `--brand-googlepay-*`, precedent */\n/* `--brand-whatsapp-*`) that do NOT shift in the accessible theme — */\n/* the accessible theme only widens the focus ring and raises the */\n/* target size, which is compliant. The marks are designed to meet */\n/* contrast against their own mandated surfaces, so the axe */\n/* `color-contrast` rule (and only that rule) is waived at story/meta */\n/* level with a rationale, exactly as whatsapp-button / payment-form */\n/* do. Do not reuse these tokens outside this component. */\n/* */\n/* A NATIVE <button> is used (not a Button wrapper, which carries kit */\n/* intent colours, and not an <a> like WhatsAppButton — this opens an */\n/* in-page sheet, not a navigation). The native element gives free */\n/* Enter / Space activation, disabled semantics and the focusable */\n/* accessible-name contract with zero ARIA authoring. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Spinner } from '../spinner';\nimport { ApplePayMark } from '../../brand/provider-marks/apple-pay';\nimport { GooglePayMark } from '../../brand/provider-marks/google-pay';\n\n/* ------------------------------------------------------------------ */\n/* Constants */\n/* ------------------------------------------------------------------ */\n\ntype Provider = 'apple-pay' | 'google-pay';\ntype ButtonStyle = 'black' | 'white' | 'white-outline';\ntype LabelType = 'buy' | 'pay' | 'checkout' | 'book' | 'plain';\n\n/** i18n root segment per provider — drives the bare t() key. */\nconst PROVIDER_I18N_ROOT: Record<Provider, 'applePay' | 'googlePay'> = {\n 'apple-pay': 'applePay',\n 'google-pay': 'googlePay',\n};\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n [\n // `ds:relative` anchors the `::before` pseudo touch-target used by\n // the `sm` size below the `sm:` breakpoint.\n 'ds:relative ds:inline-flex ds:items-center ds:justify-center',\n 'ds:font-medium ds:whitespace-nowrap ds:select-none',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:transition-[background-color,box-shadow,opacity]',\n 'ds:duration-[var(--animation-duration)]',\n 'ds:active:opacity-90',\n // Focus ring is `var(--ring)` at `--focus-ring-width` / offset —\n // deliberately NOT the brand surface colour. A black ring on the\n // black surface, or an invisible ring on the white surface, fails\n // 2.4.7. The token widens 2→3px automatically in the accessible\n // theme. Same reasoning WhatsAppButton documents.\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n // Under Windows High Contrast Mode the brand bg + border are\n // stripped; repaint a solid ButtonBorder edge and swap the focus\n // ring to CanvasText so 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 provider: {\n 'apple-pay': '',\n 'google-pay': '',\n },\n buttonStyle: {\n black: '',\n white: '',\n 'white-outline': '',\n },\n size: {\n // Size axis sizes the brand mark via a DIRECT-CHILD selector\n // (`[&>svg]`) — the mark is a direct `<svg>` child of the button,\n // whereas the loading Spinner's `<svg>` is nested inside its\n // `role=status` span. A descendant `[&_svg]` would reach into the\n // Spinner and override its own `size-full`, forcing a 20/24px svg\n // inside a 16/20px span (clipped). `[&>svg]` sizes only the mark.\n sm: [\n 'ds:h-8 ds:ps-3 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n 'ds:[&>svg]:h-4 ds:[&>svg]:w-auto',\n // Expand the hit-target to `--min-target-size` below the\n // `sm:` breakpoint via a `::before` overlay, identical to\n // Button / WhatsAppButton. The visual box stays 32px; touch\n // stays ≥44/48px on mobile.\n 'ds:min-h-[var(--min-target-size)] ds:sm:min-h-0',\n '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 ].join(' '),\n // `md` is the DEFAULT size. Its visual box is 40px (h-10), which is\n // below the 44/48px `--min-target-size`, so it carries the same\n // `::before` hit-target expansion as `sm` to reliably meet WCAG\n // 2.5.5 (44×44) / 2.5.8 (48×48 accessible) on touch viewports. The\n // visual box stays 40px; the touch target lifts to the token below\n // the `sm:` breakpoint.\n md: [\n 'ds:h-10 ds:ps-4 ds:pe-4 ds:text-[length:var(--font-size-base)]',\n 'ds:[&>svg]:h-5 ds:[&>svg]:w-auto',\n 'ds:min-h-[var(--min-target-size)] ds:sm:min-h-0',\n '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 ].join(' '),\n lg: 'ds:h-12 ds:ps-5 ds:pe-5 ds:text-[length:var(--font-size-lg)] ds:[&>svg]:h-6 ds:[&>svg]:w-auto',\n },\n fullWidth: {\n true: 'ds:flex ds:w-full',\n false: '',\n },\n },\n compoundVariants: [\n /* ----- Apple Pay surfaces ----- */\n {\n provider: 'apple-pay',\n buttonStyle: 'black',\n class:\n 'ds:bg-[var(--brand-applepay-black)] ds:text-[var(--brand-applepay-black-foreground)] ds:hover:bg-[var(--brand-applepay-black-hover)]',\n },\n {\n provider: 'apple-pay',\n buttonStyle: 'white',\n class:\n 'ds:bg-[var(--brand-applepay-white)] ds:text-[var(--brand-applepay-white-foreground)] ds:hover:bg-[var(--brand-applepay-white-hover)]',\n },\n {\n provider: 'apple-pay',\n buttonStyle: 'white-outline',\n class:\n 'ds:bg-[var(--brand-applepay-white)] ds:text-[var(--brand-applepay-white-foreground)] ds:hover:bg-[var(--brand-applepay-white-hover)] ds:border ds:border-[var(--brand-applepay-white-border)]',\n },\n /* ----- Google Pay surfaces (no outline type — see fallback) ----- */\n {\n provider: 'google-pay',\n buttonStyle: 'black',\n class:\n 'ds:bg-[var(--brand-googlepay-black)] ds:text-[var(--brand-googlepay-black-foreground)] ds:hover:bg-[var(--brand-googlepay-black-hover)]',\n },\n {\n provider: 'google-pay',\n buttonStyle: 'white',\n class:\n 'ds:bg-[var(--brand-googlepay-white)] ds:text-[var(--brand-googlepay-white-foreground)] ds:hover:bg-[var(--brand-googlepay-white-hover)] ds:border ds:border-[var(--brand-googlepay-white-border)]',\n },\n ],\n defaultVariants: {\n buttonStyle: 'black',\n size: 'md',\n fullWidth: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Mark resolver */\n/* ------------------------------------------------------------------ */\n\nfunction WalletMark({ provider }: { provider: Provider }): ReactNode {\n return provider === 'apple-pay' ? <ApplePayMark /> : <GooglePayMark />;\n}\n\n/* ------------------------------------------------------------------ */\n/* Props */\n/* ------------------------------------------------------------------ */\n\nexport interface WalletPayButtonProps\n extends\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'type'>,\n Omit<VariantProps<typeof rootVariants>, 'provider'> {\n /**\n * Which wallet the button represents. Drives the inline brand mark,\n * the default label key, the brand-locked surface tokens, and the\n * `data-provider` hook. Required — there is no sensible default\n * wallet.\n */\n provider: Provider;\n /**\n * Brand-mandated button type. Apple Pay supports\n * `black` / `white` / `white-outline`; Google Pay supports\n * `black` / `white` only. Passing `white-outline` with\n * `provider=\"google-pay\"` falls back to `white` and dev-warns —\n * Google's branding has no outline type.\n */\n buttonStyle?: ButtonStyle;\n /**\n * Brand-approved call-to-action phrasing. `plain` renders the bare\n * mark (mark-only) with an sr-only accessible name. The verb portion\n * is i18n; the wallet brand name (\"Apple Pay\" / \"Google Pay\") is a\n * non-translated constant.\n */\n labelType?: LabelType;\n /**\n * Fired on click / Enter / Space when not loading and not disabled.\n * Open the native wallet sheet here (Payment Request API). Named\n * `onActivate` rather than `onClick` to signal it triggers a payment\n * flow. A native `onClick` still forwards through `...rest`.\n */\n onActivate?: (event: MouseEvent<HTMLButtonElement>) => void;\n /**\n * Wallet sheet is opening / payment in flight. Swaps the mark for the\n * kit Spinner, sets `aria-busy=\"true\"`, and suppresses activation so\n * the user cannot double-open the sheet.\n */\n loading?: boolean;\n /**\n * Override the resolved accessible / visible label. Defaults to the\n * `provider` + `labelType` i18n string. The brand wordmark constant\n * (\"Apple Pay\" / \"Google Pay\") is never overridable via this prop —\n * pass a fully-translated verb phrase only.\n */\n label?: ReactNode;\n /**\n * Native button type. Defaults to `'button'` so the wallet trigger\n * never implicitly submits an ambient `<form>`.\n */\n type?: 'button' | 'submit' | 'reset';\n}\n\n/* ------------------------------------------------------------------ */\n/* WalletPayButton */\n/* ------------------------------------------------------------------ */\n\nexport const WalletPayButton = forwardRef<\n HTMLButtonElement,\n WalletPayButtonProps\n>(\n (\n {\n provider,\n buttonStyle = 'black',\n labelType = 'pay',\n size = 'md',\n fullWidth = false,\n onActivate,\n loading = false,\n disabled = false,\n label,\n type = 'button',\n className,\n onClick,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n // Google Pay has no white-outline type — fall back to white and\n // dev-warn so the consumer fixes the call site. Done once, before\n // the surface CVA resolves, so no outline class is ever applied.\n let resolvedButtonStyle = buttonStyle;\n if (provider === 'google-pay' && buttonStyle === 'white-outline') {\n resolvedButtonStyle = 'white';\n if (\n typeof import.meta !== 'undefined' &&\n typeof import.meta.env !== 'undefined' &&\n import.meta.env.DEV === true\n ) {\n console.warn(\n `[WalletPayButton] buttonStyle=\"white-outline\" is not a Google Pay ` +\n `brand type — falling back to \"white\". Google's branding has no ` +\n `outline button; use \"black\" or \"white\".`,\n );\n }\n }\n\n const providerRoot = PROVIDER_I18N_ROOT[provider];\n // The default label always carries the wallet brand name as part of\n // the i18n string (\"Pay with Apple Pay\"), so SR users hear the\n // wallet name. `label` overrides only the verb phrase.\n const resolvedLabel =\n label ?? t(`walletPayButton.${providerRoot}.${labelType}`);\n\n const isMarkOnly = labelType === 'plain' && label == null;\n const isInteractive = !loading && !disabled;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>): void => {\n // Forward the native onClick first (analytics, logging) — it sees\n // every click, including suppressed ones, mirroring WhatsAppButton.\n onClick?.(event);\n if (!isInteractive) return;\n onActivate?.(event);\n };\n\n const composedClassName = [\n rootVariants({\n provider,\n buttonStyle: resolvedButtonStyle,\n size,\n fullWidth,\n }),\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n data-component=\"wallet-pay-button\"\n data-provider={provider}\n data-button-style={resolvedButtonStyle}\n className={composedClassName}\n onClick={handleClick}\n {...rest}\n >\n {loading ? (\n <Spinner size={size ?? 'md'} variant=\"pulse\" />\n ) : (\n <WalletMark provider={provider} />\n )}\n {/*\n Label rendering:\n - mark-only (`plain`): sr-only accessible name, no visible\n text. The bare mark still resolves a button name.\n - otherwise: visible label. When loading, the label stays\n visible (aria-busy carries the \"in flight\" semantics) so\n the accessible name never collapses to nothing.\n */}\n {isMarkOnly ? (\n <span className=\"ds:sr-only\">{resolvedLabel}</span>\n ) : (\n // `<bdi>` isolates the label from the surrounding bidi context so\n // the Latin brand wordmark (\"Apple Pay\" / \"Google Pay\") embedded\n // in an RTL verb phrase keeps its own direction — matching the\n // i18n note. Trailing-Latin placement already renders correctly\n // under the UBA today; the isolation also keeps a future\n // mid-phrase wordmark from reordering.\n <bdi>{resolvedLabel}</bdi>\n )}\n </button>\n );\n },\n);\n\nWalletPayButton.displayName = 'WalletPayButton';\n"],"names":["ApplePayMark","className","jsxs","jsx","GooglePayMark","PROVIDER_I18N_ROOT","rootVariants","cva","WalletMark","provider","WalletPayButton","forwardRef","buttonStyle","labelType","size","fullWidth","onActivate","loading","disabled","label","type","onClick","rest","ref","t","useTranslation","resolvedButtonStyle","providerRoot","resolvedLabel","isMarkOnly","isInteractive","handleClick","event","composedClassName","Spinner"],"mappings":"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"}
1
+ {"version":3,"file":"wallet-pay-button--dnR6NfJ.js","sources":["../../src/brand/provider-marks/apple-pay.tsx","../../src/brand/provider-marks/google-pay.tsx","../../src/components/wallet-pay-button/wallet-pay-button.tsx"],"sourcesContent":["/* ------------------------------------------------------------------ */\n/* Apple Pay brand mark. */\n/* */\n/* Lives under `src/brand/**` — one of the two zones (with */\n/* `src/tokens/**`) where literal hex / brand SVG paths are sanctioned */\n/* by constraint #2. Apple's Marketing Guidelines mandate the official */\n/* Apple-logo-plus-\"Pay\" lockup and forbid recolouring it to a kit */\n/* accent. The mark is MONOCHROME: it paints in `currentColor` so the */\n/* WalletPayButton's brand-locked foreground token (white on the black */\n/* surface, near-black on the white / white-outline surface) drives it */\n/* from a single CVA class — exactly how the WhatsApp glyph inherits */\n/* `--brand-whatsapp-foreground`. Do NOT tint this with a kit colour. */\n/* */\n/* The viewBox keeps the official aspect ratio so the lockup never */\n/* distorts; the consuming button scales it via `[&_svg]:h-*` height */\n/* classes and `width:auto` so the proportion is preserved at every */\n/* size step. */\n/* ------------------------------------------------------------------ */\n\nimport type { ReactNode } from 'react';\n\nexport interface BrandMarkProps {\n /** Extra classes from the consuming button's CVA size axis. */\n className?: string;\n}\n\n/**\n * Apple Pay lockup (Apple logo + \"Pay\"). Decorative — the parent button\n * carries `aria-hidden` semantics by wrapping it next to the visible /\n * sr-only accessible name, so this SVG is marked `aria-hidden=\"true\"`.\n */\nexport function ApplePayMark({ className }: BrandMarkProps): ReactNode {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"img\"\n viewBox=\"-1 18 158 69\"\n fill=\"currentColor\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n {/* Apple logo glyph */}\n <path d=\"M30.07 27.69c-1.93 2.28-5.01 4.08-8.09 3.82-.39-3.08.92-6.34 2.68-8.36 1.93-2.34 5.31-4.01 8.04-4.14.33 3.21-.92 6.34-2.63 8.68m2.6 4.13c-4.47-.26-8.29 2.54-10.41 2.54-2.15 0-5.4-2.41-8.94-2.34-4.6.07-8.88 2.67-11.23 6.82-4.83 8.29-1.26 20.57 3.41 27.32 2.28 3.34 5.01 7.01 8.62 6.88 3.41-.13 4.75-2.21 8.88-2.21 4.16 0 5.34 2.21 8.94 2.15 3.74-.07 6.08-3.34 8.36-6.68 2.6-3.8 3.67-7.5 3.74-7.69-.07-.07-7.21-2.8-7.27-11.02-.07-6.88 5.6-10.15 5.86-10.35-3.21-4.73-8.22-5.26-9.95-5.39\" />\n {/* \"Pay\" wordmark */}\n <path d=\"M71.62 22.42c9.71 0 16.47 6.69 16.47 16.43 0 9.78-6.9 16.5-16.71 16.5H60.62v17.08H52.86V22.42h18.76zM60.62 48.83h8.91c6.76 0 10.61-3.64 10.61-9.95 0-6.31-3.85-9.92-10.58-9.92h-8.94v19.87zM90.11 62.05c0-6.38 4.89-10.3 13.56-10.79l9.99-.59v-2.81c0-4.06-2.74-6.49-7.32-6.49-4.34 0-7.05 2.08-7.71 5.34h-7.08c.42-6.59 6.03-11.45 15.06-11.45 8.86 0 14.51 4.69 14.51 12.01v25.16h-7.18v-6.01h-.17c-2.11 4.06-6.73 6.62-11.52 6.62-7.15 0-12.15-4.44-12.15-11.01zm23.55-3.29v-2.88l-8.99.56c-4.48.31-7.01 2.29-7.01 5.41 0 3.19 2.64 5.27 6.66 5.27 5.24 0 9.34-3.61 9.34-8.36zM124.95 85.78v-6.07c.55.14 1.79.14 2.42.14 3.47 0 5.34-1.46 6.49-5.2 0-.07.66-2.22.66-2.25l-13.18-36.52h8.11l9.23 29.69h.14l9.23-29.69h7.9l-13.66 38.39c-3.12 8.85-6.73 11.69-14.29 11.69-.63 0-2.5-.07-3.05-.21z\" />\n </svg>\n );\n}\n","/* ------------------------------------------------------------------ */\n/* Google Pay brand mark. */\n/* */\n/* Lives under `src/brand/**` — the sanctioned zone (constraint #2) for */\n/* literal brand hex. Google's Pay Brand Guidelines mandate the */\n/* full-colour \"G Pay\" lockup: the four-colour Google \"G\" plus the */\n/* \"Pay\" wordmark. CRITICAL: unlike the Apple Pay mark (which is */\n/* monochrome `currentColor`), the four-colour Google \"G\" must STAY */\n/* FULL-COLOUR even on the white button — the four brand hues are fixed */\n/* and may not be recoloured to a kit token. Hence the literal fills */\n/* below; they are brand constants, not theme tokens. */\n/* */\n/* The \"Pay\" wordmark is the only part that flips with the surface: it */\n/* inherits `currentColor` (driven by the brand foreground token) so it */\n/* reads dark on the white surface and white on the black surface, */\n/* exactly as Google's dark/light button variants specify. The \"G\" is */\n/* never recoloured. */\n/* ------------------------------------------------------------------ */\n\nimport type { ReactNode } from 'react';\nimport type { BrandMarkProps } from './apple-pay';\n\n/**\n * Google Pay lockup (four-colour Google \"G\" + \"Pay\" wordmark). The \"G\"\n * keeps Google's mandated four brand hues at all times; the \"Pay\"\n * wordmark inherits `currentColor` so it reads against either the black\n * or the white surface (brand foreground token). Decorative —\n * `aria-hidden=\"true\"`; the accessible name comes from the parent\n * button.\n */\nexport function GooglePayMark({ className }: BrandMarkProps): ReactNode {\n return (\n <svg\n aria-hidden=\"true\"\n role=\"img\"\n viewBox=\"1 7 101 36\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n {/* Four-colour Google \"G\" — fixed brand hues, never recoloured. */}\n <g transform=\"translate(2 8)\">\n <path\n fill=\"#4285F4\"\n d=\"M31.5 16.5c0-1.16-.1-2.27-.3-3.34H16.07v6.33h8.65a7.4 7.4 0 0 1-3.21 4.85v4.03h5.19c3.04-2.8 4.8-6.92 4.8-11.87z\"\n />\n <path\n fill=\"#34A853\"\n d=\"M16.07 32c4.34 0 7.99-1.44 10.65-3.89l-5.19-4.03c-1.44.97-3.29 1.54-5.46 1.54-4.2 0-7.76-2.84-9.03-6.65H1.67v4.17C4.32 28.4 9.71 32 16.07 32z\"\n />\n <path\n fill=\"#FBBC04\"\n d=\"M7.04 18.97A9.6 9.6 0 0 1 6.53 16c0-1.03.18-2.03.51-2.97V8.86H1.67A15.96 15.96 0 0 0 0 16c0 2.58.62 5.02 1.67 7.14l5.37-4.17z\"\n />\n <path\n fill=\"#EA4335\"\n d=\"M16.07 6.39c2.37 0 4.5.81 6.17 2.41l4.62-4.62C24.05 1.6 20.41 0 16.07 0 9.71 0 4.32 3.6 1.67 8.86l5.37 4.17c1.27-3.81 4.83-6.64 9.03-6.64z\"\n />\n </g>\n {/* \"Pay\" wordmark — flips with the surface via currentColor. */}\n <g fill=\"currentColor\" transform=\"translate(44 8)\">\n <path d=\"M11.9 17.06v9.94H8.75V2.52h8.36c2.12 0 3.93.71 5.41 2.12 1.51 1.42 2.27 3.14 2.27 5.18 0 2.09-.76 3.82-2.27 5.21-1.46 1.39-3.27 2.07-5.41 2.07H11.9v-.06zm0-11.53v8.55h5.28c1.25 0 2.29-.42 3.12-1.26.84-.84 1.26-1.86 1.26-3.01 0-1.12-.42-2.13-1.26-2.97-.83-.87-1.87-1.31-3.12-1.31H11.9z\" />\n <path d=\"M32.43 9.72c2.33 0 4.16.62 5.51 1.87 1.35 1.25 2.02 2.96 2.02 5.12V27h-3.01v-2.33h-.14c-1.3 1.92-3.05 2.88-5.23 2.88-1.85 0-3.41-.55-4.65-1.65-1.25-1.1-1.87-2.46-1.87-4.11 0-1.74.66-3.11 1.97-4.13 1.31-1.02 3.07-1.54 5.26-1.54 1.87 0 3.41.34 4.62 1.03v-.72c0-1.1-.43-2.02-1.29-2.79-.86-.77-1.87-1.15-3.02-1.15-1.74 0-3.11.72-4.11 2.18l-2.78-1.75c1.5-2.16 3.72-3.24 6.64-3.24zm-4.07 12.21c0 .82.35 1.5 1.04 2.04.69.55 1.5.81 2.43.81 1.31 0 2.48-.49 3.51-1.46 1.02-.97 1.54-2.12 1.54-3.43-.98-.77-2.34-1.16-4.09-1.16-1.28 0-2.34.31-3.2.92-.85.62-1.27 1.39-1.27 2.28z\" />\n <path d=\"M57.16 10.27L46.62 34.5h-3.25l3.91-8.47-6.93-15.76h3.43l5 12.06h.07l4.87-12.06z\" />\n </g>\n </svg>\n );\n}\n","/* ------------------------------------------------------------------ */\n/* WalletPayButton — brand-locked express-payment button. */\n/* */\n/* Renders the official Apple Pay or Google Pay mark on the brand- */\n/* mandated surface (black / white / white-outline) and fires */\n/* `onActivate` on click / Enter / Space. It is PRESENTATIONAL ONLY: */\n/* the branded surface + the trigger. The consumer's `onActivate` */\n/* handler opens the native wallet sheet (Payment Request API / Apple */\n/* Pay JS / Google Pay API) — this component never calls a payment API, */\n/* never holds a publishable key, never knows the amount, and never */\n/* drives the downstream fiscal-receipt / Sistema TS step. Same posture */\n/* as WhatsAppButton (a branded CTA) and SignInWithAlfadocsButton (a */\n/* branded provider button). */\n/* */\n/* BRAND EXCEPTION: Apple's Marketing Guidelines and Google's Pay Brand */\n/* Guidelines mandate exact button surfaces and forbid recolouring the */\n/* marks. The surfaces therefore live as component-private brand tokens */\n/* (`--brand-applepay-*` / `--brand-googlepay-*`, precedent */\n/* `--brand-whatsapp-*`) that do NOT shift in the accessible theme — */\n/* the accessible theme only widens the focus ring and raises the */\n/* target size, which is compliant. The marks are designed to meet */\n/* contrast against their own mandated surfaces, so the axe */\n/* `color-contrast` rule (and only that rule) is waived at story/meta */\n/* level with a rationale, exactly as whatsapp-button / payment-form */\n/* do. Do not reuse these tokens outside this component. */\n/* */\n/* A NATIVE <button> is used (not a Button wrapper, which carries kit */\n/* intent colours, and not an <a> like WhatsAppButton — this opens an */\n/* in-page sheet, not a navigation). The native element gives free */\n/* Enter / Space activation, disabled semantics and the focusable */\n/* accessible-name contract with zero ARIA authoring. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n type ButtonHTMLAttributes,\n type MouseEvent,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Spinner } from '../spinner';\nimport { ApplePayMark } from '../../brand/provider-marks/apple-pay';\nimport { GooglePayMark } from '../../brand/provider-marks/google-pay';\n\n/* ------------------------------------------------------------------ */\n/* Constants */\n/* ------------------------------------------------------------------ */\n\ntype Provider = 'apple-pay' | 'google-pay';\ntype ButtonStyle = 'black' | 'white' | 'white-outline';\ntype LabelType = 'buy' | 'pay' | 'checkout' | 'book' | 'plain';\n\n/** i18n root segment per provider — drives the bare t() key. */\nconst PROVIDER_I18N_ROOT: Record<Provider, 'applePay' | 'googlePay'> = {\n 'apple-pay': 'applePay',\n 'google-pay': 'googlePay',\n};\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rootVariants = cva(\n [\n // `ds:relative` anchors the `::before` pseudo touch-target used by\n // the `sm` size below the `sm:` breakpoint.\n 'ds:relative ds:inline-flex ds:items-center ds:justify-center',\n 'ds:font-medium ds:whitespace-nowrap ds:select-none',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:transition-[background-color,box-shadow,opacity]',\n 'ds:duration-[var(--animation-duration)]',\n 'ds:active:opacity-90',\n // Focus ring is `var(--ring)` at `--focus-ring-width` / offset —\n // deliberately NOT the brand surface colour. A black ring on the\n // black surface, or an invisible ring on the white surface, fails\n // 2.4.7. The token widens 2→3px automatically in the accessible\n // theme. Same reasoning WhatsAppButton documents.\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n // Under Windows High Contrast Mode the brand bg + border are\n // stripped; repaint a solid ButtonBorder edge and swap the focus\n // ring to CanvasText so 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 provider: {\n 'apple-pay': '',\n 'google-pay': '',\n },\n buttonStyle: {\n black: '',\n white: '',\n 'white-outline': '',\n },\n size: {\n // Size axis sizes the brand mark via a DIRECT-CHILD selector\n // (`[&>svg]`) — the mark is a direct `<svg>` child of the button,\n // whereas the loading Spinner's `<svg>` is nested inside its\n // `role=status` span. A descendant `[&_svg]` would reach into the\n // Spinner and override its own `size-full`, forcing a 20/24px svg\n // inside a 16/20px span (clipped). `[&>svg]` sizes only the mark.\n sm: [\n 'ds:h-8 ds:ps-3 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n 'ds:[&>svg]:h-4 ds:[&>svg]:w-auto',\n // Expand the hit-target to `--min-target-size` below the\n // `sm:` breakpoint via a `::before` overlay, identical to\n // Button / WhatsAppButton. The visual box stays 32px; touch\n // stays ≥44/48px on mobile.\n 'ds:min-h-[var(--min-target-size)] ds:sm:min-h-0',\n '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 ].join(' '),\n // `md` is the DEFAULT size. Its visual box is 40px (h-10), which is\n // below the 44/48px `--min-target-size`, so it carries the same\n // `::before` hit-target expansion as `sm` to reliably meet WCAG\n // 2.5.5 (44×44) / 2.5.8 (48×48 accessible) on touch viewports. The\n // visual box stays 40px; the touch target lifts to the token below\n // the `sm:` breakpoint.\n md: [\n 'ds:h-10 ds:ps-4 ds:pe-4 ds:text-[length:var(--font-size-base)]',\n 'ds:[&>svg]:h-5 ds:[&>svg]:w-auto',\n 'ds:min-h-[var(--min-target-size)] ds:sm:min-h-0',\n '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 ].join(' '),\n lg: 'ds:h-12 ds:ps-5 ds:pe-5 ds:text-[length:var(--font-size-lg)] ds:[&>svg]:h-6 ds:[&>svg]:w-auto',\n },\n fullWidth: {\n true: 'ds:flex ds:w-full',\n false: '',\n },\n },\n compoundVariants: [\n /* ----- Apple Pay surfaces ----- */\n {\n provider: 'apple-pay',\n buttonStyle: 'black',\n class:\n 'ds:bg-[var(--brand-applepay-black)] ds:text-[var(--brand-applepay-black-foreground)] ds:hover:bg-[var(--brand-applepay-black-hover)]',\n },\n {\n provider: 'apple-pay',\n buttonStyle: 'white',\n class:\n 'ds:bg-[var(--brand-applepay-white)] ds:text-[var(--brand-applepay-white-foreground)] ds:hover:bg-[var(--brand-applepay-white-hover)]',\n },\n {\n provider: 'apple-pay',\n buttonStyle: 'white-outline',\n class:\n 'ds:bg-[var(--brand-applepay-white)] ds:text-[var(--brand-applepay-white-foreground)] ds:hover:bg-[var(--brand-applepay-white-hover)] ds:border ds:border-[var(--brand-applepay-white-border)]',\n },\n /* ----- Google Pay surfaces (no outline type — see fallback) ----- */\n {\n provider: 'google-pay',\n buttonStyle: 'black',\n class:\n 'ds:bg-[var(--brand-googlepay-black)] ds:text-[var(--brand-googlepay-black-foreground)] ds:hover:bg-[var(--brand-googlepay-black-hover)]',\n },\n {\n provider: 'google-pay',\n buttonStyle: 'white',\n class:\n 'ds:bg-[var(--brand-googlepay-white)] ds:text-[var(--brand-googlepay-white-foreground)] ds:hover:bg-[var(--brand-googlepay-white-hover)] ds:border ds:border-[var(--brand-googlepay-white-border)]',\n },\n ],\n defaultVariants: {\n buttonStyle: 'black',\n size: 'md',\n fullWidth: false,\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Mark resolver */\n/* ------------------------------------------------------------------ */\n\nfunction WalletMark({ provider }: { provider: Provider }): ReactNode {\n return provider === 'apple-pay' ? <ApplePayMark /> : <GooglePayMark />;\n}\n\n/* ------------------------------------------------------------------ */\n/* Props */\n/* ------------------------------------------------------------------ */\n\nexport interface WalletPayButtonProps\n extends\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'children' | 'type'>,\n Omit<VariantProps<typeof rootVariants>, 'provider'> {\n /**\n * Which wallet the button represents. Drives the inline brand mark,\n * the default label key, the brand-locked surface tokens, and the\n * `data-provider` hook. Required — there is no sensible default\n * wallet.\n */\n provider: Provider;\n /**\n * Brand-mandated button type. Apple Pay supports\n * `black` / `white` / `white-outline`; Google Pay supports\n * `black` / `white` only. Passing `white-outline` with\n * `provider=\"google-pay\"` falls back to `white` and dev-warns —\n * Google's branding has no outline type.\n */\n buttonStyle?: ButtonStyle;\n /**\n * Brand-approved call-to-action phrasing. `plain` renders the bare\n * mark (mark-only) with an sr-only accessible name. The verb portion\n * is i18n; the wallet brand name (\"Apple Pay\" / \"Google Pay\") is a\n * non-translated constant.\n */\n labelType?: LabelType;\n /**\n * Fired on click / Enter / Space when not loading and not disabled.\n * Open the native wallet sheet here (Payment Request API). Named\n * `onActivate` rather than `onClick` to signal it triggers a payment\n * flow. A native `onClick` still forwards through `...rest`.\n */\n onActivate?: (event: MouseEvent<HTMLButtonElement>) => void;\n /**\n * Wallet sheet is opening / payment in flight. Swaps the mark for the\n * kit Spinner, sets `aria-busy=\"true\"`, and suppresses activation so\n * the user cannot double-open the sheet.\n */\n loading?: boolean;\n /**\n * Override the resolved accessible / visible label. Defaults to the\n * `provider` + `labelType` i18n string. The brand wordmark constant\n * (\"Apple Pay\" / \"Google Pay\") is never overridable via this prop —\n * pass a fully-translated verb phrase only.\n */\n label?: ReactNode;\n /**\n * Native button type. Defaults to `'button'` so the wallet trigger\n * never implicitly submits an ambient `<form>`.\n */\n type?: 'button' | 'submit' | 'reset';\n}\n\n/* ------------------------------------------------------------------ */\n/* WalletPayButton */\n/* ------------------------------------------------------------------ */\n\nexport const WalletPayButton = forwardRef<\n HTMLButtonElement,\n WalletPayButtonProps\n>(\n (\n {\n provider,\n buttonStyle = 'black',\n labelType = 'pay',\n size = 'md',\n fullWidth = false,\n onActivate,\n loading = false,\n disabled = false,\n label,\n type = 'button',\n className,\n onClick,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n // Google Pay has no white-outline type — fall back to white and\n // dev-warn so the consumer fixes the call site. Done once, before\n // the surface CVA resolves, so no outline class is ever applied.\n let resolvedButtonStyle = buttonStyle;\n if (provider === 'google-pay' && buttonStyle === 'white-outline') {\n resolvedButtonStyle = 'white';\n if (\n typeof import.meta !== 'undefined' &&\n typeof import.meta.env !== 'undefined' &&\n import.meta.env.DEV === true\n ) {\n console.warn(\n `[WalletPayButton] buttonStyle=\"white-outline\" is not a Google Pay ` +\n `brand type — falling back to \"white\". Google's branding has no ` +\n `outline button; use \"black\" or \"white\".`,\n );\n }\n }\n\n const providerRoot = PROVIDER_I18N_ROOT[provider];\n // The default label always carries the wallet brand name as part of\n // the i18n string (\"Pay with Apple Pay\"), so SR users hear the\n // wallet name. `label` overrides only the verb phrase.\n const resolvedLabel =\n label ?? t(`walletPayButton.${providerRoot}.${labelType}`);\n\n const isMarkOnly = labelType === 'plain' && label == null;\n const isInteractive = !loading && !disabled;\n\n const handleClick = (event: MouseEvent<HTMLButtonElement>): void => {\n // Forward the native onClick first (analytics, logging) — it sees\n // every click, including suppressed ones, mirroring WhatsAppButton.\n onClick?.(event);\n if (!isInteractive) return;\n onActivate?.(event);\n };\n\n const composedClassName = [\n rootVariants({\n provider,\n buttonStyle: resolvedButtonStyle,\n size,\n fullWidth,\n }),\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n return (\n <button\n ref={ref}\n // eslint-disable-next-line react/button-has-type -- the destructure defaults type to \"button\"\n type={type}\n disabled={disabled || loading}\n aria-busy={loading || undefined}\n data-component=\"wallet-pay-button\"\n data-provider={provider}\n data-button-style={resolvedButtonStyle}\n className={composedClassName}\n onClick={handleClick}\n {...rest}\n >\n {loading ? (\n <Spinner size={size ?? 'md'} variant=\"pulse\" />\n ) : (\n <WalletMark provider={provider} />\n )}\n {/*\n Label rendering:\n - mark-only (`plain`): sr-only accessible name, no visible\n text. The bare mark still resolves a button name.\n - otherwise: visible label. When loading, the label stays\n visible (aria-busy carries the \"in flight\" semantics) so\n the accessible name never collapses to nothing.\n */}\n {isMarkOnly ? (\n <span className=\"ds:sr-only\">{resolvedLabel}</span>\n ) : (\n // `<bdi>` isolates the label from the surrounding bidi context so\n // the Latin brand wordmark (\"Apple Pay\" / \"Google Pay\") embedded\n // in an RTL verb phrase keeps its own direction — matching the\n // i18n note. Trailing-Latin placement already renders correctly\n // under the UBA today; the isolation also keeps a future\n // mid-phrase wordmark from reordering.\n <bdi>{resolvedLabel}</bdi>\n )}\n </button>\n );\n },\n);\n\nWalletPayButton.displayName = 'WalletPayButton';\n"],"names":["ApplePayMark","className","jsxs","jsx","GooglePayMark","PROVIDER_I18N_ROOT","rootVariants","cva","WalletMark","provider","WalletPayButton","forwardRef","buttonStyle","labelType","size","fullWidth","onActivate","loading","disabled","label","type","onClick","rest","ref","t","useTranslation","resolvedButtonStyle","providerRoot","resolvedLabel","isMarkOnly","isInteractive","handleClick","event","composedClassName","Spinner"],"mappings":"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"}
@@ -4,8 +4,8 @@ import { c as dn } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as ln } from "react-i18next";
5
5
  import { u as un } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
6
6
  import { A as C } from "./alert-CiQ5Pa3Q.js";
7
- import { B as fn } from "./button-18oBsI3n.js";
8
- import { I as mn } from "./icon-button-CY7GU_Se.js";
7
+ import { B as fn } from "./button-CYPx2xFq.js";
8
+ import { I as mn } from "./icon-button-JAXAkqWC.js";
9
9
  import { X as gn } from "./x-B5YnXwCz.js";
10
10
  import { C as hn } from "./chevron-down-DWE7GSq9.js";
11
11
  const pn = dn(
@@ -270,4 +270,4 @@ Nn.displayName = "WarningStack";
270
270
  export {
271
271
  Nn as W
272
272
  };
273
- //# sourceMappingURL=warning-stack-CEgYkI1z.js.map
273
+ //# sourceMappingURL=warning-stack-7Hffm7K1.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"warning-stack-CEgYkI1z.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 ds:gap-[var(--spacing-md)]',\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 // `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 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.\n// 768px, not the `@3xl` rem alias: container-query `rem` resolves against the\n// host's root font-size, so a non-16px root silently moves the threshold.\nconst LIST_CLASSES = [\n 'ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)]',\n 'ds:@[768px]/warning-stack:grid-cols-2',\n 'ds:@[768px]/warning-stack:[&>li:nth-child(odd):last-child]:col-span-full',\n].join(' ');\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. Defaults to\n * `2`; pass a larger number (or `Infinity`) to show more before collapsing. */\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 /** Whether the whole-stack close control is shown at the header's inline-end.\n * Defaults to `true` — the tray is closable. Set `false` for stacks that\n * carry notices which must not be bulk-cleared (e.g. hard compliance blocks). */\n closable?: boolean;\n /** Fires when the whole-stack close control is activated, after every\n * currently-visible notice has been dismissed (folding the region away).\n * Optional — the fold happens internally regardless; supply this only to\n * mirror the bulk dismissal into the consumer's own store. */\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 = 2,\n defaultCollapsed = true,\n onDismiss,\n closable = true,\n onDismissAll,\n dismissAllLabel,\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 = closable && 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({ 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={LIST_CLASSES}\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 // `data-warning-id` is the per-notice agent hook: it\n // makes one warning addressable in the DOM, and its\n // dismiss control is the nested `[data-alert-dismiss]`.\n <li key={item.id} data-warning-id={item.id}>\n <Alert\n variant={variant}\n dismissible={item.dismissible}\n icon={item.icon}\n onOpenChange={handleDismiss(item, index)}\n // Compact: clamp title/description so a notice stays\n // a predictable height — keeps the tray tight and\n // side-by-side cards even.\n clamp\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","LIST_CLASSES","TOGGLE_CLASSES","MIN_FOLD_UNMOUNT_MS","readAnimationDurationMs","trimmed","n","collapseTrackClass","collapsed","stretch","collapseInnerClass","closing","WarningStack","forwardRef","items","title","description","maxVisible","defaultCollapsed","onDismiss","closable","onDismissAll","dismissAllLabel","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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"}
1
+ {"version":3,"file":"warning-stack-7Hffm7K1.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 ds:gap-[var(--spacing-md)]',\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 // `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 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.\n// 768px, not the `@3xl` rem alias: container-query `rem` resolves against the\n// host's root font-size, so a non-16px root silently moves the threshold.\nconst LIST_CLASSES = [\n 'ds:grid ds:grid-cols-1 ds:gap-[var(--spacing-md)]',\n 'ds:@[768px]/warning-stack:grid-cols-2',\n 'ds:@[768px]/warning-stack:[&>li:nth-child(odd):last-child]:col-span-full',\n].join(' ');\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. Defaults to\n * `2`; pass a larger number (or `Infinity`) to show more before collapsing. */\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 /** Whether the whole-stack close control is shown at the header's inline-end.\n * Defaults to `true` — the tray is closable. Set `false` for stacks that\n * carry notices which must not be bulk-cleared (e.g. hard compliance blocks). */\n closable?: boolean;\n /** Fires when the whole-stack close control is activated, after every\n * currently-visible notice has been dismissed (folding the region away).\n * Optional — the fold happens internally regardless; supply this only to\n * mirror the bulk dismissal into the consumer's own store. */\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 = 2,\n defaultCollapsed = true,\n onDismiss,\n closable = true,\n onDismissAll,\n dismissAllLabel,\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 = closable && 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({ 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={LIST_CLASSES}\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 // `data-warning-id` is the per-notice agent hook: it\n // makes one warning addressable in the DOM, and its\n // dismiss control is the nested `[data-alert-dismiss]`.\n <li key={item.id} data-warning-id={item.id}>\n <Alert\n variant={variant}\n dismissible={item.dismissible}\n icon={item.icon}\n onOpenChange={handleDismiss(item, index)}\n // Compact: clamp title/description so a notice stays\n // a predictable height — keeps the tray tight and\n // side-by-side cards even.\n clamp\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","LIST_CLASSES","TOGGLE_CLASSES","MIN_FOLD_UNMOUNT_MS","readAnimationDurationMs","trimmed","n","collapseTrackClass","collapsed","stretch","collapseInnerClass","closing","WarningStack","forwardRef","items","title","description","maxVisible","defaultCollapsed","onDismiss","closable","onDismissAll","dismissAllLabel","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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"}
@@ -4,9 +4,9 @@ import { c as j } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as z } from "react-i18next";
5
5
  import { C } from "./card-DPmk26CL.js";
6
6
  import { B as ye } from "./badge-BAkd6_Pj.js";
7
- import { a as Z } from "./key-value-pair-Dcdl3Gni.js";
7
+ import { a as Z } from "./key-value-pair-BL1J3_Km.js";
8
8
  import { T as xe } from "./timestamp-BV2lC-wV.js";
9
- import { I as S } from "./icon-button-CY7GU_Se.js";
9
+ import { I as S } from "./icon-button-JAXAkqWC.js";
10
10
  import { P as $ } from "./pencil-B1sKKyuT.js";
11
11
  import { c as U } from "./createLucideIcon-DhHxpK9K.js";
12
12
  import { T as ae } from "./trash-2-uumy3fy1.js";
@@ -14,9 +14,9 @@ import { C as Ne } from "./circle-dashed-CUj6o2cA.js";
14
14
  import { C as Ce } from "./circle-j7oZoouK.js";
15
15
  import { u as _e } from "./registry-DvAUVLHh.js";
16
16
  import { A as V } from "./alert-CiQ5Pa3Q.js";
17
- import { B as Se } from "./button-18oBsI3n.js";
18
- import { D as N } from "./dropdown-menu-C8PaW3lR.js";
19
- import { E } from "./empty-state-DTBZ1ENT.js";
17
+ import { B as Se } from "./button-CYPx2xFq.js";
18
+ import { D as N } from "./dropdown-menu-DIzxr_lp.js";
19
+ import { E } from "./empty-state-Ck1wVWdN.js";
20
20
  import { P as ne } from "./plus-DzMQ_c6b.js";
21
21
  import { G as ie } from "./globe-sHBW1JN5.js";
22
22
  import { U as de } from "./user-cog-BTn98Arm.js";
@@ -1329,4 +1329,4 @@ export {
1329
1329
  ee as r,
1330
1330
  D as w
1331
1331
  };
1332
- //# sourceMappingURL=workflow-map-qGkQTNvS.js.map
1332
+ //# sourceMappingURL=workflow-map-Jfe9L9Wt.js.map