@alfadocs/ui-kit 1.47.1 → 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 +14 -3
- 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 +79 -8
- package/dist/patterns/calendar/calendar-workspace.model.d.ts +17 -12
- package/dist/patterns/calendar/calendar.journey.d.ts +40 -6
- package/dist/patterns/calendar/calendar.model.d.ts +10 -17
- package/dist/patterns/calendar/calendar.sheets.d.ts +18 -16
- 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-BmscntRR.js +0 -12528
- package/dist/_chunks/combobox-DnSdYssy.js +0 -522
- package/dist/_chunks/control-room-rail-CdBOXIqX.js +0 -366
- 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
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TaskEditor: the published form for one task (platform `DoctorReminder`).
|
|
3
|
+
* It creates, edits, completes and deletes a task through host seams, and
|
|
4
|
+
* takes every list, label and seam as a prop, so a host builds it without
|
|
5
|
+
* any calendar context. The calendar's own task route renders it through a
|
|
6
|
+
* thin adapter.
|
|
7
|
+
*
|
|
8
|
+
* A note is the only field every host needs, beside ONE optional
|
|
9
|
+
* counterpart: a patient, a company or an operator, never two, because the
|
|
10
|
+
* platform refuses a task with "More than one counterpart is set". A host
|
|
11
|
+
* that supplies `taskTypes` also gets a required Type select, and one that
|
|
12
|
+
* supplies `assignees` an optional "Assigned to" (a practice user, not the
|
|
13
|
+
* operator). A missing list or seam WITHHOLDS the control it backs; it never
|
|
14
|
+
* renders that control disabled.
|
|
15
|
+
*
|
|
16
|
+
* Two layouts: `variant="panel"` fills a rail tool panel with its own header,
|
|
17
|
+
* scroll body and pinned footer; `variant="subview"` IS a PanelSubview, for a
|
|
18
|
+
* form stacked over a list such as TasksPanel.
|
|
19
|
+
*
|
|
20
|
+
* DOM hooks: `data-component="task-editor"` with `data-variant`,
|
|
21
|
+
* `data-status` and `data-component-id`; the footer actions carry
|
|
22
|
+
* `data-action` "cancel-task", "save-task" and "delete-task", and a failed
|
|
23
|
+
* load's Retry carries "retry-load". In the subview the marker sits on the
|
|
24
|
+
* body, so the PanelSubview section repeats `data-component-id`,
|
|
25
|
+
* `data-variant` and `data-status`: `[data-component-id="…"]` reaches the
|
|
26
|
+
* heading and the footer in both variants.
|
|
27
|
+
*/
|
|
28
|
+
import { type HTMLAttributes } from 'react';
|
|
29
|
+
import type { PatientIdentity } from '../_shared/patient-identity';
|
|
30
|
+
/**
|
|
31
|
+
* A task as the editor loads and saves it: platform `DoctorReminder`. At
|
|
32
|
+
* most ONE counterpart (patient, company or operator); the platform refuses
|
|
33
|
+
* a task naming two. `note` is required here though the platform allows an
|
|
34
|
+
* empty one. There is no title, priority or duration: the platform has none.
|
|
35
|
+
*/
|
|
36
|
+
export interface TaskEditorTask {
|
|
37
|
+
id: string;
|
|
38
|
+
/** An instant as ISO 8601 (platform `date`). The editor emits
|
|
39
|
+
* `toISOString()`, so UTC with a `Z`. Parse it with `new Date()`, never by
|
|
40
|
+
* slicing; a zone-less value reads as local time. */
|
|
41
|
+
dateIso: string;
|
|
42
|
+
/** The task text (platform `note`). Required here, though the platform
|
|
43
|
+
* allows an empty one. Never exposed through the agent. */
|
|
44
|
+
note: string;
|
|
45
|
+
/** The clinician the task concerns: platform `doctorOperator`, an id from
|
|
46
|
+
* `operators`. NOT the assignee. Exclusive with `patientId` and
|
|
47
|
+
* `companyId`. */
|
|
48
|
+
operatorId?: string;
|
|
49
|
+
/** The patient the task concerns: platform `doctorPatient` (column
|
|
50
|
+
* `patientId`). Exclusive with `companyId` and `operatorId`. */
|
|
51
|
+
patientId?: string;
|
|
52
|
+
/** Platform `doctorCompany`, an id from `companies`. Exclusive with
|
|
53
|
+
* `patientId` and `operatorId`. */
|
|
54
|
+
companyId?: string;
|
|
55
|
+
/** An opaque token from `taskTypes`, round-tripped untouched. Without
|
|
56
|
+
* `taskTypes` the Type field is withheld and a new task sends none; a
|
|
57
|
+
* stored one is still re-sent. */
|
|
58
|
+
typeId?: string;
|
|
59
|
+
/** The practice USER the task is assigned to: platform `practiceUser`, an
|
|
60
|
+
* id from `assignees`. Independent of the counterpart. Absent or '':
|
|
61
|
+
* nobody. */
|
|
62
|
+
assigneeId?: string;
|
|
63
|
+
/** Platform `done`. */
|
|
64
|
+
done: boolean;
|
|
65
|
+
}
|
|
66
|
+
/** What `onCreateTask` receives and what an edit save re-sends IN FULL,
|
|
67
|
+
* never a patch. `done` carries the last value the host CONFIRMED, never an
|
|
68
|
+
* optimistic or rolled-back toggle. */
|
|
69
|
+
export type TaskEditorDraft = Omit<TaskEditorTask, 'id' | 'done'> & {
|
|
70
|
+
done?: boolean;
|
|
71
|
+
};
|
|
72
|
+
/** One row of a host list. `label` is the host's own string, already
|
|
73
|
+
* translated. `id` is opaque, unique in its list, never '' and never
|
|
74
|
+
* 'none' (reserved for "Nobody"). */
|
|
75
|
+
export interface TaskEditorOption {
|
|
76
|
+
id: string;
|
|
77
|
+
label: string;
|
|
78
|
+
}
|
|
79
|
+
/** A task type. `custom` (practice-defined) only groups the Type select,
|
|
80
|
+
* and only when the list mixes custom and standard types. */
|
|
81
|
+
export interface TaskEditorTaskType extends TaskEditorOption {
|
|
82
|
+
custom?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/** A patient as the picker needs one: an id and a display name.
|
|
85
|
+
* `CalendarPatient` satisfies it. */
|
|
86
|
+
export type TaskEditorPatient = PatientIdentity;
|
|
87
|
+
/** Host patient typeahead. Called 250 ms after typing stops, for non-blank
|
|
88
|
+
* trimmed queries only. Abort a superseded call through `signal`. The
|
|
89
|
+
* host's order is kept, so matches by phone or number stay. Reject on
|
|
90
|
+
* failure (the picker offers Retry); `[]` is a successful search with no
|
|
91
|
+
* match. The same contract as `CalendarData.searchPatients`. */
|
|
92
|
+
export type TaskEditorSearchPatients = (query: string, options: {
|
|
93
|
+
signal: AbortSignal;
|
|
94
|
+
}) => Promise<readonly TaskEditorPatient[]>;
|
|
95
|
+
/** Where the form is. 'error': the load failed, with Retry. 'locked': edit
|
|
96
|
+
* mode without `taskId` or `loadTask`, never a blank savable form.
|
|
97
|
+
* 'withheld': the privacy notice covers an existing task. */
|
|
98
|
+
export type TaskEditorStatus = 'loading' | 'ready' | 'error' | 'locked' | 'withheld';
|
|
99
|
+
/** The one counterpart choice ("Concerns"). */
|
|
100
|
+
export type TaskEditorAbout = 'nobody' | 'patient' | 'company' | 'operator';
|
|
101
|
+
/** The draft as the agent reads it: identifiers and structure, never the
|
|
102
|
+
* note body. Counterpart ids are what Save would send. */
|
|
103
|
+
export interface TaskEditorDraftState {
|
|
104
|
+
mode: 'create' | 'edit';
|
|
105
|
+
dateIso: string | null;
|
|
106
|
+
about: TaskEditorAbout;
|
|
107
|
+
patientId: string | null;
|
|
108
|
+
companyId: string | null;
|
|
109
|
+
operatorId: string | null;
|
|
110
|
+
typeId: string | null;
|
|
111
|
+
assigneeId: string | null;
|
|
112
|
+
/** The last CONFIRMED done value. */
|
|
113
|
+
done: boolean;
|
|
114
|
+
hasNote: boolean;
|
|
115
|
+
noteLength: number;
|
|
116
|
+
}
|
|
117
|
+
/** Fields an agent may set. Ids must resolve in the host lists, among the
|
|
118
|
+
* patients the host's search returned, or equal the stored one. At most
|
|
119
|
+
* one of `patientId`, `companyId` and `operatorId` per call; each also
|
|
120
|
+
* selects its `about` branch. `assigneeId: null` is Nobody. */
|
|
121
|
+
export interface TaskEditorFieldPatch {
|
|
122
|
+
dateIso?: string;
|
|
123
|
+
note?: string;
|
|
124
|
+
typeId?: string;
|
|
125
|
+
assigneeId?: string | null;
|
|
126
|
+
about?: TaskEditorAbout;
|
|
127
|
+
patientId?: string;
|
|
128
|
+
companyId?: string;
|
|
129
|
+
operatorId?: string;
|
|
130
|
+
}
|
|
131
|
+
/** Curated agent handle. Writes return the host's promise, so a refusal
|
|
132
|
+
* reaches the agent as a rejection. Every write fails unless the status is
|
|
133
|
+
* 'ready' and the form is not read-only. */
|
|
134
|
+
export interface TaskEditorHandle {
|
|
135
|
+
getStatus: () => TaskEditorStatus;
|
|
136
|
+
getDraft: () => TaskEditorDraftState;
|
|
137
|
+
canSave: () => boolean;
|
|
138
|
+
/** Throws on an unknown id, two counterparts or a form not ready. */
|
|
139
|
+
setFields: (patch: TaskEditorFieldPatch) => void;
|
|
140
|
+
save: () => Promise<void>;
|
|
141
|
+
setDone: (done: boolean) => Promise<void>;
|
|
142
|
+
/** Skips the confirmation dialog: the agent runtime confirms instead. */
|
|
143
|
+
deleteTask: () => Promise<void>;
|
|
144
|
+
/** Throws while a save or delete is in flight, as Cancel waits. */
|
|
145
|
+
cancel: () => void;
|
|
146
|
+
}
|
|
147
|
+
export interface TaskEditorProps extends Omit<HTMLAttributes<HTMLElement>, 'children' | 'id' | 'title'> {
|
|
148
|
+
/** Stable instance id, surfaced as `data-component-id` for the agent
|
|
149
|
+
* registry. Generated when absent. */
|
|
150
|
+
id?: string;
|
|
151
|
+
mode: 'create' | 'edit';
|
|
152
|
+
/** Edit mode: the task `loadTask` resolves. Without it, or without
|
|
153
|
+
* `loadTask`, edit mode is 'locked'. */
|
|
154
|
+
taskId?: string;
|
|
155
|
+
/** Create mode: the local date and time to prefill. Read at mount, when
|
|
156
|
+
* the mode or task changes and at each subview reopen. Default: now. */
|
|
157
|
+
initialDate?: Date;
|
|
158
|
+
/** 'panel' (default): fills its box with its own header, scroll body and
|
|
159
|
+
* pinned footer, for a rail tool panel. 'subview': the editor IS a
|
|
160
|
+
* PanelSubview; render it as the LAST, DIRECT child of a
|
|
161
|
+
* `PanelSubview.Host`. */
|
|
162
|
+
variant?: 'panel' | 'subview';
|
|
163
|
+
/** Subview only. Default true. Each change from false to true starts a
|
|
164
|
+
* fresh session: the draft resets and edit mode reloads. Keep one editor
|
|
165
|
+
* mounted and toggle this, so it slides in and returns focus. */
|
|
166
|
+
open?: boolean;
|
|
167
|
+
/** Subview only: fires once the exit has played. */
|
|
168
|
+
onExited?: () => void;
|
|
169
|
+
/** The required Type select, defaulting to the first entry. */
|
|
170
|
+
taskTypes?: ReadonlyArray<TaskEditorTaskType>;
|
|
171
|
+
/** The optional "Assigned to" select: practice users, not operators. */
|
|
172
|
+
assignees?: ReadonlyArray<TaskEditorOption>;
|
|
173
|
+
/** The Company counterpart: a searchable Combobox matching the label,
|
|
174
|
+
* never the id. */
|
|
175
|
+
companies?: ReadonlyArray<TaskEditorOption>;
|
|
176
|
+
/** The Operator counterpart: clinicians. */
|
|
177
|
+
operators?: ReadonlyArray<TaskEditorOption>;
|
|
178
|
+
/** Filtered on the client when `searchPatients` is absent. With neither,
|
|
179
|
+
* the Patient counterpart is withheld; a stored link still shows
|
|
180
|
+
* read-only and is re-sent on Save. */
|
|
181
|
+
patients?: ReadonlyArray<TaskEditorPatient>;
|
|
182
|
+
/** Host typeahead. Wins over `patients` for listing. May change identity
|
|
183
|
+
* between renders; the next query uses the latest. */
|
|
184
|
+
searchPatients?: TaskEditorSearchPatients;
|
|
185
|
+
/** Display name of the task's STORED patient when nothing else resolves
|
|
186
|
+
* it, for example from the TasksPanel row that opened the form. */
|
|
187
|
+
patientLabel?: string;
|
|
188
|
+
/** Resolves any patient id to a name. Tried before `patients` and
|
|
189
|
+
* `patientLabel`. */
|
|
190
|
+
resolvePatientLabel?: (patientId: string) => string | undefined;
|
|
191
|
+
/** Display name of a STORED company that `companies` does not list.
|
|
192
|
+
* Without it the read-only row names the id. */
|
|
193
|
+
companyLabel?: string;
|
|
194
|
+
/** Display name of a STORED operator that `operators` does not list.
|
|
195
|
+
* Without it the row names the id. Each of the three labels names only
|
|
196
|
+
* its own stored link, so a host may pass a TasksPanel row's
|
|
197
|
+
* `linkedLabel` to the one its `linkType` names. */
|
|
198
|
+
operatorLabel?: string;
|
|
199
|
+
/** Subview only: the back arrow's name and tooltip. Already translated.
|
|
200
|
+
* Default "Back to tasks". */
|
|
201
|
+
backLabel?: string;
|
|
202
|
+
/** Resolves the record for edit mode, once per task and session. Aborted
|
|
203
|
+
* through `signal` when the task changes, the subview closes or the
|
|
204
|
+
* privacy notice covers the form; a superseded answer is ignored. */
|
|
205
|
+
loadTask?: (id: string, options: {
|
|
206
|
+
signal: AbortSignal;
|
|
207
|
+
}) => Promise<TaskEditorTask>;
|
|
208
|
+
/** Must resolve WITH the saved record: the host assigns the id. */
|
|
209
|
+
onCreateTask?: (draft: TaskEditorDraft) => Promise<TaskEditorTask>;
|
|
210
|
+
/** A full re-send. Resolves with nothing. */
|
|
211
|
+
onUpdateTask?: (id: string, draft: TaskEditorDraft) => Promise<void>;
|
|
212
|
+
/** Called only after the confirmation dialog. */
|
|
213
|
+
onDeleteTask?: (id: string) => Promise<void>;
|
|
214
|
+
/** The Done switch (edit mode), called on the click. A rejection rolls
|
|
215
|
+
* the switch back. */
|
|
216
|
+
onSetTaskDone?: (id: string, done: boolean) => Promise<void>;
|
|
217
|
+
/** Cancel, plus Back and Escape in the subview. Close the editor. None of
|
|
218
|
+
* them fires while a save or delete is in flight. */
|
|
219
|
+
onCancel: () => void;
|
|
220
|
+
/** After a create or update LANDS. The form then stops writing until it
|
|
221
|
+
* is closed, remounted or reopened. The form cannot be cancelled while a
|
|
222
|
+
* write is in flight, so this fires for every save the user started,
|
|
223
|
+
* unless the host closes or unmounts the editor itself first. */
|
|
224
|
+
onSaved?: (task: TaskEditorTask) => void;
|
|
225
|
+
/** After a delete LANDS. */
|
|
226
|
+
onDeleted?: (id: string) => void;
|
|
227
|
+
/** Withholds every write control and disables the fieldset. */
|
|
228
|
+
readOnly?: boolean;
|
|
229
|
+
/** Privacy mode: the linked patient shows as the mask, never the name. */
|
|
230
|
+
privacy?: boolean;
|
|
231
|
+
/** How an EXISTING task opens under `privacy`. 'notice' (default): the
|
|
232
|
+
* privacy notice covers the form, the record is not loaded, and the
|
|
233
|
+
* footer holds Cancel only. 'mask': the form opens with the patient
|
|
234
|
+
* masked and the note visible. Create mode always opens masked. */
|
|
235
|
+
privacyMode?: 'notice' | 'mask';
|
|
236
|
+
/** The notice's "Turn off privacy mode" action. Absent: no button. */
|
|
237
|
+
onPrivacyOff?: () => void;
|
|
238
|
+
}
|
|
239
|
+
export declare const TaskEditor: import("react").ForwardRefExoticComponent<TaskEditorProps & import("react").RefAttributes<HTMLElement>>;
|
|
240
|
+
//# sourceMappingURL=task-editor.d.ts.map
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import type { TaskEditorAbout, TaskEditorDraftState, TaskEditorFieldPatch, TaskEditorOption, TaskEditorPatient, TaskEditorProps, TaskEditorStatus, TaskEditorTask, TaskEditorTaskType } from './task-editor';
|
|
2
|
+
/** The "unset" value of the operator and assignee selects. */
|
|
3
|
+
export declare const NONE = "none";
|
|
4
|
+
export interface TaskEditorFields {
|
|
5
|
+
date: Date | undefined;
|
|
6
|
+
time: {
|
|
7
|
+
hours: number;
|
|
8
|
+
minutes: number;
|
|
9
|
+
};
|
|
10
|
+
note: string;
|
|
11
|
+
/** `NONE` until an operator is chosen. */
|
|
12
|
+
operatorId: string;
|
|
13
|
+
/** '' until something chooses one. Read through `chosenTypeId`. */
|
|
14
|
+
typeId: string;
|
|
15
|
+
/** The practice user, not the operator. `NONE` is nobody. */
|
|
16
|
+
assigneeId: string;
|
|
17
|
+
about: TaskEditorAbout;
|
|
18
|
+
patientId: string;
|
|
19
|
+
/** A real id from the host list, never a typed name. */
|
|
20
|
+
companyId: string;
|
|
21
|
+
}
|
|
22
|
+
interface UiState {
|
|
23
|
+
showError: boolean;
|
|
24
|
+
saving: boolean;
|
|
25
|
+
saveError: string | undefined;
|
|
26
|
+
done: boolean;
|
|
27
|
+
confirmedDone: boolean;
|
|
28
|
+
donePending: boolean;
|
|
29
|
+
doneError: string | undefined;
|
|
30
|
+
deleting: boolean;
|
|
31
|
+
deleteError: string | undefined;
|
|
32
|
+
confirmDeleteOpen: boolean;
|
|
33
|
+
/** A save or delete landed: the form stops writing until a new session. */
|
|
34
|
+
accepted: boolean;
|
|
35
|
+
}
|
|
36
|
+
export declare function aboutOf(task: {
|
|
37
|
+
patientId?: string;
|
|
38
|
+
companyId?: string;
|
|
39
|
+
operatorId?: string;
|
|
40
|
+
}): TaskEditorAbout;
|
|
41
|
+
export interface UseTaskEditorFormOptions {
|
|
42
|
+
mode: 'create' | 'edit';
|
|
43
|
+
taskId: string | undefined;
|
|
44
|
+
initialDate: Date | undefined;
|
|
45
|
+
/** Panel: always. Subview: while `open`. A false-to-true change starts a
|
|
46
|
+
* fresh session. */
|
|
47
|
+
active: boolean;
|
|
48
|
+
taskTypes: ReadonlyArray<TaskEditorTaskType>;
|
|
49
|
+
assignees: ReadonlyArray<TaskEditorOption>;
|
|
50
|
+
companies: ReadonlyArray<TaskEditorOption>;
|
|
51
|
+
operators: ReadonlyArray<TaskEditorOption>;
|
|
52
|
+
patients: ReadonlyArray<TaskEditorPatient>;
|
|
53
|
+
/** Names the host's search has returned, by id: a patient picked from
|
|
54
|
+
* search stays nameable, and settable by the agent. */
|
|
55
|
+
searchedPatients: ReadonlyMap<string, string>;
|
|
56
|
+
resolvePatientLabel: TaskEditorProps['resolvePatientLabel'];
|
|
57
|
+
loadTask: TaskEditorProps['loadTask'];
|
|
58
|
+
onCreateTask: TaskEditorProps['onCreateTask'];
|
|
59
|
+
onUpdateTask: TaskEditorProps['onUpdateTask'];
|
|
60
|
+
onDeleteTask: TaskEditorProps['onDeleteTask'];
|
|
61
|
+
onSetTaskDone: TaskEditorProps['onSetTaskDone'];
|
|
62
|
+
onSaved: TaskEditorProps['onSaved'];
|
|
63
|
+
onDeleted: TaskEditorProps['onDeleted'];
|
|
64
|
+
readOnly: boolean;
|
|
65
|
+
/** The privacy notice covers an existing task: nothing loads. */
|
|
66
|
+
withheld: boolean;
|
|
67
|
+
/** The patient shows as the mask, so none may be picked. */
|
|
68
|
+
maskPatient: boolean;
|
|
69
|
+
/** Shown when a rejection carries no message of its own. */
|
|
70
|
+
fallbackError: string;
|
|
71
|
+
}
|
|
72
|
+
export declare function useTaskEditorForm({ mode, taskId, initialDate, active, taskTypes, assignees, companies, operators, patients, searchedPatients, resolvePatientLabel, loadTask, onCreateTask, onUpdateTask, onDeleteTask, onSetTaskDone, onSaved, onDeleted, readOnly, withheld, maskPatient, fallbackError, }: UseTaskEditorFormOptions): {
|
|
73
|
+
status: TaskEditorStatus;
|
|
74
|
+
loadError: string | undefined;
|
|
75
|
+
retry: () => void;
|
|
76
|
+
fields: TaskEditorFields;
|
|
77
|
+
patchFields: (next: Partial<TaskEditorFields>) => void;
|
|
78
|
+
stored: TaskEditorTask | undefined;
|
|
79
|
+
chosenTypeId: string;
|
|
80
|
+
canSave: boolean;
|
|
81
|
+
/** What the agent's `canSave` reports: the button's rule plus the
|
|
82
|
+
* status, the seam and a save that has not landed yet. */
|
|
83
|
+
agentCanSave: boolean;
|
|
84
|
+
showSave: boolean;
|
|
85
|
+
showDelete: boolean;
|
|
86
|
+
showDone: boolean;
|
|
87
|
+
ui: UiState;
|
|
88
|
+
patchUi: (next: Partial<UiState>) => void;
|
|
89
|
+
/** True once a save or delete landed in this session. */
|
|
90
|
+
isAccepted: () => boolean;
|
|
91
|
+
/** A save or delete is in flight: closing now would lose its outcome. */
|
|
92
|
+
isBusy: () => boolean;
|
|
93
|
+
submit: () => Promise<void>;
|
|
94
|
+
setDone: (next: boolean) => Promise<void>;
|
|
95
|
+
remove: () => Promise<void>;
|
|
96
|
+
applyPatch: (patch: TaskEditorFieldPatch) => void;
|
|
97
|
+
draftState: () => TaskEditorDraftState;
|
|
98
|
+
};
|
|
99
|
+
export type TaskEditorForm = ReturnType<typeof useTaskEditorForm>;
|
|
100
|
+
export {};
|
|
101
|
+
//# sourceMappingURL=use-task-editor-form.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { TasksPanel } from './tasks-panel';
|
|
2
|
-
export type { TasksPanelProps, TasksPanelHandle, TasksPanelItem, TasksPanelSize, TasksPanelScope, TasksPanelStatusFilter, } from './tasks-panel';
|
|
2
|
+
export type { TasksPanelProps, TasksPanelHandle, TasksPanelItem, TasksPanelSize, TasksPanelScope, TasksPanelStatusFilter, TasksPanelFiltering, TasksPanelFilters, } from './tasks-panel';
|
|
3
3
|
export { tasksPanelAgent } from './tasks-panel.agent';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -5,6 +5,15 @@ import { type TaskItem } from '../task-card';
|
|
|
5
5
|
export type TasksPanelScope = 'patient' | 'mine';
|
|
6
6
|
/** Status segment value. Mirrors the platform `done` filter (default `todo`). */
|
|
7
7
|
export type TasksPanelStatusFilter = 'todo' | 'done' | 'all';
|
|
8
|
+
/** Who filters the list: the panel ('client') or the host ('server'). */
|
|
9
|
+
export type TasksPanelFiltering = 'client' | 'server';
|
|
10
|
+
/** The whole filter state, as `onFiltersChange` reports it. */
|
|
11
|
+
export interface TasksPanelFilters {
|
|
12
|
+
status: TasksPanelStatusFilter;
|
|
13
|
+
type: string | null;
|
|
14
|
+
assignee: string | null;
|
|
15
|
+
overdueOnly: boolean;
|
|
16
|
+
}
|
|
8
17
|
/**
|
|
9
18
|
* Panel-local extension of the card's `TaskItem`. The extra fields here drive
|
|
10
19
|
* bucketing + filtering; the row's display fields (the typed link via
|
|
@@ -20,7 +29,8 @@ export interface TasksPanelItem extends TaskItem {
|
|
|
20
29
|
type?: string;
|
|
21
30
|
/**
|
|
22
31
|
* Localised type label, required for CUSTOM types (the panel resolves system
|
|
23
|
-
* keys itself). Falls back to the system label for the four known keys
|
|
32
|
+
* keys itself). Falls back to the system label for the four known keys,
|
|
33
|
+
* then to "Other". The raw key is never shown.
|
|
24
34
|
*/
|
|
25
35
|
typeLabel?: string;
|
|
26
36
|
/**
|
|
@@ -40,8 +50,15 @@ export interface TasksPanelHandle {
|
|
|
40
50
|
status: string;
|
|
41
51
|
}>;
|
|
42
52
|
selectItem: (id: string) => void;
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
/**
|
|
54
|
+
* Same path as a click on the done box. Resolves once the host has
|
|
55
|
+
* answered (in client mode, after the row's fade) and rejects if the
|
|
56
|
+
* host refuses, or if nothing was started: an unknown id, a read-only
|
|
57
|
+
* panel, no `onToggleDone`, or a change to that task already pending.
|
|
58
|
+
*/
|
|
59
|
+
toggleDone: (id: string) => Promise<void>;
|
|
60
|
+
/** Same path as the row's dismiss action, and settles in the same way. */
|
|
61
|
+
dismiss: (id: string) => Promise<void>;
|
|
45
62
|
jumpToOverdue: () => void;
|
|
46
63
|
setFilter: (next: {
|
|
47
64
|
status?: TasksPanelStatusFilter;
|
|
@@ -69,21 +86,52 @@ export interface TasksPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
|
|
|
69
86
|
nowIso?: string;
|
|
70
87
|
/** Panel heading. Defaults to the localised "Tasks". */
|
|
71
88
|
title?: string;
|
|
89
|
+
/** PanelHeader glyph. Default <ClipboardCheck />. */
|
|
90
|
+
icon?: ReactNode;
|
|
91
|
+
/**
|
|
92
|
+
* A total the host counted, shown as given after the title ("Tasks (42)")
|
|
93
|
+
* and read as "42 tasks". Omitted: nothing shown. The panel never
|
|
94
|
+
* computes it.
|
|
95
|
+
*/
|
|
96
|
+
totalCount?: number;
|
|
72
97
|
/** Visual density forwarded to each TaskCard. Defaults to `sm`, matching the note and appointment rows. */
|
|
73
98
|
size?: 'xs' | 'sm' | 'md';
|
|
99
|
+
/**
|
|
100
|
+
* 'client' (default): the panel filters `items`. 'server': the host has
|
|
101
|
+
* already filtered and paged `items`; the panel shows them as given. In
|
|
102
|
+
* server mode a filter control shows only when `onFiltersChange` or its
|
|
103
|
+
* own `on…Change` is set, since only the host can re-query.
|
|
104
|
+
*/
|
|
105
|
+
filtering?: TasksPanelFiltering;
|
|
74
106
|
/** Fires when a row is activated. */
|
|
75
107
|
onOpenTask?: (item: TasksPanelItem) => void;
|
|
76
|
-
/**
|
|
77
|
-
|
|
108
|
+
/**
|
|
109
|
+
* Fires when the host should set a task's done state to `nextDone`. In
|
|
110
|
+
* server mode it fires on the click. In client mode it fires on the click
|
|
111
|
+
* for a row that stays in view, and once the row has faded for one that
|
|
112
|
+
* leaves. Either way, the box ignores clicks until a returned promise
|
|
113
|
+
* settles, and a promise that rejects puts the row back, unticked. The
|
|
114
|
+
* panel does not announce a refusal: report it yourself (for example
|
|
115
|
+
* `toastError` with a translated message) and rethrow, so the row still
|
|
116
|
+
* rolls back.
|
|
117
|
+
*/
|
|
118
|
+
onToggleDone?: (item: TasksPanelItem, nextDone: boolean) => void | Promise<void>;
|
|
78
119
|
/** Fires when the host should open the task editor. Omit to hide the per-row edit action. */
|
|
79
120
|
onEditTask?: (item: TasksPanelItem) => void;
|
|
80
|
-
/**
|
|
81
|
-
|
|
121
|
+
/**
|
|
122
|
+
* Fires when the host should dismiss / remove a task. Omit to hide the
|
|
123
|
+
* per-row dismiss action. In server mode it fires on the click, in client
|
|
124
|
+
* mode once the row has faded. A returned promise that rejects restores
|
|
125
|
+
* the row. The panel does not announce a refusal: report it yourself and
|
|
126
|
+
* rethrow, as for `onToggleDone`.
|
|
127
|
+
*/
|
|
128
|
+
onDismissTask?: (item: TasksPanelItem) => void | Promise<void>;
|
|
82
129
|
/** Fires when the header "Add" affordance is activated. Omit to hide it. */
|
|
83
130
|
onAddTask?: () => void;
|
|
84
131
|
/**
|
|
85
132
|
* Read-only mode — hides every write affordance (toggle / edit / dismiss /
|
|
86
|
-
* add)
|
|
133
|
+
* add), and the handle's `toggleDone` and `dismiss` reject without calling
|
|
134
|
+
* the host. Mirrors the platform gating writes behind `practice_task_edit`.
|
|
87
135
|
*/
|
|
88
136
|
readOnly?: boolean;
|
|
89
137
|
/**
|
|
@@ -92,6 +140,13 @@ export interface TasksPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
|
|
|
92
140
|
* is always prepended by the panel). Ignored when `readOnly`.
|
|
93
141
|
*/
|
|
94
142
|
renderItemActions?: (item: TasksPanelItem) => ReactNode;
|
|
143
|
+
/**
|
|
144
|
+
* Extra per-row actions, rendered before the toggle / edit / dismiss
|
|
145
|
+
* actions (or before `renderItemActions`, which still replaces those).
|
|
146
|
+
* Not a task write, so `readOnly` does not hide them: withhold them from
|
|
147
|
+
* the host side when they do not apply.
|
|
148
|
+
*/
|
|
149
|
+
renderItemExtraActions?: (item: TasksPanelItem) => ReactNode;
|
|
95
150
|
/** Controlled scope segment. */
|
|
96
151
|
scope?: TasksPanelScope;
|
|
97
152
|
/** Uncontrolled initial scope. Default `'patient'` when both scopes are available, else the only one. */
|
|
@@ -100,18 +155,35 @@ export interface TasksPanelProps extends Omit<HTMLAttributes<HTMLElement>, 'onCl
|
|
|
100
155
|
onScopeChange?: (next: TasksPanelScope) => void;
|
|
101
156
|
/** Which scopes the segment offers. Omit ⇒ no scope segment (single-scope panel). */
|
|
102
157
|
availableScopes?: TasksPanelScope[];
|
|
103
|
-
/** Load the next page — fired when the bottom edge is reached and via the footer button. */
|
|
158
|
+
/** Load the next page — fired once per page when the bottom edge is reached, and via the footer button. */
|
|
104
159
|
onLoadMore?: () => void;
|
|
105
|
-
/** Whether more tasks exist. Defaults to `true` when `onLoadMore` is set. */
|
|
160
|
+
/** Whether more tasks exist. Defaults to `true` when `onLoadMore` is set (client mode only; server mode needs `true`). */
|
|
106
161
|
hasMore?: boolean;
|
|
107
162
|
/** Show the bottom loading row while the next page is fetched. */
|
|
108
163
|
loadingMore?: boolean;
|
|
109
|
-
/**
|
|
164
|
+
/** Loading state. Skeleton rows while there are none to show; in server mode, rows already shown stay. */
|
|
110
165
|
loading?: boolean;
|
|
111
166
|
/** Error surface — `true` for the default error EmptyState, or a custom node. */
|
|
112
167
|
error?: boolean | ReactNode;
|
|
113
|
-
/**
|
|
168
|
+
/** Adds a Retry action to the default error state (`error === true`). */
|
|
169
|
+
onRetry?: () => void;
|
|
170
|
+
/**
|
|
171
|
+
* Show the filter header (status segment + type / assignee selects +
|
|
172
|
+
* overdue toggle). Default `true`. In server mode each control also needs
|
|
173
|
+
* `onFiltersChange` or its own `on…Change`.
|
|
174
|
+
*/
|
|
114
175
|
showFilters?: boolean;
|
|
176
|
+
/**
|
|
177
|
+
* The host's default query: the uncontrolled start, what Clear filters
|
|
178
|
+
* returns to, and what server mode judges "filtered empty" against.
|
|
179
|
+
* Absent: To do, any type, anyone, not overdue-only.
|
|
180
|
+
*/
|
|
181
|
+
defaultFilters?: TasksPanelFilters;
|
|
182
|
+
/**
|
|
183
|
+
* Once per user action, with the whole next filter state. Never fires
|
|
184
|
+
* when nothing changed. Fires in both modes.
|
|
185
|
+
*/
|
|
186
|
+
onFiltersChange?: (next: TasksPanelFilters) => void;
|
|
115
187
|
/** Controlled status segment. */
|
|
116
188
|
statusFilter?: TasksPanelStatusFilter;
|
|
117
189
|
/** Uncontrolled initial status segment. Default `'todo'` (the platform default). */
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as s, t as o, a as r, b as e, c as n, d as c } from "../../_chunks/toast-
|
|
1
|
+
import { T as s, t as o, a as r, b as e, c as n, d as c } from "../../_chunks/toast-CT8hjr9r.js";
|
|
2
2
|
import { t as g } from "../../_chunks/toast.agent-DNQ0JYGv.js";
|
|
3
3
|
export {
|
|
4
4
|
s as Toaster,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { T as s, t, r as e } from "../../_chunks/tooth-scheme-
|
|
1
|
+
import { T as s, t, r as e } from "../../_chunks/tooth-scheme-BkjhkI8g.js";
|
|
2
2
|
import { C as i, a as T, b as S, c as l, d as r, e as I, F as O, f as N, g as _, h as c, I as E, P as C, i as A, S as m, j as L, k as d, l as h, m as D, n as F, T as y, o as P, p as b, q as R, r as U, s as p, t as M, u, v as K, w as f, x as B, y as Y, z as H, A as g, B as z, D as w, E as x, G as V, H as k, J as G, K as j, L as q, M as v, N as J, O as Q, Q as W, R as X, U as Z, V as $, W as aa, X as oa, Y as sa, Z as ta, _ as ea, $ as na } from "../../_chunks/tooth-data-DR8Kdnup.js";
|
|
3
3
|
export {
|
|
4
4
|
i as CONDITION_COLORS,
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-
|
|
1
|
+
import { C as r, W as e, a as s, b as d, c as w, i as t, l as f, m as l, r as i, w as k, d as n, e as A, f as C } from "../../_chunks/workflow-map-qGkQTNvS.js";
|
|
2
2
|
export {
|
|
3
3
|
r as CORE_PATIENT_FIELDS,
|
|
4
4
|
e as WorkflowCard,
|