@alfadocs/ui-kit-debug 1.34.0 → 1.36.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 (588) hide show
  1. package/dist/_chunks/{actions-cell-renderer-yy03OgRL.js → actions-cell-renderer-CUn1pqEq.js} +3 -3
  2. package/dist/_chunks/{actions-cell-renderer-yy03OgRL.js.map → actions-cell-renderer-CUn1pqEq.js.map} +1 -1
  3. package/dist/_chunks/{agenda-card-DVz3jwTf.js → agenda-card-DyQtHb9z.js} +2 -2
  4. package/dist/_chunks/{agenda-card-DVz3jwTf.js.map → agenda-card-DyQtHb9z.js.map} +1 -1
  5. package/dist/_chunks/{agenda-tray-1oDWCJdB.js → agenda-tray-DYGCTIWB.js} +3 -3
  6. package/dist/_chunks/{agenda-tray-1oDWCJdB.js.map → agenda-tray-DYGCTIWB.js.map} +1 -1
  7. package/dist/_chunks/{ai-consent-banner-OggpS5hW.js → ai-consent-banner-De4gzSBZ.js} +4 -4
  8. package/dist/_chunks/{ai-consent-banner-OggpS5hW.js.map → ai-consent-banner-De4gzSBZ.js.map} +1 -1
  9. package/dist/_chunks/{ai-prompt-input-Dt7tpCBh.js → ai-prompt-input-DdxlaI7q.js} +2 -2
  10. package/dist/_chunks/{ai-prompt-input-Dt7tpCBh.js.map → ai-prompt-input-DdxlaI7q.js.map} +1 -1
  11. package/dist/_chunks/{alert-CiJT540z.js → alert-CiQ5Pa3Q.js} +2 -2
  12. package/dist/_chunks/{alert-CiJT540z.js.map → alert-CiQ5Pa3Q.js.map} +1 -1
  13. package/dist/_chunks/{alia-sidebar-D18kp3p9.js → alia-sidebar-B6bXlZZk.js} +6 -6
  14. package/dist/_chunks/{alia-sidebar-D18kp3p9.js.map → alia-sidebar-B6bXlZZk.js.map} +1 -1
  15. package/dist/_chunks/{anamnesis-card-NTi4LLzI.js → anamnesis-card-DGwINeNn.js} +3 -3
  16. package/dist/_chunks/{anamnesis-card-NTi4LLzI.js.map → anamnesis-card-DGwINeNn.js.map} +1 -1
  17. package/dist/_chunks/{anamnesis-summary-card-DGVKBQoq.js → anamnesis-summary-card-GYHa7VGp.js} +3 -3
  18. package/dist/_chunks/{anamnesis-summary-card-DGVKBQoq.js.map → anamnesis-summary-card-GYHa7VGp.js.map} +1 -1
  19. package/dist/_chunks/{anamnesis-summary-rows-BYgyp_i2.js → anamnesis-summary-rows-Cxtgo2ok.js} +12 -12
  20. package/dist/_chunks/{anamnesis-summary-rows-BYgyp_i2.js.map → anamnesis-summary-rows-Cxtgo2ok.js.map} +1 -1
  21. package/dist/_chunks/{antenatal-schedule-timeline-sXfIp5lp.js → antenatal-schedule-timeline-CXk_tzWG.js} +2 -2
  22. package/dist/_chunks/{antenatal-schedule-timeline-sXfIp5lp.js.map → antenatal-schedule-timeline-CXk_tzWG.js.map} +1 -1
  23. package/dist/_chunks/appointment-card-WsDGBBut.js +425 -0
  24. package/dist/_chunks/appointment-card-WsDGBBut.js.map +1 -0
  25. package/dist/_chunks/appointment-timeline-ByfovxqR.js +449 -0
  26. package/dist/_chunks/appointment-timeline-ByfovxqR.js.map +1 -0
  27. package/dist/_chunks/{appointment-tray-6rg071CL.js → appointment-tray-D6UyJHej.js} +3 -3
  28. package/dist/_chunks/{appointment-tray-6rg071CL.js.map → appointment-tray-D6UyJHej.js.map} +1 -1
  29. package/dist/_chunks/arrow-right-KsIrLdt0.js +15 -0
  30. package/dist/_chunks/arrow-right-KsIrLdt0.js.map +1 -0
  31. package/dist/_chunks/{audio-recorder-11wClczr.js → audio-recorder-BlQBC7N_.js} +3 -3
  32. package/dist/_chunks/{audio-recorder-11wClczr.js.map → audio-recorder-BlQBC7N_.js.map} +1 -1
  33. package/dist/_chunks/{badge-sTusUqZD.js → badge-BudgzTe_.js} +2 -2
  34. package/dist/_chunks/{badge-sTusUqZD.js.map → badge-BudgzTe_.js.map} +1 -1
  35. package/dist/_chunks/{balance-badge-cell-DhBtFRoW.js → balance-badge-cell-B0Z8Dwn8.js} +6 -6
  36. package/dist/_chunks/{balance-badge-cell-DhBtFRoW.js.map → balance-badge-cell-B0Z8Dwn8.js.map} +1 -1
  37. package/dist/_chunks/{bishop-score-CAl7C5hm.js → bishop-score-D5b8tktp.js} +2 -2
  38. package/dist/_chunks/{bishop-score-CAl7C5hm.js.map → bishop-score-D5b8tktp.js.map} +1 -1
  39. package/dist/_chunks/{bmi-calculator-Dwkih9a4.js → bmi-calculator-dOKP-vW4.js} +4 -4
  40. package/dist/_chunks/{bmi-calculator-Dwkih9a4.js.map → bmi-calculator-dOKP-vW4.js.map} +1 -1
  41. package/dist/_chunks/{booking-BqkEtsKx.js → booking-Dp-9qR6F.js} +9 -9
  42. package/dist/_chunks/{booking-BqkEtsKx.js.map → booking-Dp-9qR6F.js.map} +1 -1
  43. package/dist/_chunks/button-group-QmN1VdUW.js +307 -0
  44. package/dist/_chunks/button-group-QmN1VdUW.js.map +1 -0
  45. package/dist/_chunks/{calendar-Dgvl5L4T.js → calendar-7GAUlsNO.js} +3 -3
  46. package/dist/_chunks/{calendar-Dgvl5L4T.js.map → calendar-7GAUlsNO.js.map} +1 -1
  47. package/dist/_chunks/{calendar-event-card-DSh-69HT.js → calendar-event-card-DKUnT9Be.js} +91 -134
  48. package/dist/_chunks/calendar-event-card-DKUnT9Be.js.map +1 -0
  49. package/dist/_chunks/{calendar-workspace-4NH1Z47_.js → calendar-workspace-Duv_5B4j.js} +2494 -2415
  50. package/dist/_chunks/calendar-workspace-Duv_5B4j.js.map +1 -0
  51. package/dist/_chunks/{care-plan-card-CZW476Kg.js → care-plan-card-COFOI-fI.js} +5 -5
  52. package/dist/_chunks/{care-plan-card-CZW476Kg.js.map → care-plan-card-COFOI-fI.js.map} +1 -1
  53. package/dist/_chunks/{care-plan-entry-card-BMUYagEw.js → care-plan-entry-card-BOKn0KW-.js} +6 -6
  54. package/dist/_chunks/{care-plan-entry-card-BMUYagEw.js.map → care-plan-entry-card-BOKn0KW-.js.map} +1 -1
  55. package/dist/_chunks/{care-plan-header-B5CBE0zu.js → care-plan-header-CbuOuVBw.js} +4 -4
  56. package/dist/_chunks/{care-plan-header-B5CBE0zu.js.map → care-plan-header-CbuOuVBw.js.map} +1 -1
  57. package/dist/_chunks/{carousel.agent-CLxdHEBP.js → carousel.agent-Dv4a4M8L.js} +2 -2
  58. package/dist/_chunks/{carousel.agent-CLxdHEBP.js.map → carousel.agent-Dv4a4M8L.js.map} +1 -1
  59. package/dist/_chunks/{chart-C6eHTxkO.js → chart-iWl76PXv.js} +3 -3
  60. package/dist/_chunks/{chart-C6eHTxkO.js.map → chart-iWl76PXv.js.map} +1 -1
  61. package/dist/_chunks/{chat-input-BsB5Umpj.js → chat-input-qM5QpUSq.js} +2 -2
  62. package/dist/_chunks/{chat-input-BsB5Umpj.js.map → chat-input-qM5QpUSq.js.map} +1 -1
  63. package/dist/_chunks/{chat-message-C-8UU2av.js → chat-message-RniXtrCH.js} +2 -2
  64. package/dist/_chunks/{chat-message-C-8UU2av.js.map → chat-message-RniXtrCH.js.map} +1 -1
  65. package/dist/_chunks/{checkbox-BuZ1u__2.js → checkbox-CZkipDn7.js} +2 -2
  66. package/dist/_chunks/{checkbox-BuZ1u__2.js.map → checkbox-CZkipDn7.js.map} +1 -1
  67. package/dist/_chunks/{checkbox-group-CfqMv57d.js → checkbox-group-DomUzpkF.js} +2 -2
  68. package/dist/_chunks/{checkbox-group-CfqMv57d.js.map → checkbox-group-DomUzpkF.js.map} +1 -1
  69. package/dist/_chunks/clinical-note-card-DdsGYMmI.js +325 -0
  70. package/dist/_chunks/clinical-note-card-DdsGYMmI.js.map +1 -0
  71. package/dist/_chunks/{code-block-BIkpRLkl.js → code-block-uVjNSI9g.js} +2 -2
  72. package/dist/_chunks/{code-block-BIkpRLkl.js.map → code-block-uVjNSI9g.js.map} +1 -1
  73. package/dist/_chunks/{connection-status-DRZIcMqM.js → connection-status-OEsWjmRk.js} +3 -3
  74. package/dist/_chunks/{connection-status-DRZIcMqM.js.map → connection-status-OEsWjmRk.js.map} +1 -1
  75. package/dist/_chunks/{contact-profile-card-DSI9uumA.js → contact-profile-card--My1H2UD.js} +3 -3
  76. package/dist/_chunks/{contact-profile-card-DSI9uumA.js.map → contact-profile-card--My1H2UD.js.map} +1 -1
  77. package/dist/_chunks/{control-room-rail-5MbhjsxN.js → control-room-rail-Ds45_g4f.js} +4 -4
  78. package/dist/_chunks/{control-room-rail-5MbhjsxN.js.map → control-room-rail-Ds45_g4f.js.map} +1 -1
  79. package/dist/_chunks/{counter-dRlTNC_y.js → counter-WsvRuum1.js} +50 -15
  80. package/dist/_chunks/counter-WsvRuum1.js.map +1 -0
  81. package/dist/_chunks/{cycle-calculator-DVgxBfP0.js → cycle-calculator-BJeaXiZv.js} +3 -3
  82. package/dist/_chunks/{cycle-calculator-DVgxBfP0.js.map → cycle-calculator-BJeaXiZv.js.map} +1 -1
  83. package/dist/_chunks/{dashboard-grid-BFtdHqfn.js → dashboard-grid-B23BFzRl.js} +2 -2
  84. package/dist/_chunks/{dashboard-grid-BFtdHqfn.js.map → dashboard-grid-B23BFzRl.js.map} +1 -1
  85. package/dist/_chunks/{data-table-DC96JJIq.js → data-table-BYGK-gUJ.js} +6 -6
  86. package/dist/_chunks/{data-table-DC96JJIq.js.map → data-table-BYGK-gUJ.js.map} +1 -1
  87. package/dist/_chunks/{data-table-tabs-DVIFkqx_.js → data-table-tabs-BMR0zsVQ.js} +3 -3
  88. package/dist/_chunks/{data-table-tabs-DVIFkqx_.js.map → data-table-tabs-BMR0zsVQ.js.map} +1 -1
  89. package/dist/_chunks/{date-picker-B6NW_PS5.js → date-picker-6tFnKFty.js} +14 -14
  90. package/dist/_chunks/{date-picker-B6NW_PS5.js.map → date-picker-6tFnKFty.js.map} +1 -1
  91. package/dist/_chunks/{dependent-selector-yTKKsuc9.js → dependent-selector-BHDP0nBB.js} +3 -3
  92. package/dist/_chunks/{dependent-selector-yTKKsuc9.js.map → dependent-selector-BHDP0nBB.js.map} +1 -1
  93. package/dist/_chunks/{description-list-CjJqR8WK.js → description-list-C1RXMDZ_.js} +2 -2
  94. package/dist/_chunks/{description-list-CjJqR8WK.js.map → description-list-C1RXMDZ_.js.map} +1 -1
  95. package/dist/_chunks/{document-preview-BrhMHNh8.js → document-preview-DsEyRcNd.js} +4 -4
  96. package/dist/_chunks/{document-preview-BrhMHNh8.js.map → document-preview-DsEyRcNd.js.map} +1 -1
  97. package/dist/_chunks/{document-scanner-C5Vrbu21.js → document-scanner-CbWVtm7u.js} +53 -52
  98. package/dist/_chunks/{document-scanner-C5Vrbu21.js.map → document-scanner-CbWVtm7u.js.map} +1 -1
  99. package/dist/_chunks/{due-date-calculator-CxgK8vzt.js → due-date-calculator-Dhc9Ljkb.js} +6 -6
  100. package/dist/_chunks/{due-date-calculator-CxgK8vzt.js.map → due-date-calculator-Dhc9Ljkb.js.map} +1 -1
  101. package/dist/_chunks/{editable-currency-cell-renderer-B7TVZ5ZJ.js → editable-currency-cell-renderer-D7blbDFY.js} +4 -4
  102. package/dist/_chunks/{editable-currency-cell-renderer-B7TVZ5ZJ.js.map → editable-currency-cell-renderer-D7blbDFY.js.map} +1 -1
  103. package/dist/_chunks/{editor-overlay-DEc5yYwo.js → editor-overlay-8fKAcRsm.js} +2 -2
  104. package/dist/_chunks/{editor-overlay-DEc5yYwo.js.map → editor-overlay-8fKAcRsm.js.map} +1 -1
  105. package/dist/_chunks/{entity-card-DmrgYSEX.js → entity-card-I-Gio5wo.js} +36 -32
  106. package/dist/_chunks/entity-card-I-Gio5wo.js.map +1 -0
  107. package/dist/_chunks/{entity-summary-5o768XLU.js → entity-summary-BbW0mIzU.js} +4 -4
  108. package/dist/_chunks/{entity-summary-5o768XLU.js.map → entity-summary-BbW0mIzU.js.map} +1 -1
  109. package/dist/_chunks/{face-scheme-l-CQyLs-.js → face-scheme-uFvhqz6h.js} +4 -4
  110. package/dist/_chunks/{face-scheme-l-CQyLs-.js.map → face-scheme-uFvhqz6h.js.map} +1 -1
  111. package/dist/_chunks/{fetal-weight-Dqy0T1fP.js → fetal-weight-C6SxchOv.js} +2 -2
  112. package/dist/_chunks/{fetal-weight-Dqy0T1fP.js.map → fetal-weight-C6SxchOv.js.map} +1 -1
  113. package/dist/_chunks/{field-array-BjkXZzSr.js → field-array-C9dmRaIM.js} +2 -2
  114. package/dist/_chunks/{field-array-BjkXZzSr.js.map → field-array-C9dmRaIM.js.map} +1 -1
  115. package/dist/_chunks/{file-manager-CI2Qn8qW.js → file-manager-DvkFgj7d.js} +7 -7
  116. package/dist/_chunks/{file-manager-CI2Qn8qW.js.map → file-manager-DvkFgj7d.js.map} +1 -1
  117. package/dist/_chunks/{file-upload-CwxdqkMK.js → file-upload-BDpb08GM.js} +71 -78
  118. package/dist/_chunks/file-upload-BDpb08GM.js.map +1 -0
  119. package/dist/_chunks/{fiscal-code-input-B_nYMSEM.js → fiscal-code-input-CkwIdB1y.js} +2 -2
  120. package/dist/_chunks/{fiscal-code-input-B_nYMSEM.js.map → fiscal-code-input-CkwIdB1y.js.map} +1 -1
  121. package/dist/_chunks/{freemium-paywall-DrXzYfv-.js → freemium-paywall-BqGk_SBU.js} +2 -2
  122. package/dist/_chunks/{freemium-paywall-DrXzYfv-.js.map → freemium-paywall-BqGk_SBU.js.map} +1 -1
  123. package/dist/_chunks/{gestational-age-calculator-CZHVrERT.js → gestational-age-calculator-DDOGaPvg.js} +6 -6
  124. package/dist/_chunks/{gestational-age-calculator-CZHVrERT.js.map → gestational-age-calculator-DDOGaPvg.js.map} +1 -1
  125. package/dist/_chunks/{hcg-doubling-C2fQxfXd.js → hcg-doubling-Bb_n6tEa.js} +2 -2
  126. package/dist/_chunks/{hcg-doubling-C2fQxfXd.js.map → hcg-doubling-Bb_n6tEa.js.map} +1 -1
  127. package/dist/_chunks/{header-DUXRIPyM.js → header-BZ4pZlJV.js} +2 -2
  128. package/dist/_chunks/{header-DUXRIPyM.js.map → header-BZ4pZlJV.js.map} +1 -1
  129. package/dist/_chunks/{header-settings-DvjZNMhD.js → header-settings-B8mLc03Q.js} +4 -4
  130. package/dist/_chunks/{header-settings-DvjZNMhD.js.map → header-settings-B8mLc03Q.js.map} +1 -1
  131. package/dist/_chunks/hover-card-Bcku1GQu.js +511 -0
  132. package/dist/_chunks/hover-card-Bcku1GQu.js.map +1 -0
  133. package/dist/_chunks/{icon-button-DA2CAGHZ.js → icon-button-8xqRnkdG.js} +2 -2
  134. package/dist/_chunks/{icon-button-DA2CAGHZ.js.map → icon-button-8xqRnkdG.js.map} +1 -1
  135. package/dist/_chunks/{icon-button-group-VCCod3Hz.js → icon-button-group-Dj6CRoYR.js} +2 -2
  136. package/dist/_chunks/{icon-button-group-VCCod3Hz.js.map → icon-button-group-Dj6CRoYR.js.map} +1 -1
  137. package/dist/_chunks/{icon-picker-DOa89vn3.js → icon-picker-CTWzlHJr.js} +2 -2
  138. package/dist/_chunks/{icon-picker-DOa89vn3.js.map → icon-picker-CTWzlHJr.js.map} +1 -1
  139. package/dist/_chunks/{info-tip-CADik6WN.js → info-tip-ey_Pon2y.js} +2 -2
  140. package/dist/_chunks/{info-tip-CADik6WN.js.map → info-tip-ey_Pon2y.js.map} +1 -1
  141. package/dist/_chunks/{key-value-pair-BIBdZBLg.js → key-value-pair-DczGb4yz.js} +42 -41
  142. package/dist/_chunks/key-value-pair-DczGb4yz.js.map +1 -0
  143. package/dist/_chunks/{link-cell-renderer-BEpMNtAa.js → link-cell-renderer-BNa8x6oJ.js} +6 -6
  144. package/dist/_chunks/{link-cell-renderer-BEpMNtAa.js.map → link-cell-renderer-BNa8x6oJ.js.map} +1 -1
  145. package/dist/_chunks/loader-circle-BECIU_8N.js +12 -0
  146. package/dist/_chunks/loader-circle-BECIU_8N.js.map +1 -0
  147. package/dist/_chunks/{locale-picker-CwFtqSkt.js → locale-picker-BLeHbFSc.js} +3 -3
  148. package/dist/_chunks/{locale-picker-CwFtqSkt.js.map → locale-picker-BLeHbFSc.js.map} +1 -1
  149. package/dist/_chunks/{marketplace-app-shell-CK_ND8Tr.js → marketplace-app-shell-BwH6Aruw.js} +6 -6
  150. package/dist/_chunks/{marketplace-app-shell-CK_ND8Tr.js.map → marketplace-app-shell-BwH6Aruw.js.map} +1 -1
  151. package/dist/_chunks/{message-card-BUMv16un.js → message-card-Dm5Xshup.js} +2 -2
  152. package/dist/_chunks/{message-card-BUMv16un.js.map → message-card-Dm5Xshup.js.map} +1 -1
  153. package/dist/_chunks/{message-tray-0zsv27xX.js → message-tray-BcLyaO-G.js} +3 -3
  154. package/dist/_chunks/{message-tray-0zsv27xX.js.map → message-tray-BcLyaO-G.js.map} +1 -1
  155. package/dist/_chunks/{multi-select-DYOvx2SJ.js → multi-select-CtPd7g4x.js} +15 -15
  156. package/dist/_chunks/{multi-select-DYOvx2SJ.js.map → multi-select-CtPd7g4x.js.map} +1 -1
  157. package/dist/_chunks/note-attachment-CwDir3kK.js +124 -0
  158. package/dist/_chunks/note-attachment-CwDir3kK.js.map +1 -0
  159. package/dist/_chunks/note-timeline-CXfSV3yX.js +231 -0
  160. package/dist/_chunks/note-timeline-CXfSV3yX.js.map +1 -0
  161. package/dist/_chunks/{notes-panel-BjLt-kiP.js → notes-panel-Co8D3uDd.js} +7 -7
  162. package/dist/_chunks/{notes-panel-BjLt-kiP.js.map → notes-panel-Co8D3uDd.js.map} +1 -1
  163. package/dist/_chunks/{notification-card-CtrzoTUO.js → notification-card-ChcK9Wat.js} +2 -2
  164. package/dist/_chunks/{notification-card-CtrzoTUO.js.map → notification-card-ChcK9Wat.js.map} +1 -1
  165. package/dist/_chunks/{notification-tray-BiRzXHDf.js → notification-tray-CJ8jOe-U.js} +4 -4
  166. package/dist/_chunks/{notification-tray-BiRzXHDf.js.map → notification-tray-CJ8jOe-U.js.map} +1 -1
  167. package/dist/_chunks/{operator-hero-D7-iiFQ9.js → operator-hero-XIdwDmN2.js} +3 -3
  168. package/dist/_chunks/{operator-hero-D7-iiFQ9.js.map → operator-hero-XIdwDmN2.js.map} +1 -1
  169. package/dist/_chunks/{optical-prescription-DUJOhKz_.js → optical-prescription-cphK41eP.js} +2 -2
  170. package/dist/_chunks/{optical-prescription-DUJOhKz_.js.map → optical-prescription-cphK41eP.js.map} +1 -1
  171. package/dist/_chunks/panel-header-D_mTdhUp.js +128 -0
  172. package/dist/_chunks/panel-header-D_mTdhUp.js.map +1 -0
  173. package/dist/_chunks/patient-details-f7SSXkTJ.js +371 -0
  174. package/dist/_chunks/patient-details-f7SSXkTJ.js.map +1 -0
  175. package/dist/_chunks/patient-field-row-BQZoP4m2.js +787 -0
  176. package/dist/_chunks/patient-field-row-BQZoP4m2.js.map +1 -0
  177. package/dist/_chunks/{patient-search-HeEUB-_X.js → patient-search-D08b6jgj.js} +2 -2
  178. package/dist/_chunks/{patient-search-HeEUB-_X.js.map → patient-search-D08b6jgj.js.map} +1 -1
  179. package/dist/_chunks/patient-summary-card-Bz7KdUin.js +533 -0
  180. package/dist/_chunks/patient-summary-card-Bz7KdUin.js.map +1 -0
  181. package/dist/_chunks/{payment-automation-upsell-DwQW2fRp.js → payment-automation-upsell-BLTdE2em.js} +50 -59
  182. package/dist/_chunks/payment-automation-upsell-BLTdE2em.js.map +1 -0
  183. package/dist/_chunks/{payment-form-Ds1I9KqB.js → payment-form-BHMDqW9C.js} +2 -2
  184. package/dist/_chunks/{payment-form-Ds1I9KqB.js.map → payment-form-BHMDqW9C.js.map} +1 -1
  185. package/dist/_chunks/{payment-request-card-lmKLwsDs.js → payment-request-card-BxcdvxKR.js} +6 -6
  186. package/dist/_chunks/{payment-request-card-lmKLwsDs.js.map → payment-request-card-BxcdvxKR.js.map} +1 -1
  187. package/dist/_chunks/{pdf-viewer-DUIsV9s5.js → pdf-viewer-DUKdn5iq.js} +2 -2
  188. package/dist/_chunks/{pdf-viewer-DUIsV9s5.js.map → pdf-viewer-DUKdn5iq.js.map} +1 -1
  189. package/dist/_chunks/{periodontal-chart-B9fphroR.js → periodontal-chart-BF_e3wZp.js} +2 -2
  190. package/dist/_chunks/{periodontal-chart-B9fphroR.js.map → periodontal-chart-BF_e3wZp.js.map} +1 -1
  191. package/dist/_chunks/{periodontal-chart-card-qEZPXj83.js → periodontal-chart-card-BJEuJuzh.js} +3 -3
  192. package/dist/_chunks/{periodontal-chart-card-qEZPXj83.js.map → periodontal-chart-card-BJEuJuzh.js.map} +1 -1
  193. package/dist/_chunks/{periodontal-diagnosis-lEwA8wqX.js → periodontal-diagnosis-C7pfPOct.js} +5 -5
  194. package/dist/_chunks/{periodontal-diagnosis-lEwA8wqX.js.map → periodontal-diagnosis-C7pfPOct.js.map} +1 -1
  195. package/dist/_chunks/{periodontal-risk-chart-0x7KVZjL.js → periodontal-risk-chart-B2tNFa15.js} +2 -2
  196. package/dist/_chunks/{periodontal-risk-chart-0x7KVZjL.js.map → periodontal-risk-chart-B2tNFa15.js.map} +1 -1
  197. package/dist/_chunks/{permission-matrix-BIJrGEmz.js → permission-matrix-VdAXjjHU.js} +3 -3
  198. package/dist/_chunks/{permission-matrix-BIJrGEmz.js.map → permission-matrix-VdAXjjHU.js.map} +1 -1
  199. package/dist/_chunks/{popover-DP6WCVwm.js → popover-DzR5QYxp.js} +24 -24
  200. package/dist/_chunks/{popover-DP6WCVwm.js.map → popover-DzR5QYxp.js.map} +1 -1
  201. package/dist/_chunks/{practice-profile-hero-DQyDvpJL.js → practice-profile-hero-DxoLlQr5.js} +2 -2
  202. package/dist/_chunks/{practice-profile-hero-DQyDvpJL.js.map → practice-profile-hero-DxoLlQr5.js.map} +1 -1
  203. package/dist/_chunks/{practice-results-kayDEorM.js → practice-results-DOcORTkP.js} +4 -4
  204. package/dist/_chunks/{practice-results-kayDEorM.js.map → practice-results-DOcORTkP.js.map} +1 -1
  205. package/dist/_chunks/{pregnancy-dating-n5j5dAKy.js → pregnancy-dating-nV1_S6w0.js} +6 -6
  206. package/dist/_chunks/{pregnancy-dating-n5j5dAKy.js.map → pregnancy-dating-nV1_S6w0.js.map} +1 -1
  207. package/dist/_chunks/{pregnancy-weight-gain-D5A8vPjj.js → pregnancy-weight-gain-tRecShAD.js} +4 -4
  208. package/dist/_chunks/{pregnancy-weight-gain-D5A8vPjj.js.map → pregnancy-weight-gain-tRecShAD.js.map} +1 -1
  209. package/dist/_chunks/{privacy-lock-CkAUo6Dz.js → privacy-lock-Be39vQUN.js} +2 -2
  210. package/dist/_chunks/{privacy-lock-CkAUo6Dz.js.map → privacy-lock-Be39vQUN.js.map} +1 -1
  211. package/dist/_chunks/{product-hub-panel-BScCotGD.js → product-hub-panel-C0TO69P7.js} +2 -2
  212. package/dist/_chunks/{product-hub-panel-BScCotGD.js.map → product-hub-panel-C0TO69P7.js.map} +1 -1
  213. package/dist/_chunks/{public-header.agent-kth2SdXn.js → public-header.agent-Bl1KFwSE.js} +3 -3
  214. package/dist/_chunks/{public-header.agent-kth2SdXn.js.map → public-header.agent-Bl1KFwSE.js.map} +1 -1
  215. package/dist/_chunks/{radio-DNRe6H_8.js → radio-6fml-pWk.js} +2 -2
  216. package/dist/_chunks/{radio-DNRe6H_8.js.map → radio-6fml-pWk.js.map} +1 -1
  217. package/dist/_chunks/{radio-group-DyVBgnA3.js → radio-group-CIjmyioi.js} +3 -3
  218. package/dist/_chunks/{radio-group-DyVBgnA3.js.map → radio-group-CIjmyioi.js.map} +1 -1
  219. package/dist/_chunks/{radiograph-panel.agent-o4jwEJPC.js → radiograph-panel.agent-k0G7JuoM.js} +6 -6
  220. package/dist/_chunks/{radiograph-panel.agent-o4jwEJPC.js.map → radiograph-panel.agent-k0G7JuoM.js.map} +1 -1
  221. package/dist/_chunks/{reviews-panel-BKHEfqVQ.js → reviews-panel-BaHZb_ai.js} +3 -3
  222. package/dist/_chunks/{reviews-panel-BKHEfqVQ.js.map → reviews-panel-BaHZb_ai.js.map} +1 -1
  223. package/dist/_chunks/{rich-text-editor-CCI-Y3DN.js → rich-text-editor-BTXlorm5.js} +7 -7
  224. package/dist/_chunks/{rich-text-editor-CCI-Y3DN.js.map → rich-text-editor-BTXlorm5.js.map} +1 -1
  225. package/dist/_chunks/{search-bar-CJj6sI9m.js → search-bar-CCmViqaa.js} +46 -46
  226. package/dist/_chunks/{search-bar-CJj6sI9m.js.map → search-bar-CCmViqaa.js.map} +1 -1
  227. package/dist/_chunks/section-card.agent-W18CHEgX.js +74 -0
  228. package/dist/_chunks/section-card.agent-W18CHEgX.js.map +1 -0
  229. package/dist/_chunks/{sheet-BSznOyJs.js → sheet-hm04DGFd.js} +2 -2
  230. package/dist/_chunks/{sheet-BSznOyJs.js.map → sheet-hm04DGFd.js.map} +1 -1
  231. package/dist/_chunks/{sign-document-jF4fZDJ5.js → sign-document-CRQuAn4W.js} +2 -2
  232. package/dist/_chunks/{sign-document-jF4fZDJ5.js.map → sign-document-CRQuAn4W.js.map} +1 -1
  233. package/dist/_chunks/{signature-request-vihDT8On.js → signature-request-Dej2g86d.js} +5 -5
  234. package/dist/_chunks/{signature-request-vihDT8On.js.map → signature-request-Dej2g86d.js.map} +1 -1
  235. package/dist/_chunks/{signature-status-chip-T5fyS-k9.js → signature-status-chip-D4NsrdeI.js} +3 -3
  236. package/dist/_chunks/{signature-status-chip-T5fyS-k9.js.map → signature-status-chip-D4NsrdeI.js.map} +1 -1
  237. package/dist/_chunks/{slot-grid-BuZOKfcd.js → slot-grid-8Ko6thzz.js} +2 -2
  238. package/dist/_chunks/{slot-grid-BuZOKfcd.js.map → slot-grid-8Ko6thzz.js.map} +1 -1
  239. package/dist/_chunks/{streaming-text-CvsjIQ7S.js → streaming-text-DjFqLSt_.js} +2 -2
  240. package/dist/_chunks/{streaming-text-CvsjIQ7S.js.map → streaming-text-DjFqLSt_.js.map} +1 -1
  241. package/dist/_chunks/{tab-bar-DvFJIQfL.js → tab-bar-rDkLiaA6.js} +2 -2
  242. package/dist/_chunks/{tab-bar-DvFJIQfL.js.map → tab-bar-rDkLiaA6.js.map} +1 -1
  243. package/dist/_chunks/{tag-3wgkwwDB.js → tag-Ci3xJPcH.js} +2 -2
  244. package/dist/_chunks/{tag-3wgkwwDB.js.map → tag-Ci3xJPcH.js.map} +1 -1
  245. package/dist/_chunks/{task-tray-COo-RlDv.js → task-tray-wl9eti6J.js} +2 -2
  246. package/dist/_chunks/{task-tray-COo-RlDv.js.map → task-tray-wl9eti6J.js.map} +1 -1
  247. package/dist/_chunks/{tasks-panel-DLKpSNoE.js → tasks-panel-BDNB7hsZ.js} +5 -5
  248. package/dist/_chunks/{tasks-panel-DLKpSNoE.js.map → tasks-panel-BDNB7hsZ.js.map} +1 -1
  249. package/dist/_chunks/{theme-toggle-uEwoKjl3.js → theme-toggle-CMz8YfC1.js} +3 -3
  250. package/dist/_chunks/{theme-toggle-uEwoKjl3.js.map → theme-toggle-CMz8YfC1.js.map} +1 -1
  251. package/dist/_chunks/{timeline-Bs9Erxlo.js → timeline-61AihzYz.js} +47 -47
  252. package/dist/_chunks/timeline-61AihzYz.js.map +1 -0
  253. package/dist/_chunks/{toast-YZz2sBzB.js → toast-8jqtbfAB.js} +2 -2
  254. package/dist/_chunks/{toast-YZz2sBzB.js.map → toast-8jqtbfAB.js.map} +1 -1
  255. package/dist/_chunks/{tool-rail-ONaV-Nzz.js → tool-rail-Bq5eiFMG.js} +3 -3
  256. package/dist/_chunks/{tool-rail-ONaV-Nzz.js.map → tool-rail-Bq5eiFMG.js.map} +1 -1
  257. package/dist/_chunks/{tooltip-DvmfrNvB.js → tooltip-Cp-PLePW.js} +41 -41
  258. package/dist/_chunks/tooltip-Cp-PLePW.js.map +1 -0
  259. package/dist/_chunks/{tooth-scheme-Qe7LO5Di.js → tooth-scheme-BWkYxxjR.js} +3 -3
  260. package/dist/_chunks/{tooth-scheme-Qe7LO5Di.js.map → tooth-scheme-BWkYxxjR.js.map} +1 -1
  261. package/dist/_chunks/{transaction-chip-DJCstquX.js → transaction-chip-Dth1nThY.js} +49 -48
  262. package/dist/_chunks/{transaction-chip-DJCstquX.js.map → transaction-chip-Dth1nThY.js.map} +1 -1
  263. package/dist/_chunks/{transcript-panel-BGkEhvHO.js → transcript-panel-u2HHxZB6.js} +2 -2
  264. package/dist/_chunks/{transcript-panel-BGkEhvHO.js.map → transcript-panel-u2HHxZB6.js.map} +1 -1
  265. package/dist/_chunks/user-x-DYszNtIg.js +45 -0
  266. package/dist/_chunks/user-x-DYszNtIg.js.map +1 -0
  267. package/dist/_chunks/{warning-stack-DQz0Jyir.js → warning-stack-BW5Dwb3z.js} +3 -3
  268. package/dist/_chunks/{warning-stack-DQz0Jyir.js.map → warning-stack-BW5Dwb3z.js.map} +1 -1
  269. package/dist/_chunks/{widget-picker-DvUkBemi.js → widget-picker-B1sj6uyf.js} +2 -2
  270. package/dist/_chunks/{widget-picker-DvUkBemi.js.map → widget-picker-B1sj6uyf.js.map} +1 -1
  271. package/dist/_chunks/{workflow-map-dNzJjBWG.js → workflow-map-D-LEni11.js} +5 -5
  272. package/dist/_chunks/{workflow-map-dNzJjBWG.js.map → workflow-map-D-LEni11.js.map} +1 -1
  273. package/dist/_chunks/workflow-status-xeaJTzD3.js +476 -0
  274. package/dist/_chunks/workflow-status-xeaJTzD3.js.map +1 -0
  275. package/dist/agent-catalog.json +185 -1
  276. package/dist/agent-i18n/en.json +27 -0
  277. package/dist/components/_shared/entity-card/entity-card.d.ts +44 -0
  278. package/dist/components/_shared/entity-card/entity-card.d.ts.map +1 -1
  279. package/dist/components/_shared/entity-card/index.d.ts +1 -1
  280. package/dist/components/_shared/entity-card/index.d.ts.map +1 -1
  281. package/dist/components/_shared/note-attachment.d.ts +41 -0
  282. package/dist/components/_shared/note-attachment.d.ts.map +1 -0
  283. package/dist/components/_shared/note-markdown.d.ts +3 -0
  284. package/dist/components/_shared/note-markdown.d.ts.map +1 -0
  285. package/dist/components/_shared/patient-field-row.d.ts +40 -0
  286. package/dist/components/_shared/patient-field-row.d.ts.map +1 -0
  287. package/dist/components/agenda-card/index.js +1 -1
  288. package/dist/components/agenda-tray/index.js +1 -1
  289. package/dist/components/ai-consent-banner/index.js +1 -1
  290. package/dist/components/ai-prompt-input/index.js +1 -1
  291. package/dist/components/alert/index.js +1 -1
  292. package/dist/components/anamnesis-card/index.js +1 -1
  293. package/dist/components/anamnesis-summary-card/index.js +1 -1
  294. package/dist/components/appointment-card/appointment-card.d.ts +36 -1
  295. package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
  296. package/dist/components/appointment-card/index.js +2 -2
  297. package/dist/components/appointment-timeline/appointment-timeline.d.ts +6 -0
  298. package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -1
  299. package/dist/components/appointment-timeline/index.js +1 -1
  300. package/dist/components/audio-recorder/index.js +1 -1
  301. package/dist/components/badge/index.js +1 -1
  302. package/dist/components/bishop-score/index.js +1 -1
  303. package/dist/components/bmi-calculator/index.js +1 -1
  304. package/dist/components/booking/index.js +1 -1
  305. package/dist/components/button/index.js +1 -1
  306. package/dist/components/button-group/button-group.d.ts +20 -0
  307. package/dist/components/button-group/button-group.d.ts.map +1 -1
  308. package/dist/components/button-group/index.js +1 -1
  309. package/dist/components/calendar/index.js +1 -1
  310. package/dist/components/calendar-event-card/index.js +1 -1
  311. package/dist/components/care-plan-card/index.js +1 -1
  312. package/dist/components/care-plan-entry-card/index.js +1 -1
  313. package/dist/components/care-plan-header/index.js +1 -1
  314. package/dist/components/carousel/index.js +1 -1
  315. package/dist/components/chart/index.js +1 -1
  316. package/dist/components/chat-input/index.js +1 -1
  317. package/dist/components/chat-message/index.js +1 -1
  318. package/dist/components/checkbox/index.js +1 -1
  319. package/dist/components/checkbox-group/index.js +1 -1
  320. package/dist/components/clinical-note-card/clinical-note-card.d.ts +2 -34
  321. package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -1
  322. package/dist/components/clinical-note-card/index.js +1 -1
  323. package/dist/components/connection-status/index.js +1 -1
  324. package/dist/components/contact-profile-card/index.js +1 -1
  325. package/dist/components/control-room-rail/index.js +1 -1
  326. package/dist/components/counter/counter.d.ts +6 -0
  327. package/dist/components/counter/counter.d.ts.map +1 -1
  328. package/dist/components/counter/index.js +1 -1
  329. package/dist/components/cycle-calculator/index.js +1 -1
  330. package/dist/components/dashboard-grid/index.js +1 -1
  331. package/dist/components/data-table/index.js +4 -4
  332. package/dist/components/data-table-tabs/index.js +1 -1
  333. package/dist/components/date-picker/index.js +1 -1
  334. package/dist/components/dependent-selector/index.js +1 -1
  335. package/dist/components/description-list/index.js +1 -1
  336. package/dist/components/document-preview/index.js +1 -1
  337. package/dist/components/document-scanner/index.js +1 -1
  338. package/dist/components/due-date-calculator/index.js +2 -2
  339. package/dist/components/editor-overlay/index.js +1 -1
  340. package/dist/components/entity-summary/index.js +1 -1
  341. package/dist/components/face-scheme/index.js +1 -1
  342. package/dist/components/fetal-weight/index.js +1 -1
  343. package/dist/components/field-array/index.js +1 -1
  344. package/dist/components/file-manager/index.js +1 -1
  345. package/dist/components/file-upload/index.js +1 -1
  346. package/dist/components/fiscal-code-input/index.js +1 -1
  347. package/dist/components/freemium-paywall/index.js +1 -1
  348. package/dist/components/gestational-age-calculator/index.js +1 -1
  349. package/dist/components/hcg-doubling/index.js +1 -1
  350. package/dist/components/header/index.js +1 -1
  351. package/dist/components/header-settings/index.js +1 -1
  352. package/dist/components/hover-card/hover-card.agent.d.ts +4 -0
  353. package/dist/components/hover-card/hover-card.agent.d.ts.map +1 -0
  354. package/dist/components/hover-card/hover-card.d.ts +80 -0
  355. package/dist/components/hover-card/hover-card.d.ts.map +1 -0
  356. package/dist/components/hover-card/index.d.ts +4 -0
  357. package/dist/components/hover-card/index.d.ts.map +1 -0
  358. package/dist/components/hover-card/index.js +6 -0
  359. package/dist/components/hover-card/index.js.map +1 -0
  360. package/dist/components/icon-button/index.js +1 -1
  361. package/dist/components/icon-button-group/index.js +1 -1
  362. package/dist/components/icon-picker/index.js +1 -1
  363. package/dist/components/index.d.ts +4 -0
  364. package/dist/components/index.d.ts.map +1 -1
  365. package/dist/components/info-tip/index.js +1 -1
  366. package/dist/components/key-value-pair/index.js +1 -1
  367. package/dist/components/key-value-pair/key-value-pair.d.ts +8 -1
  368. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  369. package/dist/components/locale-picker/index.js +1 -1
  370. package/dist/components/message-card/index.js +1 -1
  371. package/dist/components/message-tray/index.js +1 -1
  372. package/dist/components/multi-select/index.js +1 -1
  373. package/dist/components/note-timeline/index.d.ts +4 -0
  374. package/dist/components/note-timeline/index.d.ts.map +1 -0
  375. package/dist/components/note-timeline/index.js +6 -0
  376. package/dist/components/note-timeline/index.js.map +1 -0
  377. package/dist/components/note-timeline/note-timeline.agent.d.ts +4 -0
  378. package/dist/components/note-timeline/note-timeline.agent.d.ts.map +1 -0
  379. package/dist/components/note-timeline/note-timeline.d.ts +77 -0
  380. package/dist/components/note-timeline/note-timeline.d.ts.map +1 -0
  381. package/dist/components/notes-panel/index.js +1 -1
  382. package/dist/components/notification-card/index.js +1 -1
  383. package/dist/components/notification-tray/index.js +1 -1
  384. package/dist/components/operator-hero/index.js +1 -1
  385. package/dist/components/optical-prescription/index.js +1 -1
  386. package/dist/components/panel-header/index.js +1 -1
  387. package/dist/components/panel-header/panel-header.d.ts +7 -0
  388. package/dist/components/panel-header/panel-header.d.ts.map +1 -1
  389. package/dist/components/patient-details/index.js +1 -1
  390. package/dist/components/patient-details/patient-details.d.ts.map +1 -1
  391. package/dist/components/patient-search/index.js +1 -1
  392. package/dist/components/patient-summary-card/index.js +1 -1
  393. package/dist/components/patient-summary-card/patient-summary-card.d.ts +54 -0
  394. package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
  395. package/dist/components/patient-table/index.js +1 -1
  396. package/dist/components/payment-card/index.js +1 -1
  397. package/dist/components/payment-form/index.js +1 -1
  398. package/dist/components/pdf-viewer/index.js +1 -1
  399. package/dist/components/periodontal-chart/index.js +1 -1
  400. package/dist/components/periodontal-chart-card/index.js +1 -1
  401. package/dist/components/periodontal-diagnosis/index.js +1 -1
  402. package/dist/components/periodontal-risk-chart/index.js +1 -1
  403. package/dist/components/permission-matrix/index.js +1 -1
  404. package/dist/components/popover/index.js +1 -1
  405. package/dist/components/practice-profile-hero/index.js +1 -1
  406. package/dist/components/practice-results/index.js +1 -1
  407. package/dist/components/pregnancy-dating/index.js +1 -1
  408. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  409. package/dist/components/privacy-lock/index.js +1 -1
  410. package/dist/components/product-hub-tray/index.js +1 -1
  411. package/dist/components/public-header/index.js +1 -1
  412. package/dist/components/radio/index.js +1 -1
  413. package/dist/components/radio-group/index.js +2 -2
  414. package/dist/components/radiograph-panel/index.js +1 -1
  415. package/dist/components/reviews-panel/index.js +1 -1
  416. package/dist/components/rich-text-editor/index.js +1 -1
  417. package/dist/components/search-bar/index.js +1 -1
  418. package/dist/components/section-card/index.d.ts +4 -0
  419. package/dist/components/section-card/index.d.ts.map +1 -0
  420. package/dist/components/section-card/index.js +6 -0
  421. package/dist/components/section-card/index.js.map +1 -0
  422. package/dist/components/section-card/section-card.agent.d.ts +3 -0
  423. package/dist/components/section-card/section-card.agent.d.ts.map +1 -0
  424. package/dist/components/section-card/section-card.d.ts +30 -0
  425. package/dist/components/section-card/section-card.d.ts.map +1 -0
  426. package/dist/components/sheet/index.js +1 -1
  427. package/dist/components/sign-document/index.js +1 -1
  428. package/dist/components/signature-status-chip/index.js +1 -1
  429. package/dist/components/slot-grid/index.js +1 -1
  430. package/dist/components/streaming-text/index.js +1 -1
  431. package/dist/components/tab-bar/index.js +1 -1
  432. package/dist/components/tag/index.js +1 -1
  433. package/dist/components/task-tray/index.js +1 -1
  434. package/dist/components/tasks-panel/index.js +1 -1
  435. package/dist/components/theme-toggle/index.js +1 -1
  436. package/dist/components/timeline/index.js +1 -1
  437. package/dist/components/timeline/timeline.d.ts +1 -1
  438. package/dist/components/timeline/timeline.d.ts.map +1 -1
  439. package/dist/components/toast/index.js +1 -1
  440. package/dist/components/tool-rail/index.js +1 -1
  441. package/dist/components/tooltip/index.js +1 -1
  442. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  443. package/dist/components/tooth-scheme/index.js +1 -1
  444. package/dist/components/transaction-chip/index.js +1 -1
  445. package/dist/components/transaction-chip/transaction-chip.d.ts +11 -0
  446. package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -1
  447. package/dist/components/transcript-panel/index.js +1 -1
  448. package/dist/components/warning-stack/index.js +1 -1
  449. package/dist/components/widget-picker/index.js +1 -1
  450. package/dist/components/workflow/index.js +1 -1
  451. package/dist/components/workflow-status/index.d.ts +4 -0
  452. package/dist/components/workflow-status/index.d.ts.map +1 -0
  453. package/dist/components/workflow-status/index.js +7 -0
  454. package/dist/components/workflow-status/index.js.map +1 -0
  455. package/dist/components/workflow-status/workflow-status.agent.d.ts +4 -0
  456. package/dist/components/workflow-status/workflow-status.agent.d.ts.map +1 -0
  457. package/dist/components/workflow-status/workflow-status.d.ts +52 -0
  458. package/dist/components/workflow-status/workflow-status.d.ts.map +1 -0
  459. package/dist/host-compat.css +4 -1
  460. package/dist/i18n/locales/ar.d.ts +17 -0
  461. package/dist/i18n/locales/ar.d.ts.map +1 -1
  462. package/dist/i18n/locales/ar.js +18 -1
  463. package/dist/i18n/locales/ar.js.map +1 -1
  464. package/dist/i18n/locales/de.d.ts +17 -0
  465. package/dist/i18n/locales/de.d.ts.map +1 -1
  466. package/dist/i18n/locales/de.js +18 -1
  467. package/dist/i18n/locales/de.js.map +1 -1
  468. package/dist/i18n/locales/el.d.ts +17 -0
  469. package/dist/i18n/locales/el.d.ts.map +1 -1
  470. package/dist/i18n/locales/el.js +18 -1
  471. package/dist/i18n/locales/el.js.map +1 -1
  472. package/dist/i18n/locales/en.d.ts +17 -0
  473. package/dist/i18n/locales/en.d.ts.map +1 -1
  474. package/dist/i18n/locales/en.js +18 -1
  475. package/dist/i18n/locales/en.js.map +1 -1
  476. package/dist/i18n/locales/es.d.ts +17 -0
  477. package/dist/i18n/locales/es.d.ts.map +1 -1
  478. package/dist/i18n/locales/es.js +18 -1
  479. package/dist/i18n/locales/es.js.map +1 -1
  480. package/dist/i18n/locales/fr.d.ts +17 -0
  481. package/dist/i18n/locales/fr.d.ts.map +1 -1
  482. package/dist/i18n/locales/fr.js +18 -1
  483. package/dist/i18n/locales/fr.js.map +1 -1
  484. package/dist/i18n/locales/hi.d.ts +17 -0
  485. package/dist/i18n/locales/hi.d.ts.map +1 -1
  486. package/dist/i18n/locales/hi.js +18 -1
  487. package/dist/i18n/locales/hi.js.map +1 -1
  488. package/dist/i18n/locales/it.d.ts +20 -3
  489. package/dist/i18n/locales/it.d.ts.map +1 -1
  490. package/dist/i18n/locales/it.js +20 -3
  491. package/dist/i18n/locales/it.js.map +1 -1
  492. package/dist/i18n/locales/ja.d.ts +17 -0
  493. package/dist/i18n/locales/ja.d.ts.map +1 -1
  494. package/dist/i18n/locales/ja.js +18 -1
  495. package/dist/i18n/locales/ja.js.map +1 -1
  496. package/dist/i18n/locales/nl.d.ts +17 -0
  497. package/dist/i18n/locales/nl.d.ts.map +1 -1
  498. package/dist/i18n/locales/nl.js +18 -1
  499. package/dist/i18n/locales/nl.js.map +1 -1
  500. package/dist/i18n/locales/pl.d.ts +17 -0
  501. package/dist/i18n/locales/pl.d.ts.map +1 -1
  502. package/dist/i18n/locales/pl.js +18 -1
  503. package/dist/i18n/locales/pl.js.map +1 -1
  504. package/dist/i18n/locales/pt.d.ts +17 -0
  505. package/dist/i18n/locales/pt.d.ts.map +1 -1
  506. package/dist/i18n/locales/pt.js +18 -1
  507. package/dist/i18n/locales/pt.js.map +1 -1
  508. package/dist/i18n/locales/ro.d.ts +17 -0
  509. package/dist/i18n/locales/ro.d.ts.map +1 -1
  510. package/dist/i18n/locales/ro.js +18 -1
  511. package/dist/i18n/locales/ro.js.map +1 -1
  512. package/dist/i18n/locales/ru.d.ts +17 -0
  513. package/dist/i18n/locales/ru.d.ts.map +1 -1
  514. package/dist/i18n/locales/ru.js +18 -1
  515. package/dist/i18n/locales/ru.js.map +1 -1
  516. package/dist/i18n/locales/sq.d.ts +17 -0
  517. package/dist/i18n/locales/sq.d.ts.map +1 -1
  518. package/dist/i18n/locales/sq.js +18 -1
  519. package/dist/i18n/locales/sq.js.map +1 -1
  520. package/dist/i18n/locales/sv.d.ts +17 -0
  521. package/dist/i18n/locales/sv.d.ts.map +1 -1
  522. package/dist/i18n/locales/sv.js +18 -1
  523. package/dist/i18n/locales/sv.js.map +1 -1
  524. package/dist/i18n/locales/tr.d.ts +17 -0
  525. package/dist/i18n/locales/tr.d.ts.map +1 -1
  526. package/dist/i18n/locales/tr.js +18 -1
  527. package/dist/i18n/locales/tr.js.map +1 -1
  528. package/dist/i18n/locales/zh.d.ts +17 -0
  529. package/dist/i18n/locales/zh.d.ts.map +1 -1
  530. package/dist/i18n/locales/zh.js +18 -1
  531. package/dist/i18n/locales/zh.js.map +1 -1
  532. package/dist/index.js +929 -916
  533. package/dist/index.js.map +1 -1
  534. package/dist/locales/ar.json +18 -1
  535. package/dist/locales/de.json +18 -1
  536. package/dist/locales/el.json +18 -1
  537. package/dist/locales/en.json +18 -1
  538. package/dist/locales/es.json +18 -1
  539. package/dist/locales/fr.json +18 -1
  540. package/dist/locales/hi.json +18 -1
  541. package/dist/locales/it.json +20 -3
  542. package/dist/locales/ja.json +18 -1
  543. package/dist/locales/nl.json +18 -1
  544. package/dist/locales/pl.json +18 -1
  545. package/dist/locales/pt.json +18 -1
  546. package/dist/locales/ro.json +18 -1
  547. package/dist/locales/ru.json +18 -1
  548. package/dist/locales/sq.json +18 -1
  549. package/dist/locales/sv.json +18 -1
  550. package/dist/locales/tr.json +18 -1
  551. package/dist/locales/zh.json +18 -1
  552. package/dist/patterns/alia-assistant/index.js +1 -1
  553. package/dist/patterns/anamnesis/index.js +1 -1
  554. package/dist/patterns/calendar/calendar.model.d.ts +2 -0
  555. package/dist/patterns/calendar/calendar.model.d.ts.map +1 -1
  556. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
  557. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
  558. package/dist/patterns/calendar/index.js +1 -1
  559. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  560. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  561. package/dist/patterns/signature-request/index.js +1 -1
  562. package/dist/tokens.css +1 -1
  563. package/package.json +17 -1
  564. package/dist/_chunks/appointment-card-D6mk39NB.js +0 -296
  565. package/dist/_chunks/appointment-card-D6mk39NB.js.map +0 -1
  566. package/dist/_chunks/appointment-timeline-D-V97Bhc.js +0 -403
  567. package/dist/_chunks/appointment-timeline-D-V97Bhc.js.map +0 -1
  568. package/dist/_chunks/button-group-CaxRJsNG.js +0 -289
  569. package/dist/_chunks/button-group-CaxRJsNG.js.map +0 -1
  570. package/dist/_chunks/calendar-event-card-DSh-69HT.js.map +0 -1
  571. package/dist/_chunks/calendar-workspace-4NH1Z47_.js.map +0 -1
  572. package/dist/_chunks/clinical-note-card-CTRzmqvv.js +0 -438
  573. package/dist/_chunks/clinical-note-card-CTRzmqvv.js.map +0 -1
  574. package/dist/_chunks/counter-dRlTNC_y.js.map +0 -1
  575. package/dist/_chunks/entity-card-DmrgYSEX.js.map +0 -1
  576. package/dist/_chunks/field-value-BetdWMA2.js +0 -384
  577. package/dist/_chunks/field-value-BetdWMA2.js.map +0 -1
  578. package/dist/_chunks/file-upload-CwxdqkMK.js.map +0 -1
  579. package/dist/_chunks/key-value-pair-BIBdZBLg.js.map +0 -1
  580. package/dist/_chunks/panel-header-D313n_9-.js +0 -105
  581. package/dist/_chunks/panel-header-D313n_9-.js.map +0 -1
  582. package/dist/_chunks/patient-details-BGiawUHd.js +0 -760
  583. package/dist/_chunks/patient-details-BGiawUHd.js.map +0 -1
  584. package/dist/_chunks/patient-summary-card--CT_gbaQ.js +0 -454
  585. package/dist/_chunks/patient-summary-card--CT_gbaQ.js.map +0 -1
  586. package/dist/_chunks/payment-automation-upsell-DwQW2fRp.js.map +0 -1
  587. package/dist/_chunks/timeline-Bs9Erxlo.js.map +0 -1
  588. package/dist/_chunks/tooltip-DvmfrNvB.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"warning-stack-DQz0Jyir.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":";;;;;;;;;;AAsCA,MAAMA,KAAgBC;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA;AAAA;AAAA;AAAA,MAIR,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GASMC,KAAe;AAAA,EACnB;AAAA,EACA;AAAA,EACA;AACF,EAAE,KAAK,GAAG,GAEJC,KAAiB;AAAA,EACrB;AACF,EAAE,KAAK,GAAG,GAiBJC,KAAsB;AAI5B,SAASC,KAAkC;AACzC,MAAI,OAAO,SAAW,IAAa,QAAO;AAI1C,QAAMC,IAHM,OACT,iBAAiB,SAAS,eAAe,EACzC,iBAAiB,sBAAsB,EACtB,KAAA,GACdC,IAAI,WAAWD,CAAO;AAC5B,SAAK,OAAO,SAASC,CAAC,IACfD,EAAQ,SAAS,IAAI,IAAIC,IAAIA,IAAI,MADR;AAElC;AAIA,SAASC,GAAmBC,GAAoBC,GAA0B;AACxE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACAD,IAAY,uBAAuB;AAAA,IACnCC,IAAU,8BAA8B;AAAA,EAAA,EAEvC,OAAO,OAAO,EACd,KAAK,GAAG;AACb;AAKA,SAASC,GAAmBF,GAAoBG,GAA0B;AACxE,SAAO;AAAA,IACL;AAAA,IACA;AAAA,IACA;AAAA,IACAH,IAAY,oCAAoC;AAAA,IAChDG,IAAU,2BAA2B;AAAA,EAAA,EAEpC,OAAO,OAAO,EACd,KAAK,GAAG;AACb;AA8CO,MAAMC,KAAeC;AAAA,EAC1B,CACE;AAAA,IACE,OAAAC;AAAA,IACA,OAAAC;AAAA,IACA,aAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,kBAAAC,IAAmB;AAAA,IACnB,WAAAC;AAAA,IACA,UAAAC,IAAW;AAAA,IACX,cAAAC;AAAA,IACA,iBAAAC;AAAA,IACA,SAAAb,IAAU;AAAA,IACV,WAAAc;AAAA,IACA,YAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,GAAA,GACRC,IAAUC,EAAA,GACVC,IAASD,EAAA,GAMT,CAACE,GAAcC,CAAe,IAAIC;AAAA,MACtC,0BAAU,IAAA;AAAA,IAAI;AAEhB,IAAAC,EAAU,MAAM;AACd,MAAAF,EAAgB,CAACG,MAAS;AACxB,YAAIA,EAAK,SAAS,EAAG,QAAOA;AAC5B,cAAMC,IAAM,IAAI,IAAIxB,EAAM,IAAI,CAACyB,MAASA,EAAK,EAAE,CAAC,GAC1CC,IAAO,IAAI,IAAI,CAAC,GAAGH,CAAI,EAAE,OAAO,CAACI,MAAOH,EAAI,IAAIG,CAAE,CAAC,CAAC;AAC1D,eAAOD,EAAK,SAASH,EAAK,OAAOA,IAAOG;AAAA,MAC1C,CAAC;AAAA,IACH,GAAG,CAAC1B,CAAK,CAAC;AAEV,UAAM4B,IAAYC;AAAA,MAChB,MAAM7B,EAAM,OAAO,CAACyB,MAAS,CAACN,EAAa,IAAIM,EAAK,EAAE,CAAC;AAAA,MACvD,CAACzB,GAAOmB,CAAY;AAAA,IAAA,GAGhBW,IAAW3B,MAAe,UAAayB,EAAU,SAASzB,GAC1D,CAACT,GAAWqC,CAAY,IAAIV,EAASjB,CAAgB,GAGrD4B,IAAUC,EAAuB,IAAI,GACrCC,IAAeD,EAAeL,EAAU,MAAM;AAEpD,IAAAN,EAAU,MAAM;AACd,UAAI,CAACU,EAAQ,QAAS;AACtB,YAAMT,IAAOW,EAAa,SACpBR,IAAOE,EAAU;AACvB,MAAIL,MAASG,MACXM,EAAQ,QAAQ,cAAclB,EAAE,6BAA6B;AAAA,QAC3D,OAAOY;AAAA,QACP,cAAc;AAAA,MAAA,CACf,IAEHQ,EAAa,UAAUR;AAAA,IACzB,GAAG,CAACE,EAAU,QAAQd,CAAC,CAAC;AAExB,UAAMqB,IAAUN,EAAQ,MAClB,CAACC,KAAY,CAACpC,IAAkBkC,IAC7BA,EAAU,MAAM,GAAGzB,CAAU,GACnC,CAACyB,GAAWE,GAAUpC,GAAWS,CAAU,CAAC,GAEzCiC,IAAcN,IAAWF,EAAU,UAAUzB,KAAc,KAAK,GAGhEkC,IAAWT,EAAU,SAAS,GAC9BU,IAAgB5B,KAAc,MAG9B6B,IAAUF,KAAYC,GAStB,CAACE,GAAOC,CAAQ,IAAIpB,EAAoBkB,IAAU,SAAS,QAAQ,GAEnE,CAACG,GAAUC,CAAW,IAAItB,EAAS,EAAK;AAE9C,IAAAuB,GAA0B,MAAM;AAC9B,MAAIL,IACEC,MAAU,YAERA,MAAU,aAAaA,MAAU,eAAsB,EAAI,GAC/DC,EAAS,MAAM,KAERD,MAAU,UACnBC,EAAS,UAAU;AAAA,IAEvB,GAAG,CAACF,GAASC,CAAK,CAAC,GAInBlB,EAAU,MAAM;AACd,UAAIkB,MAAU,WAAY;AAC1B,YAAMK,IAAM,OAAO,sBAAsB,MAAMJ,EAAS,SAAS,CAAC;AAClE,aAAO,MAAM,OAAO,qBAAqBI,CAAG;AAAA,IAC9C,GAAG,CAACL,CAAK,CAAC,GASVlB,EAAU,MAAM;AACd,UAAIkB,MAAU,UAAW;AACzB,YAAMM,IAAQ,KAAK,IAAIxD,GAAA,GAA2BD,EAAmB,GAC/DsC,IAAK,OAAO,WAAW,MAAMc,EAAS,QAAQ,GAAGK,CAAK;AAC5D,aAAO,MAAM,OAAO,aAAanB,CAAE;AAAA,IACrC,GAAG,CAACa,CAAK,CAAC,GAIVlB,EAAU,MAAM;AACd,UAAI,CAACoB,EAAU;AACf,YAAMG,IAAM,OAAO,sBAAsB,MAAMF,EAAY,EAAK,CAAC;AACjE,aAAO,MAAM,OAAO,qBAAqBE,CAAG;AAAA,IAC9C,GAAG,CAACH,CAAQ,CAAC;AAEb,UAAM7C,IAAU2C,MAAU,WACpBO,IAAgBlD,KAAW6C,GAC3BM,IAAUT,KAAWC,MAAU,cAAcA,MAAU,WAMvDS,IAAahB,EAA2B,IAAI,GAC5CiB,KAAgBC;AAAA,MACpB,CAACC,MAA6B;AAC5B,QAAAH,EAAW,UAAUG,GACjB,OAAOvC,KAAQ,aACjBA,EAAIuC,CAA6B,IACxBvC,MACRA,EAAgD,UAC/CuC;AAAA,MAEN;AAAA,MACA,CAACvC,CAAG;AAAA,IAAA,GAEAwC,IAAuBpB,EAAsB,IAAI;AAIvD,IAAAX,EAAU,MAAM;AACd,UAAI+B,EAAqB,YAAY,KAAM;AAC3C,YAAMC,IAAQD,EAAqB;AACnC,MAAAA,EAAqB,UAAU;AAC/B,YAAME,IAAUN,EAAW;AAC3B,UAAI,CAACM,EAAS;AACd,YAAMC,IAAkB,MAAM;AAAA,QAC5BD,EAAQ,iBAAoC,sBAAsB;AAAA,MAAA,GAE9DE,IACJD,EAAgB,KAAK,IAAIF,GAAOE,EAAgB,SAAS,CAAC,CAAC;AAC7D,MAAIC,MAAe,MAAA,IAMVnB,OAAuB,MAAA;AAAA,IAClC,CAAC;AAED,UAAMoB,KAAgBP;AAAA,MACpB,CAAC1B,GAAwB6B,MAAkB,CAACK,MAAkB;AAC5D,QAAIA,MACJN,EAAqB,UAAUC,GAC/BlC,EAAgB,CAACG,MAAS,IAAI,IAAIA,CAAI,EAAE,IAAIE,EAAK,EAAE,CAAC,GACpDpB,KAAA,QAAAA,EAAYoB;AAAA,MACd;AAAA,MACA,CAACpB,CAAS;AAAA,IAAA,GAONuD,KAAmBT,EAAY,MAAM;AACzC,MAAA/B,EAAgB,CAACG,MAAS;AACxB,cAAMG,IAAO,IAAI,IAAIH,CAAI;AACzB,mBAAWE,KAAQG,EAAW,CAAAF,EAAK,IAAID,EAAK,EAAE;AAC9C,eAAOC;AAAA,MACT,CAAC,GACDnB,KAAA,QAAAA;AAAA,IACF,GAAG,CAACqB,GAAWrB,CAAY,CAAC,GAEtBsD,KAASV,EAAY,MAAMpB,EAAa,CAAC+B,MAAM,CAACA,CAAC,GAAG,EAAE,GAEtDC,KAActD,KAAaK,EAAE,4BAA4B,UAAU,GAOnEkD,IAAa/D,IACjB,gBAAAgE,EAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,MAAA,gBAAAC;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,IAAIlD;AAAA,UACJ,WAAU;AAAA,UAET,UAAAf;AAAA,QAAA;AAAA,MAAA;AAAA,MAEFC,IACC,gBAAAgE,EAAC,KAAA,EAAE,WAAU,gEACV,aACH,IACE;AAAA,IAAA,EAAA,CACN,IAEA,gBAAAA,EAAC,MAAA,EAAG,IAAIlD,GAAS,WAAU,cACxB,UAAA+C,IACH,GAIII,KADiB7D,KAAY+B,IAEjC,gBAAA4B,EAAC,OAAA,EAAI,WAAU,wEACZ,UAAA;AAAA,MAAAD;AAAA,MACD,gBAAAE;AAAA,QAACE;AAAA,QAAA;AAAA,UACC,MAAK;AAAA,UACL,MAAM,gBAAAF,EAACG,IAAA,EAAE,eAAY,OAAA,CAAO;AAAA,UAC5B,QAAO;AAAA,UACP,MAAK;AAAA,UACL,cACE7D,KACAM,EAAE,2BAA2B,qBAAqB;AAAA,UAEpD,SAAS8C;AAAA,UAGT,WAAU;AAAA,QAAA;AAAA,MAAA;AAAA,IACZ,EAAA,CACF,IAEAI;AAMF,WAAKhB;AAAA;AAAA;AAAA,MAKH,gBAAAkB;AAAA,QAAC;AAAA,QAAA;AAAA,UACC,kBAAe;AAAA,UACf,WAAWzE,GAAmBsD,GAAepD,CAAO;AAAA,UAGpD,4BAAC,OAAA,EAAI,WAAWC,GAAmBmD,GAAelD,CAAO,GACvD,UAAA,gBAAAoE;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAKf;AAAA,cACL,mBAAiBlC;AAAA,cAGjB,UAAU;AAAA,cACV,WAAW,CAAC/B,GAAc,EAAE,SAAAU,GAAS,GAAGgB,CAAS,EAC9C,OAAO,OAAO,EACd,KAAK,GAAG;AAAA,cACV,GAAGC;AAAA,cAEH,UAAA;AAAA,gBAAAuD;AAAA,gBAGC7B,IAOE,OANF,gBAAA4B;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,KAAKlC;AAAA,oBACL,aAAU;AAAA,oBACV,eAAY;AAAA,oBACZ,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGbK,IACC,gBAAA4B,EAAAK,IAAA,EAGE,UAAA;AAAA,kBAAA,gBAAAJ,EAAC,OAAA,EAAI,WAAU,+BACb,UAAA,gBAAAA;AAAA,oBAAC;AAAA,oBAAA;AAAA,sBACC,IAAIhD;AAAA,sBACJ,WAAW/B;AAAA,sBAGX,cAAY2B,EAAE,0BAA0B,SAAS;AAAA,sBAEhD,UAAAqB,EAAQ,IAAI,CAACV,GAAM6B,MAAU;AAC5B,8BAAMiB,IAAU9C,EAAK,WAAW;AAChC;AAAA;AAAA;AAAA;AAAA,0BAIE,gBAAAyC,EAAC,MAAA,EAAiB,mBAAiBzC,EAAK,IACtC,UAAA,gBAAAwC;AAAA,4BAACO;AAAA,4BAAA;AAAA,8BACC,SAAAD;AAAA,8BACA,aAAa9C,EAAK;AAAA,8BAClB,MAAMA,EAAK;AAAA,8BACX,cAAciC,GAAcjC,GAAM6B,CAAK;AAAA,8BAIvC,OAAK;AAAA,8BAEL,WAAU;AAAA,8BAKV,UAAA;AAAA,gCAAA,gBAAAY,EAACM,EAAM,OAAN,EAAY,IAAG,MAAM,YAAK,OAAM;AAAA,gCAChC/C,EAAK,cACJ,gBAAAyC,EAACM,EAAM,aAAN,EACE,UAAA/C,EAAK,aACR,IACE;AAAA,gCACHA,EAAK,UACJ,gBAAAyC,EAACM,EAAM,QAAN,EAAc,UAAA/C,EAAK,SAAQ,IAC1B;AAAA,8BAAA;AAAA,4BAAA;AAAA,0BAAA,EACN,GAzBOA,EAAK,EA0Bd;AAAA;AAAA,sBAEJ,CAAC;AAAA,oBAAA;AAAA,kBAAA,GAEL;AAAA,kBAECK,IACC,gBAAAmC;AAAA,oBAACQ;AAAA,oBAAA;AAAA,sBACC,MAAK;AAAA,sBACL,QAAO;AAAA,sBACP,MAAK;AAAA,sBACL,iBAAe,CAAC/E;AAAA,sBAChB,iBAAewB;AAAA,sBACf,SAAS2C;AAAA,sBACT,WAAWzE;AAAA,sBAEX,UAAA;AAAA,wBAAA,gBAAA8E;AAAA,0BAACQ;AAAA,0BAAA;AAAA,4BACC,eAAY;AAAA,4BACZ,WAAW;AAAA,8BACT;AAAA,8BACAhF,IAAY,KAAK;AAAA,4BAAA,EACjB,KAAK,GAAG;AAAA,0BAAA;AAAA,wBAAA;AAAA,wBAEXA,IACGoB,EAAE,yBAAyB;AAAA,0BACzB,OAAOsB;AAAA,0BACP,cAAc;AAAA,wBAAA,CACf,IACDtB,EAAE,yBAAyB,WAAW;AAAA,sBAAA;AAAA,oBAAA;AAAA,kBAAA,IAE1C;AAAA,gBAAA,EAAA,CACN,IAEAJ;AAAA,cAAA;AAAA,YAAA;AAAA,UAAA,EAEJ,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,QAjHiB;AAAA,EAoHvB;AACF;AAEAZ,GAAa,cAAc;"}
