@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
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"finished-terminal-FR8uc_Ws.js","sources":["../../node_modules/chromatic/isChromatic.mjs","../../src/components/finished-terminal/finished-terminal.tsx"],"sourcesContent":["export default function isChromatic(windowArgument) {\n const windowToCheck = windowArgument || (globalThis.window !== undefined && globalThis);\n return !!(\n windowToCheck &&\n (/Chromatic/.test(windowToCheck.navigator.userAgent) ||\n /chromatic=true/.test(windowToCheck.location.href))\n );\n}\n","/* ------------------------------------------------------------------ */\n/* FinishedTerminal — the post-completion success screen. */\n/* */\n/* The \"you're done\" terminal a public flow (e.g. sign.alfadocs.com) */\n/* lands on after the signer finishes. A success tick + a consumer- */\n/* supplied title/body, plus an i18n'd auto-close countdown next-step: */\n/* */\n/* - `redirectUrl` set → on elapse / \"Close now\", navigate there. */\n/* - no `redirectUrl` → best-effort `window.close()` (blocked for */\n/* tabs the signer opened themselves), falling back to a redirect to */\n/* `brandUrl` (the public site). */\n/* */\n/* The browser navigation is the component's DEFAULT; pass `onClose` to */\n/* take it over (analytics, SPA routing, a no-op in stories). The */\n/* countdown freezes under Chromatic for deterministic snapshots. */\n/* ------------------------------------------------------------------ */\n\nimport isChromatic from 'chromatic/isChromatic';\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useRef,\n useState,\n type HTMLAttributes,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CircleCheck } from 'lucide-react';\nimport { Card } from '../card';\nimport { Button } from '../button';\nimport { useCountdown } from '../../hooks/use-countdown';\n\n/** The public brand site the terminal falls back to when there's no\n * `redirectUrl` and `window.close()` is blocked. */\nconst DEFAULT_BRAND_URL = 'https://www.alfadocs.com';\n\n/**\n * Gate for the URLs the terminal will navigate to. Allows only same-origin\n * relative paths (`/…`) and explicit `http(s)` absolute URLs; rejects\n * `javascript:` / `data:` / `vbscript:` and any other scheme.\n *\n * This terminal lives on public signing pages where `redirectUrl` may flow\n * from a URL parameter, so a hostile `javascript:…` value must never reach\n * `window.location.assign` (it would execute in the page). Exported for unit\n * testing — it is NOT part of the public component API (`index.ts` does not\n * re-export it).\n */\nexport function isNavigableUrl(url: string): boolean {\n if (typeof url !== 'string' || url.length === 0) return false;\n // Protocol-relative `//host` is a classic open-redirect bypass (it resolves\n // to a cross-origin http(s) URL) — reject it; a caller wanting a cross-origin\n // target must pass an explicit `https://` URL.\n if (url.startsWith('//')) return false;\n // Same-origin relative path.\n if (url.startsWith('/')) return true;\n try {\n const { protocol } = new URL(url, window.location.origin);\n return protocol === 'https:' || protocol === 'http:';\n } catch {\n return false;\n }\n}\n\nexport interface FinishedTerminalProps extends Omit<\n HTMLAttributes<HTMLDivElement>,\n 'title'\n> {\n /** Completion headline — consumer-provided, already translated. */\n title: string;\n /** Completion sub-message — consumer-provided, already translated. */\n body: string;\n /**\n * Auto-close countdown, in seconds. Default `10`. Set `0` to disable the\n * countdown entirely (a static success screen with no next-step).\n */\n autoCloseSeconds?: number;\n /**\n * Where to send the signer when the countdown elapses / \"Close now\" is\n * pressed. When omitted, the terminal does a best-effort `window.close()`\n * and falls back to `brandUrl`.\n *\n * @security Navigated to via `window.location.assign`. Only same-origin\n * relative paths and `http(s)` absolute URLs are honoured — `javascript:` /\n * `data:` values are dropped. Pass a value from trusted backend config.\n */\n redirectUrl?: string;\n /**\n * Brand-site fallback used when there is no `redirectUrl` and the\n * best-effort `window.close()` is blocked. Default `https://www.alfadocs.com`.\n *\n * @security Same navigation gate as `redirectUrl`.\n */\n brandUrl?: string;\n /**\n * Override the default close/redirect behaviour (e.g. SPA routing, analytics,\n * or a no-op in stories). When provided, the terminal does NO browser\n * navigation of its own — it just calls this.\n */\n onClose?: () => void;\n /** Override the countdown line (default `ui.finishedTerminal.autoClose`). */\n countdownLabel?: (seconds: number) => string;\n /** Override the \"Close now\" label (default `ui.finishedTerminal.closeNow`). */\n closeNowLabel?: string;\n /** Override the post-close line (default `ui.finishedTerminal.redirecting`). */\n redirectingLabel?: string;\n}\n\nexport const FinishedTerminal = forwardRef<\n HTMLDivElement,\n FinishedTerminalProps\n>(\n (\n {\n title,\n body,\n autoCloseSeconds = 10,\n redirectUrl,\n brandUrl = DEFAULT_BRAND_URL,\n onClose,\n countdownLabel,\n closeNowLabel,\n redirectingLabel,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const [closing, setClosing] = useState(false);\n const closedRef = useRef(false);\n const headingRef = useRef<HTMLHeadingElement>(null);\n\n // Move focus to the completion heading on mount so assistive tech announces\n // the terminal on arrival. This surface is reached by a flow/page\n // transition, which otherwise leaves focus on <body> with no spoken\n // context. The heading is a non-interactive focus receiver (tabIndex={-1},\n // no visible ring) — the SPA \"route changed\" announcement pattern.\n useEffect(() => {\n // preventScroll: focus is for the AT announcement, not for bringing the\n // terminal into view — the flow transition already did that. Without it\n // a docs page embedding this story scroll-jumps to the canvas on load.\n headingRef.current?.focus({ preventScroll: true });\n }, []);\n\n const handleClose = useCallback(() => {\n if (closedRef.current) return;\n closedRef.current = true;\n setClosing(true);\n if (onClose) {\n onClose();\n return;\n }\n // Default: navigate to the configured return URL, or best-effort close\n // the tab and fall back to the brand site (window.close() is blocked for\n // tabs the user opened themselves, so the redirect is the real fallback).\n // Both URLs are gated against javascript:/data: schemes before navigating.\n if (redirectUrl) {\n if (isNavigableUrl(redirectUrl)) window.location.assign(redirectUrl);\n } else {\n window.close();\n if (isNavigableUrl(brandUrl)) window.location.assign(brandUrl);\n }\n }, [onClose, redirectUrl, brandUrl]);\n\n // Freeze the countdown under Chromatic so the snapshot is deterministic.\n const { remaining } = useCountdown(autoCloseSeconds, {\n autoStart: autoCloseSeconds > 0 && !isChromatic(),\n onElapsed: handleClose,\n });\n const showCountdown = autoCloseSeconds > 0;\n\n const countdownText = countdownLabel\n ? countdownLabel(remaining)\n : t('finishedTerminal.autoClose', { seconds: remaining });\n\n return (\n <div\n ref={ref}\n data-component=\"finished-terminal\"\n className={[\n 'ds:flex ds:flex-1 ds:flex-col ds:items-center ds:overflow-y-auto ds:p-[var(--spacing-lg)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <Card\n variant=\"elevated\"\n className=\"ds:my-auto ds:min-w-0 ds:[inline-size:100%] ds:max-w-[28rem] ds:text-center\"\n >\n <Card.Body>\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-md)]\">\n <CircleCheck\n aria-hidden=\"true\"\n className=\"ds:size-12 ds:text-[var(--success)]\"\n />\n <h1\n ref={headingRef}\n tabIndex={-1}\n className=\"type-title-card ds:m-0 ds:outline-none\"\n >\n {title}\n </h1>\n <p className=\"type-body ds:m-0 ds:text-[var(--muted-foreground)]\">\n {body}\n </p>\n {showCountdown && closing ? (\n // Mounts once when closing begins → role=\"status\" announces the\n // hand-off exactly once (no churn).\n <p\n role=\"status\"\n className=\"type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]\"\n >\n {redirectingLabel ?? t('finishedTerminal.redirecting')}\n </p>\n ) : showCountdown ? (\n <div className=\"ds:flex ds:flex-col ds:items-center ds:gap-[var(--spacing-sm)]\">\n {/* The ticking count is visible-only — NO live region. A\n polite region re-rewritten every second would announce\n \"…10 sec…9 sec…8 sec…\", which is hostile to SR users. The\n completion itself is announced via the focused heading; the\n auto-close is a sighted convenience. */}\n <p className=\"type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]\">\n {countdownText}\n </p>\n <Button\n intent=\"secondary\"\n size=\"lg\"\n type=\"button\"\n onClick={handleClose}\n >\n {closeNowLabel ?? t('finishedTerminal.closeNow')}\n </Button>\n </div>\n ) : null}\n </div>\n </Card.Body>\n </Card>\n </div>\n );\n },\n);\n\nFinishedTerminal.displayName = 'FinishedTerminal';\n"],"names":["isChromatic","windowArgument","windowToCheck","DEFAULT_BRAND_URL","isNavigableUrl","url","protocol","FinishedTerminal","forwardRef","title","body","autoCloseSeconds","redirectUrl","brandUrl","onClose","countdownLabel","closeNowLabel","redirectingLabel","className","rest","ref","t","useTranslation","closing","setClosing","useState","closedRef","useRef","headingRef","useEffect","_a","handleClose","useCallback","remaining","useCountdown","showCountdown","countdownText","jsx","Card","jsxs","CircleCheck","Button"],"mappings":"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","x_google_ignoreList":[0]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"is-safe-url-DkETxeHz.js","sources":["../../src/components/_shared/is-safe-url.ts"],"sourcesContent":["/**\n * Shared URL allow-list for the card family (AgendaCard, MessageCard,\n * NotificationCard, TaskCard, …). Lifted from the per-card `isSafe*Url`\n * duplicates so every entity card guards deep links the same way.\n *\n * Only http(s) absolute URLs, single-leading-slash same-origin paths, and\n * in-page hash anchors pass. Protocol-relative (`//host`), `javascript:`,\n * `data:`, and `mailto:` URLs are rejected — an unsafe URL makes the card\n * fall back to a `<button>` so it stays interactive without becoming a\n * phishing vector.\n */\nexport function isSafeEntityUrl(url: string): boolean {\n return /^(https?:\\/\\/(?!\\/)|\\/(?!\\/)|#)/.test(url);\n}\n"],"names":["isSafeEntityUrl","url"],"mappings":"AAWO,SAASA,EAAgBC,GAAsB;AACpD,SAAO,kCAAkC,KAAKA,CAAG;AACnD;"}
|
|
@@ -1,301 +0,0 @@
|
|
|
1
|
-
import { jsxs as ae, jsx as I } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as se, useId as ne, useRef as R, useState as oe, useEffect as ie, useCallback as S, useMemo as ce, useImperativeHandle as le } from "react";
|
|
3
|
-
import { c as j } from "./index-D2ZczOXr.js";
|
|
4
|
-
import { useTranslation as ue } from "react-i18next";
|
|
5
|
-
import { u as pe } from "./use-controllable-state-BiY4xTzM.js";
|
|
6
|
-
import { u as de } from "./use-web-otp-D_utzp6S.js";
|
|
7
|
-
import { u as fe, a as ge } from "./form-field-context-DtiROUJV.js";
|
|
8
|
-
import { u as me } from "./registry-DvAUVLHh.js";
|
|
9
|
-
const he = {
|
|
10
|
-
id: "otp-input",
|
|
11
|
-
// Value input — `set_value` replaces the digits. There is no `submit`
|
|
12
|
-
// action: completion is host-driven (the consumer's `onComplete` fires
|
|
13
|
-
// automatically once every digit is filled) and is observable via the
|
|
14
|
-
// `isComplete` state slot, so the old unbacked `submit` capability is
|
|
15
|
-
// removed.
|
|
16
|
-
capabilities: ["set_value"],
|
|
17
|
-
state: {
|
|
18
|
-
value: {
|
|
19
|
-
type: "string",
|
|
20
|
-
descriptionKey: "ui.agent.otpInput.state.value",
|
|
21
|
-
description: "Current digits entered, packed into a single string.",
|
|
22
|
-
read: (a) => a.getValue()
|
|
23
|
-
},
|
|
24
|
-
isComplete: {
|
|
25
|
-
type: "boolean",
|
|
26
|
-
descriptionKey: "ui.agent.otpInput.state.isComplete",
|
|
27
|
-
description: "Whether all required digits have been entered.",
|
|
28
|
-
read: (a) => a.isComplete()
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
actions: {
|
|
32
|
-
set_value: {
|
|
33
|
-
safety: "write",
|
|
34
|
-
argsType: "{ value: string }",
|
|
35
|
-
argsSchema: {
|
|
36
|
-
type: "object",
|
|
37
|
-
properties: {
|
|
38
|
-
value: {
|
|
39
|
-
type: "string",
|
|
40
|
-
description: "The digits to fill, packed into a single string (one char per cell)."
|
|
41
|
-
}
|
|
42
|
-
},
|
|
43
|
-
required: ["value"]
|
|
44
|
-
},
|
|
45
|
-
idempotent: !0,
|
|
46
|
-
examples: [{ args: { value: "123456" } }],
|
|
47
|
-
descriptionKey: "ui.agent.otpInput.actions.setValue",
|
|
48
|
-
description: "Replace the entered digits.",
|
|
49
|
-
invoke: (a, o) => {
|
|
50
|
-
a.setValue(o.value);
|
|
51
|
-
}
|
|
52
|
-
},
|
|
53
|
-
clear: {
|
|
54
|
-
safety: "destructive",
|
|
55
|
-
idempotent: !0,
|
|
56
|
-
descriptionKey: "ui.agent.otpInput.actions.clear",
|
|
57
|
-
description: "Empty all digit cells. Loses any typed value.",
|
|
58
|
-
invoke: (a) => {
|
|
59
|
-
a.clear();
|
|
60
|
-
}
|
|
61
|
-
},
|
|
62
|
-
focus: {
|
|
63
|
-
safety: "read",
|
|
64
|
-
idempotent: !0,
|
|
65
|
-
descriptionKey: "ui.agent.otpInput.actions.focus",
|
|
66
|
-
description: "Move keyboard focus to the active digit cell.",
|
|
67
|
-
invoke: (a) => {
|
|
68
|
-
a.focus();
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
},
|
|
72
|
-
domHooks: {
|
|
73
|
-
root: {
|
|
74
|
-
attr: "data-component",
|
|
75
|
-
value: "otp-input",
|
|
76
|
-
description: "Marks the OTPInput wrapper. Completion is observable via state.isComplete; the host onComplete callback fires once when all digits are filled."
|
|
77
|
-
},
|
|
78
|
-
instanceId: {
|
|
79
|
-
attr: "data-component-id",
|
|
80
|
-
sourceProp: "id",
|
|
81
|
-
description: "Sourced from the id prop."
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}, ve = j("ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]"), be = j(
|
|
85
|
-
[
|
|
86
|
-
"ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]",
|
|
87
|
-
"ds:rounded-[var(--radius-sm)]",
|
|
88
|
-
"ds:border ds:bg-input ds:text-foreground ds:text-center ds:font-medium ds:text-[length:var(--font-size-lg)]",
|
|
89
|
-
"ds:shadow-[var(--shadow-input)]",
|
|
90
|
-
"ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none",
|
|
91
|
-
"ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid",
|
|
92
|
-
"ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
|
|
93
|
-
"ds:disabled:cursor-not-allowed ds:disabled:opacity-50"
|
|
94
|
-
].join(" "),
|
|
95
|
-
{
|
|
96
|
-
variants: {
|
|
97
|
-
tone: {
|
|
98
|
-
default: "ds:border-[color:var(--control-border)]",
|
|
99
|
-
error: "ds:border-destructive"
|
|
100
|
-
}
|
|
101
|
-
},
|
|
102
|
-
defaultVariants: { tone: "default" }
|
|
103
|
-
}
|
|
104
|
-
);
|
|
105
|
-
function z(a) {
|
|
106
|
-
return a.replace(/[\u0660-\u0669]/g, (o) => String(o.charCodeAt(0) - 1632)).replace(/[\u06F0-\u06F9]/g, (o) => String(o.charCodeAt(0) - 1776));
|
|
107
|
-
}
|
|
108
|
-
const ye = 3, we = 10;
|
|
109
|
-
function Ie(a) {
|
|
110
|
-
const o = Number.isFinite(a) ? Math.floor(a) : 6;
|
|
111
|
-
return Math.max(ye, Math.min(we, o));
|
|
112
|
-
}
|
|
113
|
-
function k(a, o, g) {
|
|
114
|
-
return (g === "alphanumeric" ? a.replace(/[^A-Za-z0-9]/g, "").toUpperCase() : z(a).replace(/\D/g, "")).slice(0, o);
|
|
115
|
-
}
|
|
116
|
-
function ke(a, o, g) {
|
|
117
|
-
const p = k(a, o, g), d = new Array(o).fill("");
|
|
118
|
-
for (let m = 0; m < p.length; m += 1)
|
|
119
|
-
d[m] = p[m];
|
|
120
|
-
return d;
|
|
121
|
-
}
|
|
122
|
-
const Ve = se(
|
|
123
|
-
({
|
|
124
|
-
length: a = 6,
|
|
125
|
-
value: o,
|
|
126
|
-
defaultValue: g,
|
|
127
|
-
onChange: p,
|
|
128
|
-
onComplete: d,
|
|
129
|
-
disabled: m,
|
|
130
|
-
error: $,
|
|
131
|
-
label: V,
|
|
132
|
-
"aria-describedby": Z,
|
|
133
|
-
id: E,
|
|
134
|
-
className: _,
|
|
135
|
-
webOtp: U = !1,
|
|
136
|
-
name: K,
|
|
137
|
-
mode: i = "numeric"
|
|
138
|
-
}, q) => {
|
|
139
|
-
const { t: x } = ue("ui"), r = Ie(a), v = fe(), G = ne(), B = V ? G : void 0, [W, H] = pe({
|
|
140
|
-
value: o,
|
|
141
|
-
defaultValue: k(g ?? "", r, i)
|
|
142
|
-
}), h = k(W ?? "", r, i), X = ke(h, r, i), y = v.disabled || !!m, O = v.invalid || !!$, J = O ? "error" : "default", P = R([]), D = R(h.length === r), f = R(h);
|
|
143
|
-
f.current = h;
|
|
144
|
-
const Q = () => {
|
|
145
|
-
const e = h.length;
|
|
146
|
-
return e >= r ? r - 1 : e;
|
|
147
|
-
}, [b, A] = oe(Q);
|
|
148
|
-
ie(() => {
|
|
149
|
-
b >= r && A(r - 1);
|
|
150
|
-
}, [b, r]);
|
|
151
|
-
const l = S(
|
|
152
|
-
(e, t) => {
|
|
153
|
-
const n = Math.max(0, Math.min(r - 1, e));
|
|
154
|
-
A(n);
|
|
155
|
-
const s = P.current[n];
|
|
156
|
-
s && (s.focus(t), s.select());
|
|
157
|
-
},
|
|
158
|
-
[r]
|
|
159
|
-
), u = S(
|
|
160
|
-
(e) => {
|
|
161
|
-
const t = k(e, r, i);
|
|
162
|
-
H(t), f.current = t, p == null || p(t), t.length === r ? D.current || (D.current = !0, d == null || d(t)) : D.current = !1;
|
|
163
|
-
},
|
|
164
|
-
[H, r, i, p, d]
|
|
165
|
-
);
|
|
166
|
-
de({
|
|
167
|
-
enabled: U && !y,
|
|
168
|
-
onCode: u
|
|
169
|
-
});
|
|
170
|
-
const Y = (e) => (t) => {
|
|
171
|
-
const n = t.target.value, s = i === "alphanumeric" ? n.replace(/[^A-Za-z0-9]/g, "").toUpperCase() : z(n).replace(/\D/g, ""), c = f.current;
|
|
172
|
-
if (s.length === 0) {
|
|
173
|
-
if (n === "" && e < c.length) {
|
|
174
|
-
const N = c.slice(0, e) + c.slice(e + 1);
|
|
175
|
-
u(N);
|
|
176
|
-
}
|
|
177
|
-
return;
|
|
178
|
-
}
|
|
179
|
-
const w = c.slice(0, e), C = c.slice(e + s.length), F = (w + s + C).slice(0, r);
|
|
180
|
-
u(F);
|
|
181
|
-
const L = Math.min(e + s.length, r - 1);
|
|
182
|
-
l(L);
|
|
183
|
-
}, ee = (e) => (t) => {
|
|
184
|
-
const n = f.current;
|
|
185
|
-
if (t.key === "Backspace") {
|
|
186
|
-
if (n[e]) {
|
|
187
|
-
t.preventDefault();
|
|
188
|
-
const s = n.slice(0, e) + n.slice(e + 1);
|
|
189
|
-
u(s);
|
|
190
|
-
return;
|
|
191
|
-
}
|
|
192
|
-
if (e > 0) {
|
|
193
|
-
t.preventDefault();
|
|
194
|
-
const s = n.slice(0, e - 1) + n.slice(e);
|
|
195
|
-
u(s), l(e - 1);
|
|
196
|
-
}
|
|
197
|
-
return;
|
|
198
|
-
}
|
|
199
|
-
if (t.key === "ArrowLeft") {
|
|
200
|
-
t.preventDefault(), e > 0 && l(e - 1);
|
|
201
|
-
return;
|
|
202
|
-
}
|
|
203
|
-
if (t.key === "ArrowRight") {
|
|
204
|
-
t.preventDefault(), e < r - 1 && l(e + 1);
|
|
205
|
-
return;
|
|
206
|
-
}
|
|
207
|
-
if (t.key === "Home") {
|
|
208
|
-
t.preventDefault(), l(0);
|
|
209
|
-
return;
|
|
210
|
-
}
|
|
211
|
-
t.key === "End" && (t.preventDefault(), l(r - 1));
|
|
212
|
-
}, te = (e) => (t) => {
|
|
213
|
-
const s = t.clipboardData.getData("text").replace(/\s+/g, ""), c = i === "alphanumeric" ? s.replace(/[^A-Za-z0-9]/g, "").toUpperCase() : z(s);
|
|
214
|
-
if (i === "alphanumeric" ? c.length === 0 : !/^[0-9]+$/.test(c))
|
|
215
|
-
return;
|
|
216
|
-
t.preventDefault();
|
|
217
|
-
const w = f.current, C = w.slice(0, e), F = w.slice(e + c.length), L = (C + c + F).slice(0, r);
|
|
218
|
-
u(L);
|
|
219
|
-
const N = Math.min(e + c.length, r - 1);
|
|
220
|
-
l(N);
|
|
221
|
-
}, re = (e) => (t) => {
|
|
222
|
-
A(e), t.currentTarget.select();
|
|
223
|
-
}, T = v.id;
|
|
224
|
-
ge(v, `${T}-0`);
|
|
225
|
-
const M = ce(
|
|
226
|
-
() => ({
|
|
227
|
-
getValue: () => f.current,
|
|
228
|
-
setValue: (e) => u(e),
|
|
229
|
-
clear: () => u(""),
|
|
230
|
-
focus: (e) => l(b, e),
|
|
231
|
-
isComplete: () => f.current.length === r
|
|
232
|
-
}),
|
|
233
|
-
[u, l, b, r]
|
|
234
|
-
);
|
|
235
|
-
return me(he, M, E), le(q, () => M, [M]), /* @__PURE__ */ ae("div", { className: ve({ className: _ }), children: [
|
|
236
|
-
V ? /* @__PURE__ */ I(
|
|
237
|
-
"label",
|
|
238
|
-
{
|
|
239
|
-
id: B,
|
|
240
|
-
htmlFor: `${T}-0`,
|
|
241
|
-
className: "type-label ds:text-foreground",
|
|
242
|
-
children: V
|
|
243
|
-
}
|
|
244
|
-
) : null,
|
|
245
|
-
/* @__PURE__ */ I(
|
|
246
|
-
"div",
|
|
247
|
-
{
|
|
248
|
-
role: "group",
|
|
249
|
-
dir: "ltr",
|
|
250
|
-
"aria-labelledby": B,
|
|
251
|
-
"aria-invalid": O || void 0,
|
|
252
|
-
"aria-describedby": [Z, v.describedBy].filter(Boolean).join(" ") || void 0,
|
|
253
|
-
"aria-disabled": y || void 0,
|
|
254
|
-
"data-component": "otp-input",
|
|
255
|
-
"data-component-id": E,
|
|
256
|
-
className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]",
|
|
257
|
-
children: X.map((e, t) => {
|
|
258
|
-
const n = !y && t === b;
|
|
259
|
-
return /* @__PURE__ */ I(
|
|
260
|
-
"input",
|
|
261
|
-
{
|
|
262
|
-
ref: (s) => {
|
|
263
|
-
P.current[t] = s;
|
|
264
|
-
},
|
|
265
|
-
id: `${T}-${t}`,
|
|
266
|
-
type: "text",
|
|
267
|
-
inputMode: i === "alphanumeric" ? "text" : "numeric",
|
|
268
|
-
pattern: i === "alphanumeric" ? "[A-Za-z0-9]*" : "[0-9]*",
|
|
269
|
-
autoCapitalize: i === "alphanumeric" ? "characters" : void 0,
|
|
270
|
-
autoComplete: t === 0 ? "one-time-code" : "off",
|
|
271
|
-
maxLength: 1,
|
|
272
|
-
value: e,
|
|
273
|
-
disabled: y,
|
|
274
|
-
tabIndex: n ? 0 : -1,
|
|
275
|
-
"aria-label": x(
|
|
276
|
-
i === "alphanumeric" ? "inputs.otp.charLabel" : "inputs.otp.digitLabel",
|
|
277
|
-
{
|
|
278
|
-
current: t + 1,
|
|
279
|
-
total: r
|
|
280
|
-
}
|
|
281
|
-
),
|
|
282
|
-
onChange: Y(t),
|
|
283
|
-
onKeyDown: ee(t),
|
|
284
|
-
onPaste: te(t),
|
|
285
|
-
onFocus: re(t),
|
|
286
|
-
className: be({ tone: J })
|
|
287
|
-
},
|
|
288
|
-
t
|
|
289
|
-
);
|
|
290
|
-
})
|
|
291
|
-
}
|
|
292
|
-
),
|
|
293
|
-
K ? /* @__PURE__ */ I("input", { type: "hidden", name: K, value: h, readOnly: !0 }) : null
|
|
294
|
-
] });
|
|
295
|
-
}
|
|
296
|
-
);
|
|
297
|
-
Ve.displayName = "OTPInput";
|
|
298
|
-
export {
|
|
299
|
-
Ve as O
|
|
300
|
-
};
|
|
301
|
-
//# sourceMappingURL=otp-input-gV1446Dw.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"otp-input-gV1446Dw.js","sources":["../../src/components/otp-input/otp-input.agent.ts","../../src/components/otp-input/otp-input.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — OTPInput. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { OTPInputHandle } from './otp-input';\n\nexport const otpInputAgent: AgentAdapter<OTPInputHandle> = {\n id: 'otp-input',\n // Value input — `set_value` replaces the digits. There is no `submit`\n // action: completion is host-driven (the consumer's `onComplete` fires\n // automatically once every digit is filled) and is observable via the\n // `isComplete` state slot, so the old unbacked `submit` capability is\n // removed.\n capabilities: ['set_value'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.otpInput.state.value',\n description: 'Current digits entered, packed into a single string.',\n read: (handle) => handle.getValue(),\n },\n isComplete: {\n type: 'boolean',\n descriptionKey: 'ui.agent.otpInput.state.isComplete',\n description: 'Whether all required digits have been entered.',\n read: (handle) => handle.isComplete(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: 'string',\n description:\n 'The digits to fill, packed into a single string (one char per cell).',\n },\n },\n required: ['value'],\n },\n idempotent: true,\n examples: [{ args: { value: '123456' } }],\n descriptionKey: 'ui.agent.otpInput.actions.setValue',\n description: 'Replace the entered digits.',\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n clear: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.otpInput.actions.clear',\n description: 'Empty all digit cells. Loses any typed value.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n focus: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.otpInput.actions.focus',\n description: 'Move keyboard focus to the active digit cell.',\n invoke: (handle) => {\n handle.focus();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'otp-input',\n description:\n 'Marks the OTPInput wrapper. Completion is observable via state.isComplete; the host onComplete callback fires once when all digits are filled.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n type ChangeEvent,\n type ClipboardEvent,\n type FocusEvent,\n type KeyboardEvent,\n} from 'react';\nimport { cva } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useWebOtp } from '../../hooks/use-web-otp';\nimport {\n useFormField,\n useFormFieldControlId,\n} from '../form-field/form-field-context';\nimport { useAgentRegistration } from '../../agent';\nimport { otpInputAgent } from './otp-input.agent';\n\nexport type OTPMode = 'numeric' | 'alphanumeric';\n\n/** Agent-readiness curated handle for OTPInput. */\nexport interface OTPInputHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n clear: () => void;\n focus: (options?: FocusOptions) => void;\n isComplete: () => boolean;\n}\n\nconst wrapperVariants = cva('ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]');\n\nconst boxVariants = cva(\n [\n 'ds:w-[var(--min-target-size)] ds:h-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:border ds:bg-input ds:text-foreground ds:text-center ds:font-medium ds:text-[length:var(--font-size-lg)]',\n 'ds:shadow-[var(--shadow-input)]',\n 'ds:transition-[colors,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n tone: {\n default: 'ds:border-[color:var(--control-border)]',\n error: 'ds:border-destructive',\n },\n },\n defaultVariants: { tone: 'default' },\n },\n);\n\nexport interface OTPInputProps {\n /**\n * Number of boxes. Default 6. Any integer in [3, 10] is honoured;\n * out-of-range values are clamped (with a DEV warning).\n */\n length?: number;\n value?: string;\n defaultValue?: string;\n onChange?: (value: string) => void;\n onComplete?: (code: string) => void;\n disabled?: boolean;\n error?: boolean;\n label?: string;\n 'aria-describedby'?: string;\n /** Stable id, used to address this instance from the agent runtime. */\n id?: string;\n className?: string;\n /**\n * Opt into Chrome-Android's WebOTP API for one-tap SMS autofill. When\n * the browser surfaces a matching SMS-bound credential, the kit spreads\n * the code across every digit box and fires `onComplete` automatically.\n *\n * Falls back silently to manual entry on Firefox / desktop / iOS — those\n * platforms either don't ship the API at all or rely on the\n * `autocomplete=\"one-time-code\"` QuickType heuristic the kit already\n * applies to the first input.\n *\n * Prerequisites the prop can't enforce: page must be HTTPS, and the SMS\n * body must end with `@<origin> #<code>` on its last line (Chrome's\n * spec — without it the browser refuses to surface the message).\n * Default `false` so the listener stays opt-in.\n */\n webOtp?: boolean;\n /**\n * When set, renders a hidden `<input name={name}>` kept in sync with the\n * packed code so consumers can POST the OTP declaratively, e.g.\n * `sms_code_form[code]`. Default off — no behaviour change.\n */\n name?: string;\n /**\n * Character set. `numeric` (default) accepts digits only (with Arabic-Indic\n * digit folding) — byte-identical to prior behaviour. `alphanumeric` accepts\n * `[A-Za-z0-9]`, uppercases the value, and switches the boxes to text input\n * (for SMS codes that mix letters and digits).\n */\n mode?: OTPMode;\n}\n\nfunction normaliseDigits(str: string): string {\n return str\n .replace(/[\\u0660-\\u0669]/g, (c) => String(c.charCodeAt(0) - 0x0660))\n .replace(/[\\u06F0-\\u06F9]/g, (c) => String(c.charCodeAt(0) - 0x06f0));\n}\n\nconst MIN_LENGTH = 3;\nconst MAX_LENGTH = 10;\n\n/** Clamp an arbitrary length into a sane range; DEV-warn if it had to. */\nfunction resolveLength(length: number): number {\n // Fall back to the default for non-finite input (e.g. `length={parseInt(x)}`\n // yielding NaN) so the component never reaches `new Array(NaN)`.\n const n = Number.isFinite(length) ? Math.floor(length) : 6;\n const clamped = Math.max(MIN_LENGTH, Math.min(MAX_LENGTH, n));\n if (import.meta.env.DEV && clamped !== length) {\n console.warn(\n `[OTPInput] length ${length} is out of range [${MIN_LENGTH}, ${MAX_LENGTH}] \\u2014 clamped to ${clamped}.`,\n );\n }\n return clamped;\n}\n\n/**\n * Filter + normalise a string to the mode's charset, then clamp to length.\n * - `numeric`: Arabic-Indic digits folded to ASCII, then digits only.\n * - `alphanumeric`: `[A-Za-z0-9]` only, uppercased (codes are uppercase and the\n * server compares case-insensitively \\u2014 uppercasing keeps the display and the\n * posted value consistent).\n */\nfunction packValue(value: string, length: number, mode: OTPMode): string {\n const filtered =\n mode === 'alphanumeric'\n ? value.replace(/[^A-Za-z0-9]/g, '').toUpperCase()\n : normaliseDigits(value).replace(/\\D/g, '');\n return filtered.slice(0, length);\n}\n\nfunction valueToArray(value: string, length: number, mode: OTPMode): string[] {\n const packed = packValue(value, length, mode);\n const arr = new Array<string>(length).fill('');\n for (let i = 0; i < packed.length; i += 1) {\n arr[i] = packed[i];\n }\n return arr;\n}\n\nexport const OTPInput = forwardRef<OTPInputHandle, OTPInputProps>(\n (\n {\n length: lengthProp = 6,\n value,\n defaultValue,\n onChange,\n onComplete,\n disabled,\n error,\n label,\n 'aria-describedby': describedBy,\n id,\n className,\n webOtp = false,\n name,\n mode = 'numeric',\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n const length = resolveLength(lengthProp);\n const ctx = useFormField();\n const generatedLabelId = useId();\n const labelId = label ? generatedLabelId : undefined;\n\n const [internalValueRaw, setInternalValue] = useControllableState<string>({\n value,\n defaultValue: packValue(defaultValue ?? '', length, mode),\n });\n const currentValue = packValue(internalValueRaw ?? '', length, mode);\n const digits = valueToArray(currentValue, length, mode);\n\n const effectiveDisabled = ctx.disabled || Boolean(disabled);\n const effectiveError = ctx.invalid || Boolean(error);\n const effectiveTone = effectiveError ? 'error' : 'default';\n\n const inputsRef = useRef<Array<HTMLInputElement | null>>([]);\n const completedRef = useRef(currentValue.length === length);\n const valueRef = useRef(currentValue);\n valueRef.current = currentValue;\n\n const computeInitialIndex = () => {\n const firstEmpty = currentValue.length;\n if (firstEmpty >= length) return length - 1;\n return firstEmpty;\n };\n const [activeIndex, setActiveIndex] = useState<number>(computeInitialIndex);\n\n useEffect(() => {\n if (activeIndex >= length) setActiveIndex(length - 1);\n }, [activeIndex, length]);\n\n const focusBox = useCallback(\n (index: number, options?: FocusOptions) => {\n const clamped = Math.max(0, Math.min(length - 1, index));\n setActiveIndex(clamped);\n const node = inputsRef.current[clamped];\n if (node) {\n node.focus(options);\n node.select();\n }\n },\n [length],\n );\n\n const commit = useCallback(\n (next: string) => {\n const packed = packValue(next, length, mode);\n setInternalValue(packed);\n valueRef.current = packed;\n onChange?.(packed);\n if (packed.length === length) {\n if (!completedRef.current) {\n completedRef.current = true;\n onComplete?.(packed);\n }\n } else {\n completedRef.current = false;\n }\n },\n [setInternalValue, length, mode, onChange, onComplete],\n );\n\n // WebOTP one-tap autofill. The hook silently no-ops when the API is\n // unavailable (Firefox / Safari / desktop Chromium) — `commit()` is\n // the same path manual entry takes, so `onChange` + `onComplete` fire\n // identically whether the digits arrived via SMS, paste, or typing.\n useWebOtp({\n enabled: webOtp && !effectiveDisabled,\n onCode: commit,\n });\n\n const handleChange =\n (index: number) => (event: ChangeEvent<HTMLInputElement>) => {\n const raw = event.target.value;\n const norm =\n mode === 'alphanumeric'\n ? raw.replace(/[^A-Za-z0-9]/g, '').toUpperCase()\n : normaliseDigits(raw).replace(/\\D/g, '');\n const current = valueRef.current;\n\n if (norm.length === 0) {\n if (raw === '' && index < current.length) {\n const newValue = current.slice(0, index) + current.slice(index + 1);\n commit(newValue);\n }\n return;\n }\n\n const before = current.slice(0, index);\n const after = current.slice(index + norm.length);\n const newValue = (before + norm + after).slice(0, length);\n commit(newValue);\n\n const focusTarget = Math.min(index + norm.length, length - 1);\n focusBox(focusTarget);\n };\n\n const handleKeyDown =\n (index: number) => (event: KeyboardEvent<HTMLInputElement>) => {\n const current = valueRef.current;\n if (event.key === 'Backspace') {\n if (current[index]) {\n event.preventDefault();\n const newValue = current.slice(0, index) + current.slice(index + 1);\n commit(newValue);\n return;\n }\n if (index > 0) {\n event.preventDefault();\n const newValue = current.slice(0, index - 1) + current.slice(index);\n commit(newValue);\n focusBox(index - 1);\n }\n return;\n }\n if (event.key === 'ArrowLeft') {\n event.preventDefault();\n if (index > 0) focusBox(index - 1);\n return;\n }\n if (event.key === 'ArrowRight') {\n event.preventDefault();\n if (index < length - 1) focusBox(index + 1);\n return;\n }\n if (event.key === 'Home') {\n event.preventDefault();\n focusBox(0);\n return;\n }\n if (event.key === 'End') {\n event.preventDefault();\n focusBox(length - 1);\n }\n };\n\n const handlePaste =\n (index: number) => (event: ClipboardEvent<HTMLInputElement>) => {\n const text = event.clipboardData.getData('text');\n const stripped = text.replace(/\\s+/g, '');\n const norm =\n mode === 'alphanumeric'\n ? stripped.replace(/[^A-Za-z0-9]/g, '').toUpperCase()\n : normaliseDigits(stripped);\n // numeric: reject the whole paste unless it is all digits (byte-identical\n // to prior behaviour); alphanumeric: accept the stripped [A-Za-z0-9].\n if (\n mode === 'alphanumeric' ? norm.length === 0 : !/^[0-9]+$/.test(norm)\n ) {\n return;\n }\n event.preventDefault();\n const current = valueRef.current;\n const before = current.slice(0, index);\n const after = current.slice(index + norm.length);\n const newValue = (before + norm + after).slice(0, length);\n commit(newValue);\n const focusTarget = Math.min(index + norm.length, length - 1);\n focusBox(focusTarget);\n };\n\n const handleFocus =\n (index: number) => (event: FocusEvent<HTMLInputElement>) => {\n setActiveIndex(index);\n event.currentTarget.select();\n };\n\n const baseId = ctx.id;\n /* No element carries the field's own id: its label points at the\n first box. */\n useFormFieldControlId(ctx, `${baseId}-0`);\n\n const agentHandle = useMemo<OTPInputHandle>(\n () => ({\n getValue: () => valueRef.current,\n setValue: (next) => commit(next),\n clear: () => commit(''),\n focus: (options) => focusBox(activeIndex, options),\n isComplete: () => valueRef.current.length === length,\n }),\n [commit, focusBox, activeIndex, length],\n );\n useAgentRegistration(otpInputAgent, agentHandle, id);\n // Expose the same imperative handle to React refs so consumers can\n // focus / read / clear the field (e.g. focus the boxes on a step change).\n useImperativeHandle(ref, () => agentHandle, [agentHandle]);\n\n return (\n <div className={wrapperVariants({ className })}>\n {label ? (\n <label\n id={labelId}\n htmlFor={`${baseId}-0`}\n className=\"type-label ds:text-foreground\"\n >\n {label}\n </label>\n ) : null}\n {/* eslint-disable-next-line jsx-a11y/role-supports-aria-props -- aria-invalid is a global ARIA state; conveys group-level validation */}\n <div\n role=\"group\"\n dir=\"ltr\"\n aria-labelledby={labelId}\n aria-invalid={effectiveError || undefined}\n aria-describedby={\n [describedBy, ctx.describedBy].filter(Boolean).join(' ') ||\n undefined\n }\n aria-disabled={effectiveDisabled || undefined}\n data-component=\"otp-input\"\n data-component-id={id}\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-sm)]\"\n >\n {digits.map((digit, index) => {\n const isTabbable = !effectiveDisabled && index === activeIndex;\n return (\n <input\n key={index}\n ref={(node) => {\n inputsRef.current[index] = node;\n }}\n id={`${baseId}-${index}`}\n type=\"text\"\n inputMode={mode === 'alphanumeric' ? 'text' : 'numeric'}\n pattern={mode === 'alphanumeric' ? '[A-Za-z0-9]*' : '[0-9]*'}\n autoCapitalize={\n mode === 'alphanumeric' ? 'characters' : undefined\n }\n autoComplete={index === 0 ? 'one-time-code' : 'off'}\n maxLength={1}\n value={digit}\n disabled={effectiveDisabled}\n tabIndex={isTabbable ? 0 : -1}\n aria-label={t(\n mode === 'alphanumeric'\n ? 'inputs.otp.charLabel'\n : 'inputs.otp.digitLabel',\n {\n current: index + 1,\n total: length,\n },\n )}\n onChange={handleChange(index)}\n onKeyDown={handleKeyDown(index)}\n onPaste={handlePaste(index)}\n onFocus={handleFocus(index)}\n className={boxVariants({ tone: effectiveTone })}\n />\n );\n })}\n </div>\n {name ? (\n <input type=\"hidden\" name={name} value={currentValue} readOnly />\n ) : null}\n </div>\n );\n },\n);\n\nOTPInput.displayName = 'OTPInput';\n"],"names":["otpInputAgent","handle","args","wrapperVariants","cva","boxVariants","normaliseDigits","str","c","MIN_LENGTH","MAX_LENGTH","resolveLength","length","n","packValue","value","mode","valueToArray","packed","arr","i","OTPInput","forwardRef","lengthProp","defaultValue","onChange","onComplete","disabled","error","label","describedBy","id","className","webOtp","name","ref","t","useTranslation","ctx","useFormField","generatedLabelId","useId","labelId","internalValueRaw","setInternalValue","useControllableState","currentValue","digits","effectiveDisabled","effectiveError","effectiveTone","inputsRef","useRef","completedRef","valueRef","computeInitialIndex","firstEmpty","activeIndex","setActiveIndex","useState","useEffect","focusBox","useCallback","index","options","clamped","node","commit","next","useWebOtp","handleChange","event","raw","norm","current","newValue","before","after","focusTarget","handleKeyDown","handlePaste","stripped","handleFocus","baseId","useFormFieldControlId","agentHandle","useMemo","useAgentRegistration","useImperativeHandle","jsx","digit","isTabbable"],"mappings":"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"}
|