@alfadocs/ui-kit-debug 0.69.0 → 0.71.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/address-fields-CPbFJ8e8.js +246 -0
- package/dist/_chunks/address-fields-CPbFJ8e8.js.map +1 -0
- package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
- package/dist/_chunks/{agenda-card-BxSFkqgY.js.map → agenda-card-BQ-IKAru.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-g0kg7HwB.js → agenda-tray-CGXRk58j.js} +2 -2
- package/dist/_chunks/{agenda-tray-g0kg7HwB.js.map → agenda-tray-CGXRk58j.js.map} +1 -1
- package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js → ai-consent-banner-Be-h9mRI.js} +3 -3
- package/dist/_chunks/{ai-consent-banner-CXlsNX1c.js.map → ai-consent-banner-Be-h9mRI.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-CuhTo9mh.js → ai-prompt-input-V4DdOeqv.js} +2 -2
- package/dist/_chunks/{ai-prompt-input-CuhTo9mh.js.map → ai-prompt-input-V4DdOeqv.js.map} +1 -1
- package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
- package/dist/_chunks/alert-CHYZ96tR.js.map +1 -0
- package/dist/_chunks/{alia-sidebar-B47qRQb5.js → alia-sidebar-DvIUzIX9.js} +107 -106
- package/dist/_chunks/alia-sidebar-DvIUzIX9.js.map +1 -0
- package/dist/_chunks/{anamnesis-card-DRmE24OQ.js → anamnesis-card-DvYCa16e.js} +2 -2
- package/dist/_chunks/{anamnesis-card-DRmE24OQ.js.map → anamnesis-card-DvYCa16e.js.map} +1 -1
- package/dist/_chunks/anatomy-scheme-CXSk11UJ.js +2445 -0
- package/dist/_chunks/anatomy-scheme-CXSk11UJ.js.map +1 -0
- package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
- package/dist/_chunks/annotation-marker-qt5R9WZX.js.map +1 -0
- package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
- package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js.map → antenatal-schedule-timeline-CwXrQRm1.js.map} +1 -1
- package/dist/_chunks/{app-frame-BYx1gcV7.js → app-frame-DIEMIC5V.js} +67 -56
- package/dist/_chunks/app-frame-DIEMIC5V.js.map +1 -0
- package/dist/_chunks/appointment-card-DVaeJNVB.js +294 -0
- package/dist/_chunks/appointment-card-DVaeJNVB.js.map +1 -0
- package/dist/_chunks/appointment-timeline-PJgnrjFb.js +388 -0
- package/dist/_chunks/appointment-timeline-PJgnrjFb.js.map +1 -0
- package/dist/_chunks/appointment-tray-B16QPGbm.js +193 -0
- package/dist/_chunks/appointment-tray-B16QPGbm.js.map +1 -0
- package/dist/_chunks/{audio-recorder-DYXXnGug.js → audio-recorder-DNDsOLqO.js} +3 -3
- package/dist/_chunks/{audio-recorder-DYXXnGug.js.map → audio-recorder-DNDsOLqO.js.map} +1 -1
- package/dist/_chunks/{autocomplete-DOeGouCL.js → autocomplete-BrONKN8l.js} +168 -146
- package/dist/_chunks/autocomplete-BrONKN8l.js.map +1 -0
- package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
- package/dist/_chunks/badge-DCOqV9mI.js.map +1 -0
- package/dist/_chunks/{bishop-score-PJI3AXzA.js → bishop-score-Cym_TeQY.js} +3 -3
- package/dist/_chunks/{bishop-score-PJI3AXzA.js.map → bishop-score-Cym_TeQY.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-BZtIJ53x.js → bmi-calculator-zjeY4E7J.js} +2 -2
- package/dist/_chunks/{bmi-calculator-BZtIJ53x.js.map → bmi-calculator-zjeY4E7J.js.map} +1 -1
- package/dist/_chunks/{booking-C3VqFReX.js → booking-C7do4vaR.js} +7 -7
- package/dist/_chunks/{booking-C3VqFReX.js.map → booking-C7do4vaR.js.map} +1 -1
- package/dist/_chunks/{button-group-Ciq6J4IW.js → button-group-CvEnVzY7.js} +32 -35
- package/dist/_chunks/{button-group-Ciq6J4IW.js.map → button-group-CvEnVzY7.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-CvFGXa2z.js → care-plan-card-DzPDYgtK.js} +5 -5
- package/dist/_chunks/{care-plan-card-CvFGXa2z.js.map → care-plan-card-DzPDYgtK.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js → care-plan-entry-card-CEnQy7YP.js} +5 -5
- package/dist/_chunks/{care-plan-entry-card-C3E_gClk.js.map → care-plan-entry-card-CEnQy7YP.js.map} +1 -1
- package/dist/_chunks/care-plan-header-DcXFXWit.js +198 -0
- package/dist/_chunks/care-plan-header-DcXFXWit.js.map +1 -0
- package/dist/_chunks/{chat-message-3V54YipB.js → chat-message-DzpcJR-q.js} +25 -23
- package/dist/_chunks/chat-message-DzpcJR-q.js.map +1 -0
- package/dist/_chunks/city-input-Dkgaak7I.js +169 -0
- package/dist/_chunks/city-input-Dkgaak7I.js.map +1 -0
- package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
- package/dist/_chunks/clinical-note-card-BUvNMNGL.js.map +1 -0
- package/dist/_chunks/clipboard-list-S7s-MXQq.js +25 -0
- package/dist/_chunks/clipboard-list-S7s-MXQq.js.map +1 -0
- package/dist/_chunks/{combobox-Clum7gJ1.js → combobox-DnqSF0IH.js} +131 -114
- package/dist/_chunks/combobox-DnqSF0IH.js.map +1 -0
- package/dist/_chunks/connection-status-CY1HV8Wg.js +108 -0
- package/dist/_chunks/connection-status-CY1HV8Wg.js.map +1 -0
- package/dist/_chunks/{contact-profile-card-Dramqa9C.js → contact-profile-card-DDPwRFiP.js} +2 -2
- package/dist/_chunks/{contact-profile-card-Dramqa9C.js.map → contact-profile-card-DDPwRFiP.js.map} +1 -1
- package/dist/_chunks/control-room-rail-FAQZrGVL.js +333 -0
- package/dist/_chunks/control-room-rail-FAQZrGVL.js.map +1 -0
- package/dist/_chunks/country-select-BwUZQvTa.js +709 -0
- package/dist/_chunks/country-select-BwUZQvTa.js.map +1 -0
- package/dist/_chunks/{cycle-calculator-DmRGJNaT.js → cycle-calculator-CCmPwcBl.js} +2 -2
- package/dist/_chunks/{cycle-calculator-DmRGJNaT.js.map → cycle-calculator-CCmPwcBl.js.map} +1 -1
- package/dist/_chunks/{dependent-selector-CG_FOHya.js → dependent-selector-DUV4thxX.js} +2 -2
- package/dist/_chunks/{dependent-selector-CG_FOHya.js.map → dependent-selector-DUV4thxX.js.map} +1 -1
- package/dist/_chunks/{document-scanner-CTubA0-N.js → document-scanner-C_AxLooF.js} +3 -3
- package/dist/_chunks/{document-scanner-CTubA0-N.js.map → document-scanner-C_AxLooF.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-BTmsIQqD.js → due-date-calculator-Brdj-euS.js} +3 -3
- package/dist/_chunks/{due-date-calculator-BTmsIQqD.js.map → due-date-calculator-Brdj-euS.js.map} +1 -1
- package/dist/_chunks/editable-currency-cell-renderer-CGELrkIj.js +410 -0
- package/dist/_chunks/editable-currency-cell-renderer-CGELrkIj.js.map +1 -0
- package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
- package/dist/_chunks/{email-input-B_Y55f5G.js.map → email-input-DJ7EXklP.js.map} +1 -1
- package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-DmrgYSEX.js} +38 -20
- package/dist/_chunks/{entity-card-COhmqHly.js.map → entity-card-DmrgYSEX.js.map} +1 -1
- package/dist/_chunks/entity-summary-CaM1Y-xE.js +291 -0
- package/dist/_chunks/entity-summary-CaM1Y-xE.js.map +1 -0
- package/dist/_chunks/{fetal-weight-CRz7KE2D.js → fetal-weight-DNCkyeVo.js} +2 -2
- package/dist/_chunks/{fetal-weight-CRz7KE2D.js.map → fetal-weight-DNCkyeVo.js.map} +1 -1
- package/dist/_chunks/field-array-siUZzfYe.js +146 -0
- package/dist/_chunks/field-array-siUZzfYe.js.map +1 -0
- package/dist/_chunks/field-value-3jMM0uDx.js +415 -0
- package/dist/_chunks/field-value-3jMM0uDx.js.map +1 -0
- package/dist/_chunks/{file-upload-5ScQd4fE.js → file-upload-DwZcAK8D.js} +2 -1
- package/dist/_chunks/{file-upload-5ScQd4fE.js.map → file-upload-DwZcAK8D.js.map} +1 -1
- package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js → freemium-paywall-WYlNO7yT.js} +2 -2
- package/dist/_chunks/{freemium-paywall-DZ2mBS3w.js.map → freemium-paywall-WYlNO7yT.js.map} +1 -1
- package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js → gestational-age-calculator-DKzEV5Qi.js} +4 -4
- package/dist/_chunks/{gestational-age-calculator-BleUdhbI.js.map → gestational-age-calculator-DKzEV5Qi.js.map} +1 -1
- package/dist/_chunks/hash-CysBBS_N.js +17 -0
- package/dist/_chunks/hash-CysBBS_N.js.map +1 -0
- package/dist/_chunks/{hcg-doubling-CnjDXX6U.js → hcg-doubling-C7bmuaU3.js} +2 -2
- package/dist/_chunks/{hcg-doubling-CnjDXX6U.js.map → hcg-doubling-C7bmuaU3.js.map} +1 -1
- package/dist/_chunks/iban-input-B0TWzR1R.js +436 -0
- package/dist/_chunks/iban-input-B0TWzR1R.js.map +1 -0
- package/dist/_chunks/icon-picker-0B7KhrF1.js +272 -0
- package/dist/_chunks/icon-picker-0B7KhrF1.js.map +1 -0
- package/dist/_chunks/image-cropper-D9jqJy19.js +367 -0
- package/dist/_chunks/image-cropper-D9jqJy19.js.map +1 -0
- package/dist/_chunks/{actions-cell-renderer-DrcaxB0w.js → link-cell-renderer-De_SLjSq.js} +792 -668
- package/dist/_chunks/link-cell-renderer-De_SLjSq.js.map +1 -0
- package/dist/_chunks/list-checks-BUs75d_o.js +18 -0
- package/dist/_chunks/list-checks-BUs75d_o.js.map +1 -0
- package/dist/_chunks/lock-CKOIn0IK.js +15 -0
- package/dist/_chunks/lock-CKOIn0IK.js.map +1 -0
- package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js → marketplace-app-shell-BGqkywsi.js} +5 -5
- package/dist/_chunks/{marketplace-app-shell-6T9W4Knl.js.map → marketplace-app-shell-BGqkywsi.js.map} +1 -1
- package/dist/_chunks/message-card-DsHFFiL1.js +319 -0
- package/dist/_chunks/message-card-DsHFFiL1.js.map +1 -0
- package/dist/_chunks/{message-tray-DwrBLJlf.js → message-tray-C0a6CL1_.js} +172 -135
- package/dist/_chunks/message-tray-C0a6CL1_.js.map +1 -0
- package/dist/_chunks/{multi-select-BdHHDrRN.js → multi-select-WE4S9FIF.js} +75 -63
- package/dist/_chunks/{multi-select-BdHHDrRN.js.map → multi-select-WE4S9FIF.js.map} +1 -1
- package/dist/_chunks/nav-grid-9xphY3FM.js +169 -0
- package/dist/_chunks/nav-grid-9xphY3FM.js.map +1 -0
- package/dist/_chunks/notes-panel-DXiMfuvp.js +320 -0
- package/dist/_chunks/notes-panel-DXiMfuvp.js.map +1 -0
- package/dist/_chunks/notification-card-BMqNzCIt.js +290 -0
- package/dist/_chunks/notification-card-BMqNzCIt.js.map +1 -0
- package/dist/_chunks/{notification-tray-Btb9oQeZ.js → notification-tray-BmUlCx3g.js} +201 -166
- package/dist/_chunks/notification-tray-BmUlCx3g.js.map +1 -0
- package/dist/_chunks/{operator-hero-CP2Nhupm.js → operator-hero-BO8TqzX2.js} +3 -3
- package/dist/_chunks/{operator-hero-CP2Nhupm.js.map → operator-hero-BO8TqzX2.js.map} +1 -1
- package/dist/_chunks/panel-header-D313n_9-.js +105 -0
- package/dist/_chunks/panel-header-D313n_9-.js.map +1 -0
- package/dist/_chunks/patient-details-DgfTJimE.js +759 -0
- package/dist/_chunks/patient-details-DgfTJimE.js.map +1 -0
- package/dist/_chunks/{patient-search-CBC_ySF6.js → patient-search-CSWQKOSP.js} +3 -3
- package/dist/_chunks/{patient-search-CBC_ySF6.js.map → patient-search-CSWQKOSP.js.map} +1 -1
- package/dist/_chunks/{patient-shell-DV3XEtIB.js → patient-shell-BMwsIKlW.js} +3 -3
- package/dist/_chunks/{patient-shell-DV3XEtIB.js.map → patient-shell-BMwsIKlW.js.map} +1 -1
- package/dist/_chunks/patient-summary-card-D4NdgYJB.js +452 -0
- package/dist/_chunks/patient-summary-card-D4NdgYJB.js.map +1 -0
- package/dist/_chunks/patient-table-CERknpd8.js +1110 -0
- package/dist/_chunks/patient-table-CERknpd8.js.map +1 -0
- package/dist/_chunks/{payment-form-DvjwYVIT.js → payment-form-CxqIXqw7.js} +2 -2
- package/dist/_chunks/{payment-form-DvjwYVIT.js.map → payment-form-CxqIXqw7.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-DioWKBUq.js → payment-request-card-Blf-MFNY.js} +125 -136
- package/dist/_chunks/payment-request-card-Blf-MFNY.js.map +1 -0
- package/dist/_chunks/{pdf-viewer-D6BPfW2D.js → pdf-viewer-QfebdLOd.js} +192 -214
- package/dist/_chunks/pdf-viewer-QfebdLOd.js.map +1 -0
- package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js → periodontal-chart-card-hRRJY1NN.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-BuDEMbHE.js.map → periodontal-chart-card-hRRJY1NN.js.map} +1 -1
- package/dist/_chunks/permission-matrix-Bw5oexUt.js +174 -0
- package/dist/_chunks/permission-matrix-Bw5oexUt.js.map +1 -0
- package/dist/_chunks/position-grid-CcvqHaKN.js +169 -0
- package/dist/_chunks/position-grid-CcvqHaKN.js.map +1 -0
- package/dist/_chunks/postal-code-input-UCOYuRY2.js +192 -0
- package/dist/_chunks/postal-code-input-UCOYuRY2.js.map +1 -0
- package/dist/_chunks/{practice-results-KrTHqZua.js → practice-results-El5Z-oVp.js} +4 -4
- package/dist/_chunks/{practice-results-KrTHqZua.js.map → practice-results-El5Z-oVp.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-DORUAOHB.js → pregnancy-dating-CunHrOpO.js} +4 -4
- package/dist/_chunks/{pregnancy-dating-DORUAOHB.js.map → pregnancy-dating-CunHrOpO.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js → pregnancy-weight-gain-BUNpTsH-.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-DVz4rr7-.js.map → pregnancy-weight-gain-BUNpTsH-.js.map} +1 -1
- package/dist/_chunks/{product-hub-panel-e6pW220e.js → product-hub-panel-DtU7KXxm.js} +257 -217
- package/dist/_chunks/product-hub-panel-DtU7KXxm.js.map +1 -0
- package/dist/_chunks/province-select-D_TZvix3.js +261 -0
- package/dist/_chunks/province-select-D_TZvix3.js.map +1 -0
- package/dist/_chunks/{public-header.agent-DqkqA-ca.js → public-header.agent-TxmC_x1I.js} +2 -2
- package/dist/_chunks/{public-header.agent-DqkqA-ca.js.map → public-header.agent-TxmC_x1I.js.map} +1 -1
- package/dist/_chunks/radiograph-panel.agent-tWjN2nHX.js +553 -0
- package/dist/_chunks/radiograph-panel.agent-tWjN2nHX.js.map +1 -0
- package/dist/_chunks/reviews-panel-DxkSrgMl.js +559 -0
- package/dist/_chunks/reviews-panel-DxkSrgMl.js.map +1 -0
- package/dist/_chunks/rich-text-editor-C8tyGjfb.js +2621 -0
- package/dist/_chunks/rich-text-editor-C8tyGjfb.js.map +1 -0
- package/dist/_chunks/{scroll-area-5wNK0Cyz.js → scroll-area-BZOvUhwQ.js} +2 -2
- package/dist/_chunks/scroll-area-BZOvUhwQ.js.map +1 -0
- package/dist/_chunks/{select-DMLG44F5.js → select-KsyRr8WH.js} +114 -102
- package/dist/_chunks/select-KsyRr8WH.js.map +1 -0
- package/dist/_chunks/{sheet-BxsE7eQm.js → sheet-umkfZjF6.js} +53 -42
- package/dist/_chunks/sheet-umkfZjF6.js.map +1 -0
- package/dist/_chunks/{sidebar-DY9jGjgt.js → sidebar-QCp9wHNP.js} +125 -113
- package/dist/_chunks/sidebar-QCp9wHNP.js.map +1 -0
- package/dist/_chunks/{sign-document-B4DeRhTe.js → sign-document-By6hMOra.js} +2 -2
- package/dist/_chunks/{sign-document-B4DeRhTe.js.map → sign-document-By6hMOra.js.map} +1 -1
- package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
- package/dist/_chunks/stepper-accordion-DC-H-8v4.js.map +1 -0
- package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
- package/dist/_chunks/tab-bar-Bv9nGNdO.js.map +1 -0
- package/dist/_chunks/{tabs-BxcOziCo.js → tabs-CYZVKKDl.js} +2 -2
- package/dist/_chunks/{tabs-BxcOziCo.js.map → tabs-CYZVKKDl.js.map} +1 -1
- package/dist/_chunks/task-card-DCdsI0ZT.js +189 -0
- package/dist/_chunks/task-card-DCdsI0ZT.js.map +1 -0
- package/dist/_chunks/{task-tray-qOEQflu4.js → task-tray-DNVejijD.js} +2 -2
- package/dist/_chunks/{task-tray-qOEQflu4.js.map → task-tray-DNVejijD.js.map} +1 -1
- package/dist/_chunks/tasks-panel-C9odmawT.js +757 -0
- package/dist/_chunks/tasks-panel-C9odmawT.js.map +1 -0
- package/dist/_chunks/token-insert-menu-CFQqTe_n.js +147 -0
- package/dist/_chunks/token-insert-menu-CFQqTe_n.js.map +1 -0
- package/dist/_chunks/tool-rail-BZx0-yIr.js +524 -0
- package/dist/_chunks/tool-rail-BZx0-yIr.js.map +1 -0
- package/dist/_chunks/tooth-scheme-DJZtzfeY.js +2133 -0
- package/dist/_chunks/tooth-scheme-DJZtzfeY.js.map +1 -0
- package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
- package/dist/_chunks/transaction-chip-CscoQbxF.js.map +1 -0
- package/dist/_chunks/{transcript-panel-3THQX6nJ.js → transcript-panel-CHGHHHdT.js} +95 -83
- package/dist/_chunks/transcript-panel-CHGHHHdT.js.map +1 -0
- package/dist/_chunks/{unit-converter-YEpD9evj.js → unit-converter-CwlZbfdn.js} +2 -2
- package/dist/_chunks/{unit-converter-YEpD9evj.js.map → unit-converter-CwlZbfdn.js.map} +1 -1
- package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
- package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js.map +1 -0
- package/dist/_chunks/use-edge-resize-ZnGG7gyO.js.map +1 -1
- package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
- package/dist/_chunks/use-overflow-collapse-BIOzKbni.js.map +1 -0
- package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
- package/dist/_chunks/use-persistent-state-nZwZAnE9.js.map +1 -0
- package/dist/_chunks/{warning-stack-BsgaEbL8.js → warning-stack--sTrrBDA.js} +86 -101
- package/dist/_chunks/warning-stack--sTrrBDA.js.map +1 -0
- package/dist/_chunks/{workflow-map-Bdam9pGp.js → workflow-map-M8MBBHQm.js} +107 -119
- package/dist/_chunks/workflow-map-M8MBBHQm.js.map +1 -0
- package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
- package/dist/_chunks/zoom-out-CgVtf2Wx.js.map +1 -0
- package/dist/agent/index.js +5 -4
- package/dist/agent/index.js.map +1 -1
- package/dist/agent/types.d.ts +19 -2
- package/dist/agent/types.d.ts.map +1 -1
- package/dist/agent-catalog.json +3325 -322
- package/dist/agent-i18n/en.json +314 -14
- package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
- package/dist/components/_shared/entity-card/entity-card.d.ts.map +1 -1
- package/dist/components/_shared/entity-card/index.d.ts +1 -1
- package/dist/components/_shared/entity-card/index.d.ts.map +1 -1
- package/dist/components/_shared/field-value.d.ts +21 -0
- package/dist/components/_shared/field-value.d.ts.map +1 -0
- package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
- package/dist/components/_shared/field-visibility-cog.d.ts.map +1 -0
- package/dist/components/_shared/field-visibility.d.ts +36 -0
- package/dist/components/_shared/field-visibility.d.ts.map +1 -0
- package/dist/components/_shared/option.d.ts +2 -0
- package/dist/components/_shared/option.d.ts.map +1 -1
- package/dist/components/_shared/patient-fields.d.ts +119 -0
- package/dist/components/_shared/patient-fields.d.ts.map +1 -0
- package/dist/components/address-fields/address-fields.agent.d.ts +9 -0
- package/dist/components/address-fields/address-fields.agent.d.ts.map +1 -0
- package/dist/components/address-fields/address-fields.d.ts +29 -0
- package/dist/components/address-fields/address-fields.d.ts.map +1 -0
- package/dist/components/address-fields/index.d.ts +5 -0
- package/dist/components/address-fields/index.d.ts.map +1 -0
- package/dist/components/address-fields/index.js +6 -0
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +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/alert/alert.d.ts +5 -0
- package/dist/components/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/anamnesis-card/index.js +1 -1
- package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
- package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts.map +1 -0
- package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
- package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts.map +1 -0
- package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
- package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts.map +1 -0
- package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
- package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts.map +1 -0
- package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
- package/dist/components/anatomy-scheme/anatomy-scheme.d.ts.map +1 -0
- package/dist/components/anatomy-scheme/index.d.ts +6 -0
- package/dist/components/anatomy-scheme/index.d.ts.map +1 -0
- package/dist/components/anatomy-scheme/index.js +17 -0
- package/dist/components/anatomy-scheme/index.js.map +1 -0
- package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
- package/dist/components/annotation-marker/annotation-marker.d.ts.map +1 -0
- package/dist/components/annotation-marker/index.d.ts +3 -0
- package/dist/components/annotation-marker/index.d.ts.map +1 -0
- package/dist/components/annotation-marker/index.js +7 -0
- package/dist/components/annotation-marker/index.js.map +1 -0
- package/dist/components/app-frame/app-frame.d.ts +2 -2
- package/dist/components/app-frame/app-frame.d.ts.map +1 -1
- package/dist/components/app-frame/index.js +1 -1
- package/dist/components/appointment-card/appointment-card.d.ts +25 -1
- package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
- package/dist/components/appointment-card/index.js +6 -5
- package/dist/components/appointment-card/index.js.map +1 -1
- package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
- package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts.map +1 -0
- package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
- package/dist/components/appointment-timeline/appointment-timeline.d.ts.map +1 -0
- package/dist/components/appointment-timeline/index.d.ts +4 -0
- package/dist/components/appointment-timeline/index.d.ts.map +1 -0
- package/dist/components/appointment-timeline/index.js +6 -0
- package/dist/components/appointment-timeline/index.js.map +1 -0
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/autocomplete/autocomplete.d.ts +10 -0
- package/dist/components/autocomplete/autocomplete.d.ts.map +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/badge/badge.d.ts +6 -2
- package/dist/components/badge/badge.d.ts.map +1 -1
- package/dist/components/badge/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/index.js +1 -1
- package/dist/components/button-group/button-group.d.ts.map +1 -1
- package/dist/components/button-group/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/care-plan-header.agent.d.ts +4 -0
- package/dist/components/care-plan-header/care-plan-header.agent.d.ts.map +1 -0
- package/dist/components/care-plan-header/care-plan-header.d.ts +111 -0
- package/dist/components/care-plan-header/care-plan-header.d.ts.map +1 -0
- package/dist/components/care-plan-header/index.d.ts +4 -0
- package/dist/components/care-plan-header/index.d.ts.map +1 -0
- package/dist/components/care-plan-header/index.js +6 -0
- package/dist/components/care-plan-header/index.js.map +1 -0
- package/dist/components/chat-message/chat-message.d.ts.map +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/city-input/city-input.agent.d.ts +8 -0
- package/dist/components/city-input/city-input.agent.d.ts.map +1 -0
- package/dist/components/city-input/city-input.d.ts +57 -0
- package/dist/components/city-input/city-input.d.ts.map +1 -0
- package/dist/components/city-input/index.d.ts +5 -0
- package/dist/components/city-input/index.d.ts.map +1 -0
- package/dist/components/city-input/index.js +6 -0
- package/dist/components/city-input/index.js.map +1 -0
- package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
- package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/combobox/combobox.d.ts +17 -0
- package/dist/components/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/connection-status/connection-status.agent.d.ts +4 -0
- package/dist/components/connection-status/connection-status.agent.d.ts.map +1 -0
- package/dist/components/connection-status/connection-status.d.ts +36 -0
- package/dist/components/connection-status/connection-status.d.ts.map +1 -0
- package/dist/components/connection-status/index.d.ts +4 -0
- package/dist/components/connection-status/index.d.ts.map +1 -0
- package/dist/components/connection-status/index.js +6 -0
- package/dist/components/connection-status/index.js.map +1 -0
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
- package/dist/components/control-room-rail/control-room-context.d.ts.map +1 -0
- package/dist/components/control-room-rail/control-room-rail.agent.d.ts +4 -0
- package/dist/components/control-room-rail/control-room-rail.agent.d.ts.map +1 -0
- package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
- package/dist/components/control-room-rail/control-room-rail.d.ts.map +1 -0
- package/dist/components/control-room-rail/index.d.ts +6 -0
- package/dist/components/control-room-rail/index.d.ts.map +1 -0
- package/dist/components/control-room-rail/index.js +10 -0
- package/dist/components/control-room-rail/index.js.map +1 -0
- package/dist/components/counter/counter.d.ts +1 -1
- package/dist/components/country-select/country-select.agent.d.ts +8 -0
- package/dist/components/country-select/country-select.agent.d.ts.map +1 -0
- package/dist/components/country-select/country-select.d.ts +51 -0
- package/dist/components/country-select/country-select.d.ts.map +1 -0
- package/dist/components/country-select/index.d.ts +6 -0
- package/dist/components/country-select/index.d.ts.map +1 -0
- package/dist/components/country-select/index.js +9 -0
- package/dist/components/country-select/index.js.map +1 -0
- package/dist/components/country-select/iso-3166.d.ts +15 -0
- package/dist/components/country-select/iso-3166.d.ts.map +1 -0
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
- package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts.map +1 -1
- package/dist/components/data-table/cell-renderers/reorder-cell-renderer.d.ts +34 -0
- package/dist/components/data-table/cell-renderers/reorder-cell-renderer.d.ts.map +1 -0
- package/dist/components/data-table/filters/select-filter.d.ts.map +1 -1
- package/dist/components/data-table/index.d.ts +3 -1
- package/dist/components/data-table/index.d.ts.map +1 -1
- package/dist/components/data-table/index.js +35 -32
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/document-scanner/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/email-input/email-input.d.ts.map +1 -1
- package/dist/components/email-input/index.js +1 -1
- package/dist/components/entity-summary/entity-summary.agent.d.ts +4 -0
- package/dist/components/entity-summary/entity-summary.agent.d.ts.map +1 -0
- package/dist/components/entity-summary/entity-summary.d.ts +92 -0
- package/dist/components/entity-summary/entity-summary.d.ts.map +1 -0
- package/dist/components/entity-summary/index.d.ts +3 -0
- package/dist/components/entity-summary/index.d.ts.map +1 -0
- package/dist/components/entity-summary/index.js +5 -0
- package/dist/components/entity-summary/index.js.map +1 -0
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/field-array/field-array.agent.d.ts +4 -0
- package/dist/components/field-array/field-array.agent.d.ts.map +1 -0
- package/dist/components/field-array/field-array.d.ts +45 -0
- package/dist/components/field-array/field-array.d.ts.map +1 -0
- package/dist/components/field-array/index.d.ts +4 -0
- package/dist/components/field-array/index.d.ts.map +1 -0
- package/dist/components/field-array/index.js +6 -0
- package/dist/components/field-array/index.js.map +1 -0
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts +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/iban-input/iban-input.agent.d.ts +4 -0
- package/dist/components/iban-input/iban-input.agent.d.ts.map +1 -0
- package/dist/components/iban-input/iban-input.d.ts +51 -0
- package/dist/components/iban-input/iban-input.d.ts.map +1 -0
- package/dist/components/iban-input/index.d.ts +5 -0
- package/dist/components/iban-input/index.d.ts.map +1 -0
- package/dist/components/iban-input/index.js +13 -0
- package/dist/components/iban-input/index.js.map +1 -0
- package/dist/components/iban-input/is-valid-iban.d.ts +31 -0
- package/dist/components/iban-input/is-valid-iban.d.ts.map +1 -0
- package/dist/components/icon-picker/icon-picker.agent.d.ts +4 -0
- package/dist/components/icon-picker/icon-picker.agent.d.ts.map +1 -0
- package/dist/components/icon-picker/icon-picker.d.ts +41 -0
- package/dist/components/icon-picker/icon-picker.d.ts.map +1 -0
- package/dist/components/icon-picker/index.d.ts +4 -0
- package/dist/components/icon-picker/index.d.ts.map +1 -0
- package/dist/components/icon-picker/index.js +6 -0
- package/dist/components/icon-picker/index.js.map +1 -0
- package/dist/components/image-cropper/crop-geometry.d.ts +30 -0
- package/dist/components/image-cropper/crop-geometry.d.ts.map +1 -0
- package/dist/components/image-cropper/image-cropper.agent.d.ts +4 -0
- package/dist/components/image-cropper/image-cropper.agent.d.ts.map +1 -0
- package/dist/components/image-cropper/image-cropper.d.ts +32 -0
- package/dist/components/image-cropper/image-cropper.d.ts.map +1 -0
- package/dist/components/image-cropper/index.d.ts +5 -0
- package/dist/components/image-cropper/index.d.ts.map +1 -0
- package/dist/components/image-cropper/index.js +11 -0
- package/dist/components/image-cropper/index.js.map +1 -0
- package/dist/components/index.d.ts +25 -1
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-card/message-card.d.ts +14 -0
- package/dist/components/message-card/message-card.d.ts.map +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/message-tray/message-tray.agent.d.ts.map +1 -1
- package/dist/components/message-tray/message-tray.d.ts +4 -0
- package/dist/components/message-tray/message-tray.d.ts.map +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/multi-select/multi-select.d.ts.map +1 -1
- package/dist/components/nav-grid/index.d.ts +4 -0
- package/dist/components/nav-grid/index.d.ts.map +1 -0
- package/dist/components/nav-grid/index.js +7 -0
- package/dist/components/nav-grid/index.js.map +1 -0
- package/dist/components/nav-grid/nav-grid.agent.d.ts +4 -0
- package/dist/components/nav-grid/nav-grid.agent.d.ts.map +1 -0
- package/dist/components/nav-grid/nav-grid.d.ts +41 -0
- package/dist/components/nav-grid/nav-grid.d.ts.map +1 -0
- package/dist/components/notes-panel/index.d.ts +3 -0
- package/dist/components/notes-panel/index.d.ts.map +1 -0
- package/dist/components/notes-panel/index.js +5 -0
- package/dist/components/notes-panel/index.js.map +1 -0
- package/dist/components/notes-panel/notes-panel.agent.d.ts +4 -0
- package/dist/components/notes-panel/notes-panel.agent.d.ts.map +1 -0
- package/dist/components/notes-panel/notes-panel.d.ts +94 -0
- package/dist/components/notes-panel/notes-panel.d.ts.map +1 -0
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-card/notification-card.d.ts +15 -0
- package/dist/components/notification-card/notification-card.d.ts.map +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/notification-tray/notification-tray.agent.d.ts.map +1 -1
- package/dist/components/notification-tray/notification-tray.d.ts +4 -0
- package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/panel-header/index.d.ts +3 -0
- package/dist/components/panel-header/index.d.ts.map +1 -0
- package/dist/components/panel-header/index.js +7 -0
- package/dist/components/panel-header/index.js.map +1 -0
- package/dist/components/panel-header/panel-header.d.ts +41 -0
- package/dist/components/panel-header/panel-header.d.ts.map +1 -0
- package/dist/components/patient-details/index.d.ts +5 -0
- package/dist/components/patient-details/index.d.ts.map +1 -0
- package/dist/components/patient-details/index.js +6 -0
- package/dist/components/patient-details/index.js.map +1 -0
- package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
- package/dist/components/patient-details/patient-details.agent.d.ts.map +1 -0
- package/dist/components/patient-details/patient-details.d.ts +96 -0
- package/dist/components/patient-details/patient-details.d.ts.map +1 -0
- 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.agent.d.ts.map +1 -1
- package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
- package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
- package/dist/components/patient-table/columns.d.ts +69 -40
- package/dist/components/patient-table/columns.d.ts.map +1 -1
- package/dist/components/patient-table/index.d.ts +2 -6
- package/dist/components/patient-table/index.d.ts.map +1 -1
- package/dist/components/patient-table/index.js +8 -9
- package/dist/components/patient-table/patient-table.d.ts +38 -4
- package/dist/components/patient-table/patient-table.d.ts.map +1 -1
- package/dist/components/patient-table/types.d.ts +52 -2
- package/dist/components/patient-table/types.d.ts.map +1 -1
- package/dist/components/patient-table/use-responsive-columns.d.ts +8 -6
- package/dist/components/patient-table/use-responsive-columns.d.ts.map +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/permission-matrix/index.d.ts +4 -0
- package/dist/components/permission-matrix/index.d.ts.map +1 -0
- package/dist/components/permission-matrix/index.js +7 -0
- package/dist/components/permission-matrix/index.js.map +1 -0
- package/dist/components/permission-matrix/permission-matrix.agent.d.ts +4 -0
- package/dist/components/permission-matrix/permission-matrix.agent.d.ts.map +1 -0
- package/dist/components/permission-matrix/permission-matrix.d.ts +47 -0
- package/dist/components/permission-matrix/permission-matrix.d.ts.map +1 -0
- package/dist/components/position-grid/index.d.ts +4 -0
- package/dist/components/position-grid/index.d.ts.map +1 -0
- package/dist/components/position-grid/index.js +7 -0
- package/dist/components/position-grid/index.js.map +1 -0
- package/dist/components/position-grid/position-grid.agent.d.ts +4 -0
- package/dist/components/position-grid/position-grid.agent.d.ts.map +1 -0
- package/dist/components/position-grid/position-grid.d.ts +39 -0
- package/dist/components/position-grid/position-grid.d.ts.map +1 -0
- package/dist/components/postal-code-input/index.d.ts +5 -0
- package/dist/components/postal-code-input/index.d.ts.map +1 -0
- package/dist/components/postal-code-input/index.js +6 -0
- package/dist/components/postal-code-input/index.js.map +1 -0
- package/dist/components/postal-code-input/postal-code-input.agent.d.ts +8 -0
- package/dist/components/postal-code-input/postal-code-input.agent.d.ts.map +1 -0
- package/dist/components/postal-code-input/postal-code-input.d.ts +27 -0
- package/dist/components/postal-code-input/postal-code-input.d.ts.map +1 -0
- 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/product-hub-tray/index.js +1 -1
- package/dist/components/product-hub-tray/product-hub-tray.d.ts +13 -1
- package/dist/components/product-hub-tray/product-hub-tray.d.ts.map +1 -1
- package/dist/components/province-select/index.d.ts +6 -0
- package/dist/components/province-select/index.d.ts.map +1 -0
- package/dist/components/province-select/index.js +7 -0
- package/dist/components/province-select/index.js.map +1 -0
- package/dist/components/province-select/it-provinces.d.ts +8 -0
- package/dist/components/province-select/it-provinces.d.ts.map +1 -0
- package/dist/components/province-select/province-select.agent.d.ts +8 -0
- package/dist/components/province-select/province-select.agent.d.ts.map +1 -0
- package/dist/components/province-select/province-select.d.ts +38 -0
- package/dist/components/province-select/province-select.d.ts.map +1 -0
- package/dist/components/public-footer/public-footer.d.ts +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/radiograph-panel/index.d.ts +4 -0
- package/dist/components/radiograph-panel/index.d.ts.map +1 -0
- package/dist/components/radiograph-panel/index.js +7 -0
- package/dist/components/radiograph-panel/index.js.map +1 -0
- package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
- package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts.map +1 -0
- package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
- package/dist/components/radiograph-panel/radiograph-panel.d.ts.map +1 -0
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/reviews-panel/reviews-panel.d.ts.map +1 -1
- package/dist/components/rich-text-editor/editor-toolbar.d.ts +17 -0
- package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.agent.d.ts.map +1 -1
- package/dist/components/rich-text-editor/rich-text-editor.d.ts.map +1 -1
- package/dist/components/scroll-area/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/select/select.d.ts +8 -2
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sheet/sheet.d.ts.map +1 -1
- package/dist/components/sidebar/index.js +2 -2
- package/dist/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/skeleton/skeleton.d.ts +1 -1
- package/dist/components/stepper-accordion/index.js +1 -1
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tab-bar/tab-bar.d.ts +18 -1
- package/dist/components/tab-bar/tab-bar.d.ts.map +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.d.ts +14 -6
- package/dist/components/task-card/task-card.d.ts.map +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/tasks-panel/index.d.ts +4 -0
- package/dist/components/tasks-panel/index.d.ts.map +1 -0
- package/dist/components/tasks-panel/index.js +6 -0
- package/dist/components/tasks-panel/index.js.map +1 -0
- package/dist/components/tasks-panel/tasks-panel.agent.d.ts +4 -0
- package/dist/components/tasks-panel/tasks-panel.agent.d.ts.map +1 -0
- package/dist/components/tasks-panel/tasks-panel.d.ts +152 -0
- package/dist/components/tasks-panel/tasks-panel.d.ts.map +1 -0
- package/dist/components/token-insert-menu/index.d.ts +4 -0
- package/dist/components/token-insert-menu/index.d.ts.map +1 -0
- package/dist/components/token-insert-menu/index.js +6 -0
- package/dist/components/token-insert-menu/index.js.map +1 -0
- package/dist/components/token-insert-menu/token-insert-menu.agent.d.ts +4 -0
- package/dist/components/token-insert-menu/token-insert-menu.agent.d.ts.map +1 -0
- package/dist/components/token-insert-menu/token-insert-menu.d.ts +33 -0
- package/dist/components/token-insert-menu/token-insert-menu.d.ts.map +1 -0
- package/dist/components/tool-rail/index.d.ts +4 -0
- package/dist/components/tool-rail/index.d.ts.map +1 -0
- package/dist/components/tool-rail/index.js +6 -0
- package/dist/components/tool-rail/index.js.map +1 -0
- package/dist/components/tool-rail/tool-rail.agent.d.ts +4 -0
- package/dist/components/tool-rail/tool-rail.agent.d.ts.map +1 -0
- package/dist/components/tool-rail/tool-rail.d.ts +160 -0
- package/dist/components/tool-rail/tool-rail.d.ts.map +1 -0
- package/dist/components/tooth-scheme/index.d.ts +2 -2
- package/dist/components/tooth-scheme/index.d.ts.map +1 -1
- package/dist/components/tooth-scheme/index.js +30 -23
- package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
- package/dist/components/tooth-scheme/tooth-data.d.ts.map +1 -1
- package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
- package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts.map +1 -1
- package/dist/components/tooth-scheme/tooth-scheme.d.ts +84 -11
- package/dist/components/tooth-scheme/tooth-scheme.d.ts.map +1 -1
- package/dist/components/transaction-chip/index.js +1 -1
- package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
- package/dist/components/transaction-chip/transaction-chip.d.ts.map +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/transcript-panel/transcript-panel.d.ts +2 -2
- package/dist/components/transcript-panel/transcript-panel.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/warning-stack/warning-stack.d.ts +10 -7
- package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.d.ts.map +1 -1
- package/dist/hooks/index.js +24 -22
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-clamp-overflow.d.ts +19 -0
- package/dist/hooks/use-clamp-overflow.d.ts.map +1 -0
- package/dist/hooks/use-edge-resize.d.ts +2 -2
- package/dist/hooks/use-overflow-collapse.d.ts +46 -0
- package/dist/hooks/use-overflow-collapse.d.ts.map +1 -0
- package/dist/hooks/use-persistent-state.d.ts +7 -1
- package/dist/hooks/use-persistent-state.d.ts.map +1 -1
- package/dist/hooks/use-scroll-overflow.d.ts +36 -0
- package/dist/hooks/use-scroll-overflow.d.ts.map +1 -0
- package/dist/i18n/locales/ar.d.ts +475 -26
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +478 -31
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +475 -26
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +480 -31
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +475 -26
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +485 -31
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +476 -34
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +492 -39
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +475 -26
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +477 -31
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +475 -26
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +480 -31
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +475 -26
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +476 -31
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +475 -26
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +480 -31
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +475 -26
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +481 -31
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +475 -26
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +473 -31
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +475 -26
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +481 -31
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +475 -26
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +485 -31
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +475 -26
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +485 -31
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +475 -26
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +478 -31
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +475 -26
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +482 -31
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +475 -26
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +480 -31
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +475 -26
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +478 -31
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +475 -26
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +473 -31
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +826 -709
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +480 -31
- package/dist/locales/de.json +480 -31
- package/dist/locales/el.json +480 -31
- package/dist/locales/en.json +480 -31
- package/dist/locales/es.json +480 -31
- package/dist/locales/fr.json +480 -31
- package/dist/locales/hi.json +480 -31
- package/dist/locales/it.json +480 -31
- package/dist/locales/ja.json +480 -31
- package/dist/locales/nl.json +480 -31
- package/dist/locales/pl.json +480 -31
- package/dist/locales/pt.json +480 -31
- package/dist/locales/ro.json +480 -31
- package/dist/locales/ru.json +480 -31
- package/dist/locales/sq.json +480 -31
- package/dist/locales/sv.json +480 -31
- package/dist/locales/tr.json +480 -31
- package/dist/locales/zh.json +480 -31
- package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/alia-types.d.ts +9 -0
- package/dist/patterns/alia-assistant/alia-types.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +9 -1
- package/package.json +101 -5
- package/dist/_chunks/actions-cell-renderer-DrcaxB0w.js.map +0 -1
- package/dist/_chunks/ai-tools-rail-BA_sqy1A.js +0 -373
- package/dist/_chunks/ai-tools-rail-BA_sqy1A.js.map +0 -1
- package/dist/_chunks/alert-_mUKLmwA.js.map +0 -1
- package/dist/_chunks/alia-sidebar-B47qRQb5.js.map +0 -1
- package/dist/_chunks/app-frame-BYx1gcV7.js.map +0 -1
- package/dist/_chunks/appointment-tray-CZtvtaH-.js +0 -431
- package/dist/_chunks/appointment-tray-CZtvtaH-.js.map +0 -1
- package/dist/_chunks/autocomplete-DOeGouCL.js.map +0 -1
- package/dist/_chunks/badge-CqGsX32l.js.map +0 -1
- package/dist/_chunks/chat-message-3V54YipB.js.map +0 -1
- package/dist/_chunks/clinical-note-card-DqQYf_D4.js +0 -333
- package/dist/_chunks/clinical-note-card-DqQYf_D4.js.map +0 -1
- package/dist/_chunks/combobox-Clum7gJ1.js.map +0 -1
- package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js +0 -448
- package/dist/_chunks/editable-currency-cell-renderer-kgqp_mIw.js.map +0 -1
- package/dist/_chunks/email-input-B_Y55f5G.js +0 -396
- package/dist/_chunks/message-card-Bx4GmLvf.js +0 -277
- package/dist/_chunks/message-card-Bx4GmLvf.js.map +0 -1
- package/dist/_chunks/message-tray-DwrBLJlf.js.map +0 -1
- package/dist/_chunks/notification-card-BiESdm8q.js +0 -255
- package/dist/_chunks/notification-card-BiESdm8q.js.map +0 -1
- package/dist/_chunks/notification-tray-Btb9oQeZ.js.map +0 -1
- package/dist/_chunks/patient-summary-card-B836_fDB.js +0 -435
- package/dist/_chunks/patient-summary-card-B836_fDB.js.map +0 -1
- package/dist/_chunks/patient-table-CDuosVru.js +0 -889
- package/dist/_chunks/patient-table-CDuosVru.js.map +0 -1
- package/dist/_chunks/payment-request-card-DioWKBUq.js.map +0 -1
- package/dist/_chunks/pdf-viewer-D6BPfW2D.js.map +0 -1
- package/dist/_chunks/product-hub-panel-e6pW220e.js.map +0 -1
- package/dist/_chunks/reviews-panel-Dq7LMDcH.js +0 -555
- package/dist/_chunks/reviews-panel-Dq7LMDcH.js.map +0 -1
- package/dist/_chunks/rich-text-editor-BsV7zUdg.js +0 -2142
- package/dist/_chunks/rich-text-editor-BsV7zUdg.js.map +0 -1
- package/dist/_chunks/scroll-area-5wNK0Cyz.js.map +0 -1
- package/dist/_chunks/select-DMLG44F5.js.map +0 -1
- package/dist/_chunks/sheet-BxsE7eQm.js.map +0 -1
- package/dist/_chunks/sidebar-DY9jGjgt.js.map +0 -1
- package/dist/_chunks/stepper-accordion-Dki6r9ZE.js.map +0 -1
- package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
- package/dist/_chunks/tab-bar-B1ovILzh.js.map +0 -1
- package/dist/_chunks/task-card-BwY9jaV1.js +0 -124
- package/dist/_chunks/task-card-BwY9jaV1.js.map +0 -1
- package/dist/_chunks/tooth-scheme-yBr53cvv.js +0 -1330
- package/dist/_chunks/tooth-scheme-yBr53cvv.js.map +0 -1
- package/dist/_chunks/transaction-chip-DK84XCBU.js.map +0 -1
- package/dist/_chunks/transcript-panel-3THQX6nJ.js.map +0 -1
- package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
- package/dist/_chunks/use-persistent-state-i23OWy6G.js.map +0 -1
- package/dist/_chunks/warning-stack-BsgaEbL8.js.map +0 -1
- package/dist/_chunks/workflow-map-Bdam9pGp.js.map +0 -1
- package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts +0 -4
- package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +0 -1
- package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +0 -68
- package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +0 -1
- package/dist/components/ai-tools-rail/index.d.ts +0 -4
- package/dist/components/ai-tools-rail/index.d.ts.map +0 -1
- package/dist/components/ai-tools-rail/index.js +0 -6
- package/dist/components/patient-table/cell-renderers/contact-cell.d.ts +0 -45
- package/dist/components/patient-table/cell-renderers/contact-cell.d.ts.map +0 -1
- package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts +0 -26
- package/dist/components/patient-table/cell-renderers/patient-identity-cell.d.ts.map +0 -1
- /package/dist/components/{ai-tools-rail → address-fields}/index.js.map +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tasks-panel-C9odmawT.js","sources":["../../node_modules/lucide-react/dist/esm/icons/coins.js","../../node_modules/lucide-react/dist/esm/icons/gem.js","../../node_modules/lucide-react/dist/esm/icons/megaphone.js","../../node_modules/lucide-react/dist/esm/icons/tag.js","../../src/components/tasks-panel/tasks-panel.agent.ts","../../src/components/tasks-panel/tasks-panel.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M13.744 17.736a6 6 0 1 1-7.48-7.48\", key: \"bq4yh3\" }],\n [\"path\", { d: \"M15 6h1v4\", key: \"11y1tn\" }],\n [\"path\", { d: \"m6.134 14.768.866-.5 2 3.464\", key: \"17snzx\" }],\n [\"circle\", { cx: \"16\", cy: \"8\", r: \"6\", key: \"14bfc9\" }]\n];\nconst Coins = createLucideIcon(\"coins\", __iconNode);\n\nexport { __iconNode, Coins as default };\n//# sourceMappingURL=coins.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"path\", { d: \"M10.5 3 8 9l4 13 4-13-2.5-6\", key: \"b3dvk1\" }],\n [\n \"path\",\n {\n d: \"M17 3a2 2 0 0 1 1.6.8l3 4a2 2 0 0 1 .013 2.382l-7.99 10.986a2 2 0 0 1-3.247 0l-7.99-10.986A2 2 0 0 1 2.4 7.8l2.998-3.997A2 2 0 0 1 7 3z\",\n key: \"7w4byz\"\n }\n ],\n [\"path\", { d: \"M2 9h20\", key: \"16fsjt\" }]\n];\nconst Gem = createLucideIcon(\"gem\", __iconNode);\n\nexport { __iconNode, Gem as default };\n//# sourceMappingURL=gem.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M11 6a13 13 0 0 0 8.4-2.8A1 1 0 0 1 21 4v12a1 1 0 0 1-1.6.8A13 13 0 0 0 11 14H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2z\",\n key: \"q8bfy3\"\n }\n ],\n [\"path\", { d: \"M6 14a12 12 0 0 0 2.4 7.2 2 2 0 0 0 3.2-2.4A8 8 0 0 1 10 14\", key: \"1853fq\" }],\n [\"path\", { d: \"M8 6v8\", key: \"15ugcq\" }]\n];\nconst Megaphone = createLucideIcon(\"megaphone\", __iconNode);\n\nexport { __iconNode, Megaphone as default };\n//# sourceMappingURL=megaphone.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z\",\n key: \"vktsd0\"\n }\n ],\n [\"circle\", { cx: \"7.5\", cy: \"7.5\", r: \".5\", fill: \"currentColor\", key: \"kqv944\" }]\n];\nconst Tag = createLucideIcon(\"tag\", __iconNode);\n\nexport { __iconNode, Tag as default };\n//# sourceMappingURL=tag.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — TasksPanel. */\n/* */\n/* Rail Tasks surface: read task ids + status (never note / patient), */\n/* activate a row, toggle done / dismiss a task, re-anchor the scroll on */\n/* the overdue bucket, and drive the filter bar — all through the curated */\n/* handle. In-page within the rail panel (no open/close — the rail owns */\n/* panel open state). Mirrors taskTrayAgent's safety mapping (select=read, */\n/* toggle_done=write, dismiss=destructive) plus AppointmentTimeline's */\n/* scroll capability; the stateful filter bar adds the `filter` capability */\n/* backed by `set_filter`. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TasksPanelHandle } from './tasks-panel';\n\nexport const tasksPanelAgent: AgentAdapter<TasksPanelHandle> = {\n id: 'tasks-panel',\n // 'pick' backs select_item (non-persisting activation, matching\n // AppointmentTimeline); 'dismiss' backs dismiss; 'scroll' backs\n // jump_to_overdue (re-anchors the viewport); 'filter' backs set_filter (the\n // status / type / assignee / overdue filter bar is genuinely stateful);\n // 'view_change' backs change_scope (the patient ↔ mine segment); 'paginate'\n // backs load_more (append the next page of tasks).\n capabilities: [\n 'pick',\n 'dismiss',\n 'scroll',\n 'filter',\n 'view_change',\n 'paginate',\n ],\n state: {\n items: {\n type: 'Array<{ id: string; status: string }>',\n descriptionKey: 'ui.agent.tasksPanel.state.items',\n description:\n 'Currently-rendered tasks. Ids + status only — never task note / patient.',\n read: (handle) => handle.getItems(),\n },\n },\n actions: {\n select_item: {\n safety: 'read',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.tasksPanel.actions.selectItem',\n description: 'Activate the task with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.selectItem(args.id);\n },\n },\n toggle_done: {\n safety: 'write',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n descriptionKey: 'ui.agent.tasksPanel.actions.toggleDone',\n description: 'Request the host to toggle the done state of a task.',\n invoke: (handle, args: { id: string }) => {\n handle.toggleDone(args.id);\n },\n },\n dismiss: {\n safety: 'destructive',\n argsType: '{ id: string }',\n argsSchema: {\n type: 'object',\n properties: { id: { type: 'string' } },\n required: ['id'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.tasksPanel.actions.dismiss',\n description:\n 'Request the host to dismiss / remove the task with the given id.',\n invoke: (handle, args: { id: string }) => {\n handle.dismiss(args.id);\n },\n },\n jump_to_overdue: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.tasksPanel.actions.jumpToOverdue',\n description: 'Re-anchor the panel scroll on the overdue tasks.',\n invoke: (handle) => {\n handle.jumpToOverdue();\n },\n },\n set_filter: {\n safety: 'read',\n argsType:\n \"{ status?: 'todo' | 'done' | 'all'; type?: string | null; assignee?: string | null; overdueOnly?: boolean }\",\n argsSchema: {\n type: 'object',\n properties: {\n status: { type: 'string', enum: ['todo', 'done', 'all'] },\n type: { type: ['string', 'null'] },\n assignee: { type: ['string', 'null'] },\n overdueOnly: { type: 'boolean' },\n },\n },\n idempotent: true,\n descriptionKey: 'ui.agent.tasksPanel.actions.setFilter',\n description:\n 'Set the task filters (status segment, type, assignee, overdue-only). Omitted keys are left unchanged.',\n invoke: (\n handle,\n args: {\n status?: 'todo' | 'done' | 'all';\n type?: string | null;\n assignee?: string | null;\n overdueOnly?: boolean;\n },\n ) => {\n handle.setFilter(args);\n },\n },\n change_scope: {\n safety: 'read',\n argsType: \"{ scope: 'patient' | 'mine' }\",\n argsSchema: {\n type: 'object',\n properties: { scope: { type: 'string', enum: ['patient', 'mine'] } },\n required: ['scope'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.tasksPanel.actions.changeScope',\n description:\n \"Switch the task scope segment between this patient ('patient') and the operator's own tasks ('mine'). The host re-feeds the items.\",\n invoke: (handle, args: { scope: 'patient' | 'mine' }) => {\n handle.changeScope(args.scope);\n },\n },\n load_more: {\n safety: 'read',\n // Requests the host to append the next page — not idempotent (each call\n // advances the page) and reaches the host data source.\n openWorld: true,\n descriptionKey: 'ui.agent.tasksPanel.actions.loadMore',\n description: 'Request the host to append the next page of tasks.',\n invoke: (handle) => {\n handle.loadMore();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'tasks-panel',\n description: 'Marks the TasksPanel 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 panel from the agent.',\n },\n item: {\n attr: 'data-task-id',\n description:\n 'Stable task id emitted on each rendered TaskCard inside the panel.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n CheckSquare,\n Coins,\n Gem,\n ListChecks,\n Megaphone,\n Pencil,\n Plus,\n Square,\n Tag,\n X,\n} from 'lucide-react';\nimport { Badge, type BadgeProps } from '../badge';\nimport { Button } from '../button';\nimport { IconButton } from '../button/icon-button';\nimport { ButtonGroup } from '../button-group';\nimport { PanelHeader } from '../panel-header';\nimport { Select } from '../select';\nimport { Switch } from '../switch';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { EmptyState } from '../empty-state/empty-state';\nimport { TaskCard, type TaskItem } from '../task-card';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { tasksPanelAgent } from './tasks-panel.agent';\n\n/* -------------------------------------------------------------------- */\n/* TasksPanel */\n/* */\n/* The Tasks tool for the Control Room rail — the next surface after */\n/* AppointmentTimeline (Appointments) and NotesPanel (Notes). It is the */\n/* rail equivalent of the in-page TaskTray: a fill-mode panel that owns */\n/* its own scroll, groups a flat task list into DUE-DATE buckets */\n/* (Overdue / Today / Tomorrow / This week / Later, with Done sunk to */\n/* the bottom), pins a filter header + per-bucket headers, and fades at */\n/* each scroll edge. Unlike AppointmentTimeline it does NOT scroll a */\n/* continuous calendar stream — platform tasks are a bounded, date-ASC */\n/* list — so there is no bidirectional infinite scroll or today-anchor, */\n/* only an optional one-way `onLoadMore`. */\n/* */\n/* Each row reuses TaskCard (no reinvention); the panel adds a coloured */\n/* type Badge (the platform's primary per-task signal) + elevation via */\n/* the card's className. All visible text flows through */\n/* useTranslation('ui') against `tasksPanel.*`; only ids + status reach */\n/* the agent adapter (no PHI). */\n/* -------------------------------------------------------------------- */\n\n/* How close (px) to the bottom edge before `onLoadMore` fires. */\nconst EDGE_LOAD_THRESHOLD = 96;\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\n/** Which set of tasks the panel shows — the host owns the actual feed. */\nexport type TasksPanelScope = 'patient' | 'mine';\n\n/** Status segment value. Mirrors the platform `done` filter (default `todo`). */\nexport type TasksPanelStatusFilter = 'todo' | 'done' | 'all';\n\n/**\n * Panel-local extension of the card's `TaskItem`. The extra fields here drive\n * bucketing + filtering; the row's display fields (the typed link via\n * `linkType` + `linkedLabel`, the `assigneeLabel`, `dueLabel`) live on\n * `TaskItem` and are rendered by `TaskCard` itself. The host maps the platform\n * `DoctorReminder` → this shape — composing `title` (a summary, NOT the bare\n * type), `note`, the linked entity, the assignee, and `dueLabel`.\n */\nexport interface TasksPanelItem extends TaskItem {\n /** ISO-8601 due/scheduled instant (platform `DoctorReminder.date`). Buckets + orders the list. */\n dueIso: string;\n /** System or custom task-type key (`recall` | `payment` | `collection` | `other` | `custom-*`). Drives the type filter + badge. */\n type?: string;\n /**\n * Localised type label, required for CUSTOM types (the panel resolves system\n * keys itself). Falls back to the system label for the four known keys.\n */\n typeLabel?: string;\n /**\n * Assignee id (the platform `practiceUser`). Omit ⇒ unassigned; give pool\n * tasks a shared sentinel value (e.g. `'unassigned'`) if you want the pool\n * itself filterable. Drives the assignee FILTER (exact match); the displayed\n * name is `TaskItem.assigneeLabel`.\n */\n assignee?: string;\n /** Provenance — manual vs workflow-created. Filter only. */\n createdBy?: 'user' | 'workflow';\n}\n\n/** Curated imperative handle — identifiers + structural state only, no PHI. */\nexport interface TasksPanelHandle {\n getItems: () => Array<{ id: string; status: string }>;\n selectItem: (id: string) => void;\n toggleDone: (id: string) => void;\n dismiss: (id: string) => void;\n jumpToOverdue: () => void;\n setFilter: (next: {\n status?: TasksPanelStatusFilter;\n type?: string | null;\n assignee?: string | null;\n overdueOnly?: boolean;\n }) => void;\n /** Switch the task scope segment (patient ↔ mine). The host re-feeds items. */\n changeScope: (next: TasksPanelScope) => void;\n /** Request the host to append the next page of tasks (mirrors onLoadMore). */\n loadMore: () => void;\n}\n\ninterface FilterOption {\n /** Stable value passed back through the matching `on…Change`. */\n value: string;\n /** Localised label. */\n label: string;\n}\n\nexport interface TasksPanelProps extends Omit<\n HTMLAttributes<HTMLElement>,\n 'onClick' | 'id' | 'title'\n> {\n /** Stable instance id, surfaced as `data-component-id`. */\n id?: string;\n /** Tasks to render — any order; bucketed + sorted internally (due ASC, Done last). */\n items: TasksPanelItem[];\n /** ISO-8601 \"now\" anchor — buckets + overdue compute against it. Defaults to the current instant; stories pass a fixed value. */\n nowIso?: string;\n /** Panel heading. Defaults to the localised \"Tasks\". */\n title?: string;\n /** Visual density forwarded to each TaskCard. Defaults to `xs` — the compact rail row. */\n size?: 'xs' | 'sm' | 'md';\n /** Fires when a row is activated. */\n onOpenTask?: (item: TasksPanelItem) => void;\n /** Fires when the host should toggle a task's done state. */\n onToggleDone?: (item: TasksPanelItem) => void;\n /** Fires when the host should open the task editor. Omit to hide the per-row edit action. */\n onEditTask?: (item: TasksPanelItem) => void;\n /** Fires when the host should dismiss / remove a task. Omit to hide the per-row dismiss action. */\n onDismissTask?: (item: TasksPanelItem) => void;\n /** Fires when the header \"Add\" affordance is activated. Omit to hide it. */\n onAddTask?: () => void;\n /**\n * Read-only mode — hides every write affordance (toggle / edit / dismiss /\n * add). Mirrors the platform gating writes behind `practice_task_edit`.\n */\n readOnly?: boolean;\n /**\n * Per-row trailing action toolbar, forwarded to each TaskCard's `actions`\n * slot. Overrides the default toggle / edit / dismiss buttons (the type Badge\n * is always prepended by the panel). Ignored when `readOnly`.\n */\n renderItemActions?: (item: TasksPanelItem) => ReactNode;\n\n /* ----- Scope (host-driven feed switch) ----- */\n /** Controlled scope segment. */\n scope?: TasksPanelScope;\n /** Uncontrolled initial scope. Default `'patient'` when both scopes are available, else the only one. */\n defaultScope?: TasksPanelScope;\n /** Fires when the user switches scope — the host re-feeds `items`. */\n onScopeChange?: (next: TasksPanelScope) => void;\n /** Which scopes the segment offers. Omit ⇒ no scope segment (single-scope panel). */\n availableScopes?: TasksPanelScope[];\n\n /* ----- One-way pagination ----- */\n /** Load the next page — fired when the bottom edge is reached and via the footer button. */\n onLoadMore?: () => void;\n /** Whether more tasks exist. Defaults to `true` when `onLoadMore` is set. */\n hasMore?: boolean;\n /** Show the bottom loading row while the next page is fetched. */\n loadingMore?: boolean;\n /** Full-panel initial loading state (skeleton rows in the body). */\n loading?: boolean;\n /** Error surface — `true` for the default error EmptyState, or a custom node. */\n error?: boolean | ReactNode;\n\n /* ----- Filters (mirror platform TaskFilterType) ----- */\n /** Show the filter header (status segment + type / assignee selects + overdue toggle). Default `true`. */\n showFilters?: boolean;\n /** Controlled status segment. */\n statusFilter?: TasksPanelStatusFilter;\n /** Uncontrolled initial status segment. Default `'todo'` (the platform default). */\n defaultStatusFilter?: TasksPanelStatusFilter;\n onStatusFilterChange?: (next: TasksPanelStatusFilter) => void;\n /** Task types for the type filter. Omit ⇒ no type filter. */\n typeOptions?: FilterOption[];\n /** Controlled type filter (`null`/empty ⇒ all). */\n typeFilter?: string | null;\n onTypeFilterChange?: (next: string | null) => void;\n /** Assignees for the assignee filter. Pass an explicit Unassigned option if wanted. Omit ⇒ no assignee filter. */\n assigneeOptions?: FilterOption[];\n /** Controlled assignee filter (`null`/empty ⇒ anyone). */\n assigneeFilter?: string | null;\n onAssigneeFilterChange?: (next: string | null) => void;\n /** Controlled overdue-only toggle. */\n overdueOnly?: boolean;\n /** Uncontrolled initial overdue-only state. Default `false`. */\n defaultOverdueOnly?: boolean;\n onOverdueOnlyChange?: (next: boolean) => void;\n\n /* ----- Empty ----- */\n emptyTitle?: string;\n emptyDescription?: string;\n /** CTA wired into the first-use empty state (e.g. Create task). */\n emptyAction?: { label: string; onClick: () => void };\n\n /** Accessible name for the panel region (defaults to `title`). */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva(\n [\n 'ds:flex ds:flex-col ds:h-full ds:min-h-0',\n 'ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n ].join(' '),\n {\n variants: { size: { xs: '', sm: '', md: '' } },\n defaultVariants: { size: 'xs' },\n },\n);\n\n/* Scroll region with a block-axis fade mask — identical technique to\n AppointmentTimeline, single-direction load. Disabled under reduced-motion,\n the accessible theme, and forced-colors. */\nconst scrollRegionClasses = [\n 'ds:flex-1 ds:min-h-0 ds:overflow-y-auto',\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)]',\n 'ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]',\n 'ds:[--tpl-mask-top:black] ds:[--tpl-mask-bottom:black]',\n 'ds:data-[fade-top=true]:[--tpl-mask-top:transparent]',\n 'ds:data-[fade-bottom=true]:[--tpl-mask-bottom:transparent]',\n 'ds:[mask-image:linear-gradient(to_bottom,var(--tpl-mask-top)_0,black_var(--tpl-fade-distance,var(--spacing-lg)),black_calc(100%-var(--tpl-fade-distance,var(--spacing-lg))),var(--tpl-mask-bottom)_100%)]',\n 'ds:motion-reduce:[mask-image:none]',\n 'ds:[.theme-accessible_&]:[mask-image:none]',\n 'ds:forced-colors:[mask-image:none]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[color:var(--ring)] ds:focus-visible:[outline-offset:-2px]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n].join(' ');\n\n/* Elevation for each reused TaskCard row — a subtle lift over the panel\n surface so rows read as raised. TaskCard owns its own border + radius.\n Uses `--shadow-sm` (not the heavier `--shadow-card`/`--shadow-lg`): the\n scroll region is `overflow-y:auto` (so `overflow-x` computes to `auto` and\n clips) with only an `--spacing-sm` gutter, and a wide 30px-blur card shadow\n gets sliced with a hard edge at that gutter. A small row shadow fits. */\nconst rowElevationClass =\n 'ds:shadow-[var(--shadow-sm)] ds:bg-[color:var(--card)]';\n\n/* -------------------------------------------------------------------- */\n/* Type → Badge variant + icon (system keys only; custom ⇒ neutral) */\n/* -------------------------------------------------------------------- */\n\nconst SYSTEM_TYPE_META: Record<\n string,\n { variant: NonNullable<BadgeProps['variant']>; Icon: typeof Tag }\n> = {\n recall: { variant: 'info', Icon: Megaphone },\n payment: { variant: 'warning', Icon: Gem },\n collection: { variant: 'error', Icon: Coins },\n other: { variant: 'neutral', Icon: Tag },\n};\n\n/* -------------------------------------------------------------------- */\n/* Due-bucket grouping */\n/* -------------------------------------------------------------------- */\n\ntype BucketKey =\n | 'overdue'\n | 'today'\n | 'tomorrow'\n | 'thisWeek'\n | 'later'\n | 'done';\n\nconst BUCKET_ORDER: BucketKey[] = [\n 'overdue',\n 'today',\n 'tomorrow',\n 'thisWeek',\n 'later',\n 'done',\n];\n\ninterface Bucket {\n key: BucketKey;\n items: TasksPanelItem[];\n}\n\nfunction startOfDay(d: Date): Date {\n return new Date(d.getFullYear(), d.getMonth(), d.getDate());\n}\n\n/** Boundary timestamps the buckets + the overdue notion are computed against. */\nfunction dayBoundaries(now: Date) {\n const today = startOfDay(now);\n const tomorrow = new Date(today);\n tomorrow.setDate(today.getDate() + 1);\n const dayAfter = new Date(today);\n dayAfter.setDate(today.getDate() + 2);\n // Monday-based week — start of NEXT week is the upper bound of \"This week\".\n const dow = (today.getDay() + 6) % 7;\n const nextWeek = new Date(today);\n nextWeek.setDate(today.getDate() + (7 - dow));\n return {\n startOfToday: +today,\n startOfTomorrow: +tomorrow,\n startOfDayAfter: +dayAfter,\n startOfNextWeek: +nextWeek,\n };\n}\n\nfunction bucketFor(item: TasksPanelItem, now: Date): BucketKey {\n if (item.status === 'done') return 'done';\n const { startOfToday, startOfTomorrow, startOfDayAfter, startOfNextWeek } =\n dayBoundaries(now);\n const due = +new Date(item.dueIso);\n if (due < startOfToday) return 'overdue';\n if (due < startOfTomorrow) return 'today';\n if (due < startOfDayAfter) return 'tomorrow';\n if (due < startOfNextWeek) return 'thisWeek';\n return 'later';\n}\n\n/** A task is overdue when it is not done and due before tomorrow (platform notion). */\nfunction isOverdue(item: TasksPanelItem, now: Date): boolean {\n if (item.status === 'done') return false;\n return +new Date(item.dueIso) < dayBoundaries(now).startOfTomorrow;\n}\n\nfunction groupByDueBucket(items: TasksPanelItem[], now: Date): Bucket[] {\n const map = new Map<BucketKey, TasksPanelItem[]>();\n for (const item of items) {\n const key = bucketFor(item, now);\n const list = map.get(key);\n if (list) list.push(item);\n else map.set(key, [item]);\n }\n const buckets: Bucket[] = [];\n for (const key of BUCKET_ORDER) {\n const list = map.get(key);\n if (!list || list.length === 0) continue;\n // Due ASC (most-overdue-first), mirroring the platform's ORDER BY date ASC.\n list.sort((a, b) => +new Date(a.dueIso) - +new Date(b.dueIso));\n buckets.push({ key, items: list });\n }\n return buckets;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const TasksPanel = forwardRef<HTMLElement, TasksPanelProps>(\n (\n {\n id,\n items,\n nowIso,\n title,\n size = 'xs',\n onOpenTask,\n onToggleDone,\n onEditTask,\n onDismissTask,\n onAddTask,\n readOnly = false,\n renderItemActions,\n scope,\n defaultScope,\n onScopeChange,\n availableScopes,\n onLoadMore,\n hasMore,\n loadingMore = false,\n loading = false,\n error = false,\n showFilters = true,\n statusFilter,\n defaultStatusFilter,\n onStatusFilterChange,\n typeOptions,\n typeFilter,\n onTypeFilterChange,\n assigneeOptions,\n assigneeFilter,\n onAssigneeFilterChange,\n overdueOnly,\n defaultOverdueOnly,\n onOverdueOnlyChange,\n emptyTitle,\n emptyDescription,\n emptyAction,\n className,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const headingId = useId();\n const overdueSwitchId = useId();\n const heading = title ?? t('tasksPanel.title');\n\n // Static key lookups — every label is a literal `t()` call so the i18n\n // coverage gate can see each key (template-literal keys are invisible to it).\n const statusLabels: Record<TasksPanelStatusFilter, string> = {\n todo: t('tasksPanel.status.todo'),\n done: t('tasksPanel.status.done'),\n all: t('tasksPanel.status.all'),\n };\n const scopeLabels: Record<TasksPanelScope, string> = {\n patient: t('tasksPanel.scope.patient'),\n mine: t('tasksPanel.scope.mine'),\n };\n const bucketLabels: Record<BucketKey, string> = {\n overdue: t('tasksPanel.buckets.overdue'),\n today: t('tasksPanel.buckets.today'),\n tomorrow: t('tasksPanel.buckets.tomorrow'),\n thisWeek: t('tasksPanel.buckets.thisWeek'),\n later: t('tasksPanel.buckets.later'),\n done: t('tasksPanel.buckets.done'),\n };\n const systemTypeLabels: Record<string, string> = {\n recall: t('tasksPanel.types.recall'),\n payment: t('tasksPanel.types.payment'),\n collection: t('tasksPanel.types.collection'),\n other: t('tasksPanel.types.other'),\n };\n\n const now = useMemo(\n () => (nowIso ? new Date(nowIso) : new Date()),\n [nowIso],\n );\n\n /* ----- Controlled / uncontrolled filter + scope state ----- */\n const [scopeState, setScopeState] = useState<TasksPanelScope>(\n defaultScope ?? availableScopes?.[0] ?? 'patient',\n );\n const currentScope = scope ?? scopeState;\n const changeScope = useCallback(\n (next: TasksPanelScope) => {\n if (scope === undefined) setScopeState(next);\n onScopeChange?.(next);\n },\n [scope, onScopeChange],\n );\n\n const [statusState, setStatusState] = useState<TasksPanelStatusFilter>(\n defaultStatusFilter ?? 'todo',\n );\n const currentStatus = statusFilter ?? statusState;\n const changeStatus = useCallback(\n (next: TasksPanelStatusFilter) => {\n if (statusFilter === undefined) setStatusState(next);\n onStatusFilterChange?.(next);\n },\n [statusFilter, onStatusFilterChange],\n );\n\n const [typeState, setTypeState] = useState<string | null>(null);\n const currentType = typeFilter !== undefined ? typeFilter : typeState;\n const changeType = useCallback(\n (next: string | null) => {\n if (typeFilter === undefined) setTypeState(next);\n onTypeFilterChange?.(next);\n },\n [typeFilter, onTypeFilterChange],\n );\n\n const [assigneeState, setAssigneeState] = useState<string | null>(null);\n const currentAssignee =\n assigneeFilter !== undefined ? assigneeFilter : assigneeState;\n const changeAssignee = useCallback(\n (next: string | null) => {\n if (assigneeFilter === undefined) setAssigneeState(next);\n onAssigneeFilterChange?.(next);\n },\n [assigneeFilter, onAssigneeFilterChange],\n );\n\n const [overdueState, setOverdueState] = useState<boolean>(\n defaultOverdueOnly ?? false,\n );\n const currentOverdueOnly = overdueOnly ?? overdueState;\n const changeOverdueOnly = useCallback(\n (next: boolean) => {\n if (overdueOnly === undefined) setOverdueState(next);\n onOverdueOnlyChange?.(next);\n },\n [overdueOnly, onOverdueOnlyChange],\n );\n\n const clearFilters = useCallback(() => {\n changeStatus('todo');\n changeType(null);\n changeAssignee(null);\n changeOverdueOnly(false);\n }, [changeStatus, changeType, changeAssignee, changeOverdueOnly]);\n\n /* ----- Filter → bucket ----- */\n const visible = useMemo(() => {\n return items.filter((item) => {\n const isDone = item.status === 'done';\n if (currentStatus === 'todo' && isDone) return false;\n if (currentStatus === 'done' && !isDone) return false;\n if (currentType && item.type !== currentType) return false;\n if (currentAssignee) {\n const assignee = item.assignee ?? '';\n if (assignee !== currentAssignee) return false;\n }\n if (currentOverdueOnly && !isOverdue(item, now)) return false;\n return true;\n });\n }, [\n items,\n currentStatus,\n currentType,\n currentAssignee,\n currentOverdueOnly,\n now,\n ]);\n\n const buckets = useMemo(\n () => groupByDueBucket(visible, now),\n [visible, now],\n );\n\n /* ----- Scroll region: edge fades + one-way load-more ----- */\n const scrollRef = useRef<HTMLDivElement>(null);\n const overdueHeaderRef = useRef<HTMLElement | null>(null);\n const [fadeTop, setFadeTop] = useState(false);\n const [fadeBottom, setFadeBottom] = useState(false);\n\n const updateEdges = useCallback(() => {\n const region = scrollRef.current;\n if (!region) return;\n const { scrollTop, scrollHeight, clientHeight } = region;\n setFadeTop(scrollTop > 1);\n setFadeBottom(scrollTop + clientHeight < scrollHeight - 1);\n }, []);\n\n useIsomorphicLayoutEffect(() => {\n updateEdges();\n }, [buckets, updateEdges]);\n\n useIsomorphicLayoutEffect(() => {\n const region = scrollRef.current;\n if (!region || typeof ResizeObserver === 'undefined') return undefined;\n const observer = new ResizeObserver(updateEdges);\n observer.observe(region);\n return () => observer.disconnect();\n }, [updateEdges]);\n\n const moreAvailable = hasMore ?? !!onLoadMore;\n const handleScroll = useCallback(() => {\n updateEdges();\n const region = scrollRef.current;\n if (!region) return;\n const { scrollTop, scrollHeight, clientHeight } = region;\n if (\n onLoadMore &&\n moreAvailable &&\n !loadingMore &&\n scrollHeight - scrollTop - clientHeight <= EDGE_LOAD_THRESHOLD\n ) {\n onLoadMore();\n }\n }, [updateEdges, onLoadMore, moreAvailable, loadingMore]);\n\n const jumpToOverdue = useCallback(() => {\n const region = scrollRef.current;\n const el = overdueHeaderRef.current;\n if (!region || !el) {\n region?.scrollTo({ top: 0 });\n return;\n }\n const delta =\n el.getBoundingClientRect().top - region.getBoundingClientRect().top;\n region.scrollTo({ top: region.scrollTop + delta });\n }, []);\n\n /* ----- Agent handle ----- */\n const itemsRef = useRef<TasksPanelItem[]>(items);\n itemsRef.current = items;\n const innerRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLElement, []);\n\n const handle = useMemo<TasksPanelHandle>(\n () => ({\n getItems: () =>\n itemsRef.current.map((i) => ({\n id: i.id,\n status: i.status ?? 'open',\n })),\n selectItem: (targetId) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onOpenTask?.(found);\n },\n toggleDone: (targetId) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onToggleDone?.(found);\n },\n dismiss: (targetId) => {\n const found = itemsRef.current.find((i) => i.id === targetId);\n if (found) onDismissTask?.(found);\n },\n jumpToOverdue,\n setFilter: (next) => {\n if (next.status !== undefined) changeStatus(next.status);\n if (next.type !== undefined) changeType(next.type);\n if (next.assignee !== undefined) changeAssignee(next.assignee);\n if (next.overdueOnly !== undefined)\n changeOverdueOnly(next.overdueOnly);\n },\n changeScope,\n loadMore: () => onLoadMore?.(),\n }),\n [\n onOpenTask,\n onToggleDone,\n onDismissTask,\n jumpToOverdue,\n changeStatus,\n changeType,\n changeAssignee,\n changeOverdueOnly,\n changeScope,\n onLoadMore,\n ],\n );\n useAgentRegistration(tasksPanelAgent, handle, id);\n\n /* ----- Row rendering ----- */\n const renderTypeBadge = (item: TasksPanelItem): ReactNode => {\n if (!item.type) return null;\n const meta = SYSTEM_TYPE_META[item.type];\n const variant = meta?.variant ?? 'neutral';\n const Icon = meta?.Icon ?? Tag;\n const label = item.typeLabel ?? systemTypeLabels[item.type] ?? item.type;\n return (\n <Badge\n variant={variant}\n size=\"sm\"\n leading={<Icon aria-hidden=\"true\" />}\n >\n {label}\n </Badge>\n );\n };\n\n const defaultActions = (item: TasksPanelItem): ReactNode => {\n if (readOnly) return null;\n const done = item.status === 'done';\n return (\n <>\n {onToggleDone ? (\n <IconButton\n icon={done ? <CheckSquare /> : <Square />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t(\n done ? 'tasksPanel.markNotDone' : 'tasksPanel.markDone',\n )}\n onClick={() => onToggleDone(item)}\n />\n ) : null}\n {onEditTask ? (\n <IconButton\n icon={<Pencil />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('tasksPanel.edit')}\n onClick={() => onEditTask(item)}\n />\n ) : null}\n {onDismissTask ? (\n <IconButton\n icon={<X />}\n intent=\"ghost\"\n size=\"sm\"\n aria-label={t('tasksPanel.dismiss')}\n onClick={() => onDismissTask(item)}\n />\n ) : null}\n </>\n );\n };\n\n const renderRowActions = (item: TasksPanelItem): ReactNode => {\n const custom = !readOnly ? renderItemActions?.(item) : null;\n const trailing = custom ?? defaultActions(item);\n const badge = renderTypeBadge(item);\n if (!badge && !trailing) return undefined;\n return (\n <>\n {badge}\n {trailing}\n </>\n );\n };\n\n /* ----- Body branches ----- */\n const isFirstUseEmpty = !loading && !error && items.length === 0;\n const isFilteredEmpty =\n !loading && !error && items.length > 0 && visible.length === 0;\n\n const skeletonRow = (key: string) => (\n <div\n key={key}\n aria-hidden=\"true\"\n className=\"ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]\"\n >\n <Skeleton variant=\"rectangular\" height=\"3.5rem\" />\n </div>\n );\n\n let body: ReactNode;\n if (error) {\n body = (\n <div className=\"ds:flex-1 ds:min-h-0 ds:p-[var(--spacing-md)]\">\n {typeof error === 'boolean' ? (\n <EmptyState\n variant=\"error\"\n size=\"sm\"\n title={t('tasksPanel.error.title')}\n description={t('tasksPanel.error.description')}\n />\n ) : (\n error\n )}\n </div>\n );\n } else if (loading) {\n body = (\n <div className=\"ds:flex-1 ds:min-h-0 ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {[0, 1, 2, 3].map((i) => skeletonRow(`skeleton-${i}`))}\n </div>\n );\n } else if (isFirstUseEmpty) {\n body = (\n <div className=\"ds:flex-1 ds:min-h-0 ds:p-[var(--spacing-md)]\">\n <EmptyState\n variant=\"first-use\"\n size=\"sm\"\n title={emptyTitle ?? t('tasksPanel.empty.title')}\n description={emptyDescription ?? t('tasksPanel.empty.description')}\n primaryAction={emptyAction}\n />\n </div>\n );\n } else if (isFilteredEmpty) {\n body = (\n <div className=\"ds:flex-1 ds:min-h-0 ds:p-[var(--spacing-md)]\">\n <EmptyState\n variant=\"no-results\"\n size=\"sm\"\n title={t('tasksPanel.filteredEmpty.title')}\n description={t('tasksPanel.filteredEmpty.description')}\n primaryAction={{\n label: t('tasksPanel.filteredEmpty.clear'),\n onClick: clearFilters,\n }}\n />\n </div>\n );\n } else {\n body = (\n <div\n ref={scrollRef}\n // The scroll region must be keyboard-focusable so arrow / Home / End\n // can drive it (axe scrollable-region-focusable).\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex\n tabIndex={0}\n onScroll={handleScroll}\n data-fade-top={fadeTop ? 'true' : undefined}\n data-fade-bottom={fadeBottom ? 'true' : undefined}\n className={scrollRegionClasses}\n >\n <ol className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-md)] ds:p-0\">\n {buckets.map((bucket) => (\n <li\n key={bucket.key}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\"\n >\n <BucketHeader\n bucketKey={bucket.key}\n count={bucket.items.length}\n label={bucketLabels[bucket.key]}\n headerRef={\n bucket.key === 'overdue' ? overdueHeaderRef : undefined\n }\n />\n <ul className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-0\">\n {bucket.items.map((item) => (\n <TaskCard\n key={item.id}\n item={item}\n size={size}\n onActivate={\n onOpenTask ? () => onOpenTask(item) : undefined\n }\n actions={renderRowActions(item)}\n className={rowElevationClass}\n data-task-id={item.id}\n />\n ))}\n </ul>\n </li>\n ))}\n </ol>\n {loadingMore ? skeletonRow('loading-more') : null}\n {!loadingMore && moreAvailable && onLoadMore ? (\n <div className=\"ds:flex ds:justify-center ds:py-[var(--spacing-sm)]\">\n <Button intent=\"ghost\" size=\"sm\" onClick={onLoadMore}>\n {t('tasksPanel.loadMore')}\n </Button>\n </div>\n ) : null}\n </div>\n );\n }\n\n /* ----- Filter header ----- */\n const showScopeSegment = (availableScopes?.length ?? 0) > 1;\n const statusValues: TasksPanelStatusFilter[] = ['todo', 'done', 'all'];\n\n // Add-task affordance lives in the PanelHeader action cluster (inline-end of\n // the title row); the rail injects the favourite / close after it.\n const headerActions =\n onAddTask && !readOnly ? (\n <IconButton\n icon={<Plus />}\n intent=\"outline\"\n size=\"sm\"\n aria-label={t('tasksPanel.add')}\n onClick={onAddTask}\n />\n ) : undefined;\n\n // Scope segment + filter controls share the PanelHeader filters row, stacked\n // so the scope segment keeps its own line above the filter cluster.\n const headerFilters =\n showScopeSegment || showFilters ? (\n <div className=\"ds:flex ds:w-full ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {showScopeSegment ? (\n <ButtonGroup label={t('tasksPanel.scope.label')}>\n {availableScopes!.map((value) => {\n const active = currentScope === value;\n return (\n <Button\n key={value}\n intent={active ? 'primary' : 'outline'}\n size=\"sm\"\n aria-pressed={active}\n onClick={() => changeScope(value)}\n >\n {scopeLabels[value]}\n </Button>\n );\n })}\n </ButtonGroup>\n ) : null}\n\n {showFilters ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n <ButtonGroup label={t('tasksPanel.status.label')}>\n {statusValues.map((value) => {\n const active = currentStatus === value;\n return (\n <Button\n key={value}\n intent={active ? 'primary' : 'outline'}\n size=\"sm\"\n aria-pressed={active}\n onClick={() => changeStatus(value)}\n >\n {statusLabels[value]}\n </Button>\n );\n })}\n </ButtonGroup>\n\n {typeOptions && typeOptions.length > 0 ? (\n <Select\n size=\"sm\"\n clearable\n aria-label={t('tasksPanel.type.label')}\n placeholder={t('tasksPanel.type.placeholder')}\n options={typeOptions}\n value={currentType ?? ''}\n onValueChange={(value) => changeType(value || null)}\n />\n ) : null}\n\n {assigneeOptions && assigneeOptions.length > 0 ? (\n <Select\n size=\"sm\"\n clearable\n aria-label={t('tasksPanel.assignee.label')}\n placeholder={t('tasksPanel.assignee.placeholder')}\n options={assigneeOptions}\n value={currentAssignee ?? ''}\n onValueChange={(value) => changeAssignee(value || null)}\n />\n ) : null}\n\n <Switch\n id={overdueSwitchId}\n size=\"sm\"\n label={t('tasksPanel.overdueOnly')}\n checked={currentOverdueOnly}\n onCheckedChange={changeOverdueOnly}\n />\n </div>\n ) : null}\n </div>\n ) : undefined;\n\n return (\n <section\n ref={innerRef}\n data-component=\"tasks-panel\"\n data-component-id={id}\n aria-labelledby={ariaLabel ? undefined : headingId}\n aria-label={ariaLabel}\n className={rootVariants({ size, className })}\n {...rest}\n >\n <PanelHeader\n title={heading}\n icon={<ListChecks />}\n headingId={headingId}\n actions={headerActions}\n filters={headerFilters}\n />\n\n {body}\n </section>\n );\n },\n);\n\nTasksPanel.displayName = 'TasksPanel';\n\n/* -------------------------------------------------------------------- */\n/* Bucket header — sticky label per due bucket */\n/* -------------------------------------------------------------------- */\n\ninterface BucketHeaderProps {\n bucketKey: BucketKey;\n count: number;\n label: string;\n headerRef?: React.MutableRefObject<HTMLElement | null>;\n}\n\nfunction BucketHeader({\n bucketKey,\n count,\n label,\n headerRef,\n}: BucketHeaderProps): ReactNode {\n // Overdue is tinted destructive, Today brand (+ a decorative leading dot);\n // both clear AA on the --card surface in every theme (verified via axe on the\n // stories). z-[2] sits ABOVE the reused TaskCard's z-[1] action overlay so the\n // sticky header is never painted under a card scrolling beneath it.\n const tone =\n bucketKey === 'overdue'\n ? 'ds:text-[color:var(--destructive)] ds:font-semibold'\n : bucketKey === 'today'\n ? 'ds:text-[color:var(--primary)] ds:font-semibold'\n : 'ds:text-[color:var(--muted-foreground)]';\n return (\n <div\n ref={headerRef as React.Ref<HTMLDivElement>}\n data-bucket={bucketKey}\n className={[\n 'ds:sticky ds:top-0 ds:z-[2] ds:bg-[color:var(--card)] ds:py-[var(--spacing-2xs)]',\n 'ds:flex ds:items-center ds:gap-[var(--spacing-2xs)] type-eyebrow',\n tone,\n ].join(' ')}\n >\n {bucketKey === 'today' ? (\n <span\n aria-hidden=\"true\"\n className=\"ds:size-1.5 ds:shrink-0 ds:rounded-[var(--radius-full)] ds:bg-[color:var(--primary)]\"\n />\n ) : null}\n {label}\n <span className=\"ds:text-[color:var(--muted-foreground)]\">\n {`(${count})`}\n </span>\n </div>\n );\n}\n\n/** Re-export of the size variant union for downstream typing. */\nexport type TasksPanelSize = NonNullable<\n VariantProps<typeof rootVariants>['size']\n>;\n"],"names":["__iconNode","Coins","createLucideIcon","Gem","Megaphone","Tag","tasksPanelAgent","handle","args","EDGE_LOAD_THRESHOLD","rootVariants","cva","scrollRegionClasses","rowElevationClass","SYSTEM_TYPE_META","BUCKET_ORDER","startOfDay","d","dayBoundaries","now","today","tomorrow","dayAfter","dow","nextWeek","bucketFor","item","startOfToday","startOfTomorrow","startOfDayAfter","startOfNextWeek","due","isOverdue","groupByDueBucket","items","map","key","list","buckets","a","b","TasksPanel","forwardRef","id","nowIso","title","size","onOpenTask","onToggleDone","onEditTask","onDismissTask","onAddTask","readOnly","renderItemActions","scope","defaultScope","onScopeChange","availableScopes","onLoadMore","hasMore","loadingMore","loading","error","showFilters","statusFilter","defaultStatusFilter","onStatusFilterChange","typeOptions","typeFilter","onTypeFilterChange","assigneeOptions","assigneeFilter","onAssigneeFilterChange","overdueOnly","defaultOverdueOnly","onOverdueOnlyChange","emptyTitle","emptyDescription","emptyAction","className","ariaLabel","rest","ref","t","useTranslation","headingId","useId","overdueSwitchId","heading","statusLabels","scopeLabels","bucketLabels","systemTypeLabels","useMemo","scopeState","setScopeState","useState","currentScope","changeScope","useCallback","next","statusState","setStatusState","currentStatus","changeStatus","typeState","setTypeState","currentType","changeType","assigneeState","setAssigneeState","currentAssignee","changeAssignee","overdueState","setOverdueState","currentOverdueOnly","changeOverdueOnly","clearFilters","visible","isDone","scrollRef","useRef","overdueHeaderRef","fadeTop","setFadeTop","fadeBottom","setFadeBottom","updateEdges","region","scrollTop","scrollHeight","clientHeight","useIsomorphicLayoutEffect","observer","moreAvailable","handleScroll","jumpToOverdue","el","delta","itemsRef","innerRef","useImperativeHandle","i","targetId","found","useAgentRegistration","renderTypeBadge","meta","variant","Icon","label","jsx","Badge","defaultActions","done","jsxs","Fragment","IconButton","CheckSquare","Square","Pencil","X","renderRowActions","trailing","badge","isFirstUseEmpty","isFilteredEmpty","skeletonRow","Skeleton","body","EmptyState","bucket","BucketHeader","TaskCard","Button","showScopeSegment","statusValues","headerActions","Plus","headerFilters","ButtonGroup","value","active","Select","Switch","PanelHeader","ListChecks","bucketKey","count","headerRef"],"mappings":"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","x_google_ignoreList":[0,1,2,3]}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
import { jsxs as d, jsx as o } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as v, useState as O, useRef as w, useEffect as x, useMemo as y, Fragment as R } from "react";
|
|
3
|
+
import { B as S } from "./button-DD_0Xdmr.js";
|
|
4
|
+
import { D as r } from "./dropdown-menu-qrxjymfw.js";
|
|
5
|
+
import { u as C } from "./registry-DvAUVLHh.js";
|
|
6
|
+
const K = {
|
|
7
|
+
id: "token-insert-menu",
|
|
8
|
+
capabilities: ["open", "close"],
|
|
9
|
+
state: {
|
|
10
|
+
isOpen: {
|
|
11
|
+
type: "boolean",
|
|
12
|
+
descriptionKey: "ui.agent.tokenInsertMenu.state.isOpen",
|
|
13
|
+
description: "True when the token menu is currently open.",
|
|
14
|
+
read: (n) => n.isOpen()
|
|
15
|
+
}
|
|
16
|
+
},
|
|
17
|
+
actions: {
|
|
18
|
+
open: {
|
|
19
|
+
safety: "read",
|
|
20
|
+
idempotent: !0,
|
|
21
|
+
descriptionKey: "ui.agent.tokenInsertMenu.actions.open",
|
|
22
|
+
description: "Open the token menu.",
|
|
23
|
+
invoke: (n) => {
|
|
24
|
+
n.open();
|
|
25
|
+
}
|
|
26
|
+
},
|
|
27
|
+
close: {
|
|
28
|
+
safety: "read",
|
|
29
|
+
idempotent: !0,
|
|
30
|
+
descriptionKey: "ui.agent.tokenInsertMenu.actions.close",
|
|
31
|
+
description: "Close the token menu.",
|
|
32
|
+
invoke: (n) => {
|
|
33
|
+
n.close();
|
|
34
|
+
}
|
|
35
|
+
},
|
|
36
|
+
insert: {
|
|
37
|
+
safety: "write",
|
|
38
|
+
argsType: "{ token: string }",
|
|
39
|
+
argsSchema: {
|
|
40
|
+
type: "object",
|
|
41
|
+
properties: { token: { type: "string" } },
|
|
42
|
+
required: ["token"]
|
|
43
|
+
},
|
|
44
|
+
descriptionKey: "ui.agent.tokenInsertMenu.actions.insert",
|
|
45
|
+
description: "Emit a merge-token to the consumer for cursor insertion.",
|
|
46
|
+
examples: [
|
|
47
|
+
{
|
|
48
|
+
args: { token: "{{patient.name}}" },
|
|
49
|
+
note: "Emit the patient-name placeholder for cursor insertion."
|
|
50
|
+
}
|
|
51
|
+
],
|
|
52
|
+
invoke: (n, s) => {
|
|
53
|
+
n.insert(s.token);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
},
|
|
57
|
+
domHooks: {
|
|
58
|
+
root: {
|
|
59
|
+
attr: "data-component",
|
|
60
|
+
value: "token-insert-menu",
|
|
61
|
+
description: "Marks the TokenInsertMenu wrapper."
|
|
62
|
+
},
|
|
63
|
+
instanceId: {
|
|
64
|
+
attr: "data-component-id",
|
|
65
|
+
sourceProp: "id",
|
|
66
|
+
description: "Sourced from the id prop."
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}, j = v(function({ tokens: s, onInsert: p, triggerLabel: M, disabled: m, id: l, className: I }, T) {
|
|
70
|
+
const [a, c] = O(!1), f = w(a);
|
|
71
|
+
x(() => {
|
|
72
|
+
f.current = a;
|
|
73
|
+
}, [a]);
|
|
74
|
+
const h = y(() => {
|
|
75
|
+
if (!s.some((t) => t.group)) return null;
|
|
76
|
+
const e = [], i = /* @__PURE__ */ new Map();
|
|
77
|
+
for (const t of s) {
|
|
78
|
+
const u = t.group ?? "", k = i.get(u);
|
|
79
|
+
k ? k.push(t) : (i.set(u, [t]), e.push(u));
|
|
80
|
+
}
|
|
81
|
+
return e.map((t) => ({
|
|
82
|
+
heading: t,
|
|
83
|
+
items: i.get(t) ?? []
|
|
84
|
+
}));
|
|
85
|
+
}, [s]), b = y(
|
|
86
|
+
() => ({
|
|
87
|
+
isOpen: () => f.current,
|
|
88
|
+
open: () => c(!0),
|
|
89
|
+
close: () => c(!1),
|
|
90
|
+
insert: (e) => p(e)
|
|
91
|
+
}),
|
|
92
|
+
[p]
|
|
93
|
+
);
|
|
94
|
+
C(K, b, l);
|
|
95
|
+
const g = (e) => /* @__PURE__ */ o(
|
|
96
|
+
r.Item,
|
|
97
|
+
{
|
|
98
|
+
description: /* @__PURE__ */ o("span", { className: "ds:font-mono ds:text-muted-foreground", children: e.value }),
|
|
99
|
+
onSelect: () => p(e.value),
|
|
100
|
+
children: e.label
|
|
101
|
+
},
|
|
102
|
+
e.value
|
|
103
|
+
);
|
|
104
|
+
return /* @__PURE__ */ d(
|
|
105
|
+
r.Root,
|
|
106
|
+
{
|
|
107
|
+
open: a,
|
|
108
|
+
onOpenChange: (e) => {
|
|
109
|
+
m || c(e);
|
|
110
|
+
},
|
|
111
|
+
children: [
|
|
112
|
+
/* @__PURE__ */ o(
|
|
113
|
+
"span",
|
|
114
|
+
{
|
|
115
|
+
className: "ds:inline-flex",
|
|
116
|
+
"data-component": "token-insert-menu",
|
|
117
|
+
"data-component-id": l,
|
|
118
|
+
children: /* @__PURE__ */ o(r.Trigger, { asChild: !0, children: /* @__PURE__ */ o(
|
|
119
|
+
S,
|
|
120
|
+
{
|
|
121
|
+
ref: T,
|
|
122
|
+
type: "button",
|
|
123
|
+
intent: "outline",
|
|
124
|
+
disabled: m,
|
|
125
|
+
className: I,
|
|
126
|
+
children: M
|
|
127
|
+
}
|
|
128
|
+
) })
|
|
129
|
+
}
|
|
130
|
+
),
|
|
131
|
+
/* @__PURE__ */ o(r.Content, { align: "start", children: h ? h.map((e, i) => /* @__PURE__ */ d(R, { children: [
|
|
132
|
+
i > 0 ? /* @__PURE__ */ o(r.Separator, {}) : null,
|
|
133
|
+
/* @__PURE__ */ d(r.Group, { children: [
|
|
134
|
+
e.heading ? /* @__PURE__ */ o(r.Label, { children: e.heading }) : null,
|
|
135
|
+
e.items.map(g)
|
|
136
|
+
] })
|
|
137
|
+
] }, e.heading || `section-${i}`)) : s.map(g) })
|
|
138
|
+
]
|
|
139
|
+
}
|
|
140
|
+
);
|
|
141
|
+
});
|
|
142
|
+
j.displayName = "TokenInsertMenu";
|
|
143
|
+
export {
|
|
144
|
+
j as T,
|
|
145
|
+
K as t
|
|
146
|
+
};
|
|
147
|
+
//# sourceMappingURL=token-insert-menu-CFQqTe_n.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"token-insert-menu-CFQqTe_n.js","sources":["../../src/components/token-insert-menu/token-insert-menu.agent.ts","../../src/components/token-insert-menu/token-insert-menu.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — TokenInsertMenu. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { TokenInsertMenuHandle } from './token-insert-menu';\n\nexport const tokenInsertMenuAgent: AgentAdapter<TokenInsertMenuHandle> = {\n id: 'token-insert-menu',\n capabilities: ['open', 'close'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.tokenInsertMenu.state.isOpen',\n description: 'True when the token menu is currently open.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.tokenInsertMenu.actions.open',\n description: 'Open the token menu.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.tokenInsertMenu.actions.close',\n description: 'Close the token menu.',\n invoke: (handle) => {\n handle.close();\n },\n },\n insert: {\n safety: 'write',\n argsType: '{ token: string }',\n argsSchema: {\n type: 'object',\n properties: { token: { type: 'string' } },\n required: ['token'],\n },\n descriptionKey: 'ui.agent.tokenInsertMenu.actions.insert',\n description: 'Emit a merge-token to the consumer for cursor insertion.',\n examples: [\n {\n args: { token: '{{patient.name}}' },\n note: 'Emit the patient-name placeholder for cursor insertion.',\n },\n ],\n invoke: (handle, args: { token: string }) => {\n handle.insert(args.token);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'token-insert-menu',\n description: 'Marks the TokenInsertMenu wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useEffect,\n useMemo,\n useRef,\n useState,\n Fragment,\n} from 'react';\nimport { Button } from '../button/button';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport { useAgentRegistration } from '../../agent';\nimport { tokenInsertMenuAgent } from './token-insert-menu.agent';\n\n/** One selectable merge-token. */\nexport interface TokenInsertMenuToken {\n /** Raw token text inserted verbatim (e.g. `\"{{patient.name}}\"`). */\n value: string;\n /** Human-readable label shown in the menu. Already localised by the consumer. */\n label: string;\n /** Optional section heading — when ANY token has one, the menu renders grouped. */\n group?: string;\n}\n\n/** Agent-readiness curated handle for TokenInsertMenu. */\nexport interface TokenInsertMenuHandle {\n isOpen: () => boolean;\n open: () => void;\n close: () => void;\n /** Emit a token to the consumer (mirrors a user selecting it). */\n insert: (token: string) => void;\n}\n\nexport interface TokenInsertMenuProps {\n /** The merge-tokens to offer. `value` is inserted; `label` is shown. */\n tokens: TokenInsertMenuToken[];\n /** Called with the chosen token's raw `value`. The consumer inserts it at\n * the caret of their target field — this component never owns the field. */\n onInsert: (token: string) => void;\n /** The trigger button's visible text (already localised by the consumer). */\n triggerLabel: string;\n disabled?: boolean;\n /** Opaque instance id — surfaced as `data-component-id` + agent instance id. */\n id?: string;\n /** Extra classes for the trigger button. */\n className?: string;\n}\n\ninterface TokenSection {\n heading: string;\n items: TokenInsertMenuToken[];\n}\n\nexport const TokenInsertMenu = forwardRef<\n HTMLButtonElement,\n TokenInsertMenuProps\n>(function TokenInsertMenu(\n { tokens, onInsert, triggerLabel, disabled, id, className },\n ref,\n) {\n const [open, setOpen] = useState(false);\n\n // Mirror the open flag into a ref so the agent handle reads a fresh value\n // without re-subscribing on every toggle (matches DropdownMenu.Root).\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n // Group tokens only when at least one carries a `group`; otherwise flat.\n const sections = useMemo<TokenSection[] | null>(() => {\n if (!tokens.some((token) => token.group)) return null;\n const order: string[] = [];\n const byGroup = new Map<string, TokenInsertMenuToken[]>();\n for (const token of tokens) {\n const key = token.group ?? '';\n const bucket = byGroup.get(key);\n if (bucket) {\n bucket.push(token);\n } else {\n byGroup.set(key, [token]);\n order.push(key);\n }\n }\n return order.map((heading) => ({\n heading,\n items: byGroup.get(heading) ?? [],\n }));\n }, [tokens]);\n\n const handle = useMemo<TokenInsertMenuHandle>(\n () => ({\n isOpen: () => openRef.current,\n open: () => setOpen(true),\n close: () => setOpen(false),\n insert: (token) => onInsert(token),\n }),\n [onInsert],\n );\n useAgentRegistration(tokenInsertMenuAgent, handle, id);\n\n const renderItem = (token: TokenInsertMenuToken) => (\n <DropdownMenu.Item\n key={token.value}\n // Raw token shown as a muted monospace hint beneath the label.\n description={\n <span className=\"ds:font-mono ds:text-muted-foreground\">\n {token.value}\n </span>\n }\n onSelect={() => onInsert(token.value)}\n >\n {token.label}\n </DropdownMenu.Item>\n );\n\n return (\n <DropdownMenu.Root\n open={open}\n // `asChild` hides the trigger's native `disabled` from Radix, so gate\n // opening here too — a disabled menu must never expand on interaction.\n onOpenChange={(next) => {\n if (disabled) return;\n setOpen(next);\n }}\n >\n <span\n className=\"ds:inline-flex\"\n data-component=\"token-insert-menu\"\n data-component-id={id}\n >\n <DropdownMenu.Trigger asChild>\n <Button\n ref={ref}\n type=\"button\"\n intent=\"outline\"\n disabled={disabled}\n className={className}\n >\n {triggerLabel}\n </Button>\n </DropdownMenu.Trigger>\n </span>\n <DropdownMenu.Content align=\"start\">\n {sections\n ? sections.map((section, index) => (\n <Fragment key={section.heading || `section-${index}`}>\n {index > 0 ? <DropdownMenu.Separator /> : null}\n <DropdownMenu.Group>\n {section.heading ? (\n <DropdownMenu.Label>{section.heading}</DropdownMenu.Label>\n ) : null}\n {section.items.map(renderItem)}\n </DropdownMenu.Group>\n </Fragment>\n ))\n : tokens.map(renderItem)}\n </DropdownMenu.Content>\n </DropdownMenu.Root>\n );\n});\n\nTokenInsertMenu.displayName = 'TokenInsertMenu';\n"],"names":["tokenInsertMenuAgent","handle","args","TokenInsertMenu","forwardRef","tokens","onInsert","triggerLabel","disabled","id","className","ref","open","setOpen","useState","openRef","useRef","useEffect","sections","useMemo","token","order","byGroup","key","bucket","heading","useAgentRegistration","renderItem","jsx","DropdownMenu","jsxs","next","Button","section","index","Fragment"],"mappings":"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"}
|