1
+ {"version":3,"file":"warning-stack-BW5Dwb3z.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,7 +4,7 @@ import { c as _ } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as j } from "react-i18next";
5
5
  import { D as l } from "./dialog-BJiLqhx6.js";
6
6
  import { T as z } from "./text-input-CUvCb6ST.js";
7
- import { B as C } from "./badge-sTusUqZD.js";
7
+ import { B as C } from "./badge-BudgzTe_.js";
8
8
  import { u as I } from "./registry-DvAUVLHh.js";
9
9
  import { S as L } from "./search-QbWPlY5f.js";
10
10
  const R = {
@@ -190,4 +190,4 @@ export {
190
190
  B as W,
191
191
  R as w
192
192
  };
193
- //# sourceMappingURL=widget-picker-DvUkBemi.js.map
193
+ //# sourceMappingURL=widget-picker-B1sj6uyf.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"widget-picker-DvUkBemi.js","sources":["../../src/components/widget-picker/widget-picker.agent.ts","../../src/components/widget-picker/widget-picker.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { WidgetPickerHandle } from './widget-picker';\n\nexport const widgetPickerAgent: AgentAdapter<WidgetPickerHandle> = {\n id: 'widget-picker',\n capabilities: ['pick'],\n state: {\n open: {\n type: 'boolean',\n descriptionKey: 'ui.agent.widgetPicker.state.open',\n description: 'Whether the picker dialog is currently open.',\n read: (handle) => handle.getPickerState().open,\n },\n items: {\n type: '{ id: string, disabled: boolean }[]',\n descriptionKey: 'ui.agent.widgetPicker.state.items',\n description:\n 'Widget-type ids on offer and whether each is pickable. Ids only — titles are host-app strings.',\n read: (handle) => handle.getPickerState().items,\n },\n },\n actions: {\n pick_widget: {\n // Picking adds a widget to the host dashboard — a write, reversible\n // by removing the widget again.\n safety: 'write',\n argsType: 'id',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Widget-type id (see items state).',\n },\n },\n required: ['id'],\n },\n returns: 'boolean (accepted)',\n returnsSchema: {\n type: 'boolean',\n description:\n 'True when the pick was applied; false when the picker is closed, the id is unknown, or the item is disabled.',\n },\n idempotent: false,\n descriptionKey: 'ui.agent.widgetPicker.actions.pickWidget',\n description:\n 'Pick a widget type from the open catalogue. The picker closes and the host adds the widget. Refused while the dialog is closed and for disabled items.',\n invoke: (handle, args: { id: string }) => handle.pick(args.id),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'widget-picker' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-widget-type-id',\n description: 'Each option tile carries its widget-type id.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* WidgetPicker — \"add a widget\" modal for configurable dashboards. */\n/* */\n/* A Dialog-composed catalogue picker: the consumer supplies the */\n/* available widget types (title/description/icon/category, all */\n/* pre-translated app strings), the kit renders a searchable, grouped */\n/* grid of option tiles and reports the pick. Designed as the add flow */\n/* for `DashboardGrid` (`onRequestAdd` opens it) but generic to any */\n/* pick-one-catalogue surface. Disabled items stay visible with an */\n/* optional badge (e.g. \"Requires reconnect\") so users can discover */\n/* locked capabilities. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport { Dialog } from '../dialog';\nimport { TextInput } from '../text-input';\nimport { Badge } from '../badge';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { widgetPickerAgent } from './widget-picker.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface WidgetPickerItem {\n /** Stable widget-type id reported via `onPick`. */\n id: string;\n /** Visible name (consumer-translated). */\n title: string;\n /** One-line explanation (consumer-translated). */\n description?: string;\n /** Small illustrative icon. */\n icon?: ReactNode;\n /** Group heading (consumer-translated). Ungrouped items render first. */\n category?: string;\n /** Visible but not pickable. */\n disabled?: boolean;\n /** Short annotation rendered as a badge (e.g. \"Requires reconnect\"). */\n badge?: string;\n}\n\nexport interface WidgetPickerProps {\n /** Controlled visibility. */\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** The catalogue. */\n items: WidgetPickerItem[];\n /**\n * Called with the picked item id; the picker then closes itself via\n * `onOpenChange(false)`.\n */\n onPick: (id: string) => void;\n /** Dialog title. Defaults to the kit's translated \"Add a widget\". */\n title?: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n}\n\nexport interface WidgetPickerHandle {\n /**\n * Pick an item programmatically. False when the picker is closed, the id\n * is unknown, or the item is disabled.\n */\n pick: (id: string) => boolean;\n getPickerState: () => {\n open: boolean;\n items: Array<{ id: string; disabled: boolean }>;\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst tileVariants = cva(\n [\n 'ds:flex ds:w-full ds:min-h-[var(--min-target-size)] ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-[var(--card)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]',\n 'ds:text-start ds:transition-colors',\n 'ds:hover:bg-muted/10',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed ds:disabled:hover:bg-transparent',\n ].join(' '),\n { variants: {}, defaultVariants: {} },\n);\n\n/* ------------------------------------------------------------------ */\n/* WidgetPicker */\n/* ------------------------------------------------------------------ */\n\nexport const WidgetPicker = forwardRef<WidgetPickerHandle, WidgetPickerProps>(\n ({ open, onOpenChange, items, onPick, title, id }, ref) => {\n const { t } = useTranslation();\n const [query, setQuery] = useState('');\n\n // Clear the search when the picker closes, so the next open starts fresh\n // without a post-open reflow flash.\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const filtered = useMemo(() => {\n const needle = query.trim().toLowerCase();\n if (!needle) return items;\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(needle) ||\n (item.description ?? '').toLowerCase().includes(needle),\n );\n }, [items, query]);\n\n /* Group by category, preserving first-seen order; ungrouped first. */\n const groups = useMemo(() => {\n const order: Array<{\n category: string | null;\n entries: WidgetPickerItem[];\n }> = [];\n for (const item of filtered) {\n // Treat an empty-string category the same as no category.\n const key = item.category || null;\n let group = order.find((g) => g.category === key);\n if (!group) {\n group = { category: key, entries: [] };\n if (key === null) order.unshift(group);\n else order.push(group);\n }\n group.entries.push(item);\n }\n return order;\n }, [filtered]);\n\n const handlePick = useCallback(\n (itemId: string) => {\n onPick(itemId);\n onOpenChange(false);\n },\n [onPick, onOpenChange],\n );\n\n const agentHandle = useMemo<WidgetPickerHandle>(\n () => ({\n pick(itemId) {\n if (!open) return false;\n const item = items.find((entry) => entry.id === itemId);\n if (!item || item.disabled) return false;\n handlePick(itemId);\n return true;\n },\n getPickerState() {\n return {\n open,\n items: items.map((item) => ({\n id: item.id,\n disabled: Boolean(item.disabled),\n })),\n };\n },\n }),\n [open, items, handlePick],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(widgetPickerAgent, agentHandle, id);\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content size=\"lg\">\n <div data-component=\"widget-picker\" data-component-id={id}>\n <Dialog.Title>{title ?? t('widgetPicker.title')}</Dialog.Title>\n <Dialog.Description className=\"ds:sr-only\">\n {t('widgetPicker.description')}\n </Dialog.Description>\n <div className=\"ds:mt-[var(--spacing-sm)]\">\n <TextInput\n aria-label={t('widgetPicker.searchLabel')}\n placeholder={t('widgetPicker.searchPlaceholder')}\n startAdornment={<Search aria-hidden=\"true\" />}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </div>\n <div\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- scrollable catalogue needs a keyboard tab stop so an all-disabled, overflowing list stays scrollable (axe scrollable-region-focusable)\n tabIndex={0}\n className=\"ds:mt-[var(--spacing-md)] ds:flex ds:max-h-[60vh] ds:flex-col ds:gap-[var(--spacing-md)] ds:overflow-y-auto ds:pe-[var(--spacing-xs)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n {groups.length === 0 ? (\n <p\n role=\"status\"\n className=\"ds:py-[var(--spacing-lg)] ds:text-center ds:text-sm ds:text-muted-foreground\"\n >\n {items.length === 0\n ? t('widgetPicker.none')\n : t('widgetPicker.empty')}\n </p>\n ) : (\n groups.map((group) => (\n <section\n key={group.category ?? '__ungrouped__'}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {group.category ? (\n <h3 className=\"ds:text-xs ds:font-semibold ds:uppercase ds:tracking-wide ds:text-muted-foreground\">\n {group.category}\n </h3>\n ) : null}\n <div className=\"ds:grid ds:gap-[var(--spacing-sm)] ds:sm:grid-cols-2\">\n {group.entries.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handlePick(item.id)}\n className={tileVariants()}\n data-widget-type-id={item.id}\n >\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:size-5 ds:shrink-0 ds:items-center ds:justify-center ds:text-muted-foreground ds:[&_svg]:size-5\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span className=\"ds:truncate ds:text-sm ds:font-medium\">\n {item.title}\n </span>\n {item.badge ? (\n <Badge variant=\"info\" size=\"sm\">\n {item.badge}\n </Badge>\n ) : null}\n </span>\n {item.description ? (\n <span className=\"ds:text-xs ds:text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n </span>\n </button>\n ))}\n </div>\n </section>\n ))\n )}\n </div>\n </div>\n </Dialog.Content>\n </Dialog.Root>\n );\n },\n);\n\nWidgetPicker.displayName = 'WidgetPicker';\n"],"names":["widgetPickerAgent","handle","args","tileVariants","cva","WidgetPicker","forwardRef","open","onOpenChange","items","onPick","title","id","ref","t","useTranslation","query","setQuery","useState","useEffect","filtered","useMemo","needle","item","groups","order","key","group","g","handlePick","useCallback","itemId","agentHandle","entry","useImperativeHandle","useAgentRegistration","Dialog","jsx","jsxs","TextInput","Search","event","Badge"],"mappings":"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"}
1
+ {"version":3,"file":"widget-picker-B1sj6uyf.js","sources":["../../src/components/widget-picker/widget-picker.agent.ts","../../src/components/widget-picker/widget-picker.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { WidgetPickerHandle } from './widget-picker';\n\nexport const widgetPickerAgent: AgentAdapter<WidgetPickerHandle> = {\n id: 'widget-picker',\n capabilities: ['pick'],\n state: {\n open: {\n type: 'boolean',\n descriptionKey: 'ui.agent.widgetPicker.state.open',\n description: 'Whether the picker dialog is currently open.',\n read: (handle) => handle.getPickerState().open,\n },\n items: {\n type: '{ id: string, disabled: boolean }[]',\n descriptionKey: 'ui.agent.widgetPicker.state.items',\n description:\n 'Widget-type ids on offer and whether each is pickable. Ids only — titles are host-app strings.',\n read: (handle) => handle.getPickerState().items,\n },\n },\n actions: {\n pick_widget: {\n // Picking adds a widget to the host dashboard — a write, reversible\n // by removing the widget again.\n safety: 'write',\n argsType: 'id',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Widget-type id (see items state).',\n },\n },\n required: ['id'],\n },\n returns: 'boolean (accepted)',\n returnsSchema: {\n type: 'boolean',\n description:\n 'True when the pick was applied; false when the picker is closed, the id is unknown, or the item is disabled.',\n },\n idempotent: false,\n descriptionKey: 'ui.agent.widgetPicker.actions.pickWidget',\n description:\n 'Pick a widget type from the open catalogue. The picker closes and the host adds the widget. Refused while the dialog is closed and for disabled items.',\n invoke: (handle, args: { id: string }) => handle.pick(args.id),\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'widget-picker' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-widget-type-id',\n description: 'Each option tile carries its widget-type id.',\n },\n },\n};\n","/* ------------------------------------------------------------------ */\n/* WidgetPicker — \"add a widget\" modal for configurable dashboards. */\n/* */\n/* A Dialog-composed catalogue picker: the consumer supplies the */\n/* available widget types (title/description/icon/category, all */\n/* pre-translated app strings), the kit renders a searchable, grouped */\n/* grid of option tiles and reports the pick. Designed as the add flow */\n/* for `DashboardGrid` (`onRequestAdd` opens it) but generic to any */\n/* pick-one-catalogue surface. Disabled items stay visible with an */\n/* optional badge (e.g. \"Requires reconnect\") so users can discover */\n/* locked capabilities. */\n/* ------------------------------------------------------------------ */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useState,\n type ReactNode,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Search } from 'lucide-react';\nimport { Dialog } from '../dialog';\nimport { TextInput } from '../text-input';\nimport { Badge } from '../badge';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { widgetPickerAgent } from './widget-picker.agent';\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport interface WidgetPickerItem {\n /** Stable widget-type id reported via `onPick`. */\n id: string;\n /** Visible name (consumer-translated). */\n title: string;\n /** One-line explanation (consumer-translated). */\n description?: string;\n /** Small illustrative icon. */\n icon?: ReactNode;\n /** Group heading (consumer-translated). Ungrouped items render first. */\n category?: string;\n /** Visible but not pickable. */\n disabled?: boolean;\n /** Short annotation rendered as a badge (e.g. \"Requires reconnect\"). */\n badge?: string;\n}\n\nexport interface WidgetPickerProps {\n /** Controlled visibility. */\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** The catalogue. */\n items: WidgetPickerItem[];\n /**\n * Called with the picked item id; the picker then closes itself via\n * `onOpenChange(false)`.\n */\n onPick: (id: string) => void;\n /** Dialog title. Defaults to the kit's translated \"Add a widget\". */\n title?: string;\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n}\n\nexport interface WidgetPickerHandle {\n /**\n * Pick an item programmatically. False when the picker is closed, the id\n * is unknown, or the item is disabled.\n */\n pick: (id: string) => boolean;\n getPickerState: () => {\n open: boolean;\n items: Array<{ id: string; disabled: boolean }>;\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst tileVariants = cva(\n [\n 'ds:flex ds:w-full ds:min-h-[var(--min-target-size)] ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-[var(--card)]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-md)]',\n 'ds:text-start ds:transition-colors',\n 'ds:hover:bg-muted/10',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:opacity-50 ds:disabled:cursor-not-allowed ds:disabled:hover:bg-transparent',\n ].join(' '),\n { variants: {}, defaultVariants: {} },\n);\n\n/* ------------------------------------------------------------------ */\n/* WidgetPicker */\n/* ------------------------------------------------------------------ */\n\nexport const WidgetPicker = forwardRef<WidgetPickerHandle, WidgetPickerProps>(\n ({ open, onOpenChange, items, onPick, title, id }, ref) => {\n const { t } = useTranslation();\n const [query, setQuery] = useState('');\n\n // Clear the search when the picker closes, so the next open starts fresh\n // without a post-open reflow flash.\n useEffect(() => {\n if (!open) setQuery('');\n }, [open]);\n\n const filtered = useMemo(() => {\n const needle = query.trim().toLowerCase();\n if (!needle) return items;\n return items.filter(\n (item) =>\n item.title.toLowerCase().includes(needle) ||\n (item.description ?? '').toLowerCase().includes(needle),\n );\n }, [items, query]);\n\n /* Group by category, preserving first-seen order; ungrouped first. */\n const groups = useMemo(() => {\n const order: Array<{\n category: string | null;\n entries: WidgetPickerItem[];\n }> = [];\n for (const item of filtered) {\n // Treat an empty-string category the same as no category.\n const key = item.category || null;\n let group = order.find((g) => g.category === key);\n if (!group) {\n group = { category: key, entries: [] };\n if (key === null) order.unshift(group);\n else order.push(group);\n }\n group.entries.push(item);\n }\n return order;\n }, [filtered]);\n\n const handlePick = useCallback(\n (itemId: string) => {\n onPick(itemId);\n onOpenChange(false);\n },\n [onPick, onOpenChange],\n );\n\n const agentHandle = useMemo<WidgetPickerHandle>(\n () => ({\n pick(itemId) {\n if (!open) return false;\n const item = items.find((entry) => entry.id === itemId);\n if (!item || item.disabled) return false;\n handlePick(itemId);\n return true;\n },\n getPickerState() {\n return {\n open,\n items: items.map((item) => ({\n id: item.id,\n disabled: Boolean(item.disabled),\n })),\n };\n },\n }),\n [open, items, handlePick],\n );\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n useAgentRegistration(widgetPickerAgent, agentHandle, id);\n\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content size=\"lg\">\n <div data-component=\"widget-picker\" data-component-id={id}>\n <Dialog.Title>{title ?? t('widgetPicker.title')}</Dialog.Title>\n <Dialog.Description className=\"ds:sr-only\">\n {t('widgetPicker.description')}\n </Dialog.Description>\n <div className=\"ds:mt-[var(--spacing-sm)]\">\n <TextInput\n aria-label={t('widgetPicker.searchLabel')}\n placeholder={t('widgetPicker.searchPlaceholder')}\n startAdornment={<Search aria-hidden=\"true\" />}\n value={query}\n onChange={(event) => setQuery(event.target.value)}\n />\n </div>\n <div\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- scrollable catalogue needs a keyboard tab stop so an all-disabled, overflowing list stays scrollable (axe scrollable-region-focusable)\n tabIndex={0}\n className=\"ds:mt-[var(--spacing-md)] ds:flex ds:max-h-[60vh] ds:flex-col ds:gap-[var(--spacing-md)] ds:overflow-y-auto ds:pe-[var(--spacing-xs)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n {groups.length === 0 ? (\n <p\n role=\"status\"\n className=\"ds:py-[var(--spacing-lg)] ds:text-center ds:text-sm ds:text-muted-foreground\"\n >\n {items.length === 0\n ? t('widgetPicker.none')\n : t('widgetPicker.empty')}\n </p>\n ) : (\n groups.map((group) => (\n <section\n key={group.category ?? '__ungrouped__'}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {group.category ? (\n <h3 className=\"ds:text-xs ds:font-semibold ds:uppercase ds:tracking-wide ds:text-muted-foreground\">\n {group.category}\n </h3>\n ) : null}\n <div className=\"ds:grid ds:gap-[var(--spacing-sm)] ds:sm:grid-cols-2\">\n {group.entries.map((item) => (\n <button\n key={item.id}\n type=\"button\"\n disabled={item.disabled}\n onClick={() => handlePick(item.id)}\n className={tileVariants()}\n data-widget-type-id={item.id}\n >\n {item.icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:mt-[var(--spacing-2xs)] ds:inline-flex ds:size-5 ds:shrink-0 ds:items-center ds:justify-center ds:text-muted-foreground ds:[&_svg]:size-5\"\n >\n {item.icon}\n </span>\n ) : null}\n <span className=\"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <span className=\"ds:truncate ds:text-sm ds:font-medium\">\n {item.title}\n </span>\n {item.badge ? (\n <Badge variant=\"info\" size=\"sm\">\n {item.badge}\n </Badge>\n ) : null}\n </span>\n {item.description ? (\n <span className=\"ds:text-xs ds:text-muted-foreground\">\n {item.description}\n </span>\n ) : null}\n </span>\n </button>\n ))}\n </div>\n </section>\n ))\n )}\n </div>\n </div>\n </Dialog.Content>\n </Dialog.Root>\n );\n },\n);\n\nWidgetPicker.displayName = 'WidgetPicker';\n"],"names":["widgetPickerAgent","handle","args","tileVariants","cva","WidgetPicker","forwardRef","open","onOpenChange","items","onPick","title","id","ref","t","useTranslation","query","setQuery","useState","useEffect","filtered","useMemo","needle","item","groups","order","key","group","g","handlePick","useCallback","itemId","agentHandle","entry","useImperativeHandle","useAgentRegistration","Dialog","jsx","jsxs","TextInput","Search","event","Badge"],"mappings":"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"}
@@ -3,16 +3,16 @@ import { forwardRef as H, useMemo as W, useRef as z, useCallback as F, useState
3
3
  import { c as j } from "./index-D2ZczOXr.js";
4
4
  import { useTranslation as M } from "react-i18next";
5
5
  import { C } from "./card-DPmk26CL.js";
6
- import { B as ye } from "./badge-sTusUqZD.js";
7
- import { a as Z } from "./key-value-pair-BIBdZBLg.js";
6
+ import { B as ye } from "./badge-BudgzTe_.js";
7
+ import { a as Z } from "./key-value-pair-DczGb4yz.js";
8
8
  import { T as xe } from "./timestamp-BV2lC-wV.js";
9
- import { I as S } from "./icon-button-DA2CAGHZ.js";
9
+ import { I as S } from "./icon-button-8xqRnkdG.js";
10
10
  import { P as U } from "./pencil-B1sKKyuT.js";
11
11
  import { c as q } from "./createLucideIcon-DhHxpK9K.js";
12
12
  import { T as ae } from "./trash-2-uumy3fy1.js";
13
13
  import { C as Ne } from "./circle-j7oZoouK.js";
14
14
  import { u as Ce } from "./registry-DvAUVLHh.js";
15
- import { A as V } from "./alert-CiJT540z.js";
15
+ import { A as V } from "./alert-CiQ5Pa3Q.js";
16
16
  import { B as _e } from "./button-nJaPh_HC.js";
17
17
  import { D as N } from "./dropdown-menu-DU-Hrf33.js";
18
18
  import { E } from "./empty-state-X0sVPfVo.js";
@@ -1344,4 +1344,4 @@ export {
1344
1344
  ee as r,
1345
1345
  D as w
1346
1346
  };
1347
- //# sourceMappingURL=workflow-map-dNzJjBWG.js.map
1347
+ //# sourceMappingURL=workflow-map-D-LEni11.js.map