@alfadocs/ui-kit 1.47.0 → 1.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{actions-cell-renderer-B5m9lwgC.js → actions-cell-renderer-DMittsR3.js} +4 -4
- package/dist/_chunks/{address-autocomplete-Bq-1n1UX.js → address-autocomplete-Dp5uMvKP.js} +61 -60
- package/dist/_chunks/{address-fields-jFfjxOQR.js → address-fields-QfC-N3pw.js} +5 -5
- package/dist/_chunks/{agenda-card-DyQtHb9z.js → agenda-card-C4h0xMGi.js} +2 -2
- package/dist/_chunks/{agenda-tray-CBaJASb5.js → agenda-tray-DNZYW2xt.js} +4 -4
- package/dist/_chunks/{ai-credits-notice-xszqOZTC.js → ai-credits-notice-C-kz_RrY.js} +3 -3
- package/dist/_chunks/{ai-permission-notice-D7I2U-cz.js → ai-permission-notice-BRZeS3mT.js} +3 -3
- package/dist/_chunks/{ai-prompt-input-DXknpQCB.js → ai-prompt-input-CxvnXsAs.js} +82 -82
- package/dist/_chunks/{alia-sidebar-CUqaJNPQ.js → alia-sidebar-Crn8OGPF.js} +7 -7
- package/dist/_chunks/{anamnesis-card-xtEhyojD.js → anamnesis-card-D8Si-2GV.js} +3 -3
- package/dist/_chunks/{anamnesis-summary-card-CclBbiXg.js → anamnesis-summary-card-DPyScUMM.js} +2 -2
- package/dist/_chunks/{anamnesis-summary-rows-DI-UX5r6.js → anamnesis-summary-rows-CZirLRuv.js} +12 -12
- package/dist/_chunks/{antenatal-schedule-timeline-CXk_tzWG.js → antenatal-schedule-timeline-8fm3vPSV.js} +2 -2
- package/dist/_chunks/{appointment-card-DluZy8Iv.js → appointment-card-CvGU0QP6.js} +5 -5
- package/dist/_chunks/{appointment-peek-BsfCpiJs.js → appointment-peek--dmWznLZ.js} +5 -5
- package/dist/_chunks/{appointment-timeline-Cs5f9viN.js → appointment-timeline-y9uYZMUd.js} +6 -6
- package/dist/_chunks/{appointment-tray-CLrGGnKR.js → appointment-tray-BTecNeSb.js} +4 -4
- package/dist/_chunks/appointment-workflow-status-CS8ufF1f.js +66 -0
- package/dist/_chunks/{audio-recorder-B7dT-Y3v.js → audio-recorder-DZBtAvLH.js} +4 -4
- package/dist/_chunks/{autocomplete-MpBhz-fG.js → autocomplete-DSasZUf6.js} +65 -64
- package/dist/_chunks/{badge-BudgzTe_.js → badge-BAkd6_Pj.js} +24 -17
- package/dist/_chunks/{balance-badge-cell-YGrYdrvR.js → balance-badge-cell-CA0YNJMR.js} +6 -6
- package/dist/_chunks/{bishop-score-Cu70iv9C.js → bishop-score-BMLRvXYF.js} +4 -4
- package/dist/_chunks/{bmi-calculator-C9N19aLX.js → bmi-calculator-DUhRyyrA.js} +3 -3
- package/dist/_chunks/{booking-C4MwImkS.js → booking-BQYFDcrz.js} +10 -10
- package/dist/_chunks/{breadcrumb-agut0PwN.js → breadcrumb-D3boYzD4.js} +50 -49
- package/dist/_chunks/{button-CaUe1uyd.js → button-18oBsI3n.js} +54 -50
- package/dist/_chunks/button-group-BSDqso_C.js +408 -0
- package/dist/_chunks/{calendar-OzSeTb4V.js → calendar-DjoJ9ovF.js} +11 -17
- package/dist/_chunks/{calendar-event-card-B6N5h1dO.js → calendar-event-card-BUbKBPv_.js} +55 -73
- package/dist/_chunks/calendar-workspace-D8zX9JWm.js +10423 -0
- package/dist/_chunks/{care-plan-card-BOv0NRle.js → care-plan-card-ciBaaguw.js} +4 -4
- package/dist/_chunks/{care-plan-entry-card-d-rZD4li.js → care-plan-entry-card-D7A0whiZ.js} +5 -5
- package/dist/_chunks/{care-plan-header-CEmBXn6-.js → care-plan-header-DKV1gLqv.js} +4 -4
- package/dist/_chunks/{carousel.agent-z1yLBpyC.js → carousel.agent-DqDGR2yH.js} +2 -2
- package/dist/_chunks/{chart-D8ucl8hH.js → chart-VjuXDXOZ.js} +3 -3
- package/dist/_chunks/{chat-input-Cj7ZYQr5.js → chat-input-BVho_SqP.js} +2 -2
- package/dist/_chunks/{chat-message-BMVxiUIX.js → chat-message-Co_NRGM4.js} +3 -3
- package/dist/_chunks/{smartphone-DaPcFw-X.js → circle-dashed-CUj6o2cA.js} +3 -14
- package/dist/_chunks/{city-input-DaQc-Hbj.js → city-input-BGYc4lRV.js} +2 -2
- package/dist/_chunks/{clinical-note-card-DdsGYMmI.js → clinical-note-card-DYDQ3q2x.js} +89 -74
- package/dist/_chunks/{code-block-BB-viuTn.js → code-block-C_eNHWaa.js} +2 -2
- package/dist/_chunks/combobox-B_rLwmSv.js +578 -0
- package/dist/_chunks/{command-palette-DQl_SNEv.js → command-palette-DhgGo7GJ.js} +82 -80
- package/dist/_chunks/{connection-status-BmA9T0UO.js → connection-status-Cfux3TvH.js} +4 -4
- package/dist/_chunks/{contact-profile-card-C0WpwpVV.js → contact-profile-card-Dj4NgBL-.js} +3 -3
- package/dist/_chunks/control-room-rail-DAO0qfOI.js +379 -0
- package/dist/_chunks/{copy-field-B8XRVmQv.js → copy-field-Cm4y5Bff.js} +2 -2
- package/dist/_chunks/{country-select-CfDNFG5c.js → country-select-C5jZjO8O.js} +2 -2
- package/dist/_chunks/{cycle-calculator-BH2StWoT.js → cycle-calculator-B9lBRNiZ.js} +3 -3
- package/dist/_chunks/{dashboard-grid-BcXWL5S9.js → dashboard-grid-uX7x1ePj.js} +2 -2
- package/dist/_chunks/{data-table-DnKOmEVw.js → data-table-DWOSxlsy.js} +9 -9
- package/dist/_chunks/{data-table-tabs-B9SXA5VP.js → data-table-tabs-CzYYKp2_.js} +3 -3
- package/dist/_chunks/{dependent-selector-BHDP0nBB.js → dependent-selector-BR_8D2Qu.js} +2 -2
- package/dist/_chunks/{description-list-BsJ_6CQE.js → description-list-1A2DEbE6.js} +2 -2
- package/dist/_chunks/{document-preview-COV0BC6n.js → document-preview-Od2Hz4z5.js} +13 -12
- package/dist/_chunks/{document-scanner-B1abl-A4.js → document-scanner-p0aGlzCy.js} +3 -3
- package/dist/_chunks/{dropdown-menu-DU-Hrf33.js → dropdown-menu-C8PaW3lR.js} +110 -96
- package/dist/_chunks/{due-date-calculator-Buh_mVHq.js → due-date-calculator-BVqJaxzd.js} +4 -4
- package/dist/_chunks/{editable-currency-cell-renderer-OUkUv7U4.js → editable-currency-cell-renderer-D_G2Ap61.js} +4 -4
- package/dist/_chunks/{editable-description-ADMVFPUz.js → editable-description-B4NVdjvd.js} +3 -3
- package/dist/_chunks/{editor-overlay-DwNKaI22.js → editor-overlay-BDiBvQmL.js} +2 -2
- package/dist/_chunks/{empty-state-BUN_UAWf.js → empty-state-DTBZ1ENT.js} +2 -2
- package/dist/_chunks/{entity-card-I-Gio5wo.js → entity-card-D1Yrh9wf.js} +2 -1
- package/dist/_chunks/{entity-summary-DXejuQ8i.js → entity-summary-Ckz_U00H.js} +3 -3
- package/dist/_chunks/{error-boundary-BNT2iQ1w.js → error-boundary-BxTqEXqj.js} +2 -2
- package/dist/_chunks/euro-Dsuz4ixO.js +22 -0
- package/dist/_chunks/{face-scheme-mIhwrQXt.js → face-scheme-fku-RShg.js} +71 -71
- package/dist/_chunks/{fetal-weight-wx4ycKc6.js → fetal-weight-B69yOS9W.js} +3 -3
- package/dist/_chunks/{field-array-BW9KeeXG.js → field-array-lIXrFWS0.js} +3 -3
- package/dist/_chunks/file-BuG1VMAy.js +21 -0
- package/dist/_chunks/{file-Cwe9VC1A.js → file-image-cDgE-BTy.js} +2 -19
- package/dist/_chunks/{file-manager-DOcJGIx2.js → file-manager-CqgxLqoA.js} +15 -14
- package/dist/_chunks/{file-upload-BDpb08GM.js → file-upload-B242a_Y1.js} +53 -52
- package/dist/_chunks/{finished-terminal-DJd7Z_po.js → finished-terminal-B2oqXO0Y.js} +2 -2
- package/dist/_chunks/fiscal-code-input-BEF8eKIG.js +572 -0
- package/dist/_chunks/{freemium-paywall-BaW5ODc9.js → freemium-paywall-B6JITu4l.js} +2 -2
- package/dist/_chunks/{gestational-age-calculator-CwbecTul.js → gestational-age-calculator-DsGN6_HS.js} +5 -5
- package/dist/_chunks/handled-rejection-6gqCf5vt.js +13 -0
- package/dist/_chunks/{hcg-doubling-BcXriXJe.js → hcg-doubling-D2SH-e7t.js} +3 -3
- package/dist/_chunks/{header-3o9o9v_T.js → header-CCjp5GvE.js} +2 -2
- package/dist/_chunks/{header-settings-BEfx_-TF.js → header-settings-ZXa6hXuu.js} +5 -5
- package/dist/_chunks/{help-me-write-templates-DHIwa4xR.js → help-me-write-templates-DQtT1qs_.js} +5 -5
- package/dist/_chunks/history-CK2JaU2g.js +16 -0
- package/dist/_chunks/{hover-card-nUae8NPJ.js → hover-card-BplP5SzQ.js} +2 -2
- package/dist/_chunks/{icon-button-CehAeZoP.js → icon-button-CY7GU_Se.js} +2 -2
- package/dist/_chunks/icon-button-group-B_426QN_.js +431 -0
- package/dist/_chunks/{icon-picker-DMEelg9v.js → icon-picker-ZLebyB0U.js} +3 -3
- package/dist/_chunks/{image-cropper-BjPjT7wU.js → image-cropper-_HiNN79d.js} +2 -2
- package/dist/_chunks/{info-tip-iP2Pm9dh.js → info-tip-laBxZhKu.js} +2 -2
- package/dist/_chunks/{insert-result-DPnOBD85.js → insert-result-CSuPQyKL.js} +2 -2
- package/dist/_chunks/{key-value-pair-DaQI_LZB.js → key-value-pair-Dcdl3Gni.js} +2 -2
- package/dist/_chunks/{kit-extensions-DuoFF1R3.js → kit-extensions-BTJSnM_H.js} +6 -6
- package/dist/_chunks/{link-cell-renderer-s3oHzOwi.js → link-cell-renderer-Tswqf6BT.js} +7 -7
- package/dist/_chunks/{locale-picker-CH3kfrIG.js → locale-picker-DGkQmhV9.js} +170 -180
- package/dist/_chunks/{map-view-CHw4RL6w.js → map-view-Bb7ClKSF.js} +2 -2
- package/dist/_chunks/{marketplace-app-shell-PB89Dkk_.js → marketplace-app-shell-Dehuxbi-.js} +6 -6
- package/dist/_chunks/menu-row-BAr8bx1I.js +95 -0
- package/dist/_chunks/{message-card-V3sFPiQI.js → message-card-DKOtnBHy.js} +3 -3
- package/dist/_chunks/{message-tray-CrRIHfiQ.js → message-tray-COMEtmyr.js} +4 -4
- package/dist/_chunks/{multi-select-CtPd7g4x.js → multi-select-N4Smh-gj.js} +114 -113
- package/dist/_chunks/{muscle-scheme-UVz_x4iE.js → muscle-scheme-Co0NIgbU.js} +3 -3
- package/dist/_chunks/{note-attachment-CwDir3kK.js → note-attachment-CGjNTrAC.js} +2 -2
- package/dist/_chunks/{note-timeline-Dn_XTo1s.js → note-timeline-CVnKL0p6.js} +2 -2
- package/dist/_chunks/notes-panel-BiOxZL_0.js +1111 -0
- package/dist/_chunks/{notification-card-B2gLO6dK.js → notification-card-DDzBCi8l.js} +3 -3
- package/dist/_chunks/{notification-tray-BOEKegVV.js → notification-tray-PnH2PBlZ.js} +4 -4
- package/dist/_chunks/{operator-hero-XIdwDmN2.js → operator-hero-5061fkY5.js} +3 -3
- package/dist/_chunks/{optical-prescription-LGgmtcST.js → optical-prescription-DUufWXfZ.js} +3 -3
- package/dist/_chunks/{pagination-EkD5SiCK.js → pagination-B0N2qGy_.js} +83 -82
- package/dist/_chunks/panel-subview-CzHutkA8.js +217 -0
- package/dist/_chunks/{patient-details-yrgkSeEY.js → patient-details-C23Hdm8v.js} +3 -3
- package/dist/_chunks/{patient-field-row-DCMkFGqI.js → patient-field-row-DElFbpKc.js} +12 -12
- package/dist/_chunks/{patient-search-5QcmQKJD.js → patient-search-DgXdGkhK.js} +4 -4
- package/dist/_chunks/{patient-summary-card-CmEFflGS.js → patient-summary-card-C36L3h7h.js} +7 -7
- package/dist/_chunks/{payment-automation-upsell-BKmBXU4i.js → payment-automation-upsell-ugi4np1l.js} +3 -3
- package/dist/_chunks/{payment-request-card-Cer6XXCn.js → payment-request-card-DMJB57Tv.js} +5 -5
- package/dist/_chunks/{periodontal-chart-DJoZS_o7.js → periodontal-chart-DbGzKDj7.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-Nd1ZoYWb.js → periodontal-chart-card-DvHyP47v.js} +3 -3
- package/dist/_chunks/{periodontal-diagnosis-C7pfPOct.js → periodontal-diagnosis-B8WqI0eU.js} +2 -2
- package/dist/_chunks/{periodontal-risk-chart-B2tNFa15.js → periodontal-risk-chart-DsFRFFSz.js} +2 -2
- package/dist/_chunks/{phone-input-IWrGOCwm.js → phone-input-sQj-zi59.js} +85 -86
- package/dist/_chunks/{popover-DO-pssF3.js → popover-Dvb40vPH.js} +2 -2
- package/dist/_chunks/{practice-profile-hero-DxoLlQr5.js → practice-profile-hero-CPy5h2yI.js} +2 -2
- package/dist/_chunks/{practice-results-D11Zpt27.js → practice-results-t2BHht91.js} +7 -7
- package/dist/_chunks/{pregnancy-dating-DcyV9ZRD.js → pregnancy-dating-lfjjZVZH.js} +5 -5
- package/dist/_chunks/{pregnancy-weight-gain-Bfq4Kwt5.js → pregnancy-weight-gain-WpNt-S0q.js} +3 -3
- package/dist/_chunks/{privacy-lock-CbFCAMM3.js → privacy-lock-D6gq0GDg.js} +3 -3
- package/dist/_chunks/privacy-mask-BC5lw2zB.js +81 -0
- package/dist/_chunks/{product-hub-panel-w40-_-1s.js → product-hub-panel-CKeSCSeE.js} +3 -3
- package/dist/_chunks/{province-select-BaUnkg4S.js → province-select-BiszMRRY.js} +2 -2
- package/dist/_chunks/{public-header.agent-D-EBVskf.js → public-header.agent-B9wDmUeB.js} +3 -3
- package/dist/_chunks/{radiograph-panel.agent-LrILY2lN.js → radiograph-panel.agent-TmyIvTOa.js} +6 -6
- package/dist/_chunks/{reviews-panel-2GVuxGeT.js → reviews-panel-BdwFp_0c.js} +4 -4
- package/dist/_chunks/{rich-text-editor-BwDV2XkZ.js → rich-text-editor-y6ML0KeV.js} +12 -11
- package/dist/_chunks/{search-bar-CCmViqaa.js → search-bar-6bHatpYJ.js} +69 -67
- package/dist/_chunks/{select-CLSUnKjF.js → select-upNAltly.js} +89 -88
- package/dist/_chunks/{session-countdown-BqppPrw6.js → session-countdown-ACJyTXH2.js} +2 -2
- package/dist/_chunks/{sheet-C8WIDFS8.js → sheet-D0Lh0KR2.js} +2 -2
- package/dist/_chunks/{sign-in-with-alfadocs-button-DWwBJtyE.js → sign-in-with-alfadocs-button-CDyJAIzW.js} +2 -2
- package/dist/_chunks/{signature-request-D_j2aQu1.js → signature-request-15D363w5.js} +6 -6
- package/dist/_chunks/{signature-status-chip-D4NsrdeI.js → signature-status-chip-Dz6sS2oA.js} +2 -2
- package/dist/_chunks/{slot-grid-B3eOPkKD.js → slot-grid-4fWH3Euk.js} +4 -4
- package/dist/_chunks/smartphone-C0rFF2if.js +15 -0
- package/dist/_chunks/{streaming-text-CE1u_oGa.js → streaming-text-eRiizArc.js} +2 -2
- package/dist/_chunks/{tab-bar-Cw9UK18Z.js → tab-bar-BHFf6knq.js} +9 -9
- package/dist/_chunks/{tabs-BnRaLT0y.js → tabs-CFsuMQ5H.js} +82 -81
- package/dist/_chunks/{tag-Ci3xJPcH.js → tag-B65tLWvD.js} +24 -21
- package/dist/_chunks/{task-card-qTKD1fIT.js → task-card-CTTQfPS6.js} +72 -55
- package/dist/_chunks/task-editor-DlvTwAfv.js +1243 -0
- package/dist/_chunks/{task-tray-DIwjAIes.js → task-tray-JA-qp_pB.js} +4 -4
- package/dist/_chunks/tasks-panel-C_dVDQKJ.js +1243 -0
- package/dist/_chunks/{theme-toggle-BP0XRGMM.js → theme-toggle-LUBxlNDm.js} +4 -4
- package/dist/_chunks/{toast-ZZfhA5u0.js → toast-CT8hjr9r.js} +2 -2
- package/dist/_chunks/{token-insert-menu-A9B5AJw6.js → token-insert-menu-klwbxVKh.js} +3 -3
- package/dist/_chunks/{tool-rail-CCFqDfAn.js → tool-rail-DEeX4PdN.js} +144 -137
- package/dist/_chunks/{tooth-scheme-DPAq0vQK.js → tooth-scheme-BkjhkI8g.js} +4 -4
- package/dist/_chunks/{treatment-receipt-DU0OewqH.js → treatment-receipt-C-gWZ6uv.js} +3 -3
- package/dist/_chunks/{unit-converter-C-LpGzrN.js → unit-converter-Dp_KDxE6.js} +3 -3
- package/dist/_chunks/use-appointment-details-read-D2FH-cHF.js +2045 -0
- package/dist/_chunks/use-list-reflow-C7O4Uqnl.js +133 -0
- package/dist/_chunks/use-priority-overflow-Cdmb5EiR.js +108 -0
- package/dist/_chunks/{variables-menu-vXUaSBj4.js → variables-menu-aJLKJ_cu.js} +127 -136
- package/dist/_chunks/{warning-stack-C0glSB7p.js → warning-stack-CEgYkI1z.js} +3 -3
- package/dist/_chunks/{widget-picker-B1sj6uyf.js → widget-picker-CilQvcNL.js} +2 -2
- package/dist/_chunks/{workflow-map-DhR_h5yw.js → workflow-map-qGkQTNvS.js} +30 -29
- package/dist/_chunks/{workflow-status-CuJAOuKL.js → workflow-status-ClHfz4Kr.js} +209 -167
- package/dist/agent-catalog.json +371 -26
- package/dist/agent-i18n/en.json +41 -9
- package/dist/components/_shared/appointment-format.d.ts +52 -0
- package/dist/{patterns/calendar/calendar-editor-fields.d.ts → components/_shared/compact-editor-fields.d.ts} +6 -5
- package/dist/components/_shared/handled-rejection.d.ts +2 -0
- package/dist/components/_shared/menu-row.d.ts +17 -0
- package/dist/components/_shared/patient-identity.d.ts +7 -0
- package/dist/components/_shared/patient-picker.d.ts +24 -0
- package/dist/components/_shared/privacy-mask.d.ts +29 -0
- package/dist/components/address-autocomplete/index.js +1 -1
- package/dist/components/address-fields/index.js +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-credits-notice/index.js +1 -1
- package/dist/components/ai-permission-notice/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/anamnesis-card/index.js +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-details-panel/appointment-details-panel.agent.d.ts +4 -0
- package/dist/components/appointment-details-panel/appointment-details-panel.d.ts +134 -0
- package/dist/components/appointment-details-panel/appointment-details-panel.focus.d.ts +7 -0
- package/dist/components/appointment-details-panel/appointment-details-panel.history.d.ts +12 -0
- package/dist/components/appointment-details-panel/appointment-details-panel.identity.d.ts +41 -0
- package/dist/{patterns/calendar/calendar-info-hover.d.ts → components/appointment-details-panel/appointment-details-panel.info-hover.d.ts} +1 -1
- package/dist/components/appointment-details-panel/appointment-details-panel.sections.d.ts +51 -0
- package/dist/components/appointment-details-panel/appointment-details-panel.types.d.ts +326 -0
- package/dist/components/appointment-details-panel/index.d.ts +8 -0
- package/dist/components/appointment-details-panel/index.js +8 -0
- package/dist/components/appointment-details-panel/use-appointment-details-read.d.ts +32 -0
- package/dist/components/appointment-peek/index.js +1 -1
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/autocomplete/index.js +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/breadcrumb/index.js +1 -1
- package/dist/components/button/button.d.ts +2 -1
- package/dist/components/button/index.js +2 -2
- package/dist/components/button-group/button-group.d.ts +19 -2
- package/dist/components/button-group/index.js +1 -1
- package/dist/components/calendar/calendar.d.ts +5 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/calendar-event-card/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/carousel/index.js +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/city-input/index.js +1 -1
- package/dist/components/clinical-note-card/clinical-note-card.d.ts +13 -5
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/combobox/combobox.d.ts +9 -4
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/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/control-room-rail/control-room-rail.d.ts +21 -3
- package/dist/components/control-room-rail/index.d.ts +1 -1
- package/dist/components/control-room-rail/index.js +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/country-select/index.js +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/dashboard-grid/index.js +1 -1
- package/dist/components/data-table/index.js +4 -4
- package/dist/components/data-table-tabs/index.js +1 -1
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/document-preview/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/editable-description/index.js +1 -1
- package/dist/components/editor-overlay/index.js +1 -1
- package/dist/components/empty-state/index.js +1 -1
- package/dist/components/entity-summary/index.js +1 -1
- package/dist/components/error-boundary/index.js +1 -1
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/field-array/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/finished-terminal/index.js +1 -1
- package/dist/components/fiscal-code-input/fiscal-code-input.d.ts +7 -0
- package/dist/components/fiscal-code-input/index.d.ts +1 -1
- package/dist/components/fiscal-code-input/index.js +8 -7
- package/dist/components/fiscal-code-input/is-valid-codice-fiscale.d.ts +19 -4
- 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/index.js +1 -1
- package/dist/components/header-settings/index.js +1 -1
- package/dist/components/hover-card/index.js +1 -1
- package/dist/components/icon-button/index.js +1 -1
- package/dist/components/icon-button-group/index.js +1 -1
- package/dist/components/icon-picker/index.js +1 -1
- package/dist/components/image-cropper/index.js +1 -1
- package/dist/components/index.d.ts +2 -0
- package/dist/components/info-tip/index.js +1 -1
- package/dist/components/key-value-pair/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/muscle-scheme/index.js +1 -1
- package/dist/components/note-timeline/index.js +1 -1
- package/dist/components/notes-panel/index.d.ts +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/notes-panel/notes-panel.d.ts +102 -26
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-tray/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/optical-prescription/index.js +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/panel-subview/index.js +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-search/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/phone-input/index.js +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/practice-profile-hero/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/province-select/index.js +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +2 -2
- package/dist/components/search-bar/index.js +1 -1
- 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/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/signature-field/signature-field.d.ts +1 -1
- package/dist/components/signature-status-chip/index.js +1 -1
- package/dist/components/skeleton-scheme/index.js +17 -17
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/streaming-text/index.js +1 -1
- package/dist/components/tab-bar/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tag/index.js +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.d.ts +6 -0
- package/dist/components/task-editor/index.d.ts +4 -0
- package/dist/components/task-editor/index.js +6 -0
- package/dist/components/task-editor/task-editor.agent.d.ts +4 -0
- package/dist/components/task-editor/task-editor.d.ts +240 -0
- package/dist/components/task-editor/use-task-editor-form.d.ts +101 -0
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/tasks-panel/index.d.ts +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/tasks-panel/tasks-panel.d.ts +84 -12
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/token-insert-menu/index.js +1 -1
- package/dist/components/tool-rail/index.js +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/treatment-receipt/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/variables-menu/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/widget-picker/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/components/workflow-status/appointment-workflow-status.d.ts +55 -0
- package/dist/components/workflow-status/index.d.ts +2 -0
- package/dist/components/workflow-status/index.js +7 -2
- package/dist/components/workflow-status/workflow-status.d.ts +35 -0
- package/dist/hooks/index.js +2 -2
- package/dist/hooks/use-exit-transition.d.ts +5 -0
- package/dist/hooks/use-priority-overflow.d.ts +11 -2
- package/dist/host-compat.css +7 -1
- package/dist/i18n/locales/ar.d.ts +29 -10
- package/dist/i18n/locales/ar.js +33 -14
- package/dist/i18n/locales/de.d.ts +29 -10
- package/dist/i18n/locales/de.js +33 -14
- package/dist/i18n/locales/el.d.ts +29 -10
- package/dist/i18n/locales/el.js +33 -14
- package/dist/i18n/locales/en.d.ts +29 -10
- package/dist/i18n/locales/en.js +33 -14
- package/dist/i18n/locales/es.d.ts +29 -10
- package/dist/i18n/locales/es.js +33 -14
- package/dist/i18n/locales/fr.d.ts +29 -10
- package/dist/i18n/locales/fr.js +33 -14
- package/dist/i18n/locales/hi.d.ts +29 -10
- package/dist/i18n/locales/hi.js +33 -14
- package/dist/i18n/locales/it.d.ts +29 -10
- package/dist/i18n/locales/it.js +33 -14
- package/dist/i18n/locales/ja.d.ts +29 -10
- package/dist/i18n/locales/ja.js +33 -14
- package/dist/i18n/locales/nl.d.ts +29 -10
- package/dist/i18n/locales/nl.js +33 -14
- package/dist/i18n/locales/pl.d.ts +29 -10
- package/dist/i18n/locales/pl.js +33 -14
- package/dist/i18n/locales/pt.d.ts +29 -10
- package/dist/i18n/locales/pt.js +33 -14
- package/dist/i18n/locales/ro.d.ts +29 -10
- package/dist/i18n/locales/ro.js +33 -14
- package/dist/i18n/locales/ru.d.ts +29 -10
- package/dist/i18n/locales/ru.js +33 -14
- package/dist/i18n/locales/sq.d.ts +29 -10
- package/dist/i18n/locales/sq.js +33 -14
- package/dist/i18n/locales/sv.d.ts +29 -10
- package/dist/i18n/locales/sv.js +33 -14
- package/dist/i18n/locales/tr.d.ts +29 -10
- package/dist/i18n/locales/tr.js +33 -14
- package/dist/i18n/locales/zh.d.ts +29 -10
- package/dist/i18n/locales/zh.js +33 -14
- package/dist/i18n/registerUiBundle.d.ts +5 -9
- package/dist/index.js +742 -728
- package/dist/locales/ar.json +33 -14
- package/dist/locales/de.json +33 -14
- package/dist/locales/el.json +33 -14
- package/dist/locales/en.json +33 -14
- package/dist/locales/es.json +33 -14
- package/dist/locales/fr.json +33 -14
- package/dist/locales/hi.json +33 -14
- package/dist/locales/it.json +33 -14
- package/dist/locales/ja.json +33 -14
- package/dist/locales/nl.json +33 -14
- package/dist/locales/pl.json +33 -14
- package/dist/locales/pt.json +33 -14
- package/dist/locales/ro.json +33 -14
- package/dist/locales/ru.json +33 -14
- package/dist/locales/sq.json +33 -14
- package/dist/locales/sv.json +33 -14
- package/dist/locales/tr.json +33 -14
- package/dist/locales/zh.json +33 -14
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/calendar-appointment-details.d.ts +25 -95
- package/dist/patterns/calendar/calendar-patient-picker.d.ts +4 -3
- package/dist/patterns/calendar/calendar-privacy.d.ts +1 -22
- package/dist/patterns/calendar/calendar-sticky-offset.d.ts +20 -13
- package/dist/patterns/calendar/calendar-task-editor.d.ts +9 -13
- package/dist/patterns/calendar/calendar-workspace.d.ts +160 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts +17 -12
- package/dist/patterns/calendar/calendar.journey.d.ts +40 -4
- package/dist/patterns/calendar/calendar.model.d.ts +10 -17
- package/dist/patterns/calendar/calendar.sheets.d.ts +18 -14
- package/dist/patterns/calendar/calendar.surface.d.ts +6 -1
- package/dist/patterns/calendar/calendar.types.d.ts +24 -100
- package/dist/patterns/calendar/index.d.ts +4 -3
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/help-me-write-templates/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/patterns/signature-request/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +22 -5
- package/dist/_chunks/button-group-CA1tmu39.js +0 -325
- package/dist/_chunks/calendar-workspace-DDnQmiIL.js +0 -12427
- package/dist/_chunks/combobox-DnSdYssy.js +0 -522
- package/dist/_chunks/control-room-rail-Cv7GpMqX.js +0 -354
- package/dist/_chunks/fiscal-code-input-ODQRd_Sw.js +0 -553
- package/dist/_chunks/icon-button-group-DZKC6KGf.js +0 -428
- package/dist/_chunks/notes-panel-CHbDDMx8.js +0 -683
- package/dist/_chunks/panel-subview-CYnuX-KR.js +0 -171
- package/dist/_chunks/tasks-panel-DncuBPIZ.js +0 -844
- package/dist/_chunks/use-list-reflow-Cw43nxw5.js +0 -100
- package/dist/_chunks/use-priority-overflow-c9SjxZkZ.js +0 -101
- package/dist/patterns/calendar/calendar-appointment-details.sections.d.ts +0 -37
|
@@ -1,87 +1,23 @@
|
|
|
1
1
|
import { type ReactNode } from 'react';
|
|
2
|
+
import { parseAppointmentStartIso, type AppointmentDetailsLoader, type AppointmentDetailsRead, type AppointmentDetailsSnapshot, type AppointmentDocumentKind } from '../../components/appointment-details-panel';
|
|
2
3
|
import type { CalendarEventStatus } from '../../components/calendar';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
export interface CalendarAppointmentDetails {
|
|
11
|
-
/** The occurrence id the panel asked for, echoed back. */
|
|
12
|
-
eventId: string;
|
|
13
|
-
appointment: {
|
|
14
|
-
/** Local wall clock of THIS occurrence, 'YYYY-MM-DDTHH:mm:ss', no zone. */
|
|
15
|
-
startIso: string;
|
|
16
|
-
durationMin: number;
|
|
17
|
-
allDay: boolean;
|
|
18
|
-
isTelehealth: boolean;
|
|
19
|
-
/** Absent = no status recorded. */
|
|
20
|
-
status?: CalendarEventStatus;
|
|
21
|
-
name?: string;
|
|
22
|
-
/** Host-composed heading (the platform popover title). */
|
|
23
|
-
title: string;
|
|
24
|
-
colorHex?: string;
|
|
25
|
-
operatorId?: string;
|
|
26
|
-
chairId?: string;
|
|
27
|
-
branchLabel?: string;
|
|
28
|
-
bookedOnline: boolean;
|
|
29
|
-
/** Read side only. `requiresScope` is informational (the series rule
|
|
30
|
-
* line); the scope question lives in the editor. */
|
|
31
|
-
recurrence?: {
|
|
32
|
-
frequency: RecurrenceFrequency;
|
|
33
|
-
count?: number;
|
|
34
|
-
requiresScope: boolean;
|
|
35
|
-
};
|
|
36
|
-
};
|
|
4
|
+
import type { PatientNotesSeam } from './calendar.sheets';
|
|
5
|
+
import type { CalendarHistoryEntry, CalendarPatient } from './calendar.types';
|
|
6
|
+
export type CalendarDocumentKind = AppointmentDocumentKind;
|
|
7
|
+
/** One appointment occurrence as the host reads it for the details panel
|
|
8
|
+
* (P-C2). An absent member renders nothing: never a zero, never an
|
|
9
|
+
* empty-state claim. The read fields are AppointmentDetailsRead's; the
|
|
10
|
+
* calendar adds its richer patient record and the host's actions. */
|
|
11
|
+
export interface CalendarAppointmentDetails extends Omit<AppointmentDetailsRead, 'patient' | 'history'> {
|
|
37
12
|
/** Absent = no patient; `phones` carries every labelled number. */
|
|
38
13
|
patient?: CalendarPatient;
|
|
39
|
-
/** Absent = not permitted; an absent figure is gated on its own. */
|
|
40
|
-
money?: {
|
|
41
|
-
billableAmount?: number;
|
|
42
|
-
unpaidAmount?: number;
|
|
43
|
-
};
|
|
44
|
-
care?: {
|
|
45
|
-
/** Without `number` the section shows the plan name alone. */
|
|
46
|
-
plan?: {
|
|
47
|
-
id: string;
|
|
48
|
-
number?: string;
|
|
49
|
-
name: string;
|
|
50
|
-
};
|
|
51
|
-
lines: Array<{
|
|
52
|
-
entryId: string;
|
|
53
|
-
careId: string;
|
|
54
|
-
name: string;
|
|
55
|
-
code?: string;
|
|
56
|
-
elementsLabel?: string;
|
|
57
|
-
done: boolean;
|
|
58
|
-
billed: boolean;
|
|
59
|
-
phases: string[];
|
|
60
|
-
/** Absent = prices withheld for this viewer. */
|
|
61
|
-
priceCents?: number;
|
|
62
|
-
}>;
|
|
63
|
-
};
|
|
64
|
-
booking?: {
|
|
65
|
-
typedName?: string;
|
|
66
|
-
phone?: string;
|
|
67
|
-
email?: string;
|
|
68
|
-
note?: string;
|
|
69
|
-
bookedAtIso?: string;
|
|
70
|
-
paidOnlineAmount?: number;
|
|
71
|
-
};
|
|
72
|
-
signing?: {
|
|
73
|
-
required: number;
|
|
74
|
-
toComplete: number;
|
|
75
|
-
requestedVia?: CalendarSignChannel;
|
|
76
|
-
aesSetUp: boolean;
|
|
77
|
-
};
|
|
78
14
|
history: CalendarHistoryEntry[];
|
|
79
15
|
/** Host-owned; the kit never sees the session code. */
|
|
80
16
|
onJoinTelehealth?: () => void;
|
|
81
17
|
/** Host-composed; absent = not available. */
|
|
82
18
|
whatsappUrl?: string;
|
|
83
19
|
/** Host-owned bridge to the practice's WhatsApp snippets; absent = not
|
|
84
|
-
*
|
|
20
|
+
* offered. With `whatsappUrl` too, the one button calls this. */
|
|
85
21
|
onWhatsApp?: () => void;
|
|
86
22
|
/** Server-built link to the task page, same tab; absent = not offered. */
|
|
87
23
|
createTaskUrl?: string;
|
|
@@ -91,34 +27,29 @@ export interface CalendarAppointmentDetails {
|
|
|
91
27
|
onCreate: (kind: CalendarDocumentKind) => void;
|
|
92
28
|
};
|
|
93
29
|
}
|
|
94
|
-
export type CalendarAppointmentDetailsSnapshot =
|
|
95
|
-
status: 'ready';
|
|
96
|
-
details: CalendarAppointmentDetails;
|
|
97
|
-
} | {
|
|
98
|
-
status: 'refused';
|
|
99
|
-
reason: string;
|
|
100
|
-
retryable?: boolean;
|
|
101
|
-
};
|
|
30
|
+
export type CalendarAppointmentDetailsSnapshot = AppointmentDetailsSnapshot<CalendarAppointmentDetails>;
|
|
102
31
|
/** A rejected promise is a transient failure (error with Retry); 'refused'
|
|
103
32
|
* means not visible (the reason, with Retry only when retryable). */
|
|
104
|
-
export type CalendarAppointmentDetailsLoader =
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
* not a real 'YYYY-MM-DDTHH:mm:ss' reading. Ranges are checked rather than
|
|
109
|
-
* round-tripped, so a time inside a daylight-saving gap still parses. */
|
|
110
|
-
export declare function parseDetailsStartIso(startIso: string | undefined): Date | undefined;
|
|
33
|
+
export type CalendarAppointmentDetailsLoader = AppointmentDetailsLoader<CalendarAppointmentDetails>;
|
|
34
|
+
/** The host's zone-less wall clock as a local Date; see
|
|
35
|
+
* `parseAppointmentStartIso`. */
|
|
36
|
+
export declare const parseDetailsStartIso: typeof parseAppointmentStartIso;
|
|
111
37
|
export interface CalendarDetailsHydrationProps {
|
|
112
38
|
/** The occurrence to read; a new id aborts the previous read. */
|
|
113
39
|
eventId: string;
|
|
40
|
+
/** Keep it stable: a new function reads the occurrence again. */
|
|
114
41
|
load: CalendarAppointmentDetailsLoader;
|
|
115
42
|
/** Mounted only with details whose eventId and startIso passed the checks. */
|
|
116
43
|
children: (details: CalendarAppointmentDetails) => ReactNode;
|
|
117
44
|
}
|
|
118
45
|
/** The details panel is not mounted until the host's read answers for this
|
|
119
|
-
* occurrence. A late answer for a replaced id or loader is ignored.
|
|
46
|
+
* occurrence. A late answer for a replaced id or loader is ignored. A new
|
|
47
|
+
* `load` reads the same occurrence again while the current read stays on
|
|
48
|
+
* screen, so a host re-reads after a change by handing a new loader. Until
|
|
49
|
+
* the first answer the panel's own shell shows the skeleton, the error with
|
|
50
|
+
* Retry, or the refusal. */
|
|
120
51
|
export declare function CalendarDetailsHydration({ eventId, load, children, }: CalendarDetailsHydrationProps): import("react/jsx-runtime").JSX.Element;
|
|
121
|
-
export interface
|
|
52
|
+
export interface CalendarAppointmentDetailsPanelProps {
|
|
122
53
|
/** The occurrence as the host read it (P-C2). */
|
|
123
54
|
details: CalendarAppointmentDetails;
|
|
124
55
|
/** The row's patient id (N-C5); defaults to the read's patient. */
|
|
@@ -153,9 +84,8 @@ export interface AppointmentDetailsPanelProps {
|
|
|
153
84
|
privacyTitle?: string;
|
|
154
85
|
locale?: string;
|
|
155
86
|
}
|
|
156
|
-
/** The appointment details panel (P-C2, P-C3): the
|
|
157
|
-
*
|
|
158
|
-
* status and the actions, and a History sub-view in place of the body.
|
|
87
|
+
/** The appointment details panel of the calendar (P-C2, P-C3): the published
|
|
88
|
+
* AppointmentDetailsPanel, fed from CalendarData and the calendar's read.
|
|
159
89
|
* It docks in the rail, is no dialog and asks no series scope. */
|
|
160
|
-
export declare function
|
|
90
|
+
export declare function CalendarAppointmentDetailsPanel({ details, patientId, notesSeam, onOpenNotes, readOnly, onEdit, onMove, onCopy, onStatusChange, onDescriptionChange, mapsLink, privacy, privacyTitle, locale, }: CalendarAppointmentDetailsPanelProps): import("react/jsx-runtime").JSX.Element;
|
|
161
91
|
//# sourceMappingURL=calendar-appointment-details.d.ts.map
|
|
@@ -1,11 +1,12 @@
|
|
|
1
|
-
interface
|
|
1
|
+
interface CalendarPatientPickerProps {
|
|
2
2
|
value: string;
|
|
3
3
|
onValueChange: (value: string) => void;
|
|
4
4
|
selectedLabel?: string;
|
|
5
5
|
size?: 'sm' | 'md';
|
|
6
6
|
disabled?: boolean;
|
|
7
7
|
}
|
|
8
|
-
/** One id-valued patient control for the editor and waiting surfaces
|
|
9
|
-
|
|
8
|
+
/** One id-valued patient control for the editor and waiting surfaces: the
|
|
9
|
+
* shared PatientPicker fed from `CalendarData`. */
|
|
10
|
+
export declare function CalendarPatientPicker(props: CalendarPatientPickerProps): import("react/jsx-runtime").JSX.Element;
|
|
10
11
|
export {};
|
|
11
12
|
//# sourceMappingURL=calendar-patient-picker.d.ts.map
|
|
@@ -1,23 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
/** The mask privacy mode shows for a name. TOTAL, as `maskedTitle` is: an
|
|
3
|
-
* empty or absent host mask degrades to the bullets, never to a blank. */
|
|
4
|
-
export declare function privacyMask(mask?: string): string;
|
|
5
|
-
/** One muted line where a personal value would have been. */
|
|
6
|
-
export declare function PrivacyHiddenLine({ block }: {
|
|
7
|
-
block?: string;
|
|
8
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
9
|
-
/** The patient card under privacy: the grid's mask, no photo, no contact
|
|
10
|
-
* fields and no chips. Keeps `data-card="patient"` for host hooks. */
|
|
11
|
-
export declare function PrivacyIdentityCard({ mask }: {
|
|
12
|
-
mask?: string;
|
|
13
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
14
|
-
/** A whole rail panel withheld under privacy: a form or a notes list that
|
|
15
|
-
* could only open by showing what the mask hides. */
|
|
16
|
-
export declare function PrivacyNoticePanel({ title, icon, onTurnOff, }: {
|
|
17
|
-
/** The panel's own title, so the rail still says which tool this is. */
|
|
18
|
-
title: string;
|
|
19
|
-
icon?: ReactNode;
|
|
20
|
-
/** Absent: the notice explains, and the toolbar's toggle is the way out. */
|
|
21
|
-
onTurnOff?: () => void;
|
|
22
|
-
}): import("react/jsx-runtime").JSX.Element;
|
|
1
|
+
export { privacyMask, PrivacyHiddenLine, PrivacyIdentityCard, PrivacyNoticePanel, } from '../../components/_shared/privacy-mask';
|
|
23
2
|
//# sourceMappingURL=calendar-privacy.d.ts.map
|
|
@@ -1,20 +1,27 @@
|
|
|
1
1
|
export declare const STICKY_HEADER_CELL = ".fc-scrollgrid-section-header.fc-scrollgrid-section-sticky > *";
|
|
2
|
+
/** The kit Calendar's create, Move and Copy banner. */
|
|
3
|
+
export declare const MODE_BANNER = "[data-calendar-mode-banner]";
|
|
2
4
|
/** The box `position: sticky` resolves against: the nearest ancestor that
|
|
3
5
|
* is a scroll container (`clip` is not one), or null for the viewport. */
|
|
4
6
|
export declare function stickyScrollport(el: Element): Element | null;
|
|
5
|
-
/** How far the header
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
* offset: a nav height set blind is exactly that bug. */
|
|
7
|
+
/** How far the header sits below its natural `top: 0` to clear the nav. The
|
|
8
|
+
* kit resets `.fc-view` and its table; any other host scroll container
|
|
9
|
+
* still yields 0, as an offset there covers the all-day lane. */
|
|
9
10
|
export declare function stickyHeaderOffset(navigation: HTMLElement, header: Element | null): number;
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
11
|
+
export interface StickyOffsets {
|
|
12
|
+
/** `--inc1-nav-offset`: the nav alone, as the header sees it. */
|
|
13
|
+
nav: number;
|
|
14
|
+
/** `--inc1-banner-top`: where the mode banner parks. */
|
|
15
|
+
bannerTop: number;
|
|
16
|
+
/** `--inc1-header-offset`: the nav plus a banner in the header's scrollport. */
|
|
17
|
+
header: number;
|
|
18
|
+
/** `--inc1-pinned-block-size`: everything pinned above the grid's events. */
|
|
19
|
+
pinned: number;
|
|
20
|
+
}
|
|
21
|
+
/** Every sticky offset the surface needs, from one measurement. */
|
|
22
|
+
export declare function stickyOffsets(navigation: HTMLElement, header: Element | null, banner: Element | null): StickyOffsets;
|
|
23
|
+
/** Keeps the sticky offsets on `surface` current; re-measures on resize and
|
|
24
|
+
* when the header or banner is inserted or replaced. A runtime `overflow`
|
|
25
|
+
* change with no resize is not seen: remount. Returns the cleanup. */
|
|
19
26
|
export declare function trackStickyHeaderOffset(navigation: HTMLElement, surface: HTMLElement): () => void;
|
|
20
27
|
//# sourceMappingURL=calendar-sticky-offset.d.ts.map
|
|
@@ -3,29 +3,25 @@ export interface CalendarTaskEditorProps {
|
|
|
3
3
|
mode: 'create' | 'edit';
|
|
4
4
|
/** Edit mode: which task to load via `loadTask`. */
|
|
5
5
|
taskId?: string;
|
|
6
|
-
/** Create mode: the date
|
|
7
|
-
*
|
|
6
|
+
/** Create mode: the date and time to prefill, the grid's selection or
|
|
7
|
+
* now. Local wall-clock, never re-read after mount. */
|
|
8
8
|
initialDate?: Date;
|
|
9
9
|
onCancel: () => void;
|
|
10
|
-
/** Fires once a create
|
|
11
|
-
* rail or refresh whatever list is showing. */
|
|
10
|
+
/** Fires once a create or update lands. */
|
|
12
11
|
onSaved?: (task: CalendarTask) => void;
|
|
13
12
|
onDeleted?: (id: string) => void;
|
|
14
|
-
/** Must resolve WITH the saved record
|
|
13
|
+
/** Must resolve WITH the saved record: the host assigns the new id. */
|
|
15
14
|
onCreateTask?: (draft: TaskDraft) => Promise<CalendarTask>;
|
|
16
|
-
/** Full re-send, not a patch. Resolves with nothing
|
|
17
|
-
* already named by `taskId`. */
|
|
15
|
+
/** Full re-send, not a patch. Resolves with nothing. */
|
|
18
16
|
onUpdateTask?: (id: string, draft: TaskDraft) => Promise<void>;
|
|
19
17
|
onDeleteTask?: (id: string) => Promise<void>;
|
|
20
18
|
onSetTaskDone?: (id: string, done: boolean) => Promise<void>;
|
|
21
19
|
loadTask?: (id: string) => Promise<CalendarTask>;
|
|
22
|
-
/** Withholds every write control and disables the fieldset
|
|
23
|
-
* contract as the appointment editor's `readOnly`. */
|
|
20
|
+
/** Withholds every write control and disables the fieldset. */
|
|
24
21
|
readOnly?: boolean;
|
|
25
|
-
/** Privacy mode: the linked patient's identity is masked, never the
|
|
26
|
-
*
|
|
22
|
+
/** Privacy mode: the linked patient's identity is masked, never the fact
|
|
23
|
+
* that one is linked. */
|
|
27
24
|
privacy?: boolean;
|
|
28
|
-
locale?: string;
|
|
29
25
|
}
|
|
30
|
-
export declare function CalendarTaskEditor(
|
|
26
|
+
export declare function CalendarTaskEditor(props: CalendarTaskEditorProps): import("react/jsx-runtime").JSX.Element;
|
|
31
27
|
//# sourceMappingURL=calendar-task-editor.d.ts.map
|
|
@@ -1,3 +1,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Calendar pattern — the WORKSPACE ROOT.
|
|
3
|
+
*
|
|
4
|
+
* The practice agenda page the platform mounts from the kit: the grid
|
|
5
|
+
* and its two-strip toolbar (`calendar.surface.tsx`) beside a MINIMAL
|
|
6
|
+
* Control Room rail docked inline-end — up to six tools, in strip
|
|
7
|
+
* order: the upcoming Appointments panel (the rail's resting state and
|
|
8
|
+
* its default), ONE appointment editor / details tool, the waiting list,
|
|
9
|
+
* patient notes when in context, online bookings and the free-slot
|
|
10
|
+
* finder. The kit adds nothing else: no Inbox, no Alia, no patient tabs,
|
|
11
|
+
* no care plan, no tasks. A host may append its own tools after these
|
|
12
|
+
* (`extraTools`), which is how a host mounts TasksPanel. The panels are
|
|
13
|
+
* the extracted modules from `calendar.sheets.tsx`; `calendar.host.ts`'s
|
|
14
|
+
* open / close seam maps onto the rail's dock, with `close()` returning
|
|
15
|
+
* to the Appointments panel so no path leaves an empty rail.
|
|
16
|
+
*
|
|
17
|
+
* Six is the ceiling, not the floor: `availableTools` narrows the set
|
|
18
|
+
* to what the host can actually back with data, hiding the rail tool AND
|
|
19
|
+
* the toolbar control that opens it, and routing anything aimed at a
|
|
20
|
+
* withheld tool to the Appointments panel. A host with no business
|
|
21
|
+
* hours, holidays or closures must withhold the free-slot finder — it
|
|
22
|
+
* would otherwise report booked and shut-day times as free.
|
|
23
|
+
*
|
|
24
|
+
* The host owns the data and the domain state: it hands in a
|
|
25
|
+
* `CalendarData` read model (`calendar.data.ts`) and a `CalendarJourney`
|
|
26
|
+
* (`calendar.journey.ts`) — the demos from their fixtures and the
|
|
27
|
+
* fixture-backed journey hook, the platform island from
|
|
28
|
+
* `/internalApi/...`. The workspace owns what sits between the two: the
|
|
29
|
+
* cog's display settings, the privacy flag, the one polite region, the
|
|
30
|
+
* editor tool's mode, the placement / create modes, the deep-link
|
|
31
|
+
* effects and the tasks filter. It renders NO header or sidebar — the
|
|
32
|
+
* host page has its own — and expects a bounded block-size from its
|
|
33
|
+
* parent (it fills it; the surface scrolls inside, the rail stays put),
|
|
34
|
+
* exactly what `AppFrame`'s `<main>` gives a page.
|
|
35
|
+
*
|
|
36
|
+
* The confirmations stay kit `Dialog`s — they interrupt rather than
|
|
37
|
+
* dock: the move confirm, the delete confirm with its recurring scope
|
|
38
|
+
* and care-plan cleanup and the Create-bill confirm.
|
|
39
|
+
*/
|
|
40
|
+
import type { CalendarView } from '../../components/calendar';
|
|
41
|
+
import { type ControlRoomFavoriteChange, type ControlRoomTool } from '../../components/control-room-rail';
|
|
1
42
|
import { type CalendarAppointmentEditorLoader } from './calendar-editor-hydration';
|
|
2
43
|
import { type CalendarAppointmentDetailsLoader } from './calendar-appointment-details';
|
|
3
44
|
import { type CalendarData } from './calendar.data';
|
|
@@ -18,6 +59,81 @@ export interface CalendarOnlineBookings {
|
|
|
18
59
|
createdAtById?: Readonly<Record<string, string>>;
|
|
19
60
|
onRetry?: () => void;
|
|
20
61
|
}
|
|
62
|
+
/** Where a tool panel was opened from. `system` is a dock the workspace
|
|
63
|
+
* made on its own (the resting panel, a return after a save, a
|
|
64
|
+
* toolbar or journey hand-off), not a pick on the rail. */
|
|
65
|
+
export type CalendarToolOpenSource = 'rail' | 'appointment_panel' | 'selection' | 'system';
|
|
66
|
+
/** Where the appointment behind a details panel was selected. `host` is
|
|
67
|
+
* a selection the journey made itself. */
|
|
68
|
+
export type CalendarDetailsOpenSource = 'calendar' | 'appointments_panel' | 'bookings_panel' | 'waiting_list' | 'deep_link' | 'host';
|
|
69
|
+
/**
|
|
70
|
+
* A host tool on the workspace rail (`CalendarWorkspaceProps.extraTools`):
|
|
71
|
+
* a Control Room tool, plus what privacy mode does to it. `scope` and
|
|
72
|
+
* `reorderable` are ignored: the workspace rail orders by favourites.
|
|
73
|
+
*/
|
|
74
|
+
export interface CalendarWorkspaceExtraTool extends ControlRoomTool {
|
|
75
|
+
/**
|
|
76
|
+
* What privacy mode does to this tool's panel. The kit cannot see what
|
|
77
|
+
* the panel shows, so the default is the safe one.
|
|
78
|
+
*
|
|
79
|
+
* - `'withhold'` (default): while privacy mode is on, the panel and its
|
|
80
|
+
* `header` are replaced by the privacy notice, titled with `label` and
|
|
81
|
+
* offering "Turn off privacy mode". The host's panel is unmounted until
|
|
82
|
+
* privacy is turned off. The strip button and `badgeCount` stay.
|
|
83
|
+
* - `'host'`: the panel stays mounted and the host masks it, reading the
|
|
84
|
+
* mode from `onPrivacyChange` (a task list sets `linkedLabelMasked`;
|
|
85
|
+
* mind free-text titles, which the grid hides under privacy).
|
|
86
|
+
* Also the right value for a panel that shows no patient data at all.
|
|
87
|
+
* The kit cannot check either claim.
|
|
88
|
+
*/
|
|
89
|
+
privacy?: 'withhold' | 'host';
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Usage callbacks for the host's analytics. The kit raises no event of
|
|
93
|
+
* its own and passes identifiers only, never patient data: the host owns
|
|
94
|
+
* the calls, the property allow-list and any once-per guard.
|
|
95
|
+
*/
|
|
96
|
+
export interface CalendarWorkspaceAnalytics {
|
|
97
|
+
/** A built-in tool panel opened. Not raised again while it stays open,
|
|
98
|
+
* and never for an id no tool carries. Host tools report through
|
|
99
|
+
* `onExtraToolOpen` instead. */
|
|
100
|
+
onToolOpen?: (event: {
|
|
101
|
+
toolId: CalendarWorkspaceToolId;
|
|
102
|
+
source: CalendarToolOpenSource;
|
|
103
|
+
view: CalendarView;
|
|
104
|
+
}) => void;
|
|
105
|
+
/** An appointment's preview opened. Raised on EVERY opening: the
|
|
106
|
+
* once-per-appointment guard is the host's. */
|
|
107
|
+
onAppointmentPreviewOpen?: (event: {
|
|
108
|
+
eventId: string;
|
|
109
|
+
view: CalendarView;
|
|
110
|
+
privacy: boolean;
|
|
111
|
+
}) => void;
|
|
112
|
+
/** An appointment's details docked for a new selection. Not raised when
|
|
113
|
+
* details come back after an edit. */
|
|
114
|
+
onAppointmentDetailsOpen?: (event: {
|
|
115
|
+
eventId: string;
|
|
116
|
+
source: CalendarDetailsOpenSource;
|
|
117
|
+
view: CalendarView;
|
|
118
|
+
}) => void;
|
|
119
|
+
/** A rail preference was saved on this device. `toolId` may be a host
|
|
120
|
+
* tool's id. `resize` is raised only with `persistPanelWidthKey`, since
|
|
121
|
+
* without it nothing is saved. */
|
|
122
|
+
onToolPreferencesChange?: (event: {
|
|
123
|
+
action: ControlRoomFavoriteChange['action'] | 'resize';
|
|
124
|
+
toolId: string;
|
|
125
|
+
}) => void;
|
|
126
|
+
/**
|
|
127
|
+
* A host tool's panel opened (`extraTools`). Not raised again while it
|
|
128
|
+
* stays open. `rail` is a pick on the strip; `system` is any other open
|
|
129
|
+
* (the host's own `useControlRoomActions().openTool`, an agent).
|
|
130
|
+
*/
|
|
131
|
+
onExtraToolOpen?: (event: {
|
|
132
|
+
toolId: string;
|
|
133
|
+
source: Extract<CalendarToolOpenSource, 'rail' | 'system'>;
|
|
134
|
+
view: CalendarView;
|
|
135
|
+
}) => void;
|
|
136
|
+
}
|
|
21
137
|
export interface CalendarWorkspaceProps {
|
|
22
138
|
/** Optional canonical read for every existing-appointment editor route.
|
|
23
139
|
* The form waits for this response; failures/refusals expose no editable
|
|
@@ -26,7 +142,9 @@ export interface CalendarWorkspaceProps {
|
|
|
26
142
|
loadAppointmentEditor?: CalendarAppointmentEditorLoader;
|
|
27
143
|
/** The host's read for the read-only appointment details panel (P-C3).
|
|
28
144
|
* With it a selection docks that panel, Edit opens the editor and a save
|
|
29
|
-
* re-reads the details; without it details stays the editor form.
|
|
145
|
+
* re-reads the details; without it details stays the editor form. Keep
|
|
146
|
+
* it stable: passing a new function re-reads the open details panel,
|
|
147
|
+
* which is how a host shows a change made outside the panel. */
|
|
30
148
|
loadAppointmentDetails?: CalendarAppointmentDetailsLoader;
|
|
31
149
|
/** The domain state and its handlers — the host implements them. */
|
|
32
150
|
journey: CalendarJourney;
|
|
@@ -131,6 +249,47 @@ export interface CalendarWorkspaceProps {
|
|
|
131
249
|
* it cannot show never marks the cog. */
|
|
132
250
|
backlogFilters?: Readonly<Record<BacklogGap, boolean>>;
|
|
133
251
|
onBacklogFiltersChange?: (filters: Readonly<Record<BacklogGap, boolean>>) => void;
|
|
252
|
+
/** Device key the rail saves pinned tools and their order under. Omit
|
|
253
|
+
* it and the rail keeps its generic default, `ui.controlRoom.favorites`. */
|
|
254
|
+
persistFavoritesKey?: string;
|
|
255
|
+
/** Device key the rail saves the panel width under. Omit it and width
|
|
256
|
+
* is not saved, as before. On-device only; nothing reaches a server. */
|
|
257
|
+
persistPanelWidthKey?: string;
|
|
258
|
+
/** Usage callbacks for the host's analytics. Omit it and nothing is
|
|
259
|
+
* reported. */
|
|
260
|
+
analytics?: CalendarWorkspaceAnalytics;
|
|
261
|
+
/**
|
|
262
|
+
* Host tools, appended to the rail after the built-in ones, in this
|
|
263
|
+
* order. A tool is offered by passing it and withheld by leaving it out:
|
|
264
|
+
* `availableTools` narrows the built-in tools only.
|
|
265
|
+
*
|
|
266
|
+
* Ids: every `WORKSPACE_TOOL` id is reserved, even for a tool
|
|
267
|
+
* `availableTools` withholds, and a tool using one is left off the rail.
|
|
268
|
+
* A repeated id keeps its first tool. Nothing throws. The kit's own
|
|
269
|
+
* Storybook and tests warn; the published build drops the tool silently.
|
|
270
|
+
*
|
|
271
|
+
* The panel renders inside the workspace, so the host's own providers
|
|
272
|
+
* reach it. It unmounts when another tool opens, so keep state that must
|
|
273
|
+
* survive in the host. Render a kit `PanelHeader` first and the rail puts
|
|
274
|
+
* its favourite and close controls in it. Opening one reports through
|
|
275
|
+
* `analytics.onExtraToolOpen`. The workspace passes no permission to host
|
|
276
|
+
* tools. Only the strip, an agent and code inside an open panel
|
|
277
|
+
* (`useControlRoomActions`) open a tool: code outside the workspace
|
|
278
|
+
* cannot, since the workspace owns its rail provider. If the host stops
|
|
279
|
+
* passing the open tool, the rail docks the Appointments panel. Memoise
|
|
280
|
+
* the array: a new one re-registers the rail.
|
|
281
|
+
*/
|
|
282
|
+
extraTools?: readonly CalendarWorkspaceExtraTool[];
|
|
283
|
+
/**
|
|
284
|
+
* Raised when privacy mode turns on or off, from the toolbar toggle or a
|
|
285
|
+
* withheld panel's "Turn off privacy mode". Observe-only: the workspace
|
|
286
|
+
* owns the flag, it starts off on every mount (not reported) and is
|
|
287
|
+
* never persisted. Unmounting with privacy on reports `false`, so the
|
|
288
|
+
* host's copy never outlives the workspace. Raised in the same handler,
|
|
289
|
+
* so a host that sets state here renders its masked tool in the same
|
|
290
|
+
* commit as the masked grid.
|
|
291
|
+
*/
|
|
292
|
+
onPrivacyChange?: (privacy: boolean) => void;
|
|
134
293
|
}
|
|
135
294
|
/**
|
|
136
295
|
* The cog's settings as the workspace opens with them: the remembered
|
|
@@ -35,6 +35,22 @@ export declare const ALL_WORKSPACE_TOOLS: readonly CalendarWorkspaceToolId[];
|
|
|
35
35
|
* kit it mounts must not crash the agenda.
|
|
36
36
|
*/
|
|
37
37
|
export declare function resolveAvailableTools(requested: readonly string[]): ReadonlySet<CalendarWorkspaceToolId>;
|
|
38
|
+
/** Whether `id` is one of the built-in rail tools. */
|
|
39
|
+
export declare function isWorkspaceToolId(id: string): id is CalendarWorkspaceToolId;
|
|
40
|
+
/** Why a host tool was left off the rail. */
|
|
41
|
+
export type ExtraToolRejection = 'reserved' | 'duplicate' | 'empty';
|
|
42
|
+
/** The host tools the rail can carry, in the host's order. Built-in ids are
|
|
43
|
+
* reserved even when withheld, a repeated id keeps its first tool, an empty
|
|
44
|
+
* id is dropped, and nothing throws: a host mistake must not sink the page. */
|
|
45
|
+
export declare function resolveExtraTools<T extends {
|
|
46
|
+
readonly id: string;
|
|
47
|
+
}>(requested: readonly T[]): {
|
|
48
|
+
tools: T[];
|
|
49
|
+
rejected: {
|
|
50
|
+
id: string;
|
|
51
|
+
reason: ExtraToolRejection;
|
|
52
|
+
}[];
|
|
53
|
+
};
|
|
38
54
|
/** The platform's four ranges; "Working week" became the Show-weekends
|
|
39
55
|
* item, so it is no longer a view of its own. */
|
|
40
56
|
export type WorkspaceViewId = 'day' | 'threeDays' | 'week' | 'month';
|
|
@@ -207,18 +223,7 @@ export declare function signChannelStates(ref: PatientRef): {
|
|
|
207
223
|
* email, else nothing. "Can take one" is `ready` alone — a channel we
|
|
208
224
|
* know nothing about is not a channel to send on by default. */
|
|
209
225
|
export declare function defaultSignMode(ref: PatientRef): RequiredDocsSignMode;
|
|
210
|
-
|
|
211
|
-
* the link's own label. Empty when the host supplied no address at all,
|
|
212
|
-
* which is the caller's signal to leave the map row out rather than
|
|
213
|
-
* offer a search for nothing. */
|
|
214
|
-
export declare function patientAddressLine(patient: CalendarPatient): string;
|
|
215
|
-
/** The map link's own LABEL — street and city, the pair the popover has
|
|
216
|
-
* always printed. The postcode belongs in the search query, not in the
|
|
217
|
-
* visible text, so widening `patientAddressLine` for the URL must not
|
|
218
|
-
* drag the label along with it. */
|
|
219
|
-
export declare function patientAddressLabel(patient: CalendarPatient): string;
|
|
220
|
-
/** Google Maps search for the patient's address — the popover's map link. */
|
|
221
|
-
export declare function patientMapsUrl(patient: CalendarPatient): string;
|
|
226
|
+
export { patientAddressLabel, patientAddressLine, patientMapsUrl, } from '../../components/_shared/appointment-format';
|
|
222
227
|
/** A CREATE mode armed by a deep link (`createParameters`) or the
|
|
223
228
|
* Backlog's Schedule: the next empty-slot click opens the editor with
|
|
224
229
|
* this context already filled in (platform `_switchMode('create')`). */
|
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
*/
|
|
13
13
|
import type { CalendarEventStatus } from '../../components/calendar';
|
|
14
14
|
import type { Dispatch, SetStateAction } from 'react';
|
|
15
|
-
import type { NotesPanelNote, NotesPanelProps, NotesPanelSubmission, AiConsentGate } from '../../components/notes-panel';
|
|
15
|
+
import type { NotesPanelNote, NotesPanelProps, NotesPanelSubmission, NotesPanelWriteFailure, AiConsentGate } from '../../components/notes-panel';
|
|
16
16
|
import type { PatientNotesSeam } from './calendar.sheets';
|
|
17
17
|
import type { AvailabilityContext, BacklogFilter, BacklogItem, CalendarFreeSlot, CalendarRow, DisplaySettings, DraftSlot, EditorDraft, EditorPrefill, FindSlotsSeed, HistoryInput, RailFocus, SlotPatch, WaitingEntryDraft } from './calendar.model';
|
|
18
18
|
import type { DeleteOptions, EditorDraftExtras, RecurringScope } from './calendar-workspace.model';
|
|
@@ -171,14 +171,50 @@ export interface CalendarJourney {
|
|
|
171
171
|
* stored note — its id, its timestamp and its AUTHOR, who is the
|
|
172
172
|
* signed-in operator the host knows and the kit does not. The panel
|
|
173
173
|
* hands over only what was typed, so no name the kit invented can
|
|
174
|
-
* ever be attributed to a clinical note.
|
|
174
|
+
* ever be attributed to a clinical note. Reject with a translated
|
|
175
|
+
* Error: the draft stays in the composer with the message while the
|
|
176
|
+
* Notes tool is open, and `handleNoteWriteError` hears a refusal that
|
|
177
|
+
* lands after the reader left it.
|
|
175
178
|
*/
|
|
176
179
|
handleAddNote: (patientId: string, submission: NotesPanelSubmission) => void | Promise<void>;
|
|
177
180
|
/** Replace a note's body: HTML for an HTML note, else plain text. A
|
|
178
|
-
* rejected write keeps the draft
|
|
181
|
+
* rejected write keeps the draft in the composer with its message, as
|
|
182
|
+
* `handleAddNote` does. */
|
|
179
183
|
handleEditNote: (patientId: string, noteId: string, content: string) => void | Promise<void>;
|
|
184
|
+
/**
|
|
185
|
+
* Delete a note. Called on the click that confirms it. Resolve once the
|
|
186
|
+
* delete has landed. A rejection brings the row back and the notes
|
|
187
|
+
* panel shows the error's message, so reject with a translated Error
|
|
188
|
+
* and do not also toast it.
|
|
189
|
+
*
|
|
190
|
+
* A clinical note is taken as kept for the record: its row waits in
|
|
191
|
+
* place, paused, until `notesByPatient` marks it `deleted`. Any other
|
|
192
|
+
* note fades and stays hidden until `notesByPatient` drops it. Set
|
|
193
|
+
* `keptOnDelete` on a note to say otherwise. The panel holds this only
|
|
194
|
+
* while the Notes tool stays open for that patient: reopened, it shows
|
|
195
|
+
* the note as `notesByPatient` does, with a live delete. So return the
|
|
196
|
+
* same promise for a second delete of a note already being deleted.
|
|
197
|
+
*/
|
|
180
198
|
handleDeleteNote: (patientId: string, noteId: string) => void | Promise<void>;
|
|
181
|
-
|
|
199
|
+
/**
|
|
200
|
+
* Pin or unpin a note. `next` is the value the note moves to, so set it
|
|
201
|
+
* rather than flipping what you hold. A returned promise holds the new
|
|
202
|
+
* value until the notes agree; a rejection rolls it back and the notes
|
|
203
|
+
* panel shows the message. Do not also toast it.
|
|
204
|
+
*/
|
|
205
|
+
handleToggleNotePin: (patientId: string, noteId: string, next: boolean) => void | Promise<void>;
|
|
206
|
+
/** As `handleToggleNotePin`, for the flag. Omit it and the flag control
|
|
207
|
+
* is not offered. */
|
|
208
|
+
handleToggleNoteFlag?: (patientId: string, noteId: string, next: boolean) => void | Promise<void>;
|
|
209
|
+
/**
|
|
210
|
+
* Hears every refused note write: a save, a delete, a pin or a flag.
|
|
211
|
+
* `failure.shown` says whether the notes panel told the reader. Toast
|
|
212
|
+
* only the ones with `shown: false`, for example a refusal that arrives
|
|
213
|
+
* after the reader switched tool or patient; a save among them has lost
|
|
214
|
+
* its draft. Wire it in the same change that stops you toasting every
|
|
215
|
+
* refusal yourself: without it, those late refusals reach no one.
|
|
216
|
+
*/
|
|
217
|
+
handleNoteWriteError?: (patientId: string, failure: NotesPanelWriteFailure) => void;
|
|
182
218
|
/** Read a patient's notes: the latest few, or every note. */
|
|
183
219
|
handleLoadNotes?: (patientId: string, scope: 'preview' | 'all') => void;
|
|
184
220
|
/**
|