@alfadocs/ui-kit-debug 1.132.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-BSkIYGlW.js +13773 -0
- package/dist/_chunks/calendar-appointment-editor-dialog-BSkIYGlW.js.map +1 -0
- 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 +514 -1
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +512 -4
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +514 -1
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +520 -5
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +514 -1
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +515 -5
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +516 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +522 -4
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +514 -1
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +513 -5
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +514 -1
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +513 -5
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +514 -1
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +513 -5
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +514 -1
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +520 -5
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +514 -1
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +513 -5
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +514 -1
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +520 -5
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +514 -1
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +520 -5
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +514 -1
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +520 -5
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +514 -1
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +520 -5
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +514 -1
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +512 -4
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +514 -1
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +513 -5
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +514 -1
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +513 -5
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +514 -1
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +515 -5
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +514 -1
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +513 -5
- 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 +516 -3
- package/dist/locales/de.json +517 -4
- package/dist/locales/el.json +517 -4
- package/dist/locales/en.json +516 -3
- package/dist/locales/es.json +517 -4
- package/dist/locales/fr.json +517 -4
- package/dist/locales/hi.json +517 -4
- package/dist/locales/it.json +517 -4
- package/dist/locales/ja.json +517 -4
- package/dist/locales/nl.json +517 -4
- package/dist/locales/pl.json +517 -4
- package/dist/locales/pt.json +517 -4
- package/dist/locales/ro.json +517 -4
- package/dist/locales/ru.json +516 -3
- package/dist/locales/sq.json +517 -4
- package/dist/locales/sv.json +517 -4
- package/dist/locales/tr.json +517 -4
- package/dist/locales/zh.json +517 -4
- package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.journey.d.ts +4 -0
- package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.surface.d.ts +15 -1
- package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.types.d.ts +4 -0
- package/dist/patterns/calendar/calendar.types.d.ts.map +1 -1
- 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/calendar-appointment-editor-dialog-WW6V1SGh.js +0 -13663
- package/dist/_chunks/calendar-appointment-editor-dialog-WW6V1SGh.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":"pin-indicator-Cb-n40UI.js","sources":["../../src/components/pin-indicator/pin-indicator.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\n\n/* -------------------------------------------------------------------- */\n/* PinIndicator — the row of PIN dots. */\n/* */\n/* One dot per digit, filled for each digit typed; the digits are never */\n/* shown. The error state turns the dots red and shakes the row once. */\n/* The shake is `--animation-duration` long, so the accessible themes */\n/* (0ms) and reduced motion show the red dots without movement. */\n/* The row never grows past its container: when 12 dots would not fit */\n/* (320 px), the dots shrink a little, so none is clipped. Up to 8 dots */\n/* at normal widths the look is unchanged. */\n/* A polite live region says \"Digits entered: 3 of 8\" as the count */\n/* changes; nothing is read on mount. */\n/* -------------------------------------------------------------------- */\n\nexport const MIN_PIN_LENGTH = 4;\nexport const MAX_PIN_LENGTH = 12;\n/** The patient interface's PIN length for health data (D120). */\nexport const DEFAULT_PIN_LENGTH = 8;\n\n/** Clamp a PIN length into [4, 12]; non-finite input falls back to 8. */\nexport function resolvePinLength(length: number | undefined): number {\n const n =\n typeof length === 'number' && Number.isFinite(length)\n ? Math.floor(length)\n : DEFAULT_PIN_LENGTH;\n return Math.max(MIN_PIN_LENGTH, Math.min(MAX_PIN_LENGTH, n));\n}\n\nconst rootVariants = cva(\n [\n // `px-px` leaves room for the filled dot's 1.1 scale, so the outer dots\n // never push a 320 px container into a sideways scroll.\n 'ds:inline-flex ds:max-w-full ds:items-center ds:justify-center ds:px-px',\n 'ds:data-[state=error]:animate-[pin-indicator-shake_calc(var(--animation-duration)*2)_var(--ease-out)] ds:motion-reduce:animate-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:gap-[var(--spacing-sm)]',\n md: 'ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst dotVariants = cva(\n [\n // The dots give way before the gaps do, so 12 of them fit a 320 px\n // container; the square shape follows the width. At normal widths\n // nothing shrinks and the dots keep their full size.\n 'ds:block ds:aspect-square ds:h-auto ds:min-w-0 ds:shrink ds:rounded-[var(--radius-full)] ds:border-2',\n 'ds:transition-[background-color,border-color,scale] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:w-3',\n md: 'ds:w-4',\n },\n filled: {\n true: 'ds:scale-110 ds:forced-colors:bg-[CanvasText] ds:forced-colors:border-[CanvasText]',\n false:\n 'ds:bg-transparent ds:border-[color:var(--control-border)] ds:forced-colors:border-[CanvasText]',\n },\n tone: {\n default: '',\n error: '',\n },\n },\n compoundVariants: [\n {\n filled: true,\n tone: 'default',\n className: 'ds:bg-foreground ds:border-foreground',\n },\n {\n filled: true,\n tone: 'error',\n className: 'ds:bg-destructive ds:border-destructive',\n },\n {\n filled: false,\n tone: 'error',\n className: 'ds:border-destructive',\n },\n ],\n defaultVariants: { size: 'md', filled: false, tone: 'default' },\n },\n);\n\nexport interface PinIndicatorProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'role' | 'children'>,\n VariantProps<typeof rootVariants> {\n /** Number of digits typed so far. Clamped to `[0, length]`. */\n filled: number;\n /** Number of dots, from 4 to 12. Default 8. */\n length?: number;\n /** Red dots and one shake (no movement in the accessible themes or with\n * reduced motion). Turn it off when the person types again. */\n error?: boolean;\n /** Dot size. Default `md`. */\n size?: 'sm' | 'md';\n /** Say the count in a polite live region as it changes. Default `true`;\n * turn it off when the host already speaks the count. */\n announce?: boolean;\n /** Opaque instance id, emitted as `data-component-id`. */\n id?: string;\n}\n\n/**\n * The dots of a PIN screen. Display only: pair it with `Keypad`, or use\n * `PinEntry`, which wires both to a real field.\n */\nexport const PinIndicator = forwardRef<HTMLDivElement, PinIndicatorProps>(\n (\n {\n filled,\n length: lengthProp,\n error = false,\n size = 'md',\n announce = true,\n id,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const length = resolvePinLength(lengthProp);\n const count = Math.max(0, Math.min(length, Math.floor(filled || 0)));\n const state = error ? 'error' : count === length ? 'complete' : 'idle';\n return (\n <div\n ref={ref}\n data-component=\"pin-indicator\"\n data-component-id={id}\n data-state={state}\n data-filled={count}\n data-length={length}\n className={rootVariants({ size, className })}\n {...rest}\n >\n {Array.from({ length }, (_, index) => (\n <span\n key={index}\n aria-hidden=\"true\"\n data-dot-id={index}\n data-filled={index < count ? '' : undefined}\n className={dotVariants({\n size,\n filled: index < count,\n tone: error ? 'error' : 'default',\n })}\n />\n ))}\n {announce ? (\n <span aria-live=\"polite\" aria-atomic=\"true\" className=\"ds:sr-only\">\n {t('inputs.pinIndicator.progress', {\n filled: count,\n total: length,\n defaultValue: 'Digits entered: {{filled}} of {{total}}',\n })}\n </span>\n ) : null}\n </div>\n );\n },\n);\n\nPinIndicator.displayName = 'PinIndicator';\n"],"names":["MIN_PIN_LENGTH","MAX_PIN_LENGTH","DEFAULT_PIN_LENGTH","resolvePinLength","length","n","rootVariants","cva","dotVariants","PinIndicator","forwardRef","filled","lengthProp","error","size","announce","id","className","rest","ref","t","useTranslation","count","jsxs","_","index","jsx"],"mappings":";;;;AAkBO,MAAMA,IAAiB,GACjBC,IAAiB,IAEjBC,IAAqB;AAG3B,SAASC,EAAiBC,GAAoC;AACnE,QAAMC,IACJ,OAAOD,KAAW,YAAY,OAAO,SAASA,CAAM,IAChD,KAAK,MAAMA,CAAM,IACjBF;AACN,SAAO,KAAK,IAAIF,GAAgB,KAAK,IAAIC,GAAgBI,CAAC,CAAC;AAC7D;AAEA,MAAMC,IAAeC;AAAA,EACnB;AAAA;AAAA;AAAA,IAGE;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB,EAAE,MAAM,KAAA;AAAA,EAAK;AAElC,GAEMC,IAAcD;AAAA,EAClB;AAAA;AAAA;AAAA;AAAA,IAIE;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,MAEN,QAAQ;AAAA,QACN,MAAM;AAAA,QACN,OACE;AAAA,MAAA;AAAA,MAEJ,MAAM;AAAA,QACJ,SAAS;AAAA,QACT,OAAO;AAAA,MAAA;AAAA,IACT;AAAA,IAEF,kBAAkB;AAAA,MAChB;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAAA,MAEb;AAAA,QACE,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,WAAW;AAAA,MAAA;AAAA,IACb;AAAA,IAEF,iBAAiB,EAAE,MAAM,MAAM,QAAQ,IAAO,MAAM,UAAA;AAAA,EAAU;AAElE,GA0BaE,IAAeC;AAAA,EAC1B,CACE;AAAA,IACE,QAAAC;AAAA,IACA,QAAQC;AAAA,IACR,OAAAC,IAAQ;AAAA,IACR,MAAAC,IAAO;AAAA,IACP,UAAAC,IAAW;AAAA,IACX,IAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,IAAI,GAC3BjB,IAASD,EAAiBS,CAAU,GACpCU,IAAQ,KAAK,IAAI,GAAG,KAAK,IAAIlB,GAAQ,KAAK,MAAMO,KAAU,CAAC,CAAC,CAAC;AAEnE,WACE,gBAAAY;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,kBAAe;AAAA,QACf,qBAAmBH;AAAA,QACnB,cANUH,IAAQ,UAAUS,MAAUlB,IAAS,aAAa;AAAA,QAO5D,eAAakB;AAAA,QACb,eAAalB;AAAA,QACb,WAAWE,EAAa,EAAE,MAAAQ,GAAM,WAAAG,GAAW;AAAA,QAC1C,GAAGC;AAAA,QAEH,UAAA;AAAA,UAAA,MAAM,KAAK,EAAE,QAAAd,EAAA,GAAU,CAACoB,GAAGC,MAC1B,gBAAAC;AAAA,YAAC;AAAA,YAAA;AAAA,cAEC,eAAY;AAAA,cACZ,eAAaD;AAAA,cACb,eAAaA,IAAQH,IAAQ,KAAK;AAAA,cAClC,WAAWd,EAAY;AAAA,gBACrB,MAAAM;AAAA,gBACA,QAAQW,IAAQH;AAAA,gBAChB,MAAMT,IAAQ,UAAU;AAAA,cAAA,CACzB;AAAA,YAAA;AAAA,YARIY;AAAA,UAAA,CAUR;AAAA,UACAV,IACC,gBAAAW,EAAC,QAAA,EAAK,aAAU,UAAS,eAAY,QAAO,WAAU,cACnD,UAAAN,EAAE,gCAAgC;AAAA,YACjC,QAAQE;AAAA,YACR,OAAOlB;AAAA,YACP,cAAc;AAAA,UAAA,CACf,GACH,IACE;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGV;AACF;AAEAK,EAAa,cAAc;"}
|
|
@@ -0,0 +1,478 @@
|
|
|
1
|
+
import { jsxs as d, jsx as t, Fragment as T } from "react/jsx-runtime";
|
|
2
|
+
import { useRef as L, useEffect as O, useId as X } from "react";
|
|
3
|
+
import { useTranslation as z } from "react-i18next";
|
|
4
|
+
import { A as Q } from "./alert-C4WKViaS.js";
|
|
5
|
+
import { B as I } from "./button-DohK_Ak_.js";
|
|
6
|
+
import { C as st } from "./checkbox-DV4sNDeB.js";
|
|
7
|
+
import { C as ot } from "./country-select-C2GdvRtS.js";
|
|
8
|
+
import { D as P } from "./description-list-BxzDN9o2.js";
|
|
9
|
+
import { E as rt } from "./error-summary-DxNhwf_G.js";
|
|
10
|
+
import { E as ct } from "./email-input-DxwbREpx.js";
|
|
11
|
+
import { F as v } from "./form-field-CyHfOVKF.js";
|
|
12
|
+
import { T as S } from "./text-input-B6iAgCr3.js";
|
|
13
|
+
import { V as mt } from "./visually-hidden-BHxEUGyT.js";
|
|
14
|
+
import { P as pt } from "./privacy-mask-C19dJFMk.js";
|
|
15
|
+
import { u as W } from "./use-controllable-state-BiY4xTzM.js";
|
|
16
|
+
import { u as Y, P as dt, a as ut, b as ht, c as gt, d as Pt, f as bt } from "./portal-parts-BdR29P7z.js";
|
|
17
|
+
import { p as V } from "./privacy-mask-text-B8YfzB7L.js";
|
|
18
|
+
const Z = (n, u) => `${n}-${u}`;
|
|
19
|
+
function Nt({
|
|
20
|
+
values: n,
|
|
21
|
+
onChange: u,
|
|
22
|
+
fieldErrors: a,
|
|
23
|
+
disabled: m = !1,
|
|
24
|
+
idPrefix: y,
|
|
25
|
+
announceErrors: c = !0,
|
|
26
|
+
fieldAddon: i,
|
|
27
|
+
showMarketing: x = !0,
|
|
28
|
+
className: r
|
|
29
|
+
}) {
|
|
30
|
+
const { t: o } = z("ui"), N = X(), p = (s) => Z(y ?? N, s), h = (s, j) => u({ ...n, [s]: j });
|
|
31
|
+
return /* @__PURE__ */ d(
|
|
32
|
+
"div",
|
|
33
|
+
{
|
|
34
|
+
"data-component": "portal-details-fields",
|
|
35
|
+
className: ["ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", r].filter(Boolean).join(" "),
|
|
36
|
+
children: [
|
|
37
|
+
/* @__PURE__ */ t(
|
|
38
|
+
v,
|
|
39
|
+
{
|
|
40
|
+
label: o("patientPortal.details.firstName"),
|
|
41
|
+
labelEnd: i == null ? void 0 : i.firstName,
|
|
42
|
+
error: a == null ? void 0 : a.firstName,
|
|
43
|
+
announceError: c,
|
|
44
|
+
children: /* @__PURE__ */ t(
|
|
45
|
+
S,
|
|
46
|
+
{
|
|
47
|
+
value: n.firstName,
|
|
48
|
+
onChange: (s) => h("firstName", s.target.value),
|
|
49
|
+
autoComplete: "given-name",
|
|
50
|
+
disabled: m,
|
|
51
|
+
id: p("firstName"),
|
|
52
|
+
dir: "auto",
|
|
53
|
+
"data-field": "firstName"
|
|
54
|
+
}
|
|
55
|
+
)
|
|
56
|
+
}
|
|
57
|
+
),
|
|
58
|
+
/* @__PURE__ */ t(
|
|
59
|
+
v,
|
|
60
|
+
{
|
|
61
|
+
label: o("patientPortal.details.lastName"),
|
|
62
|
+
labelEnd: i == null ? void 0 : i.lastName,
|
|
63
|
+
error: a == null ? void 0 : a.lastName,
|
|
64
|
+
announceError: c,
|
|
65
|
+
children: /* @__PURE__ */ t(
|
|
66
|
+
S,
|
|
67
|
+
{
|
|
68
|
+
value: n.lastName,
|
|
69
|
+
onChange: (s) => h("lastName", s.target.value),
|
|
70
|
+
autoComplete: "family-name",
|
|
71
|
+
disabled: m,
|
|
72
|
+
id: p("lastName"),
|
|
73
|
+
dir: "auto",
|
|
74
|
+
"data-field": "lastName"
|
|
75
|
+
}
|
|
76
|
+
)
|
|
77
|
+
}
|
|
78
|
+
),
|
|
79
|
+
/* @__PURE__ */ t(
|
|
80
|
+
v,
|
|
81
|
+
{
|
|
82
|
+
label: o("patientPortal.details.address"),
|
|
83
|
+
labelEnd: i == null ? void 0 : i.address,
|
|
84
|
+
error: a == null ? void 0 : a.address,
|
|
85
|
+
announceError: c,
|
|
86
|
+
children: /* @__PURE__ */ t(
|
|
87
|
+
S,
|
|
88
|
+
{
|
|
89
|
+
value: n.address,
|
|
90
|
+
onChange: (s) => h("address", s.target.value),
|
|
91
|
+
autoComplete: "street-address",
|
|
92
|
+
disabled: m,
|
|
93
|
+
id: p("address"),
|
|
94
|
+
dir: "auto",
|
|
95
|
+
"data-field": "address"
|
|
96
|
+
}
|
|
97
|
+
)
|
|
98
|
+
}
|
|
99
|
+
),
|
|
100
|
+
/* @__PURE__ */ t(
|
|
101
|
+
v,
|
|
102
|
+
{
|
|
103
|
+
label: o("patientPortal.details.country"),
|
|
104
|
+
labelEnd: i == null ? void 0 : i.country,
|
|
105
|
+
error: a == null ? void 0 : a.country,
|
|
106
|
+
announceError: c,
|
|
107
|
+
children: /* @__PURE__ */ t(
|
|
108
|
+
ot,
|
|
109
|
+
{
|
|
110
|
+
value: n.country,
|
|
111
|
+
onValueChange: (s) => h("country", s),
|
|
112
|
+
placeholder: o("patientPortal.details.countryPlaceholder"),
|
|
113
|
+
"aria-label": o("patientPortal.details.country"),
|
|
114
|
+
id: p("country"),
|
|
115
|
+
disabled: m,
|
|
116
|
+
tone: a != null && a.country ? "error" : "default"
|
|
117
|
+
}
|
|
118
|
+
)
|
|
119
|
+
}
|
|
120
|
+
),
|
|
121
|
+
/* @__PURE__ */ t(
|
|
122
|
+
v,
|
|
123
|
+
{
|
|
124
|
+
label: o("patientPortal.details.contactEmail"),
|
|
125
|
+
labelEnd: i == null ? void 0 : i.contactEmail,
|
|
126
|
+
description: o("patientPortal.details.contactEmailNote"),
|
|
127
|
+
error: a == null ? void 0 : a.contactEmail,
|
|
128
|
+
announceError: c,
|
|
129
|
+
children: /* @__PURE__ */ t(
|
|
130
|
+
ct,
|
|
131
|
+
{
|
|
132
|
+
value: n.contactEmail,
|
|
133
|
+
onChange: (s) => h("contactEmail", s.target.value),
|
|
134
|
+
autoComplete: "email",
|
|
135
|
+
disableBuiltInValidation: !0,
|
|
136
|
+
errorMessage: null,
|
|
137
|
+
disabled: m,
|
|
138
|
+
id: p("contactEmail"),
|
|
139
|
+
dir: "ltr",
|
|
140
|
+
"data-field": "contactEmail"
|
|
141
|
+
}
|
|
142
|
+
)
|
|
143
|
+
}
|
|
144
|
+
),
|
|
145
|
+
/* @__PURE__ */ t(
|
|
146
|
+
v,
|
|
147
|
+
{
|
|
148
|
+
label: o("patientPortal.details.phone"),
|
|
149
|
+
labelEnd: i == null ? void 0 : i.phone,
|
|
150
|
+
error: a == null ? void 0 : a.phone,
|
|
151
|
+
announceError: c,
|
|
152
|
+
children: /* @__PURE__ */ t(
|
|
153
|
+
S,
|
|
154
|
+
{
|
|
155
|
+
value: n.phone,
|
|
156
|
+
onChange: (s) => h("phone", s.target.value),
|
|
157
|
+
type: "tel",
|
|
158
|
+
autoComplete: "tel",
|
|
159
|
+
disabled: m,
|
|
160
|
+
id: p("phone"),
|
|
161
|
+
dir: "ltr",
|
|
162
|
+
"data-field": "phone"
|
|
163
|
+
}
|
|
164
|
+
)
|
|
165
|
+
}
|
|
166
|
+
),
|
|
167
|
+
x ? /* @__PURE__ */ d("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
168
|
+
/* @__PURE__ */ t(
|
|
169
|
+
st,
|
|
170
|
+
{
|
|
171
|
+
id: p("marketing"),
|
|
172
|
+
label: o("patientPortal.details.marketingConsent"),
|
|
173
|
+
checked: n.marketing === 1,
|
|
174
|
+
onCheckedChange: (s) => h("marketing", s === !0 ? 1 : 0),
|
|
175
|
+
"aria-invalid": a != null && a.marketing ? !0 : void 0,
|
|
176
|
+
"aria-describedby": a != null && a.marketing ? `${p("marketing")}-error` : void 0,
|
|
177
|
+
disabled: m
|
|
178
|
+
}
|
|
179
|
+
),
|
|
180
|
+
a != null && a.marketing ? /* @__PURE__ */ t(
|
|
181
|
+
"p",
|
|
182
|
+
{
|
|
183
|
+
id: `${p("marketing")}-error`,
|
|
184
|
+
role: c ? "alert" : void 0,
|
|
185
|
+
className: "type-meta ds:m-0 ds:text-[color:var(--destructive)]",
|
|
186
|
+
children: a.marketing
|
|
187
|
+
}
|
|
188
|
+
) : null
|
|
189
|
+
] }) : null
|
|
190
|
+
]
|
|
191
|
+
}
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
function Ct({
|
|
195
|
+
readOnly: n,
|
|
196
|
+
locale: u,
|
|
197
|
+
recordMark: a,
|
|
198
|
+
privacy: m = !1,
|
|
199
|
+
className: y
|
|
200
|
+
}) {
|
|
201
|
+
const { t: c } = z("ui"), i = Y(u), x = c("patientPortal.details.fiscalCode"), r = [
|
|
202
|
+
[
|
|
203
|
+
c("patientPortal.details.birthDate"),
|
|
204
|
+
m ? V() : bt(n.birthDateIso, i)
|
|
205
|
+
],
|
|
206
|
+
[
|
|
207
|
+
c("patientPortal.details.fiscalCode"),
|
|
208
|
+
m ? V() : n.fiscalCode
|
|
209
|
+
]
|
|
210
|
+
];
|
|
211
|
+
return n.maskedMobile && r.push([
|
|
212
|
+
c("patientPortal.details.mobile"),
|
|
213
|
+
m ? V() : /* @__PURE__ */ t("bdi", { dir: "ltr", children: n.maskedMobile }, "mobile")
|
|
214
|
+
]), /* @__PURE__ */ t("div", { "data-component": "portal-details-read-only-list", className: y, children: /* @__PURE__ */ t(P, { layout: "responsive", divider: "between", children: r.map(([o, N]) => /* @__PURE__ */ d(P.Row, { children: [
|
|
215
|
+
/* @__PURE__ */ t(P.Term, { children: o }),
|
|
216
|
+
/* @__PURE__ */ t(P.Detail, { children: /* @__PURE__ */ d("span", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
|
|
217
|
+
o === x ? /* @__PURE__ */ t("bdi", { dir: "ltr", children: N }) : /* @__PURE__ */ t("bdi", { children: N }),
|
|
218
|
+
a
|
|
219
|
+
] }) })
|
|
220
|
+
] }, o)) }) });
|
|
221
|
+
}
|
|
222
|
+
function vt(n) {
|
|
223
|
+
return (u) => {
|
|
224
|
+
if (!u) return "";
|
|
225
|
+
try {
|
|
226
|
+
return new Intl.DisplayNames([n], { type: "region" }).of(
|
|
227
|
+
u.toUpperCase()
|
|
228
|
+
) ?? u;
|
|
229
|
+
} catch {
|
|
230
|
+
return u;
|
|
231
|
+
}
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
function Rt({
|
|
235
|
+
values: n,
|
|
236
|
+
readOnly: u,
|
|
237
|
+
draft: a,
|
|
238
|
+
defaultDraft: m,
|
|
239
|
+
onDraftChange: y,
|
|
240
|
+
editing: c,
|
|
241
|
+
defaultEditing: i = !1,
|
|
242
|
+
onEditingChange: x,
|
|
243
|
+
fieldErrors: r,
|
|
244
|
+
saveState: o = "idle",
|
|
245
|
+
onSave: N,
|
|
246
|
+
status: p = "ready",
|
|
247
|
+
onRetry: h,
|
|
248
|
+
stepUp: s = null,
|
|
249
|
+
locale: j,
|
|
250
|
+
headingLevel: F = 1,
|
|
251
|
+
focusOnMount: _ = !1,
|
|
252
|
+
privacy: g = !1,
|
|
253
|
+
className: A
|
|
254
|
+
}) {
|
|
255
|
+
const { t: e } = z("ui"), R = Y(j), E = vt(R), [tt, D] = W({
|
|
256
|
+
value: a,
|
|
257
|
+
defaultValue: m ?? n,
|
|
258
|
+
onChange: y
|
|
259
|
+
}), [at, $] = W({
|
|
260
|
+
value: c,
|
|
261
|
+
defaultValue: i,
|
|
262
|
+
onChange: x
|
|
263
|
+
}), H = tt ?? n, b = at === !0, k = o === "saving", q = L(null), G = L(null), K = L(b);
|
|
264
|
+
O(() => {
|
|
265
|
+
var l, f, w;
|
|
266
|
+
K.current !== b && (K.current = b, !s && (b ? (f = (l = q.current) == null ? void 0 : l.querySelector("input")) == null || f.focus() : (w = G.current) == null || w.focus()));
|
|
267
|
+
}, [b, s]);
|
|
268
|
+
const U = X(), J = L(null), et = [
|
|
269
|
+
"firstName",
|
|
270
|
+
"lastName",
|
|
271
|
+
"address",
|
|
272
|
+
"country",
|
|
273
|
+
"contactEmail",
|
|
274
|
+
"phone",
|
|
275
|
+
"marketing"
|
|
276
|
+
], nt = {
|
|
277
|
+
firstName: e("patientPortal.details.firstName"),
|
|
278
|
+
lastName: e("patientPortal.details.lastName"),
|
|
279
|
+
address: e("patientPortal.details.address"),
|
|
280
|
+
country: e("patientPortal.details.country"),
|
|
281
|
+
contactEmail: e("patientPortal.details.contactEmail"),
|
|
282
|
+
phone: e("patientPortal.details.phone"),
|
|
283
|
+
marketing: e("patientPortal.details.marketing")
|
|
284
|
+
}, B = et.filter((l) => r == null ? void 0 : r[l]), it = B.map((l) => `${l}:${r == null ? void 0 : r[l]}`).join("|"), M = b && !g && B.length > 0;
|
|
285
|
+
O(() => {
|
|
286
|
+
var l;
|
|
287
|
+
M && ((l = J.current) == null || l.focus({ preventScroll: !1 }));
|
|
288
|
+
}, [it, M]);
|
|
289
|
+
const C = (l) => g ? V() : l, lt = [
|
|
290
|
+
[e("patientPortal.details.firstName"), C(n.firstName), !1],
|
|
291
|
+
[e("patientPortal.details.lastName"), C(n.lastName), !1],
|
|
292
|
+
[e("patientPortal.details.address"), C(n.address), !1],
|
|
293
|
+
[
|
|
294
|
+
e("patientPortal.details.country"),
|
|
295
|
+
C(E(n.country)),
|
|
296
|
+
!1
|
|
297
|
+
],
|
|
298
|
+
[
|
|
299
|
+
e("patientPortal.details.contactEmail"),
|
|
300
|
+
C(n.contactEmail),
|
|
301
|
+
!0
|
|
302
|
+
],
|
|
303
|
+
[e("patientPortal.details.phone"), C(n.phone), !0],
|
|
304
|
+
[
|
|
305
|
+
e("patientPortal.details.marketing"),
|
|
306
|
+
n.marketing === 1 ? e("patientPortal.details.on") : e("patientPortal.details.off"),
|
|
307
|
+
!1
|
|
308
|
+
]
|
|
309
|
+
];
|
|
310
|
+
return /* @__PURE__ */ d(
|
|
311
|
+
dt,
|
|
312
|
+
{
|
|
313
|
+
component: "portal-details",
|
|
314
|
+
title: e("patientPortal.details.title"),
|
|
315
|
+
description: e("patientPortal.details.intro"),
|
|
316
|
+
headingLevel: F,
|
|
317
|
+
focusOnMount: _,
|
|
318
|
+
privacy: g,
|
|
319
|
+
className: A,
|
|
320
|
+
status: p,
|
|
321
|
+
loadingLabel: e("patientPortal.details.loading"),
|
|
322
|
+
errorLabel: e("patientPortal.details.error.title"),
|
|
323
|
+
message: o === "saved" ? e("patientPortal.details.saved") : void 0,
|
|
324
|
+
children: [
|
|
325
|
+
p === "loading" ? /* @__PURE__ */ t(ut, {}) : p === "error" ? /* @__PURE__ */ t(
|
|
326
|
+
ht,
|
|
327
|
+
{
|
|
328
|
+
kind: "error",
|
|
329
|
+
title: e("patientPortal.details.error.title"),
|
|
330
|
+
body: e("patientPortal.home.error.body"),
|
|
331
|
+
headingLevel: F,
|
|
332
|
+
onRetry: h
|
|
333
|
+
}
|
|
334
|
+
) : /* @__PURE__ */ d(T, { children: [
|
|
335
|
+
o === "saved" ? (
|
|
336
|
+
// PortalScreen's live region, mounted before the text, says it
|
|
337
|
+
// once; the visible alert stays quiet (05-accessibility).
|
|
338
|
+
/* @__PURE__ */ t(Q, { variant: "success", announce: "off", children: /* @__PURE__ */ t(Q.Description, { children: e("patientPortal.details.saved") }) })
|
|
339
|
+
) : null,
|
|
340
|
+
/* @__PURE__ */ d("section", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
341
|
+
/* @__PURE__ */ t(
|
|
342
|
+
Ct,
|
|
343
|
+
{
|
|
344
|
+
readOnly: u,
|
|
345
|
+
locale: R,
|
|
346
|
+
privacy: g
|
|
347
|
+
}
|
|
348
|
+
),
|
|
349
|
+
/* @__PURE__ */ t(gt, { children: e("patientPortal.details.readOnly") })
|
|
350
|
+
] }),
|
|
351
|
+
b ? g ? /* @__PURE__ */ d("div", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]", children: [
|
|
352
|
+
/* @__PURE__ */ t(pt, { block: "details-form" }),
|
|
353
|
+
/* @__PURE__ */ t("div", { children: /* @__PURE__ */ t(
|
|
354
|
+
I,
|
|
355
|
+
{
|
|
356
|
+
type: "button",
|
|
357
|
+
intent: "ghost",
|
|
358
|
+
className: "ds:min-h-[var(--min-target-size)]",
|
|
359
|
+
"data-action": "discard-details",
|
|
360
|
+
onClick: () => {
|
|
361
|
+
D(n), $(!1);
|
|
362
|
+
},
|
|
363
|
+
children: e("patientPortal.details.discard")
|
|
364
|
+
}
|
|
365
|
+
) })
|
|
366
|
+
] }) : /* @__PURE__ */ d(
|
|
367
|
+
"form",
|
|
368
|
+
{
|
|
369
|
+
ref: q,
|
|
370
|
+
noValidate: !0,
|
|
371
|
+
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-md)]",
|
|
372
|
+
onSubmit: (l) => {
|
|
373
|
+
l.preventDefault(), k || N(H);
|
|
374
|
+
},
|
|
375
|
+
children: [
|
|
376
|
+
M ? /* @__PURE__ */ t(
|
|
377
|
+
rt,
|
|
378
|
+
{
|
|
379
|
+
ref: J,
|
|
380
|
+
headingLevel: F === 1 ? 2 : 3,
|
|
381
|
+
errors: B.map((l) => ({
|
|
382
|
+
field: l,
|
|
383
|
+
label: nt[l],
|
|
384
|
+
message: (r == null ? void 0 : r[l]) ?? "",
|
|
385
|
+
targetId: Z(U, l)
|
|
386
|
+
}))
|
|
387
|
+
}
|
|
388
|
+
) : null,
|
|
389
|
+
/* @__PURE__ */ t(
|
|
390
|
+
Nt,
|
|
391
|
+
{
|
|
392
|
+
values: H,
|
|
393
|
+
onChange: D,
|
|
394
|
+
fieldErrors: r,
|
|
395
|
+
idPrefix: U,
|
|
396
|
+
announceErrors: !1,
|
|
397
|
+
disabled: k
|
|
398
|
+
}
|
|
399
|
+
),
|
|
400
|
+
/* @__PURE__ */ d("div", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-sm)]", children: [
|
|
401
|
+
/* @__PURE__ */ t(
|
|
402
|
+
I,
|
|
403
|
+
{
|
|
404
|
+
type: "submit",
|
|
405
|
+
intent: "primary",
|
|
406
|
+
className: "ds:min-h-[var(--min-target-size)]",
|
|
407
|
+
loading: k,
|
|
408
|
+
"data-action": "save-details",
|
|
409
|
+
children: e(k ? "patientPortal.details.saving" : "patientPortal.details.save")
|
|
410
|
+
}
|
|
411
|
+
),
|
|
412
|
+
/* @__PURE__ */ t(
|
|
413
|
+
I,
|
|
414
|
+
{
|
|
415
|
+
type: "button",
|
|
416
|
+
intent: "ghost",
|
|
417
|
+
className: "ds:min-h-[var(--min-target-size)]",
|
|
418
|
+
disabled: k,
|
|
419
|
+
"data-action": "discard-details",
|
|
420
|
+
onClick: () => {
|
|
421
|
+
D(n), $(!1);
|
|
422
|
+
},
|
|
423
|
+
children: e("patientPortal.details.discard")
|
|
424
|
+
}
|
|
425
|
+
)
|
|
426
|
+
] })
|
|
427
|
+
]
|
|
428
|
+
}
|
|
429
|
+
) : /* @__PURE__ */ d(T, { children: [
|
|
430
|
+
/* @__PURE__ */ t(P, { layout: "responsive", divider: "between", children: lt.map(([l, f, w]) => /* @__PURE__ */ d(P.Row, { children: [
|
|
431
|
+
/* @__PURE__ */ t(P.Term, { children: l }),
|
|
432
|
+
/* @__PURE__ */ t(P.Detail, { children: f ? /* @__PURE__ */ t(
|
|
433
|
+
"bdi",
|
|
434
|
+
{
|
|
435
|
+
dir: w && !g ? "ltr" : void 0,
|
|
436
|
+
className: "ds:break-words",
|
|
437
|
+
children: f
|
|
438
|
+
}
|
|
439
|
+
) : /* @__PURE__ */ d(T, { children: [
|
|
440
|
+
/* @__PURE__ */ t("span", { "aria-hidden": "true", children: "–" }),
|
|
441
|
+
/* @__PURE__ */ t(mt, { children: e("patientPortal.details.notGiven") })
|
|
442
|
+
] }) })
|
|
443
|
+
] }, l)) }),
|
|
444
|
+
g ? null : /* @__PURE__ */ t(
|
|
445
|
+
I,
|
|
446
|
+
{
|
|
447
|
+
ref: G,
|
|
448
|
+
type: "button",
|
|
449
|
+
intent: "secondary",
|
|
450
|
+
className: "ds:min-h-[var(--min-target-size)] ds:self-start",
|
|
451
|
+
"data-action": "edit-details",
|
|
452
|
+
onClick: () => {
|
|
453
|
+
D(n), $(!0);
|
|
454
|
+
},
|
|
455
|
+
children: e("patientPortal.details.edit")
|
|
456
|
+
}
|
|
457
|
+
)
|
|
458
|
+
] })
|
|
459
|
+
] }),
|
|
460
|
+
/* @__PURE__ */ t(
|
|
461
|
+
Pt,
|
|
462
|
+
{
|
|
463
|
+
config: s,
|
|
464
|
+
privacy: g,
|
|
465
|
+
defaultSubject: e("patientPortal.details.stepUp.saveSubject")
|
|
466
|
+
}
|
|
467
|
+
)
|
|
468
|
+
]
|
|
469
|
+
}
|
|
470
|
+
);
|
|
471
|
+
}
|
|
472
|
+
export {
|
|
473
|
+
Rt as P,
|
|
474
|
+
Nt as a,
|
|
475
|
+
Ct as b,
|
|
476
|
+
Z as p
|
|
477
|
+
};
|
|
478
|
+
//# sourceMappingURL=portal-details-CTEsm705.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portal-details-CTEsm705.js","sources":["../../src/patterns/patient-portal/portal-details.tsx"],"sourcesContent":["import { useEffect, useId, useRef, type ReactNode } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert } from '../../components/alert';\nimport { Button } from '../../components/button';\nimport { Checkbox } from '../../components/checkbox';\nimport { CountrySelect } from '../../components/country-select';\nimport { DescriptionList } from '../../components/description-list';\nimport { ErrorSummary } from '../../components/error-summary';\nimport { EmailInput } from '../../components/email-input';\nimport { FormField } from '../../components/form-field';\nimport { TextInput } from '../../components/text-input';\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 { formatPortalCalendarDate, usePortalLocale } from './portal-format';\nimport {\n PortalLoading,\n PortalMessage,\n PortalNote,\n PortalScreen,\n PortalStepUp,\n} from './portal-parts';\nimport type {\n PortalDetailsFieldErrors,\n PortalDetailsReadOnly,\n PortalDetailsValues,\n PortalHeadingLevel,\n PortalListStatus,\n StepUpConfig,\n} from './portal-types';\n\n/* -------------------------------------------------------------------- */\n/* The details form module (R5: check-in imports it, never copies it) */\n/* -------------------------------------------------------------------- */\n\n/** The id of one control of the form, for an `ErrorSummary` link. */\nexport const portalDetailsFieldId = (\n prefix: string,\n key: keyof PortalDetailsValues,\n): string => `${prefix}-${key}`;\n\n/** A node to place beside a field's label, for each field. */\nexport type PortalDetailsFieldAddon = Partial<\n Record<keyof PortalDetailsValues, ReactNode>\n>;\n\nexport interface PortalDetailsFieldsProps {\n /** The values on screen. Controlled: the form keeps none of its own. */\n values: PortalDetailsValues;\n /** Called with the whole next set of values on every change. */\n onChange: (next: PortalDetailsValues) => void;\n /** Host error texts, one per field. The server decides; nothing is checked here. */\n fieldErrors?: PortalDetailsFieldErrors;\n /** Disables every field, for example while saving. */\n disabled?: boolean;\n /**\n * Prefix of the control ids (`{idPrefix}-firstName` and so on), so an\n * `ErrorSummary` can link to a field. Default: a generated one.\n */\n idPrefix?: string;\n /**\n * Whether each field reads its own error out as it appears. Default true.\n * Pass false while an `ErrorSummary` lists them.\n */\n announceErrors?: boolean;\n /**\n * A node beside a field's label, for example a \"From your record\" tag in\n * check-in. Absent fields show nothing.\n */\n fieldAddon?: PortalDetailsFieldAddon;\n /**\n * Whether the marketing consent box shows. Default true. Check-in passes\n * false: no source asks for it there.\n */\n showMarketing?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The editable personal fields: first and last name, address, country,\n * contact email (not the login email), other phone and marketing consent.\n * One field renderer for the portal's My details and check-in's personal\n * data step (CHECKIN-08, D79). It is controlled and holds no flow logic.\n *\n * It has no `privacy` prop: the values sit in the inputs, so a host in\n * privacy mode must not render it. `PortalDetails` withholds it and shows a\n * `PrivacyHiddenLine` instead. A host error that repeats a typed value is\n * shown to the person, so keep such text out of `fieldErrors` too.\n */\nexport function PortalDetailsFields({\n values,\n onChange,\n fieldErrors,\n disabled = false,\n idPrefix,\n announceErrors = true,\n fieldAddon,\n showMarketing = true,\n className,\n}: PortalDetailsFieldsProps) {\n const { t } = useTranslation('ui');\n const generated = useId();\n const fieldId = (key: keyof PortalDetailsValues) =>\n portalDetailsFieldId(idPrefix ?? generated, key);\n const set = <K extends keyof PortalDetailsValues>(\n key: K,\n value: PortalDetailsValues[K],\n ) => onChange({ ...values, [key]: value });\n return (\n <div\n data-component=\"portal-details-fields\"\n className={['ds:flex ds:flex-col ds:gap-[var(--spacing-md)]', className]\n .filter(Boolean)\n .join(' ')}\n >\n <FormField\n label={t('patientPortal.details.firstName')}\n labelEnd={fieldAddon?.firstName}\n error={fieldErrors?.firstName}\n announceError={announceErrors}\n >\n <TextInput\n value={values.firstName}\n onChange={(event) => set('firstName', event.target.value)}\n autoComplete=\"given-name\"\n disabled={disabled}\n id={fieldId('firstName')}\n dir=\"auto\"\n data-field=\"firstName\"\n />\n </FormField>\n <FormField\n label={t('patientPortal.details.lastName')}\n labelEnd={fieldAddon?.lastName}\n error={fieldErrors?.lastName}\n announceError={announceErrors}\n >\n <TextInput\n value={values.lastName}\n onChange={(event) => set('lastName', event.target.value)}\n autoComplete=\"family-name\"\n disabled={disabled}\n id={fieldId('lastName')}\n dir=\"auto\"\n data-field=\"lastName\"\n />\n </FormField>\n <FormField\n label={t('patientPortal.details.address')}\n labelEnd={fieldAddon?.address}\n error={fieldErrors?.address}\n announceError={announceErrors}\n >\n <TextInput\n value={values.address}\n onChange={(event) => set('address', event.target.value)}\n autoComplete=\"street-address\"\n disabled={disabled}\n id={fieldId('address')}\n dir=\"auto\"\n data-field=\"address\"\n />\n </FormField>\n <FormField\n label={t('patientPortal.details.country')}\n labelEnd={fieldAddon?.country}\n error={fieldErrors?.country}\n announceError={announceErrors}\n >\n <CountrySelect\n value={values.country}\n onValueChange={(code) => set('country', code)}\n placeholder={t('patientPortal.details.countryPlaceholder')}\n aria-label={t('patientPortal.details.country')}\n id={fieldId('country')}\n disabled={disabled}\n tone={fieldErrors?.country ? 'error' : 'default'}\n />\n </FormField>\n <FormField\n label={t('patientPortal.details.contactEmail')}\n labelEnd={fieldAddon?.contactEmail}\n description={t('patientPortal.details.contactEmailNote')}\n error={fieldErrors?.contactEmail}\n announceError={announceErrors}\n >\n <EmailInput\n value={values.contactEmail}\n onChange={(event) => set('contactEmail', event.target.value)}\n autoComplete=\"email\"\n disableBuiltInValidation\n errorMessage={null}\n disabled={disabled}\n id={fieldId('contactEmail')}\n dir=\"ltr\"\n data-field=\"contactEmail\"\n />\n </FormField>\n <FormField\n label={t('patientPortal.details.phone')}\n labelEnd={fieldAddon?.phone}\n error={fieldErrors?.phone}\n announceError={announceErrors}\n >\n <TextInput\n value={values.phone}\n onChange={(event) => set('phone', event.target.value)}\n type=\"tel\"\n autoComplete=\"tel\"\n disabled={disabled}\n id={fieldId('phone')}\n dir=\"ltr\"\n data-field=\"phone\"\n />\n </FormField>\n {showMarketing ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <Checkbox\n id={fieldId('marketing')}\n label={t('patientPortal.details.marketingConsent')}\n checked={values.marketing === 1}\n onCheckedChange={(checked) =>\n set('marketing', checked === true ? 1 : 0)\n }\n aria-invalid={fieldErrors?.marketing ? true : undefined}\n aria-describedby={\n fieldErrors?.marketing\n ? `${fieldId('marketing')}-error`\n : undefined\n }\n disabled={disabled}\n />\n {fieldErrors?.marketing ? (\n <p\n id={`${fieldId('marketing')}-error`}\n role={announceErrors ? 'alert' : undefined}\n className=\"type-meta ds:m-0 ds:text-[color:var(--destructive)]\"\n >\n {fieldErrors.marketing}\n </p>\n ) : null}\n </div>\n ) : null}\n </div>\n );\n}\n\nexport interface PortalDetailsReadOnlyListProps {\n /** The facts the patient cannot change here. */\n readOnly: PortalDetailsReadOnly;\n /**\n * BCP 47 locale for the birth date, for example `\"it-IT\"`. Default: the UI\n * language.\n */\n locale?: string;\n /** A node shown after each value, for example \"From your record\" in check-in. */\n recordMark?: ReactNode;\n /** Privacy mode: every value is masked. */\n privacy?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The read-only rows: date of birth, codice fiscale and, when the host gives\n * it, the masked mobile. They link records, so only the practice changes\n * them (PORTAL-05). Shared with check-in (R5).\n */\nexport function PortalDetailsReadOnlyList({\n readOnly,\n locale,\n recordMark,\n privacy = false,\n className,\n}: PortalDetailsReadOnlyListProps) {\n const { t } = useTranslation('ui');\n const formatLocale = usePortalLocale(locale);\n const fiscalCodeLabel = t('patientPortal.details.fiscalCode');\n const rows: Array<[string, ReactNode]> = [\n [\n t('patientPortal.details.birthDate'),\n privacy\n ? privacyMask()\n : formatPortalCalendarDate(readOnly.birthDateIso, formatLocale),\n ],\n [\n t('patientPortal.details.fiscalCode'),\n privacy ? privacyMask() : readOnly.fiscalCode,\n ],\n ];\n if (readOnly.maskedMobile) {\n rows.push([\n t('patientPortal.details.mobile'),\n privacy ? (\n privacyMask()\n ) : (\n <bdi key=\"mobile\" dir=\"ltr\">\n {readOnly.maskedMobile}\n </bdi>\n ),\n ]);\n }\n return (\n <div data-component=\"portal-details-read-only-list\" className={className}>\n <DescriptionList layout=\"responsive\" divider=\"between\">\n {rows.map(([term, detail]) => (\n <DescriptionList.Row key={term}>\n <DescriptionList.Term>{term}</DescriptionList.Term>\n <DescriptionList.Detail>\n <span className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {term === fiscalCodeLabel ? (\n <bdi dir=\"ltr\">{detail}</bdi>\n ) : (\n <bdi>{detail}</bdi>\n )}\n {recordMark}\n </span>\n </DescriptionList.Detail>\n </DescriptionList.Row>\n ))}\n </DescriptionList>\n </div>\n );\n}\n\n/* -------------------------------------------------------------------- */\n/* My details */\n/* -------------------------------------------------------------------- */\n\nfunction useCountryName(locale: string) {\n return (code: 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\nexport interface PortalDetailsProps {\n /** The details on record: what the view shows and what Discard returns to. */\n values: PortalDetailsValues;\n /** The facts shown read-only above the fields. */\n readOnly: PortalDetailsReadOnly;\n /**\n * The edited copy, for controlled use. Pair with `onDraftChange`. Discarding\n * or the session ending drops it: the screen keeps it nowhere else.\n */\n draft?: PortalDetailsValues;\n /** Initial draft when uncontrolled. Default: `values`. */\n defaultDraft?: PortalDetailsValues;\n /** Called with the whole next draft on every change, and with `values` on Edit and Discard. */\n onDraftChange?: (draft: PortalDetailsValues) => void;\n /** Whether the form shows instead of the view. Controlled; pair with `onEditingChange`. */\n editing?: boolean;\n /** Initial `editing` when uncontrolled. Default false. */\n defaultEditing?: boolean;\n /**\n * Called with true by Edit and with false by Discard. When a save goes\n * through, the host sets `editing` to false itself: the screen never\n * leaves the form on its own.\n */\n onEditingChange?: (editing: boolean) => void;\n /** Host error texts, one per field. The server decides; nothing is checked here. */\n fieldErrors?: PortalDetailsFieldErrors;\n /**\n * The save in flight or its outcome, reported by the host. `saving` shows a\n * spinner on Save and disables the fields; `saved` shows \"Saved.\" A save\n * the server refuses comes back as `fieldErrors`. A failed-save state and\n * its wording are to confirm and are not built.\n */\n saveState?: 'idle' | 'saving' | 'saved';\n /**\n * Called with the draft by Save. Never blocked by a rule of the kit: the\n * host checks it, may ask for an SMS check first (it sets `stepUp`), and\n * answers through `fieldErrors` and `saveState`.\n */\n onSave: (values: PortalDetailsValues) => void;\n /** The state of the read. Default `ready`. */\n status?: PortalListStatus;\n /** Called by \"Try again\" in the error state. The button shows only when given. */\n onRetry?: () => void;\n /**\n * The SMS check before a save goes through (D95). The dialog is open while\n * this is not null. The host binds the step and decides the code.\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 /**\n * BCP 47 locale for the birth date and the country name, for example\n * `\"it-IT\"`. Default: the UI language.\n */\n locale?: string;\n /** Heading level of the title. Default 1; use 2 inside a page with an h1. */\n headingLevel?: PortalHeadingLevel;\n /** Move focus to the heading when the screen shows. Default false. */\n focusOnMount?: boolean;\n /**\n * Privacy mode: every personal value is masked, and the form is withheld\n * (there is nothing to edit while the values are hidden). Marketing\n * consent stays.\n */\n privacy?: boolean;\n /** Extra classes for the root. */\n className?: string;\n}\n\n/**\n * The portal's My details (HTP-6923, PORTAL-05): the codice fiscale, date of\n * birth and masked mobile read-only, and the name, contact, address and\n * marketing consent to edit. Edit, Save and Discard are the person's; the\n * host saves. No custom fields (no data shape, held).\n */\nexport function PortalDetails({\n values,\n readOnly,\n draft,\n defaultDraft,\n onDraftChange,\n editing,\n defaultEditing = false,\n onEditingChange,\n fieldErrors,\n saveState = 'idle',\n onSave,\n status = 'ready',\n onRetry,\n stepUp = null,\n locale,\n headingLevel = 1,\n focusOnMount = false,\n privacy = false,\n className,\n}: PortalDetailsProps) {\n const { t } = useTranslation('ui');\n const formatLocale = usePortalLocale(locale);\n const countryName = useCountryName(formatLocale);\n const [draftValue, setDraft] = useControllableState<PortalDetailsValues>({\n value: draft,\n defaultValue: defaultDraft ?? values,\n onChange: onDraftChange,\n });\n const [editingValue, setEditing] = useControllableState<boolean>({\n value: editing,\n defaultValue: defaultEditing,\n onChange: onEditingChange,\n });\n const current = draftValue ?? values;\n const isEditing = editingValue === true;\n const saving = saveState === 'saving';\n\n // Edit and Discard swap the view and the form: focus follows, never on mount.\n const form = useRef<HTMLFormElement>(null);\n const editButton = useRef<HTMLButtonElement>(null);\n const lastEditing = useRef(isEditing);\n useEffect(() => {\n if (lastEditing.current === isEditing) return;\n lastEditing.current = isEditing;\n if (stepUp) return;\n if (isEditing) form.current?.querySelector('input')?.focus();\n else editButton.current?.focus();\n }, [isEditing, stepUp]);\n\n // Host errors after a refused save: one summary takes focus, and the\n // fields stay quiet so a long form does not fire an alert for each.\n const uid = useId();\n const summary = useRef<HTMLDivElement>(null);\n const errorOrder: Array<keyof PortalDetailsValues> = [\n 'firstName',\n 'lastName',\n 'address',\n 'country',\n 'contactEmail',\n 'phone',\n 'marketing',\n ];\n const errorLabels: Record<keyof PortalDetailsValues, 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 marketing: t('patientPortal.details.marketing'),\n };\n const listed = errorOrder.filter((key) => fieldErrors?.[key]);\n const errorKey = listed\n .map((key) => `${key}:${fieldErrors?.[key]}`)\n .join('|');\n const showSummary = isEditing && !privacy && 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 // Email addresses and phone numbers read left to right in every language\n // (05-accessibility); names and the address keep their own direction.\n const rows: Array<[string, string, boolean]> = [\n [t('patientPortal.details.firstName'), hidden(values.firstName), false],\n [t('patientPortal.details.lastName'), hidden(values.lastName), false],\n [t('patientPortal.details.address'), hidden(values.address), false],\n [\n t('patientPortal.details.country'),\n hidden(countryName(values.country)),\n false,\n ],\n [\n t('patientPortal.details.contactEmail'),\n hidden(values.contactEmail),\n true,\n ],\n [t('patientPortal.details.phone'), hidden(values.phone), true],\n [\n t('patientPortal.details.marketing'),\n values.marketing === 1\n ? t('patientPortal.details.on')\n : t('patientPortal.details.off'),\n false,\n ],\n ];\n\n return (\n <PortalScreen\n component=\"portal-details\"\n title={t('patientPortal.details.title')}\n description={t('patientPortal.details.intro')}\n headingLevel={headingLevel}\n focusOnMount={focusOnMount}\n privacy={privacy}\n className={className}\n status={status}\n loadingLabel={t('patientPortal.details.loading')}\n errorLabel={t('patientPortal.details.error.title')}\n message={\n saveState === 'saved' ? t('patientPortal.details.saved') : undefined\n }\n >\n {status === 'loading' ? (\n <PortalLoading />\n ) : status === 'error' ? (\n <PortalMessage\n kind=\"error\"\n title={t('patientPortal.details.error.title')}\n body={t('patientPortal.home.error.body')}\n headingLevel={headingLevel}\n onRetry={onRetry}\n />\n ) : (\n <>\n {saveState === 'saved' ? (\n // PortalScreen's live region, mounted before the text, says it\n // once; the visible alert stays quiet (05-accessibility).\n <Alert variant=\"success\" announce=\"off\">\n <Alert.Description>\n {t('patientPortal.details.saved')}\n </Alert.Description>\n </Alert>\n ) : null}\n {/* Fixed facts first: they link records (PORTAL-05). */}\n <section className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <PortalDetailsReadOnlyList\n readOnly={readOnly}\n locale={formatLocale}\n privacy={privacy}\n />\n <PortalNote>{t('patientPortal.details.readOnly')}</PortalNote>\n </section>\n {isEditing ? (\n privacy ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\">\n <PrivacyHiddenLine block=\"details-form\" />\n <div>\n <Button\n type=\"button\"\n intent=\"ghost\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n data-action=\"discard-details\"\n onClick={() => {\n setDraft(values);\n setEditing(false);\n }}\n >\n {t('patientPortal.details.discard')}\n </Button>\n </div>\n </div>\n ) : (\n <form\n ref={form}\n noValidate\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n onSubmit={(event) => {\n event.preventDefault();\n if (!saving) onSave(current);\n }}\n >\n {showSummary ? (\n <ErrorSummary\n ref={summary}\n headingLevel={headingLevel === 1 ? 2 : 3}\n errors={listed.map((key) => ({\n field: key,\n label: errorLabels[key],\n message: fieldErrors?.[key] ?? '',\n targetId: portalDetailsFieldId(uid, key),\n }))}\n />\n ) : null}\n <PortalDetailsFields\n values={current}\n onChange={setDraft}\n fieldErrors={fieldErrors}\n idPrefix={uid}\n announceErrors={false}\n disabled={saving}\n />\n <div className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-sm)]\">\n <Button\n type=\"submit\"\n intent=\"primary\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n loading={saving}\n data-action=\"save-details\"\n >\n {saving\n ? t('patientPortal.details.saving')\n : t('patientPortal.details.save')}\n </Button>\n <Button\n type=\"button\"\n intent=\"ghost\"\n className=\"ds:min-h-[var(--min-target-size)]\"\n disabled={saving}\n data-action=\"discard-details\"\n onClick={() => {\n setDraft(values);\n setEditing(false);\n }}\n >\n {t('patientPortal.details.discard')}\n </Button>\n </div>\n </form>\n )\n ) : (\n <>\n <DescriptionList layout=\"responsive\" divider=\"between\">\n {rows.map(([term, detail, ltr]) => (\n <DescriptionList.Row key={term}>\n <DescriptionList.Term>{term}</DescriptionList.Term>\n <DescriptionList.Detail>\n {detail ? (\n <bdi\n dir={ltr && !privacy ? 'ltr' : undefined}\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 {privacy ? null : (\n <Button\n ref={editButton}\n type=\"button\"\n intent=\"secondary\"\n className=\"ds:min-h-[var(--min-target-size)] ds:self-start\"\n data-action=\"edit-details\"\n onClick={() => {\n setDraft(values);\n setEditing(true);\n }}\n >\n {t('patientPortal.details.edit')}\n </Button>\n )}\n </>\n )}\n </>\n )}\n\n <PortalStepUp\n config={stepUp}\n privacy={privacy}\n defaultSubject={t('patientPortal.details.stepUp.saveSubject')}\n />\n </PortalScreen>\n );\n}\n"],"names":["portalDetailsFieldId","prefix","key","PortalDetailsFields","values","onChange","fieldErrors","disabled","idPrefix","announceErrors","fieldAddon","showMarketing","className","t","useTranslation","generated","useId","fieldId","set","value","jsxs","jsx","FormField","TextInput","event","CountrySelect","code","EmailInput","Checkbox","checked","PortalDetailsReadOnlyList","readOnly","locale","recordMark","privacy","formatLocale","usePortalLocale","fiscalCodeLabel","rows","privacyMask","formatPortalCalendarDate","DescriptionList","term","detail","useCountryName","PortalDetails","draft","defaultDraft","onDraftChange","editing","defaultEditing","onEditingChange","saveState","onSave","status","onRetry","stepUp","headingLevel","focusOnMount","countryName","draftValue","setDraft","useControllableState","editingValue","setEditing","current","isEditing","saving","form","useRef","editButton","lastEditing","useEffect","_b","_a","_c","uid","summary","errorOrder","errorLabels","listed","errorKey","showSummary","hidden","PortalScreen","PortalLoading","PortalMessage","Fragment","Alert","PortalNote","PrivacyHiddenLine","Button","ErrorSummary","ltr","VisuallyHidden","PortalStepUp"],"mappings":"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"}
|