@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"badge-CqGsX32l.js","sources":["../../src/components/badge/badge.tsx"],"sourcesContent":["import { forwardRef, type ReactNode } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Tooltip } from '../tooltip';\n\n/* ------------------------------------------------------------------ */\n/* CVA — badge root */\n/* ------------------------------------------------------------------ */\n\nconst badgeVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:gap-1',\n // Typography comes from the eyebrow role: Medium 500 + uppercase + expanded tracking.\n // CVA size variants below override just `--type-eyebrow-size` so weight/transform/\n // tracking/line-height stay role-owned — same chip-family pattern as Tag.\n 'type-eyebrow',\n 'ds:whitespace-nowrap',\n 'ds:focus-visible:outline-none',\n 'ds:focus-visible:ring-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:ring-[color:var(--ring)]',\n 'ds:focus-visible:ring-offset-[length:var(--focus-ring-offset)]',\n ].join(' '),\n {\n variants: {\n variant: {\n // `bg-muted` at full opacity (not /20) — `--muted` is already\n // a light grey (#eaeaee in light, similarly soft in dark). The\n // semantic variants below use /15 against saturated source\n // colours; applying the same reduction to `muted` made the\n // neutral chip nearly invisible against a white surface\n // (~5% grey wash with no perceptible edge). Full opacity\n // gives ~6:1 surface contrast and the chip reads as a chip.\n // Every chip carries a border so it reads as a defined chip on any\n // surface (matching Tag). Tinted semantic variants take a colour-matched\n // edge at twice the fill opacity; neutral takes the shared `--border`.\n neutral:\n 'ds:bg-muted ds:text-muted-foreground ds:border ds:border-[color:var(--border)]',\n info: 'ds:bg-info/15 ds:text-[var(--info-foreground)] ds:border ds:border-[color:var(--info-foreground)]',\n success:\n 'ds:bg-success/15 ds:text-[var(--success-foreground)] ds:border ds:border-[color:var(--success-foreground)]',\n warning:\n 'ds:bg-warning/15 ds:text-[var(--warning-foreground)] ds:border ds:border-[color:var(--warning-foreground)]',\n error:\n 'ds:bg-destructive/15 ds:text-[var(--error-foreground)] ds:border ds:border-[color:var(--error-foreground)]',\n // Solid-fill brand variants carry the same subtle foreground-mix edge as\n // Tag's solid fill, foreground paired with the semantic token. Use for\n // trust-signal chips in hero contexts where a tonal `info` / `neutral`\n // would blend into the brand backdrop.\n brand:\n 'ds:bg-[var(--primary)] ds:text-[var(--primary-foreground)] ds:border ds:border-[color:color-mix(in_srgb,var(--foreground)_15%,transparent)]',\n accent:\n 'ds:bg-[var(--accent)] ds:text-[var(--accent-foreground)] ds:border ds:border-[color:color-mix(in_srgb,var(--foreground)_15%,transparent)]',\n },\n size: {\n sm: 'ds:h-4 ds:ps-1 ds:pe-1 ds:[--type-eyebrow-size:var(--font-size-2xs)]',\n md: 'ds:h-5 ds:ps-1.5 ds:pe-1.5 ds:[--type-eyebrow-size:var(--font-size-2xs)]',\n lg: 'ds:h-6 ds:ps-2 ds:pe-2 ds:[--type-eyebrow-size:var(--font-size-xs)]',\n },\n shape: {\n pill: 'ds:rounded-[var(--radius-full)]',\n rectangular: 'ds:rounded-[var(--radius-sm)]',\n },\n },\n defaultVariants: {\n variant: 'neutral',\n size: 'md',\n shape: 'pill',\n },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — leading dot */\n/* ------------------------------------------------------------------ */\n\nconst dotVariants = cva(\n 'ds:text-[length:var(--font-size-dot)] ds:leading-none ds:shrink-0',\n {\n variants: {\n variant: {\n neutral: 'ds:text-muted-foreground',\n info: 'ds:text-info',\n success: 'ds:text-success',\n warning: 'ds:text-warning',\n error: 'ds:text-destructive',\n // Solid-fill variants: dot draws in the paired foreground tone so\n // it stays visible against the saturated primary/accent fill.\n brand: 'ds:text-[var(--primary-foreground)]',\n accent: 'ds:text-[var(--accent-foreground)]',\n },\n },\n defaultVariants: { variant: 'neutral' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — leading icon wrapper */\n/* ------------------------------------------------------------------ */\n\nconst iconWrapperVariants = cva('ds:shrink-0 ds:[&>svg]:block', {\n variants: {\n size: {\n // Icons shrink with the compact Badge scale: sm badge is 16 px tall, so\n // a 10 px glyph leaves room for the 1 px internal padding.\n sm: 'ds:[&>svg]:size-2.5',\n md: 'ds:[&>svg]:size-3',\n lg: 'ds:[&>svg]:size-3.5',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\n/* ------------------------------------------------------------------ */\n/* BadgeProps */\n/* ------------------------------------------------------------------ */\n\nexport interface BadgeProps\n extends\n React.HTMLAttributes<HTMLSpanElement>,\n VariantProps<typeof badgeVariants> {\n /** Leading icon — renders before the label */\n leading?: ReactNode;\n /** Show a leading dot indicator (● shape) for colour-blind accessibility */\n withDot?: boolean;\n /** Truncate long text with ellipsis + tooltip showing full text */\n truncate?: boolean;\n /** For icon-only badges — provides the accessible name */\n 'aria-label'?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Badge */\n/* ------------------------------------------------------------------ */\n\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\n (\n {\n variant = 'neutral',\n size = 'md',\n shape = 'pill',\n leading,\n withDot = false,\n truncate = false,\n className,\n children,\n 'aria-label': ariaLabel,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const isIconOnly = !children && !!ariaLabel;\n const isCount = typeof children === 'number';\n\n const badge = (\n <span\n ref={ref}\n className={badgeVariants({ variant, size, shape, className })}\n data-component=\"badge\"\n role={isIconOnly ? 'img' : undefined}\n aria-label={isIconOnly ? ariaLabel : undefined}\n {...props}\n >\n {withDot && (\n <span aria-hidden=\"true\" className={dotVariants({ variant })}>\n ●\n </span>\n )}\n {leading && (\n <span aria-hidden=\"true\" className={iconWrapperVariants({ size })}>\n {leading}\n </span>\n )}\n {!isIconOnly &&\n (isCount ? (\n <>\n <span aria-hidden=\"true\">{children}</span>\n <span className=\"ds:sr-only\">\n {t('badge.notifications', { count: children })}\n </span>\n </>\n ) : truncate ? (\n <span className=\"ds:max-w-[var(--badge-truncate-max-width)] ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap\">\n {children}\n </span>\n ) : (\n children\n ))}\n </span>\n );\n\n if (truncate && typeof children === 'string') {\n return <Tooltip label={children}>{badge}</Tooltip>;\n }\n\n return badge;\n },\n);\n\nBadge.displayName = 'Badge';\n"],"names":["badgeVariants","cva","dotVariants","iconWrapperVariants","Badge","forwardRef","variant","size","shape","leading","withDot","truncate","className","children","ariaLabel","props","ref","t","useTranslation","isIconOnly","isCount","badge","jsxs","jsx","Fragment","Tooltip"],"mappings":";;;;;AASA,MAAMA,IAAgBC;AAAA,EACpB;AAAA,IACE;AAAA;AAAA;AAAA;AAAA,IAIA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,QAWP,SACE;AAAA,QACF,MAAM;AAAA,QACN,SACE;AAAA,QACF,SACE;AAAA,QACF,OACE;AAAA;AAAA;AAAA;AAAA;AAAA,QAKF,OACE;AAAA,QACF,QACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,OAAO;AAAA,QACL,MAAM;AAAA,QACN,aAAa;AAAA,MAAA;AAAA,IACf;AAAA,IAEF,iBAAiB;AAAA,MACf,SAAS;AAAA,MACT,MAAM;AAAA,MACN,OAAO;AAAA,IAAA;AAAA,EACT;AAEJ,GAMMC,IAAcD;AAAA,EAClB;AAAA,EACA;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,SAAS;AAAA,QACT,MAAM;AAAA,QACN,SAAS;AAAA,QACT,SAAS;AAAA,QACT,OAAO;AAAA;AAAA;AAAA,QAGP,OAAO;AAAA,QACP,QAAQ;AAAA,MAAA;AAAA,IACV;AAAA,IAEF,iBAAiB,EAAE,SAAS,UAAA;AAAA,EAAU;AAE1C,GAMME,IAAsBF,EAAI,gCAAgC;AAAA,EAC9D,UAAU;AAAA,IACR,MAAM;AAAA;AAAA;AAAA,MAGJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,EACN;AAAA,EAEF,iBAAiB,EAAE,MAAM,KAAA;AAC3B,CAAC,GAwBYG,IAAQC;AAAA,EACnB,CACE;AAAA,IACE,SAAAC,IAAU;AAAA,IACV,MAAAC,IAAO;AAAA,IACP,OAAAC,IAAQ;AAAA,IACR,SAAAC;AAAA,IACA,SAAAC,IAAU;AAAA,IACV,UAAAC,IAAW;AAAA,IACX,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,cAAcC;AAAA,IACd,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GAERC,IAAa,CAACN,KAAY,CAAC,CAACC,GAC5BM,IAAU,OAAOP,KAAa,UAE9BQ,IACJ,gBAAAC;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAN;AAAA,QACA,WAAWhB,EAAc,EAAE,SAAAM,GAAS,MAAAC,GAAM,OAAAC,GAAO,WAAAI,GAAW;AAAA,QAC5D,kBAAe;AAAA,QACf,MAAMO,IAAa,QAAQ;AAAA,QAC3B,cAAYA,IAAaL,IAAY;AAAA,QACpC,GAAGC;AAAA,QAEH,UAAA;AAAA,UAAAL,KACC,gBAAAa,EAAC,QAAA,EAAK,eAAY,QAAO,WAAWrB,EAAY,EAAE,SAAAI,EAAA,CAAS,GAAG,UAAA,IAAA,CAE9D;AAAA,UAEDG,KACC,gBAAAc,EAAC,QAAA,EAAK,eAAY,QAAO,WAAWpB,EAAoB,EAAE,MAAAI,EAAA,CAAM,GAC7D,UAAAE,EAAA,CACH;AAAA,UAED,CAACU,MACCC,IACC,gBAAAE,EAAAE,GAAA,EACE,UAAA;AAAA,YAAA,gBAAAD,EAAC,QAAA,EAAK,eAAY,QAAQ,UAAAV,EAAA,CAAS;AAAA,YACnC,gBAAAU,EAAC,QAAA,EAAK,WAAU,cACb,UAAAN,EAAE,uBAAuB,EAAE,OAAOJ,EAAA,CAAU,EAAA,CAC/C;AAAA,UAAA,GACF,IACEF,IACF,gBAAAY,EAAC,UAAK,WAAU,uGACb,UAAAV,GACH,IAEAA;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAKR,WAAIF,KAAY,OAAOE,KAAa,WAC3B,gBAAAU,EAACE,GAAA,EAAQ,OAAOZ,GAAW,UAAAQ,GAAM,IAGnCA;AAAA,EACT;AACF;AAEAjB,EAAM,cAAc;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"chat-message-3V54YipB.js","sources":["../../src/components/chat-message/chat-message.tsx"],"sourcesContent":["import {\n forwardRef,\n Fragment,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertCircle, Check, Clock, RotateCcw } from 'lucide-react';\nimport { Button } from '../button';\nimport { Avatar } from '../avatar';\nimport { Timestamp } from '../timestamp';\nimport { safeImageSrc } from '../_shared';\nimport { CodeBlock, splitCodeFences } from '../_shared/code-block';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport type ChatMessageRole = 'user' | 'assistant' | 'system';\nexport type ChatMessageStatus = 'sending' | 'sent' | 'error' | 'edited';\n\nexport interface ChatMessageAvatar {\n name?: string;\n src?: string;\n /**\n * Optional custom avatar node. When provided, it REPLACES the built-in\n * `<Avatar>` (initials / image) for this message. Used by the Alia\n * pattern to render a Sparkles identity tile instead of an avatar, and\n * by consumers that want to swap in a user-icon chip, brand glyph, etc.\n * The caller is responsible for accessible labelling on the custom node\n * — ChatMessage's own `aria-label` already announces the role/time, so\n * purely decorative nodes can be `aria-hidden`.\n */\n slot?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst rowVariants = cva(\n 'ds:flex ds:w-full ds:items-start ds:gap-[var(--spacing-sm)]',\n {\n variants: {\n role: {\n user: 'ds:flex-row-reverse',\n assistant: 'ds:flex-row',\n system: 'ds:flex-col ds:items-center ds:text-center',\n },\n },\n defaultVariants: { role: 'assistant' },\n },\n);\n\nconst bubbleVariants = cva(\n [\n // Cap at 42rem on wide surfaces; on narrow docks (Alia sidebar ≈22rem)\n // leave room for the avatar column (size-8 = 32px = --spacing-xl) +\n // `gap-sm` (8px = --spacing-sm) so avatars don't clip off the inline\n // edge when the row is width-constrained.\n 'ds:relative ds:max-w-[min(42rem,calc(100%-var(--spacing-xl)-var(--spacing-sm)))]',\n 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)]',\n 'ds:pt-[var(--spacing-sm)] ds:pb-[var(--spacing-sm)]',\n 'type-body',\n 'ds:break-words',\n ].join(' '),\n {\n variants: {\n role: {\n user: 'ds:bg-[color:var(--primary)] ds:text-[color:var(--primary-foreground)] ds:rounded-[var(--radius-md)] ds:rounded-ee-[var(--radius-sm)]',\n assistant:\n 'ds:bg-muted/40 ds:text-foreground ds:rounded-[var(--radius-md)] ds:rounded-es-[var(--radius-sm)]',\n system:\n 'ds:bg-transparent ds:text-[color:var(--muted-foreground)] type-body-sm ds:italic',\n },\n },\n defaultVariants: { role: 'assistant' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Safe markdown-ish (bold, inline code, line-breaks, links as text) */\n/* No dangerouslySetInnerHTML. */\n/* ------------------------------------------------------------------ */\n\ntype Token =\n | { type: 'text'; value: string }\n | { type: 'bold'; value: string }\n | { type: 'code'; value: string }\n | { type: 'br' }\n | { type: 'link'; label: string; href: string };\n\nconst SAFE_SCHEMES = /^(https?:|mailto:)/i;\n\nfunction tokenize(input: string): Token[] {\n const tokens: Token[] = [];\n let remaining = input;\n const pattern = /\\*\\*([^*]+)\\*\\*|`([^`]+)`|\\[([^\\]]+)\\]\\(([^)]+)\\)|\\n/;\n while (remaining.length > 0) {\n const match = pattern.exec(remaining);\n if (!match) {\n tokens.push({ type: 'text', value: remaining });\n break;\n }\n if (match.index > 0) {\n tokens.push({ type: 'text', value: remaining.slice(0, match.index) });\n }\n if (match[1] !== undefined) {\n tokens.push({ type: 'bold', value: match[1] });\n } else if (match[2] !== undefined) {\n tokens.push({ type: 'code', value: match[2] });\n } else if (match[3] !== undefined && match[4] !== undefined) {\n tokens.push({ type: 'link', label: match[3], href: match[4] });\n } else {\n tokens.push({ type: 'br' });\n }\n remaining = remaining.slice(match.index + match[0].length);\n }\n return tokens;\n}\n\nfunction renderInline(input: string): ReactNode {\n return tokenize(input).map((tok, i) => {\n if (tok.type === 'bold') return <strong key={i}>{tok.value}</strong>;\n if (tok.type === 'code') {\n return (\n <code\n key={i}\n dir=\"ltr\"\n className=\"ds:rounded-[var(--radius-sm)] ds:bg-muted/30 ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)] ds:font-[family-name:var(--font-mono)]\"\n >\n {tok.value}\n </code>\n );\n }\n if (tok.type === 'br') return <br key={i} />;\n if (tok.type === 'link') {\n if (!SAFE_SCHEMES.test(tok.href)) {\n // Unsafe scheme (javascript:, data:) — render as inert text.\n return <Fragment key={i}>{tok.label}</Fragment>;\n }\n return (\n <a\n key={i}\n href={tok.href}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"ds:underline ds:underline-offset-2 ds:hover:opacity-80\"\n >\n {tok.label}\n </a>\n );\n }\n return <Fragment key={i}>{tok.value}</Fragment>;\n });\n}\n\n/**\n * Render a message body: split fenced code blocks out to `<CodeBlock>` and run\n * the inline tokenizer over the surrounding text runs.\n */\nfunction renderBody(input: string): ReactNode {\n return splitCodeFences(input).map((seg, i) => {\n if (seg.type === 'code') {\n return <CodeBlock key={i} code={seg.value} language={seg.lang} />;\n }\n return <Fragment key={i}>{renderInline(seg.value)}</Fragment>;\n });\n}\n\n/* ------------------------------------------------------------------ */\n/* ChatMessage */\n/* ------------------------------------------------------------------ */\n\ntype NativeProps = Omit<HTMLAttributes<HTMLElement>, 'content' | 'role'>;\n\nexport interface ChatMessageProps\n extends NativeProps, VariantProps<typeof bubbleVariants> {\n role: ChatMessageRole;\n content: string;\n avatar?: ChatMessageAvatar;\n timestamp?: Date | number | string;\n status?: ChatMessageStatus;\n /** Parse a small, safe subset of markdown. Never renders raw HTML. */\n renderMarkdown?: boolean;\n /** Invoked when the retry button is activated (error status only). */\n onRetry?: () => void;\n /**\n * Optional action row rendered beneath the message body + timestamp,\n * aligned with the message (e.g. the Alia pattern's Copy / Download\n * buttons on assistant messages). Default off → renders nothing.\n */\n actions?: ReactNode;\n /**\n * Custom body node rendered verbatim INSTEAD of `content`. When set, the\n * markdown tokenizer (`renderBody`) is skipped and the node is rendered\n * directly inside the bubble. `content` is still required (used for the\n * aria-label context and consumer copy / download). Default off.\n */\n body?: ReactNode;\n}\n\nexport const ChatMessage = forwardRef<HTMLElement, ChatMessageProps>(\n (\n {\n role,\n content,\n avatar,\n timestamp,\n status,\n renderMarkdown = false,\n onRetry,\n actions,\n body,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n\n // Local format — used for the aria-label interpolation only. Visible\n // label is rendered by `<Timestamp>` below, which computes the same\n // locale-aware HH:MM internally.\n const formattedTime = useMemo(() => {\n if (!timestamp) return null;\n const date = timestamp instanceof Date ? timestamp : new Date(timestamp);\n if (Number.isNaN(date.getTime())) return null;\n return new Intl.DateTimeFormat(i18n.language, {\n hour: '2-digit',\n minute: '2-digit',\n }).format(date);\n }, [timestamp, i18n.language]);\n\n const roleLabel = t(`chat.message.role.${role}`);\n const messageLabel = formattedTime\n ? t('chat.message.label', { role: roleLabel, time: formattedTime })\n : t('chat.message.labelNoTime', { role: roleLabel });\n\n const resolvedBody =\n body ?? (renderMarkdown ? renderBody(content) : content);\n\n const statusIcon = (() => {\n if (!status || status === 'edited') return null;\n if (status === 'sending')\n return <Clock aria-hidden=\"true\" className=\"ds:size-3.5\" />;\n if (status === 'sent')\n return <Check aria-hidden=\"true\" className=\"ds:size-3.5\" />;\n return (\n <AlertCircle\n aria-hidden=\"true\"\n className=\"ds:size-3.5 ds:text-[color:var(--destructive)]\"\n />\n );\n })();\n\n const statusText = status ? t(`chat.message.status.${status}`) : null;\n\n return (\n <article\n ref={ref}\n aria-label={messageLabel}\n data-component=\"chat-message\"\n className={[\n rowVariants({ role, className }),\n // Entrance: fade + slide up on mount. `--animation-duration` is 0ms\n // under `prefers-reduced-motion` and `.theme-accessible`, so both\n // collapse the animation to an instant state change automatically.\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:slide-in-from-bottom-2',\n 'ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]',\n ].join(' ')}\n {...rest}\n >\n {role !== 'system' && avatar ? (\n avatar.slot ? (\n // Consumer-supplied avatar node (e.g. Alia's Sparkles tile).\n avatar.slot\n ) : (\n // Allow-list the src: LLM-supplied values can carry\n // `javascript:` / `data:text/html` / `data:image/svg+xml` and so\n // are scrubbed here before reaching <Avatar>. Fallback to initials.\n <Avatar\n name={avatar.name}\n src={safeImageSrc(avatar.src)}\n size=\"sm\"\n />\n )\n ) : null}\n\n <div\n className={[\n // min-w-0 allows this flex item to shrink below its content's\n // natural width — without it, a single unbreakable token (URL,\n // CJK run, hash) can force the bubble wider than the parent\n // and spill outside narrow containers like the Alia sidebar.\n 'ds:flex ds:flex-col ds:min-w-0',\n role === 'user'\n ? 'ds:items-end'\n : role === 'assistant'\n ? 'ds:items-start'\n : 'ds:items-center',\n ].join(' ')}\n >\n <div\n dir=\"auto\"\n className={[\n bubbleVariants({ role }),\n // `break-words` (from bubbleVariants) handles soft hyphens;\n // `overflow-wrap: anywhere` is the last-resort break for\n // URLs, hashes, or CJK runs that would otherwise push the\n // bubble wider than its parent in narrow docks like Alia.\n 'ds:[overflow-wrap:anywhere]',\n ].join(' ')}\n >\n {resolvedBody}\n </div>\n\n {(formattedTime || statusText) && role !== 'system' ? (\n <div\n className={[\n 'ds:mt-[var(--spacing-xs)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'type-meta ds:text-[color:var(--muted-foreground)]',\n ].join(' ')}\n >\n {timestamp ? (\n <Timestamp\n value={timestamp}\n format=\"absolute\"\n absoluteFormat={{ hour: '2-digit', minute: '2-digit' }}\n dir=\"ltr\"\n />\n ) : null}\n {statusIcon ? (\n // `key={status}` re-mounts the span on every status change so\n // `animate-in` re-runs — gives the sending → sent → error\n // swap a subtle cross-fade instead of an abrupt pop.\n <span\n key={status}\n className={[\n 'ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]',\n 'ds:motion-safe:animate-in ds:motion-safe:fade-in-0',\n 'ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]',\n ].join(' ')}\n >\n {statusIcon}\n <span className=\"ds:sr-only\">{statusText}</span>\n </span>\n ) : null}\n {status === 'error' && onRetry ? (\n <Button\n intent=\"ghost\"\n size=\"sm\"\n onClick={onRetry}\n startIcon={<RotateCcw />}\n >\n {t('chat.message.retry')}\n </Button>\n ) : null}\n </div>\n ) : null}\n {actions ? (\n <div className=\"ds:mt-[var(--spacing-xs)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n {actions}\n </div>\n ) : null}\n </div>\n </article>\n );\n },\n);\n\nChatMessage.displayName = 'ChatMessage';\n"],"names":["rowVariants","cva","bubbleVariants","SAFE_SCHEMES","tokenize","input","tokens","remaining","pattern","match","renderInline","tok","i","jsx","Fragment","renderBody","splitCodeFences","seg","CodeBlock","ChatMessage","forwardRef","role","content","avatar","timestamp","status","renderMarkdown","onRetry","actions","body","className","rest","ref","t","i18n","useTranslation","formattedTime","useMemo","date","roleLabel","messageLabel","resolvedBody","statusIcon","Clock","Check","AlertCircle","statusText","jsxs","Avatar","safeImageSrc","Timestamp","Button","RotateCcw"],"mappings":"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"}
|
|
@@ -1,333 +0,0 @@
|
|
|
1
|
-
import { jsx as e, jsxs as m } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as K, useId as H, useMemo as I } from "react";
|
|
3
|
-
import { c as _ } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as S } from "react-i18next";
|
|
5
|
-
import { A as V } from "./avatar-BNQNhoyL.js";
|
|
6
|
-
import { B as d } from "./badge-CqGsX32l.js";
|
|
7
|
-
import { C as k } from "./card-DPmk26CL.js";
|
|
8
|
-
import { L as E } from "./link-DrD_cRUg.js";
|
|
9
|
-
import { T as C } from "./timestamp-BV2lC-wV.js";
|
|
10
|
-
import { SafeHtml as F } from "../safe-html/index.js";
|
|
11
|
-
import { i as M } from "./is-safe-url-DkETxeHz.js";
|
|
12
|
-
import { u as U } from "./registry-DvAUVLHh.js";
|
|
13
|
-
import { S as W } from "./scan-line-lGioFwLC.js";
|
|
14
|
-
import { L as q } from "./layers-pzGcbLPj.js";
|
|
15
|
-
import { F as h } from "./file-text-DSNuv2B8.js";
|
|
16
|
-
import { U as B } from "./user-CPxpqFjJ.js";
|
|
17
|
-
import { c as w } from "./createLucideIcon-CrFbzy84.js";
|
|
18
|
-
/**
|
|
19
|
-
* @license lucide-react v1.8.0 - ISC
|
|
20
|
-
*
|
|
21
|
-
* This source code is licensed under the ISC license.
|
|
22
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
23
|
-
*/
|
|
24
|
-
const R = [
|
|
25
|
-
[
|
|
26
|
-
"path",
|
|
27
|
-
{
|
|
28
|
-
d: "M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528",
|
|
29
|
-
key: "1jaruq"
|
|
30
|
-
}
|
|
31
|
-
]
|
|
32
|
-
], O = w("flag", R);
|
|
33
|
-
/**
|
|
34
|
-
* @license lucide-react v1.8.0 - ISC
|
|
35
|
-
*
|
|
36
|
-
* This source code is licensed under the ISC license.
|
|
37
|
-
* See the LICENSE file in the root directory of this source tree.
|
|
38
|
-
*/
|
|
39
|
-
const D = [
|
|
40
|
-
["path", { d: "M12 17v5", key: "bb1du9" }],
|
|
41
|
-
[
|
|
42
|
-
"path",
|
|
43
|
-
{
|
|
44
|
-
d: "M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z",
|
|
45
|
-
key: "1nkz8b"
|
|
46
|
-
}
|
|
47
|
-
]
|
|
48
|
-
], G = w("pin", D), J = {
|
|
49
|
-
id: "clinical-note-card",
|
|
50
|
-
capabilities: [],
|
|
51
|
-
state: {
|
|
52
|
-
noteId: {
|
|
53
|
-
type: "string | undefined",
|
|
54
|
-
descriptionKey: "ui.agent.clinicalNoteCard.state.noteId",
|
|
55
|
-
description: "Stable identifier of the rendered note, when supplied.",
|
|
56
|
-
read: (n) => n.getNoteId()
|
|
57
|
-
},
|
|
58
|
-
pinned: {
|
|
59
|
-
type: "boolean",
|
|
60
|
-
descriptionKey: "ui.agent.clinicalNoteCard.state.pinned",
|
|
61
|
-
description: "Whether the note is pinned to the top of the timeline.",
|
|
62
|
-
read: (n) => n.isPinned()
|
|
63
|
-
},
|
|
64
|
-
flagged: {
|
|
65
|
-
type: "boolean",
|
|
66
|
-
descriptionKey: "ui.agent.clinicalNoteCard.state.flagged",
|
|
67
|
-
description: "Whether the note is flagged for follow-up.",
|
|
68
|
-
read: (n) => n.isFlagged()
|
|
69
|
-
},
|
|
70
|
-
attachmentKind: {
|
|
71
|
-
type: "'patient' | 'carePlan' | 'carePlanEntry' | 'phase' | 'xray' | undefined",
|
|
72
|
-
descriptionKey: "ui.agent.clinicalNoteCard.state.attachmentKind",
|
|
73
|
-
description: "Structural kind the note is attached to. Never the attachment identity or content.",
|
|
74
|
-
read: (n) => n.getAttachmentKind()
|
|
75
|
-
}
|
|
76
|
-
},
|
|
77
|
-
actions: {},
|
|
78
|
-
domHooks: {
|
|
79
|
-
root: {
|
|
80
|
-
attr: "data-component",
|
|
81
|
-
value: "clinical-note-card",
|
|
82
|
-
description: "Marks the ClinicalNoteCard root. Also emits data-pinned / data-flagged / data-attached-to structural hooks."
|
|
83
|
-
},
|
|
84
|
-
instanceId: {
|
|
85
|
-
attr: "data-component-id",
|
|
86
|
-
sourceProp: "id",
|
|
87
|
-
description: "Sourced from the id prop — addresses a specific note."
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
}, Q = _("ds:w-full ds:text-[color:var(--foreground)]", {
|
|
91
|
-
variants: {
|
|
92
|
-
surface: { flat: "", elevated: "" }
|
|
93
|
-
},
|
|
94
|
-
defaultVariants: { surface: "elevated" }
|
|
95
|
-
}), X = _(
|
|
96
|
-
[
|
|
97
|
-
"type-body-sm ds:text-[color:var(--foreground)]",
|
|
98
|
-
"ds:break-words",
|
|
99
|
-
"[&_a]:ds:underline [&_a]:ds:underline-offset-2",
|
|
100
|
-
"[&_code]:ds:rounded-[var(--radius-sm)] [&_code]:ds:bg-muted/30 [&_code]:ds:ps-[var(--spacing-xs)] [&_code]:ds:pe-[var(--spacing-xs)] [&_code]:ds:font-[family-name:var(--font-mono)]",
|
|
101
|
-
"[&_p]:ds:m-0 [&_p+p]:ds:mt-[var(--spacing-sm)]",
|
|
102
|
-
"[&_ul]:ds:m-0 [&_ul]:ds:ps-[var(--spacing-md)] [&_ol]:ds:m-0 [&_ol]:ds:ps-[var(--spacing-md)]"
|
|
103
|
-
].join(" "),
|
|
104
|
-
{
|
|
105
|
-
variants: {
|
|
106
|
-
truncate: {
|
|
107
|
-
true: "ds:[overflow:hidden] ds:[display:-webkit-box] ds:[-webkit-box-orient:vertical] ds:[-webkit-line-clamp:4]",
|
|
108
|
-
false: ""
|
|
109
|
-
}
|
|
110
|
-
},
|
|
111
|
-
defaultVariants: { truncate: !1 }
|
|
112
|
-
}
|
|
113
|
-
);
|
|
114
|
-
function v(n) {
|
|
115
|
-
return n.replace(/&/g, "&").replace(/</g, "<").replace(/>/g, ">").replace(/"/g, """);
|
|
116
|
-
}
|
|
117
|
-
function b(n) {
|
|
118
|
-
let r = n;
|
|
119
|
-
return r = r.replace(/`([^`]+)`/g, "<code>$1</code>"), r = r.replace(/\*\*([^*]+)\*\*/g, "<strong>$1</strong>"), r = r.replace(/\*([^*]+)\*/g, "<em>$1</em>"), r = r.replace(
|
|
120
|
-
/\[([^\]]+)\]\(([^)\s]+)\)/g,
|
|
121
|
-
'<a href="$2" target="_blank" rel="noopener noreferrer">$1</a>'
|
|
122
|
-
), r;
|
|
123
|
-
}
|
|
124
|
-
function Y(n) {
|
|
125
|
-
return n.split(/\n{2,}/).map((o) => {
|
|
126
|
-
const t = o.split(`
|
|
127
|
-
`), p = t.every((l) => /^\s*[-*]\s+/.test(l)), a = t.every((l) => /^\s*\d+\.\s+/.test(l));
|
|
128
|
-
return p && t.length > 0 ? `<ul>${t.map((i) => i.replace(/^\s*[-*]\s+/, "")).map((i) => `<li>${b(v(i))}</li>`).join("")}</ul>` : a && t.length > 0 ? `<ol>${t.map((i) => i.replace(/^\s*\d+\.\s+/, "")).map((i) => `<li>${b(v(i))}</li>`).join("")}</ol>` : `<p>${b(v(o)).replace(
|
|
129
|
-
/\n/g,
|
|
130
|
-
"<br />"
|
|
131
|
-
)}</p>`;
|
|
132
|
-
}).join("");
|
|
133
|
-
}
|
|
134
|
-
const Z = K(
|
|
135
|
-
({
|
|
136
|
-
id: n,
|
|
137
|
-
dateIso: r,
|
|
138
|
-
createdAtIso: o,
|
|
139
|
-
author: t,
|
|
140
|
-
clinical: p,
|
|
141
|
-
attachedTo: a,
|
|
142
|
-
content: f,
|
|
143
|
-
pinned: l,
|
|
144
|
-
flagged: i,
|
|
145
|
-
truncate: z = !1,
|
|
146
|
-
surface: N = "elevated",
|
|
147
|
-
"aria-label": A,
|
|
148
|
-
className: P,
|
|
149
|
-
...$
|
|
150
|
-
}, j) => {
|
|
151
|
-
const { t: s } = S(), g = H(), L = I(() => Y(f), [f]), y = A ?? s("clinicalNoteCard.regionLabel");
|
|
152
|
-
U(
|
|
153
|
-
J,
|
|
154
|
-
{
|
|
155
|
-
getNoteId: () => n,
|
|
156
|
-
isPinned: () => !!l,
|
|
157
|
-
isFlagged: () => !!i,
|
|
158
|
-
getAttachmentKind: () => a == null ? void 0 : a.kind
|
|
159
|
-
},
|
|
160
|
-
n
|
|
161
|
-
);
|
|
162
|
-
let c = null;
|
|
163
|
-
if (a)
|
|
164
|
-
switch (a.kind) {
|
|
165
|
-
case "patient":
|
|
166
|
-
c = /* @__PURE__ */ e(
|
|
167
|
-
d,
|
|
168
|
-
{
|
|
169
|
-
variant: "neutral",
|
|
170
|
-
size: "sm",
|
|
171
|
-
leading: /* @__PURE__ */ e(B, { "aria-hidden": "true" }),
|
|
172
|
-
children: s("clinicalNoteCard.attachment.patient")
|
|
173
|
-
}
|
|
174
|
-
);
|
|
175
|
-
break;
|
|
176
|
-
case "carePlan": {
|
|
177
|
-
const u = s("clinicalNoteCard.attachment.carePlan", {
|
|
178
|
-
number: a.number
|
|
179
|
-
});
|
|
180
|
-
c = a.url && M(a.url) ? /* @__PURE__ */ e(
|
|
181
|
-
E,
|
|
182
|
-
{
|
|
183
|
-
href: a.url,
|
|
184
|
-
intent: "default",
|
|
185
|
-
startIcon: /* @__PURE__ */ e(h, { "aria-hidden": "true" }),
|
|
186
|
-
children: u
|
|
187
|
-
}
|
|
188
|
-
) : /* @__PURE__ */ e(
|
|
189
|
-
d,
|
|
190
|
-
{
|
|
191
|
-
variant: "info",
|
|
192
|
-
size: "sm",
|
|
193
|
-
leading: /* @__PURE__ */ e(h, { "aria-hidden": "true" }),
|
|
194
|
-
children: u
|
|
195
|
-
}
|
|
196
|
-
);
|
|
197
|
-
break;
|
|
198
|
-
}
|
|
199
|
-
case "carePlanEntry": {
|
|
200
|
-
const u = a.elements && a.elements.length > 0 ? s("clinicalNoteCard.attachment.carePlanEntryWithElements", {
|
|
201
|
-
care: a.careName,
|
|
202
|
-
elements: a.elements.join(", ")
|
|
203
|
-
}) : s("clinicalNoteCard.attachment.carePlanEntry", {
|
|
204
|
-
care: a.careName
|
|
205
|
-
});
|
|
206
|
-
c = /* @__PURE__ */ e(
|
|
207
|
-
d,
|
|
208
|
-
{
|
|
209
|
-
variant: "info",
|
|
210
|
-
size: "sm",
|
|
211
|
-
leading: /* @__PURE__ */ e(h, { "aria-hidden": "true" }),
|
|
212
|
-
children: u
|
|
213
|
-
}
|
|
214
|
-
);
|
|
215
|
-
break;
|
|
216
|
-
}
|
|
217
|
-
case "phase":
|
|
218
|
-
c = /* @__PURE__ */ e(
|
|
219
|
-
d,
|
|
220
|
-
{
|
|
221
|
-
variant: "neutral",
|
|
222
|
-
size: "sm",
|
|
223
|
-
leading: /* @__PURE__ */ e(q, { "aria-hidden": "true" }),
|
|
224
|
-
children: s("clinicalNoteCard.attachment.phase", {
|
|
225
|
-
label: a.label
|
|
226
|
-
})
|
|
227
|
-
}
|
|
228
|
-
);
|
|
229
|
-
break;
|
|
230
|
-
case "xray":
|
|
231
|
-
c = /* @__PURE__ */ e(
|
|
232
|
-
d,
|
|
233
|
-
{
|
|
234
|
-
variant: "neutral",
|
|
235
|
-
size: "sm",
|
|
236
|
-
leading: /* @__PURE__ */ e(W, { "aria-hidden": "true" }),
|
|
237
|
-
children: a.label ? s("clinicalNoteCard.attachment.xrayWithLabel", {
|
|
238
|
-
label: a.label
|
|
239
|
-
}) : s("clinicalNoteCard.attachment.xray")
|
|
240
|
-
}
|
|
241
|
-
);
|
|
242
|
-
break;
|
|
243
|
-
}
|
|
244
|
-
const x = /* @__PURE__ */ m("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
|
|
245
|
-
/* @__PURE__ */ m("div", { className: "ds:flex ds:items-start ds:gap-[var(--spacing-sm)]", children: [
|
|
246
|
-
t ? /* @__PURE__ */ e(
|
|
247
|
-
V,
|
|
248
|
-
{
|
|
249
|
-
name: t.name,
|
|
250
|
-
src: t.avatarUrl,
|
|
251
|
-
size: "sm",
|
|
252
|
-
className: "ds:shrink-0",
|
|
253
|
-
"aria-hidden": "true",
|
|
254
|
-
role: "presentation",
|
|
255
|
-
"aria-label": void 0
|
|
256
|
-
}
|
|
257
|
-
) : null,
|
|
258
|
-
/* @__PURE__ */ m("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
|
|
259
|
-
t ? /* @__PURE__ */ e(
|
|
260
|
-
"span",
|
|
261
|
-
{
|
|
262
|
-
id: g,
|
|
263
|
-
className: "type-title-item ds:text-[color:var(--foreground)] ds:truncate",
|
|
264
|
-
children: t.name
|
|
265
|
-
}
|
|
266
|
-
) : /* @__PURE__ */ e("span", { id: g, className: "ds:sr-only", children: y }),
|
|
267
|
-
/* @__PURE__ */ m("span", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-xs)] ds:gap-y-[var(--spacing-2xs)]", children: [
|
|
268
|
-
/* @__PURE__ */ e(C, { value: r, shape: "bare", size: "sm" }),
|
|
269
|
-
o && o !== r ? /* @__PURE__ */ m("span", { className: "type-meta ds:text-[color:var(--muted-foreground)]", children: [
|
|
270
|
-
s("clinicalNoteCard.added"),
|
|
271
|
-
" ",
|
|
272
|
-
/* @__PURE__ */ e(C, { value: o, shape: "bare", size: "sm" })
|
|
273
|
-
] }) : null
|
|
274
|
-
] })
|
|
275
|
-
] }),
|
|
276
|
-
l || i || p ? /* @__PURE__ */ m("span", { className: "ds:ms-auto ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-2xs)]", children: [
|
|
277
|
-
p ? /* @__PURE__ */ e(d, { variant: "brand", size: "sm", children: s("clinicalNoteCard.clinical") }) : null,
|
|
278
|
-
l ? /* @__PURE__ */ e(
|
|
279
|
-
d,
|
|
280
|
-
{
|
|
281
|
-
variant: "accent",
|
|
282
|
-
size: "sm",
|
|
283
|
-
leading: /* @__PURE__ */ e(G, { "aria-hidden": "true" }),
|
|
284
|
-
children: s("clinicalNoteCard.pinned")
|
|
285
|
-
}
|
|
286
|
-
) : null,
|
|
287
|
-
i ? /* @__PURE__ */ e(
|
|
288
|
-
d,
|
|
289
|
-
{
|
|
290
|
-
variant: "warning",
|
|
291
|
-
size: "sm",
|
|
292
|
-
leading: /* @__PURE__ */ e(O, { "aria-hidden": "true" }),
|
|
293
|
-
children: s("clinicalNoteCard.flagged")
|
|
294
|
-
}
|
|
295
|
-
) : null
|
|
296
|
-
] }) : null
|
|
297
|
-
] }),
|
|
298
|
-
/* @__PURE__ */ e(
|
|
299
|
-
F,
|
|
300
|
-
{
|
|
301
|
-
html: L,
|
|
302
|
-
profile: "markdown",
|
|
303
|
-
className: X({ truncate: z })
|
|
304
|
-
}
|
|
305
|
-
),
|
|
306
|
-
c ? /* @__PURE__ */ e("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: c }) : null
|
|
307
|
-
] });
|
|
308
|
-
return /* @__PURE__ */ e(
|
|
309
|
-
"div",
|
|
310
|
-
{
|
|
311
|
-
ref: j,
|
|
312
|
-
role: "article",
|
|
313
|
-
"aria-label": y,
|
|
314
|
-
"aria-labelledby": g,
|
|
315
|
-
"data-component": "clinical-note-card",
|
|
316
|
-
"data-component-id": n,
|
|
317
|
-
"data-pinned": l ? "true" : void 0,
|
|
318
|
-
"data-flagged": i ? "true" : void 0,
|
|
319
|
-
"data-attached-to": a == null ? void 0 : a.kind,
|
|
320
|
-
id: n,
|
|
321
|
-
className: Q({ surface: N, className: P }),
|
|
322
|
-
...$,
|
|
323
|
-
children: N === "elevated" ? /* @__PURE__ */ e(k, { variant: "elevated", children: /* @__PURE__ */ e(k.Body, { children: x }) }) : x
|
|
324
|
-
}
|
|
325
|
-
);
|
|
326
|
-
}
|
|
327
|
-
);
|
|
328
|
-
Z.displayName = "ClinicalNoteCard";
|
|
329
|
-
export {
|
|
330
|
-
Z as C,
|
|
331
|
-
J as c
|
|
332
|
-
};
|
|
333
|
-
//# sourceMappingURL=clinical-note-card-DqQYf_D4.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"clinical-note-card-DqQYf_D4.js","sources":["../../node_modules/lucide-react/dist/esm/icons/flag.js","../../node_modules/lucide-react/dist/esm/icons/pin.js","../../src/components/clinical-note-card/clinical-note-card.agent.ts","../../src/components/clinical-note-card/clinical-note-card.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 [\n \"path\",\n {\n d: \"M4 22V4a1 1 0 0 1 .4-.8A6 6 0 0 1 8 2c3 0 5 2 7.333 2q2 0 3.067-.8A1 1 0 0 1 20 4v10a1 1 0 0 1-.4.8A6 6 0 0 1 16 16c-3 0-5-2-8-2a6 6 0 0 0-4 1.528\",\n key: \"1jaruq\"\n }\n ]\n];\nconst Flag = createLucideIcon(\"flag\", __iconNode);\n\nexport { __iconNode, Flag as default };\n//# sourceMappingURL=flag.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: \"M12 17v5\", key: \"bb1du9\" }],\n [\n \"path\",\n {\n d: \"M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z\",\n key: \"1nkz8b\"\n }\n ]\n];\nconst Pin = createLucideIcon(\"pin\", __iconNode);\n\nexport { __iconNode, Pin as default };\n//# sourceMappingURL=pin.js.map\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — ClinicalNoteCard. */\n/* */\n/* Read-only presentation surface. Exposes the note's id + structural */\n/* flags (pinned / flagged / attachment kind) so a future MCP UI bridge */\n/* can locate and describe a rendered note. NEVER reads the note body or */\n/* any author identity — those are PHI and stay out of the agent layer. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { ClinicalNoteCardHandle } from './clinical-note-card';\n\nexport const clinicalNoteCardAgent: AgentAdapter<ClinicalNoteCardHandle> = {\n id: 'clinical-note-card',\n capabilities: [],\n state: {\n noteId: {\n type: 'string | undefined',\n descriptionKey: 'ui.agent.clinicalNoteCard.state.noteId',\n description: 'Stable identifier of the rendered note, when supplied.',\n read: (handle) => handle.getNoteId(),\n },\n pinned: {\n type: 'boolean',\n descriptionKey: 'ui.agent.clinicalNoteCard.state.pinned',\n description: 'Whether the note is pinned to the top of the timeline.',\n read: (handle) => handle.isPinned(),\n },\n flagged: {\n type: 'boolean',\n descriptionKey: 'ui.agent.clinicalNoteCard.state.flagged',\n description: 'Whether the note is flagged for follow-up.',\n read: (handle) => handle.isFlagged(),\n },\n attachmentKind: {\n type: \"'patient' | 'carePlan' | 'carePlanEntry' | 'phase' | 'xray' | undefined\",\n descriptionKey: 'ui.agent.clinicalNoteCard.state.attachmentKind',\n description:\n 'Structural kind the note is attached to. Never the attachment identity or content.',\n read: (handle) => handle.getAttachmentKind(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'clinical-note-card',\n description:\n 'Marks the ClinicalNoteCard root. Also emits data-pinned / data-flagged / data-attached-to structural hooks.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop — addresses a specific note.',\n },\n },\n};\n","import {\n forwardRef,\n useId,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Flag, Pin, FileText, Layers, ScanLine, User } from 'lucide-react';\nimport { Avatar } from '../avatar/avatar';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { Link } from '../link/link';\nimport { Timestamp } from '../timestamp';\nimport { SafeHtml } from '../_shared/safe-html';\nimport { isSafeEntityUrl } from '../_shared/is-safe-url';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { clinicalNoteCardAgent } from './clinical-note-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* ClinicalNoteCard */\n/* */\n/* A single clinical note — the free-text annotation an operator writes */\n/* against a patient, care plan, treatment phase, or x-ray. Replaces the */\n/* bespoke \"nota clinica\" rows scattered across the platform patient */\n/* timeline. Composes Card + Avatar (author) + Timestamp + Badge/Tag */\n/* (clinical / pinned / flagged) + Link (attachment) and renders the */\n/* markdown body through the shared SafeHtml helper — the only sanctioned */\n/* carrier of dangerouslySetInnerHTML (constraint §8). */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `clinicalNoteCard.*` namespace. No PHI is read by the agent adapter — */\n/* only the note id and structural flags are exposed. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\n/** Author identity — drives the avatar + visible byline. */\nexport interface ClinicalNoteAuthor {\n /** Display name. */\n name: string;\n /** Optional avatar image URL. */\n avatarUrl?: string;\n}\n\n/**\n * What the note is attached to. Discriminated by `kind`:\n * - `patient` — a free-standing note on the patient record.\n * - `carePlan` — attached to a care plan (estimate / treatment plan),\n * identified by its number, with an optional deep link.\n * - `carePlanEntry` — attached to one entry inside a care plan, naming the\n * care and (optionally) the listed elements.\n * - `phase` — attached to a treatment phase, labelled.\n * - `xray` — attached to an x-ray / radiograph, optionally labelled.\n */\nexport type NoteAttachment =\n | { kind: 'patient' }\n | { kind: 'carePlan'; number: string; url?: string }\n | { kind: 'carePlanEntry'; careName: string; elements?: string[] }\n | { kind: 'phase'; label: string }\n | { kind: 'xray'; label?: string };\n\n/** Imperative handle exposed to the agent runtime — identifiers / flags only. */\nexport interface ClinicalNoteCardHandle {\n /** The note's stable id, when supplied. */\n getNoteId: () => string | undefined;\n /** Whether the note is currently pinned. */\n isPinned: () => boolean;\n /** Whether the note is currently flagged. */\n isFlagged: () => boolean;\n /** The attachment kind the note is bound to. */\n getAttachmentKind: () => NoteAttachment['kind'] | undefined;\n}\n\nexport interface ClinicalNoteCardProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'aria-label' | 'children' | 'content' | 'title'\n> {\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n /**\n * ISO-8601 timestamp the note refers to (the clinical date). Drives the\n * primary `<Timestamp>`.\n */\n dateIso: string;\n /**\n * ISO-8601 timestamp the note was authored, when it differs from\n * `dateIso`. Rendered as a secondary \"added\" line.\n */\n createdAtIso?: string;\n /** Author identity — avatar + byline. Optional for system notes. */\n author?: ClinicalNoteAuthor;\n /**\n * Whether this is a clinical note (vs. an administrative one). When true a\n * \"Clinical\" badge is shown so the note's nature is unambiguous at a glance.\n */\n clinical?: boolean;\n /** What the note is attached to — drives a contextual chip + optional link. */\n attachedTo?: NoteAttachment;\n /**\n * The note body, authored in a small, safe subset of Markdown (bold,\n * italic, inline code, links, line breaks, simple lists). Rendered through\n * the shared `SafeHtml` helper with the `markdown` sanitiser profile —\n * raw HTML and unsafe link schemes are stripped.\n */\n content: string;\n /** Pin the note to the top of a timeline — shows a \"Pinned\" chip. */\n pinned?: boolean;\n /** Flag the note for follow-up / attention — shows a \"Flagged\" chip. */\n flagged?: boolean;\n /** Clamp the rendered body to a few lines. */\n truncate?: boolean;\n /**\n * `'elevated'` (default) wraps the note in `<Card variant=\"elevated\">`.\n * `'flat'` drops the chrome for use inside an existing Card / timeline rail.\n */\n surface?: 'flat' | 'elevated';\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA — root */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: { flat: '', elevated: '' },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* Body clamp — applied only when `truncate` is set. Logical-safe. */\nconst bodyVariants = cva(\n [\n 'type-body-sm ds:text-[color:var(--foreground)]',\n 'ds:break-words',\n '[&_a]:ds:underline [&_a]:ds:underline-offset-2',\n '[&_code]:ds:rounded-[var(--radius-sm)] [&_code]:ds:bg-muted/30 [&_code]:ds:ps-[var(--spacing-xs)] [&_code]:ds:pe-[var(--spacing-xs)] [&_code]:ds:font-[family-name:var(--font-mono)]',\n '[&_p]:ds:m-0 [&_p+p]:ds:mt-[var(--spacing-sm)]',\n '[&_ul]:ds:m-0 [&_ul]:ds:ps-[var(--spacing-md)] [&_ol]:ds:m-0 [&_ol]:ds:ps-[var(--spacing-md)]',\n ].join(' '),\n {\n variants: {\n truncate: {\n true: 'ds:[overflow:hidden] ds:[display:-webkit-box] ds:[-webkit-box-orient:vertical] ds:[-webkit-line-clamp:4]',\n false: '',\n },\n },\n defaultVariants: { truncate: false },\n },\n);\n\n/* -------------------------------------------------------------------- */\n/* Markdown → safe HTML */\n/* */\n/* A dependency-free converter for the small Markdown subset the note */\n/* body supports. The output is then passed to `SafeHtml` (markdown */\n/* profile) which strips everything outside the allow-list — so even a */\n/* hostile note can only ever emit the sanitised tag set. We never call */\n/* dangerouslySetInnerHTML ourselves; SafeHtml is the single carrier. */\n/* -------------------------------------------------------------------- */\n\n/** HTML-escape a raw text run before re-inserting our own safe markup. */\nfunction escapeHtml(input: string): string {\n return input\n .replace(/&/g, '&')\n .replace(/</g, '<')\n .replace(/>/g, '>')\n .replace(/\"/g, '"');\n}\n\n/** Apply inline markdown (bold, italic, code, links) to an escaped run. */\nfunction renderInlineHtml(escaped: string): string {\n let out = escaped;\n // Inline code first so its contents aren't re-processed.\n out = out.replace(/`([^`]+)`/g, '<code>$1</code>');\n out = out.replace(/\\*\\*([^*]+)\\*\\*/g, '<strong>$1</strong>');\n out = out.replace(/\\*([^*]+)\\*/g, '<em>$1</em>');\n // Links — the href is left as-authored; SafeHtml's markdown profile\n // rejects any scheme outside http(s)/mailto/tel at sanitise time.\n out = out.replace(\n /\\[([^\\]]+)\\]\\(([^)\\s]+)\\)/g,\n '<a href=\"$2\" target=\"_blank\" rel=\"noopener noreferrer\">$1</a>',\n );\n return out;\n}\n\n/** Convert the supported Markdown subset into an HTML string. */\nfunction markdownToHtml(input: string): string {\n const blocks = input.split(/\\n{2,}/);\n return blocks\n .map((block) => {\n const lines = block.split('\\n');\n const isUnordered = lines.every((l) => /^\\s*[-*]\\s+/.test(l));\n const isOrdered = lines.every((l) => /^\\s*\\d+\\.\\s+/.test(l));\n if (isUnordered && lines.length > 0) {\n const items = lines\n .map((l) => l.replace(/^\\s*[-*]\\s+/, ''))\n .map((l) => `<li>${renderInlineHtml(escapeHtml(l))}</li>`)\n .join('');\n return `<ul>${items}</ul>`;\n }\n if (isOrdered && lines.length > 0) {\n const items = lines\n .map((l) => l.replace(/^\\s*\\d+\\.\\s+/, ''))\n .map((l) => `<li>${renderInlineHtml(escapeHtml(l))}</li>`)\n .join('');\n return `<ol>${items}</ol>`;\n }\n const paragraph = renderInlineHtml(escapeHtml(block)).replace(\n /\\n/g,\n '<br />',\n );\n return `<p>${paragraph}</p>`;\n })\n .join('');\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const ClinicalNoteCard = forwardRef<\n HTMLDivElement,\n ClinicalNoteCardProps\n>(\n (\n {\n id,\n dateIso,\n createdAtIso,\n author,\n clinical,\n attachedTo,\n content,\n pinned,\n flagged,\n truncate = false,\n surface = 'elevated',\n 'aria-label': ariaLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const headingId = useId();\n\n const bodyHtml = useMemo(() => markdownToHtml(content), [content]);\n\n const resolvedAriaLabel = ariaLabel ?? t('clinicalNoteCard.regionLabel');\n\n useAgentRegistration(\n clinicalNoteCardAgent,\n {\n getNoteId: () => id,\n isPinned: () => !!pinned,\n isFlagged: () => !!flagged,\n getAttachmentKind: () => attachedTo?.kind,\n },\n id,\n );\n\n /* ----- Attachment chip / link ----- */\n let attachmentNode: ReactNode = null;\n if (attachedTo) {\n switch (attachedTo.kind) {\n case 'patient':\n attachmentNode = (\n <Badge\n variant=\"neutral\"\n size=\"sm\"\n leading={<User aria-hidden=\"true\" />}\n >\n {t('clinicalNoteCard.attachment.patient')}\n </Badge>\n );\n break;\n case 'carePlan': {\n const label = t('clinicalNoteCard.attachment.carePlan', {\n number: attachedTo.number,\n });\n attachmentNode =\n attachedTo.url && isSafeEntityUrl(attachedTo.url) ? (\n <Link\n href={attachedTo.url}\n intent=\"default\"\n startIcon={<FileText aria-hidden=\"true\" />}\n >\n {label}\n </Link>\n ) : (\n <Badge\n variant=\"info\"\n size=\"sm\"\n leading={<FileText aria-hidden=\"true\" />}\n >\n {label}\n </Badge>\n );\n break;\n }\n case 'carePlanEntry': {\n const label =\n attachedTo.elements && attachedTo.elements.length > 0\n ? t('clinicalNoteCard.attachment.carePlanEntryWithElements', {\n care: attachedTo.careName,\n elements: attachedTo.elements.join(', '),\n })\n : t('clinicalNoteCard.attachment.carePlanEntry', {\n care: attachedTo.careName,\n });\n attachmentNode = (\n <Badge\n variant=\"info\"\n size=\"sm\"\n leading={<FileText aria-hidden=\"true\" />}\n >\n {label}\n </Badge>\n );\n break;\n }\n case 'phase':\n attachmentNode = (\n <Badge\n variant=\"neutral\"\n size=\"sm\"\n leading={<Layers aria-hidden=\"true\" />}\n >\n {t('clinicalNoteCard.attachment.phase', {\n label: attachedTo.label,\n })}\n </Badge>\n );\n break;\n case 'xray':\n attachmentNode = (\n <Badge\n variant=\"neutral\"\n size=\"sm\"\n leading={<ScanLine aria-hidden=\"true\" />}\n >\n {attachedTo.label\n ? t('clinicalNoteCard.attachment.xrayWithLabel', {\n label: attachedTo.label,\n })\n : t('clinicalNoteCard.attachment.xray')}\n </Badge>\n );\n break;\n }\n }\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n {/* Header: author + date + status chips */}\n <div className=\"ds:flex ds:items-start ds:gap-[var(--spacing-sm)]\">\n {author ? (\n <Avatar\n name={author.name}\n src={author.avatarUrl}\n size=\"sm\"\n className=\"ds:shrink-0\"\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n ) : null}\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n {author ? (\n <span\n id={headingId}\n className=\"type-title-item ds:text-[color:var(--foreground)] ds:truncate\"\n >\n {author.name}\n </span>\n ) : (\n <span id={headingId} className=\"ds:sr-only\">\n {resolvedAriaLabel}\n </span>\n )}\n <span className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-xs)] ds:gap-y-[var(--spacing-2xs)]\">\n <Timestamp value={dateIso} shape=\"bare\" size=\"sm\" />\n {createdAtIso && createdAtIso !== dateIso ? (\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('clinicalNoteCard.added')}{' '}\n <Timestamp value={createdAtIso} shape=\"bare\" size=\"sm\" />\n </span>\n ) : null}\n </span>\n </div>\n {pinned || flagged || clinical ? (\n <span className=\"ds:ms-auto ds:flex ds:shrink-0 ds:flex-wrap ds:items-center ds:justify-end ds:gap-[var(--spacing-2xs)]\">\n {clinical ? (\n <Badge variant=\"brand\" size=\"sm\">\n {t('clinicalNoteCard.clinical')}\n </Badge>\n ) : null}\n {pinned ? (\n <Badge\n variant=\"accent\"\n size=\"sm\"\n leading={<Pin aria-hidden=\"true\" />}\n >\n {t('clinicalNoteCard.pinned')}\n </Badge>\n ) : null}\n {flagged ? (\n <Badge\n variant=\"warning\"\n size=\"sm\"\n leading={<Flag aria-hidden=\"true\" />}\n >\n {t('clinicalNoteCard.flagged')}\n </Badge>\n ) : null}\n </span>\n ) : null}\n </div>\n\n {/* Body — markdown rendered via the sanctioned SafeHtml carrier. */}\n <SafeHtml\n html={bodyHtml}\n profile=\"markdown\"\n className={bodyVariants({ truncate })}\n />\n\n {/* Attachment context */}\n {attachmentNode ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {attachmentNode}\n </div>\n ) : null}\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"article\"\n aria-label={resolvedAriaLabel}\n aria-labelledby={headingId}\n data-component=\"clinical-note-card\"\n data-component-id={id}\n data-pinned={pinned ? 'true' : undefined}\n data-flagged={flagged ? 'true' : undefined}\n data-attached-to={attachedTo?.kind}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nClinicalNoteCard.displayName = 'ClinicalNoteCard';\n\n/** Re-export of the surface variant union for downstream typing. */\nexport type ClinicalNoteCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["__iconNode","Flag","createLucideIcon","Pin","clinicalNoteCardAgent","handle","rootVariants","cva","bodyVariants","escapeHtml","input","renderInlineHtml","escaped","out","markdownToHtml","block","lines","isUnordered","isOrdered","l","ClinicalNoteCard","forwardRef","id","dateIso","createdAtIso","author","clinical","attachedTo","content","pinned","flagged","truncate","surface","ariaLabel","className","rest","ref","t","useTranslation","headingId","useId","bodyHtml","useMemo","resolvedAriaLabel","useAgentRegistration","attachmentNode","jsx","Badge","User","label","isSafeEntityUrl","Link","FileText","Layers","ScanLine","inner","jsxs","Avatar","Timestamp","SafeHtml","Card"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"combobox-Clum7gJ1.js","sources":["../../src/components/combobox/combobox.agent.ts","../../src/components/combobox/combobox.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { ComboboxHandle } from './combobox';\n\nexport const comboboxAgent: AgentAdapter<ComboboxHandle> = {\n id: 'combobox',\n // Persisted single choice (value state + set_value) → select_single + set_value,\n // plus type-to-filter and open/close of the option list.\n capabilities: ['select_single', 'set_value', 'filter', 'open', 'close'],\n state: {\n value: {\n type: 'string | null',\n descriptionKey: 'ui.agent.combobox.state.value',\n description:\n 'Currently-selected option value, or null when nothing is selected.',\n read: (handle) => handle.getValue(),\n },\n query: {\n type: 'string',\n descriptionKey: 'ui.agent.combobox.state.query',\n description: 'Current filter query in the combobox input.',\n read: (handle) => handle.getQuery(),\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.combobox.state.isOpen',\n description: 'True when the option list is visible.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n set_value: {\n // Persists the user's chosen option — reversible via the same UI.\n safety: 'write',\n argsType: '{ value: string | null }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: ['string', 'null'],\n description: 'Option value to select, or null to clear.',\n },\n },\n required: ['value'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.combobox.actions.setValue',\n description: 'Set the selected value programmatically.',\n examples: [{ args: { value: 'it' }, note: 'Select the \"it\" option.' }],\n invoke: (handle, args: { value: string | null }) => {\n handle.setValue(args.value);\n },\n },\n apply_filter: {\n // Pure ephemeral filter of the visible options — no persisted change.\n safety: 'read',\n argsType: '{ query: string }',\n argsSchema: {\n type: 'object',\n properties: {\n query: { type: 'string', description: 'Filter text for the list.' },\n },\n required: ['query'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.combobox.actions.applyFilter',\n description: 'Set the filter query for the option list.',\n invoke: (handle, args: { query: string }) => {\n handle.setQuery(args.query);\n },\n },\n clear_selection: {\n // Discards the persisted choice — destructive (loses the selection).\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.combobox.actions.clearSelection',\n description: 'Clear the current selection.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.combobox.actions.open',\n description: 'Open the option list.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.combobox.actions.close',\n description: 'Close the option list.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'combobox' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-option-id',\n description: 'Each option emits its value as data-option-id.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type KeyboardEvent,\n type MouseEvent,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react';\nimport * as Popover from '@radix-ui/react-popover';\nimport { Command, defaultFilter, useCommandState } from 'cmdk';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Check, X } from 'lucide-react';\nimport {\n FormFieldContext,\n useFormField,\n} from '../form-field/form-field-context';\nimport type { OptionShape } from '../_shared/option';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { normalizeDiacritics } from '../_shared/normalize-diacritics';\nimport { groupOptions } from '../_shared/group-options';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\nimport {\n INPUT_SURFACE_CHROME,\n INPUT_SURFACE_HEIGHT,\n INPUT_SURFACE_PADDING_X,\n INPUT_SURFACE_TONE,\n} from '../_shared/input-surface';\nimport { useAgentRegistration } from '../../agent';\nimport { comboboxAgent } from './combobox.agent';\n\nexport type ComboboxOption<T extends string = string> = OptionShape<T>;\n\n// Curated agent-readiness handle — see combobox.agent.ts.\nexport interface ComboboxHandle {\n getValue: () => string | null;\n getQuery: () => string;\n getIsOpen: () => boolean;\n setValue: (value: string | null) => void;\n setQuery: (query: string) => void;\n clear: () => void;\n open: () => void;\n close: () => void;\n}\n\nexport interface ComboboxProps<T extends string = string> {\n options: ComboboxOption<T>[];\n value?: T | '';\n defaultValue?: T;\n onValueChange?: (value: T | '') => void;\n placeholder?: string;\n clearable?: boolean;\n disabled?: boolean;\n readOnly?: boolean;\n required?: boolean;\n name?: string;\n id?: string;\n size?: 'sm' | 'md' | 'lg';\n tone?: 'default' | 'error';\n filter?: (value: string, search: string) => number;\n allowCreate?: boolean;\n onCreate?: (value: string) => void;\n open?: boolean;\n onOpenChange?: (open: boolean) => void;\n emptyMessage?: ReactNode;\n 'aria-label'?: string;\n className?: string;\n}\n\nconst comboboxInputVariants = cva(\n [\n 'ds:peer ds:w-full ds:bg-transparent ds:text-foreground ds:placeholder:text-muted-foreground',\n 'ds:outline-none ds:border-0',\n 'ds:disabled:cursor-not-allowed',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:text-[length:var(--font-size-sm)]',\n md: 'ds:text-[length:var(--font-size-base)]',\n lg: 'ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst comboboxWrapperVariants = cva(\n [\n 'ds:group ds:relative ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)] ds:w-full',\n INPUT_SURFACE_CHROME,\n ].join(' '),\n {\n variants: {\n size: {\n sm: `${INPUT_SURFACE_HEIGHT.sm} ${INPUT_SURFACE_PADDING_X.sm}`,\n md: `${INPUT_SURFACE_HEIGHT.md} ${INPUT_SURFACE_PADDING_X.md}`,\n lg: `${INPUT_SURFACE_HEIGHT.lg} ${INPUT_SURFACE_PADDING_X.lg}`,\n },\n tone: INPUT_SURFACE_TONE,\n },\n defaultVariants: {\n size: 'md',\n tone: 'default',\n },\n },\n);\n\nconst comboboxContentVariants = cva(\n [\n 'ds:z-[var(--z-popover)] ds:overflow-hidden ds:w-[var(--radix-popover-trigger-width)]',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-background ds:text-foreground',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out',\n 'ds:data-[state=closed]:zoom-out-95',\n 'ds:data-[side=bottom]:slide-in-from-top-2',\n 'ds:data-[side=top]:slide-in-from-bottom-2',\n 'ds:motion-reduce:animate-none',\n ].join(' '),\n);\n\nconst comboboxItemVariants = cva(\n [\n 'ds:relative ds:flex ds:cursor-pointer ds:items-center ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-foreground ds:outline-none ds:select-none',\n 'ds:data-[highlighted]:bg-muted ds:data-[highlighted]:text-foreground',\n 'ds:data-[highlighted]:border-s-2 ds:data-[highlighted]:border-s-primary',\n 'ds:aria-selected:bg-muted',\n 'ds:aria-disabled:pointer-events-none ds:aria-disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:min-h-8 ds:ps-3 ds:pe-3 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:min-h-[var(--min-target-size)] ds:ps-3 ds:pe-3 ds:text-[length:var(--font-size-base)]',\n lg: 'ds:min-h-12 ds:ps-4 ds:pe-4 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: {\n size: 'md',\n },\n },\n);\n\nconst comboboxGroupHeadingClasses = [\n 'ds:ps-3 ds:pe-3 ds:py-1.5',\n 'type-eyebrow ds:text-muted-foreground',\n].join(' ');\n\nconst comboboxListClasses =\n 'ds:max-h-[18rem] ds:overflow-y-auto ds:p-[var(--spacing-xs)]';\n\nconst comboboxEmptyClasses =\n 'ds:ps-3 ds:pe-3 ds:py-2 type-body-sm ds:text-muted-foreground';\n\nconst iconSizeBySize = {\n sm: 'ds:size-3.5',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n} as const;\n\ninterface CreateRowProps {\n search: string;\n label: string;\n iconClass: string;\n size: 'sm' | 'md' | 'lg';\n onSelect: (value: string) => void;\n}\n\nfunction ComboboxCreateRow({\n search,\n label,\n iconClass,\n size,\n onSelect,\n}: CreateRowProps): ReactElement | null {\n // Only surface the create row when no existing item matches the query.\n const filteredCount = useCommandState((state) => state.filtered.count);\n if (filteredCount > 0) return null;\n return (\n <Command.Item\n value={`__combobox-create__${search}`}\n keywords={[]}\n forceMount\n onSelect={() => onSelect(search)}\n className={comboboxItemVariants({ size })}\n >\n <span\n aria-hidden=\"true\"\n className={`ds:inline-flex ds:items-center ds:justify-center ${iconClass}`}\n />\n <span className=\"ds:flex-1 ds:truncate\">{label}</span>\n </Command.Item>\n );\n}\n\nconst ComboboxImpl = forwardRef<HTMLInputElement, ComboboxProps>(\n function Combobox(\n {\n options,\n value,\n defaultValue,\n onValueChange,\n placeholder,\n clearable = false,\n disabled,\n readOnly,\n required,\n name,\n id,\n size = 'md',\n tone = 'default',\n filter: externalFilter,\n allowCreate = false,\n onCreate,\n open: openProp,\n onOpenChange,\n emptyMessage,\n className,\n 'aria-label': ariaLabel,\n },\n ref,\n ) {\n const { t } = useTranslation();\n const ctx = useFormField();\n const inFormField = useContext(FormFieldContext) !== null;\n\n const [currentValueRaw, setComboboxValue] = useControllableState<string>({\n value,\n defaultValue: defaultValue ?? '',\n onChange: onValueChange as ((next: string) => void) | undefined,\n });\n const currentValue = currentValueRaw ?? '';\n\n const selectedOption = useMemo(\n () => options.find((o) => o.value === currentValue),\n [options, currentValue],\n );\n const selectedLabel = selectedOption?.label ?? '';\n\n const [search, setSearch] = useState<string>(selectedLabel);\n const [internalOpen, setInternalOpen] = useState(false);\n const isOpenControlled = openProp !== undefined;\n const open = isOpenControlled ? openProp : internalOpen;\n const composingRef = useRef(false);\n\n const inputRef = useRef<HTMLInputElement>(null);\n const anchorRef = useRef<HTMLDivElement>(null);\n\n useIsomorphicLayoutEffect(() => {\n inputRef.current?.setAttribute('aria-expanded', String(open));\n });\n\n useEffect(() => {\n if (!open) {\n setSearch(selectedLabel);\n }\n }, [selectedLabel, open]);\n\n const inputId = id ?? (inFormField ? ctx.id : undefined);\n const effectiveDisabled =\n (inFormField ? ctx.disabled : false) || Boolean(disabled);\n const effectiveReadOnly = Boolean(readOnly);\n const effectiveRequired =\n (inFormField ? ctx.required : false) || Boolean(required);\n const effectiveInvalid = inFormField ? ctx.invalid : false;\n const effectiveTone = effectiveInvalid ? 'error' : tone;\n const describedBy =\n inFormField && ctx.describedBy ? ctx.describedBy : undefined;\n\n const resolvedPlaceholder =\n placeholder ?? t('inputs.combobox.placeholder', 'Search…');\n\n const filterFn = useMemo(\n () => (candidate: string, searchStr: string, keywords?: string[]) => {\n if (composingRef.current) return 1;\n const normalizedCandidate = normalizeDiacritics(candidate);\n const normalizedSearch = normalizeDiacritics(searchStr);\n const normalizedKeywords = keywords?.map(normalizeDiacritics);\n if (externalFilter) {\n return externalFilter(normalizedCandidate, normalizedSearch);\n }\n return defaultFilter(\n normalizedCandidate,\n normalizedSearch,\n normalizedKeywords,\n );\n },\n [externalFilter],\n );\n\n const commit = (next: string) => {\n setComboboxValue(next);\n };\n\n const setOpen = (next: boolean) => {\n if (!isOpenControlled) setInternalOpen(next);\n onOpenChange?.(next);\n };\n\n const handleSelect = (optValue: string) => {\n const option = options.find((o) => o.value === optValue);\n commit(optValue);\n setSearch(option?.label ?? '');\n setOpen(false);\n };\n\n const handleCreate = (nextValue: string) => {\n onCreate?.(nextValue);\n setOpen(false);\n };\n\n const handleSearchChange = (next: string) => {\n if (effectiveReadOnly) return;\n setSearch(next);\n if (!open && next.length > 0 && !composingRef.current) {\n setOpen(true);\n }\n };\n\n const handleFocus = () => {\n if (!effectiveDisabled && !effectiveReadOnly) setOpen(true);\n };\n\n const handleCompositionStart = () => {\n composingRef.current = true;\n };\n\n const handleCompositionEnd = () => {\n composingRef.current = false;\n if (effectiveReadOnly) return;\n const next = inputRef.current?.value ?? '';\n setSearch(next);\n if (next.length > 0) setOpen(true);\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLInputElement>) => {\n if (event.nativeEvent.isComposing) return;\n if (event.key === 'Escape' && open) {\n event.preventDefault();\n setOpen(false);\n setSearch(selectedLabel);\n }\n };\n\n const handleClear = (event: MouseEvent<HTMLButtonElement>) => {\n event.preventDefault();\n event.stopPropagation();\n commit('');\n setSearch('');\n setOpen(true);\n inputRef.current?.focus();\n };\n\n const handleOpenChange = (next: boolean) => {\n if (effectiveReadOnly && next) return;\n setOpen(next);\n if (!next) setSearch(selectedLabel);\n };\n\n // Agent handle — refs mirror state for fresh reads.\n const valueRef = useRef<string>(currentValue);\n useEffect(() => {\n valueRef.current = currentValue;\n }, [currentValue]);\n const searchRef = useRef<string>(search);\n useEffect(() => {\n searchRef.current = search;\n }, [search]);\n const openRef = useRef<boolean>(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const setOpenStable = useCallback(\n (next: boolean) => {\n if (!isOpenControlled) setInternalOpen(next);\n onOpenChange?.(next);\n },\n [isOpenControlled, onOpenChange],\n );\n\n const agentHandle = useMemo<ComboboxHandle>(\n () => ({\n getValue: () => valueRef.current || null,\n getQuery: () => searchRef.current,\n getIsOpen: () => openRef.current,\n setValue: (next) => {\n const v = next ?? '';\n setComboboxValue(v);\n const opt = options.find((o) => o.value === v);\n setSearch(opt?.label ?? '');\n },\n setQuery: (query) => {\n setSearch(query);\n },\n clear: () => {\n setComboboxValue('');\n setSearch('');\n },\n open: () => setOpenStable(true),\n close: () => setOpenStable(false),\n }),\n [setComboboxValue, options, setOpenStable],\n );\n useAgentRegistration(comboboxAgent, agentHandle, id);\n\n const showClear =\n clearable &&\n Boolean(currentValue) &&\n !effectiveDisabled &&\n !effectiveReadOnly;\n\n const groups = groupOptions(options);\n const iconClass = iconSizeBySize[size];\n\n return (\n <Popover.Root open={open} onOpenChange={handleOpenChange}>\n <Command\n filter={filterFn}\n shouldFilter\n loop\n // cmdk hardcodes `aria-labelledby` on its input to its own hidden\n // `<label cmdk-label>` element. The label's contents come from the\n // Command Root's `label` (or `aria-label`) prop. If we leave it\n // empty, the input has an aria-labelledby pointer to a blank\n // element and axe's `label-title-only` rule fires. Fall back to\n // the placeholder so the input always has an accessible name —\n // when wrapped in a FormField the visible label still associates\n // via the FormField `<label htmlFor>`.\n label={ariaLabel ?? resolvedPlaceholder}\n className=\"ds:w-full\"\n >\n <Popover.Anchor asChild>\n <div\n ref={anchorRef}\n className={comboboxWrapperVariants({\n size,\n tone: effectiveTone,\n className,\n })}\n data-component=\"combobox\"\n data-component-id={id}\n >\n <Command.Input\n ref={composeRefs(ref, inputRef)}\n value={search}\n onValueChange={handleSearchChange}\n id={inputId}\n name={name}\n placeholder={resolvedPlaceholder}\n disabled={effectiveDisabled}\n readOnly={effectiveReadOnly}\n required={effectiveRequired}\n // Note: cmdk's CommandInput hardcodes `aria-labelledby` to\n // its own hidden cmdk-label after spreading user props, so\n // we can't override it from here. We funnel the accessible\n // name through the Command Root's `label` prop above.\n aria-describedby={describedBy}\n aria-invalid={effectiveInvalid || undefined}\n onFocus={handleFocus}\n onKeyDown={handleKeyDown}\n onCompositionStart={handleCompositionStart}\n onCompositionEnd={handleCompositionEnd}\n className={comboboxInputVariants({ size })}\n />\n {showClear ? (\n <button\n type=\"button\"\n aria-label={t('inputs.combobox.clear', 'Clear selection')}\n onClick={handleClear}\n onPointerDown={(event) => event.stopPropagation()}\n className={[\n 'ds:inline-flex ds:items-center ds:justify-center ds:rounded-[var(--radius-sm)]',\n 'ds:text-muted-foreground ds:hover:text-foreground',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:size-4',\n ].join(' ')}\n >\n <X aria-hidden=\"true\" className=\"ds:size-3.5\" />\n </button>\n ) : null}\n </div>\n </Popover.Anchor>\n <Popover.Portal forceMount>\n <Popover.Content\n // `forceMount` keeps the listbox in the DOM while the popover\n // is closed so the input's cmdk-set `aria-controls` always\n // points at a real id (axe's aria-valid-attr-value rule).\n // The CSS visibility / pointer-events is gated by data-state.\n forceMount\n hidden={!open}\n // Radix Popover.Content carries `role=\"dialog\"`; axe's\n // `aria-dialog-name` rule requires a name. Surface the\n // surrounding combobox label so the popover is named after\n // the field it serves (or fall back to the i18n default).\n aria-label={\n ariaLabel ?? t('inputs.combobox.popupLabel', 'Options')\n }\n onOpenAutoFocus={(event) => event.preventDefault()}\n onCloseAutoFocus={(event) => event.preventDefault()}\n onInteractOutside={(event) => {\n const target = event.target as Node | null;\n if (target && anchorRef.current?.contains(target)) {\n event.preventDefault();\n }\n }}\n sideOffset={4}\n align=\"start\"\n className={comboboxContentVariants()}\n >\n <Command.List className={comboboxListClasses}>\n <Command.Empty className={comboboxEmptyClasses}>\n {emptyMessage ??\n t('inputs.combobox.empty', 'No results found')}\n </Command.Empty>\n {groups.map(({ group, items }, groupIndex) => {\n const body = items.map((option) => {\n const isSelected = option.value === currentValue;\n return (\n <Command.Item\n key={option.value}\n value={option.value}\n data-option-id={option.value}\n keywords={[option.label]}\n disabled={option.disabled}\n onSelect={handleSelect}\n className={comboboxItemVariants({ size })}\n >\n <span\n aria-hidden=\"true\"\n className={`ds:inline-flex ds:items-center ds:justify-center ${iconClass}`}\n >\n {isSelected ? <Check className={iconClass} /> : null}\n </span>\n <span className=\"ds:flex-1 ds:truncate\">\n {option.label}\n </span>\n {option.description ? (\n <span className=\"type-meta ds:text-muted-foreground\">\n {option.description}\n </span>\n ) : null}\n </Command.Item>\n );\n });\n if (!group) {\n return (\n <Command.Group key={`group-${groupIndex}`}>\n {body}\n </Command.Group>\n );\n }\n return (\n <Command.Group\n key={`group-${group}`}\n heading={\n <span className={comboboxGroupHeadingClasses}>\n {group}\n </span>\n }\n >\n {body}\n </Command.Group>\n );\n })}\n {allowCreate && search.length > 0 ? (\n <ComboboxCreateRow\n search={search}\n label={t('inputs.combobox.create', 'Create \"{{value}}\"', {\n value: search,\n })}\n iconClass={iconClass}\n size={size}\n onSelect={handleCreate}\n />\n ) : null}\n </Command.List>\n </Popover.Content>\n </Popover.Portal>\n </Command>\n </Popover.Root>\n );\n },\n);\nComboboxImpl.displayName = 'Combobox';\n\ninterface ComboboxComponent {\n <T extends string = string>(\n props: ComboboxProps<T> & { ref?: Ref<HTMLInputElement> },\n ): ReactElement | null;\n displayName?: string;\n}\n\n// forwardRef erases component-level generics, so we re-widen via a callable\n// interface to preserve the `<T extends string>` signature at the call site.\nexport const Combobox = ComboboxImpl as unknown as ComboboxComponent;\n\nexport {\n comboboxInputVariants,\n comboboxWrapperVariants,\n comboboxContentVariants,\n comboboxItemVariants,\n};\n"],"names":["comboboxAgent","handle","args","comboboxInputVariants","cva","comboboxWrapperVariants","INPUT_SURFACE_CHROME","INPUT_SURFACE_HEIGHT","INPUT_SURFACE_PADDING_X","INPUT_SURFACE_TONE","comboboxContentVariants","comboboxItemVariants","comboboxGroupHeadingClasses","comboboxListClasses","comboboxEmptyClasses","iconSizeBySize","ComboboxCreateRow","search","label","iconClass","size","onSelect","useCommandState","state","jsxs","Command","jsx","ComboboxImpl","forwardRef","options","value","defaultValue","onValueChange","placeholder","clearable","disabled","readOnly","required","name","id","tone","externalFilter","allowCreate","onCreate","openProp","onOpenChange","emptyMessage","className","ariaLabel","ref","t","useTranslation","ctx","useFormField","inFormField","useContext","FormFieldContext","currentValueRaw","setComboboxValue","useControllableState","currentValue","selectedOption","useMemo","o","selectedLabel","setSearch","useState","internalOpen","setInternalOpen","isOpenControlled","open","composingRef","useRef","inputRef","anchorRef","useIsomorphicLayoutEffect","_a","useEffect","inputId","effectiveDisabled","effectiveReadOnly","effectiveRequired","effectiveInvalid","effectiveTone","describedBy","resolvedPlaceholder","filterFn","candidate","searchStr","keywords","normalizedCandidate","normalizeDiacritics","normalizedSearch","normalizedKeywords","defaultFilter","commit","next","setOpen","handleSelect","optValue","option","handleCreate","nextValue","handleSearchChange","handleFocus","handleCompositionStart","handleCompositionEnd","handleKeyDown","event","handleClear","handleOpenChange","valueRef","searchRef","openRef","setOpenStable","useCallback","agentHandle","v","opt","query","useAgentRegistration","showClear","groups","groupOptions","Popover","composeRefs","X","target","group","items","groupIndex","body","isSelected","Check","Combobox"],"mappings":"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"}
|