@alfadocs/ui-kit-debug 1.38.0 → 1.40.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.
- package/dist/_chunks/{actions-cell-renderer-CUn1pqEq.js → actions-cell-renderer-BXBy9c0f.js} +3 -3
- package/dist/_chunks/{actions-cell-renderer-CUn1pqEq.js.map → actions-cell-renderer-BXBy9c0f.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-CG6jUjKc.js → agenda-tray-CBaJASb5.js} +3 -3
- package/dist/_chunks/{agenda-tray-CG6jUjKc.js.map → agenda-tray-CBaJASb5.js.map} +1 -1
- package/dist/_chunks/{ai-consent-banner-De4gzSBZ.js → ai-consent-banner-D7I2U-cz.js} +37 -36
- package/dist/_chunks/ai-consent-banner-D7I2U-cz.js.map +1 -0
- package/dist/_chunks/{ai-prompt-input-DdxlaI7q.js → ai-prompt-input-DXknpQCB.js} +2 -2
- package/dist/_chunks/{ai-prompt-input-DdxlaI7q.js.map → ai-prompt-input-DXknpQCB.js.map} +1 -1
- package/dist/_chunks/{alia-sidebar-B6bXlZZk.js → alia-sidebar-CUqaJNPQ.js} +7 -7
- package/dist/_chunks/{alia-sidebar-B6bXlZZk.js.map → alia-sidebar-CUqaJNPQ.js.map} +1 -1
- package/dist/_chunks/{anamnesis-card-DGwINeNn.js → anamnesis-card-xtEhyojD.js} +2 -2
- package/dist/_chunks/{anamnesis-card-DGwINeNn.js.map → anamnesis-card-xtEhyojD.js.map} +1 -1
- package/dist/_chunks/{anamnesis-summary-rows-Cxtgo2ok.js → anamnesis-summary-rows-DQUqwWc1.js} +7 -7
- package/dist/_chunks/{anamnesis-summary-rows-Cxtgo2ok.js.map → anamnesis-summary-rows-DQUqwWc1.js.map} +1 -1
- package/dist/_chunks/{appointment-card-WsDGBBut.js → appointment-card-TgR_2GKS.js} +134 -102
- package/dist/_chunks/appointment-card-TgR_2GKS.js.map +1 -0
- package/dist/_chunks/{appointment-peek-5S4O1VQP.js → appointment-peek-abiR0T9e.js} +3 -3
- package/dist/_chunks/{appointment-peek-5S4O1VQP.js.map → appointment-peek-abiR0T9e.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-D-rNwKpS.js → appointment-timeline-CCnyUYKz.js} +67 -63
- package/dist/_chunks/appointment-timeline-CCnyUYKz.js.map +1 -0
- package/dist/_chunks/{appointment-tray-CK2CULg_.js → appointment-tray-N0yEI8UF.js} +4 -4
- package/dist/_chunks/{appointment-tray-CK2CULg_.js.map → appointment-tray-N0yEI8UF.js.map} +1 -1
- package/dist/_chunks/{audio-recorder-BlQBC7N_.js → audio-recorder-B7dT-Y3v.js} +3 -3
- package/dist/_chunks/{audio-recorder-BlQBC7N_.js.map → audio-recorder-B7dT-Y3v.js.map} +1 -1
- package/dist/_chunks/{balance-badge-cell-DHs5p0bA.js → balance-badge-cell-o6LldMUA.js} +5 -5
- package/dist/_chunks/{balance-badge-cell-DHs5p0bA.js.map → balance-badge-cell-o6LldMUA.js.map} +1 -1
- package/dist/_chunks/{bishop-score-D5b8tktp.js → bishop-score-Cu70iv9C.js} +2 -2
- package/dist/_chunks/{bishop-score-D5b8tktp.js.map → bishop-score-Cu70iv9C.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-dOKP-vW4.js → bmi-calculator-C9N19aLX.js} +2 -2
- package/dist/_chunks/{bmi-calculator-dOKP-vW4.js.map → bmi-calculator-C9N19aLX.js.map} +1 -1
- package/dist/_chunks/{booking-x3J7sS2G.js → booking-D43ASl8y.js} +1110 -1104
- package/dist/_chunks/booking-D43ASl8y.js.map +1 -0
- package/dist/_chunks/{button-nJaPh_HC.js → button-CaUe1uyd.js} +11 -7
- package/dist/_chunks/button-CaUe1uyd.js.map +1 -0
- package/dist/_chunks/{button-group-QmN1VdUW.js → button-group-R32U7SyV.js} +2 -2
- package/dist/_chunks/{button-group-QmN1VdUW.js.map → button-group-R32U7SyV.js.map} +1 -1
- package/dist/_chunks/{calendar-7GAUlsNO.js → calendar-ChJQzRw-.js} +2 -2
- package/dist/_chunks/{calendar-7GAUlsNO.js.map → calendar-ChJQzRw-.js.map} +1 -1
- package/dist/_chunks/calendar-workspace-SN23GsXX.js +11378 -0
- package/dist/_chunks/calendar-workspace-SN23GsXX.js.map +1 -0
- package/dist/_chunks/{care-plan-card-COFOI-fI.js → care-plan-card-BOv0NRle.js} +3 -3
- package/dist/_chunks/{care-plan-card-COFOI-fI.js.map → care-plan-card-BOv0NRle.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-BOKn0KW-.js → care-plan-entry-card-d-rZD4li.js} +3 -3
- package/dist/_chunks/{care-plan-entry-card-BOKn0KW-.js.map → care-plan-entry-card-d-rZD4li.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-CbuOuVBw.js → care-plan-header-CEmBXn6-.js} +2 -2
- package/dist/_chunks/{care-plan-header-CbuOuVBw.js.map → care-plan-header-CEmBXn6-.js.map} +1 -1
- package/dist/_chunks/{carousel.agent-Dv4a4M8L.js → carousel.agent-z1yLBpyC.js} +2 -2
- package/dist/_chunks/{carousel.agent-Dv4a4M8L.js.map → carousel.agent-z1yLBpyC.js.map} +1 -1
- package/dist/_chunks/{chart-iWl76PXv.js → chart-PF2krCZC.js} +3 -3
- package/dist/_chunks/{chart-iWl76PXv.js.map → chart-PF2krCZC.js.map} +1 -1
- package/dist/_chunks/{chat-input-qM5QpUSq.js → chat-input-Cj7ZYQr5.js} +2 -2
- package/dist/_chunks/{chat-input-qM5QpUSq.js.map → chat-input-Cj7ZYQr5.js.map} +1 -1
- package/dist/_chunks/{chat-message-RniXtrCH.js → chat-message-BMVxiUIX.js} +3 -3
- package/dist/_chunks/{chat-message-RniXtrCH.js.map → chat-message-BMVxiUIX.js.map} +1 -1
- package/dist/_chunks/{code-block-uVjNSI9g.js → code-block-BB-viuTn.js} +2 -2
- package/dist/_chunks/{code-block-uVjNSI9g.js.map → code-block-BB-viuTn.js.map} +1 -1
- package/dist/_chunks/{connection-status-OEsWjmRk.js → connection-status-BmA9T0UO.js} +3 -3
- package/dist/_chunks/{connection-status-OEsWjmRk.js.map → connection-status-BmA9T0UO.js.map} +1 -1
- package/dist/_chunks/{contact-profile-card--My1H2UD.js → contact-profile-card-Zt6WNg1u.js} +2 -2
- package/dist/_chunks/{contact-profile-card--My1H2UD.js.map → contact-profile-card-Zt6WNg1u.js.map} +1 -1
- package/dist/_chunks/{control-room-rail-DQoHdE1U.js → control-room-rail-CnNZusR5.js} +3 -3
- package/dist/_chunks/{control-room-rail-DQoHdE1U.js.map → control-room-rail-CnNZusR5.js.map} +1 -1
- package/dist/_chunks/{copy-field-fYKpl6aN.js → copy-field-B8XRVmQv.js} +2 -2
- package/dist/_chunks/{copy-field-fYKpl6aN.js.map → copy-field-B8XRVmQv.js.map} +1 -1
- package/dist/_chunks/credit-card-D9XZsHGA.js +15 -0
- package/dist/_chunks/credit-card-D9XZsHGA.js.map +1 -0
- package/dist/_chunks/{cycle-calculator-BJeaXiZv.js → cycle-calculator-BH2StWoT.js} +2 -2
- package/dist/_chunks/{cycle-calculator-BJeaXiZv.js.map → cycle-calculator-BH2StWoT.js.map} +1 -1
- package/dist/_chunks/{dashboard-grid-B23BFzRl.js → dashboard-grid-BcXWL5S9.js} +2 -2
- package/dist/_chunks/{dashboard-grid-B23BFzRl.js.map → dashboard-grid-BcXWL5S9.js.map} +1 -1
- package/dist/_chunks/{data-table-Dy1lyumT.js → data-table-CcAx_I1w.js} +6 -6
- package/dist/_chunks/{data-table-Dy1lyumT.js.map → data-table-CcAx_I1w.js.map} +1 -1
- package/dist/_chunks/{data-table-tabs-BMR0zsVQ.js → data-table-tabs-B9SXA5VP.js} +3 -3
- package/dist/_chunks/{data-table-tabs-BMR0zsVQ.js.map → data-table-tabs-B9SXA5VP.js.map} +1 -1
- package/dist/_chunks/{description-list-C1RXMDZ_.js → description-list-BsJ_6CQE.js} +2 -2
- package/dist/_chunks/{description-list-C1RXMDZ_.js.map → description-list-BsJ_6CQE.js.map} +1 -1
- package/dist/_chunks/{document-preview-DsEyRcNd.js → document-preview-COV0BC6n.js} +2 -2
- package/dist/_chunks/{document-preview-DsEyRcNd.js.map → document-preview-COV0BC6n.js.map} +1 -1
- package/dist/_chunks/{document-scanner-CbWVtm7u.js → document-scanner-B1abl-A4.js} +2 -2
- package/dist/_chunks/{document-scanner-CbWVtm7u.js.map → document-scanner-B1abl-A4.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-Dhc9Ljkb.js → due-date-calculator-Buh_mVHq.js} +2 -2
- package/dist/_chunks/{due-date-calculator-Dhc9Ljkb.js.map → due-date-calculator-Buh_mVHq.js.map} +1 -1
- package/dist/_chunks/{editable-currency-cell-renderer-D7blbDFY.js → editable-currency-cell-renderer-Psb6XKHR.js} +3 -3
- package/dist/_chunks/{editable-currency-cell-renderer-D7blbDFY.js.map → editable-currency-cell-renderer-Psb6XKHR.js.map} +1 -1
- package/dist/_chunks/{editable-description-7ptNpJEg.js → editable-description-ADMVFPUz.js} +3 -3
- package/dist/_chunks/{editable-description-7ptNpJEg.js.map → editable-description-ADMVFPUz.js.map} +1 -1
- package/dist/_chunks/{editor-overlay-8fKAcRsm.js → editor-overlay-9tcPXNWt.js} +2 -2
- package/dist/_chunks/{editor-overlay-8fKAcRsm.js.map → editor-overlay-9tcPXNWt.js.map} +1 -1
- package/dist/_chunks/{empty-state-X0sVPfVo.js → empty-state-BUN_UAWf.js} +2 -2
- package/dist/_chunks/{empty-state-X0sVPfVo.js.map → empty-state-BUN_UAWf.js.map} +1 -1
- package/dist/_chunks/{entity-summary-BbW0mIzU.js → entity-summary-DXejuQ8i.js} +3 -3
- package/dist/_chunks/{entity-summary-BbW0mIzU.js.map → entity-summary-DXejuQ8i.js.map} +1 -1
- package/dist/_chunks/{error-boundary-ayXFCcq4.js → error-boundary-BNT2iQ1w.js} +2 -2
- package/dist/_chunks/{error-boundary-ayXFCcq4.js.map → error-boundary-BNT2iQ1w.js.map} +1 -1
- package/dist/_chunks/{face-scheme-uFvhqz6h.js → face-scheme-Dg6ZyLKb.js} +5 -5
- package/dist/_chunks/{face-scheme-uFvhqz6h.js.map → face-scheme-Dg6ZyLKb.js.map} +1 -1
- package/dist/_chunks/{fetal-weight-C6SxchOv.js → fetal-weight-wx4ycKc6.js} +2 -2
- package/dist/_chunks/{fetal-weight-C6SxchOv.js.map → fetal-weight-wx4ycKc6.js.map} +1 -1
- package/dist/_chunks/{field-array-C9dmRaIM.js → field-array-BW9KeeXG.js} +3 -3
- package/dist/_chunks/{field-array-C9dmRaIM.js.map → field-array-BW9KeeXG.js.map} +1 -1
- package/dist/_chunks/{file-manager-UlcYQv8n.js → file-manager-BfLQxF5t.js} +136 -150
- package/dist/_chunks/file-manager-BfLQxF5t.js.map +1 -0
- package/dist/_chunks/{finished-terminal-Br61Ip4e.js → finished-terminal-DJd7Z_po.js} +2 -2
- package/dist/_chunks/{finished-terminal-Br61Ip4e.js.map → finished-terminal-DJd7Z_po.js.map} +1 -1
- package/dist/_chunks/{fiscal-code-input-CkwIdB1y.js → fiscal-code-input-ODQRd_Sw.js} +2 -2
- package/dist/_chunks/{fiscal-code-input-CkwIdB1y.js.map → fiscal-code-input-ODQRd_Sw.js.map} +1 -1
- package/dist/_chunks/folder-BghC8_S2.js +20 -0
- package/dist/_chunks/folder-BghC8_S2.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-BqGk_SBU.js → freemium-paywall-Cz-O9lQD.js} +2 -2
- package/dist/_chunks/{freemium-paywall-BqGk_SBU.js.map → freemium-paywall-Cz-O9lQD.js.map} +1 -1
- package/dist/_chunks/{gestational-age-calculator-DDOGaPvg.js → gestational-age-calculator-CwbecTul.js} +2 -2
- package/dist/_chunks/{gestational-age-calculator-DDOGaPvg.js.map → gestational-age-calculator-CwbecTul.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-Bb_n6tEa.js → hcg-doubling-BcXriXJe.js} +2 -2
- package/dist/_chunks/{hcg-doubling-Bb_n6tEa.js.map → hcg-doubling-BcXriXJe.js.map} +1 -1
- package/dist/_chunks/{header-BZ4pZlJV.js → header-3o9o9v_T.js} +2 -2
- package/dist/_chunks/{header-BZ4pZlJV.js.map → header-3o9o9v_T.js.map} +1 -1
- package/dist/_chunks/{header-settings-B8mLc03Q.js → header-settings-CTe45iDy.js} +4 -4
- package/dist/_chunks/{header-settings-B8mLc03Q.js.map → header-settings-CTe45iDy.js.map} +1 -1
- package/dist/_chunks/{hover-card-Bcku1GQu.js → hover-card-BMJBVqIf.js} +2 -2
- package/dist/_chunks/{hover-card-Bcku1GQu.js.map → hover-card-BMJBVqIf.js.map} +1 -1
- package/dist/_chunks/{icon-button-8xqRnkdG.js → icon-button-CehAeZoP.js} +2 -2
- package/dist/_chunks/{icon-button-8xqRnkdG.js.map → icon-button-CehAeZoP.js.map} +1 -1
- package/dist/_chunks/{icon-button-group-Dj6CRoYR.js → icon-button-group-DkkdIygu.js} +2 -2
- package/dist/_chunks/{icon-button-group-Dj6CRoYR.js.map → icon-button-group-DkkdIygu.js.map} +1 -1
- package/dist/_chunks/{icon-picker-CTWzlHJr.js → icon-picker-DMEelg9v.js} +3 -3
- package/dist/_chunks/{icon-picker-CTWzlHJr.js.map → icon-picker-DMEelg9v.js.map} +1 -1
- package/dist/_chunks/{image-cropper-C84NDTB7.js → image-cropper-BjPjT7wU.js} +2 -2
- package/dist/_chunks/{image-cropper-C84NDTB7.js.map → image-cropper-BjPjT7wU.js.map} +1 -1
- package/dist/_chunks/{info-tip-ey_Pon2y.js → info-tip-iP2Pm9dh.js} +2 -2
- package/dist/_chunks/{info-tip-ey_Pon2y.js.map → info-tip-iP2Pm9dh.js.map} +1 -1
- package/dist/_chunks/{insert-result-LCNTskNJ.js → insert-result-DPnOBD85.js} +2 -2
- package/dist/_chunks/{insert-result-LCNTskNJ.js.map → insert-result-DPnOBD85.js.map} +1 -1
- package/dist/_chunks/{key-value-pair-DczGb4yz.js → key-value-pair-DaQI_LZB.js} +2 -2
- package/dist/_chunks/{key-value-pair-DczGb4yz.js.map → key-value-pair-DaQI_LZB.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-BNa8x6oJ.js → link-cell-renderer-s3oHzOwi.js} +2 -2
- package/dist/_chunks/{link-cell-renderer-BNa8x6oJ.js.map → link-cell-renderer-s3oHzOwi.js.map} +1 -1
- package/dist/_chunks/{locale-picker-BLeHbFSc.js → locale-picker-CH3kfrIG.js} +3 -3
- package/dist/_chunks/{locale-picker-BLeHbFSc.js.map → locale-picker-CH3kfrIG.js.map} +1 -1
- package/dist/_chunks/{map-view-CCAlC9IL.js → map-view-CHw4RL6w.js} +2 -2
- package/dist/_chunks/{map-view-CCAlC9IL.js.map → map-view-CHw4RL6w.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-BwH6Aruw.js → marketplace-app-shell-d2EtcUbe.js} +4 -4
- package/dist/_chunks/{marketplace-app-shell-BwH6Aruw.js.map → marketplace-app-shell-d2EtcUbe.js.map} +1 -1
- package/dist/_chunks/{message-card-Dm5Xshup.js → message-card-V3sFPiQI.js} +3 -3
- package/dist/_chunks/{message-card-Dm5Xshup.js.map → message-card-V3sFPiQI.js.map} +1 -1
- package/dist/_chunks/{message-tray-CXjVsKqp.js → message-tray-CrRIHfiQ.js} +4 -4
- package/dist/_chunks/{message-tray-CXjVsKqp.js.map → message-tray-CrRIHfiQ.js.map} +1 -1
- package/dist/_chunks/{note-timeline-D2oPuQP6.js → note-timeline-Dn_XTo1s.js} +131 -90
- package/dist/_chunks/note-timeline-Dn_XTo1s.js.map +1 -0
- package/dist/_chunks/{notes-panel-CkbfDDzj.js → notes-panel-CmTqIWlS.js} +277 -241
- package/dist/_chunks/notes-panel-CmTqIWlS.js.map +1 -0
- package/dist/_chunks/{notification-card-ChcK9Wat.js → notification-card-B2gLO6dK.js} +3 -3
- package/dist/_chunks/{notification-card-ChcK9Wat.js.map → notification-card-B2gLO6dK.js.map} +1 -1
- package/dist/_chunks/{notification-tray-_NoChRKi.js → notification-tray-BOEKegVV.js} +4 -4
- package/dist/_chunks/{notification-tray-_NoChRKi.js.map → notification-tray-BOEKegVV.js.map} +1 -1
- package/dist/_chunks/{optical-prescription-cphK41eP.js → optical-prescription-LGgmtcST.js} +2 -2
- package/dist/_chunks/{optical-prescription-cphK41eP.js.map → optical-prescription-LGgmtcST.js.map} +1 -1
- package/dist/_chunks/{panel-subview-BNXN8OEL.js → panel-subview-Cc2Wtt7D.js} +52 -52
- package/dist/_chunks/panel-subview-Cc2Wtt7D.js.map +1 -0
- package/dist/_chunks/{patient-details-2cIaL-Zb.js → patient-details-C8ImUrVg.js} +3 -3
- package/dist/_chunks/{patient-details-2cIaL-Zb.js.map → patient-details-C8ImUrVg.js.map} +1 -1
- package/dist/_chunks/{patient-field-row-IHb2VFc2.js → patient-field-row-BRSOKvme.js} +7 -7
- package/dist/_chunks/{patient-field-row-IHb2VFc2.js.map → patient-field-row-BRSOKvme.js.map} +1 -1
- package/dist/_chunks/{patient-search-D08b6jgj.js → patient-search-5QcmQKJD.js} +2 -2
- package/dist/_chunks/{patient-search-D08b6jgj.js.map → patient-search-5QcmQKJD.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-B131Q7Bp.js → patient-summary-card-BhmKB2KR.js} +7 -7
- package/dist/_chunks/patient-summary-card-BhmKB2KR.js.map +1 -0
- package/dist/_chunks/{payment-automation-upsell-BLTdE2em.js → payment-automation-upsell-BKmBXU4i.js} +17 -16
- package/dist/_chunks/{payment-automation-upsell-BLTdE2em.js.map → payment-automation-upsell-BKmBXU4i.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-BxcdvxKR.js → payment-request-card-Cer6XXCn.js} +6 -5
- package/dist/_chunks/{payment-request-card-BxcdvxKR.js.map → payment-request-card-Cer6XXCn.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-BF_e3wZp.js → periodontal-chart-DJoZS_o7.js} +2 -2
- package/dist/_chunks/{periodontal-chart-BF_e3wZp.js.map → periodontal-chart-DJoZS_o7.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-card-BJEuJuzh.js → periodontal-chart-card-Nd1ZoYWb.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-BJEuJuzh.js.map → periodontal-chart-card-Nd1ZoYWb.js.map} +1 -1
- package/dist/_chunks/{popover-DzR5QYxp.js → popover-DO-pssF3.js} +2 -2
- package/dist/_chunks/{popover-DzR5QYxp.js.map → popover-DO-pssF3.js.map} +1 -1
- package/dist/_chunks/{practice-results-CBNRJNnY.js → practice-results-D_jjzwgf.js} +5 -5
- package/dist/_chunks/{practice-results-CBNRJNnY.js.map → practice-results-D_jjzwgf.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-nV1_S6w0.js → pregnancy-dating-DcyV9ZRD.js} +2 -2
- package/dist/_chunks/{pregnancy-dating-nV1_S6w0.js.map → pregnancy-dating-DcyV9ZRD.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-tRecShAD.js → pregnancy-weight-gain-Bfq4Kwt5.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-tRecShAD.js.map → pregnancy-weight-gain-Bfq4Kwt5.js.map} +1 -1
- package/dist/_chunks/{privacy-lock-Be39vQUN.js → privacy-lock-CbFCAMM3.js} +3 -3
- package/dist/_chunks/{privacy-lock-Be39vQUN.js.map → privacy-lock-CbFCAMM3.js.map} +1 -1
- package/dist/_chunks/{product-hub-panel-C3bMjscm.js → product-hub-panel-w40-_-1s.js} +3 -3
- package/dist/_chunks/{product-hub-panel-C3bMjscm.js.map → product-hub-panel-w40-_-1s.js.map} +1 -1
- package/dist/_chunks/{public-header.agent-Bl1KFwSE.js → public-header.agent-D-EBVskf.js} +3 -3
- package/dist/_chunks/{public-header.agent-Bl1KFwSE.js.map → public-header.agent-D-EBVskf.js.map} +1 -1
- package/dist/_chunks/{radiograph-panel.agent-k0G7JuoM.js → radiograph-panel.agent-LrILY2lN.js} +4 -4
- package/dist/_chunks/{radiograph-panel.agent-k0G7JuoM.js.map → radiograph-panel.agent-LrILY2lN.js.map} +1 -1
- package/dist/_chunks/{receipt-euro-C6k4Gzhr.js → receipt-euro-B1cLM_TN.js} +3 -14
- package/dist/_chunks/receipt-euro-B1cLM_TN.js.map +1 -0
- package/dist/_chunks/{reviews-panel-Cy969x7q.js → reviews-panel-2GVuxGeT.js} +4 -4
- package/dist/_chunks/{reviews-panel-Cy969x7q.js.map → reviews-panel-2GVuxGeT.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-BTXlorm5.js → rich-text-editor-BJ1-Lkao.js} +1024 -932
- package/dist/_chunks/rich-text-editor-BJ1-Lkao.js.map +1 -0
- package/dist/_chunks/{session-countdown-QMsnRa1x.js → session-countdown-BqppPrw6.js} +2 -2
- package/dist/_chunks/{session-countdown-QMsnRa1x.js.map → session-countdown-BqppPrw6.js.map} +1 -1
- package/dist/_chunks/{sheet-hm04DGFd.js → sheet-C8WIDFS8.js} +2 -2
- package/dist/_chunks/{sheet-hm04DGFd.js.map → sheet-C8WIDFS8.js.map} +1 -1
- package/dist/_chunks/{sign-in-with-alfadocs-button-BLe_quy5.js → sign-in-with-alfadocs-button-DWwBJtyE.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-BLe_quy5.js.map → sign-in-with-alfadocs-button-DWwBJtyE.js.map} +1 -1
- package/dist/_chunks/{signature-request-b-86AGlT.js → signature-request-D_j2aQu1.js} +359 -370
- package/dist/_chunks/signature-request-D_j2aQu1.js.map +1 -0
- package/dist/_chunks/{slot-grid-Bk3GZL1p.js → slot-grid-B3eOPkKD.js} +4 -4
- package/dist/_chunks/{slot-grid-Bk3GZL1p.js.map → slot-grid-B3eOPkKD.js.map} +1 -1
- package/dist/_chunks/{streaming-text-DjFqLSt_.js → streaming-text-CE1u_oGa.js} +2 -2
- package/dist/_chunks/{streaming-text-DjFqLSt_.js.map → streaming-text-CE1u_oGa.js.map} +1 -1
- package/dist/_chunks/{task-tray-5co9Jr2L.js → task-tray-DIwjAIes.js} +3 -3
- package/dist/_chunks/{task-tray-5co9Jr2L.js.map → task-tray-DIwjAIes.js.map} +1 -1
- package/dist/_chunks/{tasks-panel-BpH-x7U3.js → tasks-panel-CpcikOeY.js} +5 -5
- package/dist/_chunks/{tasks-panel-BpH-x7U3.js.map → tasks-panel-CpcikOeY.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-CMz8YfC1.js → theme-toggle-bI0pgDDv.js} +3 -3
- package/dist/_chunks/{theme-toggle-CMz8YfC1.js.map → theme-toggle-bI0pgDDv.js.map} +1 -1
- package/dist/_chunks/{toast-8jqtbfAB.js → toast-ZZfhA5u0.js} +2 -2
- package/dist/_chunks/{toast-8jqtbfAB.js.map → toast-ZZfhA5u0.js.map} +1 -1
- package/dist/_chunks/{token-insert-menu-9Um0JinI.js → token-insert-menu-A9B5AJw6.js} +2 -2
- package/dist/_chunks/{token-insert-menu-9Um0JinI.js.map → token-insert-menu-A9B5AJw6.js.map} +1 -1
- package/dist/_chunks/tool-rail-D89USYE6.js +799 -0
- package/dist/_chunks/tool-rail-D89USYE6.js.map +1 -0
- package/dist/_chunks/{tooth-scheme-BWkYxxjR.js → tooth-scheme-DPAq0vQK.js} +3 -3
- package/dist/_chunks/{tooth-scheme-BWkYxxjR.js.map → tooth-scheme-DPAq0vQK.js.map} +1 -1
- package/dist/_chunks/{transaction-chip-Dth1nThY.js → transaction-chip-CwgcJiqF.js} +47 -46
- package/dist/_chunks/{transaction-chip-Dth1nThY.js.map → transaction-chip-CwgcJiqF.js.map} +1 -1
- package/dist/_chunks/{unit-converter-BTgU50gk.js → unit-converter-C-LpGzrN.js} +2 -2
- package/dist/_chunks/{unit-converter-BTgU50gk.js.map → unit-converter-C-LpGzrN.js.map} +1 -1
- package/dist/_chunks/user-plus-BtcOLgNU.js +17 -0
- package/dist/_chunks/user-plus-BtcOLgNU.js.map +1 -0
- package/dist/_chunks/{warning-stack-BW5Dwb3z.js → warning-stack-C0glSB7p.js} +3 -3
- package/dist/_chunks/{warning-stack-BW5Dwb3z.js.map → warning-stack-C0glSB7p.js.map} +1 -1
- package/dist/_chunks/{workflow-map-CXdsxvUj.js → workflow-map-DhR_h5yw.js} +5 -5
- package/dist/_chunks/{workflow-map-CXdsxvUj.js.map → workflow-map-DhR_h5yw.js.map} +1 -1
- package/dist/agent-catalog.json +3 -418
- package/dist/agent-i18n/en.json +2 -18
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-consent-banner/ai-consent-banner.d.ts +9 -0
- package/dist/components/ai-consent-banner/ai-consent-banner.d.ts.map +1 -1
- package/dist/components/ai-consent-banner/index.d.ts +1 -1
- package/dist/components/ai-consent-banner/index.d.ts.map +1 -1
- package/dist/components/ai-consent-banner/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/anamnesis-card/index.js +1 -1
- package/dist/components/appointment-card/appointment-card.d.ts +24 -0
- package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
- package/dist/components/appointment-card/index.js +2 -2
- package/dist/components/appointment-peek/index.js +1 -1
- package/dist/components/appointment-timeline/appointment-timeline.d.ts +15 -1
- package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -1
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/booking-types.d.ts +6 -0
- package/dist/components/booking/booking-types.d.ts.map +1 -1
- package/dist/components/booking/booking.d.ts.map +1 -1
- package/dist/components/booking/cascade.d.ts +6 -0
- package/dist/components/booking/cascade.d.ts.map +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/button/button.d.ts +1 -1
- package/dist/components/button/button.d.ts.map +1 -1
- package/dist/components/button/index.js +2 -2
- package/dist/components/button-group/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/care-plan-header/index.js +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/connection-status/index.js +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/control-room-rail/index.js +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/dashboard-grid/index.js +1 -1
- package/dist/components/data-table/index.js +4 -4
- package/dist/components/data-table-tabs/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/document-scanner/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/editable-description/index.js +1 -1
- package/dist/components/editor-overlay/index.js +1 -1
- package/dist/components/empty-state/index.js +1 -1
- package/dist/components/entity-summary/index.js +1 -1
- package/dist/components/error-boundary/index.js +1 -1
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/field-array/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/finished-terminal/index.js +1 -1
- package/dist/components/fiscal-code-input/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/header/index.js +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/hover-card/index.js +1 -1
- package/dist/components/icon-button/index.js +1 -1
- package/dist/components/icon-button-group/index.js +1 -1
- package/dist/components/icon-picker/index.js +1 -1
- package/dist/components/image-cropper/index.js +1 -1
- package/dist/components/info-tip/index.js +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/note-timeline/index.js +1 -1
- package/dist/components/note-timeline/note-timeline.d.ts +9 -0
- package/dist/components/note-timeline/note-timeline.d.ts.map +1 -1
- package/dist/components/notes-panel/index.d.ts +1 -0
- package/dist/components/notes-panel/index.d.ts.map +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notes-panel/notes-panel.d.ts +13 -5
- package/dist/components/notes-panel/notes-panel.d.ts.map +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/optical-prescription/index.js +1 -1
- package/dist/components/panel-subview/index.js +1 -1
- package/dist/components/panel-subview/panel-subview.d.ts.map +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/periodontal-chart/index.js +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/product-hub-tray/index.js +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.d.ts +1 -1
- package/dist/components/rich-text-editor/index.d.ts.map +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.d.ts +48 -0
- package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/streaming-text/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/token-insert-menu/index.js +1 -1
- package/dist/components/tool-rail/index.js +1 -1
- package/dist/components/tool-rail/tool-rail.d.ts.map +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/transaction-chip/index.js +1 -1
- package/dist/components/transaction-chip/transaction-chip.d.ts +7 -0
- package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/host-compat.css +13 -4
- package/dist/i18n/locales/ar.d.ts +248 -194
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +253 -199
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +232 -178
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +237 -183
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +247 -193
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +252 -198
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +54 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +59 -5
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +240 -186
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +245 -191
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +234 -180
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +239 -185
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +248 -194
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +257 -199
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +192 -138
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +197 -143
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +246 -192
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +251 -197
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +237 -183
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +242 -188
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +242 -188
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +247 -193
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +242 -188
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +247 -193
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +241 -187
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +246 -192
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +247 -193
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +252 -198
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +241 -187
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +246 -192
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +242 -188
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +247 -193
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +248 -194
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +253 -199
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +241 -187
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +246 -192
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +107 -107
- package/dist/locales/ar.json +253 -199
- package/dist/locales/de.json +237 -183
- package/dist/locales/el.json +252 -198
- package/dist/locales/en.json +59 -5
- package/dist/locales/es.json +245 -191
- package/dist/locales/fr.json +239 -185
- package/dist/locales/hi.json +253 -199
- package/dist/locales/it.json +197 -143
- package/dist/locales/ja.json +251 -197
- package/dist/locales/nl.json +242 -188
- package/dist/locales/pl.json +247 -193
- package/dist/locales/pt.json +247 -193
- package/dist/locales/ro.json +246 -192
- package/dist/locales/ru.json +252 -198
- package/dist/locales/sq.json +246 -192
- package/dist/locales/sv.json +247 -193
- package/dist/locales/tr.json +253 -199
- package/dist/locales/zh.json +246 -192
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/calendar-appointment-details.d.ts +7 -0
- package/dist/patterns/calendar/calendar-appointment-details.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts +10 -5
- package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar-bookings-panel.d.ts +31 -0
- package/dist/patterns/calendar/calendar-bookings-panel.d.ts.map +1 -0
- package/dist/patterns/calendar/calendar-info-hover.d.ts +15 -1
- package/dist/patterns/calendar/calendar-info-hover.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar-privacy.d.ts +23 -0
- package/dist/patterns/calendar/calendar-privacy.d.ts.map +1 -0
- package/dist/patterns/calendar/calendar-rail-settle.d.ts +14 -0
- package/dist/patterns/calendar/calendar-rail-settle.d.ts.map +1 -0
- package/dist/patterns/calendar/calendar-upcoming-panel.d.ts +32 -0
- package/dist/patterns/calendar/calendar-upcoming-panel.d.ts.map +1 -0
- package/dist/patterns/calendar/calendar-waiting-list-panel.d.ts +62 -0
- package/dist/patterns/calendar/calendar-waiting-list-panel.d.ts.map +1 -0
- package/dist/patterns/calendar/calendar-workspace.d.ts +14 -1
- package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts +37 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.journey.d.ts +9 -1
- package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.model.d.ts +8 -2
- package/dist/patterns/calendar/calendar.model.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.sheets.d.ts +49 -28
- package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.types.d.ts +6 -0
- package/dist/patterns/calendar/calendar.types.d.ts.map +1 -1
- package/dist/patterns/calendar/index.d.ts +2 -2
- package/dist/patterns/calendar/index.d.ts.map +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/payment-automation-upsell/index.js +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +3 -1
- package/dist/_chunks/ai-consent-banner-De4gzSBZ.js.map +0 -1
- package/dist/_chunks/appointment-card-WsDGBBut.js.map +0 -1
- package/dist/_chunks/appointment-timeline-D-rNwKpS.js.map +0 -1
- package/dist/_chunks/booking-x3J7sS2G.js.map +0 -1
- package/dist/_chunks/button-nJaPh_HC.js.map +0 -1
- package/dist/_chunks/calendar-workspace-Cc1LRVWY.js +0 -9900
- package/dist/_chunks/calendar-workspace-Cc1LRVWY.js.map +0 -1
- package/dist/_chunks/file-manager-UlcYQv8n.js.map +0 -1
- package/dist/_chunks/note-timeline-D2oPuQP6.js.map +0 -1
- package/dist/_chunks/notes-panel-CkbfDDzj.js.map +0 -1
- package/dist/_chunks/panel-subview-BNXN8OEL.js.map +0 -1
- package/dist/_chunks/patient-summary-card-B131Q7Bp.js.map +0 -1
- package/dist/_chunks/receipt-euro-C6k4Gzhr.js.map +0 -1
- package/dist/_chunks/rich-text-editor-BTXlorm5.js.map +0 -1
- package/dist/_chunks/signature-request-b-86AGlT.js.map +0 -1
- package/dist/_chunks/tool-rail-BP8sjxCw.js +0 -667
- package/dist/_chunks/tool-rail-BP8sjxCw.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message-tray-CXjVsKqp.js","sources":["../../src/components/message-tray/message-tray.agent.ts","../../src/components/message-tray/message-tray.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — MessageTray. */\n/* */\n/* Tray-level surface: open/close the inbox panel, read message ids and */\n/* unread flag (never sender names / subjects / previews — those are */\n/* PHI), and route per-message operations through the curated handle. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { MessageTrayHandle } from './message-tray';\n\nexport const messageTrayAgent: AgentAdapter<MessageTrayHandle> = {\n id: 'message-tray',\n capabilities: ['open', 'close', 'select_single', 'dismiss', 'navigate'],\n state: {\n items: {\n type: 'Array<{ id: string; read: boolean }>',\n descriptionKey: 'ui.agent.messageTray.state.items',\n description:\n 'Currently-displayed messages. Ids + read flag only — no PHI / no sender names.',\n read: (handle) => handle.getItems(),\n },\n unreadCount: {\n type: 'number',\n descriptionKey: 'ui.agent.messageTray.state.unreadCount',\n description: 'Badge unread count surfaced by the host.',\n read: (handle) => handle.getUnreadCount(),\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.messageTray.state.isOpen',\n description: 'Whether the dropdown panel is currently open.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n open: {\n // Pure ephemeral panel-visibility change — read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.open',\n description: 'Open the message panel.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n // Pure ephemeral panel-visibility change — read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.close',\n description: 'Close the message panel.',\n invoke: (handle) => {\n handle.close();\n },\n },\n select_item: {\n // Activates (navigates to) a message — ephemeral view change, read.\n safety: 'read',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description:\n 'Stable message id to activate (sourced from item.id).',\n },\n },\n required: ['id'],\n },\n descriptionKey: 'ui.agent.messageTray.actions.selectItem',\n description: 'Activate the message with the given id.',\n examples: [\n { args: { id: 'msg-1' }, note: 'Open the message with id \"msg-1\".' },\n ],\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n mark_read: {\n // Persists read-intent for one message, reversible via the same UI — write.\n safety: 'write',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Stable message id to mark as read.',\n },\n },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.markRead',\n description: 'Request the host to mark a message as read.',\n invoke: (handle, args: { id: string }) => {\n handle.markRead(args.id);\n },\n },\n dismiss: {\n // Archives / removes a message — irreversible from this UI, destructive.\n safety: 'destructive',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Stable message id to dismiss / archive.',\n },\n },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.dismiss',\n description:\n 'Request the host to dismiss / archive the message with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.dismiss(args.id);\n },\n },\n mark_all_read: {\n // Persists read-intent across every message, reversible per-message — write.\n safety: 'write',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.markAllRead',\n description: 'Request the host to mark every message as read.',\n invoke: (handle) => {\n handle.markAllRead();\n },\n },\n view_all: {\n // Navigates to the full inbox surface — ephemeral view change, read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.viewAll',\n description: 'Navigate to the full inbox / message list.',\n invoke: (handle) => {\n handle.viewAll();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'message-tray',\n description: 'Marks the MessageTray wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific tray from the agent.',\n },\n item: {\n attr: 'data-message-id',\n description:\n 'Stable message id emitted on each rendered MessageCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { Mail } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Button } from '../button/button';\nimport { Separator } from '../separator/separator';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { ScrollArea } from '../scroll-area/scroll-area';\nimport { MessageCard, type MessageItem } from '../message-card/message-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { messageTrayAgent } from './message-tray.agent';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * Curated imperative handle for MessageTray. Exposed as the forwardRef\n * target so a future agent / MCP UI bridge can drive the tray without\n * touching the DOM. See `message-tray.agent.ts`.\n */\nexport interface MessageTrayHandle {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n getItems: () => Array<{ id: string; read: boolean }>;\n getUnreadCount: () => number;\n selectItem: (id: string) => void;\n markRead: (id: string) => void;\n dismiss: (id: string) => void;\n /** Request the host to mark every message as read (mirrors onMarkAllRead). */\n markAllRead: () => void;\n /** Navigate to the full inbox (mirrors onViewAll). */\n viewAll: () => void;\n}\n\nexport interface MessageTrayProps\n extends\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onClick' | 'children' | 'role' | 'id'\n >,\n VariantProps<typeof messageTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so\n * an agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n /** Fires when the host should mark a single message as read (used by agent integration). */\n onMarkRead?: (item: MessageItem) => void;\n /** Messages rendered in the dropdown panel. */\n items: MessageItem[];\n /** Number of unread messages. Drives the badge count. */\n unreadCount?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Fires when the open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Fires when the user activates an item (click or Enter/Space). */\n onItemClick?: (item: MessageItem) => void;\n /** Fires when the user dismisses / archives a message. */\n onDismiss?: (item: MessageItem) => void;\n /** Fires when the user clicks the header \"Mark all as read\" action. */\n onMarkAllRead?: () => void;\n /** When true the panel shows skeleton placeholders. */\n loading?: boolean;\n /**\n * Advisory item count before the list scrolls. Consumers override the cap\n * via the `--message-tray-max-block-size` custom property.\n */\n maxVisible?: number;\n /** When set renders a footer link that invokes `onViewAll`. */\n viewAllLabel?: string;\n /** Fires when the footer \"View all\" link is clicked. */\n onViewAll?: () => void;\n /** Panel alignment relative to the trigger. Default `'end'`. */\n align?: 'start' | 'center' | 'end';\n /** Side of the trigger to open on. Default `'bottom'`. */\n side?: 'top' | 'bottom';\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst messageTrayVariants = cva('ds:relative ds:inline-flex ds:items-center', {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nconst panelVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:border ds:border-[color:var(--card-border)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n // Width: fluid below the design cap so narrow viewports keep a visible\n // gutter on both sides (shadow included). Cap slightly wider than\n // NotificationTray because message rows carry subject + preview.\n 'ds:w-[min(26rem,calc(100vw-2*var(--spacing-md)))]',\n // Height: below the `sm` breakpoint the panel takes a near-full-screen\n // sheet shape so the user gets room to triage an inbox without\n // scrolling a tiny popover. `6rem` reserves space for the Header\n // (≈4rem) plus the sideOffset + collisionPadding (≈2rem). Above `sm`\n // it returns to `h-auto` so the list's own cap governs the height.\n 'ds:h-[calc(100dvh-6rem)] ds:sm:h-auto',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:focus-visible:outline-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-xs)]',\n md: 'ds:p-[var(--spacing-sm)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst badgeVariants = cva(\n [\n 'ds:absolute ds:-top-[var(--spacing-xs)] ds:-end-[var(--spacing-xs)]',\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-w-[calc(var(--spacing-md)+var(--spacing-xs))] ds:h-[calc(var(--spacing-md)+var(--spacing-xs))] ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[color:var(--destructive)] ds:text-[color:var(--destructive-foreground)]',\n 'ds:text-[length:var(--font-size-xs)] ds:font-semibold ds:leading-none',\n 'ds:pointer-events-none ds:select-none',\n 'ds:forced-colors:outline ds:forced-colors:outline-1 ds:forced-colors:outline-[CanvasText]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number, overflowLabel: string): string {\n return count > 99 ? overflowLabel : String(count);\n}\n\nfunction SkeletonRow() {\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\"\n >\n <Skeleton variant=\"circular\" size=\"sm\" />\n <div className=\"ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <Skeleton variant=\"text\" size=\"md\" width=\"60%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"80%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"95%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"30%\" />\n </div>\n </div>\n );\n}\n\nfunction EmptyPanel() {\n const { t } = useTranslation();\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:flex ds:flex-col ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-lg)] ds:text-center\"\n >\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:items-center ds:justify-center ds:size-10 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--muted)] ds:text-[color:var(--muted-foreground)] ds:[&>svg]:size-5\"\n >\n <Mail />\n </span>\n <p className=\"type-title-item ds:text-[color:var(--foreground)]\">\n {t('messageTray.noMessages', 'No messages')}\n </p>\n <p className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('messageTray.noMessagesDescription', 'Your inbox is clear.')}\n </p>\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const MessageTray = forwardRef<HTMLDivElement, MessageTrayProps>(\n (\n {\n id,\n items,\n unreadCount,\n open,\n onOpenChange,\n onItemClick,\n onDismiss,\n onMarkRead,\n onMarkAllRead,\n loading = false,\n maxVisible,\n viewAllLabel,\n onViewAll,\n align = 'end',\n side = 'bottom',\n size = 'md',\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const [isOpenRaw, handleOpenChange] = useControllableState<boolean>({\n value: open,\n defaultValue: false,\n onChange: onOpenChange,\n });\n const isOpen = isOpenRaw ?? false;\n\n /* Exit-animation list — same AnimatePresence-style bookkeeping as\n * NotificationTray. See that component for rationale. */\n type Displayed = { item: MessageItem; leaving: boolean };\n const [displayed, setDisplayed] = useState<Displayed[]>(() =>\n items.map((item) => ({ item, leaving: false })),\n );\n\n const animationDurationMs = useCallback((): number => {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n if (!raw) return 200;\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n setDisplayed((prev) => {\n const nextIds = new Set(items.map((i) => i.id));\n const prevIds = new Set(prev.map((d) => d.item.id));\n\n const merged: Displayed[] = prev.map((d) => {\n if (nextIds.has(d.item.id)) {\n const fresh = items.find((i) => i.id === d.item.id);\n return fresh\n ? { item: fresh, leaving: false }\n : { ...d, leaving: true };\n }\n return { ...d, leaving: true };\n });\n\n for (const i of items) {\n if (!prevIds.has(i.id)) merged.push({ item: i, leaving: false });\n }\n return merged;\n });\n }, [items]);\n\n useEffect(() => {\n if (!displayed.some((d) => d.leaving)) return;\n const ms = animationDurationMs();\n const timer = setTimeout(() => {\n setDisplayed((prev) => prev.filter((d) => !d.leaving));\n }, ms);\n return () => clearTimeout(timer);\n }, [displayed, animationDurationMs]);\n\n const liveRegionRef = useRef<HTMLDivElement | null>(null);\n const lastTopIdRef = useRef<string | undefined>(items[0]?.id);\n\n useEffect(() => {\n const topId = items[0]?.id;\n const prev = lastTopIdRef.current;\n if (prev && topId && prev !== topId && liveRegionRef.current) {\n const newest = items[0];\n if (newest && !newest.read) {\n liveRegionRef.current.textContent = t('messageTray.newMessage', {\n sender: newest.sender.name,\n defaultValue: 'New message from {{sender}}',\n });\n }\n }\n lastTopIdRef.current = topId;\n }, [items, t]);\n\n const displayCount = unreadCount ?? 0;\n const triggerAriaLabel =\n displayCount > 0\n ? t('messageTray.triggerLabel', {\n count: displayCount,\n defaultValue: 'Messages, {{count}} unread',\n })\n : t('messageTray.triggerLabelNone', 'Messages, none unread');\n\n const badgeLabel = formatBadgeCount(\n displayCount,\n t('messageTray.badgeCountOverflow', '99+'),\n );\n\n const panelClass = panelVariants({ size });\n\n /* Curated imperative handle for agent integration. See\n * message-tray.agent.ts. */\n const itemsRef = useRef<MessageItem[]>(items);\n itemsRef.current = items;\n const unreadRef = useRef<number | undefined>(unreadCount);\n unreadRef.current = unreadCount;\n const isOpenRef = useRef<boolean>(isOpen);\n isOpenRef.current = isOpen;\n\n const handle = useMemo<MessageTrayHandle>(\n () => ({\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n isOpen: () => isOpenRef.current,\n getItems: () =>\n itemsRef.current.map((i) => ({ id: i.id, read: !!i.read })),\n getUnreadCount: () =>\n unreadRef.current ?? itemsRef.current.filter((i) => !i.read).length,\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onItemClick?.(found);\n },\n markRead: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onMarkRead?.(found);\n },\n dismiss: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onDismiss?.(found);\n },\n markAllRead: () => onMarkAllRead?.(),\n viewAll: () => onViewAll?.(),\n }),\n [\n handleOpenChange,\n onItemClick,\n onMarkRead,\n onDismiss,\n onMarkAllRead,\n onViewAll,\n ],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n useAgentRegistration(messageTrayAgent, handle, id);\n\n return (\n <div\n ref={rootRef}\n data-component=\"message-tray\"\n data-component-id={id}\n className={[messageTrayVariants({ size }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <RadixPopover.Root open={isOpen} onOpenChange={handleOpenChange}>\n <RadixPopover.Trigger asChild>\n <IconButton\n icon={<Mail />}\n intent=\"outline\"\n size={size === 'sm' ? 'sm' : 'md'}\n aria-label={triggerAriaLabel}\n aria-haspopup=\"dialog\"\n />\n </RadixPopover.Trigger>\n {displayCount > 0 ? (\n <span\n aria-hidden=\"true\"\n data-testid=\"message-tray-badge\"\n className={badgeVariants()}\n >\n {badgeLabel}\n </span>\n ) : null}\n <div\n ref={liveRegionRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n />\n <RadixPopover.Portal>\n <RadixPopover.Content\n role=\"dialog\"\n aria-label={t('messageTray.panelTitle', 'Messages')}\n side={side}\n align={align}\n sideOffset={8}\n // `spacing-md` (16px) keeps Radix's collision-avoidance from\n // flush-mounting the panel against the viewport edge when the\n // trigger is near the inline-end of a narrow screen.\n collisionPadding={16}\n className={panelClass}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]\">\n <h3 className=\"ds:m-0 type-title-card ds:text-[color:var(--foreground)]\">\n {t('messageTray.panelTitle', 'Messages')}\n </h3>\n {onMarkAllRead && items.some((item) => !item.read) ? (\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onMarkAllRead}\n className=\"ds:text-[length:var(--font-size-xs)]\"\n >\n {t('messageTray.markAllRead', 'Mark all as read')}\n </Button>\n ) : null}\n </div>\n <Separator />\n {/* Below `sm` the panel is a near-full-screen sheet (see\n `panelVariants`) and the scroll area expands to fill the\n remaining space with `flex-1`. Above `sm` it caps at the\n `--message-tray-max-block-size` custom property so the\n popover stays compact. The ScrollArea viewport owns the\n overflow + is keyboard-focusable, so the list keeps only its\n role/content classes. */}\n <ScrollArea\n orientation=\"vertical\"\n className=\"ds:flex-1 ds:min-h-0 ds:sm:flex-none ds:sm:[max-block-size:var(--message-tray-max-block-size,26rem)]\"\n >\n <div\n // Only carry `role=\"list\"` when there are list children —\n // axe's `aria-required-children` rule fires on an empty\n // list. The loading skeleton + populated rendering both\n // produce role=\"listitem\" descendants below.\n role={displayed.length > 0 ? 'list' : undefined}\n data-max-visible={maxVisible}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)]\"\n >\n {loading ? (\n <>\n <SkeletonRow />\n <SkeletonRow />\n <SkeletonRow />\n </>\n ) : displayed.length === 0 ? (\n <EmptyPanel />\n ) : (\n displayed.map(({ item, leaving }) => (\n <MessageCard\n key={item.id}\n item={item}\n variant=\"compact\"\n leaving={leaving}\n onActivate={onItemClick}\n onDismiss={onDismiss}\n data-message-id={item.id}\n />\n ))\n )}\n </div>\n </ScrollArea>\n {viewAllLabel ? (\n <>\n <Separator />\n <div className=\"ds:pt-[var(--spacing-xs)]\">\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onViewAll}\n className=\"ds:w-full ds:justify-center\"\n >\n {viewAllLabel}\n </Button>\n </div>\n </>\n ) : null}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n </div>\n );\n },\n);\n\nMessageTray.displayName = 'MessageTray';\n"],"names":["messageTrayAgent","handle","args","messageTrayVariants","cva","panelVariants","badgeVariants","formatBadgeCount","count","overflowLabel","SkeletonRow","jsxs","jsx","Skeleton","EmptyPanel","t","useTranslation","Mail","MessageTray","forwardRef","id","items","unreadCount","open","onOpenChange","onItemClick","onDismiss","onMarkRead","onMarkAllRead","loading","maxVisible","viewAllLabel","onViewAll","align","side","size","className","rest","ref","isOpenRaw","handleOpenChange","useControllableState","isOpen","displayed","setDisplayed","useState","item","animationDurationMs","useCallback","raw","trimmed","n","useIsomorphicLayoutEffect","prev","nextIds","i","prevIds","d","merged","fresh","useEffect","ms","timer","liveRegionRef","useRef","lastTopIdRef","_a","topId","newest","displayCount","triggerAriaLabel","badgeLabel","panelClass","itemsRef","unreadRef","isOpenRef","useMemo","targetId","found","rootRef","useImperativeHandle","useAgentRegistration","RadixPopover","IconButton","Button","Separator","ScrollArea","Fragment","leaving","MessageCard"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"message-tray-CrRIHfiQ.js","sources":["../../src/components/message-tray/message-tray.agent.ts","../../src/components/message-tray/message-tray.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — MessageTray. */\n/* */\n/* Tray-level surface: open/close the inbox panel, read message ids and */\n/* unread flag (never sender names / subjects / previews — those are */\n/* PHI), and route per-message operations through the curated handle. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { MessageTrayHandle } from './message-tray';\n\nexport const messageTrayAgent: AgentAdapter<MessageTrayHandle> = {\n id: 'message-tray',\n capabilities: ['open', 'close', 'select_single', 'dismiss', 'navigate'],\n state: {\n items: {\n type: 'Array<{ id: string; read: boolean }>',\n descriptionKey: 'ui.agent.messageTray.state.items',\n description:\n 'Currently-displayed messages. Ids + read flag only — no PHI / no sender names.',\n read: (handle) => handle.getItems(),\n },\n unreadCount: {\n type: 'number',\n descriptionKey: 'ui.agent.messageTray.state.unreadCount',\n description: 'Badge unread count surfaced by the host.',\n read: (handle) => handle.getUnreadCount(),\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.messageTray.state.isOpen',\n description: 'Whether the dropdown panel is currently open.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n open: {\n // Pure ephemeral panel-visibility change — read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.open',\n description: 'Open the message panel.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n // Pure ephemeral panel-visibility change — read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.close',\n description: 'Close the message panel.',\n invoke: (handle) => {\n handle.close();\n },\n },\n select_item: {\n // Activates (navigates to) a message — ephemeral view change, read.\n safety: 'read',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description:\n 'Stable message id to activate (sourced from item.id).',\n },\n },\n required: ['id'],\n },\n descriptionKey: 'ui.agent.messageTray.actions.selectItem',\n description: 'Activate the message with the given id.',\n examples: [\n { args: { id: 'msg-1' }, note: 'Open the message with id \"msg-1\".' },\n ],\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n mark_read: {\n // Persists read-intent for one message, reversible via the same UI — write.\n safety: 'write',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Stable message id to mark as read.',\n },\n },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.markRead',\n description: 'Request the host to mark a message as read.',\n invoke: (handle, args: { id: string }) => {\n handle.markRead(args.id);\n },\n },\n dismiss: {\n // Archives / removes a message — irreversible from this UI, destructive.\n safety: 'destructive',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: {\n id: {\n type: 'string',\n description: 'Stable message id to dismiss / archive.',\n },\n },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.dismiss',\n description:\n 'Request the host to dismiss / archive the message with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.dismiss(args.id);\n },\n },\n mark_all_read: {\n // Persists read-intent across every message, reversible per-message — write.\n safety: 'write',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.markAllRead',\n description: 'Request the host to mark every message as read.',\n invoke: (handle) => {\n handle.markAllRead();\n },\n },\n view_all: {\n // Navigates to the full inbox surface — ephemeral view change, read.\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.messageTray.actions.viewAll',\n description: 'Navigate to the full inbox / message list.',\n invoke: (handle) => {\n handle.viewAll();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'message-tray',\n description: 'Marks the MessageTray wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description:\n 'Sourced from the id prop. Required to address a specific tray from the agent.',\n },\n item: {\n attr: 'data-message-id',\n description:\n 'Stable message id emitted on each rendered MessageCard inside the tray.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n} from 'react';\nimport * as RadixPopover from '@radix-ui/react-popover';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { Mail } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { Button } from '../button/button';\nimport { Separator } from '../separator/separator';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { ScrollArea } from '../scroll-area/scroll-area';\nimport { MessageCard, type MessageItem } from '../message-card/message-card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { messageTrayAgent } from './message-tray.agent';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\n/**\n * Curated imperative handle for MessageTray. Exposed as the forwardRef\n * target so a future agent / MCP UI bridge can drive the tray without\n * touching the DOM. See `message-tray.agent.ts`.\n */\nexport interface MessageTrayHandle {\n open: () => void;\n close: () => void;\n isOpen: () => boolean;\n getItems: () => Array<{ id: string; read: boolean }>;\n getUnreadCount: () => number;\n selectItem: (id: string) => void;\n markRead: (id: string) => void;\n dismiss: (id: string) => void;\n /** Request the host to mark every message as read (mirrors onMarkAllRead). */\n markAllRead: () => void;\n /** Navigate to the full inbox (mirrors onViewAll). */\n viewAll: () => void;\n}\n\nexport interface MessageTrayProps\n extends\n Omit<\n HTMLAttributes<HTMLDivElement>,\n 'onClick' | 'children' | 'role' | 'id'\n >,\n VariantProps<typeof messageTrayVariants> {\n /**\n * Stable instance id. Surfaced on the root as `data-component-id` so\n * an agent / MCP UI bridge can address this specific tray.\n */\n id?: string;\n /** Fires when the host should mark a single message as read (used by agent integration). */\n onMarkRead?: (item: MessageItem) => void;\n /** Messages rendered in the dropdown panel. */\n items: MessageItem[];\n /** Number of unread messages. Drives the badge count. */\n unreadCount?: number;\n /** Controlled open state. */\n open?: boolean;\n /** Fires when the open state changes. */\n onOpenChange?: (open: boolean) => void;\n /** Fires when the user activates an item (click or Enter/Space). */\n onItemClick?: (item: MessageItem) => void;\n /** Fires when the user dismisses / archives a message. */\n onDismiss?: (item: MessageItem) => void;\n /** Fires when the user clicks the header \"Mark all as read\" action. */\n onMarkAllRead?: () => void;\n /** When true the panel shows skeleton placeholders. */\n loading?: boolean;\n /**\n * Advisory item count before the list scrolls. Consumers override the cap\n * via the `--message-tray-max-block-size` custom property.\n */\n maxVisible?: number;\n /** When set renders a footer link that invokes `onViewAll`. */\n viewAllLabel?: string;\n /** Fires when the footer \"View all\" link is clicked. */\n onViewAll?: () => void;\n /** Panel alignment relative to the trigger. Default `'end'`. */\n align?: 'start' | 'center' | 'end';\n /** Side of the trigger to open on. Default `'bottom'`. */\n side?: 'top' | 'bottom';\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst messageTrayVariants = cva('ds:relative ds:inline-flex ds:items-center', {\n variants: {\n size: {\n sm: '',\n md: '',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n});\n\nconst panelVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:bg-[var(--popover)] ds:text-[var(--popover-foreground)]',\n 'ds:border ds:border-[color:var(--card-border)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:z-[var(--z-popover)]',\n // Width: fluid below the design cap so narrow viewports keep a visible\n // gutter on both sides (shadow included). Cap slightly wider than\n // NotificationTray because message rows carry subject + preview.\n 'ds:w-[min(26rem,calc(100vw-2*var(--spacing-md)))]',\n // Height: below the `sm` breakpoint the panel takes a near-full-screen\n // sheet shape so the user gets room to triage an inbox without\n // scrolling a tiny popover. `6rem` reserves space for the Header\n // (≈4rem) plus the sideOffset + collisionPadding (≈2rem). Above `sm`\n // it returns to `h-auto` so the list's own cap governs the height.\n 'ds:h-[calc(100dvh-6rem)] ds:sm:h-auto',\n 'ds:data-[state=open]:animate-in ds:data-[state=closed]:animate-out',\n 'ds:data-[state=closed]:fade-out-0 ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:zoom-out-95 ds:data-[state=open]:zoom-in-95',\n 'ds:motion-reduce:transition-none ds:motion-reduce:animate-none',\n 'ds:focus-visible:outline-none',\n 'ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-xs)]',\n md: 'ds:p-[var(--spacing-sm)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst badgeVariants = cva(\n [\n 'ds:absolute ds:-top-[var(--spacing-xs)] ds:-end-[var(--spacing-xs)]',\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-w-[calc(var(--spacing-md)+var(--spacing-xs))] ds:h-[calc(var(--spacing-md)+var(--spacing-xs))] ds:ps-[calc(var(--spacing-xs)/1.5)] ds:pe-[calc(var(--spacing-xs)/1.5)]',\n 'ds:rounded-[var(--radius-full)]',\n 'ds:bg-[color:var(--destructive)] ds:text-[color:var(--destructive-foreground)]',\n 'ds:text-[length:var(--font-size-xs)] ds:font-semibold ds:leading-none',\n 'ds:pointer-events-none ds:select-none',\n 'ds:forced-colors:outline ds:forced-colors:outline-1 ds:forced-colors:outline-[CanvasText]',\n ].join(' '),\n);\n\n/* ------------------------------------------------------------------ */\n/* Helpers */\n/* ------------------------------------------------------------------ */\n\nfunction formatBadgeCount(count: number, overflowLabel: string): string {\n return count > 99 ? overflowLabel : String(count);\n}\n\nfunction SkeletonRow() {\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)] ds:p-[var(--spacing-sm)]\"\n >\n <Skeleton variant=\"circular\" size=\"sm\" />\n <div className=\"ds:flex-1 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <Skeleton variant=\"text\" size=\"md\" width=\"60%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"80%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"95%\" />\n <Skeleton variant=\"text\" size=\"sm\" width=\"30%\" />\n </div>\n </div>\n );\n}\n\nfunction EmptyPanel() {\n const { t } = useTranslation();\n return (\n <div\n role=\"status\"\n aria-live=\"polite\"\n className=\"ds:flex ds:flex-col ds:items-center ds:justify-center ds:gap-[var(--spacing-xs)] ds:p-[var(--spacing-lg)] ds:text-center\"\n >\n <span\n aria-hidden=\"true\"\n className=\"ds:inline-flex ds:items-center ds:justify-center ds:size-10 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--muted)] ds:text-[color:var(--muted-foreground)] ds:[&>svg]:size-5\"\n >\n <Mail />\n </span>\n <p className=\"type-title-item ds:text-[color:var(--foreground)]\">\n {t('messageTray.noMessages', 'No messages')}\n </p>\n <p className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('messageTray.noMessagesDescription', 'Your inbox is clear.')}\n </p>\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const MessageTray = forwardRef<HTMLDivElement, MessageTrayProps>(\n (\n {\n id,\n items,\n unreadCount,\n open,\n onOpenChange,\n onItemClick,\n onDismiss,\n onMarkRead,\n onMarkAllRead,\n loading = false,\n maxVisible,\n viewAllLabel,\n onViewAll,\n align = 'end',\n side = 'bottom',\n size = 'md',\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const [isOpenRaw, handleOpenChange] = useControllableState<boolean>({\n value: open,\n defaultValue: false,\n onChange: onOpenChange,\n });\n const isOpen = isOpenRaw ?? false;\n\n /* Exit-animation list — same AnimatePresence-style bookkeeping as\n * NotificationTray. See that component for rationale. */\n type Displayed = { item: MessageItem; leaving: boolean };\n const [displayed, setDisplayed] = useState<Displayed[]>(() =>\n items.map((item) => ({ item, leaving: false })),\n );\n\n const animationDurationMs = useCallback((): number => {\n if (typeof window === 'undefined') return 200;\n const raw = window\n .getComputedStyle(document.documentElement)\n .getPropertyValue('--animation-duration');\n if (!raw) return 200;\n const trimmed = raw.trim();\n const n = parseFloat(trimmed);\n if (!Number.isFinite(n)) return 200;\n return trimmed.endsWith('ms') ? n : n * 1000;\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n setDisplayed((prev) => {\n const nextIds = new Set(items.map((i) => i.id));\n const prevIds = new Set(prev.map((d) => d.item.id));\n\n const merged: Displayed[] = prev.map((d) => {\n if (nextIds.has(d.item.id)) {\n const fresh = items.find((i) => i.id === d.item.id);\n return fresh\n ? { item: fresh, leaving: false }\n : { ...d, leaving: true };\n }\n return { ...d, leaving: true };\n });\n\n for (const i of items) {\n if (!prevIds.has(i.id)) merged.push({ item: i, leaving: false });\n }\n return merged;\n });\n }, [items]);\n\n useEffect(() => {\n if (!displayed.some((d) => d.leaving)) return;\n const ms = animationDurationMs();\n const timer = setTimeout(() => {\n setDisplayed((prev) => prev.filter((d) => !d.leaving));\n }, ms);\n return () => clearTimeout(timer);\n }, [displayed, animationDurationMs]);\n\n const liveRegionRef = useRef<HTMLDivElement | null>(null);\n const lastTopIdRef = useRef<string | undefined>(items[0]?.id);\n\n useEffect(() => {\n const topId = items[0]?.id;\n const prev = lastTopIdRef.current;\n if (prev && topId && prev !== topId && liveRegionRef.current) {\n const newest = items[0];\n if (newest && !newest.read) {\n liveRegionRef.current.textContent = t('messageTray.newMessage', {\n sender: newest.sender.name,\n defaultValue: 'New message from {{sender}}',\n });\n }\n }\n lastTopIdRef.current = topId;\n }, [items, t]);\n\n const displayCount = unreadCount ?? 0;\n const triggerAriaLabel =\n displayCount > 0\n ? t('messageTray.triggerLabel', {\n count: displayCount,\n defaultValue: 'Messages, {{count}} unread',\n })\n : t('messageTray.triggerLabelNone', 'Messages, none unread');\n\n const badgeLabel = formatBadgeCount(\n displayCount,\n t('messageTray.badgeCountOverflow', '99+'),\n );\n\n const panelClass = panelVariants({ size });\n\n /* Curated imperative handle for agent integration. See\n * message-tray.agent.ts. */\n const itemsRef = useRef<MessageItem[]>(items);\n itemsRef.current = items;\n const unreadRef = useRef<number | undefined>(unreadCount);\n unreadRef.current = unreadCount;\n const isOpenRef = useRef<boolean>(isOpen);\n isOpenRef.current = isOpen;\n\n const handle = useMemo<MessageTrayHandle>(\n () => ({\n open: () => handleOpenChange(true),\n close: () => handleOpenChange(false),\n isOpen: () => isOpenRef.current,\n getItems: () =>\n itemsRef.current.map((i) => ({ id: i.id, read: !!i.read })),\n getUnreadCount: () =>\n unreadRef.current ?? itemsRef.current.filter((i) => !i.read).length,\n selectItem: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onItemClick?.(found);\n },\n markRead: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onMarkRead?.(found);\n },\n dismiss: (targetId: string) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onDismiss?.(found);\n },\n markAllRead: () => onMarkAllRead?.(),\n viewAll: () => onViewAll?.(),\n }),\n [\n handleOpenChange,\n onItemClick,\n onMarkRead,\n onDismiss,\n onMarkAllRead,\n onViewAll,\n ],\n );\n\n const rootRef = useRef<HTMLDivElement>(null);\n useImperativeHandle(ref, () => rootRef.current as HTMLDivElement, []);\n useAgentRegistration(messageTrayAgent, handle, id);\n\n return (\n <div\n ref={rootRef}\n data-component=\"message-tray\"\n data-component-id={id}\n className={[messageTrayVariants({ size }), className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <RadixPopover.Root open={isOpen} onOpenChange={handleOpenChange}>\n <RadixPopover.Trigger asChild>\n <IconButton\n icon={<Mail />}\n intent=\"outline\"\n size={size === 'sm' ? 'sm' : 'md'}\n aria-label={triggerAriaLabel}\n aria-haspopup=\"dialog\"\n />\n </RadixPopover.Trigger>\n {displayCount > 0 ? (\n <span\n aria-hidden=\"true\"\n data-testid=\"message-tray-badge\"\n className={badgeVariants()}\n >\n {badgeLabel}\n </span>\n ) : null}\n <div\n ref={liveRegionRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n />\n <RadixPopover.Portal>\n <RadixPopover.Content\n role=\"dialog\"\n aria-label={t('messageTray.panelTitle', 'Messages')}\n side={side}\n align={align}\n sideOffset={8}\n // `spacing-md` (16px) keeps Radix's collision-avoidance from\n // flush-mounting the panel against the viewport edge when the\n // trigger is near the inline-end of a narrow screen.\n collisionPadding={16}\n className={panelClass}\n >\n <div className=\"ds:flex ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)] ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)] ds:pb-[var(--spacing-xs)]\">\n <h3 className=\"ds:m-0 type-title-card ds:text-[color:var(--foreground)]\">\n {t('messageTray.panelTitle', 'Messages')}\n </h3>\n {onMarkAllRead && items.some((item) => !item.read) ? (\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onMarkAllRead}\n className=\"ds:text-[length:var(--font-size-xs)]\"\n >\n {t('messageTray.markAllRead', 'Mark all as read')}\n </Button>\n ) : null}\n </div>\n <Separator />\n {/* Below `sm` the panel is a near-full-screen sheet (see\n `panelVariants`) and the scroll area expands to fill the\n remaining space with `flex-1`. Above `sm` it caps at the\n `--message-tray-max-block-size` custom property so the\n popover stays compact. The ScrollArea viewport owns the\n overflow + is keyboard-focusable, so the list keeps only its\n role/content classes. */}\n <ScrollArea\n orientation=\"vertical\"\n className=\"ds:flex-1 ds:min-h-0 ds:sm:flex-none ds:sm:[max-block-size:var(--message-tray-max-block-size,26rem)]\"\n >\n <div\n // Only carry `role=\"list\"` when there are list children —\n // axe's `aria-required-children` rule fires on an empty\n // list. The loading skeleton + populated rendering both\n // produce role=\"listitem\" descendants below.\n role={displayed.length > 0 ? 'list' : undefined}\n data-max-visible={maxVisible}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:pt-[var(--spacing-xs)]\"\n >\n {loading ? (\n <>\n <SkeletonRow />\n <SkeletonRow />\n <SkeletonRow />\n </>\n ) : displayed.length === 0 ? (\n <EmptyPanel />\n ) : (\n displayed.map(({ item, leaving }) => (\n <MessageCard\n key={item.id}\n item={item}\n variant=\"compact\"\n leaving={leaving}\n onActivate={onItemClick}\n onDismiss={onDismiss}\n data-message-id={item.id}\n />\n ))\n )}\n </div>\n </ScrollArea>\n {viewAllLabel ? (\n <>\n <Separator />\n <div className=\"ds:pt-[var(--spacing-xs)]\">\n <Button\n intent=\"link\"\n size=\"sm\"\n onClick={onViewAll}\n className=\"ds:w-full ds:justify-center\"\n >\n {viewAllLabel}\n </Button>\n </div>\n </>\n ) : null}\n </RadixPopover.Content>\n </RadixPopover.Portal>\n </RadixPopover.Root>\n </div>\n );\n },\n);\n\nMessageTray.displayName = 'MessageTray';\n"],"names":["messageTrayAgent","handle","args","messageTrayVariants","cva","panelVariants","badgeVariants","formatBadgeCount","count","overflowLabel","SkeletonRow","jsxs","jsx","Skeleton","EmptyPanel","t","useTranslation","Mail","MessageTray","forwardRef","id","items","unreadCount","open","onOpenChange","onItemClick","onDismiss","onMarkRead","onMarkAllRead","loading","maxVisible","viewAllLabel","onViewAll","align","side","size","className","rest","ref","isOpenRaw","handleOpenChange","useControllableState","isOpen","displayed","setDisplayed","useState","item","animationDurationMs","useCallback","raw","trimmed","n","useIsomorphicLayoutEffect","prev","nextIds","i","prevIds","d","merged","fresh","useEffect","ms","timer","liveRegionRef","useRef","lastTopIdRef","_a","topId","newest","displayCount","triggerAriaLabel","badgeLabel","panelClass","itemsRef","unreadRef","isOpenRef","useMemo","targetId","found","rootRef","useImperativeHandle","useAgentRegistration","RadixPopover","IconButton","Button","Separator","ScrollArea","Fragment","leaving","MessageCard"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { jsx as
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { c as
|
|
4
|
-
import { useTranslation as
|
|
1
|
+
import { jsx as s, jsxs as n } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as D, useMemo as g, useRef as y, useEffect as H } from "react";
|
|
3
|
+
import { c as h } from "./index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as L } from "react-i18next";
|
|
5
5
|
import { SafeHtml as A } from "../safe-html/index.js";
|
|
6
|
-
import { C as
|
|
7
|
-
import { n as
|
|
8
|
-
import { u as
|
|
9
|
-
const
|
|
6
|
+
import { C as P, S as b } from "./skeleton-B1KTdJ4N.js";
|
|
7
|
+
import { n as B, P as K, F as O, N as q } from "./note-attachment-CwDir3kK.js";
|
|
8
|
+
import { u as G } from "./registry-DvAUVLHh.js";
|
|
9
|
+
const J = {
|
|
10
10
|
id: "note-timeline",
|
|
11
11
|
capabilities: [],
|
|
12
12
|
state: {
|
|
@@ -14,13 +14,13 @@ const P = {
|
|
|
14
14
|
type: "Array<{ id?: string; pinned: boolean; flagged: boolean; clinical: boolean }>",
|
|
15
15
|
descriptionKey: "ui.agent.noteTimeline.state.notes",
|
|
16
16
|
description: "Structural snapshot of the rendered rows: ids and flags only, never note content or author.",
|
|
17
|
-
read: (
|
|
17
|
+
read: (a) => a.getNotes()
|
|
18
18
|
},
|
|
19
19
|
visibleCount: {
|
|
20
20
|
type: "number",
|
|
21
21
|
descriptionKey: "ui.agent.noteTimeline.state.visibleCount",
|
|
22
22
|
description: "How many notes are rendered, after the maxItems cap is applied.",
|
|
23
|
-
read: (
|
|
23
|
+
read: (a) => a.getVisibleCount()
|
|
24
24
|
}
|
|
25
25
|
},
|
|
26
26
|
actions: {},
|
|
@@ -36,7 +36,7 @@ const P = {
|
|
|
36
36
|
description: "Sourced from the id prop — addresses a specific timeline."
|
|
37
37
|
}
|
|
38
38
|
}
|
|
39
|
-
},
|
|
39
|
+
}, N = h(
|
|
40
40
|
[
|
|
41
41
|
// Named group so the rail's connector can ask "is my ROW the last one?".
|
|
42
42
|
// A bare `last:` on the rail asks "am I the last child of my row?", which
|
|
@@ -45,7 +45,7 @@ const P = {
|
|
|
45
45
|
"ds:group/note-row ds:relative ds:flex ds:gap-[var(--spacing-sm)]",
|
|
46
46
|
"ds:pb-3 ds:last:pb-0"
|
|
47
47
|
].join(" ")
|
|
48
|
-
),
|
|
48
|
+
), Q = h(
|
|
49
49
|
[
|
|
50
50
|
"type-body-sm ds:[overflow-wrap:break-word]",
|
|
51
51
|
// `[&_p]:m-0` — the converter wraps each block in <p>; the timeline
|
|
@@ -67,7 +67,7 @@ const P = {
|
|
|
67
67
|
},
|
|
68
68
|
defaultVariants: { lines: 3 }
|
|
69
69
|
}
|
|
70
|
-
),
|
|
70
|
+
), T = h(
|
|
71
71
|
[
|
|
72
72
|
"ds:absolute ds:top-1 ds:start-0 ds:size-[9px]",
|
|
73
73
|
"ds:rounded-[var(--radius-full)] ds:border-2",
|
|
@@ -91,64 +91,93 @@ const P = {
|
|
|
91
91
|
defaultVariants: { tone: "default" }
|
|
92
92
|
}
|
|
93
93
|
);
|
|
94
|
-
function
|
|
95
|
-
return [...
|
|
94
|
+
function U(a) {
|
|
95
|
+
return [...a].sort((r, i) => !!r.pinned != !!i.pinned ? r.pinned ? -1 : 1 : i.dateIso.localeCompare(r.dateIso));
|
|
96
96
|
}
|
|
97
|
-
const
|
|
97
|
+
const W = [
|
|
98
|
+
"ds:absolute ds:inset-0 ds:z-1 ds:m-0 ds:cursor-pointer",
|
|
99
|
+
"ds:rounded-[var(--radius-sm)] ds:border-0 ds:bg-transparent ds:p-0",
|
|
100
|
+
"ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
|
|
101
|
+
"ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
|
|
102
|
+
"ds:forced-colors:focus-visible:outline-[CanvasText]"
|
|
103
|
+
].join(" "), X = D(
|
|
98
104
|
({
|
|
99
|
-
id:
|
|
105
|
+
id: a,
|
|
100
106
|
notes: r,
|
|
101
|
-
maxItems:
|
|
102
|
-
lines:
|
|
103
|
-
locale:
|
|
104
|
-
emptyState:
|
|
105
|
-
"aria-label":
|
|
106
|
-
loading:
|
|
107
|
-
loadingRows:
|
|
108
|
-
className:
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
107
|
+
maxItems: i = 3,
|
|
108
|
+
lines: k = 3,
|
|
109
|
+
locale: C,
|
|
110
|
+
emptyState: j,
|
|
111
|
+
"aria-label": I,
|
|
112
|
+
loading: p = !1,
|
|
113
|
+
loadingRows: z = 2,
|
|
114
|
+
className: u,
|
|
115
|
+
onNoteActivate: o,
|
|
116
|
+
...f
|
|
117
|
+
}, d) => {
|
|
118
|
+
const { t: m, i18n: S } = L(), l = C ?? S.language, V = g(
|
|
119
|
+
() => (e) => {
|
|
120
|
+
try {
|
|
121
|
+
return new Intl.DateTimeFormat(l, {
|
|
122
|
+
day: "numeric",
|
|
123
|
+
month: "long",
|
|
124
|
+
year: "numeric",
|
|
125
|
+
hour: "2-digit",
|
|
126
|
+
minute: "2-digit"
|
|
127
|
+
}).format(new Date(e));
|
|
128
|
+
} catch {
|
|
129
|
+
return e;
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
[l]
|
|
133
|
+
), v = y(!1);
|
|
134
|
+
p && (v.current = !0);
|
|
135
|
+
const _ = v.current ? P : "", c = g(
|
|
136
|
+
() => U(r).slice(0, Math.max(0, i)),
|
|
137
|
+
[r, i]
|
|
138
|
+
), x = y(null), F = (e) => {
|
|
139
|
+
x.current = e, typeof d == "function" ? d(e) : d && (d.current = e);
|
|
140
|
+
};
|
|
141
|
+
H(() => {
|
|
142
|
+
var e;
|
|
143
|
+
o && ((e = x.current) == null || e.querySelectorAll("a[href]").forEach((t) => t.setAttribute("tabindex", "-1")));
|
|
144
|
+
});
|
|
145
|
+
const w = g(
|
|
117
146
|
() => ({
|
|
118
|
-
dayMonth: new Intl.DateTimeFormat(
|
|
147
|
+
dayMonth: new Intl.DateTimeFormat(l, {
|
|
119
148
|
day: "numeric",
|
|
120
149
|
month: "short"
|
|
121
150
|
}),
|
|
122
|
-
year: new Intl.DateTimeFormat(
|
|
151
|
+
year: new Intl.DateTimeFormat(l, { year: "numeric" })
|
|
123
152
|
}),
|
|
124
|
-
[
|
|
153
|
+
[l]
|
|
125
154
|
);
|
|
126
|
-
return
|
|
127
|
-
|
|
155
|
+
return G(
|
|
156
|
+
J,
|
|
128
157
|
{
|
|
129
|
-
getNotes: () =>
|
|
158
|
+
getNotes: () => c.map((e) => ({
|
|
130
159
|
id: e.id,
|
|
131
160
|
pinned: !!e.pinned,
|
|
132
161
|
flagged: !!e.flagged,
|
|
133
162
|
clinical: !!e.clinical
|
|
134
163
|
})),
|
|
135
|
-
getVisibleCount: () =>
|
|
164
|
+
getVisibleCount: () => c.length
|
|
136
165
|
},
|
|
137
|
-
|
|
138
|
-
),
|
|
166
|
+
a
|
|
167
|
+
), p && c.length === 0 ? /* @__PURE__ */ s(
|
|
139
168
|
"div",
|
|
140
169
|
{
|
|
141
|
-
ref:
|
|
170
|
+
ref: d,
|
|
142
171
|
"data-component": "note-timeline",
|
|
143
|
-
"data-component-id":
|
|
172
|
+
"data-component-id": a,
|
|
144
173
|
"data-loading": "",
|
|
145
174
|
"aria-busy": "true",
|
|
146
|
-
className: ["ds:flex ds:flex-col",
|
|
147
|
-
...
|
|
148
|
-
children: Array.from({ length: Math.max(1,
|
|
175
|
+
className: ["ds:flex ds:flex-col", u ?? ""].join(" ").trim(),
|
|
176
|
+
...f,
|
|
177
|
+
children: Array.from({ length: Math.max(1, z) }, (e, t) => /* @__PURE__ */ n("div", { "aria-hidden": "true", className: N(), children: [
|
|
149
178
|
/* @__PURE__ */ n("div", { className: "ds:flex ds:w-12 ds:shrink-0 ds:flex-col ds:items-end ds:gap-[var(--spacing-2xs)] ds:pt-px", children: [
|
|
150
|
-
/* @__PURE__ */
|
|
151
|
-
|
|
179
|
+
/* @__PURE__ */ s(
|
|
180
|
+
b,
|
|
152
181
|
{
|
|
153
182
|
variant: "text",
|
|
154
183
|
size: "sm",
|
|
@@ -156,8 +185,8 @@ const q = M(
|
|
|
156
185
|
width: "80%"
|
|
157
186
|
}
|
|
158
187
|
),
|
|
159
|
-
/* @__PURE__ */
|
|
160
|
-
|
|
188
|
+
/* @__PURE__ */ s(
|
|
189
|
+
b,
|
|
161
190
|
{
|
|
162
191
|
variant: "text",
|
|
163
192
|
size: "sm",
|
|
@@ -166,7 +195,7 @@ const q = M(
|
|
|
166
195
|
}
|
|
167
196
|
)
|
|
168
197
|
] }),
|
|
169
|
-
/* @__PURE__ */
|
|
198
|
+
/* @__PURE__ */ s(
|
|
170
199
|
"div",
|
|
171
200
|
{
|
|
172
201
|
className: [
|
|
@@ -176,11 +205,11 @@ const q = M(
|
|
|
176
205
|
'ds:before:bg-[color:var(--border)] ds:before:content-[""]',
|
|
177
206
|
"ds:group-last/note-row:before:hidden"
|
|
178
207
|
].join(" "),
|
|
179
|
-
children: /* @__PURE__ */
|
|
208
|
+
children: /* @__PURE__ */ s("span", { className: T({ tone: "default" }) })
|
|
180
209
|
}
|
|
181
210
|
),
|
|
182
|
-
/* @__PURE__ */
|
|
183
|
-
|
|
211
|
+
/* @__PURE__ */ s("div", { className: "ds:min-w-0 ds:flex-1", children: /* @__PURE__ */ s(
|
|
212
|
+
b,
|
|
184
213
|
{
|
|
185
214
|
variant: "text",
|
|
186
215
|
size: "sm",
|
|
@@ -190,30 +219,30 @@ const q = M(
|
|
|
190
219
|
) })
|
|
191
220
|
] }, t))
|
|
192
221
|
}
|
|
193
|
-
) :
|
|
222
|
+
) : c.length === 0 ? /* @__PURE__ */ s(
|
|
194
223
|
"div",
|
|
195
224
|
{
|
|
196
|
-
ref:
|
|
225
|
+
ref: d,
|
|
197
226
|
"data-component": "note-timeline",
|
|
198
|
-
"data-component-id":
|
|
227
|
+
"data-component-id": a,
|
|
199
228
|
"data-empty": "",
|
|
200
|
-
className:
|
|
201
|
-
...
|
|
202
|
-
children:
|
|
229
|
+
className: u,
|
|
230
|
+
...f,
|
|
231
|
+
children: j
|
|
203
232
|
}
|
|
204
|
-
) : /* @__PURE__ */
|
|
233
|
+
) : /* @__PURE__ */ s(
|
|
205
234
|
"div",
|
|
206
235
|
{
|
|
207
|
-
ref:
|
|
236
|
+
ref: F,
|
|
208
237
|
"data-component": "note-timeline",
|
|
209
|
-
"data-component-id":
|
|
238
|
+
"data-component-id": a,
|
|
210
239
|
role: "list",
|
|
211
|
-
"aria-busy":
|
|
212
|
-
"aria-label":
|
|
213
|
-
className: ["ds:flex ds:flex-col", _,
|
|
214
|
-
...
|
|
215
|
-
children:
|
|
216
|
-
const t = new Date(e.dateIso),
|
|
240
|
+
"aria-busy": p || void 0,
|
|
241
|
+
"aria-label": I ?? m("noteTimeline.regionLabel"),
|
|
242
|
+
className: ["ds:flex ds:flex-col", _, u ?? ""].join(" ").trim(),
|
|
243
|
+
...f,
|
|
244
|
+
children: c.map((e) => {
|
|
245
|
+
const t = new Date(e.dateIso), M = e.pinned ? "pinned" : e.flagged ? "flagged" : "default", E = e.contentFormat === "html" ? e.content : B(e.content), R = !!(o && e.id);
|
|
217
246
|
return /* @__PURE__ */ n(
|
|
218
247
|
"div",
|
|
219
248
|
{
|
|
@@ -221,13 +250,25 @@ const q = M(
|
|
|
221
250
|
"data-note-id": e.id,
|
|
222
251
|
"data-pinned": e.pinned ? "" : void 0,
|
|
223
252
|
"data-flagged": e.flagged ? "" : void 0,
|
|
224
|
-
className:
|
|
253
|
+
className: N(),
|
|
225
254
|
children: [
|
|
255
|
+
R ? /* @__PURE__ */ s(
|
|
256
|
+
"button",
|
|
257
|
+
{
|
|
258
|
+
type: "button",
|
|
259
|
+
className: W,
|
|
260
|
+
"aria-label": m("noteTimeline.openNote", {
|
|
261
|
+
date: V(e.dateIso),
|
|
262
|
+
defaultValue: "Open note · {{date}}"
|
|
263
|
+
}),
|
|
264
|
+
onClick: () => o == null ? void 0 : o(e.id)
|
|
265
|
+
}
|
|
266
|
+
) : null,
|
|
226
267
|
/* @__PURE__ */ n("div", { className: "ds:w-12 ds:shrink-0 ds:pt-px ds:text-end ds:text-[length:var(--type-meta-size)] ds:leading-[1.3]", children: [
|
|
227
|
-
/* @__PURE__ */
|
|
228
|
-
/* @__PURE__ */
|
|
268
|
+
/* @__PURE__ */ s("div", { className: "ds:font-semibold ds:tracking-[0.03em] ds:uppercase", children: w.dayMonth.format(t) }),
|
|
269
|
+
/* @__PURE__ */ s("div", { className: "ds:text-[color:var(--muted-foreground)]", children: w.year.format(t) })
|
|
229
270
|
] }),
|
|
230
|
-
/* @__PURE__ */
|
|
271
|
+
/* @__PURE__ */ s(
|
|
231
272
|
"div",
|
|
232
273
|
{
|
|
233
274
|
"aria-hidden": "true",
|
|
@@ -238,41 +279,41 @@ const q = M(
|
|
|
238
279
|
'ds:before:bg-[color:var(--border)] ds:before:content-[""]',
|
|
239
280
|
"ds:group-last/note-row:before:hidden"
|
|
240
281
|
].join(" "),
|
|
241
|
-
children: /* @__PURE__ */
|
|
282
|
+
children: /* @__PURE__ */ s("span", { className: T({ tone: M }) })
|
|
242
283
|
}
|
|
243
284
|
),
|
|
244
285
|
/* @__PURE__ */ n("div", { className: "ds:min-w-0 ds:flex-1", children: [
|
|
245
|
-
/* @__PURE__ */
|
|
286
|
+
/* @__PURE__ */ s(
|
|
246
287
|
A,
|
|
247
288
|
{
|
|
248
|
-
html:
|
|
289
|
+
html: E,
|
|
249
290
|
profile: e.contentFormat === "html" ? "rich-text" : "markdown",
|
|
250
|
-
className:
|
|
291
|
+
className: Q({ lines: k })
|
|
251
292
|
}
|
|
252
293
|
),
|
|
253
294
|
e.author || e.pinned || e.flagged || e.attachedTo ? /* @__PURE__ */ n("div", { className: "ds:mt-[var(--spacing-2xs)] ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-2xs)] type-meta ds:text-[color:var(--muted-foreground)]", children: [
|
|
254
|
-
e.author ? /* @__PURE__ */
|
|
295
|
+
e.author ? /* @__PURE__ */ s("span", { children: e.author.name }) : null,
|
|
255
296
|
e.pinned ? /* @__PURE__ */ n("span", { className: "ds:inline-flex ds:items-center", children: [
|
|
256
|
-
/* @__PURE__ */
|
|
257
|
-
|
|
297
|
+
/* @__PURE__ */ s(
|
|
298
|
+
K,
|
|
258
299
|
{
|
|
259
300
|
"aria-hidden": "true",
|
|
260
301
|
className: "ds:size-3 ds:text-[color:var(--accent)]"
|
|
261
302
|
}
|
|
262
303
|
),
|
|
263
|
-
/* @__PURE__ */
|
|
304
|
+
/* @__PURE__ */ s("span", { className: "ds:sr-only", children: m("noteTimeline.pinned") })
|
|
264
305
|
] }) : null,
|
|
265
306
|
e.flagged ? /* @__PURE__ */ n("span", { className: "ds:inline-flex ds:items-center", children: [
|
|
266
|
-
/* @__PURE__ */
|
|
267
|
-
|
|
307
|
+
/* @__PURE__ */ s(
|
|
308
|
+
O,
|
|
268
309
|
{
|
|
269
310
|
"aria-hidden": "true",
|
|
270
311
|
className: "ds:size-3 ds:text-[color:var(--warning-readable)]"
|
|
271
312
|
}
|
|
272
313
|
),
|
|
273
|
-
/* @__PURE__ */
|
|
314
|
+
/* @__PURE__ */ s("span", { className: "ds:sr-only", children: m("noteTimeline.flagged") })
|
|
274
315
|
] }) : null,
|
|
275
|
-
/* @__PURE__ */
|
|
316
|
+
/* @__PURE__ */ s(q, { attachedTo: e.attachedTo })
|
|
276
317
|
] }) : null
|
|
277
318
|
] })
|
|
278
319
|
]
|
|
@@ -284,9 +325,9 @@ const q = M(
|
|
|
284
325
|
);
|
|
285
326
|
}
|
|
286
327
|
);
|
|
287
|
-
|
|
328
|
+
X.displayName = "NoteTimeline";
|
|
288
329
|
export {
|
|
289
|
-
|
|
290
|
-
|
|
330
|
+
X as N,
|
|
331
|
+
J as n
|
|
291
332
|
};
|
|
292
|
-
//# sourceMappingURL=note-timeline-
|
|
333
|
+
//# sourceMappingURL=note-timeline-Dn_XTo1s.js.map
|