@alfadocs/ui-kit 0.68.0 → 0.70.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{accordion-9lJSMMsZ.js → accordion-DnIa7OHX.js} +69 -47
- package/dist/_chunks/address-autocomplete-BEX9PXty.js +496 -0
- package/dist/_chunks/{agenda-card-BxSFkqgY.js → agenda-card-BQ-IKAru.js} +2 -2
- package/dist/_chunks/{agenda-card.agent-B_R47-c9.js → agenda-card.agent-mTCrkKSZ.js} +6 -1
- package/dist/_chunks/{agenda-tray-T-BumlGZ.js → agenda-tray-CGXRk58j.js} +37 -25
- package/dist/_chunks/{ai-consent-banner-Dxtx_WAh.js → ai-consent-banner-Be-h9mRI.js} +5 -5
- package/dist/_chunks/{ai-prompt-input-BwEACCPm.js → ai-prompt-input-CuhTo9mh.js} +80 -61
- package/dist/_chunks/ai-tools-rail-B5NEghsp.js +511 -0
- package/dist/_chunks/{alert-_mUKLmwA.js → alert-CHYZ96tR.js} +150 -96
- package/dist/_chunks/{alia-sidebar-Ckv0yCKi.js → alia-sidebar-B47qRQb5.js} +5 -5
- package/dist/_chunks/{anamnesis-card-N8pIKWuS.js → anamnesis-card-DvYCa16e.js} +3 -3
- package/dist/_chunks/anatomy-scheme-CJB6dI6p.js +2445 -0
- package/dist/_chunks/annotation-marker-qt5R9WZX.js +120 -0
- package/dist/_chunks/{antenatal-schedule-timeline-35ebkcZT.js → antenatal-schedule-timeline-CwXrQRm1.js} +2 -2
- package/dist/_chunks/appointment-card-C06aZqA7.js +310 -0
- package/dist/_chunks/appointment-timeline-BJM0S_Fg.js +386 -0
- package/dist/_chunks/appointment-tray-DRRw5ROi.js +193 -0
- package/dist/_chunks/{audio-recorder-DjXLP4aF.js → audio-recorder-Cpdk5qpQ.js} +60 -57
- package/dist/_chunks/{autocomplete-CcCFlVf-.js → autocomplete-DOeGouCL.js} +157 -132
- package/dist/_chunks/{badge-CqGsX32l.js → badge-DCOqV9mI.js} +32 -27
- package/dist/_chunks/bishop-score-DnYWtZa_.js +304 -0
- package/dist/_chunks/bmi-calculator-zjeY4E7J.js +434 -0
- package/dist/_chunks/{booking-L8-YP8BJ.js → booking-DUBI0oqt.js} +422 -399
- package/dist/_chunks/{breadcrumb-OTbaY70e.js → breadcrumb-CchdeG7d.js} +42 -28
- package/dist/_chunks/{calculator-dialog-CFk4I91b.js → calculator-dialog-BR5iU0kf.js} +2 -2
- package/dist/_chunks/{calendar-oYWOCrnf.js → calendar-CZUjL8SZ.js} +258 -201
- package/dist/_chunks/{care-plan-card-BwVUyUBb.js → care-plan-card-C5sTfY9G.js} +13 -9
- package/dist/_chunks/{care-plan-entry-card-VzdQHcOL.js → care-plan-entry-card-CXnxGCWA.js} +20 -16
- package/dist/_chunks/care-plan-header-BUwqDTtz.js +206 -0
- package/dist/_chunks/{carousel.agent-vt21A_el.js → carousel.agent-4v8Emr9E.js} +219 -198
- package/dist/_chunks/{chart-Cg3e9EH9.js → chart-CMr3eW62.js} +150 -109
- package/dist/_chunks/{chat-container-ogB4OskO.js → chat-container-DWho5hPR.js} +47 -34
- package/dist/_chunks/{chat-input-B5zjNEUN.js → chat-input-BcXTetgM.js} +57 -41
- package/dist/_chunks/{checkbox-DRcOdmXv.js → checkbox-BuZ1u__2.js} +41 -27
- package/dist/_chunks/{checkbox-group-CpUwlHug.js → checkbox-group-PqNmQ-cE.js} +3 -3
- package/dist/_chunks/clinical-note-card-BUvNMNGL.js +436 -0
- package/dist/_chunks/{collapsible-X3oaLPU3.js → collapsible-BrnRiCC6.js} +26 -23
- package/dist/_chunks/{color-picker-FXpItIaF.js → color-picker-C_fZl6sA.js} +124 -112
- package/dist/_chunks/{combobox-BC-DFx8G.js → combobox-Clum7gJ1.js} +165 -128
- package/dist/_chunks/{command-palette-BiPAAno-.js → command-palette-CJzmc5pC.js} +87 -64
- package/dist/_chunks/{contact-profile-card-7BMB85T6.js → contact-profile-card-DDPwRFiP.js} +13 -11
- package/dist/_chunks/control-room-rail-Y8ryLYsP.js +229 -0
- package/dist/_chunks/{copy-field-CCq7j6Zc.js → copy-field-Bjw9u2cV.js} +42 -35
- package/dist/_chunks/counter-dRlTNC_y.js +55 -0
- package/dist/_chunks/{cycle-calculator-BF0ointe.js → cycle-calculator-CCmPwcBl.js} +4 -4
- package/dist/_chunks/{date-picker-oGg5BnXL.js → date-picker-Dl9RKxaV.js} +76 -57
- package/dist/_chunks/{date-range-picker-C5BWfH_T.js → date-range-picker-CTUeR6Bj.js} +73 -46
- package/dist/_chunks/{date-time-picker-Ze1My59T.js → date-time-picker-BhoogS5Q.js} +64 -40
- package/dist/_chunks/{dependent-selector-DpzGtr_J.js → dependent-selector-DUV4thxX.js} +45 -31
- package/dist/_chunks/{dialog-DMGnSelc.js → dialog-ZNuboNmy.js} +35 -28
- package/dist/_chunks/{document-scanner-D2qehl3-.js → document-scanner-C_AxLooF.js} +13 -5
- package/dist/_chunks/{dropdown-menu-DwwPovMZ.js → dropdown-menu-qrxjymfw.js} +94 -93
- package/dist/_chunks/{due-date-calculator-DU9AEWNy.js → due-date-calculator-Brdj-euS.js} +6 -6
- package/dist/_chunks/editable-currency-cell-renderer-C9twtALM.js +328 -0
- package/dist/_chunks/email-input-DJ7EXklP.js +397 -0
- package/dist/_chunks/{entity-card-COhmqHly.js → entity-card-9_62gY7l.js} +38 -20
- package/dist/_chunks/entity-summary-BxRjFh_4.js +138 -0
- package/dist/_chunks/{fetal-weight-BVSzOhuR.js → fetal-weight-DNCkyeVo.js} +3 -3
- package/dist/_chunks/field-value-NXYczdpO.js +415 -0
- package/dist/_chunks/{file-upload-BosbPDb1.js → file-upload-DwZcAK8D.js} +119 -100
- package/dist/_chunks/{fiscal-code-input-DPtqluVb.js → fiscal-code-input-Cf-8O4Fj.js} +76 -63
- package/dist/_chunks/{freemium-paywall-CkWjv3o6.js → freemium-paywall-WYlNO7yT.js} +78 -71
- package/dist/_chunks/{gestational-age-calculator-DBlFdoiP.js → gestational-age-calculator-CF2ISaYQ.js} +7 -7
- package/dist/_chunks/hash-CysBBS_N.js +17 -0
- package/dist/_chunks/{hcg-doubling-if4Q8aSX.js → hcg-doubling-C7bmuaU3.js} +4 -4
- package/dist/_chunks/{header-settings-CNOqIhoW.js → header-settings-DJqoAl5m.js} +86 -46
- package/dist/_chunks/{index.modern-D2LGACWg.js → index.modern-Zta-A4Jm.js} +3 -3
- package/dist/_chunks/link-cell-renderer-CTXqtXV-.js +2184 -0
- package/dist/_chunks/{list-BOwqwy03.js → list-DgE1xWBM.js} +99 -84
- package/dist/_chunks/{locale-picker-C9JmBht3.js → locale-picker-ChYYSX2N.js} +47 -35
- package/dist/_chunks/lock-CKOIn0IK.js +15 -0
- package/dist/_chunks/{map-view-Tb5VfK9Y.js → map-view-BkOoGoX2.js} +160 -115
- package/dist/_chunks/{marketplace-app-shell-D4-T9Qzz.js → marketplace-app-shell-Skhfp6vK.js} +6 -6
- package/dist/_chunks/{message-card.agent-4IeIgrnJ.js → message-card.agent-ZLhx3Bs5.js} +6 -1
- package/dist/_chunks/{message-tray-CVyJajVJ.js → message-tray-DwrBLJlf.js} +90 -48
- package/dist/_chunks/{multi-select-BcPylvHR.js → multi-select-BdHHDrRN.js} +196 -153
- package/dist/_chunks/{navigation-menu-C6lBYVv9.js → navigation-menu-DRUi6sSj.js} +75 -42
- package/dist/_chunks/notes-panel-ay8_lPrA.js +158 -0
- package/dist/_chunks/{notification-card-BiESdm8q.js → notification-card-D2jiKSJJ.js} +27 -23
- package/dist/_chunks/{notification-card.agent-Rqt3ofk9.js → notification-card.agent-DxGBZb8T.js} +5 -1
- package/dist/_chunks/{notification-tray-DlgenTEe.js → notification-tray-AEun6DN2.js} +112 -97
- package/dist/_chunks/{number-input-Dj5L3pXK.js → number-input-DxphVG_A.js} +36 -27
- package/dist/_chunks/{operator-hero-f_KaRhw5.js → operator-hero-CR0Rqh4-.js} +14 -10
- package/dist/_chunks/{otp-input-xQ4Ps5VY.js → otp-input-DzBQ-CpE.js} +52 -33
- package/dist/_chunks/{pagination-DQOgnxxw.js → pagination-D58kglCr.js} +181 -162
- package/dist/_chunks/patient-details-Dlhqb5ig.js +675 -0
- package/dist/_chunks/{patient-search-DR9XUYRQ.js → patient-search-Be6cLrHR.js} +70 -61
- package/dist/_chunks/{patient-shell-BfgufL_q.js → patient-shell-DV3XEtIB.js} +3 -3
- package/dist/_chunks/patient-summary-card-WySCMwwA.js +437 -0
- package/dist/_chunks/patient-table-CHxf3Oqk.js +1110 -0
- package/dist/_chunks/{payment-form-nXocS_MX.js → payment-form-CxqIXqw7.js} +57 -45
- package/dist/_chunks/{payment-request-card-CYE5vhZ0.js → payment-request-card-BcZJwu9z.js} +125 -136
- package/dist/_chunks/{pdf-viewer-GsfNqeeT.js → pdf-viewer-QfebdLOd.js} +317 -291
- package/dist/_chunks/{periodontal-chart-card-Dh3KgvYG.js → periodontal-chart-card-hRRJY1NN.js} +3 -3
- package/dist/_chunks/{phone-input-DVXhNlIl.js → phone-input-DjU-XmO_.js} +64 -47
- package/dist/_chunks/{popover-DTbfAuR0.js → popover-B2qCDhJC.js} +37 -32
- package/dist/_chunks/{practice-results-DND2SAt7.js → practice-results-C6qDfxos.js} +280 -244
- package/dist/_chunks/{pregnancy-dating-QY-sqpvj.js → pregnancy-dating-CRVWswD-.js} +8 -8
- package/dist/_chunks/{pregnancy-weight-gain-DOJXXNYP.js → pregnancy-weight-gain-BUNpTsH-.js} +4 -4
- package/dist/_chunks/{privacy-lock-C7JyMf0y.js → privacy-lock-BzMLQu-j.js} +32 -28
- package/dist/_chunks/{product-hub-panel-CAXDFeGP.js → product-hub-panel-e6pW220e.js} +45 -27
- package/dist/_chunks/{progress-kzIRcdaq.js → progress-DA413-zn.js} +2 -2
- package/dist/_chunks/{public-footer.agent-CfXuW1x6.js → public-footer.agent-D0cFbjWl.js} +151 -146
- package/dist/_chunks/{public-header.agent-BOhJgZEU.js → public-header.agent-DqkqA-ca.js} +107 -102
- package/dist/_chunks/{qr-code-DNXhi6se.js → qr-code-CPkEs5mG.js} +52 -46
- package/dist/_chunks/{radio-group-CLjK-SlK.js → radio-group-BPt7pKZW.js} +5 -5
- package/dist/_chunks/radiograph-panel.agent-CAX-C3g3.js +558 -0
- package/dist/_chunks/{recaptcha-widget-BCNHsgqt.js → recaptcha-widget-BC-4To9b.js} +9 -2
- package/dist/_chunks/registry-DvAUVLHh.js +51 -0
- package/dist/_chunks/{resizable-3vzqDlg6.js → resizable-DVGcfOrk.js} +193 -173
- package/dist/_chunks/{reviews-panel-DBktKm7i.js → reviews-panel-Dq7LMDcH.js} +87 -68
- package/dist/_chunks/{rich-text-editor-VawKN1FI.js → rich-text-editor-DlCqPixb.js} +833 -728
- package/dist/_chunks/{search-bar-SY2BcV2N.js → search-bar-C_T3pBJn.js} +105 -78
- package/dist/_chunks/{search-input-DbxrnHkW.js → search-input-DQvGxR74.js} +2 -2
- package/dist/_chunks/{search-input.agent-CfZvViOd.js → search-input.agent-DRH54coT.js} +19 -4
- package/dist/_chunks/{select-CEtRcon5.js → select-DMLG44F5.js} +72 -56
- package/dist/_chunks/{session-countdown-LPnhTHjn.js → session-countdown-X1Ki6i0M.js} +3 -3
- package/dist/_chunks/{sheet-taJer-Ha.js → sheet-BxsE7eQm.js} +59 -45
- package/dist/_chunks/{sidebar-DaB4ulxH.js → sidebar-DY9jGjgt.js} +254 -248
- package/dist/_chunks/{sign-document-CdAiHiCh.js → sign-document-By6hMOra.js} +75 -49
- package/dist/_chunks/{signature-capture-COi0Uiqu.js → signature-capture-Ct_4Md4e.js} +138 -104
- package/dist/_chunks/{slider-BHWzXdjt.js → slider-DN1CWkKB.js} +85 -65
- package/dist/_chunks/{sparkline-DGhCSw8M.js → sparkline-iOXYgvJe.js} +75 -53
- package/dist/_chunks/{stepper-accordion-Dki6r9ZE.js → stepper-accordion-DC-H-8v4.js} +38 -48
- package/dist/_chunks/{stepper-accordion.agent-C4quJ-MD.js → stepper-accordion.agent-cmEguIdx.js} +7 -1
- package/dist/_chunks/{stepper-progress-DDjq5nei.js → stepper-progress-Bv0njx4g.js} +30 -24
- package/dist/_chunks/{suggestion-chip.agent-6sNWFj7m.js → suggestion-chip.agent-Brn3CiFE.js} +9 -8
- package/dist/_chunks/{switch-BJ6HD3Mn.js → switch-OILsBLWo.js} +25 -19
- package/dist/_chunks/tab-bar-Bv9nGNdO.js +262 -0
- package/dist/_chunks/{tabs-BIQ0ew1T.js → tabs-BxcOziCo.js} +67 -58
- package/dist/_chunks/{task-card.agent-CUPKYd7w.js → task-card.agent-Bt14CzUd.js} +4 -1
- package/dist/_chunks/{task-tray-CAncV-QQ.js → task-tray-qOEQflu4.js} +74 -57
- package/dist/_chunks/{text-area-BIx0tZ05.js → text-area-Bt3p7Pt0.js} +41 -34
- package/dist/_chunks/{text-input-BaClJL8Y.js → text-input-B-OWQ1Je.js} +15 -8
- package/dist/_chunks/{theme-toggle-DETmSu_h.js → theme-toggle-XB6o_lgs.js} +38 -26
- package/dist/_chunks/{time-picker-B5umYwfv.js → time-picker-BPlJWm8w.js} +41 -31
- package/dist/_chunks/{timeline-DQa5Tyz4.js → timeline-CqA4nKTI.js} +33 -25
- package/dist/_chunks/{toast.agent-vuLRRn2a.js → toast.agent-57UzyR9U.js} +62 -45
- package/dist/_chunks/tooth-scheme-BhQoPNBD.js +2131 -0
- package/dist/_chunks/{transaction-chip-DK84XCBU.js → transaction-chip-CscoQbxF.js} +88 -61
- package/dist/_chunks/{transcript-panel-CLHmv83g.js → transcript-panel-3THQX6nJ.js} +47 -33
- package/dist/_chunks/unit-converter-YEpD9evj.js +337 -0
- package/dist/_chunks/use-clamp-overflow-DQE2kwZ9.js +20 -0
- package/dist/_chunks/use-overflow-collapse-BIOzKbni.js +32 -0
- package/dist/_chunks/{use-password-requirements-DsgduV1x.js → use-password-requirements-BXvS2MBS.js} +131 -117
- package/dist/_chunks/use-persistent-state-nZwZAnE9.js +24 -0
- package/dist/_chunks/users-MBVtUzwd.js +17 -0
- package/dist/_chunks/warning-stack--sTrrBDA.js +268 -0
- package/dist/_chunks/{whatsapp-button-DUjlWGKf.js → whatsapp-button-BIy6NaJK.js} +6 -3
- package/dist/_chunks/{workflow-map-JAZryZJr.js → workflow-map-Dy8mLCqF.js} +101 -90
- package/dist/_chunks/zoom-out-CgVtf2Wx.js +29 -0
- package/dist/agent/index.d.ts +4 -4
- package/dist/agent/index.js +37 -0
- package/dist/agent/registry.d.ts +33 -0
- package/dist/agent/types.d.ts +97 -4
- package/dist/agent-catalog.json +8081 -518
- package/dist/agent-i18n/en.json +1277 -0
- package/dist/components/_shared/entity-card/entity-card.d.ts +6 -0
- package/dist/components/_shared/entity-card/index.d.ts +1 -1
- package/dist/components/_shared/field-value.d.ts +21 -0
- package/dist/components/_shared/field-visibility-cog.d.ts +20 -0
- package/dist/components/_shared/field-visibility.d.ts +36 -0
- package/dist/components/_shared/patient-fields.d.ts +119 -0
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/address-autocomplete/address-autocomplete.agent.d.ts +4 -0
- package/dist/components/address-autocomplete/address-autocomplete.d.ts +18 -0
- package/dist/components/address-autocomplete/index.d.ts +2 -1
- package/dist/components/address-autocomplete/index.js +3 -2
- package/dist/components/agenda-card/index.js +2 -2
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-consent-banner/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/ai-tools-rail/ai-tools-rail.d.ts +75 -0
- package/dist/components/ai-tools-rail/index.js +1 -1
- package/dist/components/alert/alert.d.ts +5 -0
- package/dist/components/alert/index.js +1 -1
- package/dist/components/anamnesis-card/index.js +1 -1
- package/dist/components/anatomy-scheme/anatomy-face-paths.d.ts +15 -0
- package/dist/components/anatomy-scheme/anatomy-muscle-paths.d.ts +20 -0
- package/dist/components/anatomy-scheme/anatomy-scheme-data.d.ts +121 -0
- package/dist/components/anatomy-scheme/anatomy-scheme.agent.d.ts +6 -0
- package/dist/components/anatomy-scheme/anatomy-scheme.d.ts +69 -0
- package/dist/components/anatomy-scheme/index.d.ts +6 -0
- package/dist/components/anatomy-scheme/index.js +17 -0
- package/dist/components/annotation-marker/annotation-marker.d.ts +33 -0
- package/dist/components/annotation-marker/index.d.ts +3 -0
- package/dist/components/annotation-marker/index.js +7 -0
- package/dist/components/appointment-card/appointment-card.d.ts +25 -1
- package/dist/components/appointment-card/index.js +6 -5
- package/dist/components/appointment-timeline/appointment-timeline.agent.d.ts +4 -0
- package/dist/components/appointment-timeline/appointment-timeline.d.ts +66 -0
- package/dist/components/appointment-timeline/index.d.ts +4 -0
- package/dist/components/appointment-timeline/index.js +6 -0
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/badge/badge.d.ts +6 -2
- package/dist/components/badge/index.js +1 -1
- package/dist/components/bishop-score/bishop-score.agent.d.ts +4 -0
- package/dist/components/bishop-score/bishop-score.d.ts +17 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/bmi-calculator.agent.d.ts +4 -0
- package/dist/components/bmi-calculator/bmi-calculator.d.ts +26 -0
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/calculator-dialog/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/care-plan-header/care-plan-header.agent.d.ts +4 -0
- package/dist/components/care-plan-header/care-plan-header.d.ts +100 -0
- package/dist/components/care-plan-header/index.d.ts +4 -0
- package/dist/components/care-plan-header/index.js +6 -0
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/clinical-note-card/clinical-note-card.d.ts +21 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/collapsible/index.js +1 -1
- package/dist/components/color-picker/index.js +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/index.js +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/control-room-rail/control-room-context.d.ts +53 -0
- package/dist/components/control-room-rail/control-room-rail.d.ts +35 -0
- package/dist/components/control-room-rail/index.d.ts +5 -0
- package/dist/components/control-room-rail/index.js +9 -0
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/counter/counter.d.ts +22 -0
- package/dist/components/counter/index.d.ts +3 -0
- package/dist/components/counter/index.js +5 -0
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/data-table/cell-renderers/actions-cell-renderer.d.ts +18 -0
- package/dist/components/data-table/index.d.ts +1 -1
- package/dist/components/data-table/index.js +32 -30
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/document-scanner/index.js +1 -1
- package/dist/components/dropdown-menu/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/email-input/index.js +1 -1
- package/dist/components/entity-summary/entity-summary.d.ts +43 -0
- package/dist/components/entity-summary/index.d.ts +3 -0
- package/dist/components/entity-summary/index.js +5 -0
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/fiscal-code-input/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts +6 -0
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/index.d.ts +11 -0
- package/dist/components/list/index.js +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/multi-select/index.js +1 -1
- package/dist/components/navigation-menu/index.js +1 -1
- package/dist/components/notes-panel/index.d.ts +3 -0
- package/dist/components/notes-panel/index.js +5 -0
- package/dist/components/notes-panel/notes-panel.d.ts +64 -0
- package/dist/components/notification-card/index.js +2 -2
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/number-input/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/password-input/index.js +1 -1
- package/dist/components/patient-details/index.d.ts +5 -0
- package/dist/components/patient-details/index.js +6 -0
- package/dist/components/patient-details/patient-details.agent.d.ts +4 -0
- package/dist/components/patient-details/patient-details.d.ts +96 -0
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-summary-card/patient-summary-card.d.ts +40 -1
- package/dist/components/patient-table/cell-renderers/balance-badge-cell.d.ts +13 -0
- package/dist/components/patient-table/cell-renderers/care-plan-status-cell.d.ts +43 -0
- package/dist/components/patient-table/cell-renderers/next-appointment-cell.d.ts +24 -0
- package/dist/components/patient-table/columns.d.ts +131 -0
- package/dist/components/patient-table/index.d.ts +20 -0
- package/dist/components/patient-table/index.js +12 -0
- package/dist/components/patient-table/patient-table.d.ts +172 -0
- package/dist/components/patient-table/types.d.ts +222 -0
- package/dist/components/patient-table/use-responsive-columns.d.ts +111 -0
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/payment-form/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/phone-input/index.js +1 -1
- package/dist/components/popover/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/privacy-lock/index.js +1 -1
- package/dist/components/product-hub-tray/index.js +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/qr-code/index.js +1 -1
- package/dist/components/radio-group/index.js +1 -1
- package/dist/components/radiograph-panel/index.d.ts +4 -0
- package/dist/components/radiograph-panel/index.js +7 -0
- package/dist/components/radiograph-panel/radiograph-panel.agent.d.ts +13 -0
- package/dist/components/radiograph-panel/radiograph-panel.d.ts +36 -0
- package/dist/components/recaptcha-widget/index.js +1 -1
- package/dist/components/resizable/index.js +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +2 -2
- package/dist/components/select/index.js +1 -1
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sidebar/index.js +2 -2
- package/dist/components/sidebar/sidebar.d.ts +7 -0
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/stepper-accordion/index.js +2 -2
- package/dist/components/stepper-progress/index.js +1 -1
- package/dist/components/suggestion-chip/index.js +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tab-bar/tab-bar.d.ts +18 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/tooth-scheme/index.d.ts +2 -2
- package/dist/components/tooth-scheme/index.js +30 -23
- package/dist/components/tooth-scheme/tooth-data.d.ts +112 -1
- package/dist/components/tooth-scheme/tooth-scheme.agent.d.ts +2 -2
- package/dist/components/tooth-scheme/tooth-scheme.d.ts +75 -11
- package/dist/components/transaction-chip/index.js +1 -1
- package/dist/components/transaction-chip/transaction-chip.d.ts +2 -2
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/unit-converter/unit-converter.agent.d.ts +4 -0
- package/dist/components/unit-converter/unit-converter.d.ts +27 -0
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/warning-stack/warning-stack.d.ts +14 -2
- package/dist/components/whatsapp-button/index.d.ts +1 -1
- package/dist/components/whatsapp-button/index.js +3 -2
- package/dist/components/whatsapp-button/whatsapp-button.d.ts +3 -0
- package/dist/components/workflow/index.js +1 -1
- package/dist/hooks/index.d.ts +1 -0
- package/dist/hooks/index.js +24 -22
- package/dist/hooks/use-clamp-overflow.d.ts +19 -0
- package/dist/hooks/use-overflow-collapse.d.ts +46 -0
- package/dist/hooks/use-persistent-state.d.ts +7 -1
- package/dist/hooks/use-scroll-overflow.d.ts +36 -0
- package/dist/i18n/locales/ar.d.ts +356 -0
- package/dist/i18n/locales/ar.js +370 -3
- package/dist/i18n/locales/de.d.ts +356 -0
- package/dist/i18n/locales/de.js +370 -3
- package/dist/i18n/locales/el.d.ts +356 -0
- package/dist/i18n/locales/el.js +370 -3
- package/dist/i18n/locales/en.d.ts +367 -0
- package/dist/i18n/locales/en.js +381 -3
- package/dist/i18n/locales/es.d.ts +356 -0
- package/dist/i18n/locales/es.js +370 -3
- package/dist/i18n/locales/fr.d.ts +356 -0
- package/dist/i18n/locales/fr.js +370 -3
- package/dist/i18n/locales/hi.d.ts +356 -0
- package/dist/i18n/locales/hi.js +370 -3
- package/dist/i18n/locales/it.d.ts +356 -0
- package/dist/i18n/locales/it.js +370 -3
- package/dist/i18n/locales/ja.d.ts +356 -0
- package/dist/i18n/locales/ja.js +370 -3
- package/dist/i18n/locales/nl.d.ts +356 -0
- package/dist/i18n/locales/nl.js +370 -3
- package/dist/i18n/locales/pl.d.ts +356 -0
- package/dist/i18n/locales/pl.js +370 -3
- package/dist/i18n/locales/pt.d.ts +356 -0
- package/dist/i18n/locales/pt.js +370 -3
- package/dist/i18n/locales/ro.d.ts +356 -0
- package/dist/i18n/locales/ro.js +370 -3
- package/dist/i18n/locales/ru.d.ts +356 -0
- package/dist/i18n/locales/ru.js +370 -3
- package/dist/i18n/locales/sq.d.ts +356 -0
- package/dist/i18n/locales/sq.js +370 -3
- package/dist/i18n/locales/sv.d.ts +356 -0
- package/dist/i18n/locales/sv.js +370 -3
- package/dist/i18n/locales/tr.d.ts +356 -0
- package/dist/i18n/locales/tr.js +370 -3
- package/dist/i18n/locales/zh.d.ts +356 -0
- package/dist/i18n/locales/zh.js +370 -3
- package/dist/index.js +740 -676
- package/dist/locales/ar.json +359 -3
- package/dist/locales/de.json +359 -3
- package/dist/locales/el.json +359 -3
- package/dist/locales/en.json +359 -3
- package/dist/locales/es.json +359 -3
- package/dist/locales/fr.json +359 -3
- package/dist/locales/hi.json +359 -3
- package/dist/locales/it.json +359 -3
- package/dist/locales/ja.json +359 -3
- package/dist/locales/nl.json +359 -3
- package/dist/locales/pl.json +359 -3
- package/dist/locales/pt.json +359 -3
- package/dist/locales/ro.json +359 -3
- package/dist/locales/ru.json +359 -3
- package/dist/locales/sq.json +359 -3
- package/dist/locales/sv.json +359 -3
- package/dist/locales/tr.json +359 -3
- package/dist/locales/zh.json +359 -3
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +3 -2
- package/package.json +50 -1
- package/dist/_chunks/address-autocomplete-CT-9AOli.js +0 -358
- package/dist/_chunks/ai-tools-rail-CInA_1-E.js +0 -356
- package/dist/_chunks/appointment-tray-BMl89NPW.js +0 -419
- package/dist/_chunks/bishop-score-CjsB9bM-.js +0 -185
- package/dist/_chunks/bmi-calculator-n-823_1V.js +0 -258
- package/dist/_chunks/clinical-note-card-gtrxv6zn.js +0 -333
- package/dist/_chunks/editable-currency-cell-renderer-DHOspPee.js +0 -2409
- package/dist/_chunks/email-input-lQivsFrw.js +0 -396
- package/dist/_chunks/patient-summary-card-hEmr4eTW.js +0 -443
- package/dist/_chunks/registry-nPAVE19X.js +0 -21
- package/dist/_chunks/tab-bar-B1ovILzh.js +0 -105
- package/dist/_chunks/tooth-scheme-BIx1O2aJ.js +0 -1257
- package/dist/_chunks/unit-converter-C1V3ACM9.js +0 -196
- package/dist/_chunks/use-persistent-state-i23OWy6G.js +0 -24
- package/dist/_chunks/warning-stack-Cv4fr5zo.js +0 -220
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patient-table — Domain-Specific component
|
|
3
|
+
* ----------------------------------------------------------------------------
|
|
4
|
+
* `PatientTable` is a thin composition over the kit's `data-table` engine
|
|
5
|
+
* (AG Grid Community) specialised for the AlfaDocs patient list. It bakes in:
|
|
6
|
+
*
|
|
7
|
+
* • `buildPatientColumns(t, …)` (one field per column — split identity,
|
|
8
|
+
* grouped hidden columns, dynamic custom fields) merged with a
|
|
9
|
+
* consumer-supplied `columns` override.
|
|
10
|
+
* • the kit data-table built-in renderers (Image / Link / Date / Currency /
|
|
11
|
+
* Status / TagList / User) plus the three patient renderers kept for the
|
|
12
|
+
* domain columns (NextAppointment / BalanceBadge / CarePlanStatus).
|
|
13
|
+
* • a default toolbar — `QuickSearch` + `FilterChips` + `ColumnToggle` +
|
|
14
|
+
* `ExportMenu` + a `BulkAction` per `props.bulkActions` — overridable
|
|
15
|
+
* wholesale via `props.toolbar`.
|
|
16
|
+
* • `useResponsiveColumns` (container-width column-priority tiers) when
|
|
17
|
+
* `props.responsive` (default `true`).
|
|
18
|
+
* • multiple row selection, pagination, archived-row tint, loading / empty
|
|
19
|
+
* overlays.
|
|
20
|
+
* • `useAgentRegistration(dataTableAgent, handle, gridId)` — the SAME agent
|
|
21
|
+
* adapter `data-table` registers, keyed by `gridId`.
|
|
22
|
+
*
|
|
23
|
+
* The `forwardRef` exposes the inner `DataTableHandle<PatientRow>` so consumers
|
|
24
|
+
* (e.g. the `patients` pattern's WarningStack "View" actions) can drive the
|
|
25
|
+
* grid imperatively — `setFilter`, `setSort`, `getSelection`, etc.
|
|
26
|
+
*
|
|
27
|
+
* CONSTRAINTS (CI-blocking — src/docs/23-constraints.mdx, 26-agent-readiness.mdx):
|
|
28
|
+
* • No hardcoded colour / spacing / radius / shadow / font — token-bound `ds:`
|
|
29
|
+
* utilities only. Row tint goes through the token-bound
|
|
30
|
+
* `data-table-row-archived` class on the AG Grid theme bridge, never an
|
|
31
|
+
* inline `cellStyle`.
|
|
32
|
+
* • CSS logical properties only (`ms/me/ps/pe`, `text-start/text-end`).
|
|
33
|
+
* • All user-visible strings via `useTranslation('ui')` → `ui.patientTable.*`.
|
|
34
|
+
* • TypeScript strict — no `any`. `forwardRef` exposes the curated handle.
|
|
35
|
+
* • PHI rule (PRS 26 §6): only `row.id` reaches DOM `data-*`. This component
|
|
36
|
+
* writes no PHI attribute; AG Grid surfaces ids via its native `row-id`.
|
|
37
|
+
*/
|
|
38
|
+
import { type ReactNode } from 'react';
|
|
39
|
+
import { type BuildPatientColumnsOptions } from './columns';
|
|
40
|
+
import type { PatientBulkAction, PatientColumnDef, PatientCustomFieldDef, PatientRow, PatientRowAction, PatientTableHandle, PatientView } from './types';
|
|
41
|
+
export interface PatientTableProps {
|
|
42
|
+
/**
|
|
43
|
+
* Row data. `undefined` ⇒ the grid renders its loading overlay (the
|
|
44
|
+
* data-table contract: `rowData === undefined` is the loading sentinel). Pass
|
|
45
|
+
* `[]` for an explicit empty state.
|
|
46
|
+
*/
|
|
47
|
+
rowData?: PatientRow[];
|
|
48
|
+
/**
|
|
49
|
+
* Override / extend the baked patient columns. When provided, these column
|
|
50
|
+
* definitions REPLACE the kit defaults entirely (the consumer is expected to
|
|
51
|
+
* compose `buildPatientColumns(t, …)` — re-exported from the barrel — with
|
|
52
|
+
* their own additions). When omitted, the kit's `buildPatientColumns` output
|
|
53
|
+
* is used.
|
|
54
|
+
*/
|
|
55
|
+
columns?: PatientColumnDef[];
|
|
56
|
+
/**
|
|
57
|
+
* REQUIRED. Persistence key (column state → `localStorage`) AND the agent
|
|
58
|
+
* instance address (`data-component-id`). Two tables on one page need
|
|
59
|
+
* distinct `gridId`s.
|
|
60
|
+
*/
|
|
61
|
+
gridId: string;
|
|
62
|
+
/** Row-height preset. Defaults to the engine default (`'default'`). */
|
|
63
|
+
density?: 'compact' | 'default' | 'expanded';
|
|
64
|
+
/**
|
|
65
|
+
* Collapse the per-row actions column into a single "…" overflow trigger
|
|
66
|
+
* independently of row `density`. When `true` the actions cells render the
|
|
67
|
+
* collapsed menu and the column shrinks to its 88px compact footprint; when
|
|
68
|
+
* `false` they render the inline button group at the full expanded width.
|
|
69
|
+
* When `undefined` (the default) compactness FOLLOWS `density` — `compact`
|
|
70
|
+
* density collapses the actions, every other density keeps them inline — so
|
|
71
|
+
* existing consumers are unaffected. Flipping this at runtime re-reads the
|
|
72
|
+
* actions cells via a stable ref-backed getter (no `columnDefs` rebuild, so
|
|
73
|
+
* column state is preserved) and resizes the actions column to match.
|
|
74
|
+
*/
|
|
75
|
+
actionsCompact?: boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Grid height — forwarded to the underlying `DataTable.heightClass` (a Tailwind
|
|
78
|
+
* height class). Pass `"ds:h-full"` to fill a sized parent, or an explicit
|
|
79
|
+
* value like `"ds:h-[75vh]"`. Omit to use the engine default (`ds:h-[500px]`).
|
|
80
|
+
*/
|
|
81
|
+
heightClass?: string;
|
|
82
|
+
/**
|
|
83
|
+
* Enable container-width column-priority responsiveness (lower-priority
|
|
84
|
+
* columns hide as the grid narrows). Default `true`. Set `false` to leave
|
|
85
|
+
* column visibility entirely to persistence / `ColumnToggle`.
|
|
86
|
+
*/
|
|
87
|
+
responsive?: boolean;
|
|
88
|
+
/**
|
|
89
|
+
* Saved column/filter/sort presets. When non-empty AND no custom `toolbar`
|
|
90
|
+
* is supplied, the default toolbar renders a `Select`-based view switcher in
|
|
91
|
+
* the FilterBar; choosing a view applies its column visibility (via the
|
|
92
|
+
* responsive-hook lock so the choice is honoured like a manual ColumnToggle),
|
|
93
|
+
* `filterModel` (`setFilter`) and `sortModel` (`setSort`). Omitted entirely
|
|
94
|
+
* when empty / undefined or when `toolbar` is supplied (a custom toolbar owns
|
|
95
|
+
* its own view UI).
|
|
96
|
+
*/
|
|
97
|
+
views?: PatientView[];
|
|
98
|
+
/**
|
|
99
|
+
* Invoked when a per-row action button is activated, with the resolved action
|
|
100
|
+
* descriptor and the patient row. Only `row.id` ever leaves this boundary into
|
|
101
|
+
* persistence / agent surfaces — never PHI.
|
|
102
|
+
*/
|
|
103
|
+
onRowAction?: (action: PatientRowAction, patient: PatientRow) => void;
|
|
104
|
+
/**
|
|
105
|
+
* Toolbar bulk actions (operate on the current selection). Each renders a
|
|
106
|
+
* `DataTable.Toolbar.BulkAction` that surfaces only while rows are selected;
|
|
107
|
+
* its `onSelect` receives the selected row ids (never PHI).
|
|
108
|
+
*/
|
|
109
|
+
bulkActions?: PatientBulkAction[];
|
|
110
|
+
/**
|
|
111
|
+
* Force the loading overlay independently of `rowData`. When `true` the grid
|
|
112
|
+
* shows the loading skeleton even if `rowData` is an array (e.g. a background
|
|
113
|
+
* refresh). `rowData === undefined` also triggers loading.
|
|
114
|
+
*/
|
|
115
|
+
loading?: boolean;
|
|
116
|
+
/**
|
|
117
|
+
* Replace the default toolbar wholesale. Pass a `<DataTable.Toolbar>…</…>`
|
|
118
|
+
* tree (it has access to the same toolbar context). When omitted the default
|
|
119
|
+
* QuickSearch + FilterChips + ColumnToggle + ExportMenu + BulkActions toolbar
|
|
120
|
+
* is rendered.
|
|
121
|
+
*/
|
|
122
|
+
toolbar?: ReactNode;
|
|
123
|
+
/**
|
|
124
|
+
* Omit the `QuickSearch` field from the DEFAULT toolbar. The rest of the
|
|
125
|
+
* default toolbar (view switcher when `views` is supplied, FilterChips,
|
|
126
|
+
* ColumnToggle, ExportMenu, BulkActions) is unaffected. Ignored when a custom
|
|
127
|
+
* `toolbar` is supplied (that toolbar owns its own composition). Default
|
|
128
|
+
* `false` (search shown). Use for surfaces that provide their own search
|
|
129
|
+
* affordance elsewhere on the page.
|
|
130
|
+
*/
|
|
131
|
+
hideQuickSearch?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Enable the grid's client-side pagination. When `false`, every row loads into
|
|
134
|
+
* a single virtualised, scrollable view and filter / sort act over the WHOLE
|
|
135
|
+
* set (no pager) — the right model for a "load and filter all" list. Default
|
|
136
|
+
* `true`.
|
|
137
|
+
*/
|
|
138
|
+
pagination?: boolean;
|
|
139
|
+
/**
|
|
140
|
+
* Page-size dropdown options shown in the pagination panel — forwarded to the
|
|
141
|
+
* underlying `DataTable.paginationPageSizeSelector`. Pass `false` to hide the
|
|
142
|
+
* page-size chooser entirely (pagination navigation is unaffected). Default
|
|
143
|
+
* `[10, 25, 50, 100]` (the engine default).
|
|
144
|
+
*/
|
|
145
|
+
paginationPageSizeSelector?: number[] | false;
|
|
146
|
+
/**
|
|
147
|
+
* Mask sensitive contact details (email) in the Contact / Email columns.
|
|
148
|
+
* Forwarded to `buildPatientColumns`' `hideDetails`. Ignored when `columns`
|
|
149
|
+
* is supplied (the consumer owns their columns then). Default `false`.
|
|
150
|
+
*/
|
|
151
|
+
hideDetails?: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Derive the patient-detail href for the Identity cell, e.g.
|
|
154
|
+
* `(row) => \`/patients/${row.id}\``. Forwarded to `buildPatientColumns`.
|
|
155
|
+
* Ignored when `columns` is supplied. When omitted the Identity cell routes
|
|
156
|
+
* its click through `onRowAction` with the `show` action.
|
|
157
|
+
*/
|
|
158
|
+
identityHref?: BuildPatientColumnsOptions['identityHref'];
|
|
159
|
+
/**
|
|
160
|
+
* Per-practice custom-field descriptors. Each appends one dynamic `custom:*`
|
|
161
|
+
* column (hidden by default, toggleable via ColumnToggle) after the standard
|
|
162
|
+
* columns. Forwarded to `buildPatientColumns`. Ignored when `columns` is
|
|
163
|
+
* supplied (the consumer owns their columns then).
|
|
164
|
+
*/
|
|
165
|
+
customFields?: PatientCustomFieldDef[];
|
|
166
|
+
/** Override the default region aria-label (`ui.patientTable.regionLabel`). */
|
|
167
|
+
'aria-label'?: string;
|
|
168
|
+
/** Extra class names merged onto the inner grid wrapper. */
|
|
169
|
+
className?: string;
|
|
170
|
+
}
|
|
171
|
+
export declare const PatientTable: import("react").ForwardRefExoticComponent<PatientTableProps & import("react").RefAttributes<PatientTableHandle>>;
|
|
172
|
+
//# sourceMappingURL=patient-table.d.ts.map
|
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patient-table — domain types
|
|
3
|
+
* ----------------------------------------------------------------------------
|
|
4
|
+
* Type surface for the `patient-table` Domain-Specific component, a thin
|
|
5
|
+
* composition over the kit's `data-table` engine (AG Grid Community).
|
|
6
|
+
*
|
|
7
|
+
* CONVENTIONS (CI-blocking — see src/docs/23-constraints.mdx + 26-agent-readiness.mdx):
|
|
8
|
+
*
|
|
9
|
+
* • MONEY IS INTEGER CENTS. Every monetary field on `PatientRow`
|
|
10
|
+
* (`unpaidAmount`, `billableAmount`) and on the financial thresholds is the
|
|
11
|
+
* smallest currency unit (cents). Format to a display currency only at the
|
|
12
|
+
* render boundary — never store fractional units.
|
|
13
|
+
*
|
|
14
|
+
* • PHI MUST NEVER REACH THE DOM. Only `PatientRow.id` may appear in DOM
|
|
15
|
+
* `data-*` attributes (PRS 26 §6). Name, date of birth, email, phone, fiscal
|
|
16
|
+
* code and every other identifying field stay out of attribute hooks, agent
|
|
17
|
+
* snapshots and selectors. Renderers surface them as text content only.
|
|
18
|
+
*
|
|
19
|
+
* These types are the public contract for `buildPatientColumns(t)`, the patient
|
|
20
|
+
* cell renderers, and the `PatientTable` component (Phase 2). They carry no
|
|
21
|
+
* runtime values — pure type declarations.
|
|
22
|
+
*
|
|
23
|
+
* GROUND-TRUTH NOTE: `ColDef` / `ColGroupDef` are NOT re-exported from the
|
|
24
|
+
* data-table barrel; they are imported here straight from `ag-grid-community`,
|
|
25
|
+
* exactly as `data-table.tsx` does. `DataTableHandle` IS re-exported from the
|
|
26
|
+
* barrel and is imported from there.
|
|
27
|
+
*/
|
|
28
|
+
import type { ColDef, ColGroupDef } from 'ag-grid-community';
|
|
29
|
+
import type { DataTableHandle, DataTableSortEntry } from '../data-table';
|
|
30
|
+
/** Tri-state marketing consent: `0` = no, `1` = yes, `2` = not specified. */
|
|
31
|
+
export type PatientMarketingConsent = 0 | 1 | 2;
|
|
32
|
+
/** Biological-sex marker used for the demographic column / gender filter. */
|
|
33
|
+
export type PatientGender = 'm' | 'f' | 'x';
|
|
34
|
+
/**
|
|
35
|
+
* A per-practice custom field descriptor. Drives the dynamic `custom:*` columns
|
|
36
|
+
* appended after the standard ones by `buildPatientColumns`. The `label` is
|
|
37
|
+
* practice-defined display copy — NOT i18n-keyed (it is the header verbatim).
|
|
38
|
+
*/
|
|
39
|
+
export interface PatientCustomFieldDef {
|
|
40
|
+
/** Stable descriptor id. */
|
|
41
|
+
id: string;
|
|
42
|
+
/** Key into {@link PatientRow.customFields}. */
|
|
43
|
+
fieldName: string;
|
|
44
|
+
/** Practice-defined header label — rendered verbatim, never i18n-keyed. */
|
|
45
|
+
label: string;
|
|
46
|
+
/** Renderer + filter shape: plain text, a yes/no checkbox, or a chip. */
|
|
47
|
+
type: 'text' | 'checkbox' | 'dropdown';
|
|
48
|
+
/** Closed value set for `dropdown` fields (feeds the SelectFilter options). */
|
|
49
|
+
options?: string[];
|
|
50
|
+
}
|
|
51
|
+
/** Care-plan acceptance state surfaced by `CarePlanStatusCell`. */
|
|
52
|
+
export type PatientCarePlanStatus = 'accepted' | 'estimate' | 'none';
|
|
53
|
+
/** A single phone number plus its SMS-reminder eligibility. */
|
|
54
|
+
export interface PatientPhoneNumber {
|
|
55
|
+
/** Display string, e.g. `"+39 055 123 4567"`. Never a DOM attribute value. */
|
|
56
|
+
number: string;
|
|
57
|
+
/** Whether SMS reminders can be sent to this number. */
|
|
58
|
+
smsEnabled: boolean;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* The patient row model rendered by `patient-table`.
|
|
62
|
+
*
|
|
63
|
+
* Mirrors the story-only mock schema in the workflow plan. `id` is the ONLY
|
|
64
|
+
* field permitted in DOM `data-*` hooks (PHI rule); every other field is
|
|
65
|
+
* display/content-only. Monetary amounts (`unpaidAmount`, `billableAmount`)
|
|
66
|
+
* are integer cents.
|
|
67
|
+
*/
|
|
68
|
+
export interface PatientRow {
|
|
69
|
+
/** Stable identifier — the ONLY field allowed in DOM data-* (PHI rule). */
|
|
70
|
+
id: string;
|
|
71
|
+
firstName: string;
|
|
72
|
+
lastName: string;
|
|
73
|
+
avatarUrl?: string;
|
|
74
|
+
email?: string;
|
|
75
|
+
/** Whether email contact is enabled — gates the email-reminder action. */
|
|
76
|
+
emailEnabled: boolean;
|
|
77
|
+
/** Whether the stored email passed validation. */
|
|
78
|
+
emailValid?: boolean;
|
|
79
|
+
/** PEC (certified email) address. */
|
|
80
|
+
pecAddress?: string;
|
|
81
|
+
phoneNumbers: PatientPhoneNumber[];
|
|
82
|
+
/** Whether the patient is eligible to receive SMS reminders. */
|
|
83
|
+
smsReminderEligible?: boolean;
|
|
84
|
+
/** Whether the patient is eligible to receive email reminders. */
|
|
85
|
+
emailReminderEligible?: boolean;
|
|
86
|
+
/** ISO-8601 date string. Age is computed at the render boundary. */
|
|
87
|
+
dateOfBirth?: string;
|
|
88
|
+
gender?: PatientGender;
|
|
89
|
+
/** Place (comune) of birth. */
|
|
90
|
+
placeOfBirth?: string;
|
|
91
|
+
/** ISO-3166-1 alpha-2 country of birth. */
|
|
92
|
+
countryOfBirth?: string;
|
|
93
|
+
street?: string;
|
|
94
|
+
postcode?: string;
|
|
95
|
+
city?: string;
|
|
96
|
+
province?: string;
|
|
97
|
+
/** ISO-3166-1 alpha-2 country code (residence). */
|
|
98
|
+
countryCode?: string;
|
|
99
|
+
italianFiscalCode?: string;
|
|
100
|
+
/** Acquisition source (the practice-configured channel). */
|
|
101
|
+
source?: string;
|
|
102
|
+
/** Free-text source override when `source` is `'Other'`. */
|
|
103
|
+
customSource?: string;
|
|
104
|
+
defaultInsurance?: string;
|
|
105
|
+
/** Default discount percentage applied to this patient's plans. */
|
|
106
|
+
defaultDiscount?: number;
|
|
107
|
+
/** Primary clinical diagnosis note. */
|
|
108
|
+
diagnosis?: string;
|
|
109
|
+
/** Patient's occupation. */
|
|
110
|
+
job?: string;
|
|
111
|
+
/** Operator / personal assistant the patient is assigned to. */
|
|
112
|
+
personalAssistant?: string;
|
|
113
|
+
marketingConsent: PatientMarketingConsent;
|
|
114
|
+
/** Year component of the yearly patient numbering (`YYYY`). */
|
|
115
|
+
yearlyNumberingYear?: number;
|
|
116
|
+
/** Sequence component of the yearly patient numbering (`N`). */
|
|
117
|
+
yearlyNumberingNumber?: number;
|
|
118
|
+
/** Whether the patient has a MyDentista portal account. */
|
|
119
|
+
mydentista?: boolean;
|
|
120
|
+
nextAppointment?: string;
|
|
121
|
+
lastAppointment?: string;
|
|
122
|
+
/** Outstanding balance in cents. */
|
|
123
|
+
unpaidAmount: number;
|
|
124
|
+
/** Billable plan value in cents. */
|
|
125
|
+
billableAmount: number;
|
|
126
|
+
carePlanStatus?: PatientCarePlanStatus;
|
|
127
|
+
tags?: string[];
|
|
128
|
+
/** ISO-8601 creation timestamp. */
|
|
129
|
+
createdAt: string;
|
|
130
|
+
isArchived?: boolean;
|
|
131
|
+
/**
|
|
132
|
+
* Per-practice custom-field values, keyed by `PatientCustomFieldDef.fieldName`.
|
|
133
|
+
* Strings for text/dropdown fields; booleans for checkbox fields. Surfaced by
|
|
134
|
+
* the dynamic `custom:*` columns. Never a DOM attribute (PHI rule).
|
|
135
|
+
*/
|
|
136
|
+
customFields?: Record<string, string | boolean>;
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Stable column ids for the patient grid. Drives `ColumnToggle`, the
|
|
140
|
+
* responsive-priority map, view presets and the agent column address.
|
|
141
|
+
* Keep in sync with `buildPatientColumns(t)`.
|
|
142
|
+
*/
|
|
143
|
+
export type PatientColumnId = 'select' | 'avatar' | 'lastName' | 'actions' | 'firstName' | 'fiscalCode' | 'age' | 'gender' | 'dateOfBirth' | 'placeOfBirth' | 'countryOfBirth' | 'phone' | 'email' | 'smsReminders' | 'emailReminders' | 'pec' | 'nextAppointment' | 'lastVisit' | 'unpaidBalance' | 'billableAmount' | 'discount' | 'carePlanStatus' | 'diagnosis' | 'insurance' | 'assignedTo' | 'job' | 'source' | 'marketingConsent' | 'patientNumber' | 'portal' | 'createdAt' | 'city' | 'province' | 'postcode' | 'country' | 'street' | `custom:${string}`;
|
|
144
|
+
/**
|
|
145
|
+
* Responsive priority tier. Lower numbers survive longer as the grid narrows:
|
|
146
|
+
* `P0` always visible, `P3` first to hide. The responsive hook toggles
|
|
147
|
+
* column `hide` by tier; an explicit user ColumnToggle override wins and is
|
|
148
|
+
* what gets persisted.
|
|
149
|
+
*/
|
|
150
|
+
export type ResponsiveTier = 'P0' | 'P1' | 'P2' | 'P3';
|
|
151
|
+
/** Closed set of per-row action keys. */
|
|
152
|
+
export type PatientRowActionKey = 'show' | 'edit' | 'sendEmailReminder' | 'sendSmsReminder' | 'reassign' | 'delete';
|
|
153
|
+
/**
|
|
154
|
+
* A per-row action descriptor. `id` is the stable key; the display fields feed
|
|
155
|
+
* the `ActionsCellRenderer` (icon + accessible label + intent). Visibility and
|
|
156
|
+
* disablement are resolved per-row against the `PatientRow` at render time.
|
|
157
|
+
*/
|
|
158
|
+
export interface PatientRowAction {
|
|
159
|
+
/** Stable action key — the value passed back to `onRowAction`. */
|
|
160
|
+
id: PatientRowActionKey;
|
|
161
|
+
/** Localised accessible label / tooltip. */
|
|
162
|
+
label: string;
|
|
163
|
+
/** Lucide-style icon node (sized by the renderer). */
|
|
164
|
+
icon?: import('react').ReactNode;
|
|
165
|
+
/** `destructive` swaps the button intent (e.g. delete). */
|
|
166
|
+
variant?: 'default' | 'destructive';
|
|
167
|
+
/** Hide the action for a given row (e.g. SMS reminder with no SMS phone). */
|
|
168
|
+
hidden?: boolean | ((patient: PatientRow) => boolean);
|
|
169
|
+
/** Disable the action for a given row. */
|
|
170
|
+
disabled?: boolean | ((patient: PatientRow) => boolean);
|
|
171
|
+
/** Human-readable reason shown in the tooltip when disabled. */
|
|
172
|
+
disabledReason?: string;
|
|
173
|
+
}
|
|
174
|
+
/** Closed set of bulk-action keys (operate on the current selection). */
|
|
175
|
+
export type PatientBulkActionKey = 'exportCsv' | 'exportPdf' | 'reassign' | 'tag' | 'sendReminder' | 'delete';
|
|
176
|
+
/**
|
|
177
|
+
* A bulk-action descriptor for the toolbar. Invoked with the selected row ids
|
|
178
|
+
* (resolved from `DataTableHandle.getSelection()`); only ids cross this
|
|
179
|
+
* boundary — never PHI.
|
|
180
|
+
*/
|
|
181
|
+
export interface PatientBulkAction {
|
|
182
|
+
/** Stable bulk-action key. */
|
|
183
|
+
id: PatientBulkActionKey;
|
|
184
|
+
/** Localised button label. */
|
|
185
|
+
label: string;
|
|
186
|
+
/** Lucide-style icon node. */
|
|
187
|
+
icon?: import('react').ReactNode;
|
|
188
|
+
/** `destructive` swaps the button intent (e.g. bulk delete). */
|
|
189
|
+
variant?: 'default' | 'destructive';
|
|
190
|
+
/** Invoked with the ids of the currently-selected rows. */
|
|
191
|
+
onSelect: (selectedIds: string[]) => void;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* A saved view: a named column/filter/sort preset applied to the grid.
|
|
195
|
+
* `columns` is the ordered, visible subset; `filterModel` and `sortModel` are
|
|
196
|
+
* fed straight to `DataTableHandle.setFilter` / `setSort`.
|
|
197
|
+
*/
|
|
198
|
+
export interface PatientView {
|
|
199
|
+
/** Stable view id. */
|
|
200
|
+
id: string;
|
|
201
|
+
/** Localised view label shown in the view switcher. */
|
|
202
|
+
label: string;
|
|
203
|
+
/** Ordered list of visible columns for this view. */
|
|
204
|
+
columns: PatientColumnId[];
|
|
205
|
+
/** AG Grid filter model passed to `DataTableHandle.setFilter`. */
|
|
206
|
+
filterModel: Record<string, unknown>;
|
|
207
|
+
/** Sort model passed to `DataTableHandle.setSort`. */
|
|
208
|
+
sortModel: DataTableSortEntry[];
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* The curated imperative handle exposed by `PatientTable` via `forwardRef`,
|
|
212
|
+
* specialised to `PatientRow`. Re-exported so column/renderer/component files
|
|
213
|
+
* import a single patient-typed handle.
|
|
214
|
+
*/
|
|
215
|
+
export type PatientTableHandle = DataTableHandle<PatientRow>;
|
|
216
|
+
/** Column definition typed to `PatientRow` (AG Grid Community). */
|
|
217
|
+
export type PatientColDef = ColDef<PatientRow>;
|
|
218
|
+
/** Column-group (two-row header) definition typed to `PatientRow`. */
|
|
219
|
+
export type PatientColGroupDef = ColGroupDef<PatientRow>;
|
|
220
|
+
/** Mixed leaf / group column-definition array, as `DataTable.columnDefs` expects. */
|
|
221
|
+
export type PatientColumnDef = PatientColDef | PatientColGroupDef;
|
|
222
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* patient-table — responsive column hook
|
|
3
|
+
* ----------------------------------------------------------------------------
|
|
4
|
+
* `useResponsiveColumns(handleRef, opts)` toggles column visibility by the
|
|
5
|
+
* `responsiveTier` (`P0`–`P3`) baked onto each `ColDef` by `buildPatientColumns`,
|
|
6
|
+
* driven by the *grid container's* width — measured with a `ResizeObserver`, NOT
|
|
7
|
+
* the viewport — so the table responds correctly when embedded in a narrow panel,
|
|
8
|
+
* split pane or sidebar rather than only at browser-window breakpoints.
|
|
9
|
+
*
|
|
10
|
+
* BREAKPOINTS (container inline-size → highest tier kept visible):
|
|
11
|
+
*
|
|
12
|
+
* < 640px → P0 only (pinned avatar / firstName / lastName / actions)
|
|
13
|
+
* < 900px → P0 + P1 (+ phone, nextAppointment, balance)
|
|
14
|
+
* < 1200px → P0 + P1 + P2 (+ email, carePlanStatus)
|
|
15
|
+
* ≥ 1200px → all tiers (P0–P3) (+ fiscalCode, age, gender, source)
|
|
16
|
+
*
|
|
17
|
+
* Columns without a tier (the pinned avatar / firstName / lastName / actions
|
|
18
|
+
* anchors, and every grouped `hide: true` column) are never touched — the
|
|
19
|
+
* anchors stay visible at every width; the grouped columns are owned by
|
|
20
|
+
* ColumnToggle only.
|
|
21
|
+
*
|
|
22
|
+
* RESPONSIVE ↔ PERSISTENCE RECONCILIATION
|
|
23
|
+
* ---------------------------------------
|
|
24
|
+
* `data-table.tsx` persists the full AG Grid column state to
|
|
25
|
+
* `localStorage["data-table-col-state:<gridId>"]` (load on grid-ready, save on
|
|
26
|
+
* unmount). A user's explicit `ColumnToggle` choice lives in that persisted state
|
|
27
|
+
* and MUST win over — and survive — the responsive baseline. Reconciliation:
|
|
28
|
+
*
|
|
29
|
+
* 1. The responsive baseline is exactly that — a *baseline*. We only auto
|
|
30
|
+
* show/hide a column the user has NOT manually toggled this session.
|
|
31
|
+
* 2. We track a `Set<colId>` of user-touched columns. We learn of a manual
|
|
32
|
+
* toggle from the grid's `columnVisible` event: any such event whose
|
|
33
|
+
* `source` is NOT `'api'` is user-driven (ColumnToggle tool panel, column
|
|
34
|
+
* menu, context menu, drag), so we add those colIds to the set. Our own
|
|
35
|
+
* responsive calls go through `setColumnsVisible(..., 'api')`, so they never
|
|
36
|
+
* pollute the set (and we additionally guard with a re-entrancy flag).
|
|
37
|
+
* 3. Once a column is user-touched, the hook leaves it alone forever this
|
|
38
|
+
* session — its visibility is whatever the user chose, which is what
|
|
39
|
+
* `data-table.tsx` then persists on unmount. The persisted choice therefore
|
|
40
|
+
* wins on the next mount too: we seed the user-touched set from the saved
|
|
41
|
+
* column state so a previously hidden/shown column is treated as a manual
|
|
42
|
+
* override and not clobbered by the baseline on re-entry.
|
|
43
|
+
*
|
|
44
|
+
* CONSTRAINTS: no `any` (AG Grid's `ColumnEventType` is read off the typed event,
|
|
45
|
+
* tier read via the typed `getResponsiveTier` helper). No DOM `data-*` attribute
|
|
46
|
+
* is written here (PHI rule is moot — this hook only reads colIds and widths).
|
|
47
|
+
*/
|
|
48
|
+
import { type RefObject } from 'react';
|
|
49
|
+
import type { PatientTableHandle, ResponsiveTier } from './types';
|
|
50
|
+
/**
|
|
51
|
+
* Container inline-size breakpoints. Each entry is the *minimum* container width
|
|
52
|
+
* (px) at which the named tier becomes visible. Below the first threshold only
|
|
53
|
+
* `P0` shows; at or above the last, everything shows.
|
|
54
|
+
*/
|
|
55
|
+
interface Breakpoint {
|
|
56
|
+
/** Minimum container inline-size (px) for this tier to be shown. */
|
|
57
|
+
minWidth: number;
|
|
58
|
+
/** The tier this breakpoint reveals. */
|
|
59
|
+
tier: ResponsiveTier;
|
|
60
|
+
}
|
|
61
|
+
export interface UseResponsiveColumnsOptions {
|
|
62
|
+
/**
|
|
63
|
+
* The grid container element to observe. The hook measures THIS element's
|
|
64
|
+
* inline-size (not the viewport) so it works embedded. When the ref is unset
|
|
65
|
+
* the hook is inert.
|
|
66
|
+
*/
|
|
67
|
+
containerRef: RefObject<HTMLElement | null>;
|
|
68
|
+
/**
|
|
69
|
+
* Disable responsive toggling entirely (the `responsive={false}` escape hatch
|
|
70
|
+
* on `PatientTable`). When `false` the hook unobserves and makes no visibility
|
|
71
|
+
* changes — column visibility is left entirely to persistence / ColumnToggle.
|
|
72
|
+
* Default `true`.
|
|
73
|
+
*/
|
|
74
|
+
enabled?: boolean;
|
|
75
|
+
/**
|
|
76
|
+
* Override the container-width breakpoints. Ordered low→high `minWidth`; each
|
|
77
|
+
* reveals its `tier`. Defaults to 640 / 900 / 1200 (P1 / P2 / P3).
|
|
78
|
+
*/
|
|
79
|
+
breakpoints?: readonly Breakpoint[];
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Imperative surface returned by {@link useResponsiveColumns}. The responsive
|
|
83
|
+
* effect runs internally; `lockColumns` lets a caller (the view switcher) mark
|
|
84
|
+
* columns as user-touched so the responsive baseline stops auto-managing them.
|
|
85
|
+
*/
|
|
86
|
+
export interface UseResponsiveColumnsResult {
|
|
87
|
+
/**
|
|
88
|
+
* Mark the given colIds as "user-touched" so the responsive baseline leaves
|
|
89
|
+
* their visibility alone from here on — exactly as if the user had toggled
|
|
90
|
+
* them via `ColumnToggle`. The view switcher calls this when it applies a
|
|
91
|
+
* view's column visibility, so its programmatic (`source: 'api'`) visibility
|
|
92
|
+
* writes are not immediately re-hidden/re-shown by the next responsive
|
|
93
|
+
* reconcile pass. No-op (with the colIds still recorded for a later mount of
|
|
94
|
+
* the effect) when the hook is disabled.
|
|
95
|
+
*/
|
|
96
|
+
lockColumns: (colIds: readonly string[]) => void;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Wire responsive, tier-driven column visibility to the patient grid.
|
|
100
|
+
*
|
|
101
|
+
* @param handleRef The `PatientTable` imperative handle ref — the hook reaches
|
|
102
|
+
* the raw AG Grid API via `handleRef.current.getRawApi()`.
|
|
103
|
+
* @param opts Container ref to observe, plus enable flag / breakpoint
|
|
104
|
+
* overrides. See {@link UseResponsiveColumnsOptions}.
|
|
105
|
+
* @returns {@link UseResponsiveColumnsResult} — `lockColumns(colIds)`
|
|
106
|
+
* to mark columns user-touched (see the view-switcher
|
|
107
|
+
* coordination note in patient-table.tsx).
|
|
108
|
+
*/
|
|
109
|
+
export declare function useResponsiveColumns(handleRef: RefObject<PatientTableHandle | null>, opts: UseResponsiveColumnsOptions): UseResponsiveColumnsResult;
|
|
110
|
+
export {};
|
|
111
|
+
//# sourceMappingURL=use-responsive-columns.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-
|
|
1
|
+
import { P as r, f as s, p as m, a as e, s as n, b as o, c as i } from "../../_chunks/payment-form-CxqIXqw7.js";
|
|
2
2
|
export {
|
|
3
3
|
r as PaymentForm,
|
|
4
4
|
s as formatPaymentAmount,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { P as u, a as o, p as t, b as e } from "../../_chunks/product-hub-panel-
|
|
1
|
+
import { P as u, a as o, p as t, b as e } from "../../_chunks/product-hub-panel-e6pW220e.js";
|
|
2
2
|
import { i as s } from "../../_chunks/is-safe-url-DkETxeHz.js";
|
|
3
3
|
export {
|
|
4
4
|
u as ProductHubPanel,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { D as s, a as A, P as L, S as e, c as S, p as _ } from "../../_chunks/public-footer.agent-
|
|
1
|
+
import { D as s, a as A, P as L, S as e, c as S, p as _ } from "../../_chunks/public-footer.agent-D0cFbjWl.js";
|
|
2
2
|
export {
|
|
3
3
|
s as DEFAULT_MARKETING_BASE_URL,
|
|
4
4
|
A as DEFAULT_SOCIAL_URLS,
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { AgentAdapter } from '../../agent/types';
|
|
2
|
+
import type { RadiographPanelHandle } from './radiograph-panel';
|
|
3
|
+
import type { Radiograph } from '../tooth-scheme';
|
|
4
|
+
/**
|
|
5
|
+
* The Imaging panel for the Control Room rail. It DISPLAYS the selected tooth's
|
|
6
|
+
* radiographs and drives the fullscreen viewer; uploads and deletes are the
|
|
7
|
+
* host's responsibility (the `onAddRadiograph` / `onDeleteRadiograph` props),
|
|
8
|
+
* so they are not exposed here — the consuming pattern/app owns those `write` /
|
|
9
|
+
* `destructive` workflows and their `radiograph.*` API contracts.
|
|
10
|
+
*/
|
|
11
|
+
export declare const radiographPanelAgent: AgentAdapter<RadiographPanelHandle>;
|
|
12
|
+
export type { Radiograph };
|
|
13
|
+
//# sourceMappingURL=radiograph-panel.agent.d.ts.map
|