@alfadocs/ui-kit-debug 1.4.11 → 1.4.13
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/actions-cell-renderer-BD-jruqA.js +1784 -0
- package/dist/_chunks/actions-cell-renderer-BD-jruqA.js.map +1 -0
- package/dist/_chunks/{address-fields-pHsfkXGk.js → address-fields-D-8akw2m.js} +2 -2
- package/dist/_chunks/{address-fields-pHsfkXGk.js.map → address-fields-D-8akw2m.js.map} +1 -1
- package/dist/_chunks/{agenda-card-BCGaQazD.js → agenda-card-BQDs2ZMp.js} +2 -2
- package/dist/_chunks/{agenda-card-BCGaQazD.js.map → agenda-card-BQDs2ZMp.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-CG6FuccE.js → agenda-tray-BTyWsVwT.js} +2 -2
- package/dist/_chunks/{agenda-tray-CG6FuccE.js.map → agenda-tray-BTyWsVwT.js.map} +1 -1
- package/dist/_chunks/{ai-consent-banner-CpF_rbG9.js → ai-consent-banner-gVcoiXxv.js} +2 -2
- package/dist/_chunks/{ai-consent-banner-CpF_rbG9.js.map → ai-consent-banner-gVcoiXxv.js.map} +1 -1
- package/dist/_chunks/{anamnesis-card-C4FVp9wO.js → anamnesis-card-Bt0twrML.js} +2 -2
- package/dist/_chunks/{anamnesis-card-C4FVp9wO.js.map → anamnesis-card-Bt0twrML.js.map} +1 -1
- package/dist/_chunks/anamnesis-summary-card-BKGVcwny.js +350 -0
- package/dist/_chunks/anamnesis-summary-card-BKGVcwny.js.map +1 -0
- package/dist/_chunks/{anamnesis-summary-rows-Dw3l6nOD.js → anamnesis-summary-rows-B5MAYkJ-.js} +2768 -2951
- package/dist/_chunks/anamnesis-summary-rows-B5MAYkJ-.js.map +1 -0
- package/dist/_chunks/{antenatal-schedule-timeline-u8TsS2QJ.js → antenatal-schedule-timeline-BSLrOQ3S.js} +2 -2
- package/dist/_chunks/{antenatal-schedule-timeline-u8TsS2QJ.js.map → antenatal-schedule-timeline-BSLrOQ3S.js.map} +1 -1
- package/dist/_chunks/{appointment-card-DgKI5QKD.js → appointment-card-kcUC7vWR.js} +2 -2
- package/dist/_chunks/{appointment-card-DgKI5QKD.js.map → appointment-card-kcUC7vWR.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-CUijZCxZ.js → appointment-timeline-BC3dlZu5.js} +2 -2
- package/dist/_chunks/{appointment-timeline-CUijZCxZ.js.map → appointment-timeline-BC3dlZu5.js.map} +1 -1
- package/dist/_chunks/{appointment-tray-B1aUk46V.js → appointment-tray-BPY5rATW.js} +2 -2
- package/dist/_chunks/{appointment-tray-B1aUk46V.js.map → appointment-tray-BPY5rATW.js.map} +1 -1
- package/dist/_chunks/{badge-DCOqV9mI.js → badge-CIt-UFEx.js} +28 -28
- package/dist/_chunks/{badge-DCOqV9mI.js.map → badge-CIt-UFEx.js.map} +1 -1
- package/dist/_chunks/{bishop-score-Bpe20Ctl.js → bishop-score-B6iYYO0c.js} +3 -3
- package/dist/_chunks/{bishop-score-Bpe20Ctl.js.map → bishop-score-B6iYYO0c.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-DF5bNsDD.js → bmi-calculator-DC5SaqXT.js} +5 -5
- package/dist/_chunks/{bmi-calculator-DF5bNsDD.js.map → bmi-calculator-DC5SaqXT.js.map} +1 -1
- package/dist/_chunks/{booking-DuSkvE5x.js → booking-CmHX15dh.js} +2 -2
- package/dist/_chunks/{booking-DuSkvE5x.js.map → booking-CmHX15dh.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-DiyK3Eys.js → care-plan-card-9tLgsDYY.js} +3 -3
- package/dist/_chunks/{care-plan-card-DiyK3Eys.js.map → care-plan-card-9tLgsDYY.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-6du8PYVk.js → care-plan-entry-card-CSan4h7A.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-6du8PYVk.js.map → care-plan-entry-card-CSan4h7A.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-BWvDvly-.js → care-plan-header-D_BTi77b.js} +2 -2
- package/dist/_chunks/{care-plan-header-BWvDvly-.js.map → care-plan-header-D_BTi77b.js.map} +1 -1
- package/dist/_chunks/{clinical-note-card-D63x_AkK.js → clinical-note-card-ByzQ86uz.js} +2 -2
- package/dist/_chunks/{clinical-note-card-D63x_AkK.js.map → clinical-note-card-ByzQ86uz.js.map} +1 -1
- package/dist/_chunks/{connection-status-Bi4Hwpd1.js → connection-status-D8mZ4klk.js} +2 -2
- package/dist/_chunks/{connection-status-Bi4Hwpd1.js.map → connection-status-D8mZ4klk.js.map} +1 -1
- package/dist/_chunks/{contact-profile-card-CGS_NABR.js → contact-profile-card-DuW6VpzY.js} +2 -2
- package/dist/_chunks/{contact-profile-card-CGS_NABR.js.map → contact-profile-card-DuW6VpzY.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-Bd4_fJhq.js → cycle-calculator-B_NlctlQ.js} +4 -4
- package/dist/_chunks/{cycle-calculator-Bd4_fJhq.js.map → cycle-calculator-B_NlctlQ.js.map} +1 -1
- package/dist/_chunks/{date-time-picker-DafkGDGO.js → date-time-picker-DVETwpzc.js} +2 -2
- package/dist/_chunks/{date-time-picker-DafkGDGO.js.map → date-time-picker-DVETwpzc.js.map} +1 -1
- package/dist/_chunks/{dependent-selector-DyFpdzZV.js → dependent-selector-BUvrZRi0.js} +2 -2
- package/dist/_chunks/{dependent-selector-DyFpdzZV.js.map → dependent-selector-BUvrZRi0.js.map} +1 -1
- package/dist/_chunks/{document-preview-DuMzmupZ.js → document-preview-Di15VrpQ.js} +2 -2
- package/dist/_chunks/{document-preview-DuMzmupZ.js.map → document-preview-Di15VrpQ.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-Do67C-Z-.js → due-date-calculator-le1z3KpW.js} +6 -6
- package/dist/_chunks/{due-date-calculator-Do67C-Z-.js.map → due-date-calculator-le1z3KpW.js.map} +1 -1
- package/dist/_chunks/{fetal-weight-DHxXx7Uz.js → fetal-weight-DXA6ZpMq.js} +4 -4
- package/dist/_chunks/{fetal-weight-DHxXx7Uz.js.map → fetal-weight-DXA6ZpMq.js.map} +1 -1
- package/dist/_chunks/{field-value-C5A4t4OE.js → field-value-BCFLVBmu.js} +2 -2
- package/dist/_chunks/{field-value-C5A4t4OE.js.map → field-value-BCFLVBmu.js.map} +1 -1
- package/dist/_chunks/{file-manager-BY6FdHAt.js → file-manager-BjCM2fZB.js} +3 -3
- package/dist/_chunks/{file-manager-BY6FdHAt.js.map → file-manager-BjCM2fZB.js.map} +1 -1
- package/dist/_chunks/form-field-D1oqYisL.js +127 -0
- package/dist/_chunks/form-field-D1oqYisL.js.map +1 -0
- package/dist/_chunks/{gestational-age-calculator-CMhOtFE_.js → gestational-age-calculator-Ch8vmJAl.js} +5 -5
- package/dist/_chunks/{gestational-age-calculator-CMhOtFE_.js.map → gestational-age-calculator-Ch8vmJAl.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-DNG9Q2go.js → hcg-doubling-BT6lki_i.js} +5 -5
- package/dist/_chunks/{hcg-doubling-DNG9Q2go.js.map → hcg-doubling-BT6lki_i.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-C8npOgmM.js → link-cell-renderer-C7GvyK66.js} +3 -3
- package/dist/_chunks/{link-cell-renderer-C8npOgmM.js.map → link-cell-renderer-C7GvyK66.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-BxOiy25s.js → marketplace-app-shell-BhRH7Zi4.js} +2 -2
- package/dist/_chunks/{marketplace-app-shell-BxOiy25s.js.map → marketplace-app-shell-BhRH7Zi4.js.map} +1 -1
- package/dist/_chunks/{notes-panel-BoyzMHI_.js → notes-panel-Bz83SO4-.js} +2 -2
- package/dist/_chunks/{notes-panel-BoyzMHI_.js.map → notes-panel-Bz83SO4-.js.map} +1 -1
- package/dist/_chunks/number-input-CM1q9zvH.js +414 -0
- package/dist/_chunks/number-input-CM1q9zvH.js.map +1 -0
- package/dist/_chunks/{operator-hero-DVy0RGoD.js → operator-hero-CpJkDNAM.js} +2 -2
- package/dist/_chunks/{operator-hero-DVy0RGoD.js.map → operator-hero-CpJkDNAM.js.map} +1 -1
- package/dist/_chunks/{optical-prescription-Brs0CeP3.js → optical-prescription-CQR_WJiS.js} +2 -2
- package/dist/_chunks/{optical-prescription-Brs0CeP3.js.map → optical-prescription-CQR_WJiS.js.map} +1 -1
- package/dist/_chunks/{patient-details-Bf4iTAPp.js → patient-details-CnFgF3MU.js} +3 -3
- package/dist/_chunks/{patient-details-Bf4iTAPp.js.map → patient-details-CnFgF3MU.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-dkV6a53T.js → patient-summary-card-DfbOtOV6.js} +3 -3
- package/dist/_chunks/{patient-summary-card-dkV6a53T.js.map → patient-summary-card-DfbOtOV6.js.map} +1 -1
- package/dist/_chunks/{patient-table-zifAcsjV.js → patient-table-BXzcrC79.js} +4 -4
- package/dist/_chunks/{patient-table-zifAcsjV.js.map → patient-table-BXzcrC79.js.map} +1 -1
- package/dist/_chunks/{payment-automation-upsell-CZZPGfs0.js → payment-automation-upsell-Ckh3b7Xx.js} +2 -2
- package/dist/_chunks/{payment-automation-upsell-CZZPGfs0.js.map → payment-automation-upsell-Ckh3b7Xx.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-Dy7_DA-2.js → payment-request-card-Dn6-tH-D.js} +2 -2
- package/dist/_chunks/{payment-request-card-Dy7_DA-2.js.map → payment-request-card-Dn6-tH-D.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-CfFgKXWa.js → periodontal-chart-B0yko9Xm.js} +2 -2
- package/dist/_chunks/{periodontal-chart-CfFgKXWa.js.map → periodontal-chart-B0yko9Xm.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-card--6yTUsrQ.js → periodontal-chart-card-HbYTmWlo.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card--6yTUsrQ.js.map → periodontal-chart-card-HbYTmWlo.js.map} +1 -1
- package/dist/_chunks/{periodontal-diagnosis-cco40xTa.js → periodontal-diagnosis-Qk4F3Wc_.js} +3 -3
- package/dist/_chunks/{periodontal-diagnosis-cco40xTa.js.map → periodontal-diagnosis-Qk4F3Wc_.js.map} +1 -1
- package/dist/_chunks/{periodontal-risk-chart-bUGkMwDg.js → periodontal-risk-chart-ByKuM4cF.js} +2 -2
- package/dist/_chunks/{periodontal-risk-chart-bUGkMwDg.js.map → periodontal-risk-chart-ByKuM4cF.js.map} +1 -1
- package/dist/_chunks/{practice-results-Mys11x9p.js → practice-results-C5exrEn0.js} +2 -2
- package/dist/_chunks/{practice-results-Mys11x9p.js.map → practice-results-C5exrEn0.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-t3oM4ZzC.js → pregnancy-dating-4tPV_Yko.js} +6 -6
- package/dist/_chunks/{pregnancy-dating-t3oM4ZzC.js.map → pregnancy-dating-4tPV_Yko.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-Bfz7SbIw.js → pregnancy-weight-gain-BBgbWBGe.js} +5 -5
- package/dist/_chunks/{pregnancy-weight-gain-Bfz7SbIw.js.map → pregnancy-weight-gain-BBgbWBGe.js.map} +1 -1
- package/dist/_chunks/radio-group-BmIqhIT2.js +171 -0
- package/dist/_chunks/radio-group-BmIqhIT2.js.map +1 -0
- package/dist/_chunks/{radiograph-panel.agent-DyA4wsZA.js → radiograph-panel.agent-Drj0hYVV.js} +3 -3
- package/dist/_chunks/{radiograph-panel.agent-DyA4wsZA.js.map → radiograph-panel.agent-Drj0hYVV.js.map} +1 -1
- package/dist/_chunks/signature-status-chip-DlLJk1VA.js +97 -0
- package/dist/_chunks/signature-status-chip-DlLJk1VA.js.map +1 -0
- package/dist/_chunks/{tab-bar-BYESZINM.js → tab-bar-Ddp_ZbnL.js} +2 -2
- package/dist/_chunks/{tab-bar-BYESZINM.js.map → tab-bar-Ddp_ZbnL.js.map} +1 -1
- package/dist/_chunks/{tasks-panel-CoESdfZI.js → tasks-panel-T7vaKJcA.js} +2 -2
- package/dist/_chunks/{tasks-panel-CoESdfZI.js.map → tasks-panel-T7vaKJcA.js.map} +1 -1
- package/dist/_chunks/{time-picker-BPlJWm8w.js → time-picker-D0RS391l.js} +66 -63
- package/dist/_chunks/{time-picker-BPlJWm8w.js.map → time-picker-D0RS391l.js.map} +1 -1
- package/dist/_chunks/{unit-converter-lUW9Q888.js → unit-converter-Dsk__pjA.js} +3 -3
- package/dist/_chunks/{unit-converter-lUW9Q888.js.map → unit-converter-Dsk__pjA.js.map} +1 -1
- package/dist/_chunks/{widget-picker-DEmTVuFL.js → widget-picker-DqMbjQy_.js} +2 -2
- package/dist/_chunks/{widget-picker-DEmTVuFL.js.map → widget-picker-DqMbjQy_.js.map} +1 -1
- package/dist/_chunks/{workflow-map-C5PGP6cD.js → workflow-map-BNBeG2zn.js} +2 -2
- package/dist/_chunks/{workflow-map-C5PGP6cD.js.map → workflow-map-BNBeG2zn.js.map} +1 -1
- package/dist/agent-catalog.json +34 -34
- package/dist/agent-i18n/en.json +4 -4
- 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.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 +1 -0
- 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/data-table.agent.d.ts.map +1 -1
- package/dist/components/data-table/data-table.d.ts +19 -0
- package/dist/components/data-table/data-table.d.ts.map +1 -1
- package/dist/components/data-table/expanded-row-renderer.d.ts +47 -0
- package/dist/components/data-table/expanded-row-renderer.d.ts.map +1 -0
- package/dist/components/data-table/index.d.ts +2 -0
- package/dist/components/data-table/index.d.ts.map +1 -1
- package/dist/components/data-table/index.js +31 -27
- package/dist/components/date-time-picker/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 +6 -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/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +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 +11 -0
- 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 +3 -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.d.ts +3 -0
- package/dist/components/signature-status-chip/index.d.ts.map +1 -0
- package/dist/components/signature-status-chip/index.js +6 -0
- package/dist/components/signature-status-chip/index.js.map +1 -0
- package/dist/components/signature-status-chip/signature-status-chip.d.ts +29 -0
- package/dist/components/signature-status-chip/signature-status-chip.d.ts.map +1 -0
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/time-picker/time-picker.d.ts.map +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/i18n/locales/ar.d.ts +17 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +11 -0
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +17 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +11 -0
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +17 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +11 -0
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +17 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +11 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +17 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +11 -0
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +17 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +11 -0
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +17 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +11 -0
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +17 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +11 -0
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +17 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +11 -0
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +17 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +11 -0
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +17 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +11 -0
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +17 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +11 -0
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +17 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +11 -0
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +17 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +11 -0
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +17 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +11 -0
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +17 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +11 -0
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +17 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +11 -0
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +17 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +11 -0
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +799 -792
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +17 -0
- package/dist/locales/de.json +17 -0
- package/dist/locales/el.json +17 -0
- package/dist/locales/en.json +17 -0
- package/dist/locales/es.json +17 -0
- package/dist/locales/fr.json +17 -0
- package/dist/locales/hi.json +17 -0
- package/dist/locales/it.json +17 -0
- package/dist/locales/ja.json +17 -0
- package/dist/locales/nl.json +17 -0
- package/dist/locales/pl.json +17 -0
- package/dist/locales/pt.json +17 -0
- package/dist/locales/ro.json +17 -0
- package/dist/locales/ru.json +17 -0
- package/dist/locales/sq.json +17 -0
- package/dist/locales/sv.json +17 -0
- package/dist/locales/tr.json +17 -0
- package/dist/locales/zh.json +17 -0
- package/dist/patterns/anamnesis/anamnesis-baseline.d.ts +6 -0
- package/dist/patterns/anamnesis/anamnesis-baseline.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-compile.d.ts +4 -1
- package/dist/patterns/anamnesis/anamnesis-compile.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts +8 -9
- package/dist/patterns/anamnesis/anamnesis-evolution-grid.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-evolution.d.ts +24 -12
- package/dist/patterns/anamnesis/anamnesis-evolution.d.ts.map +1 -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-intake.d.ts +5 -1
- package/dist/patterns/anamnesis/anamnesis-intake.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts +4 -1
- package/dist/patterns/anamnesis/anamnesis-questionnaire.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-readonly.d.ts +4 -1
- package/dist/patterns/anamnesis/anamnesis-readonly.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis-source-blocks.d.ts +29 -0
- package/dist/patterns/anamnesis/anamnesis-source-blocks.d.ts.map +1 -0
- package/dist/patterns/anamnesis/anamnesis-window.d.ts +3 -5
- package/dist/patterns/anamnesis/anamnesis-window.d.ts.map +1 -1
- package/dist/patterns/anamnesis/anamnesis.d.ts +4 -1
- package/dist/patterns/anamnesis/anamnesis.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 +5 -2
- package/package.json +5 -1
- package/dist/_chunks/actions-cell-renderer-C67oj7mR.js +0 -1581
- package/dist/_chunks/actions-cell-renderer-C67oj7mR.js.map +0 -1
- package/dist/_chunks/anamnesis-summary-card-CpQViN5l.js +0 -392
- package/dist/_chunks/anamnesis-summary-card-CpQViN5l.js.map +0 -1
- package/dist/_chunks/anamnesis-summary-rows-Dw3l6nOD.js.map +0 -1
- package/dist/_chunks/form-field-M5UpX65Z.js +0 -123
- package/dist/_chunks/form-field-M5UpX65Z.js.map +0 -1
- package/dist/_chunks/number-input-DOe5VYei.js +0 -370
- package/dist/_chunks/number-input-DOe5VYei.js.map +0 -1
- package/dist/_chunks/radio-group-CI-6SmSw.js +0 -167
- package/dist/_chunks/radio-group-CI-6SmSw.js.map +0 -1
- package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts +0 -89
- package/dist/patterns/anamnesis/anamnesis-compare-panel.d.ts.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"periodontal-risk-chart-bUGkMwDg.js","sources":["../../src/components/periodontal-risk-chart/periodontal-risk-chart.agent.ts","../../src/components/periodontal-risk-chart/periodontal-risk-data.ts","../../src/components/periodontal-risk-chart/periodontal-risk-chart.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { PeriodontalRiskChartHandle } from './periodontal-risk-chart';\n\n/* -------------------------------------------------------------------- */\n/* PeriodontalRiskChart — agent adapter */\n/* */\n/* Read-only. Exposes the derived risk verdict and per-factor levels — */\n/* ordinal risk bands only, never the raw clinical inputs or any patient */\n/* identity. */\n/* -------------------------------------------------------------------- */\n\nexport const periodontalRiskChartAgent: AgentAdapter<PeriodontalRiskChartHandle> =\n {\n id: 'periodontal-risk-chart',\n capabilities: [],\n state: {\n overall: {\n type: 'string',\n descriptionKey: 'ui.agent.periodontalRiskChart.state.overall',\n description:\n 'Overall periodontal risk verdict — \"low\" | \"moderate\" | \"high\". Aggregate only.',\n read: (handle) => handle.getOverall(),\n },\n factorLevels: {\n type: 'object',\n descriptionKey: 'ui.agent.periodontalRiskChart.state.factorLevels',\n description:\n 'Per-factor risk levels keyed by factor (bleeding, pockets, toothLoss, boneLossAge, smoking, systemic) — each \"low\" | \"moderate\" | \"high\". No raw values.',\n read: (handle) => handle.getFactorLevels(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'periodontal-risk-chart',\n description: 'Marks the PeriodontalRiskChart root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n };\n","/* -------------------------------------------------------------------- */\n/* PeriodontalRiskChart — data model */\n/* */\n/* The Lang & Tonetti (2003) periodontal risk assessment — six vectors, */\n/* each scored low / moderate / high, drawn as a hexagon \"spider web\". */\n/* This module owns the thresholds and the pure scoring function; the */\n/* component owns only the geometry + a11y presentation. */\n/* -------------------------------------------------------------------- */\n\n/** The six risk vectors of the Lang & Tonetti diagram. */\nexport const PERIODONTAL_RISK_FACTORS = [\n 'bleeding',\n 'pockets',\n 'toothLoss',\n 'boneLossAge',\n 'smoking',\n 'systemic',\n] as const;\n\nexport type PeriodontalRiskFactor = (typeof PERIODONTAL_RISK_FACTORS)[number];\n\n/** Ordinal risk level for one factor and for the whole assessment. */\nexport type PeriodontalRiskLevel = 'low' | 'moderate' | 'high';\n\n/** Environmental (smoking) exposure bands. */\nexport type SmokingExposure =\n | 'none'\n | 'former'\n | 'light'\n | 'moderate'\n | 'heavy';\n\n/** Consumer-supplied risk inputs. All optional — an absent factor scores low. */\nexport interface PeriodontalRiskInputs {\n /** Bleeding on probing, % of sites (0–100). */\n bleedingPercent?: number;\n /** Number of residual pockets ≥ 5 mm. */\n pocketsOver5mm?: number;\n /** Number of teeth lost (of 28, third molars excluded). */\n toothLoss?: number;\n /** % bone loss at the worst site — combined with `ageYears` into BL/age. */\n boneLossPercent?: number;\n /** Patient age in years (denominator of the bone-loss/age ratio). */\n ageYears?: number;\n /** Smoking exposure band. */\n smoking?: SmokingExposure;\n /** A relevant systemic / genetic factor is present (e.g. diabetes, IL-1). */\n systemic?: boolean;\n}\n\n/** Scored result for one factor. */\nexport interface PeriodontalRiskFactorScore {\n factor: PeriodontalRiskFactor;\n level: PeriodontalRiskLevel;\n /** 0 (best) → 1 (worst): the normalised radius used to plot the vertex. */\n radius: number;\n /** Raw value formatted for the accessible summary, or null when unset. */\n valueText: string | null;\n}\n\n/** The whole assessment. */\nexport interface PeriodontalRiskResult {\n factors: PeriodontalRiskFactorScore[];\n overall: PeriodontalRiskLevel;\n}\n\nconst LEVEL_RADIUS: Record<PeriodontalRiskLevel, number> = {\n low: 0.4,\n moderate: 0.7,\n high: 1,\n};\n\n/** Order a level to an ordinal (low 0 … high 2). */\nexport function riskOrdinal(level: PeriodontalRiskLevel): 0 | 1 | 2 {\n return level === 'high' ? 2 : level === 'moderate' ? 1 : 0;\n}\n\nfunction band(\n value: number,\n moderateAt: number,\n highAt: number,\n): PeriodontalRiskLevel {\n if (value >= highAt) return 'high';\n if (value >= moderateAt) return 'moderate';\n return 'low';\n}\n\nconst SMOKING_LEVEL: Record<SmokingExposure, PeriodontalRiskLevel> = {\n none: 'low',\n former: 'low',\n light: 'moderate',\n moderate: 'high',\n heavy: 'high',\n};\n\n/**\n * Score the six vectors and the overall risk. Overall follows the Lang &\n * Tonetti reading: high if any vector is high or two-or-more are moderate;\n * low only when every vector is low; moderate otherwise.\n */\nexport function computePeriodontalRisk(\n inputs: PeriodontalRiskInputs,\n): PeriodontalRiskResult {\n const scores: PeriodontalRiskFactorScore[] = [];\n\n const push = (\n factor: PeriodontalRiskFactor,\n level: PeriodontalRiskLevel,\n valueText: string | null,\n ) => scores.push({ factor, level, radius: LEVEL_RADIUS[level], valueText });\n\n // Bleeding on probing (%): <10 low, 10–25 moderate, >25 high.\n {\n const v = inputs.bleedingPercent;\n push(\n 'bleeding',\n v == null ? 'low' : band(v, 10, 26),\n v == null ? null : `${Math.round(v)}%`,\n );\n }\n // Residual pockets ≥5 mm: ≤4 low, 5–8 moderate, ≥9 high.\n {\n const v = inputs.pocketsOver5mm;\n push(\n 'pockets',\n v == null ? 'low' : band(v, 5, 9),\n v == null ? null : String(v),\n );\n }\n // Tooth loss: ≤4 low, 5–8 moderate, ≥9 high.\n {\n const v = inputs.toothLoss;\n push(\n 'toothLoss',\n v == null ? 'low' : band(v, 5, 9),\n v == null ? null : String(v),\n );\n }\n // Bone loss / age ratio: <0.5 low, 0.5–1.0 moderate, >1.0 high.\n {\n const bl = inputs.boneLossPercent;\n const age = inputs.ageYears;\n if (bl == null || age == null || age <= 0) {\n push('boneLossAge', 'low', null);\n } else {\n const ratio = bl / age;\n push(\n 'boneLossAge',\n ratio > 1 ? 'high' : ratio >= 0.5 ? 'moderate' : 'low',\n ratio.toFixed(2),\n );\n }\n }\n // Environmental (smoking).\n {\n const v = inputs.smoking;\n push('smoking', v == null ? 'low' : SMOKING_LEVEL[v], v ?? null);\n }\n // Systemic / genetic: present → high.\n {\n const v = inputs.systemic;\n push('systemic', v ? 'high' : 'low', v == null ? null : v ? 'yes' : 'no');\n }\n\n const highs = scores.filter((s) => s.level === 'high').length;\n const moderates = scores.filter((s) => s.level === 'moderate').length;\n const overall: PeriodontalRiskLevel =\n highs > 0 || moderates >= 2 ? 'high' : moderates === 1 ? 'moderate' : 'low';\n\n return { factors: scores, overall };\n}\n","import {\n forwardRef,\n useId,\n useMemo,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { periodontalRiskChartAgent } from './periodontal-risk-chart.agent';\nimport {\n computePeriodontalRisk,\n PERIODONTAL_RISK_FACTORS,\n type PeriodontalRiskFactor,\n type PeriodontalRiskInputs,\n type PeriodontalRiskLevel,\n} from './periodontal-risk-data';\n\n/* -------------------------------------------------------------------- */\n/* PeriodontalRiskChart */\n/* */\n/* The Lang & Tonetti (2003) periodontal risk \"spider web\": six vectors */\n/* (bleeding, residual pockets, tooth loss, bone-loss/age, smoking, */\n/* systemic) each scored low / moderate / high, drawn as a hexagon. */\n/* */\n/* The hexagon SVG is DECORATIVE (aria-hidden) — the accessible source */\n/* of truth is the worded summary: an overall-risk Badge plus a <dl> of */\n/* the six factors with their level and value. Colour is never the sole */\n/* cue (every band and the overall verdict is also worded). */\n/* -------------------------------------------------------------------- */\n\nconst VIEW = 240;\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: { flat: '', elevated: '' },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\nexport interface PeriodontalRiskChartHandle {\n /** The overall risk verdict. */\n getOverall: () => PeriodontalRiskLevel;\n /** Per-factor risk levels, keyed by factor. */\n getFactorLevels: () => Record<PeriodontalRiskFactor, PeriodontalRiskLevel>;\n}\n\nexport interface PeriodontalRiskChartProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children'\n> {\n /** The six risk inputs. Absent factors score low. */\n inputs: PeriodontalRiskInputs;\n /** `'elevated'` (default) wraps in a Card; `'flat'` drops the chrome. */\n surface?: 'flat' | 'elevated';\n /** Locale for number formatting. Falls back to `i18n.language`. */\n locale?: string;\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Geometry */\n/* -------------------------------------------------------------------- */\n\nconst CENTER = VIEW / 2;\nconst RADIUS = VIEW / 2 - 16;\n\n/** Vertex `i` (0 = top, clockwise) at a given radius. */\nfunction vertex(i: number, r: number): { x: number; y: number } {\n const angle = ((-90 + i * 60) * Math.PI) / 180;\n return { x: CENTER + r * Math.cos(angle), y: CENTER + r * Math.sin(angle) };\n}\n\n/** The six-point polygon string for a ring at fraction `f` of the radius. */\nfunction hexPoints(f: number): string {\n return PERIODONTAL_RISK_FACTORS.map((_, i) => {\n const v = vertex(i, RADIUS * f);\n return `${v.x.toFixed(1)},${v.y.toFixed(1)}`;\n }).join(' ');\n}\n\nconst BADGE_TONE: Record<\n PeriodontalRiskLevel,\n 'success' | 'warning' | 'error'\n> = {\n low: 'success',\n moderate: 'warning',\n high: 'error',\n};\n\nconst LEVEL_DEFAULT: Record<PeriodontalRiskLevel, string> = {\n low: 'Low',\n moderate: 'Moderate',\n high: 'High',\n};\n\nconst FACTOR_DEFAULT: Record<PeriodontalRiskFactor, string> = {\n bleeding: 'Bleeding on probing',\n pockets: 'Residual pockets ≥5 mm',\n toothLoss: 'Tooth loss',\n boneLossAge: 'Bone loss / age',\n smoking: 'Smoking',\n systemic: 'Systemic / genetic',\n};\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const PeriodontalRiskChart = forwardRef<\n HTMLDivElement,\n PeriodontalRiskChartProps\n>(\n (\n {\n inputs,\n surface = 'elevated',\n locale,\n 'aria-label': ariaLabel,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const resolvedLocale = locale ?? i18n.language ?? 'en';\n\n const result = useMemo(() => computePeriodontalRisk(inputs), [inputs]);\n\n useAgentRegistration(\n periodontalRiskChartAgent,\n {\n getOverall: () => result.overall,\n getFactorLevels: () =>\n Object.fromEntries(\n result.factors.map((f) => [f.factor, f.level]),\n ) as Record<PeriodontalRiskFactor, PeriodontalRiskLevel>,\n },\n id,\n );\n\n const patientPoints = result.factors\n .map((f, i) => {\n const v = vertex(i, RADIUS * f.radius);\n return `${v.x.toFixed(1)},${v.y.toFixed(1)}`;\n })\n .join(' ');\n\n const levelLabel = (level: PeriodontalRiskLevel): string =>\n t(`periodontalRiskChart.level.${level}`, {\n defaultValue: LEVEL_DEFAULT[level],\n });\n\n const factorValueText = (\n factor: PeriodontalRiskFactor,\n raw: string | null,\n ): string => {\n if (raw == null)\n return t('periodontalRiskChart.valueUnset', 'not recorded');\n if (factor === 'smoking')\n return t(`periodontalRiskChart.smoking.${raw}`, { defaultValue: raw });\n if (factor === 'systemic')\n return t(`periodontalRiskChart.systemic.${raw}`, { defaultValue: raw });\n if (factor === 'bleeding') {\n // raw already carries the '%' glyph from the data layer; localise digits.\n const n = Number.parseFloat(raw);\n if (Number.isFinite(n)) {\n try {\n return t('periodontalRiskChart.percent', {\n value: new Intl.NumberFormat(resolvedLocale, {\n maximumFractionDigits: 0,\n }).format(n),\n defaultValue: '{{value}}%',\n });\n } catch {\n return raw;\n }\n }\n }\n return raw;\n };\n\n const heading = t('periodontalRiskChart.heading', 'Periodontal risk');\n const resolvedAriaLabel = ariaLabel ?? heading;\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <h2\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {heading}\n </h2>\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('periodontalRiskChart.overall.label', 'Overall')}\n </span>\n <Badge variant={BADGE_TONE[result.overall]} size=\"sm\">\n {levelLabel(result.overall)}\n </Badge>\n </span>\n </div>\n\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-lg)]\">\n {/* Decorative hexagon — the <dl> below is the accessible source. */}\n <svg\n viewBox={`0 0 ${VIEW} ${VIEW}`}\n className=\"ds:w-full ds:max-w-[240px] ds:aspect-square\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polygon\n points={hexPoints(1)}\n fill=\"var(--destructive)\"\n fillOpacity={0.1}\n />\n <polygon\n points={hexPoints(0.7)}\n fill=\"var(--warning)\"\n fillOpacity={0.12}\n />\n <polygon\n points={hexPoints(0.4)}\n fill=\"var(--success)\"\n fillOpacity={0.14}\n />\n {[1, 0.7, 0.4].map((f) => (\n <polygon\n key={f}\n points={hexPoints(f)}\n fill=\"none\"\n stroke=\"var(--border)\"\n strokeWidth={1}\n />\n ))}\n {PERIODONTAL_RISK_FACTORS.map((_, i) => {\n const v = vertex(i, RADIUS);\n return (\n <line\n key={i}\n x1={CENTER}\n y1={CENTER}\n x2={v.x}\n y2={v.y}\n stroke=\"var(--border)\"\n strokeWidth={1}\n />\n );\n })}\n <polygon\n points={patientPoints}\n fill=\"var(--primary)\"\n fillOpacity={0.18}\n stroke=\"var(--primary)\"\n strokeWidth={2}\n strokeLinejoin=\"round\"\n />\n {result.factors.map((f, i) => {\n const v = vertex(i, RADIUS * f.radius);\n return (\n <circle\n key={f.factor}\n cx={v.x}\n cy={v.y}\n r={3}\n fill=\"var(--primary)\"\n />\n );\n })}\n </svg>\n\n <dl\n className=\"type-body-sm ds:grid ds:min-w-[12rem] ds:flex-1 ds:grid-cols-[auto_1fr] ds:gap-x-[var(--spacing-md)] ds:gap-y-[var(--spacing-2xs)] ds:m-0\"\n aria-label={t('periodontalRiskChart.factors.label', 'Risk factors')}\n >\n {result.factors.map((f) => (\n <div key={f.factor} className=\"ds:contents\">\n <dt className=\"ds:text-[color:var(--muted-foreground)]\">\n {t(`periodontalRiskChart.factor.${f.factor}`, {\n defaultValue: FACTOR_DEFAULT[f.factor],\n })}\n </dt>\n <dd className=\"ds:m-0 ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <Badge variant={BADGE_TONE[f.level]} size=\"sm\">\n {levelLabel(f.level)}\n </Badge>\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {factorValueText(f.factor, f.valueText)}\n </span>\n </dd>\n </div>\n ))}\n </dl>\n </div>\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={resolvedAriaLabel}\n data-component=\"periodontal-risk-chart\"\n data-component-id={id}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nPeriodontalRiskChart.displayName = 'PeriodontalRiskChart';\n\nexport type PeriodontalRiskChartSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["periodontalRiskChartAgent","handle","PERIODONTAL_RISK_FACTORS","LEVEL_RADIUS","riskOrdinal","level","band","value","moderateAt","highAt","SMOKING_LEVEL","computePeriodontalRisk","inputs","scores","push","factor","valueText","v","bl","age","ratio","highs","s","moderates","overall","VIEW","rootVariants","cva","CENTER","RADIUS","vertex","i","r","angle","hexPoints","f","_","BADGE_TONE","LEVEL_DEFAULT","FACTOR_DEFAULT","PeriodontalRiskChart","forwardRef","surface","locale","ariaLabel","id","className","rest","ref","t","i18n","useTranslation","headingId","useId","resolvedLocale","result","useMemo","useAgentRegistration","patientPoints","levelLabel","factorValueText","raw","n","heading","resolvedAriaLabel","inner","jsxs","jsx","Badge","Card"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"periodontal-risk-chart-ByKuM4cF.js","sources":["../../src/components/periodontal-risk-chart/periodontal-risk-chart.agent.ts","../../src/components/periodontal-risk-chart/periodontal-risk-data.ts","../../src/components/periodontal-risk-chart/periodontal-risk-chart.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { PeriodontalRiskChartHandle } from './periodontal-risk-chart';\n\n/* -------------------------------------------------------------------- */\n/* PeriodontalRiskChart — agent adapter */\n/* */\n/* Read-only. Exposes the derived risk verdict and per-factor levels — */\n/* ordinal risk bands only, never the raw clinical inputs or any patient */\n/* identity. */\n/* -------------------------------------------------------------------- */\n\nexport const periodontalRiskChartAgent: AgentAdapter<PeriodontalRiskChartHandle> =\n {\n id: 'periodontal-risk-chart',\n capabilities: [],\n state: {\n overall: {\n type: 'string',\n descriptionKey: 'ui.agent.periodontalRiskChart.state.overall',\n description:\n 'Overall periodontal risk verdict — \"low\" | \"moderate\" | \"high\". Aggregate only.',\n read: (handle) => handle.getOverall(),\n },\n factorLevels: {\n type: 'object',\n descriptionKey: 'ui.agent.periodontalRiskChart.state.factorLevels',\n description:\n 'Per-factor risk levels keyed by factor (bleeding, pockets, toothLoss, boneLossAge, smoking, systemic) — each \"low\" | \"moderate\" | \"high\". No raw values.',\n read: (handle) => handle.getFactorLevels(),\n },\n },\n actions: {},\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'periodontal-risk-chart',\n description: 'Marks the PeriodontalRiskChart root region.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n };\n","/* -------------------------------------------------------------------- */\n/* PeriodontalRiskChart — data model */\n/* */\n/* The Lang & Tonetti (2003) periodontal risk assessment — six vectors, */\n/* each scored low / moderate / high, drawn as a hexagon \"spider web\". */\n/* This module owns the thresholds and the pure scoring function; the */\n/* component owns only the geometry + a11y presentation. */\n/* -------------------------------------------------------------------- */\n\n/** The six risk vectors of the Lang & Tonetti diagram. */\nexport const PERIODONTAL_RISK_FACTORS = [\n 'bleeding',\n 'pockets',\n 'toothLoss',\n 'boneLossAge',\n 'smoking',\n 'systemic',\n] as const;\n\nexport type PeriodontalRiskFactor = (typeof PERIODONTAL_RISK_FACTORS)[number];\n\n/** Ordinal risk level for one factor and for the whole assessment. */\nexport type PeriodontalRiskLevel = 'low' | 'moderate' | 'high';\n\n/** Environmental (smoking) exposure bands. */\nexport type SmokingExposure =\n | 'none'\n | 'former'\n | 'light'\n | 'moderate'\n | 'heavy';\n\n/** Consumer-supplied risk inputs. All optional — an absent factor scores low. */\nexport interface PeriodontalRiskInputs {\n /** Bleeding on probing, % of sites (0–100). */\n bleedingPercent?: number;\n /** Number of residual pockets ≥ 5 mm. */\n pocketsOver5mm?: number;\n /** Number of teeth lost (of 28, third molars excluded). */\n toothLoss?: number;\n /** % bone loss at the worst site — combined with `ageYears` into BL/age. */\n boneLossPercent?: number;\n /** Patient age in years (denominator of the bone-loss/age ratio). */\n ageYears?: number;\n /** Smoking exposure band. */\n smoking?: SmokingExposure;\n /** A relevant systemic / genetic factor is present (e.g. diabetes, IL-1). */\n systemic?: boolean;\n}\n\n/** Scored result for one factor. */\nexport interface PeriodontalRiskFactorScore {\n factor: PeriodontalRiskFactor;\n level: PeriodontalRiskLevel;\n /** 0 (best) → 1 (worst): the normalised radius used to plot the vertex. */\n radius: number;\n /** Raw value formatted for the accessible summary, or null when unset. */\n valueText: string | null;\n}\n\n/** The whole assessment. */\nexport interface PeriodontalRiskResult {\n factors: PeriodontalRiskFactorScore[];\n overall: PeriodontalRiskLevel;\n}\n\nconst LEVEL_RADIUS: Record<PeriodontalRiskLevel, number> = {\n low: 0.4,\n moderate: 0.7,\n high: 1,\n};\n\n/** Order a level to an ordinal (low 0 … high 2). */\nexport function riskOrdinal(level: PeriodontalRiskLevel): 0 | 1 | 2 {\n return level === 'high' ? 2 : level === 'moderate' ? 1 : 0;\n}\n\nfunction band(\n value: number,\n moderateAt: number,\n highAt: number,\n): PeriodontalRiskLevel {\n if (value >= highAt) return 'high';\n if (value >= moderateAt) return 'moderate';\n return 'low';\n}\n\nconst SMOKING_LEVEL: Record<SmokingExposure, PeriodontalRiskLevel> = {\n none: 'low',\n former: 'low',\n light: 'moderate',\n moderate: 'high',\n heavy: 'high',\n};\n\n/**\n * Score the six vectors and the overall risk. Overall follows the Lang &\n * Tonetti reading: high if any vector is high or two-or-more are moderate;\n * low only when every vector is low; moderate otherwise.\n */\nexport function computePeriodontalRisk(\n inputs: PeriodontalRiskInputs,\n): PeriodontalRiskResult {\n const scores: PeriodontalRiskFactorScore[] = [];\n\n const push = (\n factor: PeriodontalRiskFactor,\n level: PeriodontalRiskLevel,\n valueText: string | null,\n ) => scores.push({ factor, level, radius: LEVEL_RADIUS[level], valueText });\n\n // Bleeding on probing (%): <10 low, 10–25 moderate, >25 high.\n {\n const v = inputs.bleedingPercent;\n push(\n 'bleeding',\n v == null ? 'low' : band(v, 10, 26),\n v == null ? null : `${Math.round(v)}%`,\n );\n }\n // Residual pockets ≥5 mm: ≤4 low, 5–8 moderate, ≥9 high.\n {\n const v = inputs.pocketsOver5mm;\n push(\n 'pockets',\n v == null ? 'low' : band(v, 5, 9),\n v == null ? null : String(v),\n );\n }\n // Tooth loss: ≤4 low, 5–8 moderate, ≥9 high.\n {\n const v = inputs.toothLoss;\n push(\n 'toothLoss',\n v == null ? 'low' : band(v, 5, 9),\n v == null ? null : String(v),\n );\n }\n // Bone loss / age ratio: <0.5 low, 0.5–1.0 moderate, >1.0 high.\n {\n const bl = inputs.boneLossPercent;\n const age = inputs.ageYears;\n if (bl == null || age == null || age <= 0) {\n push('boneLossAge', 'low', null);\n } else {\n const ratio = bl / age;\n push(\n 'boneLossAge',\n ratio > 1 ? 'high' : ratio >= 0.5 ? 'moderate' : 'low',\n ratio.toFixed(2),\n );\n }\n }\n // Environmental (smoking).\n {\n const v = inputs.smoking;\n push('smoking', v == null ? 'low' : SMOKING_LEVEL[v], v ?? null);\n }\n // Systemic / genetic: present → high.\n {\n const v = inputs.systemic;\n push('systemic', v ? 'high' : 'low', v == null ? null : v ? 'yes' : 'no');\n }\n\n const highs = scores.filter((s) => s.level === 'high').length;\n const moderates = scores.filter((s) => s.level === 'moderate').length;\n const overall: PeriodontalRiskLevel =\n highs > 0 || moderates >= 2 ? 'high' : moderates === 1 ? 'moderate' : 'low';\n\n return { factors: scores, overall };\n}\n","import {\n forwardRef,\n useId,\n useMemo,\n type ComponentPropsWithoutRef,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '../badge/badge';\nimport { Card } from '../card/card';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { periodontalRiskChartAgent } from './periodontal-risk-chart.agent';\nimport {\n computePeriodontalRisk,\n PERIODONTAL_RISK_FACTORS,\n type PeriodontalRiskFactor,\n type PeriodontalRiskInputs,\n type PeriodontalRiskLevel,\n} from './periodontal-risk-data';\n\n/* -------------------------------------------------------------------- */\n/* PeriodontalRiskChart */\n/* */\n/* The Lang & Tonetti (2003) periodontal risk \"spider web\": six vectors */\n/* (bleeding, residual pockets, tooth loss, bone-loss/age, smoking, */\n/* systemic) each scored low / moderate / high, drawn as a hexagon. */\n/* */\n/* The hexagon SVG is DECORATIVE (aria-hidden) — the accessible source */\n/* of truth is the worded summary: an overall-risk Badge plus a <dl> of */\n/* the six factors with their level and value. Colour is never the sole */\n/* cue (every band and the overall verdict is also worded). */\n/* -------------------------------------------------------------------- */\n\nconst VIEW = 240;\n\nconst rootVariants = cva('ds:w-full ds:text-[color:var(--foreground)]', {\n variants: {\n surface: { flat: '', elevated: '' },\n },\n defaultVariants: { surface: 'elevated' },\n});\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\nexport interface PeriodontalRiskChartHandle {\n /** The overall risk verdict. */\n getOverall: () => PeriodontalRiskLevel;\n /** Per-factor risk levels, keyed by factor. */\n getFactorLevels: () => Record<PeriodontalRiskFactor, PeriodontalRiskLevel>;\n}\n\nexport interface PeriodontalRiskChartProps extends Omit<\n ComponentPropsWithoutRef<'div'>,\n 'aria-label' | 'children'\n> {\n /** The six risk inputs. Absent factors score low. */\n inputs: PeriodontalRiskInputs;\n /** `'elevated'` (default) wraps in a Card; `'flat'` drops the chrome. */\n surface?: 'flat' | 'elevated';\n /** Locale for number formatting. Falls back to `i18n.language`. */\n locale?: string;\n /** Override the default region aria-label. */\n 'aria-label'?: string;\n /** Agent-readiness consumer id, surfaced as `data-component-id`. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Geometry */\n/* -------------------------------------------------------------------- */\n\nconst CENTER = VIEW / 2;\nconst RADIUS = VIEW / 2 - 16;\n\n/** Vertex `i` (0 = top, clockwise) at a given radius. */\nfunction vertex(i: number, r: number): { x: number; y: number } {\n const angle = ((-90 + i * 60) * Math.PI) / 180;\n return { x: CENTER + r * Math.cos(angle), y: CENTER + r * Math.sin(angle) };\n}\n\n/** The six-point polygon string for a ring at fraction `f` of the radius. */\nfunction hexPoints(f: number): string {\n return PERIODONTAL_RISK_FACTORS.map((_, i) => {\n const v = vertex(i, RADIUS * f);\n return `${v.x.toFixed(1)},${v.y.toFixed(1)}`;\n }).join(' ');\n}\n\nconst BADGE_TONE: Record<\n PeriodontalRiskLevel,\n 'success' | 'warning' | 'error'\n> = {\n low: 'success',\n moderate: 'warning',\n high: 'error',\n};\n\nconst LEVEL_DEFAULT: Record<PeriodontalRiskLevel, string> = {\n low: 'Low',\n moderate: 'Moderate',\n high: 'High',\n};\n\nconst FACTOR_DEFAULT: Record<PeriodontalRiskFactor, string> = {\n bleeding: 'Bleeding on probing',\n pockets: 'Residual pockets ≥5 mm',\n toothLoss: 'Tooth loss',\n boneLossAge: 'Bone loss / age',\n smoking: 'Smoking',\n systemic: 'Systemic / genetic',\n};\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const PeriodontalRiskChart = forwardRef<\n HTMLDivElement,\n PeriodontalRiskChartProps\n>(\n (\n {\n inputs,\n surface = 'elevated',\n locale,\n 'aria-label': ariaLabel,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation();\n const headingId = useId();\n const resolvedLocale = locale ?? i18n.language ?? 'en';\n\n const result = useMemo(() => computePeriodontalRisk(inputs), [inputs]);\n\n useAgentRegistration(\n periodontalRiskChartAgent,\n {\n getOverall: () => result.overall,\n getFactorLevels: () =>\n Object.fromEntries(\n result.factors.map((f) => [f.factor, f.level]),\n ) as Record<PeriodontalRiskFactor, PeriodontalRiskLevel>,\n },\n id,\n );\n\n const patientPoints = result.factors\n .map((f, i) => {\n const v = vertex(i, RADIUS * f.radius);\n return `${v.x.toFixed(1)},${v.y.toFixed(1)}`;\n })\n .join(' ');\n\n const levelLabel = (level: PeriodontalRiskLevel): string =>\n t(`periodontalRiskChart.level.${level}`, {\n defaultValue: LEVEL_DEFAULT[level],\n });\n\n const factorValueText = (\n factor: PeriodontalRiskFactor,\n raw: string | null,\n ): string => {\n if (raw == null)\n return t('periodontalRiskChart.valueUnset', 'not recorded');\n if (factor === 'smoking')\n return t(`periodontalRiskChart.smoking.${raw}`, { defaultValue: raw });\n if (factor === 'systemic')\n return t(`periodontalRiskChart.systemic.${raw}`, { defaultValue: raw });\n if (factor === 'bleeding') {\n // raw already carries the '%' glyph from the data layer; localise digits.\n const n = Number.parseFloat(raw);\n if (Number.isFinite(n)) {\n try {\n return t('periodontalRiskChart.percent', {\n value: new Intl.NumberFormat(resolvedLocale, {\n maximumFractionDigits: 0,\n }).format(n),\n defaultValue: '{{value}}%',\n });\n } catch {\n return raw;\n }\n }\n }\n return raw;\n };\n\n const heading = t('periodontalRiskChart.heading', 'Periodontal risk');\n const resolvedAriaLabel = ariaLabel ?? heading;\n\n const inner = (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <h2\n id={headingId}\n className=\"type-title-card ds:m-0 ds:text-[color:var(--foreground)]\"\n >\n {heading}\n </h2>\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {t('periodontalRiskChart.overall.label', 'Overall')}\n </span>\n <Badge variant={BADGE_TONE[result.overall]} size=\"sm\">\n {levelLabel(result.overall)}\n </Badge>\n </span>\n </div>\n\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-lg)]\">\n {/* Decorative hexagon — the <dl> below is the accessible source. */}\n <svg\n viewBox={`0 0 ${VIEW} ${VIEW}`}\n className=\"ds:w-full ds:max-w-[240px] ds:aspect-square\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <polygon\n points={hexPoints(1)}\n fill=\"var(--destructive)\"\n fillOpacity={0.1}\n />\n <polygon\n points={hexPoints(0.7)}\n fill=\"var(--warning)\"\n fillOpacity={0.12}\n />\n <polygon\n points={hexPoints(0.4)}\n fill=\"var(--success)\"\n fillOpacity={0.14}\n />\n {[1, 0.7, 0.4].map((f) => (\n <polygon\n key={f}\n points={hexPoints(f)}\n fill=\"none\"\n stroke=\"var(--border)\"\n strokeWidth={1}\n />\n ))}\n {PERIODONTAL_RISK_FACTORS.map((_, i) => {\n const v = vertex(i, RADIUS);\n return (\n <line\n key={i}\n x1={CENTER}\n y1={CENTER}\n x2={v.x}\n y2={v.y}\n stroke=\"var(--border)\"\n strokeWidth={1}\n />\n );\n })}\n <polygon\n points={patientPoints}\n fill=\"var(--primary)\"\n fillOpacity={0.18}\n stroke=\"var(--primary)\"\n strokeWidth={2}\n strokeLinejoin=\"round\"\n />\n {result.factors.map((f, i) => {\n const v = vertex(i, RADIUS * f.radius);\n return (\n <circle\n key={f.factor}\n cx={v.x}\n cy={v.y}\n r={3}\n fill=\"var(--primary)\"\n />\n );\n })}\n </svg>\n\n <dl\n className=\"type-body-sm ds:grid ds:min-w-[12rem] ds:flex-1 ds:grid-cols-[auto_1fr] ds:gap-x-[var(--spacing-md)] ds:gap-y-[var(--spacing-2xs)] ds:m-0\"\n aria-label={t('periodontalRiskChart.factors.label', 'Risk factors')}\n >\n {result.factors.map((f) => (\n <div key={f.factor} className=\"ds:contents\">\n <dt className=\"ds:text-[color:var(--muted-foreground)]\">\n {t(`periodontalRiskChart.factor.${f.factor}`, {\n defaultValue: FACTOR_DEFAULT[f.factor],\n })}\n </dt>\n <dd className=\"ds:m-0 ds:flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <Badge variant={BADGE_TONE[f.level]} size=\"sm\">\n {levelLabel(f.level)}\n </Badge>\n <span className=\"type-meta ds:text-[color:var(--muted-foreground)]\">\n {factorValueText(f.factor, f.valueText)}\n </span>\n </dd>\n </div>\n ))}\n </dl>\n </div>\n </div>\n );\n\n return (\n <div\n ref={ref}\n role=\"group\"\n aria-label={resolvedAriaLabel}\n data-component=\"periodontal-risk-chart\"\n data-component-id={id}\n id={id}\n className={rootVariants({ surface, className })}\n {...rest}\n >\n {surface === 'elevated' ? (\n <Card variant=\"elevated\">\n <Card.Body>{inner}</Card.Body>\n </Card>\n ) : (\n inner\n )}\n </div>\n );\n },\n);\n\nPeriodontalRiskChart.displayName = 'PeriodontalRiskChart';\n\nexport type PeriodontalRiskChartSurface = NonNullable<\n VariantProps<typeof rootVariants>['surface']\n>;\n"],"names":["periodontalRiskChartAgent","handle","PERIODONTAL_RISK_FACTORS","LEVEL_RADIUS","riskOrdinal","level","band","value","moderateAt","highAt","SMOKING_LEVEL","computePeriodontalRisk","inputs","scores","push","factor","valueText","v","bl","age","ratio","highs","s","moderates","overall","VIEW","rootVariants","cva","CENTER","RADIUS","vertex","i","r","angle","hexPoints","f","_","BADGE_TONE","LEVEL_DEFAULT","FACTOR_DEFAULT","PeriodontalRiskChart","forwardRef","surface","locale","ariaLabel","id","className","rest","ref","t","i18n","useTranslation","headingId","useId","resolvedLocale","result","useMemo","useAgentRegistration","patientPoints","levelLabel","factorValueText","raw","n","heading","resolvedAriaLabel","inner","jsxs","jsx","Badge","Card"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { R as Ce } from "./rating-BYbUowdK.js";
|
|
|
12
12
|
import { S as I } from "./sheet-CD99CdXr.js";
|
|
13
13
|
import { S as Xe } from "./skeleton-CZbwyJAA.js";
|
|
14
14
|
import { S as Ye } from "./spinner-hbwuKwMf.js";
|
|
15
|
-
import { B as L } from "./badge-
|
|
15
|
+
import { B as L } from "./badge-CIt-UFEx.js";
|
|
16
16
|
import { u as et } from "./use-media-query-CcAx5SMM.js";
|
|
17
17
|
import { u as tt } from "./registry-DvAUVLHh.js";
|
|
18
18
|
import { c as nt } from "./createLucideIcon-DhHxpK9K.js";
|
|
@@ -1606,4 +1606,4 @@ export {
|
|
|
1606
1606
|
Ct as P,
|
|
1607
1607
|
rt as p
|
|
1608
1608
|
};
|
|
1609
|
-
//# sourceMappingURL=practice-results-
|
|
1609
|
+
//# sourceMappingURL=practice-results-C5exrEn0.js.map
|