@alfadocs/ui-kit-debug 1.133.0 → 1.134.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/{agenda-card-B8hV3dZV.js → agenda-card-B9wgX_Ed.js} +2 -2
- package/dist/_chunks/{agenda-card-B8hV3dZV.js.map → agenda-card-B9wgX_Ed.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-Bu46s3dI.js → agenda-tray-CGcS_qoM.js} +2 -2
- package/dist/_chunks/{agenda-tray-Bu46s3dI.js.map → agenda-tray-CGcS_qoM.js.map} +1 -1
- package/dist/_chunks/appointment-card-DG3m9yN-.js +504 -0
- package/dist/_chunks/appointment-card-DG3m9yN-.js.map +1 -0
- package/dist/_chunks/{appointment-peek-DZa6xyUb.js → appointment-peek-BK0tDs4C.js} +2 -2
- package/dist/_chunks/{appointment-peek-DZa6xyUb.js.map → appointment-peek-BK0tDs4C.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-DQePqpyH.js → appointment-timeline-BiI2riRZ.js} +2 -2
- package/dist/_chunks/{appointment-timeline-DQePqpyH.js.map → appointment-timeline-BiI2riRZ.js.map} +1 -1
- package/dist/_chunks/appointment-tray-ClJCtYQj.js +200 -0
- package/dist/_chunks/appointment-tray-ClJCtYQj.js.map +1 -0
- package/dist/_chunks/{appointment-workflow-status-DMjuIK90.js → appointment-workflow-status-S-lx81Yz.js} +2 -2
- package/dist/_chunks/{appointment-workflow-status-DMjuIK90.js.map → appointment-workflow-status-S-lx81Yz.js.map} +1 -1
- package/dist/_chunks/ban-CiSCCcOE.js +15 -0
- package/dist/_chunks/ban-CiSCCcOE.js.map +1 -0
- package/dist/_chunks/{calendar-BIoOeBTT.js → calendar-CyLtLBNP.js} +2 -2
- package/dist/_chunks/{calendar-BIoOeBTT.js.map → calendar-CyLtLBNP.js.map} +1 -1
- package/dist/_chunks/{calendar-appointment-editor-dialog-BHx6kUhX.js → calendar-appointment-editor-dialog-BSkIYGlW.js} +13 -13
- package/dist/_chunks/{calendar-appointment-editor-dialog-BHx6kUhX.js.map → calendar-appointment-editor-dialog-BSkIYGlW.js.map} +1 -1
- package/dist/_chunks/{calendar-event-card-BNEzkjm-.js → calendar-event-card-BJifpYZQ.js} +7 -6
- package/dist/_chunks/{calendar-event-card-BNEzkjm-.js.map → calendar-event-card-BJifpYZQ.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-DKScH9Ss.js → care-plan-card-CjHq6PLo.js} +6 -6
- package/dist/_chunks/{care-plan-card-DKScH9Ss.js.map → care-plan-card-CjHq6PLo.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-AG1y3nyW.js → care-plan-entry-card-DY1toF6E.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-AG1y3nyW.js.map → care-plan-entry-card-DY1toF6E.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-Dx5OMkc9.js → care-plan-header-CeFXUDnL.js} +6 -6
- package/dist/_chunks/{care-plan-header-Dx5OMkc9.js.map → care-plan-header-CeFXUDnL.js.map} +1 -1
- package/dist/_chunks/check-in-documents-CEVcgcYZ.js +136 -0
- package/dist/_chunks/check-in-documents-CEVcgcYZ.js.map +1 -0
- package/dist/_chunks/{clinical-note-card-pPaeWWnu.js → clinical-note-card-D--IwbZa.js} +2 -2
- package/dist/_chunks/{clinical-note-card-pPaeWWnu.js.map → clinical-note-card-D--IwbZa.js.map} +1 -1
- package/dist/_chunks/document-preview-DLVIrOYV.js +385 -0
- package/dist/_chunks/document-preview-DLVIrOYV.js.map +1 -0
- package/dist/_chunks/{entity-card-fpm-KUKc.js → entity-card-p-LANpYt.js} +18 -17
- package/dist/_chunks/{entity-card-fpm-KUKc.js.map → entity-card-p-LANpYt.js.map} +1 -1
- package/dist/_chunks/{error-page-B0fGNTRB.js → error-page-WLhmWUTq.js} +100 -115
- package/dist/_chunks/error-page-WLhmWUTq.js.map +1 -0
- package/dist/_chunks/finished-terminal-unDnXT4j.js +191 -0
- package/dist/_chunks/finished-terminal-unDnXT4j.js.map +1 -0
- package/dist/_chunks/house-DGCypGTo.js +21 -0
- package/dist/_chunks/house-DGCypGTo.js.map +1 -0
- package/dist/_chunks/is-safe-url-CEy9CEml.js +8 -0
- package/dist/_chunks/is-safe-url-CEy9CEml.js.map +1 -0
- package/dist/_chunks/keypad-DBH_keVs.js +152 -0
- package/dist/_chunks/keypad-DBH_keVs.js.map +1 -0
- package/dist/_chunks/keypad-button-mOaPQRrH.js +114 -0
- package/dist/_chunks/keypad-button-mOaPQRrH.js.map +1 -0
- package/dist/_chunks/{message-card-BG3_3nN1.js → message-card-Bw_q1qKx.js} +2 -2
- package/dist/_chunks/{message-card-BG3_3nN1.js.map → message-card-Bw_q1qKx.js.map} +1 -1
- package/dist/_chunks/{message-tray-BjZv0Fsk.js → message-tray-pLGgLmoG.js} +2 -2
- package/dist/_chunks/{message-tray-BjZv0Fsk.js.map → message-tray-pLGgLmoG.js.map} +1 -1
- package/dist/_chunks/{note-attachment-MNTIqdSz.js → note-attachment-JTIy9iXN.js} +2 -2
- package/dist/_chunks/{note-attachment-MNTIqdSz.js.map → note-attachment-JTIy9iXN.js.map} +1 -1
- package/dist/_chunks/{note-timeline-BQeW0VZY.js → note-timeline-BbjHMhkL.js} +2 -2
- package/dist/_chunks/{note-timeline-BQeW0VZY.js.map → note-timeline-BbjHMhkL.js.map} +1 -1
- package/dist/_chunks/{notes-panel-Cm-_pCRJ.js → notes-panel-BAyPOr8N.js} +2 -2
- package/dist/_chunks/{notes-panel-Cm-_pCRJ.js.map → notes-panel-BAyPOr8N.js.map} +1 -1
- package/dist/_chunks/{operator-hero-CnfWckNQ.js → operator-hero-D4wfVu2l.js} +2 -2
- package/dist/_chunks/{operator-hero-CnfWckNQ.js.map → operator-hero-D4wfVu2l.js.map} +1 -1
- package/dist/_chunks/otp-input-BNOTlxq3.js +342 -0
- package/dist/_chunks/otp-input-BNOTlxq3.js.map +1 -0
- package/dist/_chunks/patient-account-settings-BkAtIxJW.js +546 -0
- package/dist/_chunks/patient-account-settings-BkAtIxJW.js.map +1 -0
- package/dist/_chunks/patient-card-DTh3QTyS.js +125 -0
- package/dist/_chunks/patient-card-DTh3QTyS.js.map +1 -0
- package/dist/_chunks/patient-check-in-resume-xhqjC6gf.js +742 -0
- package/dist/_chunks/patient-check-in-resume-xhqjC6gf.js.map +1 -0
- package/dist/_chunks/patient-sign-in-pin-CDBqV254.js +432 -0
- package/dist/_chunks/patient-sign-in-pin-CDBqV254.js.map +1 -0
- package/dist/_chunks/patient-sign-in-steps-C2JSqlok.js +199 -0
- package/dist/_chunks/patient-sign-in-steps-C2JSqlok.js.map +1 -0
- package/dist/_chunks/{patient-summary-card-BUcZ-gaL.js → patient-summary-card-Bl2NknPe.js} +2 -2
- package/dist/_chunks/{patient-summary-card-BUcZ-gaL.js.map → patient-summary-card-Bl2NknPe.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-Dv4WbRBe.js → payment-request-card-CNW00DCx.js} +6 -6
- package/dist/_chunks/{payment-request-card-Dv4WbRBe.js.map → payment-request-card-CNW00DCx.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-BnBKdx0y.js → pdf-viewer-TRC5jEm5.js} +472 -425
- package/dist/_chunks/pdf-viewer-TRC5jEm5.js.map +1 -0
- package/dist/_chunks/pin-entry-BugWQMOS.js +219 -0
- package/dist/_chunks/pin-entry-BugWQMOS.js.map +1 -0
- package/dist/_chunks/pin-indicator-Cb-n40UI.js +124 -0
- package/dist/_chunks/pin-indicator-Cb-n40UI.js.map +1 -0
- package/dist/_chunks/portal-details-CTEsm705.js +478 -0
- package/dist/_chunks/portal-details-CTEsm705.js.map +1 -0
- package/dist/_chunks/portal-documents-D8skew0h.js +902 -0
- package/dist/_chunks/portal-documents-D8skew0h.js.map +1 -0
- package/dist/_chunks/portal-parts-BdR29P7z.js +285 -0
- package/dist/_chunks/portal-parts-BdR29P7z.js.map +1 -0
- package/dist/_chunks/{privacy-mask-DJ1gee4c.js → privacy-mask-C19dJFMk.js} +5 -5
- package/dist/_chunks/{privacy-mask-DJ1gee4c.js.map → privacy-mask-C19dJFMk.js.map} +1 -1
- package/dist/_chunks/{product-hub-panel-a8wdVOUt.js → product-hub-panel-K4QbULG7.js} +2 -2
- package/dist/_chunks/{product-hub-panel-a8wdVOUt.js.map → product-hub-panel-K4QbULG7.js.map} +1 -1
- package/dist/_chunks/{registration-form-CwbhtKcy.js → registration-form-DS3RuKHu.js} +2 -2
- package/dist/_chunks/{registration-form-CwbhtKcy.js.map → registration-form-DS3RuKHu.js.map} +1 -1
- package/dist/_chunks/{reserved.agent-W8mR179D.js → reserved.agent-DOzOBUW7.js} +2 -2
- package/dist/_chunks/{reserved.agent-W8mR179D.js.map → reserved.agent-DOzOBUW7.js.map} +1 -1
- package/dist/_chunks/session-countdown-DOx1IBUB.js +232 -0
- package/dist/_chunks/session-countdown-DOx1IBUB.js.map +1 -0
- package/dist/_chunks/{sign-document-CQZVzfpk.js → sign-document-DDZbmYHu.js} +2 -2
- package/dist/_chunks/{sign-document-CQZVzfpk.js.map → sign-document-DDZbmYHu.js.map} +1 -1
- package/dist/_chunks/{signature-field-DjabvRZm.js → signature-field-BjlY_yXH.js} +39 -34
- package/dist/_chunks/signature-field-BjlY_yXH.js.map +1 -0
- package/dist/_chunks/{signature-request-4pGq3YBe.js → signature-request-CHsM_iWi.js} +2 -2
- package/dist/_chunks/{signature-request-4pGq3YBe.js.map → signature-request-CHsM_iWi.js.map} +1 -1
- package/dist/_chunks/{signature-status-chip-pIoQjvH8.js → signature-status-chip-DS9hHwIt.js} +66 -69
- package/dist/_chunks/signature-status-chip-DS9hHwIt.js.map +1 -0
- package/dist/_chunks/signing-end-screen-an9P8DOT.js +1041 -0
- package/dist/_chunks/signing-end-screen-an9P8DOT.js.map +1 -0
- package/dist/_chunks/sms-code-entry-Dgp4GwlM.js +316 -0
- package/dist/_chunks/sms-code-entry-Dgp4GwlM.js.map +1 -0
- package/dist/_chunks/step-up-dialog-C2JqJmCA.js +132 -0
- package/dist/_chunks/step-up-dialog-C2JqJmCA.js.map +1 -0
- package/dist/_chunks/{task-editor-BL2hHxNz.js → task-editor-g1AGfxhr.js} +38 -38
- package/dist/_chunks/{task-editor-BL2hHxNz.js.map → task-editor-g1AGfxhr.js.map} +1 -1
- package/dist/_chunks/{use-appointment-details-read-_b7FRB1x.js → use-appointment-details-read-Dzc6fEzG.js} +6 -6
- package/dist/_chunks/{use-appointment-details-read-_b7FRB1x.js.map → use-appointment-details-read-Dzc6fEzG.js.map} +1 -1
- package/dist/_chunks/use-zoom-drilldown-Cr1baU5X.js +221 -0
- package/dist/_chunks/use-zoom-drilldown-Cr1baU5X.js.map +1 -0
- package/dist/_chunks/{user-x-DYszNtIg.js → user-x-BJZg4kaP.js} +8 -19
- package/dist/_chunks/user-x-BJZg4kaP.js.map +1 -0
- package/dist/_chunks/{verify-identity-types-CxtrBXsZ.js → verify-identity-types-C6Bam8v6.js} +2 -2
- package/dist/_chunks/{verify-identity-types-CxtrBXsZ.js.map → verify-identity-types-C6Bam8v6.js.map} +1 -1
- package/dist/agent-catalog.json +723 -364
- package/dist/agent-i18n/en.json +75 -18
- package/dist/browser-support.js +1 -1
- package/dist/components/_shared/is-safe-url.d.ts +3 -1
- package/dist/components/_shared/is-safe-url.d.ts.map +1 -1
- package/dist/components/agenda-card/index.js +2 -2
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/appointment-card/appointment-card.d.ts +45 -0
- package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
- package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
- package/dist/components/appointment-card/appointment-tray.d.ts +11 -0
- package/dist/components/appointment-card/appointment-tray.d.ts.map +1 -1
- package/dist/components/appointment-card/index.js +3 -3
- package/dist/components/appointment-details-panel/index.js +1 -1
- package/dist/components/appointment-peek/index.js +1 -1
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/booking/index.js +1 -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/clinical-note-card/index.js +1 -1
- package/dist/components/document-preview/document-preview.agent.d.ts.map +1 -1
- package/dist/components/document-preview/document-preview.d.ts +61 -7
- package/dist/components/document-preview/document-preview.d.ts.map +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/finished-terminal/finished-terminal.d.ts +63 -6
- package/dist/components/finished-terminal/finished-terminal.d.ts.map +1 -1
- package/dist/components/finished-terminal/index.d.ts +1 -1
- package/dist/components/finished-terminal/index.d.ts.map +1 -1
- package/dist/components/finished-terminal/index.js +1 -1
- package/dist/components/index.d.ts +12 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/keypad/index.d.ts +3 -0
- package/dist/components/keypad/index.d.ts.map +1 -0
- package/dist/components/keypad/index.js +6 -0
- package/dist/components/keypad/index.js.map +1 -0
- package/dist/components/keypad/keypad.d.ts +54 -0
- package/dist/components/keypad/keypad.d.ts.map +1 -0
- package/dist/components/keypad-button/index.d.ts +3 -0
- package/dist/components/keypad-button/index.d.ts.map +1 -0
- package/dist/components/keypad-button/index.js +6 -0
- package/dist/components/keypad-button/index.js.map +1 -0
- package/dist/components/keypad-button/keypad-button.d.ts +33 -0
- package/dist/components/keypad-button/keypad-button.d.ts.map +1 -0
- package/dist/components/message-card/index.js +2 -2
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/note-timeline/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.d.ts +11 -0
- package/dist/components/otp-input/otp-input.d.ts.map +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.d.ts +7 -0
- package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/components/pin-entry/index.d.ts +3 -0
- package/dist/components/pin-entry/index.d.ts.map +1 -0
- package/dist/components/pin-entry/index.js +5 -0
- package/dist/components/pin-entry/index.js.map +1 -0
- package/dist/components/pin-entry/pin-entry.agent.d.ts +4 -0
- package/dist/components/pin-entry/pin-entry.agent.d.ts.map +1 -0
- package/dist/components/pin-entry/pin-entry.d.ts +64 -0
- package/dist/components/pin-entry/pin-entry.d.ts.map +1 -0
- package/dist/components/pin-indicator/index.d.ts +3 -0
- package/dist/components/pin-indicator/index.d.ts.map +1 -0
- package/dist/components/pin-indicator/index.js +9 -0
- package/dist/components/pin-indicator/index.js.map +1 -0
- package/dist/components/pin-indicator/pin-indicator.d.ts +34 -0
- package/dist/components/pin-indicator/pin-indicator.d.ts.map +1 -0
- package/dist/components/product-hub-tray/index.js +2 -2
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/session-countdown/session-countdown.d.ts +19 -0
- package/dist/components/session-countdown/session-countdown.d.ts.map +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/signature-field/index.js +1 -1
- package/dist/components/signature-field/signature-field.d.ts +17 -6
- package/dist/components/signature-field/signature-field.d.ts.map +1 -1
- package/dist/components/signature-status-chip/index.js +1 -1
- package/dist/components/signature-status-chip/signature-status-chip.d.ts +3 -2
- package/dist/components/signature-status-chip/signature-status-chip.d.ts.map +1 -1
- package/dist/components/sms-code-entry/index.d.ts +3 -0
- package/dist/components/sms-code-entry/index.d.ts.map +1 -0
- package/dist/components/sms-code-entry/index.js +5 -0
- package/dist/components/sms-code-entry/index.js.map +1 -0
- package/dist/components/sms-code-entry/sms-code-entry.agent.d.ts +4 -0
- package/dist/components/sms-code-entry/sms-code-entry.agent.d.ts.map +1 -0
- package/dist/components/sms-code-entry/sms-code-entry.d.ts +156 -0
- package/dist/components/sms-code-entry/sms-code-entry.d.ts.map +1 -0
- package/dist/components/step-up-dialog/index.d.ts +3 -0
- package/dist/components/step-up-dialog/index.d.ts.map +1 -0
- package/dist/components/step-up-dialog/index.js +5 -0
- package/dist/components/step-up-dialog/index.js.map +1 -0
- package/dist/components/step-up-dialog/step-up-dialog.d.ts +108 -0
- package/dist/components/step-up-dialog/step-up-dialog.d.ts.map +1 -0
- package/dist/components/task-editor/index.js +1 -1
- package/dist/components/workflow-status/index.js +1 -1
- package/dist/core.css +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-signing-session.d.ts +7 -2
- package/dist/hooks/use-signing-session.d.ts.map +1 -1
- package/dist/host-compat.css +10 -1
- package/dist/i18n/locales/ar.d.ts +512 -1
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +509 -3
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +512 -1
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +517 -4
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +512 -1
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +512 -4
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +514 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +520 -4
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +512 -1
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +510 -4
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +512 -1
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +510 -4
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +512 -1
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +510 -4
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +512 -1
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +517 -4
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +512 -1
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +510 -4
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +512 -1
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +517 -4
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +512 -1
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +517 -4
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +512 -1
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +517 -4
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +512 -1
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +517 -4
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +512 -1
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +509 -3
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +512 -1
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +510 -4
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +512 -1
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +510 -4
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +512 -1
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +512 -4
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +512 -1
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +510 -4
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +1271 -1204
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +513 -2
- package/dist/locales/de.json +514 -3
- package/dist/locales/el.json +514 -3
- package/dist/locales/en.json +514 -3
- package/dist/locales/es.json +514 -3
- package/dist/locales/fr.json +514 -3
- package/dist/locales/hi.json +514 -3
- package/dist/locales/it.json +514 -3
- package/dist/locales/ja.json +514 -3
- package/dist/locales/nl.json +514 -3
- package/dist/locales/pl.json +514 -3
- package/dist/locales/pt.json +514 -3
- package/dist/locales/ro.json +514 -3
- package/dist/locales/ru.json +513 -2
- package/dist/locales/sq.json +514 -3
- package/dist/locales/sv.json +514 -3
- package/dist/locales/tr.json +514 -3
- package/dist/locales/zh.json +514 -3
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/check-in-documents/check-in-documents.d.ts +61 -0
- package/dist/patterns/check-in-documents/check-in-documents.d.ts.map +1 -0
- package/dist/patterns/check-in-documents/check-in-signable-document.d.ts +32 -0
- package/dist/patterns/check-in-documents/check-in-signable-document.d.ts.map +1 -0
- package/dist/patterns/check-in-documents/index.d.ts +4 -0
- package/dist/patterns/check-in-documents/index.d.ts.map +1 -0
- package/dist/patterns/check-in-documents/index.js +5 -0
- package/dist/patterns/check-in-documents/index.js.map +1 -0
- package/dist/patterns/error-page/index.js +1 -1
- package/dist/patterns/patient-account-settings/index.d.ts +4 -0
- package/dist/patterns/patient-account-settings/index.d.ts.map +1 -0
- package/dist/patterns/patient-account-settings/index.js +5 -0
- package/dist/patterns/patient-account-settings/index.js.map +1 -0
- package/dist/patterns/patient-account-settings/patient-account-settings-panels.d.ts +36 -0
- package/dist/patterns/patient-account-settings/patient-account-settings-panels.d.ts.map +1 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.d.ts +94 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.d.ts.map +1 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.types.d.ts +91 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.types.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/index.d.ts +20 -0
- package/dist/patterns/patient-check-in/index.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/index.js +13 -0
- package/dist/patterns/patient-check-in/index.js.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-changed.d.ts +33 -0
- package/dist/patterns/patient-check-in/patient-check-in-changed.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-connection-notice.d.ts +29 -0
- package/dist/patterns/patient-check-in/patient-check-in-connection-notice.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-done.d.ts +25 -0
- package/dist/patterns/patient-check-in/patient-check-in-done.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-entry.d.ts +29 -0
- package/dist/patterns/patient-check-in/patient-check-in-entry.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub-empty.d.ts +23 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub-empty.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub.d.ts +61 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-personal-data.d.ts +73 -0
- package/dist/patterns/patient-check-in/patient-check-in-personal-data.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-privacy.d.ts +9 -0
- package/dist/patterns/patient-check-in/patient-check-in-privacy.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-resume.d.ts +29 -0
- package/dist/patterns/patient-check-in/patient-check-in-resume.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-shell.d.ts +60 -0
- package/dist/patterns/patient-check-in/patient-check-in-shell.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-types.d.ts +92 -0
- package/dist/patterns/patient-check-in/patient-check-in-types.d.ts.map +1 -0
- package/dist/patterns/patient-portal/index.d.ts +12 -0
- package/dist/patterns/patient-portal/index.d.ts.map +1 -0
- package/dist/patterns/patient-portal/index.js +13 -0
- package/dist/patterns/patient-portal/index.js.map +1 -0
- package/dist/patterns/patient-portal/portal-appointments.d.ts +70 -0
- package/dist/patterns/patient-portal/portal-appointments.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-details.d.ts +148 -0
- package/dist/patterns/patient-portal/portal-details.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-documents.d.ts +74 -0
- package/dist/patterns/patient-portal/portal-documents.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-format.d.ts +14 -0
- package/dist/patterns/patient-portal/portal-format.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-home.d.ts +71 -0
- package/dist/patterns/patient-portal/portal-home.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-parts.d.ts +107 -0
- package/dist/patterns/patient-portal/portal-parts.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-shell.d.ts +84 -0
- package/dist/patterns/patient-portal/portal-shell.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-types.d.ts +157 -0
- package/dist/patterns/patient-portal/portal-types.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/index.d.ts +7 -0
- package/dist/patterns/patient-sign-in/index.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/index.js +15 -0
- package/dist/patterns/patient-sign-in/index.js.map +1 -0
- package/dist/patterns/patient-sign-in/patient-card.d.ts +74 -0
- package/dist/patterns/patient-sign-in/patient-card.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-email.d.ts +109 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-email.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-pin.d.ts +157 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-pin.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-steps.d.ts +143 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-steps.d.ts.map +1 -0
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/patterns/signing/index.d.ts +25 -0
- package/dist/patterns/signing/index.d.ts.map +1 -0
- package/dist/patterns/signing/index.js +16 -0
- package/dist/patterns/signing/index.js.map +1 -0
- package/dist/patterns/signing/multi-field-signer.d.ts +117 -0
- package/dist/patterns/signing/multi-field-signer.d.ts.map +1 -0
- package/dist/patterns/signing/signing-awaiting-screen.d.ts +25 -0
- package/dist/patterns/signing/signing-awaiting-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-chrome.d.ts +30 -0
- package/dist/patterns/signing/signing-chrome.d.ts.map +1 -0
- package/dist/patterns/signing/signing-document-screen.d.ts +87 -0
- package/dist/patterns/signing/signing-document-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-end-screen.d.ts +27 -0
- package/dist/patterns/signing/signing-end-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-finished-screen.d.ts +34 -0
- package/dist/patterns/signing/signing-finished-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-footer.d.ts +56 -0
- package/dist/patterns/signing/signing-footer.d.ts.map +1 -0
- package/dist/patterns/signing/signing-handoff-screen.d.ts +37 -0
- package/dist/patterns/signing/signing-handoff-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-message-dialog.d.ts +29 -0
- package/dist/patterns/signing/signing-message-dialog.d.ts.map +1 -0
- package/dist/patterns/signing/signing-progress-chip.d.ts +27 -0
- package/dist/patterns/signing/signing-progress-chip.d.ts.map +1 -0
- package/dist/patterns/signing/signing-roster.d.ts +44 -0
- package/dist/patterns/signing/signing-roster.d.ts.map +1 -0
- package/dist/patterns/signing/signing-staff-id-confirmation.d.ts +49 -0
- package/dist/patterns/signing/signing-staff-id-confirmation.d.ts.map +1 -0
- package/dist/patterns/verify-identity/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +49 -1
- package/dist/_chunks/appointment-card-OAOur8lH.js +0 -434
- package/dist/_chunks/appointment-card-OAOur8lH.js.map +0 -1
- package/dist/_chunks/appointment-tray-DSFqO5Rm.js +0 -193
- package/dist/_chunks/appointment-tray-DSFqO5Rm.js.map +0 -1
- package/dist/_chunks/document-preview-_kQ9QvZV.js +0 -291
- package/dist/_chunks/document-preview-_kQ9QvZV.js.map +0 -1
- package/dist/_chunks/error-page-B0fGNTRB.js.map +0 -1
- package/dist/_chunks/finished-terminal-FR8uc_Ws.js +0 -122
- package/dist/_chunks/finished-terminal-FR8uc_Ws.js.map +0 -1
- package/dist/_chunks/is-safe-url-DkETxeHz.js +0 -7
- package/dist/_chunks/is-safe-url-DkETxeHz.js.map +0 -1
- package/dist/_chunks/otp-input-gV1446Dw.js +0 -301
- package/dist/_chunks/otp-input-gV1446Dw.js.map +0 -1
- package/dist/_chunks/pdf-viewer-BnBKdx0y.js.map +0 -1
- package/dist/_chunks/session-countdown-C4tzbJVc.js +0 -223
- package/dist/_chunks/session-countdown-C4tzbJVc.js.map +0 -1
- package/dist/_chunks/signature-field-DjabvRZm.js.map +0 -1
- package/dist/_chunks/signature-status-chip-pIoQjvH8.js.map +0 -1
- package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js +0 -210
- package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js.map +0 -1
- package/dist/_chunks/user-x-DYszNtIg.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"patient-check-in-resume-xhqjC6gf.js","sources":["../../src/patterns/patient-check-in/patient-check-in-shell.tsx","../../src/patterns/patient-check-in/patient-check-in-entry.tsx","../../src/patterns/patient-check-in/patient-check-in-privacy.ts","../../src/patterns/patient-check-in/patient-check-in-hub.tsx","../../src/patterns/patient-check-in/patient-check-in-hub-empty.tsx","../../src/patterns/patient-check-in/patient-check-in-personal-data.tsx","../../src/patterns/patient-check-in/patient-check-in-done.tsx","../../src/patterns/patient-check-in/patient-check-in-changed.tsx","../../src/patterns/patient-check-in/patient-check-in-connection-notice.tsx","../../src/patterns/patient-check-in/patient-check-in-resume.tsx"],"sourcesContent":["import type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { PatientSessionBar, PatientSessionEnded } from '../patient-sign-in';\n\n/** The session as the host counts it. The shell runs no timer. */\nexport interface CheckInShellSession {\n /** Milliseconds left in the session, counted by the host. */\n remainingMs: number;\n /** Full session length in ms. The host's value; when omitted, SessionCountdown falls back to 15 minutes. */\n totalMs?: number;\n /** Remaining ms at or below which the banner turns to its warning tone. */\n warnAtMs?: number;\n /** Called once when `remainingMs` reaches 0. The host ends the session. */\n onExpire?: () => void;\n}\n\n/** The session ended by the host's idle timeout (D142). */\nexport interface CheckInShellTimedOut {\n /** The idle length the host used, in minutes. */\n idleMinutes: number;\n /** Called by \"Restart\". The host starts check-in again. */\n onRestart: () => void;\n}\n\ninterface CheckInShellBaseProps {\n /**\n * Set when the host's idle timeout ended the session. The shell then\n * renders only the neutral end screen (`PatientSessionEnded`, reason\n * `timed-out`, with a Restart button) and unmounts `children`, so no name\n * or date stays on the page.\n */\n timedOut?: CheckInShellTimedOut | null;\n /** The active screen. */\n children?: ReactNode;\n /** Move focus to the end screen's heading when it shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The session and Sign out go together: Sign out shows only with the banner,\n * so `onSignOut` is required with `session` and optional without it.\n */\nexport type CheckInShellProps = CheckInShellBaseProps &\n (\n | {\n /**\n * The signed-in session. Omit it before sign-in: no banner and no\n * Sign out show. There is no built-in session length.\n */\n session: CheckInShellSession;\n /** Called by \"Sign out\", which stays visible in every tone of the banner. */\n onSignOut: () => void;\n }\n | {\n session?: undefined;\n /** Not used without a `session`: there is no Sign out to show. */\n onSignOut?: () => void;\n }\n );\n\n/**\n * Thin placement for check-in (HTP-6920 AC, D142): the shared session banner\n * and a visible Sign out above the active screen. No progress bar, no route,\n * no timer and no session of its own: the host's app counts the time, signs\n * out and picks the screen.\n */\nexport function CheckInShell({\n session,\n onSignOut,\n timedOut = null,\n children,\n focusOnMount = false,\n className,\n}: CheckInShellProps) {\n const { t } = useTranslation('ui');\n const rootClass = [\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)]',\n className,\n ]\n .filter(Boolean)\n .join(' ');\n\n if (timedOut) {\n return (\n <div\n data-component=\"check-in-shell\"\n data-state=\"timed-out\"\n className={rootClass}\n >\n <PatientSessionEnded\n reason=\"timed-out\"\n idleMinutes={timedOut.idleMinutes}\n actionLabel={t('patientCheckIn.timedOut.restart')}\n onSignIn={timedOut.onRestart}\n focusOnMount={focusOnMount}\n />\n </div>\n );\n }\n\n return (\n <div\n data-component=\"check-in-shell\"\n data-state={session ? 'signed-in' : 'no-session'}\n className={rootClass}\n >\n {session ? (\n <PatientSessionBar\n remainingMs={session.remainingMs}\n totalMs={session.totalMs}\n warnAtMs={session.warnAtMs}\n onExpire={session.onExpire}\n onSignOut={onSignOut}\n />\n ) : null}\n {children}\n </div>\n );\n}\n","import type { ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Button } from '../../components/button';\nimport { PatientCard } from '../patient-sign-in/patient-card';\nimport type { CheckInHeadingLevel } from './patient-check-in-types';\n\nexport interface CheckInEntryProps {\n /**\n * Called by \"Sign in\". Required: the screen has no other way on. The host\n * starts the sign-in (the sign-in pattern, HTP-6898).\n */\n onSignIn: () => void;\n /** The host is starting the sign-in: the button shows a spinner. */\n submitting?: boolean;\n /**\n * The language control. A slot, because the kit stores nothing: the host\n * passes a controlled `LocalePicker`.\n */\n languageSlot?: ReactNode;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: CheckInHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The first screen of check-in (HTP-6920 AC, CHECKIN-DS-01:106): the\n * language and one Sign in action. It names no patient, appointment or\n * practice and shows no QR code, because nobody is signed in yet.\n */\nexport function CheckInEntry({\n onSignIn,\n submitting = false,\n languageSlot,\n headingLevel = 1,\n focusOnMount = false,\n className,\n}: CheckInEntryProps) {\n const { t } = useTranslation('ui');\n return (\n <PatientCard\n component=\"check-in-entry\"\n className={className}\n title={t('patientCheckIn.entry.title')}\n description={t('patientCheckIn.entry.body')}\n headerAction={languageSlot}\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n >\n <Button\n type=\"button\"\n intent=\"primary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:w-full\"\n loading={submitting}\n data-action=\"sign-in\"\n onClick={() => {\n if (!submitting) onSignIn();\n }}\n >\n {t('patientCheckIn.entry.signIn')}\n </Button>\n </PatientCard>\n );\n}\n","import type { AppointmentItem } from '../../components/appointment-card';\n\n/**\n * The appointment as privacy mode may show it (HTP-6920, PHASE5 1.3): an\n * allow-list, so a field the host adds later stays hidden until it is chosen\n * here. Time, place, operator and status stay. The booking reason, booking\n * note, care plan, treatments, patient, money, signing and link are dropped.\n */\nexport function privateAppointmentItem(item: AppointmentItem): AppointmentItem {\n return {\n id: item.id,\n startIso: item.startIso,\n durationMin: item.durationMin,\n state: item.state,\n type: item.type,\n practiceName: item.practiceName,\n operator: item.operator,\n chair: item.chair,\n };\n}\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert } from '../../components/alert';\nimport {\n AppointmentCard,\n type AppointmentItem,\n} from '../../components/appointment-card';\nimport { Badge } from '../../components/badge';\nimport { Button } from '../../components/button';\nimport {\n formatPortalDay,\n usePortalLocale,\n} from '../patient-portal/portal-format';\nimport { privateAppointmentItem } from './patient-check-in-privacy';\nimport { PatientCard } from '../patient-sign-in/patient-card';\nimport type {\n CheckInAvailability,\n CheckInDueItem,\n CheckInHeadingLevel,\n} from './patient-check-in-types';\n\nexport interface CheckInHubProps {\n /**\n * The appointment, as the kit's `AppointmentItem`, with `practiceName` and\n * its treatments. The screen shows it and computes nothing from it.\n */\n appointment: AppointmentItem;\n /**\n * IANA time zone of the practice, for example `\"Europe/Rome\"`. The day and\n * time read on the practice's clock, not the browser's.\n */\n timeZone?: string;\n /** BCP 47 locale for the day and time, for example `\"it-IT\"`. Default: the UI language. */\n locale?: string;\n /** What is due before the visit, in the order to show. Empty: no list. */\n due: CheckInDueItem[];\n /**\n * Whether online check-in is on. Default: on. Off, the appointment and the\n * due list still show, with the host's reason, and Continue is disabled.\n */\n checkIn?: CheckInAvailability;\n /**\n * The host decided all paperwork is done. The screen then says so and shows\n * no Continue. The kit never works this out from `due`.\n */\n paperworkDone?: boolean;\n /** The host is acting on Continue: the button shows a spinner. */\n submitting?: boolean;\n /**\n * Called by \"Continue\". It selects and marks nothing (D110): the host moves\n * to the next step. Always called while the button is enabled.\n */\n onContinue: () => void;\n /** Called by \"Not me\". Required: a patient who is not this person must have a way out. */\n onNotMe: () => void;\n /** Called by \"Documents\". The button shows only when this is given. */\n onDocuments?: () => void;\n /** Called by \"Cancel appointment\". The button shows only when this is given. */\n onCancel?: () => void;\n /**\n * Privacy mode: the card keeps only day, time, place, operator and status.\n * The booking reason, care plan, treatments and patient are dropped. The\n * labels of the due list show as given: keep them free of personal or\n * clinical detail.\n */\n privacy?: boolean;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: CheckInHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The hub of check-in (HTP-6920 AC, CHECKIN-DS-01:108): one appointment, what\n * is due and the actions. It has no \"arrived\" button and no QR code. The\n * host decides every status, and the pattern computes nothing.\n */\nexport function CheckInHub({\n appointment,\n timeZone,\n locale,\n due,\n checkIn,\n paperworkDone = false,\n submitting = false,\n onContinue,\n onNotMe,\n onDocuments,\n onCancel,\n privacy = false,\n headingLevel = 1,\n focusOnMount = false,\n className,\n}: CheckInHubProps) {\n const { t } = useTranslation('ui');\n const formatLocale = usePortalLocale(locale);\n const dueId = useId();\n const available = checkIn?.available ?? true;\n const item: AppointmentItem = privacy\n ? privateAppointmentItem(appointment)\n : appointment;\n const SectionHeading = headingLevel === 1 ? 'h2' : 'h3';\n\n return (\n <PatientCard\n component=\"check-in-hub\"\n className={className}\n title={t('patientCheckIn.hub.title')}\n description={t('patientCheckIn.hub.body')}\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n privacy={privacy}\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <p className=\"type-label ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {formatPortalDay(appointment.startIso, formatLocale, timeZone)}\n </p>\n <AppointmentCard\n role=\"presentation\"\n item={item}\n showPatient={false}\n wrapText\n surface=\"elevated\"\n hideDefaultStatus\n locale={formatLocale}\n timeZone={timeZone}\n privacy={privacy}\n />\n </div>\n\n {!available ? (\n <Alert variant=\"warning\" announce=\"off\">\n <Alert.Title as={headingLevel === 1 ? 'h2' : 'h3'}>\n {t('patientCheckIn.hub.offTitle')}\n </Alert.Title>\n <Alert.Description>\n {checkIn?.reason ?? t('patientCheckIn.hub.offReason')}\n </Alert.Description>\n </Alert>\n ) : null}\n\n {due.length > 0 ? (\n <section\n aria-labelledby={dueId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n <SectionHeading id={dueId} className=\"type-title-card ds:m-0\">\n {t('patientCheckIn.hub.dueTitle')}\n </SectionHeading>\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- role=\"list\" restores list semantics that ds:list-none strips in Safari/VoiceOver */}\n <ul\n role=\"list\"\n className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-sm)] ds:p-0\"\n >\n {due.map((entry) => (\n <li\n key={entry.id}\n data-step-id={entry.id}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)] ds:rounded-[var(--radius-md)] ds:border ds:border-[color:var(--border)] ds:p-[var(--spacing-md)]\"\n >\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\">\n <span\n dir=\"auto\"\n className=\"type-title-item ds:min-w-0 ds:break-words\"\n >\n {entry.label}\n </span>\n <Badge\n variant={entry.status === 'done' ? 'success' : 'warning'}\n >\n {entry.status === 'done'\n ? t('patientCheckIn.hub.status.done')\n : t('patientCheckIn.hub.status.open')}\n </Badge>\n </div>\n {entry.status === 'open' && entry.reason ? (\n <p className=\"type-meta ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {entry.reason === 'changed-after-signing'\n ? t('patientCheckIn.hub.reason.changedAfterSigning')\n : t('patientCheckIn.hub.reason.expired')}\n </p>\n ) : null}\n </li>\n ))}\n </ul>\n </section>\n ) : null}\n\n {paperworkDone ? (\n <Alert variant=\"success\" announce=\"off\">\n <Alert.Title as={headingLevel === 1 ? 'h2' : 'h3'}>\n {t('patientCheckIn.hub.allDoneTitle')}\n </Alert.Title>\n <Alert.Description>\n {t('patientCheckIn.hub.allDoneBody')}\n </Alert.Description>\n </Alert>\n ) : (\n <Button\n type=\"button\"\n intent=\"primary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:w-full\"\n disabled={!available}\n loading={submitting}\n data-action=\"continue\"\n onClick={() => {\n if (!submitting) onContinue();\n }}\n >\n {t('patientCheckIn.hub.continue')}\n </Button>\n )}\n\n <div className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-sm)]\">\n {onDocuments ? (\n <Button\n type=\"button\"\n intent=\"secondary\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n data-action=\"documents\"\n onClick={onDocuments}\n >\n {t('patientCheckIn.hub.documents')}\n </Button>\n ) : null}\n <Button\n type=\"button\"\n intent=\"ghost\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n data-action=\"not-me\"\n onClick={onNotMe}\n >\n {t('patientCheckIn.hub.notMe')}\n </Button>\n {onCancel ? (\n <Button\n type=\"button\"\n intent=\"ghost\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n data-action=\"cancel-appointment\"\n onClick={onCancel}\n >\n {t('patientCheckIn.hub.cancelAppointment')}\n </Button>\n ) : null}\n </div>\n </PatientCard>\n );\n}\n","import { useTranslation } from 'react-i18next';\nimport { Button } from '../../components/button';\nimport { PatientCard } from '../patient-sign-in/patient-card';\nimport type { CheckInHeadingLevel } from './patient-check-in-types';\n\n/**\n * Why there is nothing to check in for (CHECKIN-06:40, :85, :105):\n * `no-appointment` the patient has no appointment to prepare;\n * `no-linked-record` the account has no linked record, so no appointment can\n * show. The host decides which.\n */\nexport type CheckInHubEmptyReason = 'no-appointment' | 'no-linked-record';\n\nexport interface CheckInHubEmptyProps {\n /** Why the hub is empty. Required. */\n reason: CheckInHubEmptyReason;\n /** Called by \"Open the patient portal\". The button shows only when this is given. */\n onPortal?: () => void;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: CheckInHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/** The hub when there is nothing to check in for (HTP-6920 AC, CI-12). */\nexport function CheckInHubEmpty({\n reason,\n onPortal,\n headingLevel = 1,\n focusOnMount = false,\n className,\n}: CheckInHubEmptyProps) {\n const { t } = useTranslation('ui');\n const noAppointment = reason === 'no-appointment';\n return (\n <PatientCard\n component=\"check-in-hub-empty\"\n className={className}\n title={\n noAppointment\n ? t('patientCheckIn.empty.noAppointment.title')\n : t('patientCheckIn.empty.noLinkedRecord.title')\n }\n description={\n noAppointment\n ? t('patientCheckIn.empty.noAppointment.body')\n : t('patientCheckIn.empty.noLinkedRecord.body')\n }\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n >\n {onPortal ? (\n <Button\n type=\"button\"\n intent=\"secondary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:self-start\"\n data-action=\"portal\"\n onClick={onPortal}\n >\n {t('patientCheckIn.empty.portal')}\n </Button>\n ) : null}\n </PatientCard>\n );\n}\n","import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert } from '../../components/alert';\nimport { Badge } from '../../components/badge';\nimport { Button } from '../../components/button';\nimport { DescriptionList } from '../../components/description-list';\nimport { ErrorSummary } from '../../components/error-summary';\nimport { FormField } from '../../components/form-field';\nimport { Select } from '../../components/select';\nimport { VisuallyHidden } from '../../components/visually-hidden';\nimport {\n PrivacyHiddenLine,\n privacyMask,\n} from '../../components/_shared/privacy-mask';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport {\n PortalDetailsFields,\n PortalDetailsReadOnlyList,\n type PortalDetailsFieldAddon,\n type PortalDetailsReadOnly,\n type StepUpConfig,\n} from '../patient-portal';\nimport { portalDetailsFieldId } from '../patient-portal/portal-details';\nimport { usePortalLocale } from '../patient-portal/portal-format';\nimport { PortalStepUp } from '../patient-portal/portal-parts';\nimport { PatientCard } from '../patient-sign-in/patient-card';\nimport type {\n CheckInHeadingLevel,\n CheckInPersonalDataFieldErrors,\n CheckInPersonalDataValues,\n CheckInSource,\n} from './patient-check-in-types';\n\n// An empty set, so the screen is usable uncontrolled with no defaults.\nconst EMPTY_VALUES: CheckInPersonalDataValues = {\n firstName: '',\n lastName: '',\n address: '',\n country: '',\n contactEmail: '',\n phone: '',\n marketing: 0,\n source: '',\n};\n\nfunction countryName(code: string, locale: string): string {\n if (!code) return '';\n try {\n return (\n new Intl.DisplayNames([locale], { type: 'region' }).of(\n code.toUpperCase(),\n ) ?? code\n );\n } catch {\n return code;\n }\n}\n\n/** The fields that can carry the \"From your record\" mark. */\nexport type CheckInRecordField =\n | 'firstName'\n | 'lastName'\n | 'address'\n | 'country'\n | 'contactEmail'\n | 'phone';\n\nconst RECORD_FIELDS: CheckInRecordField[] = [\n 'firstName',\n 'lastName',\n 'address',\n 'country',\n 'contactEmail',\n 'phone',\n];\n\nexport interface CheckInPersonalDataProps {\n /** The facts the patient cannot change here: birth date, codice fiscale and the masked mobile. */\n readOnly: PortalDetailsReadOnly;\n /** The values on screen, for controlled use. Pair with `onValuesChange`. */\n values?: CheckInPersonalDataValues;\n /** The first values when uncontrolled. Default: all empty. */\n defaultValues?: CheckInPersonalDataValues;\n /** Called with the whole next set of values on every change, `source` included. */\n onValuesChange?: (values: CheckInPersonalDataValues) => void;\n /** Host error texts, one per field. The server decides; nothing is checked here. */\n fieldErrors?: CheckInPersonalDataFieldErrors;\n /**\n * The Fonte field (C-14). It shows only when this is given: the host\n * decides whether the practice asks, and whether an empty choice is an\n * error (it answers through `source.error`).\n */\n source?: CheckInSource;\n /**\n * Marks the values \"From your record\". Default true: every value is marked.\n * Pass `false` for none, or an object with one flag per field: the host\n * knows which values came from the record, so an empty field the patient\n * must complete can stay unmarked. A field left out of the object is\n * unmarked.\n */\n fromRecord?: boolean | Partial<Record<CheckInRecordField, boolean>>;\n /**\n * Called by \"Continue\" with the current values. Always called: only the\n * host judges the answers and replies with `fieldErrors` or `source.error`.\n */\n onSubmit: (values: CheckInPersonalDataValues) => void;\n /** The host is saving: the button shows a spinner and the fields are disabled. */\n submitting?: boolean;\n /**\n * The patient has no verified mobile in this session (C-1, D140). The\n * details show read-only, Continue is hidden and a message sends the\n * patient to the front desk. There is no tick box and no code by email.\n */\n noMobile?: boolean;\n /**\n * The SMS check before the host saves a change (D95). The dialog is open\n * while this is not null. The host binds the step, decides the code and\n * may never ask (Q81, to confirm).\n *\n * Give `onCancel` and let it set `stepUp` back to `null`: the dialog is\n * forced open, so without it Escape and Cancel cannot close it (WCAG 2.1.2).\n */\n stepUp?: StepUpConfig | null;\n /** BCP 47 locale for the birth date and the country name. Default: the UI language. */\n locale?: string;\n /**\n * Privacy mode: every personal value is masked, the form and Fonte are\n * withheld, and Continue stays.\n */\n privacy?: boolean;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: CheckInHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The personal data step of check-in (HTP-6920 AC, CHECKIN-08): \"Are your\n * details right?\". It wraps the portal's details form module (R5) and adds\n * only the \"From your record\" mark and the Fonte field. It saves nothing and\n * validates nothing: Continue always calls `onSubmit`.\n */\nexport function CheckInPersonalData({\n readOnly,\n values,\n defaultValues,\n onValuesChange,\n fieldErrors,\n source,\n fromRecord = true,\n onSubmit,\n submitting = false,\n noMobile = false,\n stepUp = null,\n locale,\n privacy = false,\n headingLevel = 1,\n focusOnMount = false,\n className,\n}: CheckInPersonalDataProps) {\n const { t } = useTranslation('ui');\n const formatLocale = usePortalLocale(locale);\n const sourceId = useId();\n const [current, setCurrent] = useControllableState<CheckInPersonalDataValues>(\n {\n value: values,\n defaultValue: defaultValues ?? EMPTY_VALUES,\n onChange: onValuesChange,\n },\n );\n const data = current ?? EMPTY_VALUES;\n\n const marked = (field: CheckInRecordField): boolean =>\n typeof fromRecord === 'boolean' ? fromRecord : fromRecord[field] === true;\n const badge: ReactNode = (\n <Badge variant=\"neutral\">{t('patientCheckIn.details.fromRecord')}</Badge>\n );\n // The read-only facts (birth date, codice fiscale, mobile) always come\n // from the record, so they keep the mark unless the host turns it all off.\n const recordMark: ReactNode = fromRecord === false ? undefined : badge;\n const addon: PortalDetailsFieldAddon | undefined = RECORD_FIELDS.some(marked)\n ? Object.fromEntries(\n RECORD_FIELDS.map((field) => [\n field,\n marked(field) ? badge : undefined,\n ]),\n )\n : undefined;\n\n // Host errors after Continue: one summary takes focus and the fields stay\n // quiet, as in the portal's details (one alert per field would interrupt).\n const uid = useId();\n const summary = useRef<HTMLDivElement>(null);\n const errorLabels: Array<[keyof CheckInPersonalDataFieldErrors, string]> = [\n ['firstName', t('patientPortal.details.firstName')],\n ['lastName', t('patientPortal.details.lastName')],\n ['address', t('patientPortal.details.address')],\n ['country', t('patientPortal.details.country')],\n ['contactEmail', t('patientPortal.details.contactEmail')],\n ['phone', t('patientPortal.details.phone')],\n ];\n const listed: Array<{\n field: string;\n label: string;\n message: string;\n targetId: string;\n }> = errorLabels\n .filter(([key]) => fieldErrors?.[key])\n .map(([key, label]) => ({\n field: key,\n label,\n message: fieldErrors?.[key] ?? '',\n targetId: portalDetailsFieldId(uid, key),\n }));\n if (source?.error) {\n listed.push({\n field: 'source',\n label: source.label ?? t('patientCheckIn.details.sourceLabel'),\n message: source.error,\n targetId: sourceId,\n });\n }\n const errorKey = listed.map((e) => `${e.field}:${e.message}`).join('|');\n const showSummary = !privacy && !noMobile && listed.length > 0;\n useEffect(() => {\n if (showSummary) summary.current?.focus({ preventScroll: false });\n // Each new set of host errors moves focus once.\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [errorKey, showSummary]);\n\n const hidden = (value: string) => (privacy ? privacyMask() : value);\n const phoneTerm = t('patientPortal.details.phone');\n const emailTerm = t('patientPortal.details.contactEmail');\n const readRows: Array<[string, string]> = [\n [t('patientPortal.details.firstName'), hidden(data.firstName)],\n [t('patientPortal.details.lastName'), hidden(data.lastName)],\n [t('patientPortal.details.address'), hidden(data.address)],\n [\n t('patientPortal.details.country'),\n hidden(countryName(data.country, formatLocale)),\n ],\n [t('patientPortal.details.contactEmail'), hidden(data.contactEmail)],\n [t('patientPortal.details.phone'), hidden(data.phone)],\n ];\n\n return (\n <PatientCard\n component=\"check-in-personal-data\"\n className={className}\n title={t('patientCheckIn.details.title')}\n description={t('patientCheckIn.details.body')}\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n privacy={privacy}\n >\n <PortalDetailsReadOnlyList\n readOnly={readOnly}\n locale={formatLocale}\n recordMark={recordMark}\n privacy={privacy}\n />\n\n {noMobile ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <Alert variant=\"warning\" announce=\"off\">\n <Alert.Description>\n {t('patientCheckIn.details.noMobile')}\n </Alert.Description>\n </Alert>\n <DescriptionList layout=\"responsive\" divider=\"between\">\n {readRows.map(([term, detail]) => (\n <DescriptionList.Row key={term}>\n <DescriptionList.Term>{term}</DescriptionList.Term>\n <DescriptionList.Detail>\n {detail ? (\n <bdi\n dir={\n term === phoneTerm || term === emailTerm\n ? 'ltr'\n : 'auto'\n }\n className=\"ds:break-words\"\n >\n {detail}\n </bdi>\n ) : (\n <>\n <span aria-hidden=\"true\">–</span>\n <VisuallyHidden>\n {t('patientPortal.details.notGiven')}\n </VisuallyHidden>\n </>\n )}\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ))}\n </DescriptionList>\n </div>\n ) : (\n <form\n noValidate\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n onSubmit={(event) => {\n event.preventDefault();\n if (!submitting) onSubmit(data);\n }}\n >\n {privacy ? (\n <PrivacyHiddenLine block=\"details-form\" />\n ) : (\n <>\n {showSummary ? (\n <ErrorSummary\n ref={summary}\n headingLevel={headingLevel === 1 ? 2 : 3}\n errors={listed}\n />\n ) : null}\n <PortalDetailsFields\n values={data}\n idPrefix={uid}\n announceErrors={false}\n onChange={(next) => setCurrent({ ...data, ...next })}\n fieldErrors={fieldErrors}\n disabled={submitting}\n fieldAddon={addon}\n showMarketing={false}\n />\n {source ? (\n <FormField\n label={\n source.label ?? t('patientCheckIn.details.sourceLabel')\n }\n error={source.error}\n announceError={false}\n >\n <Select\n id={sourceId}\n options={source.options}\n value={data.source}\n onValueChange={(next) =>\n setCurrent({ ...data, source: next })\n }\n placeholder={t('patientCheckIn.details.sourcePlaceholder')}\n tone={source.error ? 'error' : 'default'}\n disabled={submitting}\n />\n </FormField>\n ) : null}\n </>\n )}\n <Button\n type=\"submit\"\n intent=\"primary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:w-full\"\n loading={submitting}\n data-action=\"details-continue\"\n >\n {t('patientCheckIn.details.continue')}\n </Button>\n </form>\n )}\n\n <PortalStepUp\n config={stepUp}\n privacy={privacy}\n defaultSubject={t('patientCheckIn.details.stepUpSubject')}\n />\n </PatientCard>\n );\n}\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '../../components/badge';\nimport { PatientEndScreen } from '../patient-sign-in/patient-card';\nimport type {\n CheckInPortalLink,\n CheckInSummaryItem,\n} from './patient-check-in-types';\n\nexport interface CheckInDoneProps {\n /**\n * The steps and how each ended: `done`, or `skipped` when the practice\n * needs nothing for it (HTP-6948). Empty: no list.\n */\n summary: CheckInSummaryItem[];\n /**\n * The one link to the portal. It holds no patient data and no appointment\n * id. No button shows when neither `onClick` nor `href` is given.\n */\n portal?: CheckInPortalLink;\n /** Move focus to the title when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The one end screen of check-in (HTP-6920 AC, CHECKIN-16): \"Paperwork done\"\n * and \"The front desk will welcome you when you arrive.\" It never says \"You\n * are checked in\", because paperwork done is not arrival. Sign out is the\n * shell's: the host renders this inside `CheckInShell`.\n */\nexport function CheckInDone({\n summary,\n portal,\n focusOnMount = false,\n className,\n}: CheckInDoneProps) {\n const { t } = useTranslation('ui');\n const summaryId = useId();\n const hasPortal = Boolean(portal && (portal.onClick || portal.href));\n return (\n <PatientEndScreen\n component=\"check-in-done\"\n className={className}\n // The default success tick: paperwork is done.\n icon={undefined}\n title={t('patientCheckIn.done.title')}\n body={t('patientCheckIn.done.body')}\n focusOnMount={focusOnMount}\n action={\n hasPortal && portal\n ? {\n label: portal.label ?? t('patientCheckIn.done.portal'),\n onClick: portal.onClick,\n href: portal.href,\n }\n : undefined\n }\n below={\n summary.length > 0 ? (\n <section\n aria-labelledby={summaryId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n <h2 id={summaryId} className=\"type-title-card ds:m-0\">\n {t('patientCheckIn.done.summaryTitle')}\n </h2>\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- role=\"list\" restores list semantics that ds:list-none strips in Safari/VoiceOver */}\n <ul\n role=\"list\"\n className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-0\"\n >\n {summary.map((entry) => (\n <li\n key={entry.id}\n data-step-id={entry.id}\n className=\"ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\"\n >\n <span dir=\"auto\" className=\"ds:min-w-0 ds:break-words\">\n {entry.label}\n </span>\n <Badge\n variant={entry.outcome === 'done' ? 'success' : 'neutral'}\n >\n {entry.outcome === 'done'\n ? t('patientCheckIn.done.outcome.done')\n : t('patientCheckIn.done.outcome.skipped')}\n </Badge>\n </li>\n ))}\n </ul>\n </section>\n ) : undefined\n }\n />\n );\n}\n","import { useTranslation } from 'react-i18next';\nimport {\n AppointmentCard,\n type AppointmentItem,\n} from '../../components/appointment-card';\nimport { Button } from '../../components/button';\nimport {\n formatPortalDay,\n usePortalLocale,\n} from '../patient-portal/portal-format';\nimport { privateAppointmentItem } from './patient-check-in-privacy';\nimport { PatientCard } from '../patient-sign-in/patient-card';\nimport type { CheckInHeadingLevel } from './patient-check-in-types';\n\nexport interface CheckInAppointmentChangedProps {\n /**\n * The appointment that was cancelled while the patient did the paperwork.\n * The card always shows it as cancelled, whatever `state` the item holds.\n * A moved appointment is not built (CHECKIN-19 Q1, to confirm).\n */\n appointment: AppointmentItem;\n /** IANA time zone of the practice, for example `\"Europe/Rome\"`. */\n timeZone?: string;\n /** BCP 47 locale for the day and time. Default: the UI language. */\n locale?: string;\n /** Called by \"Open the patient portal\". The button shows only when this is given. */\n onPortal?: () => void;\n /**\n * Privacy mode: the card keeps only day, time, place, operator and status.\n */\n privacy?: boolean;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: CheckInHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The mid-flow stop (HTP-6958 AC, CHECKIN-19:57): the appointment was\n * cancelled while the patient did the paperwork, and nothing more is\n * recorded for it. The host stops the flow and shows this.\n */\nexport function CheckInAppointmentChanged({\n appointment,\n timeZone,\n locale,\n onPortal,\n privacy = false,\n headingLevel = 1,\n focusOnMount = false,\n className,\n}: CheckInAppointmentChangedProps) {\n const { t } = useTranslation('ui');\n const formatLocale = usePortalLocale(locale);\n const base = privacy ? privateAppointmentItem(appointment) : appointment;\n const item: AppointmentItem = {\n ...base,\n state: 'cancelled',\n };\n return (\n <PatientCard\n component=\"check-in-appointment-changed\"\n className={className}\n title={t('patientCheckIn.changed.title')}\n description={t('patientCheckIn.changed.cancelledBody')}\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n privacy={privacy}\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <p className=\"type-label ds:m-0 ds:text-[color:var(--muted-foreground)]\">\n {formatPortalDay(appointment.startIso, formatLocale, timeZone)}\n </p>\n <AppointmentCard\n role=\"presentation\"\n item={item}\n showPatient={false}\n wrapText\n surface=\"elevated\"\n locale={formatLocale}\n timeZone={timeZone}\n privacy={privacy}\n />\n </div>\n {onPortal ? (\n <Button\n type=\"button\"\n intent=\"secondary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:self-start\"\n data-action=\"portal\"\n onClick={onPortal}\n >\n {t('patientCheckIn.changed.portal')}\n </Button>\n ) : null}\n </PatientCard>\n );\n}\n","import { useTranslation } from 'react-i18next';\nimport { Alert } from '../../components/alert';\nimport { Button } from '../../components/button';\n\nexport interface CheckInConnectionNoticeProps {\n /**\n * Called by \"Try again\". Required: the notice has no other action. The\n * host tries the last step again. The form under it keeps what was typed.\n *\n * Focus: a retry that works makes the host remove the notice, and the\n * focused \"Try again\" button goes with it, so focus falls to the page. The\n * host must then move focus to the current step's heading (the portal does\n * the same for its retry).\n */\n onRetry: () => void;\n /** The host is trying again: the button shows a spinner and ignores presses. */\n submitting?: boolean;\n /**\n * Heading level of the title. Default: none, the title is plain text, so\n * the notice never puts an h2 before the screen's h1. Give 2 or 3 to make\n * it a heading inside a section.\n */\n headingLevel?: 2 | 3;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The non-blocking notice for a lost connection (HTP-6920 AC, CHECKIN-19:76):\n * it sits above the current step and does not replace it, so nothing the\n * patient typed is lost. The host decides when it shows.\n */\nexport function CheckInConnectionNotice({\n onRetry,\n submitting = false,\n headingLevel,\n className,\n}: CheckInConnectionNoticeProps) {\n const { t } = useTranslation('ui');\n return (\n <div data-component=\"check-in-connection-notice\" className={className}>\n <Alert variant=\"warning\" announce=\"polite\">\n <Alert.Title as={headingLevel ? `h${headingLevel}` : 'p'}>\n {t('patientCheckIn.offline.title')}\n </Alert.Title>\n <Alert.Description>\n {t('patientCheckIn.offline.body')}\n </Alert.Description>\n <div className=\"ds:mt-[var(--spacing-sm)]\">\n <Button\n type=\"button\"\n intent=\"secondary\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n loading={submitting}\n data-action=\"retry\"\n onClick={() => {\n if (!submitting) onRetry();\n }}\n >\n {t('patientSignIn.tryAgain')}\n </Button>\n </div>\n </Alert>\n </div>\n );\n}\n","import { useId } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Badge } from '../../components/badge';\nimport { Button } from '../../components/button';\nimport { PatientCard, PatientNote } from '../patient-sign-in/patient-card';\nimport type {\n CheckInHeadingLevel,\n CheckInStepRef,\n} from './patient-check-in-types';\n\nexport interface CheckInResumeProps {\n /** The steps, in order, with which are done. The host decides; nothing is computed. */\n steps: CheckInStepRef[];\n /**\n * Called by \"Resume check-in\". The host opens the first step that is not\n * done and applies its own time limit (HTP-6958 QA).\n */\n onResume: () => void;\n /**\n * Called by \"Start over\". Required. The note under it says starting over\n * keeps what is already saved (a proposal, to confirm).\n */\n onStartOver: () => void;\n /** The host is acting on Resume: the button shows a spinner and both ignore presses. */\n submitting?: boolean;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: CheckInHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * \"Continue where you left off\" (HTP-6958 QA, CHECKIN-17): what is done, what\n * is still to do, and the two ways on. The host keeps the saved steps.\n */\nexport function CheckInResume({\n steps,\n onResume,\n onStartOver,\n submitting = false,\n headingLevel = 1,\n focusOnMount = false,\n className,\n}: CheckInResumeProps) {\n const { t } = useTranslation('ui');\n const stepsId = useId();\n const SectionHeading = headingLevel === 1 ? 'h2' : 'h3';\n return (\n <PatientCard\n component=\"check-in-resume\"\n className={className}\n title={t('patientCheckIn.resume.title')}\n description={t('patientCheckIn.resume.body')}\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n >\n {steps.length > 0 ? (\n <section\n aria-labelledby={stepsId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n <SectionHeading id={stepsId} className=\"type-title-card ds:m-0\">\n {t('patientCheckIn.resume.stepsTitle')}\n </SectionHeading>\n {/* eslint-disable-next-line jsx-a11y/no-redundant-roles -- role=\"list\" restores list semantics that ds:list-none strips in Safari/VoiceOver */}\n <ul\n role=\"list\"\n className=\"ds:m-0 ds:flex ds:list-none ds:flex-col ds:gap-[var(--spacing-xs)] ds:p-0\"\n >\n {steps.map((step) => (\n <li\n key={step.id}\n data-step-id={step.id}\n className=\"ds:flex ds:flex-wrap ds:items-center ds:justify-between ds:gap-[var(--spacing-sm)]\"\n >\n <span dir=\"auto\" className=\"ds:min-w-0 ds:break-words\">\n {step.label}\n </span>\n <Badge variant={step.done ? 'success' : 'neutral'}>\n {step.done\n ? t('patientCheckIn.resume.stepDone')\n : t('patientCheckIn.resume.stepTodo')}\n </Badge>\n </li>\n ))}\n </ul>\n </section>\n ) : null}\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\">\n <Button\n type=\"button\"\n intent=\"primary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:w-full\"\n loading={submitting}\n data-action=\"resume\"\n onClick={() => {\n if (!submitting) onResume();\n }}\n >\n {t('patientCheckIn.resume.resume')}\n </Button>\n <Button\n type=\"button\"\n intent=\"ghost\"\n className=\"ds:min-h-[var(--min-target-size)] ds:w-full\"\n disabled={submitting}\n data-action=\"start-over\"\n onClick={onStartOver}\n >\n {t('patientCheckIn.resume.startOver')}\n </Button>\n <PatientNote>{t('patientCheckIn.resume.startOverNote')}</PatientNote>\n </div>\n </PatientCard>\n );\n}\n"],"names":["CheckInShell","session","onSignOut","timedOut","children","focusOnMount","className","t","useTranslation","rootClass","jsx","PatientSessionEnded","jsxs","PatientSessionBar","CheckInEntry","onSignIn","submitting","languageSlot","headingLevel","PatientCard","Button","privateAppointmentItem","item","CheckInHub","appointment","timeZone","locale","due","checkIn","paperworkDone","onContinue","onNotMe","onDocuments","onCancel","privacy","formatLocale","usePortalLocale","dueId","useId","available","SectionHeading","formatPortalDay","AppointmentCard","Alert","entry","Badge","CheckInHubEmpty","reason","onPortal","noAppointment","EMPTY_VALUES","countryName","code","RECORD_FIELDS","CheckInPersonalData","readOnly","values","defaultValues","onValuesChange","fieldErrors","source","fromRecord","onSubmit","noMobile","stepUp","sourceId","current","setCurrent","useControllableState","data","marked","field","badge","recordMark","addon","uid","summary","useRef","listed","key","label","portalDetailsFieldId","errorKey","e","showSummary","useEffect","_a","hidden","value","privacyMask","phoneTerm","emailTerm","readRows","PortalDetailsReadOnlyList","DescriptionList","term","detail","Fragment","VisuallyHidden","event","PrivacyHiddenLine","ErrorSummary","PortalDetailsFields","next","FormField","Select","PortalStepUp","CheckInDone","portal","summaryId","hasPortal","PatientEndScreen","CheckInAppointmentChanged","CheckInConnectionNotice","onRetry","CheckInResume","steps","onResume","onStartOver","stepsId","step","PatientNote"],"mappings":"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"}
|
|
@@ -0,0 +1,432 @@
|
|
|
1
|
+
import { jsx as n, jsxs as w, Fragment as Z } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as x, useId as _, useEffect as $ } from "react";
|
|
3
|
+
import { useTranslation as E, Trans as J } from "react-i18next";
|
|
4
|
+
import { A as f } from "./alert-C4WKViaS.js";
|
|
5
|
+
import { B as K } from "./button-DohK_Ak_.js";
|
|
6
|
+
import { E as Q } from "./email-input-DxwbREpx.js";
|
|
7
|
+
import { F as U } from "./form-field-CyHfOVKF.js";
|
|
8
|
+
import { u as H } from "./use-controllable-state-BiY4xTzM.js";
|
|
9
|
+
import { P as R, a as T, b as nn, c as G, u as O } from "./patient-card-DTh3QTyS.js";
|
|
10
|
+
import { c as en } from "./createLucideIcon-DhHxpK9K.js";
|
|
11
|
+
import { P as W } from "./pin-entry-BugWQMOS.js";
|
|
12
|
+
import { r as X } from "./pin-indicator-Cb-n40UI.js";
|
|
13
|
+
import { a as tn } from "./format-number-DdzqwMs1.js";
|
|
14
|
+
/**
|
|
15
|
+
* @license lucide-react v1.22.0 - ISC
|
|
16
|
+
*
|
|
17
|
+
* This source code is licensed under the ISC license.
|
|
18
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
19
|
+
*/
|
|
20
|
+
const an = [
|
|
21
|
+
["path", { d: "M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8", key: "12jkf8" }],
|
|
22
|
+
["path", { d: "m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7", key: "1ocrg3" }],
|
|
23
|
+
["path", { d: "m16 19 2 2 4-4", key: "1b14m6" }]
|
|
24
|
+
], ln = en("mail-check", an);
|
|
25
|
+
function Y({
|
|
26
|
+
email: e,
|
|
27
|
+
defaultEmail: p,
|
|
28
|
+
onEmailChange: h,
|
|
29
|
+
onSubmit: m,
|
|
30
|
+
submitting: o,
|
|
31
|
+
error: t,
|
|
32
|
+
errorText: i,
|
|
33
|
+
challenge: a,
|
|
34
|
+
submitLabel: r,
|
|
35
|
+
action: I
|
|
36
|
+
}) {
|
|
37
|
+
const { t: c } = E("ui"), d = x(null), S = _(), [v, u] = H({
|
|
38
|
+
value: e,
|
|
39
|
+
defaultValue: p ?? "",
|
|
40
|
+
onChange: h
|
|
41
|
+
}), C = v ?? "", l = C.trim() === "", s = t !== null && !o;
|
|
42
|
+
return O(t, o, () => {
|
|
43
|
+
var g;
|
|
44
|
+
return (g = d.current) == null ? void 0 : g.focus();
|
|
45
|
+
}), /* @__PURE__ */ w(
|
|
46
|
+
"form",
|
|
47
|
+
{
|
|
48
|
+
noValidate: !0,
|
|
49
|
+
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]",
|
|
50
|
+
onSubmit: (g) => {
|
|
51
|
+
g.preventDefault(), !l && !o && m(C.trim());
|
|
52
|
+
},
|
|
53
|
+
children: [
|
|
54
|
+
s && t === "no-account" ? /* @__PURE__ */ n(f, { variant: "error", id: S, children: /* @__PURE__ */ n(f.Description, { children: i ?? c("patientSignIn.email.noAccount") }) }) : null,
|
|
55
|
+
s && t === "slowed" ? /* @__PURE__ */ w(f, { variant: "warning", id: S, children: [
|
|
56
|
+
/* @__PURE__ */ n(f.Title, { as: "h2", children: c("patientSignIn.email.slowedTitle") }),
|
|
57
|
+
/* @__PURE__ */ n(f.Description, { children: i ?? c("patientSignIn.email.slowedBody") })
|
|
58
|
+
] }) : null,
|
|
59
|
+
/* @__PURE__ */ n(U, { label: c("patientSignIn.email.label"), children: /* @__PURE__ */ n(
|
|
60
|
+
Q,
|
|
61
|
+
{
|
|
62
|
+
ref: d,
|
|
63
|
+
autoComplete: "username",
|
|
64
|
+
disableBuiltInValidation: !0,
|
|
65
|
+
errorMessage: null,
|
|
66
|
+
"aria-invalid": t === "no-account" && !o ? !0 : void 0,
|
|
67
|
+
"aria-describedby": s ? S : void 0,
|
|
68
|
+
value: C,
|
|
69
|
+
onChange: (g) => u(g.target.value),
|
|
70
|
+
"data-field": "email"
|
|
71
|
+
}
|
|
72
|
+
) }),
|
|
73
|
+
a,
|
|
74
|
+
/* @__PURE__ */ n(
|
|
75
|
+
K,
|
|
76
|
+
{
|
|
77
|
+
type: "submit",
|
|
78
|
+
intent: "primary",
|
|
79
|
+
className: "ds:min-h-[var(--min-target-size)] ds:w-full",
|
|
80
|
+
"data-action": I,
|
|
81
|
+
disabled: l,
|
|
82
|
+
loading: o,
|
|
83
|
+
children: r
|
|
84
|
+
}
|
|
85
|
+
)
|
|
86
|
+
]
|
|
87
|
+
}
|
|
88
|
+
);
|
|
89
|
+
}
|
|
90
|
+
function Sn({
|
|
91
|
+
email: e,
|
|
92
|
+
defaultEmail: p,
|
|
93
|
+
onEmailChange: h,
|
|
94
|
+
onSubmit: m,
|
|
95
|
+
submitting: o = !1,
|
|
96
|
+
error: t = null,
|
|
97
|
+
errorText: i,
|
|
98
|
+
challenge: a,
|
|
99
|
+
languageSlot: r,
|
|
100
|
+
passkeySlot: I,
|
|
101
|
+
title: c,
|
|
102
|
+
description: d,
|
|
103
|
+
focusOnMount: S = !1,
|
|
104
|
+
className: v
|
|
105
|
+
}) {
|
|
106
|
+
const { t: u } = E("ui");
|
|
107
|
+
return /* @__PURE__ */ n(
|
|
108
|
+
R,
|
|
109
|
+
{
|
|
110
|
+
component: "patient-sign-in-email",
|
|
111
|
+
className: v,
|
|
112
|
+
title: c ?? u("patientSignIn.email.title"),
|
|
113
|
+
description: d ?? u("patientSignIn.email.intro"),
|
|
114
|
+
headerAction: r ? /* @__PURE__ */ n("div", { role: "group", "aria-label": u("patientSignIn.email.languageLabel"), children: r }) : void 0,
|
|
115
|
+
focusOnMount: S,
|
|
116
|
+
footer: /* @__PURE__ */ w("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]", children: [
|
|
117
|
+
/* @__PURE__ */ n(G, { children: u("patientSignIn.email.twoChecks") }),
|
|
118
|
+
/* @__PURE__ */ n(G, { children: u("patientSignIn.email.passkeyNote") }),
|
|
119
|
+
I
|
|
120
|
+
] }),
|
|
121
|
+
children: /* @__PURE__ */ n(
|
|
122
|
+
Y,
|
|
123
|
+
{
|
|
124
|
+
email: e,
|
|
125
|
+
defaultEmail: p,
|
|
126
|
+
onEmailChange: h,
|
|
127
|
+
onSubmit: m,
|
|
128
|
+
submitting: o,
|
|
129
|
+
error: t,
|
|
130
|
+
errorText: i,
|
|
131
|
+
challenge: a,
|
|
132
|
+
submitLabel: u("patientSignIn.email.submit"),
|
|
133
|
+
action: "sign-in-email"
|
|
134
|
+
}
|
|
135
|
+
)
|
|
136
|
+
}
|
|
137
|
+
);
|
|
138
|
+
}
|
|
139
|
+
function vn({
|
|
140
|
+
email: e,
|
|
141
|
+
defaultEmail: p,
|
|
142
|
+
onEmailChange: h,
|
|
143
|
+
onSubmit: m,
|
|
144
|
+
submitting: o = !1,
|
|
145
|
+
error: t = null,
|
|
146
|
+
errorText: i,
|
|
147
|
+
challenge: a,
|
|
148
|
+
onBack: r,
|
|
149
|
+
focusOnMount: I = !1,
|
|
150
|
+
className: c
|
|
151
|
+
}) {
|
|
152
|
+
const { t: d } = E("ui");
|
|
153
|
+
return /* @__PURE__ */ n(
|
|
154
|
+
R,
|
|
155
|
+
{
|
|
156
|
+
component: "patient-forgot-pin",
|
|
157
|
+
className: c,
|
|
158
|
+
title: d("patientSignIn.forgot.title"),
|
|
159
|
+
description: d("patientSignIn.forgot.body"),
|
|
160
|
+
focusOnMount: I,
|
|
161
|
+
footer: r ? /* @__PURE__ */ n(T, { action: "back", onClick: r, children: d("patientSignIn.forgot.back") }) : void 0,
|
|
162
|
+
children: /* @__PURE__ */ n(
|
|
163
|
+
Y,
|
|
164
|
+
{
|
|
165
|
+
email: e,
|
|
166
|
+
defaultEmail: p,
|
|
167
|
+
onEmailChange: h,
|
|
168
|
+
onSubmit: m,
|
|
169
|
+
submitting: o,
|
|
170
|
+
error: t,
|
|
171
|
+
errorText: i,
|
|
172
|
+
challenge: a,
|
|
173
|
+
submitLabel: d("patientSignIn.forgot.send"),
|
|
174
|
+
action: "send-link"
|
|
175
|
+
}
|
|
176
|
+
)
|
|
177
|
+
}
|
|
178
|
+
);
|
|
179
|
+
}
|
|
180
|
+
function yn({
|
|
181
|
+
email: e,
|
|
182
|
+
onBack: p,
|
|
183
|
+
focusOnMount: h = !1,
|
|
184
|
+
privacy: m = !1,
|
|
185
|
+
className: o
|
|
186
|
+
}) {
|
|
187
|
+
const { t } = E("ui");
|
|
188
|
+
return /* @__PURE__ */ n(
|
|
189
|
+
nn,
|
|
190
|
+
{
|
|
191
|
+
component: "patient-forgot-pin-sent",
|
|
192
|
+
className: o,
|
|
193
|
+
focusOnMount: h,
|
|
194
|
+
privacy: m,
|
|
195
|
+
icon: /* @__PURE__ */ n(ln, {}),
|
|
196
|
+
title: t("patientSignIn.forgot.sentTitle"),
|
|
197
|
+
body: m ? t("patientSignIn.forgot.sentBodyPrivate") : (
|
|
198
|
+
// A bdi element, so an address that starts with digits keeps its
|
|
199
|
+
// order in right-to-left text. No invisible marks (R23).
|
|
200
|
+
/* @__PURE__ */ n(
|
|
201
|
+
J,
|
|
202
|
+
{
|
|
203
|
+
t,
|
|
204
|
+
ns: "ui",
|
|
205
|
+
i18nKey: "patientSignIn.forgot.sentBody",
|
|
206
|
+
values: { email: e },
|
|
207
|
+
components: { email: /* @__PURE__ */ n("bdi", { dir: "ltr" }) }
|
|
208
|
+
}
|
|
209
|
+
)
|
|
210
|
+
),
|
|
211
|
+
action: p ? { label: t("patientSignIn.forgot.back"), onClick: p } : void 0
|
|
212
|
+
}
|
|
213
|
+
);
|
|
214
|
+
}
|
|
215
|
+
function Pn({
|
|
216
|
+
email: e,
|
|
217
|
+
value: p,
|
|
218
|
+
defaultValue: h,
|
|
219
|
+
onValueChange: m,
|
|
220
|
+
length: o,
|
|
221
|
+
onSubmit: t,
|
|
222
|
+
submitting: i = !1,
|
|
223
|
+
error: a = null,
|
|
224
|
+
errorText: r,
|
|
225
|
+
onForgot: I,
|
|
226
|
+
onChangeEmail: c,
|
|
227
|
+
footer: d,
|
|
228
|
+
focusOnMount: S = !1,
|
|
229
|
+
privacy: v = !1,
|
|
230
|
+
maskClassName: u,
|
|
231
|
+
className: C
|
|
232
|
+
}) {
|
|
233
|
+
const { t: l } = E("ui"), s = X(o), g = x(null), B = x(null), D = x(null), N = _(), [F, M] = H({
|
|
234
|
+
value: p,
|
|
235
|
+
defaultValue: h ?? "",
|
|
236
|
+
onChange: m
|
|
237
|
+
}), L = F ?? "", y = a === "paused", k = L.length === s, V = a !== null && !i;
|
|
238
|
+
return O(a, i, () => {
|
|
239
|
+
var P, b, j;
|
|
240
|
+
a === "wrong" && ((P = g.current) == null || P.clear(), (b = g.current) == null || b.focus()), a === "paused" && ((j = B.current) == null || j.focus());
|
|
241
|
+
}), /* @__PURE__ */ n(
|
|
242
|
+
R,
|
|
243
|
+
{
|
|
244
|
+
component: "patient-sign-in-pin",
|
|
245
|
+
className: C,
|
|
246
|
+
title: l("patientSignIn.pin.title"),
|
|
247
|
+
description: v ? l("patientSignIn.pin.introPrivate") : /* @__PURE__ */ n(
|
|
248
|
+
J,
|
|
249
|
+
{
|
|
250
|
+
t: l,
|
|
251
|
+
ns: "ui",
|
|
252
|
+
i18nKey: "patientSignIn.pin.intro",
|
|
253
|
+
values: { email: e },
|
|
254
|
+
components: { email: /* @__PURE__ */ n("bdi", { dir: "ltr" }) }
|
|
255
|
+
}
|
|
256
|
+
),
|
|
257
|
+
focusOnMount: S,
|
|
258
|
+
privacy: v,
|
|
259
|
+
footer: d,
|
|
260
|
+
children: /* @__PURE__ */ w(
|
|
261
|
+
"form",
|
|
262
|
+
{
|
|
263
|
+
noValidate: !0,
|
|
264
|
+
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-lg)]",
|
|
265
|
+
onSubmit: (P) => {
|
|
266
|
+
var b;
|
|
267
|
+
P.preventDefault(), k && !y && !i && ((b = D.current) == null || b.focus(), t(L));
|
|
268
|
+
},
|
|
269
|
+
children: [
|
|
270
|
+
V && a === "wrong" ? /* @__PURE__ */ n(f, { variant: "error", id: N, children: /* @__PURE__ */ n(f.Description, { children: r ?? l("patientSignIn.pin.wrong") }) }) : null,
|
|
271
|
+
V && y ? /* @__PURE__ */ w(f, { variant: "warning", id: N, children: [
|
|
272
|
+
/* @__PURE__ */ n(f.Title, { as: "h2", children: l("patientSignIn.pin.pausedTitle") }),
|
|
273
|
+
/* @__PURE__ */ n(f.Description, { children: r ?? l("patientSignIn.pin.pausedBody") })
|
|
274
|
+
] }) : null,
|
|
275
|
+
/* @__PURE__ */ n("div", { className: "ds:flex ds:justify-center", children: /* @__PURE__ */ n(
|
|
276
|
+
W,
|
|
277
|
+
{
|
|
278
|
+
ref: g,
|
|
279
|
+
length: s,
|
|
280
|
+
label: l("patientSignIn.pin.label"),
|
|
281
|
+
hideLabel: !0,
|
|
282
|
+
value: L,
|
|
283
|
+
onChange: M,
|
|
284
|
+
error: a === "wrong" && L.length === 0,
|
|
285
|
+
disabled: y || i,
|
|
286
|
+
autoComplete: "current-password",
|
|
287
|
+
"aria-describedby": V ? N : void 0,
|
|
288
|
+
maskClassName: u
|
|
289
|
+
}
|
|
290
|
+
) }),
|
|
291
|
+
y ? /* @__PURE__ */ n(
|
|
292
|
+
K,
|
|
293
|
+
{
|
|
294
|
+
ref: B,
|
|
295
|
+
type: "button",
|
|
296
|
+
intent: "primary",
|
|
297
|
+
className: "ds:min-h-[var(--min-target-size)] ds:w-full",
|
|
298
|
+
"data-action": "paused-reset",
|
|
299
|
+
onClick: I,
|
|
300
|
+
children: l("patientSignIn.pin.pausedReset")
|
|
301
|
+
}
|
|
302
|
+
) : /* @__PURE__ */ n(
|
|
303
|
+
K,
|
|
304
|
+
{
|
|
305
|
+
ref: D,
|
|
306
|
+
type: "submit",
|
|
307
|
+
intent: "primary",
|
|
308
|
+
className: "ds:min-h-[var(--min-target-size)] ds:w-full",
|
|
309
|
+
"data-action": "sign-in-submit",
|
|
310
|
+
disabled: !k,
|
|
311
|
+
loading: i,
|
|
312
|
+
children: l("patientSignIn.pin.submit")
|
|
313
|
+
}
|
|
314
|
+
),
|
|
315
|
+
/* @__PURE__ */ w("div", { className: "ds:flex ds:flex-wrap ds:justify-center ds:gap-x-[var(--spacing-lg)] ds:gap-y-[var(--spacing-sm)]", children: [
|
|
316
|
+
y ? null : /* @__PURE__ */ n(T, { action: "forgot-pin", onClick: I, children: l("patientSignIn.pin.forgot") }),
|
|
317
|
+
c ? /* @__PURE__ */ n(T, { action: "change-email", onClick: c, children: l("patientSignIn.pin.changeEmail") }) : null
|
|
318
|
+
] })
|
|
319
|
+
]
|
|
320
|
+
}
|
|
321
|
+
)
|
|
322
|
+
}
|
|
323
|
+
);
|
|
324
|
+
}
|
|
325
|
+
function wn({
|
|
326
|
+
phase: e,
|
|
327
|
+
value: p,
|
|
328
|
+
defaultValue: h,
|
|
329
|
+
onValueChange: m,
|
|
330
|
+
length: o,
|
|
331
|
+
onSubmit: t,
|
|
332
|
+
submitting: i = !1,
|
|
333
|
+
error: a = null,
|
|
334
|
+
errorText: r,
|
|
335
|
+
note: I,
|
|
336
|
+
email: c = null,
|
|
337
|
+
step: d,
|
|
338
|
+
headingLevel: S = 1,
|
|
339
|
+
focusOnMount: v = !1,
|
|
340
|
+
privacy: u = !1,
|
|
341
|
+
maskClassName: C,
|
|
342
|
+
className: l
|
|
343
|
+
}) {
|
|
344
|
+
const { t: s, i18n: g } = E("ui"), B = X(o), D = tn(B, g.language), N = x(null), F = x(null), M = _(), [L, y] = H({
|
|
345
|
+
value: p,
|
|
346
|
+
defaultValue: h ?? "",
|
|
347
|
+
onChange: m
|
|
348
|
+
}), k = L ?? "", V = k.length === B, P = e === "choose", b = (r == null ? void 0 : r.trim()) || (a === "mobile" ? s("patientSignIn.setPin.reason.mobile") : void 0), j = !!b && !i, q = x(e);
|
|
349
|
+
return $(() => {
|
|
350
|
+
q.current !== e && (q.current = e, y(""));
|
|
351
|
+
}, [e]), O(b ? a ?? r : null, i, () => {
|
|
352
|
+
var z, A;
|
|
353
|
+
(z = N.current) == null || z.clear(), (A = N.current) == null || A.focus();
|
|
354
|
+
}), /* @__PURE__ */ n(
|
|
355
|
+
R,
|
|
356
|
+
{
|
|
357
|
+
component: "patient-set-pin",
|
|
358
|
+
className: l,
|
|
359
|
+
headingLevel: S,
|
|
360
|
+
eyebrow: d,
|
|
361
|
+
title: s(P ? "patientSignIn.setPin.title" : "patientSignIn.setPin.confirmTitle"),
|
|
362
|
+
description: /* @__PURE__ */ w(Z, { children: [
|
|
363
|
+
P ? s("patientSignIn.setPin.body", { length: D }) : s("patientSignIn.setPin.confirmBody", { length: D }),
|
|
364
|
+
I ? /* @__PURE__ */ n("div", { className: "ds:mt-[var(--spacing-xs)]", children: I }) : null
|
|
365
|
+
] }),
|
|
366
|
+
focusOnMount: v,
|
|
367
|
+
focusKey: e,
|
|
368
|
+
privacy: u,
|
|
369
|
+
children: /* @__PURE__ */ w(
|
|
370
|
+
"form",
|
|
371
|
+
{
|
|
372
|
+
noValidate: !0,
|
|
373
|
+
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]",
|
|
374
|
+
onSubmit: (z) => {
|
|
375
|
+
var A;
|
|
376
|
+
z.preventDefault(), V && !i && ((A = F.current) == null || A.focus(), t(k, e));
|
|
377
|
+
},
|
|
378
|
+
children: [
|
|
379
|
+
j ? /* @__PURE__ */ n(f, { variant: "error", id: M, children: /* @__PURE__ */ n(f.Description, { children: b }) }) : null,
|
|
380
|
+
c && !u ? /* @__PURE__ */ n(U, { label: s("patientSignIn.setPin.usernameLabel"), children: /* @__PURE__ */ n(
|
|
381
|
+
Q,
|
|
382
|
+
{
|
|
383
|
+
readOnly: !0,
|
|
384
|
+
disableBuiltInValidation: !0,
|
|
385
|
+
errorMessage: null,
|
|
386
|
+
autoComplete: "username",
|
|
387
|
+
value: c
|
|
388
|
+
}
|
|
389
|
+
) }) : null,
|
|
390
|
+
/* @__PURE__ */ n("div", { className: "ds:flex ds:justify-center", children: /* @__PURE__ */ n(
|
|
391
|
+
W,
|
|
392
|
+
{
|
|
393
|
+
ref: N,
|
|
394
|
+
length: B,
|
|
395
|
+
label: s(P ? "patientSignIn.setPin.newLabel" : "patientSignIn.setPin.confirmLabel"),
|
|
396
|
+
autoComplete: "new-password",
|
|
397
|
+
"aria-describedby": j ? M : void 0,
|
|
398
|
+
value: k,
|
|
399
|
+
onChange: y,
|
|
400
|
+
error: !!b && k.length === 0,
|
|
401
|
+
disabled: i,
|
|
402
|
+
maskClassName: C
|
|
403
|
+
},
|
|
404
|
+
e
|
|
405
|
+
) }),
|
|
406
|
+
/* @__PURE__ */ n(
|
|
407
|
+
K,
|
|
408
|
+
{
|
|
409
|
+
ref: F,
|
|
410
|
+
type: "submit",
|
|
411
|
+
intent: "primary",
|
|
412
|
+
className: "ds:min-h-[var(--min-target-size)] ds:w-full",
|
|
413
|
+
"data-action": "set-pin-continue",
|
|
414
|
+
disabled: !V,
|
|
415
|
+
loading: i,
|
|
416
|
+
children: s("patientSignIn.setPin.submit")
|
|
417
|
+
}
|
|
418
|
+
)
|
|
419
|
+
]
|
|
420
|
+
}
|
|
421
|
+
)
|
|
422
|
+
}
|
|
423
|
+
);
|
|
424
|
+
}
|
|
425
|
+
export {
|
|
426
|
+
vn as P,
|
|
427
|
+
yn as a,
|
|
428
|
+
wn as b,
|
|
429
|
+
Sn as c,
|
|
430
|
+
Pn as d
|
|
431
|
+
};
|
|
432
|
+
//# sourceMappingURL=patient-sign-in-pin-CDBqV254.js.map
|