@alfadocs/ui-kit-debug 1.4.13 → 1.4.15
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-D-8akw2m.js → address-fields-CZP4Wncx.js} +2 -2
- package/dist/_chunks/{address-fields-D-8akw2m.js.map → address-fields-CZP4Wncx.js.map} +1 -1
- package/dist/_chunks/{agenda-card-BQDs2ZMp.js → agenda-card-pdN49pMu.js} +2 -2
- package/dist/_chunks/{agenda-card-BQDs2ZMp.js.map → agenda-card-pdN49pMu.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-BTyWsVwT.js → agenda-tray-CYR-znfE.js} +2 -2
- package/dist/_chunks/{agenda-tray-BTyWsVwT.js.map → agenda-tray-CYR-znfE.js.map} +1 -1
- package/dist/_chunks/{ai-consent-banner-gVcoiXxv.js → ai-consent-banner-DLF6FNXv.js} +2 -2
- package/dist/_chunks/{ai-consent-banner-gVcoiXxv.js.map → ai-consent-banner-DLF6FNXv.js.map} +1 -1
- package/dist/_chunks/{anamnesis-card-Bt0twrML.js → anamnesis-card-BylMLHYj.js} +2 -2
- package/dist/_chunks/{anamnesis-card-Bt0twrML.js.map → anamnesis-card-BylMLHYj.js.map} +1 -1
- package/dist/_chunks/{anamnesis-summary-card-BKGVcwny.js → anamnesis-summary-card-DGVKBQoq.js} +134 -116
- package/dist/_chunks/anamnesis-summary-card-DGVKBQoq.js.map +1 -0
- package/dist/_chunks/{anamnesis-summary-rows-B5MAYkJ-.js → anamnesis-summary-rows-ESkjwenu.js} +2438 -2353
- package/dist/_chunks/anamnesis-summary-rows-ESkjwenu.js.map +1 -0
- package/dist/_chunks/{antenatal-schedule-timeline-BSLrOQ3S.js → antenatal-schedule-timeline-BjlF2rTz.js} +2 -2
- package/dist/_chunks/{antenatal-schedule-timeline-BSLrOQ3S.js.map → antenatal-schedule-timeline-BjlF2rTz.js.map} +1 -1
- package/dist/_chunks/{appointment-card-kcUC7vWR.js → appointment-card-BhcPJpXh.js} +2 -2
- package/dist/_chunks/{appointment-card-kcUC7vWR.js.map → appointment-card-BhcPJpXh.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-BC3dlZu5.js → appointment-timeline-DT1uFp8z.js} +2 -2
- package/dist/_chunks/{appointment-timeline-BC3dlZu5.js.map → appointment-timeline-DT1uFp8z.js.map} +1 -1
- package/dist/_chunks/{appointment-tray-BPY5rATW.js → appointment-tray-DvyVK7um.js} +2 -2
- package/dist/_chunks/{appointment-tray-BPY5rATW.js.map → appointment-tray-DvyVK7um.js.map} +1 -1
- package/dist/_chunks/{badge-CIt-UFEx.js → badge-sTusUqZD.js} +23 -18
- package/dist/_chunks/{badge-CIt-UFEx.js.map → badge-sTusUqZD.js.map} +1 -1
- package/dist/_chunks/{bishop-score-B6iYYO0c.js → bishop-score-BV1JAEMV.js} +3 -3
- package/dist/_chunks/{bishop-score-B6iYYO0c.js.map → bishop-score-BV1JAEMV.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-DC5SaqXT.js → bmi-calculator-CdR-RLFj.js} +5 -5
- package/dist/_chunks/{bmi-calculator-DC5SaqXT.js.map → bmi-calculator-CdR-RLFj.js.map} +1 -1
- package/dist/_chunks/{booking-CmHX15dh.js → booking-CGKof8QU.js} +2 -2
- package/dist/_chunks/{booking-CmHX15dh.js.map → booking-CGKof8QU.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-9tLgsDYY.js → care-plan-card-C83Hb9EE.js} +3 -3
- package/dist/_chunks/{care-plan-card-9tLgsDYY.js.map → care-plan-card-C83Hb9EE.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-CSan4h7A.js → care-plan-entry-card-CHMPSTCz.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-CSan4h7A.js.map → care-plan-entry-card-CHMPSTCz.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-D_BTi77b.js → care-plan-header-_B0TTWT1.js} +2 -2
- package/dist/_chunks/{care-plan-header-D_BTi77b.js.map → care-plan-header-_B0TTWT1.js.map} +1 -1
- package/dist/_chunks/{clinical-note-card-ByzQ86uz.js → clinical-note-card-BBgFd2nB.js} +2 -2
- package/dist/_chunks/{clinical-note-card-ByzQ86uz.js.map → clinical-note-card-BBgFd2nB.js.map} +1 -1
- package/dist/_chunks/{connection-status-D8mZ4klk.js → connection-status-NT8hUtYl.js} +2 -2
- package/dist/_chunks/{connection-status-D8mZ4klk.js.map → connection-status-NT8hUtYl.js.map} +1 -1
- package/dist/_chunks/{contact-profile-card-DuW6VpzY.js → contact-profile-card-BxHiG8e6.js} +2 -2
- package/dist/_chunks/{contact-profile-card-DuW6VpzY.js.map → contact-profile-card-BxHiG8e6.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-B_NlctlQ.js → cycle-calculator-DJZYvNhw.js} +4 -4
- package/dist/_chunks/{cycle-calculator-B_NlctlQ.js.map → cycle-calculator-DJZYvNhw.js.map} +1 -1
- package/dist/_chunks/{dependent-selector-BUvrZRi0.js → dependent-selector-cJlJFAKD.js} +2 -2
- package/dist/_chunks/{dependent-selector-BUvrZRi0.js.map → dependent-selector-cJlJFAKD.js.map} +1 -1
- package/dist/_chunks/{document-preview-Di15VrpQ.js → document-preview-Aae2yKvY.js} +2 -2
- package/dist/_chunks/{document-preview-Di15VrpQ.js.map → document-preview-Aae2yKvY.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-le1z3KpW.js → due-date-calculator-ajaQ4ya5.js} +6 -6
- package/dist/_chunks/{due-date-calculator-le1z3KpW.js.map → due-date-calculator-ajaQ4ya5.js.map} +1 -1
- package/dist/_chunks/{fetal-weight-DXA6ZpMq.js → fetal-weight-jon6GIfQ.js} +4 -4
- package/dist/_chunks/{fetal-weight-DXA6ZpMq.js.map → fetal-weight-jon6GIfQ.js.map} +1 -1
- package/dist/_chunks/{field-value-BCFLVBmu.js → field-value-BbiDRyNh.js} +2 -2
- package/dist/_chunks/{field-value-BCFLVBmu.js.map → field-value-BbiDRyNh.js.map} +1 -1
- package/dist/_chunks/{file-manager-BjCM2fZB.js → file-manager-CML_C6_h.js} +2 -2
- package/dist/_chunks/{file-manager-BjCM2fZB.js.map → file-manager-CML_C6_h.js.map} +1 -1
- package/dist/_chunks/form-field-CahJzTxp.js +131 -0
- package/dist/_chunks/form-field-CahJzTxp.js.map +1 -0
- package/dist/_chunks/{gestational-age-calculator-Ch8vmJAl.js → gestational-age-calculator-dEpQDWcb.js} +5 -5
- package/dist/_chunks/{gestational-age-calculator-Ch8vmJAl.js.map → gestational-age-calculator-dEpQDWcb.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-BT6lki_i.js → hcg-doubling-CC6TLtHd.js} +4 -4
- package/dist/_chunks/{hcg-doubling-BT6lki_i.js.map → hcg-doubling-CC6TLtHd.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-C7GvyK66.js → link-cell-renderer-D3IsW_2R.js} +3 -3
- package/dist/_chunks/{link-cell-renderer-C7GvyK66.js.map → link-cell-renderer-D3IsW_2R.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-BhRH7Zi4.js → marketplace-app-shell-b5hN-Q0m.js} +2 -2
- package/dist/_chunks/{marketplace-app-shell-BhRH7Zi4.js.map → marketplace-app-shell-b5hN-Q0m.js.map} +1 -1
- package/dist/_chunks/{notes-panel-Bz83SO4-.js → notes-panel-D6HKLLS-.js} +2 -2
- package/dist/_chunks/{notes-panel-Bz83SO4-.js.map → notes-panel-D6HKLLS-.js.map} +1 -1
- package/dist/_chunks/{number-input-CM1q9zvH.js → number-input-Cgu2TtA8.js} +30 -21
- package/dist/_chunks/number-input-Cgu2TtA8.js.map +1 -0
- package/dist/_chunks/{operator-hero-CpJkDNAM.js → operator-hero-CCDnIa1S.js} +2 -2
- package/dist/_chunks/{operator-hero-CpJkDNAM.js.map → operator-hero-CCDnIa1S.js.map} +1 -1
- package/dist/_chunks/{optical-prescription-CQR_WJiS.js → optical-prescription-DtzEqFQm.js} +2 -2
- package/dist/_chunks/{optical-prescription-CQR_WJiS.js.map → optical-prescription-DtzEqFQm.js.map} +1 -1
- package/dist/_chunks/{patient-details-CnFgF3MU.js → patient-details-rENrE_qY.js} +3 -3
- package/dist/_chunks/{patient-details-CnFgF3MU.js.map → patient-details-rENrE_qY.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-DfbOtOV6.js → patient-summary-card-DQJgOOrA.js} +3 -3
- package/dist/_chunks/{patient-summary-card-DfbOtOV6.js.map → patient-summary-card-DQJgOOrA.js.map} +1 -1
- package/dist/_chunks/{patient-table-BXzcrC79.js → patient-table-BubxfOWL.js} +3 -3
- package/dist/_chunks/{patient-table-BXzcrC79.js.map → patient-table-BubxfOWL.js.map} +1 -1
- package/dist/_chunks/{payment-automation-upsell-Ckh3b7Xx.js → payment-automation-upsell-CnaBPt5e.js} +2 -2
- package/dist/_chunks/{payment-automation-upsell-Ckh3b7Xx.js.map → payment-automation-upsell-CnaBPt5e.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-Dn6-tH-D.js → payment-request-card-CvhDzDNk.js} +2 -2
- package/dist/_chunks/{payment-request-card-Dn6-tH-D.js.map → payment-request-card-CvhDzDNk.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-B0yko9Xm.js → periodontal-chart-brakjj0s.js} +2 -2
- package/dist/_chunks/{periodontal-chart-B0yko9Xm.js.map → periodontal-chart-brakjj0s.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-card-HbYTmWlo.js → periodontal-chart-card-Bz-ebteE.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-HbYTmWlo.js.map → periodontal-chart-card-Bz-ebteE.js.map} +1 -1
- package/dist/_chunks/{periodontal-diagnosis-Qk4F3Wc_.js → periodontal-diagnosis-HrFsVi-C.js} +3 -3
- package/dist/_chunks/{periodontal-diagnosis-Qk4F3Wc_.js.map → periodontal-diagnosis-HrFsVi-C.js.map} +1 -1
- package/dist/_chunks/{periodontal-risk-chart-ByKuM4cF.js → periodontal-risk-chart-0x7KVZjL.js} +2 -2
- package/dist/_chunks/{periodontal-risk-chart-ByKuM4cF.js.map → periodontal-risk-chart-0x7KVZjL.js.map} +1 -1
- package/dist/_chunks/{practice-results-C5exrEn0.js → practice-results-DWUZRm2x.js} +2 -2
- package/dist/_chunks/{practice-results-C5exrEn0.js.map → practice-results-DWUZRm2x.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-4tPV_Yko.js → pregnancy-dating-DQVpFs_f.js} +6 -6
- package/dist/_chunks/{pregnancy-dating-4tPV_Yko.js.map → pregnancy-dating-DQVpFs_f.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-BBgbWBGe.js → pregnancy-weight-gain-hm3QJALe.js} +5 -5
- package/dist/_chunks/{pregnancy-weight-gain-BBgbWBGe.js.map → pregnancy-weight-gain-hm3QJALe.js.map} +1 -1
- package/dist/_chunks/radio-group-rXDJADzW.js +175 -0
- package/dist/_chunks/radio-group-rXDJADzW.js.map +1 -0
- package/dist/_chunks/{radiograph-panel.agent-Drj0hYVV.js → radiograph-panel.agent-CAXFgCyn.js} +3 -3
- package/dist/_chunks/{radiograph-panel.agent-Drj0hYVV.js.map → radiograph-panel.agent-CAXFgCyn.js.map} +1 -1
- package/dist/_chunks/{signature-status-chip-DlLJk1VA.js → signature-status-chip-DqrPIJtH.js} +2 -2
- package/dist/_chunks/{signature-status-chip-DlLJk1VA.js.map → signature-status-chip-DqrPIJtH.js.map} +1 -1
- package/dist/_chunks/{tab-bar-Ddp_ZbnL.js → tab-bar-DvFJIQfL.js} +2 -2
- package/dist/_chunks/{tab-bar-Ddp_ZbnL.js.map → tab-bar-DvFJIQfL.js.map} +1 -1
- package/dist/_chunks/{tasks-panel-T7vaKJcA.js → tasks-panel-BBkZuejF.js} +2 -2
- package/dist/_chunks/{tasks-panel-T7vaKJcA.js.map → tasks-panel-BBkZuejF.js.map} +1 -1
- package/dist/_chunks/{unit-converter-Dsk__pjA.js → unit-converter-iDxlxKmm.js} +3 -3
- package/dist/_chunks/{unit-converter-Dsk__pjA.js.map → unit-converter-iDxlxKmm.js.map} +1 -1
- package/dist/_chunks/{widget-picker-DqMbjQy_.js → widget-picker-em4xGgv0.js} +2 -2
- package/dist/_chunks/{widget-picker-DqMbjQy_.js.map → widget-picker-em4xGgv0.js.map} +1 -1
- package/dist/_chunks/{workflow-map-BNBeG2zn.js → workflow-map-BVofnDYh.js} +2 -2
- package/dist/_chunks/{workflow-map-BNBeG2zn.js.map → workflow-map-BVofnDYh.js.map} +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/address-fields/index.js +1 -1
- 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/anamnesis-card/index.js +1 -1
- package/dist/components/anamnesis-summary-card/anamnesis-summary-card.d.ts +2 -2
- package/dist/components/anamnesis-summary-card/anamnesis-summary-card.d.ts.map +1 -1
- package/dist/components/anamnesis-summary-card/index.js +1 -1
- package/dist/components/appointment-card/index.js +2 -2
- package/dist/components/appointment-timeline/index.js +1 -1
- 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/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/care-plan-header/index.js +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/connection-status/index.js +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/index.js +1 -1
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/form-field/form-field.d.ts +8 -0
- package/dist/components/form-field/form-field.d.ts.map +1 -1
- package/dist/components/form-field/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/notes-panel/index.js +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/number-input/number-input.d.ts +5 -2
- package/dist/components/number-input/number-input.d.ts.map +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/optical-prescription/index.js +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-table/index.js +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/periodontal-chart/index.js +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/periodontal-diagnosis/index.js +1 -1
- package/dist/components/periodontal-risk-chart/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/radio-group/index.js +1 -1
- package/dist/components/radio-group/radio-group.d.ts +5 -0
- package/dist/components/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/signature-status-chip/index.js +1 -1
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/widget-picker/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/host-compat.css +4 -1
- package/dist/index.js +56 -56
- package/dist/patterns/anamnesis/anamnesis-evolution.d.ts +7 -1
- package/dist/patterns/anamnesis/anamnesis-evolution.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-field.d.ts +9 -1
- package/dist/patterns/anamnesis/anamnesis-field.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-i18n.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-indicators.d.ts +3 -1
- package/dist/patterns/anamnesis/anamnesis-indicators.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-intake.d.ts +3 -2
- package/dist/patterns/anamnesis/anamnesis-intake.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-types.d.ts +3 -0
- package/dist/patterns/anamnesis/anamnesis-types.d.ts.map +1 -1
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/payment-automation-upsell/index.js +1 -1
- package/dist/tokens.css +3 -3
- package/package.json +1 -1
- package/dist/_chunks/anamnesis-summary-card-BKGVcwny.js.map +0 -1
- package/dist/_chunks/anamnesis-summary-rows-B5MAYkJ-.js.map +0 -1
- package/dist/_chunks/form-field-D1oqYisL.js +0 -127
- package/dist/_chunks/form-field-D1oqYisL.js.map +0 -1
- package/dist/_chunks/number-input-CM1q9zvH.js.map +0 -1
- package/dist/_chunks/radio-group-BmIqhIT2.js +0 -171
- package/dist/_chunks/radio-group-BmIqhIT2.js.map +0 -1
package/dist/_chunks/{anamnesis-summary-card-BKGVcwny.js → anamnesis-summary-card-DGVKBQoq.js}
RENAMED
|
@@ -1,14 +1,14 @@
|
|
|
1
|
-
import { jsxs as
|
|
2
|
-
import { forwardRef as
|
|
1
|
+
import { jsxs as i, jsx as a, Fragment as te } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as re, useId as de, useMemo as E, useImperativeHandle as ne } from "react";
|
|
3
3
|
import { c as h } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
import { B as
|
|
6
|
-
import { C as
|
|
7
|
-
import { S as
|
|
8
|
-
import { a as
|
|
9
|
-
import { u as
|
|
4
|
+
import { useTranslation as ie } from "react-i18next";
|
|
5
|
+
import { B as H } from "./badge-sTusUqZD.js";
|
|
6
|
+
import { C as oe } from "./card-DPmk26CL.js";
|
|
7
|
+
import { S as k } from "./skeleton-CZbwyJAA.js";
|
|
8
|
+
import { a as le, T as ce } from "./tooltip-DvmfrNvB.js";
|
|
9
|
+
import { u as me } from "./registry-DvAUVLHh.js";
|
|
10
10
|
import { H as P } from "./heart-pulse-BCppJyN2.js";
|
|
11
|
-
const
|
|
11
|
+
const ue = {
|
|
12
12
|
id: "anamnesis-summary-card",
|
|
13
13
|
// The card is read-only: the only handle method is a getSummary
|
|
14
14
|
// projection, so there is no capability to declare.
|
|
@@ -18,7 +18,7 @@ const ce = {
|
|
|
18
18
|
type: "{ id?: string; sectionCount: number; answerCount: number; highlightedCount: number; unansweredCount: number }",
|
|
19
19
|
descriptionKey: "ui.agent.anamnesisSummaryCard.state.summary",
|
|
20
20
|
description: "Structural summary of the anamnesis card — section, answer, highlighted and unanswered counts plus the consumer id. Never question labels or answer values.",
|
|
21
|
-
read: (
|
|
21
|
+
read: (t) => t.getSummary()
|
|
22
22
|
}
|
|
23
23
|
},
|
|
24
24
|
actions: {},
|
|
@@ -38,13 +38,15 @@ const ce = {
|
|
|
38
38
|
description: "One per answer row (KeyValuePair); the value is the intake field key. Highlighted rows also carry data-highlighted."
|
|
39
39
|
}
|
|
40
40
|
}
|
|
41
|
-
},
|
|
41
|
+
}, ge = h("ds:w-full ds:text-[color:var(--foreground)]", {
|
|
42
42
|
variants: {
|
|
43
|
-
// Same `surface` vocabulary as PatientSummaryCard / ContactProfileCard
|
|
44
|
-
//
|
|
43
|
+
// Same `surface` vocabulary as PatientSummaryCard / ContactProfileCard,
|
|
44
|
+
// plus `bare` for a host that already frames the card — an expanded
|
|
45
|
+
// table row, where a card inside a row inside a table was three layers.
|
|
45
46
|
surface: {
|
|
46
47
|
flat: "",
|
|
47
|
-
elevated: ""
|
|
48
|
+
elevated: "",
|
|
49
|
+
bare: ""
|
|
48
50
|
},
|
|
49
51
|
density: {
|
|
50
52
|
comfortable: "",
|
|
@@ -55,7 +57,7 @@ const ce = {
|
|
|
55
57
|
surface: "elevated",
|
|
56
58
|
density: "comfortable"
|
|
57
59
|
}
|
|
58
|
-
}),
|
|
60
|
+
}), he = h("ds:flex ds:flex-col", {
|
|
59
61
|
variants: {
|
|
60
62
|
density: {
|
|
61
63
|
comfortable: "ds:gap-[var(--spacing-lg)]",
|
|
@@ -63,7 +65,7 @@ const ce = {
|
|
|
63
65
|
}
|
|
64
66
|
},
|
|
65
67
|
defaultVariants: { density: "comfortable" }
|
|
66
|
-
}),
|
|
68
|
+
}), pe = h("", {
|
|
67
69
|
variants: {
|
|
68
70
|
density: {
|
|
69
71
|
comfortable: "",
|
|
@@ -71,7 +73,7 @@ const ce = {
|
|
|
71
73
|
}
|
|
72
74
|
},
|
|
73
75
|
defaultVariants: { density: "comfortable" }
|
|
74
|
-
}),
|
|
76
|
+
}), fe = h("", {
|
|
75
77
|
variants: {
|
|
76
78
|
density: {
|
|
77
79
|
comfortable: "",
|
|
@@ -79,7 +81,7 @@ const ce = {
|
|
|
79
81
|
}
|
|
80
82
|
},
|
|
81
83
|
defaultVariants: { density: "comfortable" }
|
|
82
|
-
}),
|
|
84
|
+
}), ve = h("", {
|
|
83
85
|
variants: {
|
|
84
86
|
density: {
|
|
85
87
|
comfortable: "",
|
|
@@ -87,114 +89,130 @@ const ce = {
|
|
|
87
89
|
}
|
|
88
90
|
},
|
|
89
91
|
defaultVariants: { density: "comfortable" }
|
|
90
|
-
}),
|
|
91
|
-
function
|
|
92
|
-
const
|
|
93
|
-
if (
|
|
92
|
+
}), be = /^(\d{4})-(\d{2})-(\d{2})$/, ye = /^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2})(?::(\d{2}))?$/, xe = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}/;
|
|
93
|
+
function Ne(t) {
|
|
94
|
+
const d = be.exec(t);
|
|
95
|
+
if (d)
|
|
94
96
|
return {
|
|
95
|
-
date: new Date(Number(
|
|
97
|
+
date: new Date(Number(d[1]), Number(d[2]) - 1, Number(d[3])),
|
|
96
98
|
hasTime: !1
|
|
97
99
|
};
|
|
98
|
-
const
|
|
99
|
-
if (
|
|
100
|
+
const r = ye.exec(t);
|
|
101
|
+
if (r)
|
|
100
102
|
return {
|
|
101
103
|
date: new Date(
|
|
102
|
-
Number(
|
|
103
|
-
Number(
|
|
104
|
-
Number(
|
|
105
|
-
Number(
|
|
106
|
-
Number(
|
|
107
|
-
|
|
104
|
+
Number(r[1]),
|
|
105
|
+
Number(r[2]) - 1,
|
|
106
|
+
Number(r[3]),
|
|
107
|
+
Number(r[4]),
|
|
108
|
+
Number(r[5]),
|
|
109
|
+
r[6] ? Number(r[6]) : 0
|
|
108
110
|
),
|
|
109
111
|
hasTime: !0
|
|
110
112
|
};
|
|
111
|
-
const
|
|
112
|
-
return Number.isNaN(
|
|
113
|
+
const o = new Date(t);
|
|
114
|
+
return Number.isNaN(o.getTime()) ? null : { date: o, hasTime: xe.test(t) };
|
|
113
115
|
}
|
|
114
|
-
function R(
|
|
115
|
-
const
|
|
116
|
-
if (!
|
|
117
|
-
const
|
|
116
|
+
function R(t, d) {
|
|
117
|
+
const r = Ne(t);
|
|
118
|
+
if (!r) return null;
|
|
119
|
+
const o = r.hasTime ? { dateStyle: "medium", timeStyle: "short" } : { dateStyle: "medium" };
|
|
118
120
|
try {
|
|
119
|
-
return new Intl.DateTimeFormat(
|
|
121
|
+
return new Intl.DateTimeFormat(d, o).format(r.date);
|
|
120
122
|
} catch {
|
|
121
|
-
return new Intl.DateTimeFormat(void 0,
|
|
123
|
+
return new Intl.DateTimeFormat(void 0, o).format(r.date);
|
|
122
124
|
}
|
|
123
125
|
}
|
|
124
|
-
const
|
|
126
|
+
const Ce = 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-transparent ds:p-0 ds:m-0 ds:cursor-default ds:rounded-[var(--radius-full)] ds:before:absolute ds:before:content-[""] ds:before:inset-x-[calc((var(--min-target-size)-100%)/-2)] ds:before:inset-y-[calc((var(--min-target-size)-100%)/-2)] ds:sm:before:inset-x-[calc((var(--spacing-lg)-100%)/-2)] ds:sm:before:inset-y-[calc((var(--spacing-lg)-100%)/-2)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)] ds:forced-colors:focus-visible:outline-[CanvasText]', Se = "ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)] ds:border-s-2 ds:ps-[var(--spacing-sm)]", Ae = "ds:border-[color:var(--border)]", Le = "ds:border-[color:var(--accent)]", y = "type-meta ds:m-0 ds:text-[color:var(--muted-foreground)]", Te = Object.assign(
|
|
127
|
+
({ children: t }) => /* @__PURE__ */ a(te, { children: t }),
|
|
128
|
+
{
|
|
129
|
+
Header: ({
|
|
130
|
+
children: t,
|
|
131
|
+
className: d
|
|
132
|
+
}) => /* @__PURE__ */ a("div", { className: d, children: t }),
|
|
133
|
+
Body: ({
|
|
134
|
+
children: t,
|
|
135
|
+
className: d
|
|
136
|
+
}) => /* @__PURE__ */ a("div", { className: d, children: t }),
|
|
137
|
+
Footer: ({
|
|
138
|
+
children: t,
|
|
139
|
+
className: d
|
|
140
|
+
}) => /* @__PURE__ */ a("div", { className: d, children: t })
|
|
141
|
+
}
|
|
142
|
+
), we = re(
|
|
125
143
|
({
|
|
126
|
-
sections:
|
|
127
|
-
title:
|
|
128
|
-
subtitle:
|
|
129
|
-
unansweredCount:
|
|
144
|
+
sections: t,
|
|
145
|
+
title: d,
|
|
146
|
+
subtitle: r,
|
|
147
|
+
unansweredCount: o = 0,
|
|
130
148
|
locale: D,
|
|
131
|
-
highlightedFirst:
|
|
132
|
-
highlightedGroup:
|
|
149
|
+
highlightedFirst: S = !0,
|
|
150
|
+
highlightedGroup: j = !0,
|
|
133
151
|
highlightedOnly: m = !1,
|
|
134
|
-
surface:
|
|
152
|
+
surface: x = "elevated",
|
|
135
153
|
density: c = "comfortable",
|
|
136
154
|
loading: p = !1,
|
|
137
155
|
actionSlot: A,
|
|
138
156
|
id: g,
|
|
139
|
-
className:
|
|
140
|
-
"aria-label":
|
|
141
|
-
|
|
142
|
-
},
|
|
143
|
-
const { t:
|
|
144
|
-
() =>
|
|
157
|
+
className: M,
|
|
158
|
+
"aria-label": F,
|
|
159
|
+
...$
|
|
160
|
+
}, z) => {
|
|
161
|
+
const { t: l, i18n: K } = ie(), O = de(), L = D ?? K.language ?? "en", u = E(
|
|
162
|
+
() => t.filter((e) => e.answers.length > 0).map((e) => ({
|
|
145
163
|
...e,
|
|
146
|
-
answers:
|
|
147
|
-
(s,
|
|
164
|
+
answers: S ? [...e.answers].sort(
|
|
165
|
+
(s, n) => +!!n.highlighted - +!!s.highlighted
|
|
148
166
|
) : e.answers
|
|
149
167
|
})),
|
|
150
|
-
[
|
|
168
|
+
[t, S]
|
|
151
169
|
), T = u.reduce(
|
|
152
170
|
(e, s) => e + s.answers.length,
|
|
153
171
|
0
|
|
154
172
|
), f = u.reduce(
|
|
155
|
-
(e, s) => e + s.answers.filter((
|
|
173
|
+
(e, s) => e + s.answers.filter((n) => n.highlighted).length,
|
|
156
174
|
0
|
|
157
|
-
), w = u.length,
|
|
175
|
+
), w = u.length, N = u.flatMap(
|
|
158
176
|
(e) => e.answers.filter((s) => s.highlighted)
|
|
159
|
-
),
|
|
160
|
-
const s = e.reportedAtIso ? R(e.reportedAtIso, L) : null,
|
|
161
|
-
(
|
|
177
|
+
), q = m ? [] : u, G = (e) => {
|
|
178
|
+
const s = e.reportedAtIso ? R(e.reportedAtIso, L) : null, n = [e.sourceLabel, s].filter(
|
|
179
|
+
(b) => !!b
|
|
162
180
|
);
|
|
163
|
-
return
|
|
164
|
-
},
|
|
181
|
+
return n.length > 0 ? n.join(" · ") : null;
|
|
182
|
+
}, C = E(
|
|
165
183
|
() => ({
|
|
166
184
|
getSummary: () => ({
|
|
167
185
|
id: g,
|
|
168
186
|
sectionCount: w,
|
|
169
187
|
answerCount: T,
|
|
170
188
|
highlightedCount: f,
|
|
171
|
-
unansweredCount:
|
|
189
|
+
unansweredCount: o
|
|
172
190
|
})
|
|
173
191
|
}),
|
|
174
|
-
[g, w, T, f,
|
|
192
|
+
[g, w, T, f, o]
|
|
175
193
|
);
|
|
176
|
-
|
|
177
|
-
const U =
|
|
194
|
+
ne(z, () => C, [C]), me(ue, C, g);
|
|
195
|
+
const U = l("anamnesisSummaryCard.regionLabel", {
|
|
178
196
|
defaultValue: "Anamnesis summary"
|
|
179
|
-
}), V =
|
|
197
|
+
}), V = d ?? U, Y = F ?? V, _ = l("anamnesisSummaryCard.highlighted", {
|
|
180
198
|
defaultValue: "Highlighted"
|
|
181
199
|
}), J = c === "comfortable" ? "type-title-card" : "type-title-item", Q = c === "comfortable" ? "md" : "sm", W = (e) => {
|
|
182
|
-
const s = e.reportedAtIso ? R(e.reportedAtIso, L) : null,
|
|
200
|
+
const s = e.reportedAtIso ? R(e.reportedAtIso, L) : null, n = s && e.sourceLabel ? l("anamnesisSummaryCard.reportedOnFrom", {
|
|
183
201
|
date: s,
|
|
184
202
|
source: e.sourceLabel,
|
|
185
203
|
defaultValue: "Highlighted on {{date}} · {{source}}"
|
|
186
|
-
}) : s ?
|
|
204
|
+
}) : s ? l("anamnesisSummaryCard.reportedOn", {
|
|
187
205
|
date: s,
|
|
188
206
|
defaultValue: "Highlighted on {{date}}"
|
|
189
207
|
}) : _;
|
|
190
|
-
return /* @__PURE__ */ a(
|
|
208
|
+
return /* @__PURE__ */ a(ce, { label: n, side: "top", children: /* @__PURE__ */ a(
|
|
191
209
|
"button",
|
|
192
210
|
{
|
|
193
211
|
type: "button",
|
|
194
|
-
className:
|
|
212
|
+
className: Ce,
|
|
195
213
|
"data-highlighted-chip": "",
|
|
196
214
|
children: /* @__PURE__ */ a(
|
|
197
|
-
|
|
215
|
+
H,
|
|
198
216
|
{
|
|
199
217
|
variant: "accentSoft",
|
|
200
218
|
size: "sm",
|
|
@@ -204,88 +222,88 @@ const xe = 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-tran
|
|
|
204
222
|
)
|
|
205
223
|
}
|
|
206
224
|
) });
|
|
207
|
-
}, X = /* @__PURE__ */
|
|
208
|
-
/* @__PURE__ */
|
|
225
|
+
}, X = /* @__PURE__ */ i("div", { className: "ds:flex ds:flex-wrap ds:items-start ds:gap-[var(--spacing-sm)]", children: [
|
|
226
|
+
/* @__PURE__ */ i("div", { className: "ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
|
|
209
227
|
/* @__PURE__ */ a(
|
|
210
228
|
"h3",
|
|
211
229
|
{
|
|
212
|
-
id:
|
|
230
|
+
id: O,
|
|
213
231
|
className: `ds:m-0 ${J} ds:text-[color:var(--foreground)]`,
|
|
214
232
|
children: V
|
|
215
233
|
}
|
|
216
234
|
),
|
|
217
|
-
|
|
235
|
+
r ? /* @__PURE__ */ a("p", { className: y, children: r }) : null
|
|
218
236
|
] }),
|
|
219
237
|
!p && f > 0 ? /* @__PURE__ */ a(
|
|
220
|
-
|
|
238
|
+
H,
|
|
221
239
|
{
|
|
222
240
|
variant: "accentSoft",
|
|
223
241
|
size: "sm",
|
|
224
242
|
leading: /* @__PURE__ */ a(P, { "aria-hidden": "true" }),
|
|
225
243
|
className: "ds:shrink-0",
|
|
226
|
-
children:
|
|
244
|
+
children: l("anamnesisSummaryCard.highlightedCount", {
|
|
227
245
|
count: f,
|
|
228
246
|
defaultValue: "{{count}} highlighted"
|
|
229
247
|
})
|
|
230
248
|
}
|
|
231
249
|
) : null,
|
|
232
250
|
A ? /* @__PURE__ */ a("div", { className: "ds:ms-auto ds:flex ds:shrink-0 ds:items-center ds:gap-[var(--spacing-xs)]", children: A }) : null
|
|
233
|
-
] }), Z = /* @__PURE__ */
|
|
234
|
-
/* @__PURE__ */ a(
|
|
235
|
-
/* @__PURE__ */ a(
|
|
236
|
-
] }), ee = /* @__PURE__ */ a("p", { className: y, children:
|
|
251
|
+
] }), Z = /* @__PURE__ */ i("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]", children: [
|
|
252
|
+
/* @__PURE__ */ a(k, { variant: "text", width: "40%" }),
|
|
253
|
+
/* @__PURE__ */ a(k, { variant: "text", lines: 4 })
|
|
254
|
+
] }), ee = /* @__PURE__ */ a("p", { className: y, children: l("anamnesisSummaryCard.empty", {
|
|
237
255
|
defaultValue: "No answers recorded yet"
|
|
238
|
-
}) }),
|
|
256
|
+
}) }), B = [
|
|
239
257
|
"ds:m-0 ds:grid ds:grid-cols-1 ds:@[672px]/afields:grid-cols-2",
|
|
240
258
|
"ds:gap-x-[var(--spacing-lg)]",
|
|
241
259
|
Q === "md" ? "ds:gap-y-[var(--spacing-md)]" : "ds:gap-y-[var(--spacing-sm)]"
|
|
242
|
-
].join(" "),
|
|
243
|
-
const
|
|
244
|
-
return /* @__PURE__ */
|
|
260
|
+
].join(" "), I = (e, s) => {
|
|
261
|
+
const n = s.chip && e.highlighted, b = s.recorded ? G(e) : null;
|
|
262
|
+
return /* @__PURE__ */ i(
|
|
245
263
|
"div",
|
|
246
264
|
{
|
|
247
265
|
"data-answer-id": e.id,
|
|
248
266
|
"data-highlighted": e.highlighted ? "" : void 0,
|
|
249
267
|
className: [
|
|
250
|
-
|
|
251
|
-
s.accentBar ||
|
|
268
|
+
Se,
|
|
269
|
+
s.accentBar || n ? Le : Ae
|
|
252
270
|
].join(" "),
|
|
253
271
|
children: [
|
|
254
|
-
/* @__PURE__ */
|
|
255
|
-
|
|
272
|
+
/* @__PURE__ */ i("dt", { className: "type-title-item ds:m-0 ds:flex ds:items-start ds:gap-[var(--spacing-xs)] ds:font-semibold ds:text-[color:var(--foreground)]", children: [
|
|
273
|
+
n ? W(e) : null,
|
|
256
274
|
/* @__PURE__ */ a("span", { children: e.label })
|
|
257
275
|
] }),
|
|
258
|
-
/* @__PURE__ */
|
|
259
|
-
/* @__PURE__ */
|
|
276
|
+
/* @__PURE__ */ i("dd", { className: "type-body-sm ds:m-0 ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)] ds:text-[color:var(--foreground)]", children: [
|
|
277
|
+
/* @__PURE__ */ i("span", { className: "ds:inline-flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-xs)] ds:gap-y-[var(--spacing-2xs)]", children: [
|
|
260
278
|
/* @__PURE__ */ a("span", { children: e.value }),
|
|
261
279
|
e.unit ? /* @__PURE__ */ a("span", { className: "ds:text-[color:var(--muted-foreground)]", children: e.unit }) : null
|
|
262
280
|
] }),
|
|
263
|
-
|
|
281
|
+
b ? /* @__PURE__ */ a("span", { className: y, children: b }) : null
|
|
264
282
|
] })
|
|
265
283
|
]
|
|
266
284
|
},
|
|
267
285
|
`${s.keyPrefix}${e.id}`
|
|
268
286
|
);
|
|
269
|
-
}, ae = /* @__PURE__ */
|
|
287
|
+
}, ae = /* @__PURE__ */ i(
|
|
270
288
|
"div",
|
|
271
289
|
{
|
|
272
290
|
role: "group",
|
|
273
|
-
"aria-label":
|
|
291
|
+
"aria-label": l("anamnesisSummaryCard.sectionsLabel", {
|
|
274
292
|
defaultValue: "Anamnesis sections"
|
|
275
293
|
}),
|
|
276
|
-
className:
|
|
294
|
+
className: he({ density: c }),
|
|
277
295
|
children: [
|
|
278
|
-
(
|
|
296
|
+
(j || m) && N.length > 0 ? /* @__PURE__ */ i(
|
|
279
297
|
"div",
|
|
280
298
|
{
|
|
281
299
|
"data-highlighted-group": "",
|
|
282
300
|
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]",
|
|
283
301
|
children: [
|
|
284
|
-
m ? null : /* @__PURE__ */ a("h4", { className: "type-label ds:m-0 ds:font-semibold ds:text-[color:var(--foreground)]", children:
|
|
302
|
+
m ? null : /* @__PURE__ */ a("h4", { className: "type-label ds:m-0 ds:font-semibold ds:text-[color:var(--foreground)]", children: l("anamnesisSummaryCard.highlightedGroup", {
|
|
285
303
|
defaultValue: "Highlighted answers"
|
|
286
304
|
}) }),
|
|
287
|
-
/* @__PURE__ */ a("div", { className: "ds:@container/afields", children: /* @__PURE__ */ a("dl", { className:
|
|
288
|
-
(e) =>
|
|
305
|
+
/* @__PURE__ */ a("div", { className: "ds:@container/afields", children: /* @__PURE__ */ a("dl", { className: B, children: N.map(
|
|
306
|
+
(e) => I(e, {
|
|
289
307
|
recorded: !0,
|
|
290
308
|
chip: !1,
|
|
291
309
|
accentBar: !0,
|
|
@@ -295,15 +313,15 @@ const xe = 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-tran
|
|
|
295
313
|
]
|
|
296
314
|
}
|
|
297
315
|
) : null,
|
|
298
|
-
|
|
316
|
+
q.map((e) => /* @__PURE__ */ i(
|
|
299
317
|
"div",
|
|
300
318
|
{
|
|
301
319
|
"data-section-id": e.id,
|
|
302
320
|
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]",
|
|
303
321
|
children: [
|
|
304
322
|
/* @__PURE__ */ a("h4", { className: "type-label ds:m-0 ds:font-semibold ds:text-[color:var(--foreground)]", children: e.heading }),
|
|
305
|
-
/* @__PURE__ */ a("div", { className: "ds:@container/afields", children: /* @__PURE__ */ a("dl", { className:
|
|
306
|
-
(s) =>
|
|
323
|
+
/* @__PURE__ */ a("div", { className: "ds:@container/afields", children: /* @__PURE__ */ a("dl", { className: B, children: e.answers.map(
|
|
324
|
+
(s) => I(s, {
|
|
307
325
|
recorded: !1,
|
|
308
326
|
chip: !0,
|
|
309
327
|
accentBar: !1,
|
|
@@ -316,7 +334,7 @@ const xe = 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-tran
|
|
|
316
334
|
))
|
|
317
335
|
]
|
|
318
336
|
}
|
|
319
|
-
), se = p ? Z : u.length === 0 || m &&
|
|
337
|
+
), se = p ? Z : u.length === 0 || m && N.length === 0 ? ee : ae, v = x === "bare" ? Te : oe;
|
|
320
338
|
return /* @__PURE__ */ a(
|
|
321
339
|
"div",
|
|
322
340
|
{
|
|
@@ -328,13 +346,13 @@ const xe = 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-tran
|
|
|
328
346
|
"data-density": c,
|
|
329
347
|
"data-highlighted-only": m ? "" : void 0,
|
|
330
348
|
id: g,
|
|
331
|
-
className:
|
|
332
|
-
|
|
333
|
-
children: /* @__PURE__ */
|
|
334
|
-
/* @__PURE__ */ a(
|
|
335
|
-
/* @__PURE__ */ a(
|
|
336
|
-
!p && !m &&
|
|
337
|
-
count:
|
|
349
|
+
className: ge({ surface: x, density: c, className: M }),
|
|
350
|
+
...$,
|
|
351
|
+
children: /* @__PURE__ */ i(v, { variant: x === "flat" ? "outlined" : "elevated", children: [
|
|
352
|
+
/* @__PURE__ */ a(v.Header, { className: pe({ density: c }), children: X }),
|
|
353
|
+
/* @__PURE__ */ a(le, { children: /* @__PURE__ */ a(v.Body, { className: fe({ density: c }), children: se }) }),
|
|
354
|
+
!p && !m && o > 0 ? /* @__PURE__ */ a(v.Footer, { className: ve({ density: c }), children: /* @__PURE__ */ a("p", { className: y, children: l("anamnesisSummaryCard.unanswered", {
|
|
355
|
+
count: o,
|
|
338
356
|
defaultValue: "{{count}} questions not answered"
|
|
339
357
|
}) }) }) : null
|
|
340
358
|
] })
|
|
@@ -342,9 +360,9 @@ const xe = 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-tran
|
|
|
342
360
|
);
|
|
343
361
|
}
|
|
344
362
|
);
|
|
345
|
-
|
|
363
|
+
we.displayName = "AnamnesisSummaryCard";
|
|
346
364
|
export {
|
|
347
|
-
|
|
348
|
-
|
|
365
|
+
we as A,
|
|
366
|
+
ue as a
|
|
349
367
|
};
|
|
350
|
-
//# sourceMappingURL=anamnesis-summary-card-
|
|
368
|
+
//# sourceMappingURL=anamnesis-summary-card-DGVKBQoq.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anamnesis-summary-card-DGVKBQoq.js","sources":["../../src/components/anamnesis-summary-card/anamnesis-summary-card.agent.ts","../../src/components/anamnesis-summary-card/anamnesis-summary-card.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { AnamnesisSummaryCardHandle } from './anamnesis-summary-card';\n\n/* -------------------------------------------------------------------- */\n/* Agent adapter — AnamnesisSummaryCard */\n/* */\n/* Read-only adapter. Surfaces a STRUCTURAL snapshot of the anamnesis */\n/* summary — section / answer / highlighted / unanswered counts and the */\n/* consumer id only. Never a question label or an answer value, so an */\n/* agent can answer \"does this patient have highlighted answers?\" without */\n/* re-parsing the DOM and without leaking PHI (PRS §Security). */\n/* -------------------------------------------------------------------- */\n\nexport const anamnesisSummaryCardAgent: AgentAdapter<AnamnesisSummaryCardHandle> =\n {\n id: 'anamnesis-summary-card',\n // The card is read-only: the only handle method is a getSummary\n // projection, so there is no capability to declare.\n capabilities: [],\n state: {\n summary: {\n type: '{ id?: string; sectionCount: number; answerCount: number; highlightedCount: number; unansweredCount: number }',\n descriptionKey: 'ui.agent.anamnesisSummaryCard.state.summary',\n description:\n 'Structural summary of the anamnesis card — section, answer, highlighted and unanswered counts plus the consumer id. Never question labels or answer values.',\n read: (handle) => handle.getSummary(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'anamnesis-summary-card',\n description: 'Marks the AnamnesisSummaryCard root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-answer-id',\n description:\n 'One per answer row (KeyValuePair); the value is the intake field key. Highlighted rows also carry data-highlighted.',\n },\n },\n };\n","import {\n forwardRef,\n useId,\n useImperativeHandle,\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 { HeartPulse } from 'lucide-react';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { Skeleton } from '../skeleton/skeleton';\nimport { Tooltip, TooltipProvider } from '../tooltip/tooltip';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { anamnesisSummaryCardAgent } from './anamnesis-summary-card.agent';\n\n/* -------------------------------------------------------------------- */\n/* AnamnesisSummaryCard */\n/* */\n/* A read-only summary of a patient's anamnesis answers: every answered */\n/* question as a label/value row, grouped by section, two columns when */\n/* the card is wide. Practice-flagged (\"highlighted\") answers carry an */\n/* accent rail plus a HeartPulse chip whose tooltip says WHEN the answer */\n/* was recorded (and from which module when the card combines several). */\n/* */\n/* Templated on PatientSummaryCard: the consumer passes rows, the kit */\n/* owns layout, icons, i18n, and a11y. Used by the platform both for the */\n/* Overview tab (one card combining each module's latest interview) and */\n/* under the archive table (one card per interview). */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n // Same `surface` vocabulary as PatientSummaryCard / ContactProfileCard,\n // plus `bare` for a host that already frames the card — an expanded\n // table row, where a card inside a row inside a table was three layers.\n surface: {\n flat: '',\n elevated: '',\n bare: '',\n },\n density: {\n comfortable: '',\n compact: '',\n },\n },\n defaultVariants: {\n surface: 'elevated',\n density: 'comfortable',\n },\n});\n\n/** Stack of sections inside the body — the density tunes the section gap. */\nconst sectionsVariants = cva('ds:flex ds:flex-col', {\n variants: {\n density: {\n comfortable: 'ds:gap-[var(--spacing-lg)]',\n compact: 'ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\n/** Card padding per density — overrides Card.Header / Body / Footer defaults. */\nconst headerPaddingVariants = cva('', {\n variants: {\n density: {\n comfortable: '',\n compact: 'ds:p-[var(--spacing-sm)] ds:pb-0',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\nconst bodyPaddingVariants = cva('', {\n variants: {\n density: {\n comfortable: '',\n compact: 'ds:p-[var(--spacing-sm)]',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\nconst footerPaddingVariants = cva('', {\n variants: {\n density: {\n comfortable: '',\n compact: 'ds:p-[var(--spacing-sm)] ds:pt-0',\n },\n },\n defaultVariants: { density: 'comfortable' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\nexport interface AnamnesisSummaryAnswer {\n /** Stable key (the intake field key). */\n id: string;\n /** Question label, already translated by the consumer. */\n label: string;\n /** Formatted answer. Strings preferred; ReactNode allowed. */\n value: ReactNode;\n /** Unit symbol rendered muted after the value (e.g. \"kg\"). */\n unit?: string;\n /** The practice's highlight rule fired for this answer. */\n highlighted?: boolean;\n /**\n * When the answer was recorded — `YYYY-MM-DD`, `YYYY-MM-DDTHH:mm` (LOCAL\n * wall time, no zone) or full ISO-8601. A bare date is never read as UTC.\n */\n reportedAtIso?: string;\n /** Where the answer came from when the card combines modules (module name). */\n sourceLabel?: string;\n}\n\nexport interface AnamnesisSummarySection {\n id: string;\n heading: string;\n answers: AnamnesisSummaryAnswer[];\n}\n\nexport interface AnamnesisSummaryCardHandle {\n /** Structural snapshot only — counts, never labels or values. */\n getSummary: () => {\n id?: string;\n sectionCount: number;\n answerCount: number;\n highlightedCount: number;\n unansweredCount: number;\n };\n}\n\nexport interface AnamnesisSummaryCardProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n sections: AnamnesisSummarySection[];\n /** Card title (e.g. the module name). Falls back to the \"Anamnesis summary\" region label. */\n title?: string;\n /** Muted line under the title (e.g. the interview date-time, already formatted). */\n subtitle?: string;\n /** Questions the consumer omitted because they were unanswered — one muted footer line when > 0. */\n unansweredCount?: number;\n /** BCP-47 tag for the tooltip date; defaults to the active i18next language. */\n locale?: string;\n /** Highlighted answers sort to the top of their section. Default `true`. */\n highlightedFirst?: boolean;\n /**\n * Open the card with a \"Highlighted answers\" group collecting every\n * flagged answer, each with where and when it was recorded, before the\n * sections. Default `true`; absent when nothing is flagged.\n */\n highlightedGroup?: boolean;\n /**\n * Render ONLY the highlighted-answers group — no sections, no unanswered\n * footer — for a card whose sole job is the flagged answers. Empty copy\n * when nothing is flagged. Default `false`.\n */\n highlightedOnly?: boolean;\n /** `'elevated'` (default) — Card with shadow; `'flat'` — outlined Card. */\n surface?: 'flat' | 'elevated' | 'bare';\n /** `'comfortable'` (default) or `'compact'` (tighter row gap + paddings). */\n density?: 'comfortable' | 'compact';\n /** Render the skeleton loading placeholder. */\n loading?: boolean;\n /** Rendered at the inline-end of the heading row (e.g. an action menu). */\n actionSlot?: ReactNode;\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Date helpers */\n/* -------------------------------------------------------------------- */\n\nconst DATE_ONLY_RE = /^(\\d{4})-(\\d{2})-(\\d{2})$/;\nconst LOCAL_DATETIME_RE =\n /^(\\d{4})-(\\d{2})-(\\d{2})T(\\d{2}):(\\d{2})(?::(\\d{2}))?$/;\nconst CLOCK_TIME_RE = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}/;\n\n/**\n * Parse a stored stamp by fields when it carries no zone, so `2026-03-01`\n * stays 1 March in every viewer zone (`new Date('2026-03-01')` would read\n * it as UTC midnight and print 29 February west of Greenwich).\n */\nfunction parseReportedAt(iso: string): { date: Date; hasTime: boolean } | null {\n const day = DATE_ONLY_RE.exec(iso);\n if (day) {\n return {\n date: new Date(Number(day[1]), Number(day[2]) - 1, Number(day[3])),\n hasTime: false,\n };\n }\n const local = LOCAL_DATETIME_RE.exec(iso);\n if (local) {\n return {\n date: new Date(\n Number(local[1]),\n Number(local[2]) - 1,\n Number(local[3]),\n Number(local[4]),\n Number(local[5]),\n local[6] ? Number(local[6]) : 0,\n ),\n hasTime: true,\n };\n }\n const date = new Date(iso);\n if (Number.isNaN(date.getTime())) return null;\n return { date, hasTime: CLOCK_TIME_RE.test(iso) };\n}\n\nfunction formatReportedAt(iso: string, locale: string): string | null {\n const parsed = parseReportedAt(iso);\n if (!parsed) return null;\n const options: Intl.DateTimeFormatOptions = parsed.hasTime\n ? { dateStyle: 'medium', timeStyle: 'short' }\n : { dateStyle: 'medium' };\n try {\n return new Intl.DateTimeFormat(locale, options).format(parsed.date);\n } catch {\n // An unknown BCP-47 tag throws — fall back to the runtime default locale.\n return new Intl.DateTimeFormat(undefined, options).format(parsed.date);\n }\n}\n\n/* -------------------------------------------------------------------- */\n/* Styling fragments */\n/* -------------------------------------------------------------------- */\n\n/** Bare button carrying the chip — it exists only to give the tooltip a\n * keyboard-focusable trigger, so it inherits the chip's pill outline.\n * The 16px chip sits below `--min-target-size`, so the same `::before`\n * hit-area recipe as InfoTip `size=\"sm\"` expands the target: the full\n * 44/48px on touch, relaxing to the `--spacing-lg` 24px floor from `sm:` up. */\nconst CHIP_BUTTON_CLASS =\n 'ds:relative ds:inline-flex ds:appearance-none ds:border-0 ds:bg-transparent ds:p-0 ds:m-0 ds:cursor-default ds:rounded-[var(--radius-full)] ds:before:absolute ds:before:content-[\"\"] ds:before:inset-x-[calc((var(--min-target-size)-100%)/-2)] ds:before:inset-y-[calc((var(--min-target-size)-100%)/-2)] ds:sm:before:inset-x-[calc((var(--spacing-lg)-100%)/-2)] ds:sm:before:inset-y-[calc((var(--spacing-lg)-100%)/-2)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)] ds:forced-colors:focus-visible:outline-[CanvasText]';\n\n/** Every cell carries a start bar: a quiet edge in the border colour, the\n * accent when the answer is flagged. It gives a cell an edge without a box. */\nconst CELL_CLASS =\n 'ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)] ds:border-s-2 ds:ps-[var(--spacing-sm)]';\nconst CELL_BAR_CLASS = 'ds:border-[color:var(--border)]';\nconst CELL_BAR_ACCENT_CLASS = 'ds:border-[color:var(--accent)]';\n\nconst MUTED_LINE_CLASS =\n 'type-meta ds:m-0 ds:text-[color:var(--muted-foreground)]';\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\n/** Card's slot shape without its box — for `surface=\"bare\"`. */\nconst BareShell = Object.assign(\n ({ children }: { children?: ReactNode }) => <>{children}</>,\n {\n Header: ({\n children,\n className,\n }: {\n children?: ReactNode;\n className?: string;\n }) => <div className={className}>{children}</div>,\n Body: ({\n children,\n className,\n }: {\n children?: ReactNode;\n className?: string;\n }) => <div className={className}>{children}</div>,\n Footer: ({\n children,\n className,\n }: {\n children?: ReactNode;\n className?: string;\n }) => <div className={className}>{children}</div>,\n },\n);\n\nexport const AnamnesisSummaryCard = forwardRef<\n AnamnesisSummaryCardHandle,\n AnamnesisSummaryCardProps\n>(\n (\n {\n sections,\n title,\n subtitle,\n unansweredCount = 0,\n locale,\n highlightedFirst = true,\n highlightedGroup = true,\n highlightedOnly = false,\n surface = 'elevated',\n density = 'comfortable',\n loading = false,\n actionSlot,\n id,\n className,\n 'aria-label': ariaLabel,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const activeLocale = locale ?? i18n.language ?? 'en';\n\n // Drop empty sections and apply the highlighted-first order once per\n // input change; `sort` is stable so unhighlighted rows keep their order.\n const visibleSections = useMemo(\n () =>\n sections\n .filter((section) => section.answers.length > 0)\n .map((section) => ({\n ...section,\n answers: highlightedFirst\n ? [...section.answers].sort(\n (a, b) => Number(!!b.highlighted) - Number(!!a.highlighted),\n )\n : section.answers,\n })),\n [sections, highlightedFirst],\n );\n\n const answerCount = visibleSections.reduce(\n (sum, section) => sum + section.answers.length,\n 0,\n );\n const highlightedCount = visibleSections.reduce(\n (sum, section) =>\n sum + section.answers.filter((answer) => answer.highlighted).length,\n 0,\n );\n const sectionCount = visibleSections.length;\n // Every flagged answer in section order, for the opening group.\n const highlightedAnswers = visibleSections.flatMap((section) =>\n section.answers.filter((answer) => answer.highlighted),\n );\n // A flagged-answers-only card lists no sections at all.\n const listedSections = highlightedOnly ? [] : visibleSections;\n const recordedLine = (answer: AnamnesisSummaryAnswer): string | null => {\n const date = answer.reportedAtIso\n ? formatReportedAt(answer.reportedAtIso, activeLocale)\n : null;\n const parts = [answer.sourceLabel, date].filter((part): part is string =>\n Boolean(part),\n );\n return parts.length > 0 ? parts.join(' · ') : null;\n };\n\n // Imperative handle — structural snapshot only (counts + consumer id),\n // never a question label or an answer value.\n const handle = useMemo<AnamnesisSummaryCardHandle>(\n () => ({\n getSummary: () => ({\n id,\n sectionCount,\n answerCount,\n highlightedCount,\n unansweredCount,\n }),\n }),\n [id, sectionCount, answerCount, highlightedCount, unansweredCount],\n );\n useImperativeHandle(ref, () => handle, [handle]);\n useAgentRegistration(anamnesisSummaryCardAgent, handle, id);\n\n const regionLabel = t('anamnesisSummaryCard.regionLabel', {\n defaultValue: 'Anamnesis summary',\n });\n const resolvedTitle = title ?? regionLabel;\n const resolvedAriaLabel = ariaLabel ?? resolvedTitle;\n const highlightedText = t('anamnesisSummaryCard.highlighted', {\n defaultValue: 'Highlighted',\n });\n\n const titleClass =\n density === 'comfortable' ? 'type-title-card' : 'type-title-item';\n const rowGap = density === 'comfortable' ? 'md' : 'sm';\n\n /* ---------------------------------------------------------------- */\n /* Highlight chip */\n /* ---------------------------------------------------------------- */\n\n const renderChip = (answer: AnamnesisSummaryAnswer) => {\n const date = answer.reportedAtIso\n ? formatReportedAt(answer.reportedAtIso, activeLocale)\n : null;\n const tooltipLabel =\n date && answer.sourceLabel\n ? t('anamnesisSummaryCard.reportedOnFrom', {\n date,\n source: answer.sourceLabel,\n defaultValue: 'Highlighted on {{date}} · {{source}}',\n })\n : date\n ? t('anamnesisSummaryCard.reportedOn', {\n date,\n defaultValue: 'Highlighted on {{date}}',\n })\n : highlightedText;\n return (\n <Tooltip label={tooltipLabel} side=\"top\">\n <button\n type=\"button\"\n className={CHIP_BUTTON_CLASS}\n data-highlighted-chip=\"\"\n >\n {/* Icon only: the heart is the mark, the tooltip and the\n accessible name say why. */}\n <Badge\n variant=\"accentSoft\"\n size=\"sm\"\n aria-label={highlightedText}\n leading={<HeartPulse aria-hidden=\"true\" />}\n />\n </button>\n </Tooltip>\n );\n };\n\n /* ---------------------------------------------------------------- */\n /* Header */\n /* ---------------------------------------------------------------- */\n\n const header = (\n <div className=\"ds:flex ds:flex-wrap ds:items-start ds:gap-[var(--spacing-sm)]\">\n <div className=\"ds:flex ds:min-w-0 ds:flex-1 ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h3\n id={headingId}\n className={`ds:m-0 ${titleClass} ds:text-[color:var(--foreground)]`}\n >\n {resolvedTitle}\n </h3>\n {subtitle ? <p className={MUTED_LINE_CLASS}>{subtitle}</p> : null}\n </div>\n {!loading && highlightedCount > 0 ? (\n <Badge\n variant=\"accentSoft\"\n size=\"sm\"\n leading={<HeartPulse aria-hidden=\"true\" />}\n className=\"ds:shrink-0\"\n >\n {t('anamnesisSummaryCard.highlightedCount', {\n count: highlightedCount,\n defaultValue: '{{count}} highlighted',\n })}\n </Badge>\n ) : null}\n {actionSlot ? (\n <div className=\"ds:ms-auto ds:flex ds:shrink-0 ds:items-center ds:gap-[var(--spacing-xs)]\">\n {actionSlot}\n </div>\n ) : null}\n </div>\n );\n\n /* ---------------------------------------------------------------- */\n /* Body */\n /* ---------------------------------------------------------------- */\n\n const skeletonBody = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n <Skeleton variant=\"text\" width=\"40%\" />\n <Skeleton variant=\"text\" lines={4} />\n </div>\n );\n\n const emptyBody = (\n <p className={MUTED_LINE_CLASS}>\n {t('anamnesisSummaryCard.empty', {\n defaultValue: 'No answers recorded yet',\n })}\n </p>\n );\n\n /* ---------------------------------------------------------------- */\n /* Q&A cells */\n /* ---------------------------------------------------------------- */\n\n // Question above answer, one accent glyph each, two cells across when\n // the card is wide: a reader scans questions the way they were asked,\n // and a label|value pair doubled up made four ragged columns.\n const gridClass = [\n 'ds:m-0 ds:grid ds:grid-cols-1 ds:@[672px]/afields:grid-cols-2',\n 'ds:gap-x-[var(--spacing-lg)]',\n rowGap === 'md'\n ? 'ds:gap-y-[var(--spacing-md)]'\n : 'ds:gap-y-[var(--spacing-sm)]',\n ].join(' ');\n\n const renderAnswer = (\n answer: AnamnesisSummaryAnswer,\n opts: {\n recorded: boolean;\n chip: boolean;\n accentBar: boolean;\n keyPrefix: string;\n },\n ) => {\n const flagged = opts.chip && answer.highlighted;\n const recorded = opts.recorded ? recordedLine(answer) : null;\n return (\n <div\n key={`${opts.keyPrefix}${answer.id}`}\n data-answer-id={answer.id}\n data-highlighted={answer.highlighted ? '' : undefined}\n className={[\n CELL_CLASS,\n opts.accentBar || flagged ? CELL_BAR_ACCENT_CLASS : CELL_BAR_CLASS,\n ].join(' ')}\n >\n {/* The question leads: heavier and larger than its answer, the\n flag's heart ahead of it — a mark beside the question, never a\n box around the answer. */}\n <dt className=\"type-title-item ds:m-0 ds:flex ds:items-start ds:gap-[var(--spacing-xs)] ds:font-semibold ds:text-[color:var(--foreground)]\">\n {flagged ? renderChip(answer) : null}\n <span>{answer.label}</span>\n </dt>\n <dd className=\"type-body-sm ds:m-0 ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-2xs)] ds:text-[color:var(--foreground)]\">\n <span className=\"ds:inline-flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-xs)] ds:gap-y-[var(--spacing-2xs)]\">\n <span>{answer.value}</span>\n {answer.unit ? (\n <span className=\"ds:text-[color:var(--muted-foreground)]\">\n {answer.unit}\n </span>\n ) : null}\n </span>\n {recorded ? (\n <span className={MUTED_LINE_CLASS}>{recorded}</span>\n ) : null}\n </dd>\n </div>\n );\n };\n\n const sectionsBody = (\n <div\n role=\"group\"\n aria-label={t('anamnesisSummaryCard.sectionsLabel', {\n defaultValue: 'Anamnesis sections',\n })}\n className={sectionsVariants({ density })}\n >\n {/* Plain <div>, deliberately not a named <section>: a named\n <section> is a `region` landmark, and one per anamnesis section\n per card would drown the page-level landmarks. The <h4> already\n gives heading navigation into each section. */}\n {(highlightedGroup || highlightedOnly) &&\n highlightedAnswers.length > 0 ? (\n <div\n data-highlighted-group=\"\"\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {/* The card's own title already says it when this is all it shows. */}\n {highlightedOnly ? null : (\n <h4 className=\"type-label ds:m-0 ds:font-semibold ds:text-[color:var(--foreground)]\">\n {t('anamnesisSummaryCard.highlightedGroup', {\n defaultValue: 'Highlighted answers',\n })}\n </h4>\n )}\n {/* Container-queried so the cells flow into two columns when the\n card is wide enough and stay single-column in a narrow rail —\n the same 672px PatientSummaryCard breaks at (px, not rem:\n container-query rem follows the host root font-size). */}\n <div className=\"ds:@container/afields\">\n <dl className={gridClass}>\n {highlightedAnswers.map((answer) =>\n renderAnswer(answer, {\n recorded: true,\n chip: false,\n accentBar: true,\n keyPrefix: 'highlighted-',\n }),\n )}\n </dl>\n </div>\n </div>\n ) : null}\n {listedSections.map((section) => (\n <div\n key={section.id}\n data-section-id={section.id}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n <h4 className=\"type-label ds:m-0 ds:font-semibold ds:text-[color:var(--foreground)]\">\n {section.heading}\n </h4>\n <div className=\"ds:@container/afields\">\n <dl className={gridClass}>\n {section.answers.map((answer) =>\n renderAnswer(answer, {\n recorded: false,\n chip: true,\n accentBar: false,\n keyPrefix: '',\n }),\n )}\n </dl>\n </div>\n </div>\n ))}\n </div>\n );\n\n const body = loading\n ? skeletonBody\n : visibleSections.length === 0 ||\n (highlightedOnly && highlightedAnswers.length === 0)\n ? emptyBody\n : sectionsBody;\n\n // `bare` drops the Card chrome and keeps its slots, so a host that\n // already frames the content (an expanded table row) gets one layer.\n const Shell = surface === 'bare' ? BareShell : Card;\n\n return (\n <div\n role=\"region\"\n aria-label={resolvedAriaLabel}\n aria-busy={loading || undefined}\n data-component=\"anamnesis-summary-card\"\n data-component-id={id}\n data-density={density}\n data-highlighted-only={highlightedOnly ? '' : undefined}\n id={id}\n className={rootVariants({ surface, density, className })}\n {...rest}\n >\n <Shell variant={surface === 'flat' ? 'outlined' : 'elevated'}>\n <Shell.Header className={headerPaddingVariants({ density })}>\n {header}\n </Shell.Header>\n {/* Own TooltipProvider so a host without one still gets the chip\n tooltips; Radix providers compose, so a host-level one also works. */}\n <TooltipProvider>\n <Shell.Body className={bodyPaddingVariants({ density })}>\n {body}\n </Shell.Body>\n </TooltipProvider>\n {!loading && !highlightedOnly && unansweredCount > 0 ? (\n <Shell.Footer className={footerPaddingVariants({ density })}>\n <p className={MUTED_LINE_CLASS}>\n {t('anamnesisSummaryCard.unanswered', {\n count: unansweredCount,\n defaultValue: '{{count}} questions not answered',\n })}\n </p>\n </Shell.Footer>\n ) : null}\n </Shell>\n </div>\n );\n },\n);\n\nAnamnesisSummaryCard.displayName = 'AnamnesisSummaryCard';\n\n/** Variant unions re-exported for downstream typing. */\nexport type AnamnesisSummaryCardSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\nexport type AnamnesisSummaryCardDensity = NonNullable<\n VariantProps<typeof rootVariants>['density']\n>;\n"],"names":["anamnesisSummaryCardAgent","handle","rootVariants","cva","sectionsVariants","headerPaddingVariants","bodyPaddingVariants","footerPaddingVariants","DATE_ONLY_RE","LOCAL_DATETIME_RE","CLOCK_TIME_RE","parseReportedAt","iso","day","local","date","formatReportedAt","locale","parsed","options","CHIP_BUTTON_CLASS","CELL_CLASS","CELL_BAR_CLASS","CELL_BAR_ACCENT_CLASS","MUTED_LINE_CLASS","BareShell","children","className","jsx","AnamnesisSummaryCard","forwardRef","sections","title","subtitle","unansweredCount","highlightedFirst","highlightedGroup","highlightedOnly","surface","density","loading","actionSlot","id","ariaLabel","rest","ref","t","i18n","useTranslation","headingId","useId","activeLocale","visibleSections","useMemo","section","a","b","answerCount","sum","highlightedCount","answer","sectionCount","highlightedAnswers","listedSections","recordedLine","parts","part","useImperativeHandle","useAgentRegistration","regionLabel","resolvedTitle","resolvedAriaLabel","highlightedText","titleClass","rowGap","renderChip","tooltipLabel","Tooltip","Badge","HeartPulse","header","jsxs","skeletonBody","Skeleton","emptyBody","gridClass","renderAnswer","opts","flagged","recorded","sectionsBody","body","Shell","Card","TooltipProvider"],"mappings":"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"}
|