@alfadocs/ui-kit-debug 0.46.0 → 0.48.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/{agenda-card-CFyWSX7Z.js → agenda-card-BaSfVfrL.js} +25 -29
- package/dist/_chunks/agenda-card-BaSfVfrL.js.map +1 -0
- package/dist/_chunks/{agenda-tray-Dyj9ChHC.js → agenda-tray-DQayYmQ0.js} +50 -67
- package/dist/_chunks/agenda-tray-DQayYmQ0.js.map +1 -0
- package/dist/_chunks/ai-consent-banner-DO5ingMq.js +169 -0
- package/dist/_chunks/ai-consent-banner-DO5ingMq.js.map +1 -0
- package/dist/_chunks/ai-tools-rail-CxYG04cw.js +280 -0
- package/dist/_chunks/ai-tools-rail-CxYG04cw.js.map +1 -0
- package/dist/_chunks/alia-sidebar-DlvyXgVC.js +1126 -0
- package/dist/_chunks/alia-sidebar-DlvyXgVC.js.map +1 -0
- package/dist/_chunks/anamnesis-card-CmkBVAln.js +156 -0
- package/dist/_chunks/anamnesis-card-CmkBVAln.js.map +1 -0
- package/dist/_chunks/appointment-tray-BwDHhWWC.js +419 -0
- package/dist/_chunks/appointment-tray-BwDHhWWC.js.map +1 -0
- package/dist/_chunks/{audio-recorder-C1rhKhSN.js → audio-recorder-DC-v9YFW.js} +81 -91
- package/dist/_chunks/audio-recorder-DC-v9YFW.js.map +1 -0
- package/dist/_chunks/{bmi-calculator-CQqXTVNL.js → bmi-calculator-DdylQzT6.js} +2 -2
- package/dist/_chunks/{bmi-calculator-CQqXTVNL.js.map → bmi-calculator-DdylQzT6.js.map} +1 -1
- package/dist/_chunks/{booking-DlDVuWMd.js → booking-WV2GSru5.js} +291 -303
- package/dist/_chunks/booking-WV2GSru5.js.map +1 -0
- package/dist/_chunks/{calculator-dialog-D-nfvteH.js → calculator-dialog-CFk4I91b.js} +2 -2
- package/dist/_chunks/{calculator-dialog-D-nfvteH.js.map → calculator-dialog-CFk4I91b.js.map} +1 -1
- package/dist/_chunks/calendar-days-C4BmpCZg.js +23 -0
- package/dist/_chunks/calendar-days-C4BmpCZg.js.map +1 -0
- package/dist/_chunks/{calendar-YHFknAGv.js → calendar-oYWOCrnf.js} +195 -210
- package/dist/_chunks/calendar-oYWOCrnf.js.map +1 -0
- package/dist/_chunks/care-plan-card-QmNpGggC.js +252 -0
- package/dist/_chunks/care-plan-card-QmNpGggC.js.map +1 -0
- package/dist/_chunks/care-plan-entry-card-Cnra7vUc.js +318 -0
- package/dist/_chunks/care-plan-entry-card-Cnra7vUc.js.map +1 -0
- package/dist/_chunks/{chat-input-CQe7nR_v.js → chat-input-CFwc7JxL.js} +2 -1
- package/dist/_chunks/{chat-input-CQe7nR_v.js.map → chat-input-CFwc7JxL.js.map} +1 -1
- package/dist/_chunks/{chat-message-ASgGtj-L.js → chat-message-Dm8U2RY1.js} +81 -74
- package/dist/_chunks/chat-message-Dm8U2RY1.js.map +1 -0
- package/dist/_chunks/clinical-note-card-BYo437dU.js +333 -0
- package/dist/_chunks/clinical-note-card-BYo437dU.js.map +1 -0
- package/dist/_chunks/code-block-HoddNOKJ.js +106 -0
- package/dist/_chunks/code-block-HoddNOKJ.js.map +1 -0
- package/dist/_chunks/{contact-profile-card-DHyuAPXM.js → contact-profile-card-DvvVfAA2.js} +102 -115
- package/dist/_chunks/contact-profile-card-DvvVfAA2.js.map +1 -0
- package/dist/_chunks/{cycle-calculator-KxA8dqDf.js → cycle-calculator-DYvGm_m1.js} +2 -2
- package/dist/_chunks/{cycle-calculator-KxA8dqDf.js.map → cycle-calculator-DYvGm_m1.js.map} +1 -1
- package/dist/_chunks/{dialog-BTpZV6It.js → dialog-DMGnSelc.js} +55 -55
- package/dist/_chunks/dialog-DMGnSelc.js.map +1 -0
- package/dist/_chunks/download-CDF1sbL9.js +16 -0
- package/dist/_chunks/download-CDF1sbL9.js.map +1 -0
- package/dist/_chunks/{due-date-calculator-mFxpHLml.js → due-date-calculator-BXd3ANj7.js} +2 -2
- package/dist/_chunks/{due-date-calculator-mFxpHLml.js.map → due-date-calculator-BXd3ANj7.js.map} +1 -1
- package/dist/_chunks/{editable-currency-cell-renderer-BEBUQl9P.js → editable-currency-cell-renderer-CLil9B29.js} +283 -293
- package/dist/_chunks/editable-currency-cell-renderer-CLil9B29.js.map +1 -0
- package/dist/_chunks/entity-card-COhmqHly.js +69 -0
- package/dist/_chunks/entity-card-COhmqHly.js.map +1 -0
- package/dist/_chunks/{gestational-age-calculator-gWI_uRA1.js → gestational-age-calculator-Crj6FgZw.js} +2 -2
- package/dist/_chunks/{gestational-age-calculator-gWI_uRA1.js.map → gestational-age-calculator-Crj6FgZw.js.map} +1 -1
- package/dist/_chunks/{insert-result-C5ABnzDl.js → insert-result-DNdi_JYW.js} +140 -168
- package/dist/_chunks/insert-result-DNdi_JYW.js.map +1 -0
- package/dist/_chunks/is-safe-url-DkETxeHz.js +7 -0
- package/dist/_chunks/is-safe-url-DkETxeHz.js.map +1 -0
- package/dist/_chunks/languages-DsVf_WzT.js +19 -0
- package/dist/_chunks/languages-DsVf_WzT.js.map +1 -0
- package/dist/_chunks/layers-pzGcbLPj.js +34 -0
- package/dist/_chunks/layers-pzGcbLPj.js.map +1 -0
- package/dist/_chunks/{message-card-DSPw5ghw.js → message-card-Dvl1TgaN.js} +15 -19
- package/dist/_chunks/message-card-Dvl1TgaN.js.map +1 -0
- package/dist/_chunks/{message-tray-hSQff9u4.js → message-tray-Dl6GQaaV.js} +2 -2
- package/dist/_chunks/{message-tray-hSQff9u4.js.map → message-tray-Dl6GQaaV.js.map} +1 -1
- package/dist/_chunks/mic-B4Gog3Gi.js +16 -0
- package/dist/_chunks/mic-B4Gog3Gi.js.map +1 -0
- package/dist/_chunks/operator-hero-CM8949Hd.js +198 -0
- package/dist/_chunks/operator-hero-CM8949Hd.js.map +1 -0
- package/dist/_chunks/patient-summary-card-BnTqxcTr.js +443 -0
- package/dist/_chunks/patient-summary-card-BnTqxcTr.js.map +1 -0
- package/dist/_chunks/payment-request-card-B_lyobd0.js +478 -0
- package/dist/_chunks/payment-request-card-B_lyobd0.js.map +1 -0
- package/dist/_chunks/{pdf-viewer-CWEXTlwq.js → pdf-viewer-G8SU6Azw.js} +3 -3
- package/dist/_chunks/pdf-viewer-G8SU6Azw.js.map +1 -0
- package/dist/_chunks/pencil-CfQX-0Qc.js +21 -0
- package/dist/_chunks/pencil-CfQX-0Qc.js.map +1 -0
- package/dist/_chunks/periodontal-chart-card-BYs9hax1.js +455 -0
- package/dist/_chunks/periodontal-chart-card-BYs9hax1.js.map +1 -0
- package/dist/_chunks/phone-Bi5yUm4I.js +20 -0
- package/dist/_chunks/phone-Bi5yUm4I.js.map +1 -0
- package/dist/_chunks/{practice-results-DDi-kvaD.js → practice-results-BFL_mcDW.js} +3 -2
- package/dist/_chunks/{practice-results-DDi-kvaD.js.map → practice-results-BFL_mcDW.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-BtEHaSqy.js → pregnancy-weight-gain-C7dK89jE.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-BtEHaSqy.js.map → pregnancy-weight-gain-C7dK89jE.js.map} +1 -1
- package/dist/_chunks/scan-line-lGioFwLC.js +18 -0
- package/dist/_chunks/scan-line-lGioFwLC.js.map +1 -0
- package/dist/_chunks/shield-check-BjCGH_Sr.js +21 -0
- package/dist/_chunks/shield-check-BjCGH_Sr.js.map +1 -0
- package/dist/_chunks/{sign-document-BCyLpFHJ.js → sign-document-DPI2pY9V.js} +2 -2
- package/dist/_chunks/{sign-document-BCyLpFHJ.js.map → sign-document-DPI2pY9V.js.map} +1 -1
- package/dist/_chunks/{streaming-text-GH07yIYh.js → streaming-text-CfhDqtIT.js} +49 -45
- package/dist/_chunks/streaming-text-CfhDqtIT.js.map +1 -0
- package/dist/_chunks/{transaction-chip-B8ujzowA.js → transaction-chip-BZCa6XDn.js} +8 -6
- package/dist/_chunks/{transaction-chip-B8ujzowA.js.map → transaction-chip-BZCa6XDn.js.map} +1 -1
- package/dist/_chunks/{unit-converter-u3CwNDpP.js → unit-converter-jWp3Z85y.js} +2 -2
- package/dist/_chunks/{unit-converter-u3CwNDpP.js.map → unit-converter-jWp3Z85y.js.map} +1 -1
- package/dist/_chunks/user-cog-BS_qc8nA.js +24 -0
- package/dist/_chunks/user-cog-BS_qc8nA.js.map +1 -0
- package/dist/_chunks/video-BAeICxCT.js +21 -0
- package/dist/_chunks/video-BAeICxCT.js.map +1 -0
- package/dist/_chunks/{workflow-map-BFNpzTiw.js → workflow-map-ZXw-zsZ8.js} +186 -219
- package/dist/_chunks/workflow-map-ZXw-zsZ8.js.map +1 -0
- package/dist/agent-catalog.json +324 -1
- package/dist/components/_shared/code-block.d.ts +39 -0
- package/dist/components/_shared/code-block.d.ts.map +1 -0
- package/dist/components/_shared/entity-card/entity-card.d.ts +40 -0
- package/dist/components/_shared/entity-card/entity-card.d.ts.map +1 -0
- package/dist/components/_shared/entity-card/index.d.ts +3 -0
- package/dist/components/_shared/entity-card/index.d.ts.map +1 -0
- package/dist/components/_shared/index.d.ts +2 -0
- package/dist/components/_shared/index.d.ts.map +1 -1
- package/dist/components/_shared/is-safe-url.d.ts +13 -0
- package/dist/components/_shared/is-safe-url.d.ts.map +1 -0
- package/dist/components/agenda-card/agenda-card.d.ts +1 -2
- package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
- package/dist/components/agenda-card/index.d.ts +2 -1
- package/dist/components/agenda-card/index.d.ts.map +1 -1
- package/dist/components/agenda-card/index.js +6 -5
- package/dist/components/agenda-card/index.js.map +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-consent-banner/ai-consent-banner.agent.d.ts +4 -0
- package/dist/components/ai-consent-banner/ai-consent-banner.agent.d.ts.map +1 -0
- package/dist/components/ai-consent-banner/ai-consent-banner.d.ts +45 -0
- package/dist/components/ai-consent-banner/ai-consent-banner.d.ts.map +1 -0
- package/dist/components/ai-consent-banner/index.d.ts +4 -0
- package/dist/components/ai-consent-banner/index.d.ts.map +1 -0
- package/dist/components/ai-consent-banner/index.js +6 -0
- package/dist/components/ai-consent-banner/index.js.map +1 -0
- package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts +4 -0
- package/dist/components/ai-tools-rail/ai-tools-rail.agent.d.ts.map +1 -0
- package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +60 -0
- package/dist/components/ai-tools-rail/ai-tools-rail.d.ts.map +1 -0
- package/dist/components/ai-tools-rail/index.d.ts +4 -0
- package/dist/components/ai-tools-rail/index.d.ts.map +1 -0
- package/dist/components/ai-tools-rail/index.js +6 -0
- package/dist/components/ai-tools-rail/index.js.map +1 -0
- package/dist/components/anamnesis-card/anamnesis-card.d.ts +68 -0
- package/dist/components/anamnesis-card/anamnesis-card.d.ts.map +1 -0
- package/dist/components/anamnesis-card/index.d.ts +3 -0
- package/dist/components/anamnesis-card/index.d.ts.map +1 -0
- package/dist/components/anamnesis-card/index.js +5 -0
- package/dist/components/anamnesis-card/index.js.map +1 -0
- package/dist/components/appointment-card/appointment-card.agent.d.ts +3 -0
- package/dist/components/appointment-card/appointment-card.agent.d.ts.map +1 -0
- package/dist/components/appointment-card/appointment-card.d.ts +93 -0
- package/dist/components/appointment-card/appointment-card.d.ts.map +1 -0
- package/dist/components/appointment-card/appointment-tray.agent.d.ts +4 -0
- package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -0
- package/dist/components/appointment-card/appointment-tray.d.ts +48 -0
- package/dist/components/appointment-card/appointment-tray.d.ts.map +1 -0
- package/dist/components/appointment-card/index.d.ts +8 -0
- package/dist/components/appointment-card/index.d.ts.map +1 -0
- package/dist/components/appointment-card/index.js +10 -0
- package/dist/components/appointment-card/index.js.map +1 -0
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/badge/badge.d.ts +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/calculator-dialog/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/card/card.d.ts +1 -1
- package/dist/components/care-plan-card/care-plan-card.agent.d.ts +4 -0
- package/dist/components/care-plan-card/care-plan-card.agent.d.ts.map +1 -0
- package/dist/components/care-plan-card/care-plan-card.d.ts +102 -0
- package/dist/components/care-plan-card/care-plan-card.d.ts.map +1 -0
- package/dist/components/care-plan-card/index.d.ts +4 -0
- package/dist/components/care-plan-card/index.d.ts.map +1 -0
- package/dist/components/care-plan-card/index.js +6 -0
- package/dist/components/care-plan-card/index.js.map +1 -0
- package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts +4 -0
- package/dist/components/care-plan-entry-card/care-plan-entry-card.agent.d.ts.map +1 -0
- package/dist/components/care-plan-entry-card/care-plan-entry-card.d.ts +110 -0
- package/dist/components/care-plan-entry-card/care-plan-entry-card.d.ts.map +1 -0
- package/dist/components/care-plan-entry-card/index.d.ts +4 -0
- package/dist/components/care-plan-entry-card/index.d.ts.map +1 -0
- package/dist/components/care-plan-entry-card/index.js +6 -0
- package/dist/components/care-plan-entry-card/index.js.map +1 -0
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/chat-message.d.ts +13 -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/clinical-note-card/clinical-note-card.agent.d.ts +4 -0
- package/dist/components/clinical-note-card/clinical-note-card.agent.d.ts.map +1 -0
- package/dist/components/clinical-note-card/clinical-note-card.d.ts +98 -0
- package/dist/components/clinical-note-card/clinical-note-card.d.ts.map +1 -0
- package/dist/components/clinical-note-card/index.d.ts +4 -0
- package/dist/components/clinical-note-card/index.d.ts.map +1 -0
- package/dist/components/clinical-note-card/index.js +6 -0
- package/dist/components/clinical-note-card/index.js.map +1 -0
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/dialog/dialog.d.ts +7 -0
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/message-card/index.js +5 -4
- package/dist/components/message-card/index.js.map +1 -1
- package/dist/components/message-card/message-card.d.ts +1 -2
- package/dist/components/message-card/message-card.d.ts.map +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/operator-hero/operator-hero.agent.d.ts.map +1 -1
- package/dist/components/operator-hero/operator-hero.d.ts +9 -0
- package/dist/components/operator-hero/operator-hero.d.ts.map +1 -1
- package/dist/components/patient-summary-card/index.d.ts +4 -0
- package/dist/components/patient-summary-card/index.d.ts.map +1 -0
- package/dist/components/patient-summary-card/index.js +6 -0
- package/dist/components/patient-summary-card/index.js.map +1 -0
- package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts +4 -0
- package/dist/components/patient-summary-card/patient-summary-card.agent.d.ts.map +1 -0
- package/dist/components/patient-summary-card/patient-summary-card.d.ts +120 -0
- package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -0
- package/dist/components/payment-card/index.d.ts +7 -0
- package/dist/components/payment-card/index.d.ts.map +1 -0
- package/dist/components/payment-card/index.js +8 -0
- package/dist/components/payment-card/index.js.map +1 -0
- package/dist/components/payment-card/payment-card.agent.d.ts +4 -0
- package/dist/components/payment-card/payment-card.agent.d.ts.map +1 -0
- package/dist/components/payment-card/payment-card.d.ts +71 -0
- package/dist/components/payment-card/payment-card.d.ts.map +1 -0
- package/dist/components/payment-card/payment-request-card.agent.d.ts +4 -0
- package/dist/components/payment-card/payment-request-card.agent.d.ts.map +1 -0
- package/dist/components/payment-card/payment-request-card.d.ts +43 -0
- package/dist/components/payment-card/payment-request-card.d.ts.map +1 -0
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/components/periodontal-chart-card/index.d.ts +4 -0
- package/dist/components/periodontal-chart-card/index.d.ts.map +1 -0
- package/dist/components/periodontal-chart-card/index.js +7 -0
- package/dist/components/periodontal-chart-card/index.js.map +1 -0
- package/dist/components/periodontal-chart-card/periodontal-chart-card.agent.d.ts +4 -0
- package/dist/components/periodontal-chart-card/periodontal-chart-card.agent.d.ts.map +1 -0
- package/dist/components/periodontal-chart-card/periodontal-chart-card.d.ts +74 -0
- package/dist/components/periodontal-chart-card/periodontal-chart-card.d.ts.map +1 -0
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/public-header/public-header.d.ts +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/stat/stat.d.ts +1 -1
- package/dist/components/streaming-text/index.js +1 -1
- package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
- package/dist/components/transaction-chip/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/i18n/locales/ar.d.ts +366 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +367 -1
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +366 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +367 -1
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +366 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +367 -1
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +366 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +367 -1
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +366 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +367 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +366 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +367 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +366 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +367 -1
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +366 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +367 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +366 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +367 -1
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +366 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +367 -1
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +366 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +367 -1
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +366 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +367 -1
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +366 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +367 -1
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +366 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +367 -1
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +366 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +367 -1
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +366 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +367 -1
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +366 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +367 -1
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +366 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +367 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +527 -491
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +367 -1
- package/dist/locales/de.json +367 -1
- package/dist/locales/el.json +367 -1
- package/dist/locales/en.json +367 -1
- package/dist/locales/es.json +367 -1
- package/dist/locales/fr.json +367 -1
- package/dist/locales/hi.json +367 -1
- package/dist/locales/it.json +367 -1
- package/dist/locales/ja.json +367 -1
- package/dist/locales/nl.json +367 -1
- package/dist/locales/pl.json +367 -1
- package/dist/locales/pt.json +367 -1
- package/dist/locales/ro.json +367 -1
- package/dist/locales/ru.json +367 -1
- package/dist/locales/sq.json +367 -1
- package/dist/locales/sv.json +367 -1
- package/dist/locales/tr.json +367 -1
- package/dist/locales/zh.json +367 -1
- package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/alia-types.d.ts +76 -0
- package/dist/patterns/alia-assistant/alia-types.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +42 -1
- package/dist/_chunks/agenda-card-CFyWSX7Z.js.map +0 -1
- package/dist/_chunks/agenda-tray-Dyj9ChHC.js.map +0 -1
- package/dist/_chunks/alia-sidebar-Be8FhKYd.js +0 -837
- package/dist/_chunks/alia-sidebar-Be8FhKYd.js.map +0 -1
- package/dist/_chunks/audio-recorder-C1rhKhSN.js.map +0 -1
- package/dist/_chunks/booking-DlDVuWMd.js.map +0 -1
- package/dist/_chunks/calendar-YHFknAGv.js.map +0 -1
- package/dist/_chunks/chat-message-ASgGtj-L.js.map +0 -1
- package/dist/_chunks/contact-profile-card-DHyuAPXM.js.map +0 -1
- package/dist/_chunks/dialog-BTpZV6It.js.map +0 -1
- package/dist/_chunks/editable-currency-cell-renderer-BEBUQl9P.js.map +0 -1
- package/dist/_chunks/insert-result-C5ABnzDl.js.map +0 -1
- package/dist/_chunks/message-card-DSPw5ghw.js.map +0 -1
- package/dist/_chunks/operator-hero-7LiiP7zi.js +0 -171
- package/dist/_chunks/operator-hero-7LiiP7zi.js.map +0 -1
- package/dist/_chunks/pdf-viewer-CWEXTlwq.js.map +0 -1
- package/dist/_chunks/shield-check-C73ma9Cs.js +0 -36
- package/dist/_chunks/shield-check-C73ma9Cs.js.map +0 -1
- package/dist/_chunks/streaming-text-GH07yIYh.js.map +0 -1
- package/dist/_chunks/workflow-map-BFNpzTiw.js.map +0 -1
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { jsxs as d, jsx as a } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import { c as
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { B as
|
|
6
|
-
import { A } from "./avatar-BNQNhoyL.js";
|
|
7
|
-
import { T as
|
|
8
|
-
import { s as
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { C as
|
|
12
|
-
import { C as
|
|
13
|
-
|
|
2
|
+
import { forwardRef as T, useMemo as z, Fragment as l } from "react";
|
|
3
|
+
import { c as h } from "./index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as B } from "react-i18next";
|
|
5
|
+
import { B as F } from "./button-DD_0Xdmr.js";
|
|
6
|
+
import { A as I } from "./avatar-BNQNhoyL.js";
|
|
7
|
+
import { T as A } from "./timestamp-BV2lC-wV.js";
|
|
8
|
+
import { s as M, C as S } from "./code-block-HoddNOKJ.js";
|
|
9
|
+
import { s as V } from "./safe-image-src-DstKgCo7.js";
|
|
10
|
+
import { R as D } from "./rotate-ccw-BWANpitO.js";
|
|
11
|
+
import { C as E } from "./clock-21AGPWJ5.js";
|
|
12
|
+
import { C as L } from "./check-DPdL_Sm7.js";
|
|
13
|
+
import { C as R } from "./circle-alert-ChA9opNA.js";
|
|
14
|
+
const _ = h(
|
|
14
15
|
"ds:flex ds:w-full ds:items-start ds:gap-[var(--spacing-sm)]",
|
|
15
16
|
{
|
|
16
17
|
variants: {
|
|
@@ -22,7 +23,7 @@ const D = v(
|
|
|
22
23
|
},
|
|
23
24
|
defaultVariants: { role: "assistant" }
|
|
24
25
|
}
|
|
25
|
-
),
|
|
26
|
+
), $ = h(
|
|
26
27
|
[
|
|
27
28
|
// Cap at 42rem on wide surfaces; on narrow docks (Alia sidebar ≈22rem)
|
|
28
29
|
// leave room for the avatar column (size-8 = 32px = --spacing-xl) +
|
|
@@ -44,31 +45,31 @@ const D = v(
|
|
|
44
45
|
},
|
|
45
46
|
defaultVariants: { role: "assistant" }
|
|
46
47
|
}
|
|
47
|
-
),
|
|
48
|
-
function
|
|
48
|
+
), k = /^(https?:|mailto:)/i;
|
|
49
|
+
function H(n) {
|
|
49
50
|
const e = [];
|
|
50
|
-
let
|
|
51
|
-
const
|
|
52
|
-
for (;
|
|
53
|
-
const
|
|
54
|
-
if (!
|
|
55
|
-
e.push({ type: "text", value:
|
|
51
|
+
let s = n;
|
|
52
|
+
const t = /\*\*([^*]+)\*\*|`([^`]+)`|\[([^\]]+)\]\(([^)]+)\)|\n/;
|
|
53
|
+
for (; s.length > 0; ) {
|
|
54
|
+
const r = t.exec(s);
|
|
55
|
+
if (!r) {
|
|
56
|
+
e.push({ type: "text", value: s });
|
|
56
57
|
break;
|
|
57
58
|
}
|
|
58
|
-
|
|
59
|
+
r.index > 0 && e.push({ type: "text", value: s.slice(0, r.index) }), r[1] !== void 0 ? e.push({ type: "bold", value: r[1] }) : r[2] !== void 0 ? e.push({ type: "code", value: r[2] }) : r[3] !== void 0 && r[4] !== void 0 ? e.push({ type: "link", label: r[3], href: r[4] }) : e.push({ type: "br" }), s = s.slice(r.index + r[0].length);
|
|
59
60
|
}
|
|
60
61
|
return e;
|
|
61
62
|
}
|
|
62
|
-
function
|
|
63
|
-
return
|
|
63
|
+
function q(n) {
|
|
64
|
+
return H(n).map((e, s) => e.type === "bold" ? /* @__PURE__ */ a("strong", { children: e.value }, s) : e.type === "code" ? /* @__PURE__ */ a(
|
|
64
65
|
"code",
|
|
65
66
|
{
|
|
66
67
|
dir: "ltr",
|
|
67
68
|
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)]",
|
|
68
69
|
children: e.value
|
|
69
70
|
},
|
|
70
|
-
|
|
71
|
-
) : e.type === "br" ? /* @__PURE__ */ a("br", {},
|
|
71
|
+
s
|
|
72
|
+
) : e.type === "br" ? /* @__PURE__ */ a("br", {}, s) : e.type === "link" ? k.test(e.href) ? /* @__PURE__ */ a(
|
|
72
73
|
"a",
|
|
73
74
|
{
|
|
74
75
|
href: e.href,
|
|
@@ -77,63 +78,68 @@ function _(t) {
|
|
|
77
78
|
className: "ds:underline ds:underline-offset-2 ds:hover:opacity-80",
|
|
78
79
|
children: e.label
|
|
79
80
|
},
|
|
80
|
-
|
|
81
|
-
) : /* @__PURE__ */ a(
|
|
81
|
+
s
|
|
82
|
+
) : /* @__PURE__ */ a(l, { children: e.label }, s) : /* @__PURE__ */ a(l, { children: e.value }, s));
|
|
82
83
|
}
|
|
83
|
-
|
|
84
|
+
function G(n) {
|
|
85
|
+
return M(n).map((e, s) => e.type === "code" ? /* @__PURE__ */ a(S, { code: e.value, language: e.lang }, s) : /* @__PURE__ */ a(l, { children: q(e.value) }, s));
|
|
86
|
+
}
|
|
87
|
+
const J = T(
|
|
84
88
|
({
|
|
85
|
-
role:
|
|
89
|
+
role: n,
|
|
86
90
|
content: e,
|
|
87
|
-
avatar:
|
|
88
|
-
timestamp:
|
|
89
|
-
status:
|
|
90
|
-
renderMarkdown:
|
|
91
|
-
onRetry:
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
91
|
+
avatar: s,
|
|
92
|
+
timestamp: t,
|
|
93
|
+
status: r,
|
|
94
|
+
renderMarkdown: x = !1,
|
|
95
|
+
onRetry: m,
|
|
96
|
+
actions: c,
|
|
97
|
+
body: b,
|
|
98
|
+
className: y,
|
|
99
|
+
...N
|
|
100
|
+
}, w) => {
|
|
101
|
+
const { t: i, i18n: u } = B(), o = z(() => {
|
|
102
|
+
if (!t) return null;
|
|
103
|
+
const v = t instanceof Date ? t : new Date(t);
|
|
104
|
+
return Number.isNaN(v.getTime()) ? null : new Intl.DateTimeFormat(u.language, {
|
|
99
105
|
hour: "2-digit",
|
|
100
106
|
minute: "2-digit"
|
|
101
|
-
}).format(
|
|
102
|
-
}, [
|
|
103
|
-
|
|
107
|
+
}).format(v);
|
|
108
|
+
}, [t, u.language]), f = i(`chat.message.role.${n}`), C = o ? i("chat.message.label", { role: f, time: o }) : i("chat.message.labelNoTime", { role: f }), j = b ?? (x ? G(e) : e), p = !r || r === "edited" ? null : r === "sending" ? /* @__PURE__ */ a(E, { "aria-hidden": "true", className: "ds:size-3.5" }) : r === "sent" ? /* @__PURE__ */ a(L, { "aria-hidden": "true", className: "ds:size-3.5" }) : /* @__PURE__ */ a(
|
|
109
|
+
R,
|
|
104
110
|
{
|
|
105
111
|
"aria-hidden": "true",
|
|
106
112
|
className: "ds:size-3.5 ds:text-[color:var(--destructive)]"
|
|
107
113
|
}
|
|
108
|
-
),
|
|
114
|
+
), g = r ? i(`chat.message.status.${r}`) : null;
|
|
109
115
|
return /* @__PURE__ */ d(
|
|
110
116
|
"article",
|
|
111
117
|
{
|
|
112
|
-
ref:
|
|
113
|
-
"aria-label":
|
|
118
|
+
ref: w,
|
|
119
|
+
"aria-label": C,
|
|
114
120
|
"data-component": "chat-message",
|
|
115
121
|
className: [
|
|
116
|
-
|
|
122
|
+
_({ role: n, className: y }),
|
|
117
123
|
// Entrance: fade + slide up on mount. `--animation-duration` is 0ms
|
|
118
124
|
// under `prefers-reduced-motion` and `.theme-accessible`, so both
|
|
119
125
|
// collapse the animation to an instant state change automatically.
|
|
120
126
|
"ds:motion-safe:animate-in ds:motion-safe:fade-in-0 ds:motion-safe:slide-in-from-bottom-2",
|
|
121
127
|
"ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]"
|
|
122
128
|
].join(" "),
|
|
123
|
-
...
|
|
129
|
+
...N,
|
|
124
130
|
children: [
|
|
125
|
-
|
|
131
|
+
n !== "system" && s ? s.slot ? (
|
|
126
132
|
// Consumer-supplied avatar node (e.g. Alia's Sparkles tile).
|
|
127
|
-
|
|
133
|
+
s.slot
|
|
128
134
|
) : (
|
|
129
135
|
// Allow-list the src: LLM-supplied values can carry
|
|
130
136
|
// `javascript:` / `data:text/html` / `data:image/svg+xml` and so
|
|
131
137
|
// are scrubbed here before reaching <Avatar>. Fallback to initials.
|
|
132
138
|
/* @__PURE__ */ a(
|
|
133
|
-
|
|
139
|
+
I,
|
|
134
140
|
{
|
|
135
|
-
name:
|
|
136
|
-
src:
|
|
141
|
+
name: s.name,
|
|
142
|
+
src: V(s.src),
|
|
137
143
|
size: "sm"
|
|
138
144
|
}
|
|
139
145
|
)
|
|
@@ -147,7 +153,7 @@ const $ = C(
|
|
|
147
153
|
// CJK run, hash) can force the bubble wider than the parent
|
|
148
154
|
// and spill outside narrow containers like the Alia sidebar.
|
|
149
155
|
"ds:flex ds:flex-col ds:min-w-0",
|
|
150
|
-
|
|
156
|
+
n === "user" ? "ds:items-end" : n === "assistant" ? "ds:items-start" : "ds:items-center"
|
|
151
157
|
].join(" "),
|
|
152
158
|
children: [
|
|
153
159
|
/* @__PURE__ */ a(
|
|
@@ -155,17 +161,17 @@ const $ = C(
|
|
|
155
161
|
{
|
|
156
162
|
dir: "auto",
|
|
157
163
|
className: [
|
|
158
|
-
|
|
164
|
+
$({ role: n }),
|
|
159
165
|
// `break-words` (from bubbleVariants) handles soft hyphens;
|
|
160
166
|
// `overflow-wrap: anywhere` is the last-resort break for
|
|
161
167
|
// URLs, hashes, or CJK runs that would otherwise push the
|
|
162
168
|
// bubble wider than its parent in narrow docks like Alia.
|
|
163
169
|
"ds:[overflow-wrap:anywhere]"
|
|
164
170
|
].join(" "),
|
|
165
|
-
children:
|
|
171
|
+
children: j
|
|
166
172
|
}
|
|
167
173
|
),
|
|
168
|
-
(o ||
|
|
174
|
+
(o || g) && n !== "system" ? /* @__PURE__ */ d(
|
|
169
175
|
"div",
|
|
170
176
|
{
|
|
171
177
|
className: [
|
|
@@ -173,16 +179,16 @@ const $ = C(
|
|
|
173
179
|
"type-meta ds:text-[color:var(--muted-foreground)]"
|
|
174
180
|
].join(" "),
|
|
175
181
|
children: [
|
|
176
|
-
|
|
177
|
-
|
|
182
|
+
t ? /* @__PURE__ */ a(
|
|
183
|
+
A,
|
|
178
184
|
{
|
|
179
|
-
value:
|
|
185
|
+
value: t,
|
|
180
186
|
format: "absolute",
|
|
181
187
|
absoluteFormat: { hour: "2-digit", minute: "2-digit" },
|
|
182
188
|
dir: "ltr"
|
|
183
189
|
}
|
|
184
190
|
) : null,
|
|
185
|
-
|
|
191
|
+
p ? (
|
|
186
192
|
// `key={status}` re-mounts the span on every status change so
|
|
187
193
|
// `animate-in` re-runs — gives the sending → sent → error
|
|
188
194
|
// swap a subtle cross-fade instead of an abrupt pop.
|
|
@@ -195,26 +201,27 @@ const $ = C(
|
|
|
195
201
|
"ds:duration-[var(--animation-duration)] ds:ease-[var(--ease-out)]"
|
|
196
202
|
].join(" "),
|
|
197
203
|
children: [
|
|
198
|
-
|
|
199
|
-
/* @__PURE__ */ a("span", { className: "ds:sr-only", children:
|
|
204
|
+
p,
|
|
205
|
+
/* @__PURE__ */ a("span", { className: "ds:sr-only", children: g })
|
|
200
206
|
]
|
|
201
207
|
},
|
|
202
|
-
|
|
208
|
+
r
|
|
203
209
|
)
|
|
204
210
|
) : null,
|
|
205
|
-
|
|
206
|
-
|
|
211
|
+
r === "error" && m ? /* @__PURE__ */ a(
|
|
212
|
+
F,
|
|
207
213
|
{
|
|
208
214
|
intent: "ghost",
|
|
209
215
|
size: "sm",
|
|
210
|
-
onClick:
|
|
211
|
-
startIcon: /* @__PURE__ */ a(
|
|
216
|
+
onClick: m,
|
|
217
|
+
startIcon: /* @__PURE__ */ a(D, {}),
|
|
212
218
|
children: i("chat.message.retry")
|
|
213
219
|
}
|
|
214
220
|
) : null
|
|
215
221
|
]
|
|
216
222
|
}
|
|
217
|
-
) : null
|
|
223
|
+
) : null,
|
|
224
|
+
c ? /* @__PURE__ */ a("div", { className: "ds:mt-[var(--spacing-xs)] ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: c }) : null
|
|
218
225
|
]
|
|
219
226
|
}
|
|
220
227
|
)
|
|
@@ -223,8 +230,8 @@ const $ = C(
|
|
|
223
230
|
);
|
|
224
231
|
}
|
|
225
232
|
);
|
|
226
|
-
|
|
233
|
+
J.displayName = "ChatMessage";
|
|
227
234
|
export {
|
|
228
|
-
|
|
235
|
+
J as C
|
|
229
236
|
};
|
|
230
|
-
//# sourceMappingURL=chat-message-
|
|
237
|
+
//# sourceMappingURL=chat-message-Dm8U2RY1.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat-message-Dm8U2RY1.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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"}
|
|
@@ -0,0 +1,333 @@
|
|
|
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-zsf5i5bH.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-nPAVE19X.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-BYo437dU.js.map
|