@alfadocs/ui-kit-debug 1.35.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 (582) 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-Bh_CIlc6.js → appointment-card-WsDGBBut.js} +120 -126
  24. package/dist/_chunks/appointment-card-WsDGBBut.js.map +1 -0
  25. package/dist/_chunks/{appointment-timeline-De-Wqdkw.js → appointment-timeline-ByfovxqR.js} +5 -5
  26. package/dist/_chunks/{appointment-timeline-De-Wqdkw.js.map → appointment-timeline-ByfovxqR.js.map} +1 -1
  27. package/dist/_chunks/{appointment-tray-4I9wTAi4.js → appointment-tray-D6UyJHej.js} +3 -3
  28. package/dist/_chunks/{appointment-tray-4I9wTAi4.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-UywR5gUl.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-DHVhBcvs.js → care-plan-card-COFOI-fI.js} +5 -5
  52. package/dist/_chunks/{care-plan-card-DHVhBcvs.js.map → care-plan-card-COFOI-fI.js.map} +1 -1
  53. package/dist/_chunks/{care-plan-entry-card-Dx6IdTcR.js → care-plan-entry-card-BOKn0KW-.js} +6 -6
  54. package/dist/_chunks/{care-plan-entry-card-Dx6IdTcR.js.map → care-plan-entry-card-BOKn0KW-.js.map} +1 -1
  55. package/dist/_chunks/{care-plan-header-UTX5ZD74.js → care-plan-header-CbuOuVBw.js} +4 -4
  56. package/dist/_chunks/{care-plan-header-UTX5ZD74.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-9_62gY7l.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-aG_qyn6g.js → operator-hero-XIdwDmN2.js} +3 -3
  168. package/dist/_chunks/{operator-hero-aG_qyn6g.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-DvEsWEkC.js → payment-request-card-BxcdvxKR.js} +6 -6
  186. package/dist/_chunks/{payment-request-card-DvEsWEkC.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.map +1 -1
  295. package/dist/components/appointment-card/index.js +2 -2
  296. package/dist/components/appointment-timeline/index.js +1 -1
  297. package/dist/components/audio-recorder/index.js +1 -1
  298. package/dist/components/badge/index.js +1 -1
  299. package/dist/components/bishop-score/index.js +1 -1
  300. package/dist/components/bmi-calculator/index.js +1 -1
  301. package/dist/components/booking/index.js +1 -1
  302. package/dist/components/button/index.js +1 -1
  303. package/dist/components/button-group/button-group.d.ts +20 -0
  304. package/dist/components/button-group/button-group.d.ts.map +1 -1
  305. package/dist/components/button-group/index.js +1 -1
  306. package/dist/components/calendar/index.js +1 -1
  307. package/dist/components/calendar-event-card/index.js +1 -1
  308. package/dist/components/care-plan-card/index.js +1 -1
  309. package/dist/components/care-plan-entry-card/index.js +1 -1
  310. package/dist/components/care-plan-header/index.js +1 -1
  311. package/dist/components/carousel/index.js +1 -1
  312. package/dist/components/chart/index.js +1 -1
  313. package/dist/components/chat-input/index.js +1 -1
  314. package/dist/components/chat-message/index.js +1 -1
  315. package/dist/components/checkbox/index.js +1 -1
  316. package/dist/components/checkbox-group/index.js +1 -1
  317. package/dist/components/clinical-note-card/clinical-note-card.d.ts +2 -34
  318. package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -1
  319. package/dist/components/clinical-note-card/index.js +1 -1
  320. package/dist/components/connection-status/index.js +1 -1
  321. package/dist/components/contact-profile-card/index.js +1 -1
  322. package/dist/components/control-room-rail/index.js +1 -1
  323. package/dist/components/counter/counter.d.ts +6 -0
  324. package/dist/components/counter/counter.d.ts.map +1 -1
  325. package/dist/components/counter/index.js +1 -1
  326. package/dist/components/cycle-calculator/index.js +1 -1
  327. package/dist/components/dashboard-grid/index.js +1 -1
  328. package/dist/components/data-table/index.js +4 -4
  329. package/dist/components/data-table-tabs/index.js +1 -1
  330. package/dist/components/date-picker/index.js +1 -1
  331. package/dist/components/dependent-selector/index.js +1 -1
  332. package/dist/components/description-list/index.js +1 -1
  333. package/dist/components/document-preview/index.js +1 -1
  334. package/dist/components/document-scanner/index.js +1 -1
  335. package/dist/components/due-date-calculator/index.js +2 -2
  336. package/dist/components/editor-overlay/index.js +1 -1
  337. package/dist/components/entity-summary/index.js +1 -1
  338. package/dist/components/face-scheme/index.js +1 -1
  339. package/dist/components/fetal-weight/index.js +1 -1
  340. package/dist/components/field-array/index.js +1 -1
  341. package/dist/components/file-manager/index.js +1 -1
  342. package/dist/components/file-upload/index.js +1 -1
  343. package/dist/components/fiscal-code-input/index.js +1 -1
  344. package/dist/components/freemium-paywall/index.js +1 -1
  345. package/dist/components/gestational-age-calculator/index.js +1 -1
  346. package/dist/components/hcg-doubling/index.js +1 -1
  347. package/dist/components/header/index.js +1 -1
  348. package/dist/components/header-settings/index.js +1 -1
  349. package/dist/components/hover-card/hover-card.agent.d.ts +4 -0
  350. package/dist/components/hover-card/hover-card.agent.d.ts.map +1 -0
  351. package/dist/components/hover-card/hover-card.d.ts +80 -0
  352. package/dist/components/hover-card/hover-card.d.ts.map +1 -0
  353. package/dist/components/hover-card/index.d.ts +4 -0
  354. package/dist/components/hover-card/index.d.ts.map +1 -0
  355. package/dist/components/hover-card/index.js +6 -0
  356. package/dist/components/hover-card/index.js.map +1 -0
  357. package/dist/components/icon-button/index.js +1 -1
  358. package/dist/components/icon-button-group/index.js +1 -1
  359. package/dist/components/icon-picker/index.js +1 -1
  360. package/dist/components/index.d.ts +4 -0
  361. package/dist/components/index.d.ts.map +1 -1
  362. package/dist/components/info-tip/index.js +1 -1
  363. package/dist/components/key-value-pair/index.js +1 -1
  364. package/dist/components/key-value-pair/key-value-pair.d.ts +8 -1
  365. package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
  366. package/dist/components/locale-picker/index.js +1 -1
  367. package/dist/components/message-card/index.js +1 -1
  368. package/dist/components/message-tray/index.js +1 -1
  369. package/dist/components/multi-select/index.js +1 -1
  370. package/dist/components/note-timeline/index.d.ts +4 -0
  371. package/dist/components/note-timeline/index.d.ts.map +1 -0
  372. package/dist/components/note-timeline/index.js +6 -0
  373. package/dist/components/note-timeline/index.js.map +1 -0
  374. package/dist/components/note-timeline/note-timeline.agent.d.ts +4 -0
  375. package/dist/components/note-timeline/note-timeline.agent.d.ts.map +1 -0
  376. package/dist/components/note-timeline/note-timeline.d.ts +77 -0
  377. package/dist/components/note-timeline/note-timeline.d.ts.map +1 -0
  378. package/dist/components/notes-panel/index.js +1 -1
  379. package/dist/components/notification-card/index.js +1 -1
  380. package/dist/components/notification-tray/index.js +1 -1
  381. package/dist/components/operator-hero/index.js +1 -1
  382. package/dist/components/optical-prescription/index.js +1 -1
  383. package/dist/components/panel-header/index.js +1 -1
  384. package/dist/components/panel-header/panel-header.d.ts +7 -0
  385. package/dist/components/panel-header/panel-header.d.ts.map +1 -1
  386. package/dist/components/patient-details/index.js +1 -1
  387. package/dist/components/patient-details/patient-details.d.ts.map +1 -1
  388. package/dist/components/patient-search/index.js +1 -1
  389. package/dist/components/patient-summary-card/index.js +1 -1
  390. package/dist/components/patient-summary-card/patient-summary-card.d.ts +54 -0
  391. package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
  392. package/dist/components/patient-table/index.js +1 -1
  393. package/dist/components/payment-card/index.js +1 -1
  394. package/dist/components/payment-form/index.js +1 -1
  395. package/dist/components/pdf-viewer/index.js +1 -1
  396. package/dist/components/periodontal-chart/index.js +1 -1
  397. package/dist/components/periodontal-chart-card/index.js +1 -1
  398. package/dist/components/periodontal-diagnosis/index.js +1 -1
  399. package/dist/components/periodontal-risk-chart/index.js +1 -1
  400. package/dist/components/permission-matrix/index.js +1 -1
  401. package/dist/components/popover/index.js +1 -1
  402. package/dist/components/practice-profile-hero/index.js +1 -1
  403. package/dist/components/practice-results/index.js +1 -1
  404. package/dist/components/pregnancy-dating/index.js +1 -1
  405. package/dist/components/pregnancy-weight-gain/index.js +1 -1
  406. package/dist/components/privacy-lock/index.js +1 -1
  407. package/dist/components/product-hub-tray/index.js +1 -1
  408. package/dist/components/public-header/index.js +1 -1
  409. package/dist/components/radio/index.js +1 -1
  410. package/dist/components/radio-group/index.js +2 -2
  411. package/dist/components/radiograph-panel/index.js +1 -1
  412. package/dist/components/reviews-panel/index.js +1 -1
  413. package/dist/components/rich-text-editor/index.js +1 -1
  414. package/dist/components/search-bar/index.js +1 -1
  415. package/dist/components/section-card/index.d.ts +4 -0
  416. package/dist/components/section-card/index.d.ts.map +1 -0
  417. package/dist/components/section-card/index.js +6 -0
  418. package/dist/components/section-card/index.js.map +1 -0
  419. package/dist/components/section-card/section-card.agent.d.ts +3 -0
  420. package/dist/components/section-card/section-card.agent.d.ts.map +1 -0
  421. package/dist/components/section-card/section-card.d.ts +30 -0
  422. package/dist/components/section-card/section-card.d.ts.map +1 -0
  423. package/dist/components/sheet/index.js +1 -1
  424. package/dist/components/sign-document/index.js +1 -1
  425. package/dist/components/signature-status-chip/index.js +1 -1
  426. package/dist/components/slot-grid/index.js +1 -1
  427. package/dist/components/streaming-text/index.js +1 -1
  428. package/dist/components/tab-bar/index.js +1 -1
  429. package/dist/components/tag/index.js +1 -1
  430. package/dist/components/task-tray/index.js +1 -1
  431. package/dist/components/tasks-panel/index.js +1 -1
  432. package/dist/components/theme-toggle/index.js +1 -1
  433. package/dist/components/timeline/index.js +1 -1
  434. package/dist/components/timeline/timeline.d.ts +1 -1
  435. package/dist/components/timeline/timeline.d.ts.map +1 -1
  436. package/dist/components/toast/index.js +1 -1
  437. package/dist/components/tool-rail/index.js +1 -1
  438. package/dist/components/tooltip/index.js +1 -1
  439. package/dist/components/tooltip/tooltip.d.ts.map +1 -1
  440. package/dist/components/tooth-scheme/index.js +1 -1
  441. package/dist/components/transaction-chip/index.js +1 -1
  442. package/dist/components/transaction-chip/transaction-chip.d.ts +11 -0
  443. package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -1
  444. package/dist/components/transcript-panel/index.js +1 -1
  445. package/dist/components/warning-stack/index.js +1 -1
  446. package/dist/components/widget-picker/index.js +1 -1
  447. package/dist/components/workflow/index.js +1 -1
  448. package/dist/components/workflow-status/index.d.ts +4 -0
  449. package/dist/components/workflow-status/index.d.ts.map +1 -0
  450. package/dist/components/workflow-status/index.js +7 -0
  451. package/dist/components/workflow-status/index.js.map +1 -0
  452. package/dist/components/workflow-status/workflow-status.agent.d.ts +4 -0
  453. package/dist/components/workflow-status/workflow-status.agent.d.ts.map +1 -0
  454. package/dist/components/workflow-status/workflow-status.d.ts +52 -0
  455. package/dist/components/workflow-status/workflow-status.d.ts.map +1 -0
  456. package/dist/host-compat.css +4 -1
  457. package/dist/i18n/locales/ar.d.ts +12 -0
  458. package/dist/i18n/locales/ar.d.ts.map +1 -1
  459. package/dist/i18n/locales/ar.js +12 -0
  460. package/dist/i18n/locales/ar.js.map +1 -1
  461. package/dist/i18n/locales/de.d.ts +12 -0
  462. package/dist/i18n/locales/de.d.ts.map +1 -1
  463. package/dist/i18n/locales/de.js +12 -0
  464. package/dist/i18n/locales/de.js.map +1 -1
  465. package/dist/i18n/locales/el.d.ts +12 -0
  466. package/dist/i18n/locales/el.d.ts.map +1 -1
  467. package/dist/i18n/locales/el.js +12 -0
  468. package/dist/i18n/locales/el.js.map +1 -1
  469. package/dist/i18n/locales/en.d.ts +12 -0
  470. package/dist/i18n/locales/en.d.ts.map +1 -1
  471. package/dist/i18n/locales/en.js +12 -0
  472. package/dist/i18n/locales/en.js.map +1 -1
  473. package/dist/i18n/locales/es.d.ts +12 -0
  474. package/dist/i18n/locales/es.d.ts.map +1 -1
  475. package/dist/i18n/locales/es.js +12 -0
  476. package/dist/i18n/locales/es.js.map +1 -1
  477. package/dist/i18n/locales/fr.d.ts +12 -0
  478. package/dist/i18n/locales/fr.d.ts.map +1 -1
  479. package/dist/i18n/locales/fr.js +12 -0
  480. package/dist/i18n/locales/fr.js.map +1 -1
  481. package/dist/i18n/locales/hi.d.ts +12 -0
  482. package/dist/i18n/locales/hi.d.ts.map +1 -1
  483. package/dist/i18n/locales/hi.js +12 -0
  484. package/dist/i18n/locales/hi.js.map +1 -1
  485. package/dist/i18n/locales/it.d.ts +12 -0
  486. package/dist/i18n/locales/it.d.ts.map +1 -1
  487. package/dist/i18n/locales/it.js +12 -0
  488. package/dist/i18n/locales/it.js.map +1 -1
  489. package/dist/i18n/locales/ja.d.ts +12 -0
  490. package/dist/i18n/locales/ja.d.ts.map +1 -1
  491. package/dist/i18n/locales/ja.js +12 -0
  492. package/dist/i18n/locales/ja.js.map +1 -1
  493. package/dist/i18n/locales/nl.d.ts +12 -0
  494. package/dist/i18n/locales/nl.d.ts.map +1 -1
  495. package/dist/i18n/locales/nl.js +12 -0
  496. package/dist/i18n/locales/nl.js.map +1 -1
  497. package/dist/i18n/locales/pl.d.ts +12 -0
  498. package/dist/i18n/locales/pl.d.ts.map +1 -1
  499. package/dist/i18n/locales/pl.js +12 -0
  500. package/dist/i18n/locales/pl.js.map +1 -1
  501. package/dist/i18n/locales/pt.d.ts +12 -0
  502. package/dist/i18n/locales/pt.d.ts.map +1 -1
  503. package/dist/i18n/locales/pt.js +12 -0
  504. package/dist/i18n/locales/pt.js.map +1 -1
  505. package/dist/i18n/locales/ro.d.ts +12 -0
  506. package/dist/i18n/locales/ro.d.ts.map +1 -1
  507. package/dist/i18n/locales/ro.js +12 -0
  508. package/dist/i18n/locales/ro.js.map +1 -1
  509. package/dist/i18n/locales/ru.d.ts +12 -0
  510. package/dist/i18n/locales/ru.d.ts.map +1 -1
  511. package/dist/i18n/locales/ru.js +12 -0
  512. package/dist/i18n/locales/ru.js.map +1 -1
  513. package/dist/i18n/locales/sq.d.ts +12 -0
  514. package/dist/i18n/locales/sq.d.ts.map +1 -1
  515. package/dist/i18n/locales/sq.js +12 -0
  516. package/dist/i18n/locales/sq.js.map +1 -1
  517. package/dist/i18n/locales/sv.d.ts +12 -0
  518. package/dist/i18n/locales/sv.d.ts.map +1 -1
  519. package/dist/i18n/locales/sv.js +12 -0
  520. package/dist/i18n/locales/sv.js.map +1 -1
  521. package/dist/i18n/locales/tr.d.ts +12 -0
  522. package/dist/i18n/locales/tr.d.ts.map +1 -1
  523. package/dist/i18n/locales/tr.js +12 -0
  524. package/dist/i18n/locales/tr.js.map +1 -1
  525. package/dist/i18n/locales/zh.d.ts +12 -0
  526. package/dist/i18n/locales/zh.d.ts.map +1 -1
  527. package/dist/i18n/locales/zh.js +12 -0
  528. package/dist/i18n/locales/zh.js.map +1 -1
  529. package/dist/index.js +929 -916
  530. package/dist/index.js.map +1 -1
  531. package/dist/locales/ar.json +12 -0
  532. package/dist/locales/de.json +12 -0
  533. package/dist/locales/el.json +12 -0
  534. package/dist/locales/en.json +12 -0
  535. package/dist/locales/es.json +12 -0
  536. package/dist/locales/fr.json +12 -0
  537. package/dist/locales/hi.json +12 -0
  538. package/dist/locales/it.json +12 -0
  539. package/dist/locales/ja.json +12 -0
  540. package/dist/locales/nl.json +12 -0
  541. package/dist/locales/pl.json +12 -0
  542. package/dist/locales/pt.json +12 -0
  543. package/dist/locales/ro.json +12 -0
  544. package/dist/locales/ru.json +12 -0
  545. package/dist/locales/sq.json +12 -0
  546. package/dist/locales/sv.json +12 -0
  547. package/dist/locales/tr.json +12 -0
  548. package/dist/locales/zh.json +12 -0
  549. package/dist/patterns/alia-assistant/index.js +1 -1
  550. package/dist/patterns/anamnesis/index.js +1 -1
  551. package/dist/patterns/calendar/calendar.model.d.ts +2 -0
  552. package/dist/patterns/calendar/calendar.model.d.ts.map +1 -1
  553. package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
  554. package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
  555. package/dist/patterns/calendar/index.js +1 -1
  556. package/dist/patterns/marketplace-app-shell/index.js +1 -1
  557. package/dist/patterns/payment-automation-upsell/index.js +1 -1
  558. package/dist/patterns/signature-request/index.js +1 -1
  559. package/dist/tokens.css +1 -1
  560. package/package.json +17 -1
  561. package/dist/_chunks/appointment-card-Bh_CIlc6.js.map +0 -1
  562. package/dist/_chunks/button-group-CaxRJsNG.js +0 -289
  563. package/dist/_chunks/button-group-CaxRJsNG.js.map +0 -1
  564. package/dist/_chunks/calendar-event-card-DSh-69HT.js.map +0 -1
  565. package/dist/_chunks/calendar-workspace-UywR5gUl.js.map +0 -1
  566. package/dist/_chunks/clinical-note-card-CTRzmqvv.js +0 -438
  567. package/dist/_chunks/clinical-note-card-CTRzmqvv.js.map +0 -1
  568. package/dist/_chunks/counter-dRlTNC_y.js.map +0 -1
  569. package/dist/_chunks/entity-card-9_62gY7l.js.map +0 -1
  570. package/dist/_chunks/field-value-BetdWMA2.js +0 -384
  571. package/dist/_chunks/field-value-BetdWMA2.js.map +0 -1
  572. package/dist/_chunks/file-upload-CwxdqkMK.js.map +0 -1
  573. package/dist/_chunks/key-value-pair-BIBdZBLg.js.map +0 -1
  574. package/dist/_chunks/panel-header-D313n_9-.js +0 -105
  575. package/dist/_chunks/panel-header-D313n_9-.js.map +0 -1
  576. package/dist/_chunks/patient-details-BGiawUHd.js +0 -760
  577. package/dist/_chunks/patient-details-BGiawUHd.js.map +0 -1
  578. package/dist/_chunks/patient-summary-card--CT_gbaQ.js +0 -454
  579. package/dist/_chunks/patient-summary-card--CT_gbaQ.js.map +0 -1
  580. package/dist/_chunks/payment-automation-upsell-DwQW2fRp.js.map +0 -1
  581. package/dist/_chunks/timeline-Bs9Erxlo.js.map +0 -1
  582. package/dist/_chunks/tooltip-DvmfrNvB.js.map +0 -1
@@ -1 +0,0 @@
1
- {"version":3,"file":"file-upload-CwxdqkMK.js","sources":["../../node_modules/lucide-react/dist/esm/icons/file-archive.mjs","../../node_modules/lucide-react/dist/esm/icons/loader-circle.mjs","../../src/components/file-upload/file-upload.agent.ts","../../src/components/file-upload/file-upload.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M13.659 22H18a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v11.5\",\n key: \"4pqfef\"\n }\n ],\n [\"path\", { d: \"M14 2v5a1 1 0 0 0 1 1h5\", key: \"wfsgrz\" }],\n [\"path\", { d: \"M8 12v-1\", key: \"1ej8lb\" }],\n [\"path\", { d: \"M8 18v-2\", key: \"qcmpov\" }],\n [\"path\", { d: \"M8 7V6\", key: \"1nbb54\" }],\n [\"circle\", { cx: \"8\", cy: \"20\", r: \"2\", key: \"ckkr5m\" }]\n];\nconst FileArchive = createLucideIcon(\"file-archive\", __iconNode);\n\nexport { __iconNode, FileArchive as default };\n//# sourceMappingURL=file-archive.mjs.map\n","/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.mjs.map\n","import type { AgentAdapter } from '../../agent/types';\nimport type { FileUploadHandle } from './file-upload';\n\n// 'submit' is dropped: the handle exposes no upload/confirm action (uploading\n// is driven by the host's onUpload callback, not the curated handle). The two\n// removal actions back the 'dismiss' capability (removing a tracked file).\nexport const fileUploadAgent: AgentAdapter<FileUploadHandle> = {\n id: 'file-upload',\n capabilities: ['dismiss'],\n state: {\n files: {\n type: 'Array<{ id, name, size, status }>',\n descriptionKey: 'ui.agent.fileUpload.state.files',\n description:\n 'Files currently tracked by the uploader. Identifiers and metadata only — never file content.',\n read: (handle) => handle.getFiles(),\n },\n },\n actions: {\n remove_file: {\n safety: 'destructive',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Id of the tracked file to remove (data-file-id).',\n },\n },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.fileUpload.actions.removeFile',\n description: 'Remove the file with the given id from the upload list.',\n examples: [\n { args: { id: 'file-1' }, note: 'Remove the first tracked file.' },\n ],\n invoke: (handle, args: { id: string }) => {\n handle.removeFile(args.id);\n },\n },\n clear: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.fileUpload.actions.clear',\n description: 'Remove all files from the upload list.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'file-upload' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-file-id',\n description: 'Each tracked file emits its id as data-file-id.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ClipboardEvent,\n type ReactNode,\n} from 'react';\nimport { useDropzone, type FileRejection } from 'react-dropzone';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n CircleAlert,\n CircleCheck,\n File as FileIcon,\n FileArchive,\n FileImage,\n FileSpreadsheet,\n FileText,\n LoaderCircle,\n Upload,\n X,\n} from 'lucide-react';\nimport { useFormField } from '../form-field/form-field-context';\nimport { useAgentRegistration } from '../../agent';\nimport { fileUploadAgent } from './file-upload.agent';\n\n/* -------------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------------- */\n\nexport interface FileUploadFile {\n file: File;\n id: string;\n status: 'pending' | 'uploading' | 'complete' | 'error';\n progress: number;\n preview?: string;\n error?: string;\n}\n\nexport interface FileUploadRejection {\n file: File;\n reason:\n | 'file-too-large'\n | 'file-too-small'\n | 'file-invalid-type'\n | 'too-many-files';\n}\n\n// Curated agent-readiness handle — see file-upload.agent.ts.\nexport interface FileUploadHandle {\n getFiles: () => Array<{\n id: string;\n name: string;\n size: number;\n status: FileUploadFile['status'];\n }>;\n removeFile: (id: string) => void;\n clear: () => void;\n}\n\nexport interface FileUploadProps {\n /** Opaque instance id — emitted as `data-component-id` for the agent registry. */\n id?: string;\n accept?: Record<string, string[]>;\n maxSize?: number;\n minSize?: number;\n maxFiles?: number;\n multiple?: boolean;\n disabled?: boolean;\n strictAccept?: boolean;\n onDrop?: (accepted: File[], rejected: FileUploadRejection[]) => void;\n onUpload?: (\n file: File,\n helpers: {\n signal: AbortSignal;\n onProgress: (percent: number) => void;\n },\n ) => Promise<void>;\n onRemove?: (file: FileUploadFile) => void;\n onReject?: (rejections: FileUploadRejection[]) => void;\n variant?: 'dropzone' | 'button' | 'both';\n showPreview?: boolean;\n className?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------------- */\n\nconst dropzoneVariants = cva(\n [\n 'ds:relative ds:flex ds:flex-col ds:items-center ds:justify-center',\n 'ds:min-h-48 ds:px-[var(--spacing-lg)] ds:py-[var(--spacing-xl)]',\n 'ds:rounded-[var(--radius-lg)] ds:border-2 ds:border-dashed',\n 'ds:bg-background',\n 'ds:transition-all ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:cursor-pointer',\n 'ds:group',\n ].join(' '),\n {\n variants: {\n isDragActive: {\n true: 'ds:border-primary ds:bg-primary/10 ds:scale-[1.01]',\n false:\n 'ds:border-border ds:hover:border-muted-foreground/40 ds:hover:bg-muted/5',\n },\n hasError: {\n true: 'ds:border-destructive ds:bg-destructive/5 ds:hover:border-destructive',\n false: '',\n },\n isDisabled: {\n true: 'ds:cursor-not-allowed ds:opacity-50 ds:hover:border-border ds:hover:bg-background',\n false: '',\n },\n },\n defaultVariants: {\n isDragActive: false,\n hasError: false,\n isDisabled: false,\n },\n },\n);\n\n// Exported so compositions can give sibling affordances (e.g. a scan trigger\n// next to an upload) the identical browse-button chrome.\nexport const browseButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)]',\n // Full-width on phone so the affordance stacks cleanly; natural width\n // once the viewport can lay actions out in a row.\n 'ds:w-full ds:sm:w-auto',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-primary/30 ds:bg-primary/5',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-sm)]',\n 'ds:text-primary ds:text-[length:var(--font-size-sm)] ds:font-medium',\n 'ds:transition-all ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:bg-primary/10 ds:hover:border-primary/50',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n);\n\nconst fileItemVariants = cva(\n [\n 'ds:flex ds:items-center ds:gap-[var(--spacing-md)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)] ds:bg-background',\n 'ds:p-[var(--spacing-md)]',\n 'ds:text-[length:var(--font-size-sm)] ds:text-foreground',\n 'ds:transition-all ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n status: {\n pending: 'ds:border-border',\n uploading: 'ds:border-primary/30 ds:bg-primary/[0.02]',\n complete: 'ds:border-[var(--success)]/30 ds:bg-[var(--success)]/[0.02]',\n error: 'ds:border-destructive/30 ds:bg-destructive/[0.02]',\n },\n },\n defaultVariants: {\n status: 'pending',\n },\n },\n);\n\nconst actionButtonVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-h-[var(--min-target-size)] ds:min-w-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-muted-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:hover:text-foreground ds:hover:bg-muted/40',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n ].join(' '),\n);\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\nfunction generateId(): string {\n if (typeof crypto !== 'undefined' && crypto.randomUUID) {\n return crypto.randomUUID();\n }\n return `${Date.now()}-${Math.random().toString(36).slice(2, 11)}`;\n}\n\nfunction isImageFile(file: File): boolean {\n return file.type.startsWith('image/');\n}\n\nfunction getFileIcon(file: File): ReactNode {\n const ext = file.name.split('.').pop()?.toLowerCase() ?? '';\n if (['pdf', 'doc', 'docx', 'txt', 'rtf'].includes(ext)) {\n return (\n <FileText\n aria-hidden=\"true\"\n className=\"ds:size-10 ds:shrink-0 ds:text-muted-foreground\"\n />\n );\n }\n if (['zip', 'rar', '7z', 'tar', 'gz'].includes(ext)) {\n return (\n <FileArchive\n aria-hidden=\"true\"\n className=\"ds:size-10 ds:shrink-0 ds:text-muted-foreground\"\n />\n );\n }\n if (['xls', 'xlsx', 'csv'].includes(ext)) {\n return (\n <FileSpreadsheet\n aria-hidden=\"true\"\n className=\"ds:size-10 ds:shrink-0 ds:text-muted-foreground\"\n />\n );\n }\n if (['png', 'jpg', 'jpeg', 'gif', 'webp', 'svg', 'bmp'].includes(ext)) {\n return (\n <FileImage\n aria-hidden=\"true\"\n className=\"ds:size-10 ds:shrink-0 ds:text-muted-foreground\"\n />\n );\n }\n return (\n <FileIcon\n aria-hidden=\"true\"\n className=\"ds:size-10 ds:shrink-0 ds:text-muted-foreground\"\n />\n );\n}\n\nfunction getStatusIcon(status: FileUploadFile['status']): ReactNode {\n switch (status) {\n case 'uploading':\n return (\n <LoaderCircle\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-primary ds:animate-spin\"\n />\n );\n case 'complete':\n return (\n <CircleCheck\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-[var(--success)]\"\n />\n );\n case 'error':\n return (\n <CircleAlert\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:text-destructive\"\n />\n );\n default:\n return null;\n }\n}\n\nconst UNIT_KEYS = [\n 'inputs.fileUpload.units.bytes',\n 'inputs.fileUpload.units.kilobytes',\n 'inputs.fileUpload.units.megabytes',\n 'inputs.fileUpload.units.gigabytes',\n] as const;\n\nconst UNIT_FALLBACKS = ['B', 'KB', 'MB', 'GB'] as const;\n\nfunction formatFileSize(\n bytes: number,\n locale: string,\n t: (key: string, fallback: string) => string,\n): string {\n let value = bytes;\n let unitIndex = 0;\n while (value >= 1024 && unitIndex < UNIT_FALLBACKS.length - 1) {\n value /= 1024;\n unitIndex++;\n }\n const formatted = new Intl.NumberFormat(locale, {\n maximumFractionDigits: unitIndex === 0 ? 0 : 1,\n }).format(value);\n const unit = t(UNIT_KEYS[unitIndex], UNIT_FALLBACKS[unitIndex]);\n return `${formatted} ${unit}`;\n}\n\nfunction mapRejectionCode(code: string): FileUploadRejection['reason'] {\n switch (code) {\n case 'file-too-large':\n return 'file-too-large';\n case 'file-too-small':\n return 'file-too-small';\n case 'file-invalid-type':\n return 'file-invalid-type';\n case 'too-many-files':\n return 'too-many-files';\n default:\n return 'file-invalid-type';\n }\n}\n\nfunction getExtensionFromName(name: string): string {\n const parts = name.split('.');\n return parts.length > 1 ? `.${parts.pop()!.toLowerCase()}` : '';\n}\n\n// Single source of truth for `accept`-based file matching.\n// Semantics: file passes if any entry matches BOTH mime AND extension.\n// An empty extensions list for an entry means \"any extension is fine\".\nfunction isAcceptedFile(file: File, accept: Record<string, string[]>): boolean {\n const fileExt = getExtensionFromName(file.name);\n for (const [mime, extensions] of Object.entries(accept)) {\n const mimeMatch =\n mime === '*/*' ||\n (mime.endsWith('/*') && file.type.startsWith(mime.replace('/*', '/'))) ||\n file.type === mime;\n const extMatch =\n extensions.length === 0 ||\n extensions.some((ext) => ext.toLowerCase() === fileExt);\n if (mimeMatch && extMatch) return true;\n }\n return false;\n}\n\nfunction formatAcceptHint(accept: Record<string, string[]>): string {\n const extensions: string[] = [];\n for (const exts of Object.values(accept)) {\n for (const ext of exts) {\n extensions.push(ext.toUpperCase().replace('.', ''));\n }\n }\n if (extensions.length > 0) return extensions.join(', ');\n const mimeLabels: string[] = [];\n for (const mime of Object.keys(accept)) {\n if (mime.endsWith('/*')) {\n mimeLabels.push(mime.replace('/*', '').split('/').pop() ?? mime);\n } else {\n mimeLabels.push(mime.split('/').pop() ?? mime);\n }\n }\n return mimeLabels.join(', ');\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const FileUpload = forwardRef<HTMLDivElement, FileUploadProps>(\n (\n {\n id,\n accept,\n maxSize,\n minSize,\n maxFiles = 1,\n multiple = false,\n disabled,\n strictAccept = false,\n onDrop: onDropProp,\n onUpload,\n onRemove,\n onReject,\n variant = 'both',\n showPreview = true,\n className,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n const fallbackId = useId();\n\n const effectiveDisabled = ctx.disabled || disabled;\n const hasError = ctx.invalid;\n const inputId = ctx.id || fallbackId;\n\n const [files, setFiles] = useState<FileUploadFile[]>([]);\n const [rejections, setRejections] = useState<FileUploadRejection[]>([]);\n const abortControllers = useRef<Map<string, AbortController>>(new Map());\n const statusRef = useRef<HTMLSpanElement>(null);\n const filesRef = useRef<FileUploadFile[]>(files);\n filesRef.current = files;\n\n const announceStatus = useCallback((message: string) => {\n if (statusRef.current) {\n statusRef.current.textContent = message;\n }\n }, []);\n\n const validateStrictAccept = useCallback(\n (file: File): boolean => {\n if (!strictAccept || !accept) return true;\n return isAcceptedFile(file, accept);\n },\n [strictAccept, accept],\n );\n\n const uploadFile = useCallback(\n async (uploadFileState: FileUploadFile) => {\n if (!onUpload) return;\n const controller = new AbortController();\n abortControllers.current.set(uploadFileState.id, controller);\n\n setFiles((prev) =>\n prev.map((f) =>\n f.id === uploadFileState.id\n ? { ...f, status: 'uploading', progress: 0 }\n : f,\n ),\n );\n announceStatus(t('inputs.fileUpload.uploading', 'Uploading\\u2026'));\n\n try {\n await onUpload(uploadFileState.file, {\n signal: controller.signal,\n onProgress: (percent: number) => {\n setFiles((prev) =>\n prev.map((f) =>\n f.id === uploadFileState.id ? { ...f, progress: percent } : f,\n ),\n );\n announceStatus(\n t('inputs.fileUpload.progress', '{{percent}}% uploaded', {\n percent,\n }),\n );\n },\n });\n setFiles((prev) =>\n prev.map((f) =>\n f.id === uploadFileState.id\n ? { ...f, status: 'complete', progress: 100 }\n : f,\n ),\n );\n announceStatus(t('inputs.fileUpload.complete', 'Upload complete'));\n } catch (err: unknown) {\n if (controller.signal.aborted) {\n setFiles((prev) => prev.filter((f) => f.id !== uploadFileState.id));\n return;\n }\n const errorMessage =\n err instanceof Error\n ? err.message\n : t('inputs.fileUpload.errors.uploadFailed', 'Upload failed');\n setFiles((prev) =>\n prev.map((f) =>\n f.id === uploadFileState.id\n ? { ...f, status: 'error', error: errorMessage }\n : f,\n ),\n );\n } finally {\n abortControllers.current.delete(uploadFileState.id);\n }\n },\n [onUpload, announceStatus, t],\n );\n\n const handleDrop = useCallback(\n (accepted: File[], fileRejections: FileRejection[]) => {\n const mapped: FileUploadRejection[] = fileRejections.flatMap((r) =>\n r.errors.map((e) => ({\n file: r.file,\n reason: mapRejectionCode(e.code),\n })),\n );\n\n const strictRejected: FileUploadRejection[] = [];\n const strictAccepted: File[] = [];\n for (const file of accepted) {\n if (!validateStrictAccept(file)) {\n strictRejected.push({ file, reason: 'file-invalid-type' });\n } else {\n strictAccepted.push(file);\n }\n }\n\n const allRejections = [...mapped, ...strictRejected];\n setRejections(allRejections);\n\n if (allRejections.length > 0) {\n onReject?.(allRejections);\n }\n\n const newFiles: FileUploadFile[] = strictAccepted.map((file) => ({\n file,\n id: generateId(),\n status: 'pending' as const,\n progress: 0,\n preview: isImageFile(file) ? URL.createObjectURL(file) : undefined,\n }));\n\n setFiles((prev) => {\n if (!multiple && maxFiles === 1) {\n for (const f of prev) {\n if (f.preview) URL.revokeObjectURL(f.preview);\n }\n return newFiles;\n }\n return [...prev, ...newFiles];\n });\n\n onDropProp?.(strictAccepted, allRejections);\n announceStatus(\n t('inputs.fileUpload.filesSelected', '{{count}} file(s) selected', {\n count: strictAccepted.length,\n }),\n );\n\n for (const nf of newFiles) {\n void uploadFile(nf);\n }\n },\n [\n multiple,\n maxFiles,\n onDropProp,\n onReject,\n validateStrictAccept,\n announceStatus,\n uploadFile,\n t,\n ],\n );\n\n const { getRootProps, getInputProps, isDragActive, open } = useDropzone({\n accept,\n maxSize,\n minSize,\n maxFiles: multiple ? maxFiles : 1,\n multiple,\n disabled: effectiveDisabled,\n onDrop: handleDrop,\n noClick: variant === 'button',\n noKeyboard: variant === 'button',\n });\n\n const handleCancel = useCallback((fileId: string) => {\n const controller = abortControllers.current.get(fileId);\n controller?.abort();\n setFiles((prev) => {\n const file = prev.find((f) => f.id === fileId);\n if (file?.preview) URL.revokeObjectURL(file.preview);\n return prev.filter((f) => f.id !== fileId);\n });\n }, []);\n\n const handleRemove = useCallback(\n (fileId: string) => {\n const removed = filesRef.current.find((f) => f.id === fileId);\n if (removed?.preview) URL.revokeObjectURL(removed.preview);\n setFiles((prev) => prev.filter((f) => f.id !== fileId));\n if (removed) {\n onRemove?.(removed);\n }\n },\n [onRemove],\n );\n\n const clearAll = useCallback(() => {\n for (const f of filesRef.current) {\n const controller = abortControllers.current.get(f.id);\n controller?.abort();\n if (f.preview) URL.revokeObjectURL(f.preview);\n }\n setFiles([]);\n }, []);\n\n const agentHandle = useMemo<FileUploadHandle>(\n () => ({\n getFiles: () =>\n filesRef.current.map((f) => ({\n id: f.id,\n name: f.file.name,\n size: f.file.size,\n status: f.status,\n })),\n removeFile: (fileId: string) => handleRemove(fileId),\n clear: () => clearAll(),\n }),\n [handleRemove, clearAll],\n );\n useAgentRegistration(fileUploadAgent, agentHandle, id);\n\n const validatePastedFiles = useCallback(\n (\n pastedFiles: File[],\n ): { accepted: File[]; rejected: FileUploadRejection[] } => {\n const accepted: File[] = [];\n const rejected: FileUploadRejection[] = [];\n const effectiveMaxFiles = multiple ? maxFiles : 1;\n\n for (const file of pastedFiles) {\n if (accepted.length >= effectiveMaxFiles) {\n rejected.push({ file, reason: 'too-many-files' });\n continue;\n }\n if (maxSize !== undefined && file.size > maxSize) {\n rejected.push({ file, reason: 'file-too-large' });\n continue;\n }\n if (minSize !== undefined && file.size < minSize) {\n rejected.push({ file, reason: 'file-too-small' });\n continue;\n }\n if (accept && !isAcceptedFile(file, accept)) {\n rejected.push({ file, reason: 'file-invalid-type' });\n continue;\n }\n accepted.push(file);\n }\n return { accepted, rejected };\n },\n [accept, maxSize, minSize, maxFiles, multiple],\n );\n\n const handlePaste = useCallback(\n (event: ClipboardEvent<HTMLDivElement>) => {\n if (effectiveDisabled) return;\n const pastedFiles = Array.from(event.clipboardData.files);\n if (pastedFiles.length > 0) {\n event.preventDefault();\n const { accepted, rejected } = validatePastedFiles(pastedFiles);\n const fileRejections: FileRejection[] = rejected.map((r) => ({\n file: r.file,\n errors: [{ code: r.reason, message: r.reason }],\n }));\n handleDrop(accepted, fileRejections);\n }\n },\n [effectiveDisabled, handleDrop, validatePastedFiles],\n );\n\n useEffect(() => {\n return () => {\n for (const f of filesRef.current) {\n if (f.preview) URL.revokeObjectURL(f.preview);\n }\n };\n }, []);\n\n const constraintHints = useMemo(() => {\n const hints: string[] = [];\n if (accept) {\n hints.push(formatAcceptHint(accept));\n }\n if (maxSize) {\n hints.push(\n t('inputs.fileUpload.maxSizeHint', 'Max {{size}}', {\n size: formatFileSize(maxSize, i18n.language, t),\n }),\n );\n }\n if (multiple && maxFiles > 1) {\n hints.push(\n t('inputs.fileUpload.maxFilesHint', 'Up to {{count}} files', {\n count: maxFiles,\n }),\n );\n }\n return hints;\n }, [accept, maxSize, multiple, maxFiles, t, i18n.language]);\n\n const errorMessages = useMemo(() => {\n return rejections.map((r) => {\n switch (r.reason) {\n case 'file-too-large':\n return t(\n 'inputs.fileUpload.errors.fileTooLarge',\n 'File exceeds {{maxSize}}',\n {\n maxSize: maxSize\n ? formatFileSize(maxSize, i18n.language, t)\n : '',\n },\n );\n case 'file-too-small':\n return t(\n 'inputs.fileUpload.errors.fileTooSmall',\n 'File is smaller than {{minSize}}',\n {\n minSize: minSize\n ? formatFileSize(minSize, i18n.language, t)\n : '',\n },\n );\n case 'file-invalid-type':\n return t(\n 'inputs.fileUpload.errors.fileInvalidType',\n 'File type not accepted',\n );\n case 'too-many-files':\n return t(\n 'inputs.fileUpload.errors.tooManyFiles',\n 'Maximum {{maxFiles}} files allowed',\n {\n maxFiles,\n },\n );\n }\n });\n }, [rejections, t, maxSize, minSize, maxFiles, i18n.language]);\n\n const renderFileList = () => {\n if (files.length === 0) return null;\n\n return (\n <ul className=\"ds:mt-[var(--spacing-md)] ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:list-none ds:p-0 ds:m-0\">\n {files.map((f) => (\n <li\n key={f.id}\n data-file-id={f.id}\n className={fileItemVariants({ status: f.status })}\n >\n {showPreview && f.preview ? (\n <img\n src={f.preview}\n alt=\"\"\n aria-hidden=\"true\"\n className=\"ds:size-12 ds:shrink-0 ds:rounded-[var(--radius-md)] ds:object-cover ds:border ds:border-border\"\n />\n ) : (\n getFileIcon(f.file)\n )}\n\n <div className=\"ds:flex-1 ds:min-w-0\">\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <p className=\"ds:truncate type-label ds:m-0\">{f.file.name}</p>\n {getStatusIcon(f.status)}\n </div>\n <p className=\"type-meta ds:text-muted-foreground ds:m-0 ds:mt-0.5\">\n {formatFileSize(f.file.size, i18n.language, t)}\n {f.status === 'uploading' && (\n <span className=\"ds:ms-[var(--spacing-sm)] ds:text-primary ds:font-medium\">\n {f.progress}%\n </span>\n )}\n {f.status === 'complete' && (\n <span className=\"ds:ms-[var(--spacing-sm)] ds:text-[var(--success)] ds:font-medium\">\n {t('inputs.fileUpload.complete', 'Complete')}\n </span>\n )}\n </p>\n\n {f.status === 'uploading' && (\n <div\n role=\"progressbar\"\n aria-label={f.file.name}\n aria-valuenow={f.progress}\n aria-valuemin={0}\n aria-valuemax={100}\n className=\"ds:mt-[var(--spacing-sm)] ds:h-1.5 ds:w-full ds:rounded-[var(--radius-full)] ds:bg-muted ds:overflow-hidden\"\n >\n <div\n className=\"ds:h-full ds:rounded-[var(--radius-full)] ds:bg-primary ds:transition-[inline-size] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none\"\n // eslint-disable-next-line react/forbid-dom-props -- progress bar width is runtime-computed\n style={{ inlineSize: `${f.progress}%` }}\n />\n </div>\n )}\n\n {f.status === 'error' && f.error && (\n <p\n role=\"alert\"\n className=\"type-meta ds:text-destructive ds:m-0 ds:mt-[var(--spacing-xs)]\"\n >\n {f.error}\n </p>\n )}\n </div>\n\n {f.status === 'uploading' && (\n <button\n type=\"button\"\n onClick={() => handleCancel(f.id)}\n aria-label={t('inputs.fileUpload.cancel', 'Cancel upload')}\n className={actionButtonVariants()}\n >\n <X aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n )}\n {(f.status === 'complete' ||\n f.status === 'pending' ||\n f.status === 'error') && (\n <button\n type=\"button\"\n onClick={() => handleRemove(f.id)}\n aria-label={t('inputs.fileUpload.remove', 'Remove file')}\n className={actionButtonVariants()}\n >\n <X aria-hidden=\"true\" className=\"ds:size-4\" />\n </button>\n )}\n </li>\n ))}\n </ul>\n );\n };\n\n const renderDropzone = () => {\n if (variant === 'button') return null;\n\n const rootProps = getRootProps({\n className: dropzoneVariants({\n isDragActive,\n hasError: hasError ?? false,\n isDisabled: effectiveDisabled ?? false,\n className,\n }),\n tabIndex: effectiveDisabled ? -1 : 0,\n });\n\n // Compose the caller's forwarded ref with react-dropzone's internal\n // root ref. Spreading `{...rootProps}` and then setting `ref={ref}`\n // would clobber dropzone's ref callback, breaking its keydown guard\n // (`rootRef.current.isEqualNode(event.target)`).\n const rootRefFromDropzone = (\n rootProps as unknown as {\n ref?:\n | ((node: HTMLDivElement | null) => void)\n | { current: HTMLDivElement | null };\n }\n ).ref;\n const composedRef = (node: HTMLDivElement | null) => {\n if (typeof rootRefFromDropzone === 'function') {\n rootRefFromDropzone(node);\n } else if (rootRefFromDropzone) {\n (rootRefFromDropzone as { current: HTMLDivElement | null }).current =\n node;\n }\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n (ref as { current: HTMLDivElement | null }).current = node;\n }\n };\n return (\n <div\n {...rootProps}\n ref={composedRef}\n onPaste={handlePaste}\n id={inputId}\n aria-label={t(\n 'inputs.fileUpload.dropHere',\n 'Drop files here or click to browse',\n )}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n aria-required={ctx.required || undefined}\n data-testid=\"file-upload-dropzone\"\n >\n <input\n {...getInputProps({\n 'aria-label': t(\n 'inputs.fileUpload.dropHere',\n 'Drop files here or click to browse',\n ),\n })}\n />\n\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:items-center ds:justify-center ds:size-14 ds:rounded-[var(--radius-full)] ds:bg-primary/10 ds:text-primary ds:transition-colors ds:duration-[var(--animation-duration)] ds:group-hover:bg-primary/15 ds:motion-reduce:transition-none\">\n {isDragActive ? (\n <Upload aria-hidden=\"true\" className=\"ds:size-7\" />\n ) : (\n <Upload aria-hidden=\"true\" className=\"ds:size-7\" />\n )}\n </div>\n\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-xs)]\">\n <p className=\"type-label ds:text-foreground ds:text-center ds:m-0\">\n {isDragActive\n ? t('inputs.fileUpload.dropActive', 'Drop files here')\n : t(\n 'inputs.fileUpload.dropHere',\n 'Drop files here or click to browse',\n )}\n </p>\n\n {constraintHints.length > 0 && !isDragActive && (\n <p className=\"type-meta ds:text-muted-foreground ds:text-center ds:m-0\">\n {constraintHints.join(' \\u00b7 ')}\n </p>\n )}\n </div>\n\n {variant === 'both' && !isDragActive && (\n <button\n type=\"button\"\n onClick={(e) => {\n e.stopPropagation();\n open();\n }}\n disabled={effectiveDisabled}\n className={browseButtonVariants({\n className: 'ds:mt-[var(--spacing-xs)]',\n })}\n >\n <Upload aria-hidden=\"true\" className=\"ds:size-4\" />\n {t('inputs.fileUpload.browse', 'Browse files')}\n </button>\n )}\n </div>\n </div>\n );\n };\n\n const renderButton = () => {\n if (variant === 'dropzone') return null;\n\n if (variant === 'button') {\n return (\n <div onPaste={handlePaste} ref={ref}>\n <input\n {...getInputProps({\n 'aria-label': t('inputs.fileUpload.browse', 'Browse files'),\n })}\n />\n <button\n type=\"button\"\n onClick={open}\n disabled={effectiveDisabled}\n className={browseButtonVariants({ className })}\n id={variant === 'button' ? inputId : undefined}\n aria-describedby={\n variant === 'button' ? ctx.describedBy || undefined : undefined\n }\n aria-invalid={\n variant === 'button' ? ctx.invalid || undefined : undefined\n }\n aria-required={\n variant === 'button' ? ctx.required || undefined : undefined\n }\n >\n <Upload aria-hidden=\"true\" className=\"ds:size-4\" />\n {t('inputs.fileUpload.browse', 'Browse files')}\n </button>\n </div>\n );\n }\n\n return null;\n };\n\n return (\n <div data-component=\"file-upload\" data-component-id={id}>\n {renderDropzone()}\n {renderButton()}\n {renderFileList()}\n\n {errorMessages.length > 0 && (\n <div\n role=\"alert\"\n className=\"ds:mt-[var(--spacing-sm)] ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\"\n >\n {errorMessages.map((msg, i) => (\n <div\n key={i}\n className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\"\n >\n <CircleAlert\n aria-hidden=\"true\"\n className=\"ds:size-3.5 ds:shrink-0 ds:text-destructive\"\n />\n <p className=\"type-meta ds:text-destructive ds:m-0\">{msg}</p>\n </div>\n ))}\n </div>\n )}\n\n <span\n ref={statusRef}\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:sr-only\"\n />\n </div>\n );\n },\n);\n\nFileUpload.displayName = 'FileUpload';\n"],"names":["__iconNode","FileArchive","createLucideIcon","LoaderCircle","fileUploadAgent","handle","args","dropzoneVariants","cva","browseButtonVariants","fileItemVariants","actionButtonVariants","generateId","isImageFile","file","getFileIcon","ext","_a","jsx","FileText","FileSpreadsheet","FileImage","FileIcon","getStatusIcon","status","CircleCheck","CircleAlert","UNIT_KEYS","UNIT_FALLBACKS","formatFileSize","bytes","locale","t","value","unitIndex","formatted","unit","mapRejectionCode","code","getExtensionFromName","name","parts","isAcceptedFile","accept","fileExt","mime","extensions","mimeMatch","extMatch","formatAcceptHint","exts","mimeLabels","FileUpload","forwardRef","id","maxSize","minSize","maxFiles","multiple","disabled","strictAccept","onDropProp","onUpload","onRemove","onReject","variant","showPreview","className","ref","i18n","useTranslation","ctx","useFormField","fallbackId","useId","effectiveDisabled","hasError","inputId","files","setFiles","useState","rejections","setRejections","abortControllers","useRef","statusRef","filesRef","announceStatus","useCallback","message","validateStrictAccept","uploadFile","uploadFileState","controller","prev","f","percent","err","errorMessage","handleDrop","accepted","fileRejections","mapped","r","e","strictRejected","strictAccepted","allRejections","newFiles","nf","getRootProps","getInputProps","isDragActive","open","useDropzone","handleCancel","fileId","handleRemove","removed","clearAll","agentHandle","useMemo","useAgentRegistration","validatePastedFiles","pastedFiles","rejected","effectiveMaxFiles","handlePaste","event","useEffect","constraintHints","hints","errorMessages","renderFileList","jsxs","X","renderDropzone","rootProps","rootRefFromDropzone","node","Upload","renderButton","msg","i"],"mappings":"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","x_google_ignoreList":[0,1]}
@@ -1 +0,0 @@
1
- {"version":3,"file":"key-value-pair-BIBdZBLg.js","sources":["../../src/components/key-value-pair/key-value-pair.tsx"],"sourcesContent":["import { forwardRef, useState, useCallback, type HTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Copy, Check } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\n\n/* ------------------------------------------------------------------ */\n/* CVA — root wrapper */\n/* */\n/* The layout variants below describe the LOGICAL flow of label/value. */\n/* When an `icon` prop is supplied, the root flips to `flex-row` and */\n/* renders the icon at the leading edge regardless of the chosen */\n/* layout — the layout then governs the inner label/value stack. Cap- */\n/* height alignment is handled by `items-start` + a small `mt` offset */\n/* on the icon wrapper so a wrapping value doesn't push the icon */\n/* downward. */\n/* ------------------------------------------------------------------ */\n\n/* ------------------------------------------------------------------ */\n/* CVA — value cell */\n/* */\n/* `alignValue` decides whether the value starts beside the label or */\n/* is pinned to the inline-end of the row. Pinning matters when a */\n/* column of rows carries one comparable figure (a price, a count): */\n/* left where it falls, its position shifts with the label width and */\n/* the eye can't run down it. */\n/* */\n/* Standalone, the value is a flex sibling — `start` lets it absorb */\n/* the free space, `end` pushes it over with an auto inline margin. */\n/* Inside a `<KeyValueList>` the value is a grid item in the third */\n/* track (`minmax(0,1fr)`), where the same auto margin pins it to the */\n/* track's end. One pair of classes covers both. */\n/* */\n/* Horizontal only. In `vertical` the value already sits below the */\n/* label with nothing to pin against, so `alignValue` is a documented */\n/* no-op there rather than a surprise. */\n/* ------------------------------------------------------------------ */\n\nconst keyValuePairValueVariants = cva(\n 'type-body ds:text-foreground ds:min-w-0 ds:[unicode-bidi:isolate]',\n {\n variants: {\n layout: {\n horizontal: '',\n vertical: 'ds:shrink',\n },\n alignValue: {\n start: '',\n end: '',\n },\n mono: {\n true: 'ds:font-[family-name:var(--font-mono)]',\n false: '',\n },\n },\n compoundVariants: [\n // `flex-1` lets the value absorb the remaining inline space when\n // the KVP root flexes icon / label / value as direct siblings.\n // Without it the value shrinks to its content width and the row\n // leaves inline-end whitespace.\n {\n layout: 'horizontal',\n alignValue: 'start',\n class: 'ds:flex-1 ds:shrink',\n },\n // Pinned: drop `flex-1` so the cell is content-width, then let an\n // auto inline-start margin eat the slack. `ms-*` is the logical\n // spelling, so this flips correctly in a right-to-left locale.\n {\n layout: 'horizontal',\n alignValue: 'end',\n class: 'ds:ms-auto ds:shrink-0',\n },\n ],\n defaultVariants: {\n layout: 'horizontal',\n alignValue: 'start',\n mono: false,\n },\n },\n);\n\nconst keyValuePairVariants = cva('ds:flex', {\n variants: {\n layout: {\n horizontal: 'ds:flex-row ds:items-center ds:gap-[var(--spacing-sm)]',\n vertical: 'ds:flex-col ds:gap-[var(--spacing-xs)]',\n },\n /** Internal — flips the root to a horizontal flex when an icon\n is present so the icon can sit at the leading edge of both\n horizontal and vertical inner stacks. `items-start` keeps the\n icon anchored to the label row even when the value wraps. */\n hasIcon: {\n true: 'ds:flex-row ds:items-start ds:gap-[var(--spacing-sm)]',\n false: '',\n },\n },\n defaultVariants: {\n layout: 'horizontal',\n hasIcon: false,\n },\n});\n\n/* ------------------------------------------------------------------ */\n/* KeyValuePairProps */\n/* ------------------------------------------------------------------ */\n\nexport interface KeyValuePairProps\n extends\n React.HTMLAttributes<HTMLDivElement>,\n Omit<VariantProps<typeof keyValuePairVariants>, 'hasIcon'> {\n /** The label (term) */\n label: string;\n /** The value — accepts plain text, Badge, Tag, monospace code, any ReactNode */\n value: React.ReactNode;\n /** Layout direction */\n layout?: 'horizontal' | 'vertical';\n /** Render value in monospace font */\n mono?: boolean;\n /**\n * Where the value sits on the row.\n *\n * `start` (default) keeps the existing behaviour — the value begins\n * immediately after the label and absorbs the remaining width.\n *\n * `end` pins the value to the inline-end of the row, so its position\n * no longer moves with the label's length. Use it for the one\n * comparable figure in a list of rows — a price, a count, a score —\n * where a reader wants to scan down a column rather than read each\n * line. Pinning every row defeats the point.\n *\n * Horizontal layout only: in `vertical` the value already sits below\n * the label, so there is nothing to pin against and this is ignored.\n */\n alignValue?: 'start' | 'end';\n /** Show a copy-to-clipboard IconButton beside the value */\n copyable?: boolean;\n /** The text to copy — defaults to `value` if value is a string */\n copyText?: string;\n /**\n * Optional decorative icon rendered at the leading edge of the pair.\n * Pass a `lucide-react` icon (or any single React element) for\n * visual consistency. The wrapper applies `aria-hidden=\"true\"` and\n * paints the icon with `var(--key-value-pair-icon-color)` (defaults\n * to `--muted-foreground`); consumers can recolour the slot via\n * that token without forking the component.\n *\n * Cap-height alignment with the label is automatic — the wrapper\n * uses `mt-0.5` so the glyph rides the label row, not the\n * geometric centre of a wrapping value.\n *\n * Type is `ReactElement` (not the broader `ReactNode`) so the\n * intent is clear at the call site: this slot is for a single\n * SVG/icon, not arbitrary fragments, strings, or numbers.\n */\n icon?: React.ReactElement | null;\n}\n\n/* ------------------------------------------------------------------ */\n/* KeyValuePair */\n/* ------------------------------------------------------------------ */\n\nexport const KeyValuePair = forwardRef<HTMLDivElement, KeyValuePairProps>(\n (\n {\n label,\n value,\n layout = 'horizontal',\n alignValue = 'start',\n mono = false,\n copyable = false,\n copyText,\n icon,\n className,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const [copied, setCopied] = useState(false);\n const [announcement, setAnnouncement] = useState('');\n\n const textToCopy =\n copyText ?? (typeof value === 'string' ? value : undefined);\n\n const handleCopy = useCallback(async () => {\n if (!textToCopy) {\n if (import.meta.env.DEV) {\n console.warn(\n 'KeyValuePair: copyable is true but no copyText was provided and value is not a string. Copy no-op.',\n );\n }\n return;\n }\n\n try {\n await navigator.clipboard.writeText(textToCopy);\n setCopied(true);\n setAnnouncement(t('keyValuePair.copied'));\n setTimeout(() => {\n setCopied(false);\n setAnnouncement('');\n }, 2000);\n } catch {\n setAnnouncement(t('keyValuePair.notAvailable'));\n setTimeout(() => setAnnouncement(''), 3000);\n }\n }, [textToCopy, t]);\n\n const valueClasses = keyValuePairValueVariants({\n layout,\n alignValue,\n mono,\n });\n\n const hasIcon = icon !== undefined && icon !== null;\n\n // Inner stack — used ONLY for `layout=\"vertical\"` when an icon is\n // present (icon on the leading edge, label-on-top-of-value stacked\n // next to it). For `layout=\"horizontal\"` we render the icon /\n // label / value as direct flex children of the root — wrapping\n // them in a single `<div>` would break the KeyValueList subgrid\n // (the subgrid's 3 tracks would collapse to 2: the wrapper +\n // icon). See the conditional below.\n const innerStackClass =\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:min-w-0 ds:flex-1';\n\n const stack = (\n <>\n <span className=\"type-label ds:text-muted-foreground ds:shrink-0\">\n {label}\n <span className=\"ds:sr-only\">: </span>\n </span>\n <span className={valueClasses}>{value}</span>\n {copyable && (\n <IconButton\n icon={copied ? <Check /> : <Copy />}\n size=\"sm\"\n aria-label={t('keyValuePair.copy', { label })}\n onClick={handleCopy}\n intent=\"ghost\"\n className={\n layout === 'horizontal'\n ? // Only one element on the row may claim the slack. When\n // the value is pinned it has already taken it with its\n // own `ms-auto`; a second auto margin here would split\n // the free space between them and strand the value in\n // the middle of the row instead of at its end.\n alignValue === 'end'\n ? 'ds:shrink-0'\n : 'ds:ms-auto ds:shrink-0'\n : 'ds:self-start'\n }\n />\n )}\n </>\n );\n\n return (\n <div\n ref={ref}\n className={keyValuePairVariants({ layout, hasIcon, className })}\n data-component=\"key-value-pair\"\n {...props}\n >\n {hasIcon ? (\n <>\n {/* Decorative icon wrapper. `aria-hidden` so SR users only\n hear \"<label>: <value>\" — the icon is brand polish,\n not semantic content.\n\n `translate-y` shifts the icon down by 2px visually so\n its centre lines up with the label's x-height centre.\n In a baseline-aligned subgrid row, the icon's margin-\n box bottom pins to the label's text baseline — that\n leaves the 16px SVG sitting visually 3-4px above the\n label's centre. `translate-y` adjusts only the paint\n position; the underlying baseline math still holds,\n so multi-line value cells (e.g. address + map link)\n stay correctly aligned with the FIRST line of the\n value. */}\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:shrink-0 ds:translate-y-0.5 ds:text-[color:var(--key-value-pair-icon-color)] ds:[&_svg]:size-4\"\n >\n {icon}\n </span>\n {/* `horizontal` layout: render label / value / copy as\n direct flex children of the root so each piece falls\n into its own track when this KVP is promoted to a\n subgrid row by `<KeyValueList>`. Wrapping them in a\n `<div>` here would collapse the subgrid's 3 tracks\n (icon | label | value) to 2 (icon | wrapper) and labels\n across rows would no longer share a column. The root's\n `flex flex-row` + `gap-sm` keeps the standalone visual\n identical.\n\n `vertical` layout still needs the wrapper because the\n stack is column-flow — label-on-top-of-value next to\n the icon. */}\n {layout === 'horizontal' ? (\n stack\n ) : (\n <div className={innerStackClass}>{stack}</div>\n )}\n </>\n ) : (\n stack\n )}\n <span role=\"status\" aria-live=\"polite\" className=\"ds:sr-only\">\n {announcement}\n </span>\n </div>\n );\n },\n);\n\nKeyValuePair.displayName = 'KeyValuePair';\n\n/* ------------------------------------------------------------------ */\n/* KeyValueList — subgrid alignment for a column of KVP rows */\n/* */\n/* When several `<KeyValuePair>` rows live in the same card (practice */\n/* profile, settings panel, contact card, etc.), the per-row flex */\n/* layout means each row's label column has a different width. The */\n/* values end up zigzagged. Wrapping in `<KeyValueList>` puts all rows */\n/* into a single 3-column CSS subgrid (icon | label | value), so */\n/* labels share a column across rows and values start at the same */\n/* inline-start edge. */\n/* */\n/* Standalone `<KeyValuePair>` instances outside a `<KeyValueList>` */\n/* keep their existing per-row flex layout — no behaviour change for */\n/* consumers that didn't opt in. */\n/* ------------------------------------------------------------------ */\n\nexport interface KeyValueListProps extends HTMLAttributes<HTMLDivElement> {\n /**\n * Gap between rows. Maps to spacing tokens — defaults to `md`.\n * Smaller gaps suit dense settings panels; larger gaps suit\n * profile cards.\n */\n rowGap?: 'sm' | 'md' | 'lg';\n}\n\nconst rowGapClassMap: Record<\n NonNullable<KeyValueListProps['rowGap']>,\n string\n> = {\n sm: 'ds:gap-y-[var(--spacing-sm)]',\n md: 'ds:gap-y-[var(--spacing-md)]',\n lg: 'ds:gap-y-[var(--spacing-lg)]',\n};\n\nexport const KeyValueList = forwardRef<HTMLDivElement, KeyValueListProps>(\n ({ children, className, rowGap = 'md', ...props }, ref) => {\n // Three-column subgrid: icon | label | value.\n // - col 1: `auto` — width of the widest icon (or 0 if no rows have icons)\n // - col 2: `auto` — width of the widest label, shared across all rows\n // - col 3: `minmax(0, 1fr)` — value flexes; `minmax` prevents the\n // value from forcing the grid wider than its container when the\n // value contains a long unbroken string (e.g. an email or URL).\n //\n // Each child `<KeyValuePair>` (which renders as a `<div>` with a\n // `data-component=\"key-value-pair\"` marker) is promoted into a\n // subgrid row by the CSS below — the cell boundaries align across\n // every direct child.\n //\n // We render as `<div>` (not `<dl>`): axe enforces \"dl can only\n // contain dt/dd\" and the inner KVP renders as a `<div>`. The KVP's\n // own SR markup (label + `<span class=\"sr-only\">: </span>` + value)\n // already conveys term-value semantics — wrapping in a `<dl>`\n // doesn't add anything the screen reader doesn't already get.\n return (\n <div\n ref={ref}\n data-component=\"key-value-list\"\n className={[\n 'ds:grid ds:grid-cols-[auto_auto_minmax(0,1fr)]',\n 'ds:gap-x-[var(--spacing-md)]',\n rowGapClassMap[rowGap],\n // Each direct `data-component=\"key-value-pair\"` child becomes\n // a subgrid row spanning all three columns. The KVP's own\n // flex layout still works inside the cell (icon shrinks-0,\n // label shrinks-0, value flexes) — subgrid just aligns the\n // boundaries between siblings.\n 'ds:[&>[data-component=\"key-value-pair\"]]:grid',\n 'ds:[&>[data-component=\"key-value-pair\"]]:grid-cols-subgrid',\n 'ds:[&>[data-component=\"key-value-pair\"]]:col-span-3',\n 'ds:[&>[data-component=\"key-value-pair\"]]:items-baseline',\n // Unset the KVP's intra-row `gap-sm` so the subgrid inherits\n // the parent KeyValueList's `gap-x-md` for every track gap\n // (icon→label and label→value). `gap-0` here would override\n // the parent's gap and crowd the icon against the label;\n // `[gap:normal]` is the subgrid-spec way to defer to the\n // parent.\n 'ds:[&>[data-component=\"key-value-pair\"]]:[gap:normal]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n {children}\n </div>\n );\n },\n);\n\nKeyValueList.displayName = 'KeyValueList';\n"],"names":["keyValuePairValueVariants","cva","keyValuePairVariants","KeyValuePair","forwardRef","label","value","layout","alignValue","mono","copyable","copyText","icon","className","props","ref","t","useTranslation","copied","setCopied","useState","announcement","setAnnouncement","textToCopy","handleCopy","useCallback","valueClasses","hasIcon","innerStackClass","stack","jsxs","Fragment","jsx","IconButton","Check","Copy","rowGapClassMap","KeyValueList","children","rowGap"],"mappings":"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"}
@@ -1,105 +0,0 @@
1
- import { jsxs as s, jsx as r } from "react/jsx-runtime";
2
- import { forwardRef as b, useContext as P, createContext as k } from "react";
3
- import { c as i } from "./index-D2ZczOXr.js";
4
- const l = k(null);
5
- function C({
6
- actions: a,
7
- children: e
8
- }) {
9
- return /* @__PURE__ */ r(l.Provider, { value: a, children: e });
10
- }
11
- function y() {
12
- return P(l);
13
- }
14
- const N = i(
15
- [
16
- "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]",
17
- "ds:px-[var(--spacing-md)] ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-sm)]"
18
- ].join(" "),
19
- {
20
- variants: {
21
- // `sticky` pins the header to the top of the panel's scroll region;
22
- // otherwise it stays a fixed-height band that never shrinks.
23
- sticky: {
24
- true: "ds:sticky ds:top-0 ds:z-[1] ds:bg-[color:var(--background)]",
25
- false: "ds:shrink-0"
26
- },
27
- divider: {
28
- true: "ds:border-b ds:border-[color:var(--border)]",
29
- false: ""
30
- }
31
- },
32
- defaultVariants: {
33
- sticky: !1,
34
- divider: !0
35
- }
36
- }
37
- ), j = i(
38
- [
39
- "ds:m-0 ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]",
40
- "ds:text-[color:var(--foreground)]"
41
- ].join(" "),
42
- {
43
- variants: {
44
- titleScale: {
45
- card: "type-title-card",
46
- section: "type-title-section"
47
- }
48
- },
49
- defaultVariants: {
50
- titleScale: "card"
51
- }
52
- }
53
- ), H = b(
54
- ({
55
- title: a,
56
- icon: e,
57
- headingId: c,
58
- headingLevel: o = 2,
59
- actions: d,
60
- filters: n,
61
- sticky: p = !1,
62
- divider: u = !0,
63
- titleScale: m = "card",
64
- className: v,
65
- ...f
66
- }, g) => {
67
- const t = y(), x = o === 3 ? "h3" : "h2", h = d != null || t != null;
68
- return /* @__PURE__ */ s(
69
- "header",
70
- {
71
- ref: g,
72
- "data-component": "panel-header",
73
- className: N({ sticky: p, divider: u, className: v }),
74
- ...f,
75
- children: [
76
- /* @__PURE__ */ s("div", { className: "ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]", children: [
77
- /* @__PURE__ */ s(x, { id: c, className: j({ titleScale: m }), children: [
78
- e ? /* @__PURE__ */ r(
79
- "span",
80
- {
81
- "aria-hidden": "true",
82
- className: "ds:inline-flex ds:shrink-0 ds:text-[color:var(--accent)] ds:[&_svg]:size-4",
83
- children: e
84
- }
85
- ) : null,
86
- a
87
- ] }),
88
- h ? /* @__PURE__ */ s("div", { className: "ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:shrink-0", children: [
89
- d,
90
- t
91
- ] }) : null
92
- ] }),
93
- n != null ? /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]", children: n }) : null
94
- ]
95
- }
96
- );
97
- }
98
- );
99
- H.displayName = "PanelHeader";
100
- export {
101
- H as P,
102
- C as a,
103
- y as u
104
- };
105
- //# sourceMappingURL=panel-header-D313n_9-.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"panel-header-D313n_9-.js","sources":["../../src/components/panel-header/panel-header.tsx"],"sourcesContent":["import {\n createContext,\n forwardRef,\n useContext,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\n\n/* -------------------------------------------------------------------- */\n/* PanelHeader */\n/* */\n/* The single header pattern every rail panel adopts: a title row */\n/* (optional leading glyph + heading on the start, an action cluster on */\n/* the end), an optional sticky second row of filters, an optional */\n/* bottom divider, and edge handling (shrink-0 vs sticky). It */\n/* standardises the bespoke <header> markup that AppointmentTimeline, */\n/* TasksPanel and friends each re-authored. */\n/* */\n/* The action cluster holds the PANEL-OWNED `actions` first, then any */\n/* RAIL-INJECTED actions read from context (PanelHeaderActionsProvider). */\n/* Standalone — with no provider — nothing is injected. The component */\n/* owns no user-visible strings of its own: `title`, `actions` and */\n/* `filters` are all caller-supplied nodes already translated upstream. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Rail-actions context */\n/* -------------------------------------------------------------------- */\n\nconst PanelHeaderActionsContext = createContext<ReactNode>(null);\n\n/**\n * Provides rail-injected actions that every descendant `PanelHeader`\n * appends to its action cluster, after the panel's own `actions`. The\n * rail (or any host) wraps the panel subtree once; standalone panels\n * render without a provider and inject nothing.\n */\nexport function PanelHeaderActionsProvider({\n actions,\n children,\n}: {\n actions: ReactNode;\n children: ReactNode;\n}) {\n return (\n <PanelHeaderActionsContext.Provider value={actions}>\n {children}\n </PanelHeaderActionsContext.Provider>\n );\n}\n\n/** Reads the rail-injected actions for the current subtree (default `null`). */\nexport function usePanelHeaderActions(): ReactNode {\n return useContext(PanelHeaderActionsContext);\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------- */\n\nconst headerVariants = cva(\n [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]',\n 'ds:px-[var(--spacing-md)] ds:pt-[var(--spacing-md)] ds:pb-[var(--spacing-sm)]',\n ].join(' '),\n {\n variants: {\n // `sticky` pins the header to the top of the panel's scroll region;\n // otherwise it stays a fixed-height band that never shrinks.\n sticky: {\n true: 'ds:sticky ds:top-0 ds:z-[1] ds:bg-[color:var(--background)]',\n false: 'ds:shrink-0',\n },\n divider: {\n true: 'ds:border-b ds:border-[color:var(--border)]',\n false: '',\n },\n },\n defaultVariants: {\n sticky: false,\n divider: true,\n },\n },\n);\n\nconst headingVariants = cva(\n [\n 'ds:m-0 ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:text-[color:var(--foreground)]',\n ].join(' '),\n {\n variants: {\n titleScale: {\n card: 'type-title-card',\n section: 'type-title-section',\n },\n },\n defaultVariants: {\n titleScale: 'card',\n },\n },\n);\n\n/* -------------------------------------------------------------------- */\n/* Public API */\n/* -------------------------------------------------------------------- */\n\nexport interface PanelHeaderProps\n extends\n Omit<HTMLAttributes<HTMLElement>, 'title'>,\n VariantProps<typeof headerVariants> {\n /** Heading content. Already translated upstream. */\n title: ReactNode;\n /** Optional leading glyph — auto `aria-hidden` and sized to `--spacing` 4. */\n icon?: ReactNode;\n /** `id` applied to the heading so panels can wire `aria-labelledby`. */\n headingId?: string;\n /** Semantic heading level. Default `2`. */\n headingLevel?: 2 | 3;\n /** Panel-owned actions, rendered inline-end of the title row. */\n actions?: ReactNode;\n /** Optional second row, typically filter controls. */\n filters?: ReactNode;\n /** Pin to the top of the scroll region. Default `false`. */\n sticky?: boolean;\n /** Bottom hairline. Default `true`. */\n divider?: boolean;\n /** Type scale of the heading. Default `'card'`. */\n titleScale?: 'card' | 'section';\n}\n\nexport const PanelHeader = forwardRef<HTMLElement, PanelHeaderProps>(\n (\n {\n title,\n icon,\n headingId,\n headingLevel = 2,\n actions,\n filters,\n sticky = false,\n divider = true,\n titleScale = 'card',\n className,\n ...rest\n },\n ref,\n ) => {\n const injected = usePanelHeaderActions();\n const Heading = headingLevel === 3 ? 'h3' : 'h2';\n const hasActions = actions != null || injected != null;\n\n return (\n <header\n ref={ref}\n data-component=\"panel-header\"\n className={headerVariants({ sticky, divider, className })}\n {...rest}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <Heading id={headingId} className={headingVariants({ titleScale })}>\n {icon ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:shrink-0 ds:text-[color:var(--accent)] ds:[&_svg]:size-4\"\n >\n {icon}\n </span>\n ) : null}\n {title}\n </Heading>\n {hasActions ? (\n <div className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:shrink-0\">\n {actions}\n {injected}\n </div>\n ) : null}\n </div>\n\n {filters != null ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n {filters}\n </div>\n ) : null}\n </header>\n );\n },\n);\n\nPanelHeader.displayName = 'PanelHeader';\n"],"names":["PanelHeaderActionsContext","createContext","PanelHeaderActionsProvider","actions","children","usePanelHeaderActions","useContext","headerVariants","cva","headingVariants","PanelHeader","forwardRef","title","icon","headingId","headingLevel","filters","sticky","divider","titleScale","className","rest","ref","injected","Heading","hasActions","jsxs","jsx"],"mappings":";;;AA8BA,MAAMA,IAA4BC,EAAyB,IAAI;AAQxD,SAASC,EAA2B;AAAA,EACzC,SAAAC;AAAA,EACA,UAAAC;AACF,GAGG;AACD,2BACGJ,EAA0B,UAA1B,EAAmC,OAAOG,GACxC,UAAAC,GACH;AAEJ;AAGO,SAASC,IAAmC;AACjD,SAAOC,EAAWN,CAAyB;AAC7C;AAMA,MAAMO,IAAiBC;AAAA,EACrB;AAAA,IACE;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA;AAAA;AAAA,MAGR,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,MAET,SAAS;AAAA,QACP,MAAM;AAAA,QACN,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,iBAAiB;AAAA,MACf,QAAQ;AAAA,MACR,SAAS;AAAA,IAAA;AAAA,EACX;AAEJ,GAEMC,IAAkBD;AAAA,EACtB;AAAA,IACE;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,YAAY;AAAA,QACV,MAAM;AAAA,QACN,SAAS;AAAA,MAAA;AAAA,IACX;AAAA,IAEF,iBAAiB;AAAA,MACf,YAAY;AAAA,IAAA;AAAA,EACd;AAEJ,GA8BaE,IAAcC;AAAA,EACzB,CACE;AAAA,IACE,OAAAC;AAAA,IACA,MAAAC;AAAA,IACA,WAAAC;AAAA,IACA,cAAAC,IAAe;AAAA,IACf,SAAAZ;AAAA,IACA,SAAAa;AAAA,IACA,QAAAC,IAAS;AAAA,IACT,SAAAC,IAAU;AAAA,IACV,YAAAC,IAAa;AAAA,IACb,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAWlB,EAAA,GACXmB,IAAUT,MAAiB,IAAI,OAAO,MACtCU,IAAatB,KAAW,QAAQoB,KAAY;AAElD,WACE,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,kBAAe;AAAA,QACf,WAAWf,EAAe,EAAE,QAAAU,GAAQ,SAAAC,GAAS,WAAAE,GAAW;AAAA,QACvD,GAAGC;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAK,EAAC,OAAA,EAAI,WAAU,yEACb,UAAA;AAAA,YAAA,gBAAAA,EAACF,GAAA,EAAQ,IAAIV,GAAW,WAAWL,EAAgB,EAAE,YAAAU,GAAY,GAC9D,UAAA;AAAA,cAAAN,IACC,gBAAAc;AAAA,gBAAC;AAAA,gBAAA;AAAA,kBACC,eAAY;AAAA,kBACZ,WAAU;AAAA,kBAET,UAAAd;AAAA,gBAAA;AAAA,cAAA,IAED;AAAA,cACHD;AAAA,YAAA,GACH;AAAA,YACCa,IACC,gBAAAC,EAAC,OAAA,EAAI,WAAU,kEACZ,UAAA;AAAA,cAAAvB;AAAA,cACAoB;AAAA,YAAA,EAAA,CACH,IACE;AAAA,UAAA,GACN;AAAA,UAECP,KAAW,OACV,gBAAAW,EAAC,SAAI,WAAU,mEACZ,aACH,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEAjB,EAAY,cAAc;"}