@alfadocs/ui-kit-debug 1.112.2 → 1.114.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/{anamnesis-card-BzuluoD1.js → anamnesis-card-Ddnrdfx3.js} +2 -2
- package/dist/_chunks/{anamnesis-card-BzuluoD1.js.map → anamnesis-card-Ddnrdfx3.js.map} +1 -1
- package/dist/_chunks/{anamnesis-summary-card-DdTRdNrQ.js → anamnesis-summary-card-S1H_AARG.js} +2 -2
- package/dist/_chunks/{anamnesis-summary-card-DdTRdNrQ.js.map → anamnesis-summary-card-S1H_AARG.js.map} +1 -1
- package/dist/_chunks/{anamnesis-summary-rows-DfDulR_c.js → anamnesis-summary-rows-DaS-j8Jd.js} +2 -2
- package/dist/_chunks/{anamnesis-summary-rows-DfDulR_c.js.map → anamnesis-summary-rows-DaS-j8Jd.js.map} +1 -1
- package/dist/_chunks/{antenatal-schedule-timeline-DmsY5g28.js → antenatal-schedule-timeline-DmlXxevC.js} +2 -2
- package/dist/_chunks/{antenatal-schedule-timeline-DmsY5g28.js.map → antenatal-schedule-timeline-DmlXxevC.js.map} +1 -1
- package/dist/_chunks/{bishop-score-CnIft4eV.js → bishop-score-QJu-sM1y.js} +2 -2
- package/dist/_chunks/{bishop-score-CnIft4eV.js.map → bishop-score-QJu-sM1y.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-NMkXc079.js → bmi-calculator-Ba4yoR31.js} +2 -2
- package/dist/_chunks/{bmi-calculator-NMkXc079.js.map → bmi-calculator-Ba4yoR31.js.map} +1 -1
- package/dist/_chunks/{calendar-appointment-editor-dialog-FvdoKZ54.js → calendar-appointment-editor-dialog-iyh9QqNw.js} +6 -6
- package/dist/_chunks/{calendar-appointment-editor-dialog-FvdoKZ54.js.map → calendar-appointment-editor-dialog-iyh9QqNw.js.map} +1 -1
- package/dist/_chunks/{card-C85_Ndhb.js → card-DVO3x8E-.js} +23 -19
- package/dist/_chunks/{card-C85_Ndhb.js.map → card-DVO3x8E-.js.map} +1 -1
- package/dist/_chunks/{clinical-note-card-BVkxGiGl.js → clinical-note-card-Zz5_GEz-.js} +2 -2
- package/dist/_chunks/{clinical-note-card-BVkxGiGl.js.map → clinical-note-card-Zz5_GEz-.js.map} +1 -1
- package/dist/_chunks/{connection-status-CWSU3eiq.js → connection-status-DjarASoU.js} +2 -2
- package/dist/_chunks/{connection-status-CWSU3eiq.js.map → connection-status-DjarASoU.js.map} +1 -1
- package/dist/_chunks/{contact-card-CymtNvy3.js → contact-card-Cv-Nwvac.js} +2 -2
- package/dist/_chunks/{contact-card-CymtNvy3.js.map → contact-card-Cv-Nwvac.js.map} +1 -1
- package/dist/_chunks/{contact-profile-card-CAL66GaH.js → contact-profile-card-DMXWBBkU.js} +2 -2
- package/dist/_chunks/{contact-profile-card-CAL66GaH.js.map → contact-profile-card-DMXWBBkU.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-ZMDvToIm.js → cycle-calculator-Dd-XbKmZ.js} +2 -2
- package/dist/_chunks/{cycle-calculator-ZMDvToIm.js.map → cycle-calculator-Dd-XbKmZ.js.map} +1 -1
- package/dist/_chunks/{document-preview-5xs64jME.js → document-preview-WvJKHJOP.js} +2 -2
- package/dist/_chunks/{document-preview-5xs64jME.js.map → document-preview-WvJKHJOP.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-Dr2cDa64.js → due-date-calculator-Dl6SyMHO.js} +3 -3
- package/dist/_chunks/{due-date-calculator-Dr2cDa64.js.map → due-date-calculator-Dl6SyMHO.js.map} +1 -1
- package/dist/_chunks/email-input-DxwbREpx.js +156 -0
- package/dist/_chunks/email-input-DxwbREpx.js.map +1 -0
- package/dist/_chunks/{entity-summary-BbqqYqF1.js → entity-summary-DGCBQDt1.js} +2 -2
- package/dist/_chunks/{entity-summary-BbqqYqF1.js.map → entity-summary-DGCBQDt1.js.map} +1 -1
- package/dist/_chunks/{face-scheme-e2M2HJGz.js → face-scheme-DlcQaQVR.js} +2 -2
- package/dist/_chunks/{face-scheme-e2M2HJGz.js.map → face-scheme-DlcQaQVR.js.map} +1 -1
- package/dist/_chunks/{fetal-weight-CkIwJgiH.js → fetal-weight-DmZzMRzB.js} +2 -2
- package/dist/_chunks/{fetal-weight-CkIwJgiH.js.map → fetal-weight-DmZzMRzB.js.map} +1 -1
- package/dist/_chunks/{finished-terminal-DXVAfhRr.js → finished-terminal-BKTFUk3S.js} +2 -2
- package/dist/_chunks/{finished-terminal-DXVAfhRr.js.map → finished-terminal-BKTFUk3S.js.map} +1 -1
- package/dist/_chunks/{forgot-password-form-vfCO2-Tt.js → forgot-password-form-Bc_UPax6.js} +9 -8
- package/dist/_chunks/{forgot-password-form-vfCO2-Tt.js.map → forgot-password-form-Bc_UPax6.js.map} +1 -1
- package/dist/_chunks/{gestational-age-calculator-Dv3IePb-.js → gestational-age-calculator-DmzYdW5e.js} +3 -3
- package/dist/_chunks/{gestational-age-calculator-Dv3IePb-.js.map → gestational-age-calculator-DmzYdW5e.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-DdyUt4gz.js → hcg-doubling-Tr72PetS.js} +2 -2
- package/dist/_chunks/{hcg-doubling-DdyUt4gz.js.map → hcg-doubling-Tr72PetS.js.map} +1 -1
- package/dist/_chunks/{heatmap-BiwC7Gdx.js → heatmap-CNxCDl0D.js} +2 -2
- package/dist/_chunks/{heatmap-BiwC7Gdx.js.map → heatmap-CNxCDl0D.js.map} +1 -1
- package/dist/_chunks/isEmail-BfVspSvV.js +248 -0
- package/dist/_chunks/isEmail-BfVspSvV.js.map +1 -0
- package/dist/_chunks/{kit-extensions-BOsUgWnE.js → kit-extensions-DZJRmDI6.js} +7 -7
- package/dist/_chunks/{kit-extensions-BOsUgWnE.js.map → kit-extensions-DZJRmDI6.js.map} +1 -1
- package/dist/_chunks/{login-dev-card-Cz1Clugq.js → login-dev-card-D7orCfJT.js} +48 -47
- package/dist/_chunks/{login-dev-card-Cz1Clugq.js.map → login-dev-card-D7orCfJT.js.map} +1 -1
- package/dist/_chunks/map-view-Bny79cWa.js +856 -0
- package/dist/_chunks/map-view-Bny79cWa.js.map +1 -0
- package/dist/_chunks/{marketplace-app-shell-C-4QF6mp.js → marketplace-app-shell-CPNVBVLH.js} +2 -2
- package/dist/_chunks/{marketplace-app-shell-C-4QF6mp.js.map → marketplace-app-shell-CPNVBVLH.js.map} +1 -1
- package/dist/_chunks/motion-is-off-BvAuNV5O.js +15 -0
- package/dist/_chunks/motion-is-off-BvAuNV5O.js.map +1 -0
- package/dist/_chunks/{notes-panel-Cz621DWV.js → notes-panel-DXMTObBv.js} +3 -3
- package/dist/_chunks/{notes-panel-Cz621DWV.js.map → notes-panel-DXMTObBv.js.map} +1 -1
- package/dist/_chunks/{operator-hero-BELhrv9o.js → operator-hero-BWayX73x.js} +71 -62
- package/dist/_chunks/{operator-hero-BELhrv9o.js.map → operator-hero-BWayX73x.js.map} +1 -1
- package/dist/_chunks/{patient-details-BwkDIm4D.js → patient-details-DdtXBNjt.js} +3 -3
- package/dist/_chunks/{patient-details-BwkDIm4D.js.map → patient-details-DdtXBNjt.js.map} +1 -1
- package/dist/_chunks/{patient-field-row-CBba7w9V.js → patient-field-row-D9rb-QJH.js} +2 -2
- package/dist/_chunks/{patient-field-row-CBba7w9V.js.map → patient-field-row-D9rb-QJH.js.map} +1 -1
- package/dist/_chunks/{patient-search-CxuqVUTB.js → patient-search-DDRDCjZi.js} +439 -482
- package/dist/_chunks/patient-search-DDRDCjZi.js.map +1 -0
- package/dist/_chunks/{patient-summary-card-DtYTo9w_.js → patient-summary-card-CGHz-Bvm.js} +3 -3
- package/dist/_chunks/{patient-summary-card-DtYTo9w_.js.map → patient-summary-card-CGHz-Bvm.js.map} +1 -1
- package/dist/_chunks/{payment-automation-upsell-u5EuFyCY.js → payment-automation-upsell-D7yaD4u1.js} +3 -3
- package/dist/_chunks/{payment-automation-upsell-u5EuFyCY.js.map → payment-automation-upsell-D7yaD4u1.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-IR83TJax.js → payment-request-card-BmV2pLoM.js} +2 -2
- package/dist/_chunks/{payment-request-card-IR83TJax.js.map → payment-request-card-BmV2pLoM.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-DqdUEFxK.js → periodontal-chart-Bjz7O4wT.js} +2 -2
- package/dist/_chunks/{periodontal-chart-DqdUEFxK.js.map → periodontal-chart-Bjz7O4wT.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-card-CCkzStlm.js → periodontal-chart-card-CxEXHl2x.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-CCkzStlm.js.map → periodontal-chart-card-CxEXHl2x.js.map} +1 -1
- package/dist/_chunks/{periodontal-diagnosis-CF1d_0yl.js → periodontal-diagnosis-xheWfi4g.js} +2 -2
- package/dist/_chunks/{periodontal-diagnosis-CF1d_0yl.js.map → periodontal-diagnosis-xheWfi4g.js.map} +1 -1
- package/dist/_chunks/{periodontal-risk-chart-D2zyID0H.js → periodontal-risk-chart-BBPB9wf1.js} +2 -2
- package/dist/_chunks/{periodontal-risk-chart-D2zyID0H.js.map → periodontal-risk-chart-BBPB9wf1.js.map} +1 -1
- package/dist/_chunks/{practice-profile-hero-Bb4YyxHA.js → practice-profile-hero-Cw4NZp0A.js} +2 -2
- package/dist/_chunks/{practice-profile-hero-Bb4YyxHA.js.map → practice-profile-hero-Cw4NZp0A.js.map} +1 -1
- package/dist/_chunks/practice-results-BlxfBx-D.js +2181 -0
- package/dist/_chunks/practice-results-BlxfBx-D.js.map +1 -0
- package/dist/_chunks/{pregnancy-dating-Cs8xpZA8.js → pregnancy-dating-BvorzHrd.js} +3 -3
- package/dist/_chunks/{pregnancy-dating-Cs8xpZA8.js.map → pregnancy-dating-BvorzHrd.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-B_Zldlzq.js → pregnancy-weight-gain-DQoOM8QV.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-B_Zldlzq.js.map → pregnancy-weight-gain-DQoOM8QV.js.map} +1 -1
- package/dist/_chunks/{privacy-mask-DbEKI-Jv.js → privacy-mask-Dc3kdkCR.js} +2 -2
- package/dist/_chunks/{privacy-mask-DbEKI-Jv.js.map → privacy-mask-Dc3kdkCR.js.map} +1 -1
- package/dist/_chunks/{public-footer-DGjLTtNK.js → public-footer-CB7ruuLI.js} +295 -260
- package/dist/_chunks/public-footer-CB7ruuLI.js.map +1 -0
- package/dist/_chunks/{public-header.agent-_ArDD1Xr.js → public-header.agent-Db4wm6_S.js} +203 -193
- package/dist/_chunks/public-header.agent-Db4wm6_S.js.map +1 -0
- package/dist/_chunks/{registration-form-DEyUFysm.js → registration-form-Lw9T7IXr.js} +7 -6
- package/dist/_chunks/{registration-form-DEyUFysm.js.map → registration-form-Lw9T7IXr.js.map} +1 -1
- package/dist/_chunks/{reserved.agent-W_Zgj564.js → reserved.agent-D2jwJPac.js} +22 -32
- package/dist/_chunks/reserved.agent-D2jwJPac.js.map +1 -0
- package/dist/_chunks/{reset-password-form-B0acanDD.js → reset-password-form-C93SH0Tx.js} +3 -3
- package/dist/_chunks/{reset-password-form-B0acanDD.js.map → reset-password-form-C93SH0Tx.js.map} +1 -1
- package/dist/_chunks/{reviews-panel-B03auSpQ.js → reviews-panel-CfJPEkH7.js} +2 -2
- package/dist/_chunks/{reviews-panel-B03auSpQ.js.map → reviews-panel-CfJPEkH7.js.map} +1 -1
- package/dist/_chunks/{section-card-D1sV4Voz.js → section-card-DFr2wGal.js} +2 -2
- package/dist/_chunks/{section-card-D1sV4Voz.js.map → section-card-DFr2wGal.js.map} +1 -1
- package/dist/_chunks/{send-registration-link-form-Nn0jf65G.js → send-registration-link-form-DfbTjrEK.js} +9 -8
- package/dist/_chunks/{send-registration-link-form-Nn0jf65G.js.map → send-registration-link-form-DfbTjrEK.js.map} +1 -1
- package/dist/_chunks/{signed-out-frame-CPow3aCZ.js → signed-out-frame-bh7fn_Px.js} +2 -2
- package/dist/_chunks/{signed-out-frame-CPow3aCZ.js.map → signed-out-frame-bh7fn_Px.js.map} +1 -1
- package/dist/_chunks/{stat-BFKZV50y.js → stat-WGLdn5Vn.js} +113 -107
- package/dist/_chunks/stat-WGLdn5Vn.js.map +1 -0
- package/dist/_chunks/{task-card-TSJjuuDe.js → task-card-DqVoitRk.js} +2 -2
- package/dist/_chunks/{task-card-TSJjuuDe.js.map → task-card-DqVoitRk.js.map} +1 -1
- package/dist/_chunks/{task-editor-gqWF1jI6.js → task-editor-D--LwVrg.js} +2 -2
- package/dist/_chunks/{task-editor-gqWF1jI6.js.map → task-editor-D--LwVrg.js.map} +1 -1
- package/dist/_chunks/{task-tray-DrXfMCuf.js → task-tray-C6j8HVMv.js} +2 -2
- package/dist/_chunks/{task-tray-DrXfMCuf.js.map → task-tray-C6j8HVMv.js.map} +1 -1
- package/dist/_chunks/{tasks-panel-OuIaydK5.js → tasks-panel-D6PuF4MQ.js} +2 -2
- package/dist/_chunks/{tasks-panel-OuIaydK5.js.map → tasks-panel-D6PuF4MQ.js.map} +1 -1
- package/dist/_chunks/{timeline-CKUaBZOx.js → timeline-AMqE-c2T.js} +2 -2
- package/dist/_chunks/{timeline-CKUaBZOx.js.map → timeline-AMqE-c2T.js.map} +1 -1
- package/dist/_chunks/{use-appointment-details-read-DYyCYI9f.js → use-appointment-details-read-BK_Gw1GG.js} +5 -5
- package/dist/_chunks/{use-appointment-details-read-DYyCYI9f.js.map → use-appointment-details-read-BK_Gw1GG.js.map} +1 -1
- package/dist/_chunks/verify-identity-types-C85EXNzy.js +707 -0
- package/dist/_chunks/verify-identity-types-C85EXNzy.js.map +1 -0
- package/dist/_chunks/{workflow-map-DWk-rZse.js → workflow-map-B4XkcET0.js} +2 -2
- package/dist/_chunks/{workflow-map-DWk-rZse.js.map → workflow-map-B4XkcET0.js.map} +1 -1
- package/dist/_chunks/{workflow-webhook-action-DILFqAVd.js → workflow-webhook-action-CtBn5JvO.js} +2 -2
- package/dist/_chunks/{workflow-webhook-action-DILFqAVd.js.map → workflow-webhook-action-CtBn5JvO.js.map} +1 -1
- package/dist/agent-catalog.json +111 -7
- package/dist/agent-i18n/en.json +13 -2
- package/dist/components/_shared/motion-is-off.d.ts +7 -0
- package/dist/components/_shared/motion-is-off.d.ts.map +1 -0
- package/dist/components/anamnesis-card/index.js +1 -1
- package/dist/components/anamnesis-summary-card/index.js +1 -1
- package/dist/components/appointment-details-panel/index.js +1 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/booking/step-focus.d.ts +0 -6
- package/dist/components/booking/step-focus.d.ts.map +1 -1
- package/dist/components/card/card.d.ts.map +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/connection-status/index.js +1 -1
- package/dist/components/contact-card/index.js +1 -1
- package/dist/components/contact-profile-card/index.js +1 -1
- package/dist/components/cycle-calculator/index.js +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +2 -2
- package/dist/components/email-input/index.js +1 -1
- package/dist/components/entity-summary/index.js +1 -1
- package/dist/components/face-scheme/index.js +1 -1
- package/dist/components/fetal-weight/index.js +1 -1
- package/dist/components/finished-terminal/index.js +1 -1
- package/dist/components/gestational-age-calculator/index.js +1 -1
- package/dist/components/hcg-doubling/index.js +1 -1
- package/dist/components/heatmap/index.js +1 -1
- package/dist/components/index.d.ts +1 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/map-view/map-view.d.ts +16 -0
- package/dist/components/map-view/map-view.d.ts.map +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/operator-hero/operator-hero.d.ts.map +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/patient-search/patient-search.d.ts +6 -2
- package/dist/components/patient-search/patient-search.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/periodontal-chart/index.js +1 -1
- package/dist/components/periodontal-chart-card/index.js +1 -1
- package/dist/components/periodontal-diagnosis/index.js +1 -1
- package/dist/components/periodontal-risk-chart/index.js +1 -1
- package/dist/components/practice-profile-hero/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/practice-results/practice-results.agent.d.ts.map +1 -1
- package/dist/components/practice-results/practice-results.d.ts +43 -2
- package/dist/components/practice-results/practice-results.d.ts.map +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/public-footer/public-footer.d.ts +23 -0
- package/dist/components/public-footer/public-footer.d.ts.map +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/public-header/public-header.d.ts +7 -0
- package/dist/components/public-header/public-header.d.ts.map +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/section-card/index.js +1 -1
- package/dist/components/stat/index.js +1 -1
- package/dist/components/stat/stat.d.ts +7 -0
- package/dist/components/stat/stat.d.ts.map +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-editor/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/core.css +1 -1
- package/dist/host-compat.css +4 -1
- package/dist/i18n/locales/ar.d.ts +68 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +70 -2
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +68 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +70 -2
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +68 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +70 -2
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +68 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +68 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +68 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +70 -2
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +68 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +70 -2
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +68 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +70 -2
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +68 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +70 -2
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +68 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +70 -2
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +68 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +70 -2
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +68 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +70 -2
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +68 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +70 -2
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +68 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +70 -2
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +68 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +70 -2
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +68 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +70 -2
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +68 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +70 -2
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +68 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +70 -2
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +68 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +70 -2
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +373 -368
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +70 -2
- package/dist/locales/de.json +70 -2
- package/dist/locales/el.json +70 -2
- package/dist/locales/en.json +68 -0
- package/dist/locales/es.json +70 -2
- package/dist/locales/fr.json +70 -2
- package/dist/locales/hi.json +70 -2
- package/dist/locales/it.json +70 -2
- package/dist/locales/ja.json +70 -2
- package/dist/locales/nl.json +70 -2
- package/dist/locales/pl.json +70 -2
- package/dist/locales/pt.json +70 -2
- package/dist/locales/ro.json +70 -2
- package/dist/locales/ru.json +70 -2
- package/dist/locales/sq.json +70 -2
- package/dist/locales/sv.json +70 -2
- package/dist/locales/tr.json +70 -2
- package/dist/locales/zh.json +70 -2
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/forgot-password-form/index.js +1 -1
- package/dist/patterns/login-form/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/payment-automation-upsell/index.js +1 -1
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/reset-password-form/index.js +1 -1
- package/dist/patterns/send-registration-link-form/index.js +1 -1
- package/dist/patterns/signed-out-frame/index.js +1 -1
- package/dist/patterns/verify-identity/change-email-dialog.d.ts +26 -0
- package/dist/patterns/verify-identity/change-email-dialog.d.ts.map +1 -0
- package/dist/patterns/verify-identity/index.d.ts +7 -0
- package/dist/patterns/verify-identity/index.d.ts.map +1 -0
- package/dist/patterns/verify-identity/index.js +8 -0
- package/dist/patterns/verify-identity/index.js.map +1 -0
- package/dist/patterns/verify-identity/use-countdown.d.ts +12 -0
- package/dist/patterns/verify-identity/use-countdown.d.ts.map +1 -0
- package/dist/patterns/verify-identity/verify-identity-steps.d.ts +21 -0
- package/dist/patterns/verify-identity/verify-identity-steps.d.ts.map +1 -0
- package/dist/patterns/verify-identity/verify-identity-types.d.ts +47 -0
- package/dist/patterns/verify-identity/verify-identity-types.d.ts.map +1 -0
- package/dist/patterns/verify-identity/verify-identity.d.ts +54 -0
- package/dist/patterns/verify-identity/verify-identity.d.ts.map +1 -0
- package/dist/patterns/workflow-webhook-action/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +5 -1
- package/dist/_chunks/email-input-BEO3vonE.js +0 -399
- package/dist/_chunks/email-input-BEO3vonE.js.map +0 -1
- package/dist/_chunks/map-view-Dn7aXZJw.js +0 -731
- package/dist/_chunks/map-view-Dn7aXZJw.js.map +0 -1
- package/dist/_chunks/patient-search-CxuqVUTB.js.map +0 -1
- package/dist/_chunks/practice-results-BOpaPaav.js +0 -1923
- package/dist/_chunks/practice-results-BOpaPaav.js.map +0 -1
- package/dist/_chunks/public-footer-DGjLTtNK.js.map +0 -1
- package/dist/_chunks/public-header.agent-_ArDD1Xr.js.map +0 -1
- package/dist/_chunks/reserved.agent-W_Zgj564.js.map +0 -1
- package/dist/_chunks/stat-BFKZV50y.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"verify-identity-types-C85EXNzy.js","sources":["../../src/patterns/verify-identity/use-countdown.ts","../../src/patterns/verify-identity/verify-identity-steps.tsx","../../src/patterns/verify-identity/verify-identity.tsx","../../src/patterns/verify-identity/change-email-dialog.tsx","../../src/patterns/verify-identity/verify-identity-types.ts"],"sourcesContent":["/* A whole-second countdown that follows the clock, not the ticks, so a */\n/* throttled background tab does not run slow. */\n\nimport { useCallback, useEffect, useRef, useState } from 'react';\n\nexport interface Countdown {\n /** Whole seconds left. 0 when idle or finished. */\n remaining: number;\n /** True once a countdown has run to zero since the last `start`. */\n finished: boolean;\n start: (seconds: number) => void;\n stop: () => void;\n}\n\nexport function useCountdown(): Countdown {\n const [deadline, setDeadline] = useState<number | null>(null);\n const [remaining, setRemaining] = useState(0);\n const [finished, setFinished] = useState(false);\n const timer = useRef<number | undefined>(undefined);\n\n useEffect(() => {\n if (deadline === null) return;\n const tick = () => {\n const left = Math.max(0, Math.ceil((deadline - Date.now()) / 1000));\n setRemaining(left);\n if (left === 0) {\n setDeadline(null);\n setFinished(true);\n }\n };\n tick();\n timer.current = window.setInterval(tick, 1000);\n return () => window.clearInterval(timer.current);\n }, [deadline]);\n\n const start = useCallback((seconds: number) => {\n const whole = Math.max(0, Math.ceil(seconds));\n setFinished(false);\n if (whole === 0) {\n setDeadline(null);\n setRemaining(0);\n return;\n }\n setRemaining(whole);\n setDeadline(Date.now() + whole * 1000);\n }, []);\n\n const stop = useCallback(() => {\n setDeadline(null);\n setRemaining(0);\n setFinished(false);\n }, []);\n\n return { remaining, finished, start, stop };\n}\n\n/** 272 -> \"4:32\". */\nexport function formatClock(seconds: number): string {\n const m = Math.floor(seconds / 60);\n const s = seconds % 60;\n return `${m}:${String(s).padStart(2, '0')}`;\n}\n","/* -------------------------------------------------------------------- */\n/* The three kinds of step inside VerifyIdentity: a password, a code */\n/* from the authenticator app, and a code the host sends by SMS or */\n/* email. Each asks the host through a callback and shows its answer. */\n/* */\n/* Nothing here logs, stores or puts a password, a code, a number or an */\n/* address in a `data-*` attribute. Shipped with VerifyIdentity; not an */\n/* export of its own. */\n/* -------------------------------------------------------------------- */\n\nimport {\n useCallback,\n useEffect,\n useRef,\n useState,\n type FormEvent,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { Alert } from '../../components/alert';\nimport { Button } from '../../components/button';\nimport { FormField } from '../../components/form-field';\nimport { OTPInput } from '../../components/otp-input';\nimport { PasswordInput } from '../../components/password-input';\nimport { formatClock, useCountdown } from './use-countdown';\nimport type { SendCodeResult, VerifyResult } from './verify-identity-types';\n\n/* -------------------------------------------------------------------- */\n/* Shared */\n/* -------------------------------------------------------------------- */\n\ntype FailureKind = 'invalid' | 'expired' | 'rate-limited' | 'error';\n\ninterface Failure {\n kind: FailureKind;\n /** The host's own line, already translated. */\n message?: string;\n}\n\nconst failureFrom = (result: Exclude<VerifyResult, { status: 'ok' }>) =>\n result.status === 'error'\n ? ({ kind: 'error', message: result.message } as const)\n : ({ kind: result.status } as const);\n\n/** Calls the host. A throw or a rejection is an error: it is never\n * logged, because it may carry what the user typed. */\nasync function ask<T>(\n call: (() => Promise<T>) | undefined,\n fallback: T,\n): Promise<T> {\n if (!call) return fallback;\n try {\n return await call();\n } catch {\n return fallback;\n }\n}\n\nconst ERROR_RESULT = { status: 'error' } as const;\n\nfunction useMounted() {\n const mounted = useRef(true);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n return mounted;\n}\n\nfunction useFailureText(passwordStep = false) {\n const { t } = useTranslation('ui');\n return (failure: Failure | null, waitSeconds: number): string | undefined => {\n if (!failure) return undefined;\n if (failure.message) return failure.message;\n switch (failure.kind) {\n case 'invalid':\n return passwordStep\n ? t('verifyIdentity.password.invalid')\n : t('verifyIdentity.invalidCode');\n case 'expired':\n return t('verifyIdentity.expiredCode');\n case 'rate-limited':\n return t('verifyIdentity.verifyRateLimited', { seconds: waitSeconds });\n default:\n return t('verifyIdentity.genericError');\n }\n };\n}\n\ninterface StepProps {\n /** Called once the host says the proof is good. */\n onDone: () => void;\n /** Reports whether a call to the host is out, for `data-submitting`. */\n onBusyChange: (busy: boolean) => void;\n}\n\n/* -------------------------------------------------------------------- */\n/* Password */\n/* -------------------------------------------------------------------- */\n\ninterface PasswordStepProps extends StepProps {\n verify?: (password: string) => Promise<VerifyResult>;\n}\n\nexport function PasswordStep({\n verify,\n onDone,\n onBusyChange,\n}: PasswordStepProps) {\n const { t } = useTranslation('ui');\n const mounted = useMounted();\n const input = useRef<HTMLInputElement>(null);\n const [busy, setBusy] = useState(false);\n const [failure, setFailure] = useState<Failure | null>(null);\n const wait = useCountdown();\n const text = useFailureText(true);\n\n const locked = failure?.kind === 'rate-limited' && wait.remaining > 0;\n useEffect(() => {\n if (wait.finished) setFailure(null);\n }, [wait.finished]);\n\n const submit = async (event: FormEvent) => {\n event.preventDefault();\n // Read from the input, not state: the value stays out of the DOM\n // and out of React.\n const password = input.current?.value ?? '';\n if (busy || locked) return;\n if (password === '') {\n setFailure({\n kind: 'invalid',\n message: t('verifyIdentity.password.required'),\n });\n input.current?.focus();\n return;\n }\n setBusy(true);\n onBusyChange(true);\n setFailure(null);\n const result = await ask(() => verify!(password), ERROR_RESULT);\n if (!mounted.current) return;\n setBusy(false);\n onBusyChange(false);\n if (result.status === 'ok') {\n onDone();\n return;\n }\n if (input.current) input.current.value = '';\n if (result.status === 'rate-limited') wait.start(result.waitSeconds);\n setFailure(failureFrom(result));\n input.current?.focus();\n };\n\n return (\n <form\n noValidate\n onSubmit={submit}\n aria-busy={busy || undefined}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n <FormField\n label={t('verifyIdentity.password.label')}\n required\n error={text(failure, wait.remaining)}\n >\n <PasswordInput\n ref={input}\n name=\"password\"\n autoComplete=\"current-password\"\n disabled={busy}\n />\n </FormField>\n <Button\n type=\"submit\"\n intent=\"primary\"\n size=\"lg\"\n loading={busy}\n aria-disabled={locked || undefined}\n data-action=\"verify\"\n className=\"ds:self-start\"\n >\n {t('verifyIdentity.continue')}\n </Button>\n </form>\n );\n}\n\n/* -------------------------------------------------------------------- */\n/* A code: from the authenticator app, or sent by SMS or email */\n/* -------------------------------------------------------------------- */\n\ntype SendPhase = 'sending' | 'ready' | 'failed' | 'limited';\n\ninterface CodeStepProps extends StepProps {\n kind: 'authenticator' | 'sms' | 'email';\n codeLength: number;\n /** Absent for the authenticator: the app makes its own codes. */\n send?: () => Promise<SendCodeResult>;\n verify?: (code: string) => Promise<VerifyResult>;\n}\n\nconst DEFAULT_RESEND_SECONDS = 30;\n\nexport function CodeStep({\n kind,\n codeLength,\n send,\n verify,\n onDone,\n onBusyChange,\n}: CodeStepProps) {\n const { t } = useTranslation('ui');\n const mounted = useMounted();\n const panel = useRef<HTMLDivElement>(null);\n const sends = kind !== 'authenticator';\n\n const [phase, setPhase] = useState<SendPhase>(sends ? 'sending' : 'ready');\n const [sendMessage, setSendMessage] = useState<string | undefined>();\n const [hasCode, setHasCode] = useState(!sends);\n const [code, setCode] = useState('');\n const [verifying, setVerifying] = useState(false);\n const [failure, setFailure] = useState<Failure | null>(null);\n const resend = useCountdown();\n const expiry = useCountdown();\n const wait = useCountdown();\n const text = useFailureText();\n\n const focusFirstBox = useCallback(() => {\n panel.current?.querySelector<HTMLInputElement>('input')?.focus();\n }, []);\n\n const sendCount = useRef(0);\n const sendCode = useCallback(async () => {\n sendCount.current += 1;\n setPhase('sending');\n setFailure(null);\n setCode('');\n onBusyChange(true);\n const result = await ask(send, ERROR_RESULT);\n if (!mounted.current) return;\n onBusyChange(false);\n if (result.status === 'sent') {\n setPhase('ready');\n setHasCode(true);\n resend.start(result.resendAfterSeconds ?? DEFAULT_RESEND_SECONDS);\n if (result.expiresInSeconds) expiry.start(result.expiresInSeconds);\n else expiry.stop();\n return;\n }\n if (result.status === 'rate-limited') {\n setPhase('limited');\n resend.start(result.waitSeconds);\n return;\n }\n setSendMessage(result.message);\n setPhase('failed');\n // eslint-disable-next-line react-hooks/exhaustive-deps -- the countdown objects are stable enough, and `send` is read fresh\n }, [send, onBusyChange]);\n\n // The code goes out when the step opens. The ref keeps a development\n // double mount from sending two.\n const started = useRef(false);\n useEffect(() => {\n if (!sends || started.current) return;\n started.current = true;\n void sendCode();\n }, [sends, sendCode]);\n\n // Focus follows the box when a new code arrives.\n const lastPhase = useRef(phase);\n useEffect(() => {\n // The first code leaves focus on the step heading; a new one moves\n // it to the box.\n if (\n phase === 'ready' &&\n lastPhase.current === 'sending' &&\n hasCode &&\n sendCount.current > 1\n ) {\n focusFirstBox();\n }\n lastPhase.current = phase;\n }, [phase, hasCode, focusFirstBox]);\n\n const locked = failure?.kind === 'rate-limited' && wait.remaining > 0;\n useEffect(() => {\n if (wait.finished) setFailure(null);\n }, [wait.finished]);\n\n // The code timed out in the browser: say so, the server still decides.\n const expiredHere = expiry.finished && !failure;\n const shown: Failure | null =\n failure ?? (expiredHere ? { kind: 'expired' } : null);\n\n const verifyCode = async (value: string) => {\n if (verifying || locked || value.length !== codeLength) return;\n setVerifying(true);\n onBusyChange(true);\n setFailure(null);\n const result = await ask(() => verify!(value), ERROR_RESULT);\n if (!mounted.current) return;\n setVerifying(false);\n onBusyChange(false);\n if (result.status === 'ok') {\n onDone();\n return;\n }\n if (result.status === 'rate-limited') wait.start(result.waitSeconds);\n setFailure(failureFrom(result));\n setCode('');\n // After the box is enabled again.\n window.setTimeout(focusFirstBox, 0);\n };\n\n const waiting = resend.remaining > 0;\n const showBox = hasCode;\n const canResend = sends && phase !== 'sending';\n\n return (\n <div\n ref={panel}\n data-slot=\"code-step\"\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n {/* Always mounted: a live region announces a change, not its first\n content. */}\n <div\n role=\"status\"\n className=\"type-body-sm ds:text-[var(--muted-foreground)]\"\n >\n {phase === 'sending' ? t('verifyIdentity.sending') : null}\n </div>\n\n {phase === 'failed' && (\n <Alert variant=\"error\" data-slot=\"send-failed\">\n <Alert.Description>\n {sendMessage ?? t('verifyIdentity.sendFailed')}\n </Alert.Description>\n </Alert>\n )}\n {phase === 'limited' && (\n <Alert variant=\"warning\" data-slot=\"send-limited\">\n <Alert.Description>\n {resend.remaining > 0\n ? t('verifyIdentity.sendRateLimited', {\n seconds: resend.remaining,\n })\n : t('verifyIdentity.sendRateLimitedOver')}\n </Alert.Description>\n </Alert>\n )}\n\n {showBox && (\n <FormField\n label={t('verifyIdentity.codeLabel')}\n error={text(shown, wait.remaining)}\n >\n <OTPInput\n length={codeLength}\n mode=\"numeric\"\n // SMS autofill where the browser offers it; the first box\n // always carries `autocomplete=\"one-time-code\"`.\n webOtp={kind === 'sms'}\n value={code}\n onChange={setCode}\n onComplete={(value) => void verifyCode(value)}\n disabled={verifying}\n />\n </FormField>\n )}\n\n {showBox && expiry.remaining > 0 && (\n <p\n className=\"type-body-sm ds:text-[var(--muted-foreground)]\"\n data-slot=\"expiry\"\n >\n {t('verifyIdentity.expiresIn', {\n time: formatClock(expiry.remaining),\n })}\n </p>\n )}\n\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-sm)]\">\n {showBox && (\n <Button\n type=\"button\"\n intent=\"primary\"\n size=\"lg\"\n loading={verifying}\n aria-disabled={code.length !== codeLength || locked || undefined}\n data-action=\"verify\"\n onClick={() => void verifyCode(code)}\n >\n {t('verifyIdentity.verify')}\n </Button>\n )}\n {canResend && (\n <Button\n type=\"button\"\n intent={showBox ? 'outline' : 'primary'}\n size=\"lg\"\n disabled={verifying}\n // Not native `disabled` for the wait: focus stays on the button.\n aria-disabled={waiting || undefined}\n data-action={phase === 'failed' ? 'retry-send' : 'resend-code'}\n onClick={() => {\n if (!waiting) void sendCode();\n }}\n >\n {waiting\n ? t('verifyIdentity.resendIn', { seconds: resend.remaining })\n : phase === 'failed'\n ? t('verifyIdentity.tryAgain')\n : t('verifyIdentity.resend')}\n </Button>\n )}\n </div>\n </div>\n );\n}\n","/* -------------------------------------------------------------------- */\n/* VerifyIdentity: the \"Verify it's you\" step-up flow. */\n/* */\n/* The host passes an ordered list of steps. The server decides which */\n/* steps a user needs and in which order; the UI only renders them one */\n/* after another, and calls `onVerified` after the last. Every check is */\n/* a callback the host owns: the kit makes no request and never builds */\n/* or reveals a full phone number or address, it shows the masked text */\n/* it is given. */\n/* -------------------------------------------------------------------- */\n\nimport {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n} from 'react';\nimport { useTranslation } from 'react-i18next';\nimport { CircleCheck } from 'lucide-react';\nimport { cva } from 'class-variance-authority';\nimport { Alert } from '../../components/alert';\nimport { Button } from '../../components/button';\nimport { Dialog } from '../../components/dialog';\nimport { isSafeHref } from '../../components/_shared/safe-href';\nimport { CodeStep, PasswordStep } from './verify-identity-steps';\nimport type {\n VerifyIdentityCallbacks,\n VerifyIdentityStep,\n} from './verify-identity-types';\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\nexport interface VerifyIdentityProps\n extends\n VerifyIdentityCallbacks,\n Omit<HTMLAttributes<HTMLDivElement>, 'title'> {\n /**\n * The proofs to ask for, in order. The server decides both; the UI\n * renders them as given.\n */\n steps: readonly VerifyIdentityStep[];\n /** What the user is about to do, such as \"Change login email\". Pass it\n * translated. Default \"Verify it's you\". */\n title?: string;\n /** The line under the title, such as \"Confirm it is you before you change\n * your login email.\" Pass it translated. */\n description?: string;\n /** Level of the title. Default 2; each step heading is one deeper. */\n headingLevel?: 2 | 3;\n /** The phone the SMS goes to, already masked: \"+39 ••• ••• 4567\". The kit\n * never builds a masked number itself. */\n maskedPhone?: string;\n /** The current login email, already masked: \"m••••@example.com\". */\n maskedEmail?: string;\n /** Digits in a code. Default 6. */\n codeLength?: number;\n /**\n * True when the user has no confirmed mobile. The steps do not run:\n * the card explains why one is needed and offers to set it up.\n */\n missingMobile?: boolean;\n /** Called by the set-up button of the missing-mobile card. */\n onSetUpMobile?: () => void;\n /** Where the set-up button leads instead. A path on the same site, or an\n * address written in full. */\n setUpMobileHref?: string;\n /** Called after the last step is right. */\n onVerified: () => void;\n /** Adds a Cancel button. */\n onCancel?: () => void;\n /** Hides the title and description, for a host that draws its own, such as\n * a dialog. */\n hideHeader?: boolean;\n}\n\n/* -------------------------------------------------------------------- */\n/* Styles */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva(\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:text-start ds:text-[var(--foreground)]',\n);\n\nconst headingVariants = cva(\n 'type-h4 ds:m-0 ds:focus-visible:outline-solid ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)] ds:forced-colors:focus-visible:outline-[CanvasText]',\n);\n\nconst HEADINGS = { 2: 'h2', 3: 'h3', 4: 'h4' } as const;\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\ntype Position = number | 'verified';\n\nfunction VerifyIdentityInner({\n steps,\n title,\n description,\n headingLevel = 2,\n maskedPhone,\n maskedEmail,\n codeLength = 6,\n missingMobile = false,\n onSetUpMobile,\n setUpMobileHref,\n onVerified,\n onCancel,\n hideHeader = false,\n onVerifyPassword,\n onVerifyAuthenticator,\n onSendSmsCode,\n onVerifySmsCode,\n onSendEmailCode,\n onVerifyEmailCode,\n className,\n forwardedRef,\n ...rest\n}: VerifyIdentityProps & { forwardedRef: React.Ref<HTMLDivElement> }) {\n const { t } = useTranslation('ui');\n const titleId = useId();\n const stepTitleId = useId();\n const [position, setPosition] = useState<Position>(0);\n const [busy, setBusy] = useState(false);\n const stepHeading = useRef<HTMLHeadingElement>(null);\n\n const index = typeof position === 'number' ? position : steps.length - 1;\n const step = steps[index];\n const state = missingMobile\n ? 'missing-factor'\n : position === 'verified'\n ? 'verified'\n : (step ?? 'empty');\n\n // Focus goes to the new step's heading when the step changes, not when\n // the flow first opens: a dialog places focus itself.\n const first = useRef(true);\n useEffect(() => {\n if (first.current) {\n first.current = false;\n return;\n }\n stepHeading.current?.focus();\n }, [position]);\n\n const onBusyChange = useCallback((value: boolean) => setBusy(value), []);\n\n const next = useCallback(() => {\n setBusy(false);\n if (index + 1 < steps.length) {\n setPosition(index + 1);\n } else {\n setPosition('verified');\n onVerified();\n }\n }, [index, steps.length, onVerified]);\n\n const phone = maskedPhone;\n const email = maskedEmail;\n const stepText = useMemo(\n () => ({\n password: {\n title: t('verifyIdentity.password.title'),\n description: t('verifyIdentity.password.description'),\n },\n authenticator: {\n title: t('verifyIdentity.authenticator.title'),\n description: t('verifyIdentity.authenticator.description'),\n },\n sms: {\n title: t('verifyIdentity.sms.title'),\n description: phone\n ? t('verifyIdentity.sms.description', { phone })\n : t('verifyIdentity.sms.descriptionNoPhone'),\n },\n email: {\n title: t('verifyIdentity.email.title'),\n description: email\n ? t('verifyIdentity.email.description', { email })\n : t('verifyIdentity.email.descriptionNoEmail'),\n },\n }),\n [t, phone, email],\n );\n\n const Title = HEADINGS[headingLevel];\n const StepTitle = HEADINGS[(headingLevel + 1) as 3 | 4];\n const setUpLink =\n setUpMobileHref && isSafeHref(setUpMobileHref)\n ? setUpMobileHref\n : undefined;\n\n let body: React.ReactNode = null;\n let heading: string | undefined;\n let lead: string | undefined;\n\n if (missingMobile) {\n heading = t('verifyIdentity.missingMobile.title');\n lead = t('verifyIdentity.missingMobile.description');\n body = (\n <div\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n data-slot=\"missing-factor\"\n >\n <Alert variant=\"warning\" announce=\"off\">\n <Alert.Description>\n {t('verifyIdentity.missingMobile.reason')}\n </Alert.Description>\n </Alert>\n {(onSetUpMobile || setUpLink) &&\n (setUpLink ? (\n <Button\n asChild\n intent=\"primary\"\n size=\"lg\"\n className=\"ds:self-start\"\n >\n <a href={setUpLink} data-action=\"set-up-mobile\">\n {t('verifyIdentity.missingMobile.action')}\n </a>\n </Button>\n ) : (\n <Button\n type=\"button\"\n intent=\"primary\"\n size=\"lg\"\n data-action=\"set-up-mobile\"\n className=\"ds:self-start\"\n onClick={onSetUpMobile}\n >\n {t('verifyIdentity.missingMobile.action')}\n </Button>\n ))}\n </div>\n );\n } else if (position === 'verified') {\n heading = t('verifyIdentity.verified');\n body = (\n <p className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-success ds:m-0\">\n <CircleCheck aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <span>{t('verifyIdentity.verifiedDescription')}</span>\n </p>\n );\n } else if (step) {\n heading = stepText[step].title;\n lead = stepText[step].description;\n body = (\n <div key={`${step}-${index}`} data-step={step}>\n {step === 'password' ? (\n <PasswordStep\n verify={onVerifyPassword}\n onDone={next}\n onBusyChange={onBusyChange}\n />\n ) : step === 'authenticator' ? (\n <CodeStep\n kind=\"authenticator\"\n codeLength={codeLength}\n verify={onVerifyAuthenticator}\n onDone={next}\n onBusyChange={onBusyChange}\n />\n ) : step === 'sms' ? (\n <CodeStep\n kind=\"sms\"\n codeLength={codeLength}\n send={onSendSmsCode}\n verify={onVerifySmsCode}\n onDone={next}\n onBusyChange={onBusyChange}\n />\n ) : (\n <CodeStep\n kind=\"email\"\n codeLength={codeLength}\n send={onSendEmailCode}\n verify={onVerifyEmailCode}\n onDone={next}\n onBusyChange={onBusyChange}\n />\n )}\n </div>\n );\n }\n\n return (\n <div\n ref={forwardedRef}\n {...rest}\n data-component=\"verify-identity\"\n data-state={state}\n data-step-index={missingMobile ? undefined : index}\n data-step-count={steps.length}\n data-submitting={busy ? 'true' : 'false'}\n className={rootVariants({ className })}\n >\n {!hideHeader && (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <Title id={titleId} className=\"type-h3 ds:m-0\">\n {title ?? t('verifyIdentity.title')}\n </Title>\n <p className=\"type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]\">\n {description ?? t('verifyIdentity.description')}\n </p>\n </div>\n )}\n\n <div\n role=\"group\"\n aria-labelledby={stepTitleId}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n {steps.length > 1 && !missingMobile && position !== 'verified' && (\n <p\n className=\"type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]\"\n data-slot=\"progress\"\n >\n {t('verifyIdentity.progress', {\n current: index + 1,\n total: steps.length,\n })}\n </p>\n )}\n <StepTitle\n ref={stepHeading}\n id={stepTitleId}\n tabIndex={-1}\n className={headingVariants()}\n >\n {heading}\n </StepTitle>\n {lead && (\n <p className=\"type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]\">\n {lead}\n </p>\n )}\n </div>\n {body}\n </div>\n\n {onCancel && position !== 'verified' && (\n <Button\n type=\"button\"\n intent=\"ghost\"\n data-action=\"cancel\"\n className=\"ds:self-start\"\n onClick={onCancel}\n >\n {t('verifyIdentity.cancel')}\n </Button>\n )}\n </div>\n );\n}\n\n/**\n * The \"Verify it's you\" step-up flow, inline. Use `VerifyIdentityDialog`\n * for a dialog. The server decides the steps and checks every answer: this\n * only renders them.\n */\nexport const VerifyIdentity = forwardRef<HTMLDivElement, VerifyIdentityProps>(\n (props, ref) => (\n // A new list of steps starts the flow again.\n <VerifyIdentityInner\n key={`${props.steps.join(',')}|${props.missingMobile ? 'm' : ''}`}\n {...props}\n forwardedRef={ref}\n />\n ),\n);\nVerifyIdentity.displayName = 'VerifyIdentity';\n\n/* -------------------------------------------------------------------- */\n/* Dialog */\n/* -------------------------------------------------------------------- */\n\nexport interface VerifyIdentityDialogProps extends Omit<\n VerifyIdentityProps,\n 'hideHeader' | 'headingLevel' | 'onCancel'\n> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n}\n\n/** `VerifyIdentity` in a dialog. Closing it starts the flow again next time. */\nexport function VerifyIdentityDialog({\n open,\n onOpenChange,\n title,\n description,\n ...flow\n}: VerifyIdentityDialogProps) {\n const { t } = useTranslation('ui');\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content size=\"md\">\n <Dialog.Header>\n <Dialog.Title>{title ?? t('verifyIdentity.title')}</Dialog.Title>\n <Dialog.Description>\n {description ?? t('verifyIdentity.description')}\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Body>\n <VerifyIdentity\n {...flow}\n hideHeader\n onCancel={() => onOpenChange(false)}\n />\n </Dialog.Body>\n </Dialog.Content>\n </Dialog.Root>\n );\n}\n","/* -------------------------------------------------------------------- */\n/* ChangeEmailDialog: verify it is you, then ask for the new login email */\n/* twice, then say what happens next. */\n/* */\n/* The host owns the rules. `onSubmitNewEmail` answers with a typed */\n/* result; the dialog shows it. The final message never repeats the new */\n/* address. */\n/* -------------------------------------------------------------------- */\n\nimport { useEffect, useId, useRef, useState, type FormEvent } from 'react';\nimport { useTranslation } from 'react-i18next';\nimport isEmail from 'validator/lib/isEmail';\nimport { Alert } from '../../components/alert';\nimport { Button } from '../../components/button';\nimport { Dialog } from '../../components/dialog';\nimport { FormField } from '../../components/form-field';\nimport { TextInput } from '../../components/text-input';\nimport { VerifyIdentity, type VerifyIdentityProps } from './verify-identity';\n\n/** What the host answers once it has tried to change the email. */\nexport type ChangeEmailResult =\n | { status: 'ok' }\n | { status: 'already-in-use' }\n | { status: 'invalid' }\n | {\n status: 'error';\n /** Already translated. Shown in place of the kit's own line. */\n message?: string;\n };\n\nexport interface ChangeEmailDialogProps extends Omit<\n VerifyIdentityProps,\n 'hideHeader' | 'headingLevel' | 'onCancel' | 'onVerified'\n> {\n open: boolean;\n onOpenChange: (open: boolean) => void;\n /** Called with the new address once both entries match and look like an\n * email. The host checks it for real. */\n onSubmitNewEmail: (email: string) => Promise<ChangeEmailResult>;\n}\n\ntype Phase = 'verify' | 'new-email' | 'done';\n\nconst headingClass =\n 'type-h4 ds:m-0 ds:focus-visible:outline-solid ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)] ds:forced-colors:focus-visible:outline-[CanvasText]';\n\nfunction ChangeEmailBody({\n onOpenChange,\n onSubmitNewEmail,\n ...flow\n}: Omit<ChangeEmailDialogProps, 'open' | 'title' | 'description'>) {\n const { t } = useTranslation('ui');\n const [phase, setPhase] = useState<Phase>('verify');\n const [email, setEmail] = useState('');\n const [again, setAgain] = useState('');\n const [errors, setErrors] = useState<{ email?: string; again?: string }>({});\n const [formError, setFormError] = useState<string | undefined>();\n const [submitting, setSubmitting] = useState(false);\n const heading = useRef<HTMLHeadingElement>(null);\n const doneBox = useRef<HTMLDivElement>(null);\n const emailInput = useRef<HTMLInputElement>(null);\n const againInput = useRef<HTMLInputElement>(null);\n const headingId = useId();\n const mounted = useRef(true);\n useEffect(() => {\n mounted.current = true;\n return () => {\n mounted.current = false;\n };\n }, []);\n\n // Focus goes to the heading of the new phase.\n useEffect(() => {\n if (phase === 'new-email') heading.current?.focus();\n if (phase === 'done') doneBox.current?.focus();\n }, [phase]);\n\n if (phase === 'verify') {\n return (\n <VerifyIdentity\n {...flow}\n hideHeader\n onCancel={() => onOpenChange(false)}\n onVerified={() => setPhase('new-email')}\n />\n );\n }\n\n if (phase === 'done') {\n return (\n <div\n data-component=\"change-email-dialog\"\n data-state=\"done\"\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n <Alert\n ref={doneBox}\n variant=\"success\"\n tabIndex={-1}\n aria-labelledby={headingId}\n >\n <Alert.Title as=\"h3\" id={headingId}>\n {t('verifyIdentity.changeEmail.doneTitle')}\n </Alert.Title>\n <Alert.Description>\n {t('verifyIdentity.changeEmail.doneDescription')}\n </Alert.Description>\n </Alert>\n <Button\n type=\"button\"\n intent=\"primary\"\n size=\"lg\"\n data-action=\"close\"\n className=\"ds:self-start\"\n onClick={() => onOpenChange(false)}\n >\n {t('verifyIdentity.changeEmail.close')}\n </Button>\n </div>\n );\n }\n\n const submit = async (event: FormEvent) => {\n event.preventDefault();\n if (submitting) return;\n const next: { email?: string; again?: string } = {};\n const value = email.trim();\n if (value === '') next.email = t('verifyIdentity.changeEmail.required');\n else if (!isEmail(value)) next.email = t('inputs.email.invalid');\n else if (again.trim() !== value) {\n next.again = t('verifyIdentity.changeEmail.mismatch');\n }\n setErrors(next);\n setFormError(undefined);\n if (next.email || next.again) {\n (next.email ? emailInput : againInput).current?.focus();\n return;\n }\n setSubmitting(true);\n let result: ChangeEmailResult;\n try {\n result = await onSubmitNewEmail(value);\n } catch {\n result = { status: 'error' };\n }\n if (!mounted.current) return;\n setSubmitting(false);\n if (result.status === 'ok') {\n setPhase('done');\n return;\n }\n if (result.status === 'already-in-use') {\n setErrors({ email: t('verifyIdentity.changeEmail.alreadyInUse') });\n emailInput.current?.focus();\n } else if (result.status === 'invalid') {\n setErrors({ email: t('verifyIdentity.changeEmail.invalid') });\n emailInput.current?.focus();\n } else {\n setFormError(result.message ?? t('verifyIdentity.genericError'));\n }\n };\n\n return (\n <form\n noValidate\n onSubmit={submit}\n aria-busy={submitting || undefined}\n data-component=\"change-email-dialog\"\n data-state=\"new-email\"\n data-submitting={submitting ? 'true' : 'false'}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)]\"\n >\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)]\">\n <h3 ref={heading} tabIndex={-1} className={headingClass}>\n {t('verifyIdentity.changeEmail.newTitle')}\n </h3>\n <p className=\"type-body-sm ds:m-0 ds:text-[var(--muted-foreground)]\">\n {t('verifyIdentity.changeEmail.newDescription')}\n </p>\n </div>\n {formError && (\n <Alert variant=\"error\">\n <Alert.Description>{formError}</Alert.Description>\n </Alert>\n )}\n <FormField\n label={t('verifyIdentity.changeEmail.newLabel')}\n required\n error={errors.email}\n >\n <TextInput\n ref={emailInput}\n type=\"email\"\n inputMode=\"email\"\n name=\"newEmail\"\n autoComplete=\"off\"\n value={email}\n disabled={submitting}\n onChange={(event) => {\n setEmail(event.target.value);\n setErrors((previous) => ({ ...previous, email: undefined }));\n }}\n />\n </FormField>\n <FormField\n label={t('verifyIdentity.changeEmail.confirmLabel')}\n required\n error={errors.again}\n >\n <TextInput\n ref={againInput}\n type=\"email\"\n inputMode=\"email\"\n name=\"newEmailConfirm\"\n autoComplete=\"off\"\n value={again}\n disabled={submitting}\n onChange={(event) => {\n setAgain(event.target.value);\n setErrors((previous) => ({ ...previous, again: undefined }));\n }}\n />\n </FormField>\n <div className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-sm)]\">\n <Button\n type=\"submit\"\n intent=\"primary\"\n size=\"lg\"\n loading={submitting}\n data-action=\"submit\"\n >\n {t('verifyIdentity.changeEmail.submit')}\n </Button>\n <Button\n type=\"button\"\n intent=\"ghost\"\n size=\"lg\"\n disabled={submitting}\n data-action=\"cancel\"\n onClick={() => onOpenChange(false)}\n >\n {t('verifyIdentity.cancel')}\n </Button>\n </div>\n </form>\n );\n}\n\n/**\n * Change the login email: the \"Verify it's you\" steps, then the new\n * address twice, then a confirmation. Closing the dialog starts again.\n */\nexport function ChangeEmailDialog({\n open,\n onOpenChange,\n title,\n description,\n ...body\n}: ChangeEmailDialogProps) {\n const { t } = useTranslation('ui');\n return (\n <Dialog.Root open={open} onOpenChange={onOpenChange}>\n <Dialog.Content size=\"md\">\n <Dialog.Header>\n <Dialog.Title>\n {title ?? t('verifyIdentity.changeEmail.title')}\n </Dialog.Title>\n <Dialog.Description>\n {description ?? t('verifyIdentity.changeEmail.description')}\n </Dialog.Description>\n </Dialog.Header>\n <Dialog.Body>\n <ChangeEmailBody onOpenChange={onOpenChange} {...body} />\n </Dialog.Body>\n </Dialog.Content>\n </Dialog.Root>\n );\n}\n","/* -------------------------------------------------------------------- */\n/* The contract between VerifyIdentity and its host. */\n/* */\n/* The host owns every rule: which steps a user needs, in which order, */\n/* whether a code is right, how often one may be sent. The UI renders */\n/* the answers. Results are a discriminated union on `status`, so a host */\n/* cannot forget a case. */\n/* -------------------------------------------------------------------- */\n\n/** One proof the user gives. The server decides the order. */\nexport const VERIFY_IDENTITY_STEPS = [\n 'password',\n 'authenticator',\n 'sms',\n 'email',\n] as const;\n\nexport type VerifyIdentityStep = (typeof VERIFY_IDENTITY_STEPS)[number];\n\n/** What a check of a password or a code answers. */\nexport type VerifyResult =\n | { status: 'ok' }\n | { status: 'invalid' }\n | { status: 'expired' }\n | { status: 'rate-limited'; waitSeconds: number }\n | {\n status: 'error';\n /** Already translated. Shown in place of the kit's own line. */\n message?: string;\n };\n\n/** What sending an SMS or email code answers. */\nexport type SendCodeResult =\n | {\n status: 'sent';\n /** How long the code lives. Shown as a countdown when given. */\n expiresInSeconds?: number;\n /** How long until the user may ask for another. Default 30. */\n resendAfterSeconds?: number;\n }\n | { status: 'rate-limited'; waitSeconds: number }\n | {\n status: 'error';\n /** Already translated. Shown in place of the kit's own line. */\n message?: string;\n };\n\n/** The host's checks. Each one is called by the UI, never by the kit\n * itself: the kit makes no request. The password and the codes are\n * passed to these and nowhere else; the kit never logs or stores them. */\nexport interface VerifyIdentityCallbacks {\n onVerifyPassword?: (password: string) => Promise<VerifyResult>;\n onVerifyAuthenticator?: (code: string) => Promise<VerifyResult>;\n /** Called once when the SMS step opens, and again on resend. */\n onSendSmsCode?: () => Promise<SendCodeResult>;\n onVerifySmsCode?: (code: string) => Promise<VerifyResult>;\n /** Called once when the email step opens, and again on resend. */\n onSendEmailCode?: () => Promise<SendCodeResult>;\n onVerifyEmailCode?: (code: string) => Promise<VerifyResult>;\n}\n"],"names":["useCountdown","deadline","setDeadline","useState","remaining","setRemaining","finished","setFinished","timer","useRef","useEffect","tick","left","start","useCallback","seconds","whole","stop","formatClock","m","s","failureFrom","result","ask","call","fallback","ERROR_RESULT","useMounted","mounted","useFailureText","passwordStep","t","useTranslation","failure","waitSeconds","PasswordStep","verify","onDone","onBusyChange","input","busy","setBusy","setFailure","wait","text","locked","jsxs","event","password","_a","_b","_c","jsx","FormField","PasswordInput","Button","DEFAULT_RESEND_SECONDS","CodeStep","kind","codeLength","send","panel","sends","phase","setPhase","sendMessage","setSendMessage","hasCode","setHasCode","code","setCode","verifying","setVerifying","resend","expiry","focusFirstBox","sendCount","sendCode","started","lastPhase","expiredHere","shown","verifyCode","value","waiting","showBox","canResend","Alert","OTPInput","rootVariants","cva","headingVariants","HEADINGS","VerifyIdentityInner","steps","title","description","headingLevel","maskedPhone","maskedEmail","missingMobile","onSetUpMobile","setUpMobileHref","onVerified","onCancel","hideHeader","onVerifyPassword","onVerifyAuthenticator","onSendSmsCode","onVerifySmsCode","onSendEmailCode","onVerifyEmailCode","className","forwardedRef","rest","titleId","useId","stepTitleId","position","setPosition","stepHeading","index","step","state","first","next","phone","email","stepText","useMemo","Title","StepTitle","setUpLink","isSafeHref","body","heading","lead","CircleCheck","VerifyIdentity","forwardRef","props","ref","VerifyIdentityDialog","open","onOpenChange","flow","Dialog","headingClass","ChangeEmailBody","onSubmitNewEmail","setEmail","again","setAgain","errors","setErrors","formError","setFormError","submitting","setSubmitting","doneBox","emailInput","againInput","headingId","isEmail","TextInput","previous","ChangeEmailDialog","VERIFY_IDENTITY_STEPS"],"mappings":";;;;;;;;;;;;;;AAcO,SAASA,IAA0B;AACxC,QAAM,CAACC,GAAUC,CAAW,IAAIC,EAAwB,IAAI,GACtD,CAACC,GAAWC,CAAY,IAAIF,EAAS,CAAC,GACtC,CAACG,GAAUC,CAAW,IAAIJ,EAAS,EAAK,GACxCK,IAAQC,EAA2B,MAAS;AAElD,EAAAC,EAAU,MAAM;AACd,QAAIT,MAAa,KAAM;AACvB,UAAMU,IAAO,MAAM;AACjB,YAAMC,IAAO,KAAK,IAAI,GAAG,KAAK,MAAMX,IAAW,KAAK,IAAA,KAAS,GAAI,CAAC;AAClE,MAAAI,EAAaO,CAAI,GACbA,MAAS,MACXV,EAAY,IAAI,GAChBK,EAAY,EAAI;AAAA,IAEpB;AACA,WAAAI,EAAA,GACAH,EAAM,UAAU,OAAO,YAAYG,GAAM,GAAI,GACtC,MAAM,OAAO,cAAcH,EAAM,OAAO;AAAA,EACjD,GAAG,CAACP,CAAQ,CAAC;AAEb,QAAMY,IAAQC,EAAY,CAACC,MAAoB;AAC7C,UAAMC,IAAQ,KAAK,IAAI,GAAG,KAAK,KAAKD,CAAO,CAAC;AAE5C,QADAR,EAAY,EAAK,GACbS,MAAU,GAAG;AACf,MAAAd,EAAY,IAAI,GAChBG,EAAa,CAAC;AACd;AAAA,IACF;AACA,IAAAA,EAAaW,CAAK,GAClBd,EAAY,KAAK,QAAQc,IAAQ,GAAI;AAAA,EACvC,GAAG,CAAA,CAAE,GAECC,IAAOH,EAAY,MAAM;AAC7B,IAAAZ,EAAY,IAAI,GAChBG,EAAa,CAAC,GACdE,EAAY,EAAK;AAAA,EACnB,GAAG,CAAA,CAAE;AAEL,SAAO,EAAE,WAAAH,GAAW,UAAAE,GAAU,OAAAO,GAAO,MAAAI,EAAA;AACvC;AAGO,SAASC,GAAYH,GAAyB;AACnD,QAAMI,IAAI,KAAK,MAAMJ,IAAU,EAAE,GAC3BK,IAAIL,IAAU;AACpB,SAAO,GAAGI,CAAC,IAAI,OAAOC,CAAC,EAAE,SAAS,GAAG,GAAG,CAAC;AAC3C;ACvBA,MAAMC,KAAc,CAACC,MACnBA,EAAO,WAAW,UACb,EAAE,MAAM,SAAS,SAASA,EAAO,QAAA,IACjC,EAAE,MAAMA,EAAO,OAAA;AAItB,eAAeC,GACbC,GACAC,GACY;AACZ,MAAI,CAACD,EAAM,QAAOC;AAClB,MAAI;AACF,WAAO,MAAMD,EAAA;AAAA,EACf,QAAQ;AACN,WAAOC;AAAA,EACT;AACF;AAEA,MAAMC,KAAe,EAAE,QAAQ,QAAA;AAE/B,SAASC,KAAa;AACpB,QAAMC,IAAUnB,EAAO,EAAI;AAC3B,SAAAC,EAAU,OACRkB,EAAQ,UAAU,IACX,MAAM;AACX,IAAAA,EAAQ,UAAU;AAAA,EACpB,IACC,CAAA,CAAE,GACEA;AACT;AAEA,SAASC,GAAeC,IAAe,IAAO;AAC5C,QAAM,EAAE,GAAAC,EAAA,IAAMC,EAAe,IAAI;AACjC,SAAO,CAACC,GAAyBC,MAA4C;AAC3E,QAAKD,GACL;AAAA,UAAIA,EAAQ,QAAS,QAAOA,EAAQ;AACpC,cAAQA,EAAQ,MAAA;AAAA,QACd,KAAK;AACH,iBACIF,EADGD,IACD,oCACA,4BADiC;AAAA,QAEzC,KAAK;AACH,iBAAOC,EAAE,4BAA4B;AAAA,QACvC,KAAK;AACH,iBAAOA,EAAE,oCAAoC,EAAE,SAASG,GAAa;AAAA,QACvE;AACE,iBAAOH,EAAE,6BAA6B;AAAA,MAAA;AAAA;AAAA,EAE5C;AACF;AAiBO,SAASI,GAAa;AAAA,EAC3B,QAAAC;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC;AACF,GAAsB;AACpB,QAAM,EAAE,GAAAP,EAAA,IAAMC,EAAe,IAAI,GAC3BJ,IAAUD,GAAA,GACVY,IAAQ9B,EAAyB,IAAI,GACrC,CAAC+B,GAAMC,CAAO,IAAItC,EAAS,EAAK,GAChC,CAAC8B,GAASS,CAAU,IAAIvC,EAAyB,IAAI,GACrDwC,IAAO3C,EAAA,GACP4C,IAAOf,GAAe,EAAI,GAE1BgB,KAASZ,KAAA,gBAAAA,EAAS,UAAS,kBAAkBU,EAAK,YAAY;AACpE,SAAAjC,EAAU,MAAM;AACd,IAAIiC,EAAK,YAAUD,EAAW,IAAI;AAAA,EACpC,GAAG,CAACC,EAAK,QAAQ,CAAC,GAkChB,gBAAAG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV,UAlCW,OAAOC,MAAqB;;AACzC,QAAAA,EAAM,eAAA;AAGN,cAAMC,MAAWC,IAAAV,EAAM,YAAN,gBAAAU,EAAe,UAAS;AACzC,YAAIT,KAAQK,EAAQ;AACpB,YAAIG,MAAa,IAAI;AACnB,UAAAN,EAAW;AAAA,YACT,MAAM;AAAA,YACN,SAASX,EAAE,kCAAkC;AAAA,UAAA,CAC9C,IACDmB,IAAAX,EAAM,YAAN,QAAAW,EAAe;AACf;AAAA,QACF;AACA,QAAAT,EAAQ,EAAI,GACZH,EAAa,EAAI,GACjBI,EAAW,IAAI;AACf,cAAMpB,IAAS,MAAMC,GAAI,MAAMa,EAAQY,CAAQ,GAAGtB,EAAY;AAC9D,YAAKE,EAAQ,SAGb;AAAA,cAFAa,EAAQ,EAAK,GACbH,EAAa,EAAK,GACdhB,EAAO,WAAW,MAAM;AAC1B,YAAAe,EAAA;AACA;AAAA,UACF;AACA,UAAIE,EAAM,YAASA,EAAM,QAAQ,QAAQ,KACrCjB,EAAO,WAAW,kBAAgBqB,EAAK,MAAMrB,EAAO,WAAW,GACnEoB,EAAWrB,GAAYC,CAAM,CAAC,IAC9B6B,IAAAZ,EAAM,YAAN,QAAAY,EAAe;AAAA;AAAA,MACjB;AAAA,MAMI,aAAWX,KAAQ;AAAA,MACnB,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAY;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAOtB,EAAE,+BAA+B;AAAA,YACxC,UAAQ;AAAA,YACR,OAAOa,EAAKX,GAASU,EAAK,SAAS;AAAA,YAEnC,UAAA,gBAAAS;AAAA,cAACE;AAAA,cAAA;AAAA,gBACC,KAAKf;AAAA,gBACL,MAAK;AAAA,gBACL,cAAa;AAAA,gBACb,UAAUC;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAEF,gBAAAY;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,QAAO;AAAA,YACP,MAAK;AAAA,YACL,SAASf;AAAA,YACT,iBAAeK,KAAU;AAAA,YACzB,eAAY;AAAA,YACZ,WAAU;AAAA,YAET,YAAE,yBAAyB;AAAA,UAAA;AAAA,QAAA;AAAA,MAC9B;AAAA,IAAA;AAAA,EAAA;AAGN;AAgBA,MAAMW,KAAyB;AAExB,SAASC,GAAS;AAAA,EACvB,MAAAC;AAAA,EACA,YAAAC;AAAA,EACA,MAAAC;AAAA,EACA,QAAAxB;AAAA,EACA,QAAAC;AAAA,EACA,cAAAC;AACF,GAAkB;AAChB,QAAM,EAAE,GAAAP,EAAA,IAAMC,EAAe,IAAI,GAC3BJ,IAAUD,GAAA,GACVkC,IAAQpD,EAAuB,IAAI,GACnCqD,IAAQJ,MAAS,iBAEjB,CAACK,GAAOC,CAAQ,IAAI7D,EAAoB2D,IAAQ,YAAY,OAAO,GACnE,CAACG,GAAaC,CAAc,IAAI/D,EAAA,GAChC,CAACgE,GAASC,CAAU,IAAIjE,EAAS,CAAC2D,CAAK,GACvC,CAACO,GAAMC,CAAO,IAAInE,EAAS,EAAE,GAC7B,CAACoE,GAAWC,CAAY,IAAIrE,EAAS,EAAK,GAC1C,CAAC8B,GAASS,CAAU,IAAIvC,EAAyB,IAAI,GACrDsE,IAASzE,EAAA,GACT0E,IAAS1E,EAAA,GACT2C,IAAO3C,EAAA,GACP4C,IAAOf,GAAA,GAEP8C,IAAgB7D,EAAY,MAAM;;AACtC,KAAAoC,KAAAD,IAAAY,EAAM,YAAN,gBAAAZ,EAAe,cAAgC,aAA/C,QAAAC,EAAyD;AAAA,EAC3D,GAAG,CAAA,CAAE,GAEC0B,IAAYnE,EAAO,CAAC,GACpBoE,IAAW/D,EAAY,YAAY;AACvC,IAAA8D,EAAU,WAAW,GACrBZ,EAAS,SAAS,GAClBtB,EAAW,IAAI,GACf4B,EAAQ,EAAE,GACVhC,EAAa,EAAI;AACjB,UAAMhB,IAAS,MAAMC,GAAIqC,GAAMlC,EAAY;AAC3C,QAAKE,EAAQ,SAEb;AAAA,UADAU,EAAa,EAAK,GACdhB,EAAO,WAAW,QAAQ;AAC5B,QAAA0C,EAAS,OAAO,GAChBI,EAAW,EAAI,GACfK,EAAO,MAAMnD,EAAO,sBAAsBkC,EAAsB,GAC5DlC,EAAO,mBAAkBoD,EAAO,MAAMpD,EAAO,gBAAgB,MACrD,KAAA;AACZ;AAAA,MACF;AACA,UAAIA,EAAO,WAAW,gBAAgB;AACpC,QAAA0C,EAAS,SAAS,GAClBS,EAAO,MAAMnD,EAAO,WAAW;AAC/B;AAAA,MACF;AACA,MAAA4C,EAAe5C,EAAO,OAAO,GAC7B0C,EAAS,QAAQ;AAAA;AAAA,EAEnB,GAAG,CAACJ,GAAMtB,CAAY,CAAC,GAIjBwC,IAAUrE,EAAO,EAAK;AAC5B,EAAAC,EAAU,MAAM;AACd,IAAI,CAACoD,KAASgB,EAAQ,YACtBA,EAAQ,UAAU,IACbD,EAAA;AAAA,EACP,GAAG,CAACf,GAAOe,CAAQ,CAAC;AAGpB,QAAME,IAAYtE,EAAOsD,CAAK;AAC9B,EAAArD,EAAU,MAAM;AAGd,IACEqD,MAAU,WACVgB,EAAU,YAAY,aACtBZ,KACAS,EAAU,UAAU,KAEpBD,EAAA,GAEFI,EAAU,UAAUhB;AAAA,EACtB,GAAG,CAACA,GAAOI,GAASQ,CAAa,CAAC;AAElC,QAAM9B,KAASZ,KAAA,gBAAAA,EAAS,UAAS,kBAAkBU,EAAK,YAAY;AACpE,EAAAjC,EAAU,MAAM;AACd,IAAIiC,EAAK,YAAUD,EAAW,IAAI;AAAA,EACpC,GAAG,CAACC,EAAK,QAAQ,CAAC;AAGlB,QAAMqC,KAAcN,EAAO,YAAY,CAACzC,GAClCgD,IACJhD,MAAY+C,KAAc,EAAE,MAAM,cAAc,OAE5CE,IAAa,OAAOC,MAAkB;AAC1C,QAAIZ,KAAa1B,KAAUsC,EAAM,WAAWxB,EAAY;AACxD,IAAAa,EAAa,EAAI,GACjBlC,EAAa,EAAI,GACjBI,EAAW,IAAI;AACf,UAAMpB,IAAS,MAAMC,GAAI,MAAMa,EAAQ+C,CAAK,GAAGzD,EAAY;AAC3D,QAAKE,EAAQ,SAGb;AAAA,UAFA4C,EAAa,EAAK,GAClBlC,EAAa,EAAK,GACdhB,EAAO,WAAW,MAAM;AAC1B,QAAAe,EAAA;AACA;AAAA,MACF;AACA,MAAIf,EAAO,WAAW,kBAAgBqB,EAAK,MAAMrB,EAAO,WAAW,GACnEoB,EAAWrB,GAAYC,CAAM,CAAC,GAC9BgD,EAAQ,EAAE,GAEV,OAAO,WAAWK,GAAe,CAAC;AAAA;AAAA,EACpC,GAEMS,IAAUX,EAAO,YAAY,GAC7BY,IAAUlB,GACVmB,IAAYxB,KAASC,MAAU;AAErC,SACE,gBAAAjB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKe;AAAA,MACL,aAAU;AAAA,MACV,WAAU;AAAA,MAIV,UAAA;AAAA,QAAA,gBAAAT;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,WAAU;AAAA,YAET,UAAAW,MAAU,YAAYhC,EAAE,wBAAwB,IAAI;AAAA,UAAA;AAAA,QAAA;AAAA,QAGtDgC,MAAU,YACT,gBAAAX,EAACmC,GAAA,EAAM,SAAQ,SAAQ,aAAU,eAC/B,UAAA,gBAAAnC,EAACmC,EAAM,aAAN,EACE,UAAAtB,KAAelC,EAAE,2BAA2B,GAC/C,GACF;AAAA,QAEDgC,MAAU,aACT,gBAAAX,EAACmC,GAAA,EAAM,SAAQ,WAAU,aAAU,gBACjC,UAAA,gBAAAnC,EAACmC,EAAM,aAAN,EACE,UAAAd,EAAO,YAAY,IAChB1C,EAAE,kCAAkC;AAAA,UAClC,SAAS0C,EAAO;AAAA,QAAA,CACjB,IACD1C,EAAE,oCAAoC,GAC5C,EAAA,CACF;AAAA,QAGDsD,KACC,gBAAAjC;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAOtB,EAAE,0BAA0B;AAAA,YACnC,OAAOa,EAAKqC,GAAOtC,EAAK,SAAS;AAAA,YAEjC,UAAA,gBAAAS;AAAA,cAACoC;AAAA,cAAA;AAAA,gBACC,QAAQ7B;AAAA,gBACR,MAAK;AAAA,gBAGL,QAAQD,MAAS;AAAA,gBACjB,OAAOW;AAAA,gBACP,UAAUC;AAAA,gBACV,YAAY,CAACa,MAAU,KAAKD,EAAWC,CAAK;AAAA,gBAC5C,UAAUZ;AAAA,cAAA;AAAA,YAAA;AAAA,UACZ;AAAA,QAAA;AAAA,QAIHc,KAAWX,EAAO,YAAY,KAC7B,gBAAAtB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,WAAU;AAAA,YACV,aAAU;AAAA,YAET,YAAE,4BAA4B;AAAA,cAC7B,MAAMlC,GAAYwD,EAAO,SAAS;AAAA,YAAA,CACnC;AAAA,UAAA;AAAA,QAAA;AAAA,QAIL,gBAAA5B,EAAC,OAAA,EAAI,WAAU,mEACZ,UAAA;AAAA,UAAAuC,KACC,gBAAAjC;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,MAAK;AAAA,cACL,SAASgB;AAAA,cACT,iBAAeF,EAAK,WAAWV,KAAcd,KAAU;AAAA,cACvD,eAAY;AAAA,cACZ,SAAS,MAAM,KAAKqC,EAAWb,CAAI;AAAA,cAElC,YAAE,uBAAuB;AAAA,YAAA;AAAA,UAAA;AAAA,UAG7BiB,KACC,gBAAAlC;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAQ8B,IAAU,YAAY;AAAA,cAC9B,MAAK;AAAA,cACL,UAAUd;AAAA,cAEV,iBAAea,KAAW;AAAA,cAC1B,eAAarB,MAAU,WAAW,eAAe;AAAA,cACjD,SAAS,MAAM;AACb,gBAAKqB,KAAcP,EAAA;AAAA,cACrB;AAAA,cAEC,UAAAO,IACGrD,EAAE,2BAA2B,EAAE,SAAS0C,EAAO,UAAA,CAAW,IAExD1C,EADFgC,MAAU,WACN,4BACA,uBADyB;AAAA,YACF;AAAA,UAAA;AAAA,QACjC,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AC/UA,MAAM0B,KAAeC;AAAA,EACnB;AACF,GAEMC,KAAkBD;AAAA,EACtB;AACF,GAEME,KAAW,EAAE,GAAG,MAAM,GAAG,MAAM,GAAG,KAAA;AAQxC,SAASC,GAAoB;AAAA,EAC3B,OAAAC;AAAA,EACA,OAAAC;AAAA,EACA,aAAAC;AAAA,EACA,cAAAC,IAAe;AAAA,EACf,aAAAC;AAAA,EACA,aAAAC;AAAA,EACA,YAAAxC,IAAa;AAAA,EACb,eAAAyC,IAAgB;AAAA,EAChB,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,YAAAC;AAAA,EACA,UAAAC;AAAA,EACA,YAAAC,IAAa;AAAA,EACb,kBAAAC;AAAA,EACA,uBAAAC;AAAA,EACA,eAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,iBAAAC;AAAA,EACA,mBAAAC;AAAA,EACA,WAAAC;AAAA,EACA,cAAAC;AAAA,EACA,GAAGC;AACL,GAAsE;AACpE,QAAM,EAAE,GAAAnF,EAAA,IAAMC,EAAe,IAAI,GAC3BmF,IAAUC,GAAA,GACVC,IAAcD,GAAA,GACd,CAACE,GAAUC,CAAW,IAAIpH,EAAmB,CAAC,GAC9C,CAACqC,GAAMC,CAAO,IAAItC,EAAS,EAAK,GAChCqH,IAAc/G,EAA2B,IAAI,GAE7CgH,IAAQ,OAAOH,KAAa,WAAWA,IAAWxB,EAAM,SAAS,GACjE4B,IAAO5B,EAAM2B,CAAK,GAClBE,KAAQvB,IACV,mBACAkB,MAAa,aACX,aACCI,KAAQ,SAITE,IAAQnH,EAAO,EAAI;AACzB,EAAAC,EAAU,MAAM;;AACd,QAAIkH,EAAM,SAAS;AACjB,MAAAA,EAAM,UAAU;AAChB;AAAA,IACF;AACA,KAAA3E,IAAAuE,EAAY,YAAZ,QAAAvE,EAAqB;AAAA,EACvB,GAAG,CAACqE,CAAQ,CAAC;AAEb,QAAMhF,IAAexB,EAAY,CAACqE,MAAmB1C,EAAQ0C,CAAK,GAAG,EAAE,GAEjE0C,IAAO/G,EAAY,MAAM;AAC7B,IAAA2B,EAAQ,EAAK,GACTgF,IAAQ,IAAI3B,EAAM,SACpByB,EAAYE,IAAQ,CAAC,KAErBF,EAAY,UAAU,GACtBhB,EAAA;AAAA,EAEJ,GAAG,CAACkB,GAAO3B,EAAM,QAAQS,CAAU,CAAC,GAE9BuB,IAAQ5B,GACR6B,IAAQ5B,GACR6B,IAAWC;AAAA,IACf,OAAO;AAAA,MACL,UAAU;AAAA,QACR,OAAOlG,EAAE,+BAA+B;AAAA,QACxC,aAAaA,EAAE,qCAAqC;AAAA,MAAA;AAAA,MAEtD,eAAe;AAAA,QACb,OAAOA,EAAE,oCAAoC;AAAA,QAC7C,aAAaA,EAAE,0CAA0C;AAAA,MAAA;AAAA,MAE3D,KAAK;AAAA,QACH,OAAOA,EAAE,0BAA0B;AAAA,QACnC,aAAa+F,IACT/F,EAAE,kCAAkC,EAAE,OAAA+F,EAAA,CAAO,IAC7C/F,EAAE,uCAAuC;AAAA,MAAA;AAAA,MAE/C,OAAO;AAAA,QACL,OAAOA,EAAE,4BAA4B;AAAA,QACrC,aAAagG,IACThG,EAAE,oCAAoC,EAAE,OAAAgG,EAAA,CAAO,IAC/ChG,EAAE,yCAAyC;AAAA,MAAA;AAAA,IACjD;AAAA,IAEF,CAACA,GAAG+F,GAAOC,CAAK;AAAA,EAAA,GAGZG,IAAQtC,GAASK,CAAY,GAC7BkC,KAAYvC,GAAUK,IAAe,CAAW,GAChDmC,KACJ9B,KAAmB+B,GAAW/B,CAAe,IACzCA,IACA;AAEN,MAAIgC,IAAwB,MACxBC,GACAC;AAEJ,SAAIpC,KACFmC,IAAUxG,EAAE,oCAAoC,GAChDyG,IAAOzG,EAAE,0CAA0C,GACnDuG,IACE,gBAAAxF;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,WAAU;AAAA,MACV,aAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAM,EAACmC,GAAA,EAAM,SAAQ,WAAU,UAAS,OAChC,UAAA,gBAAAnC,EAACmC,EAAM,aAAN,EACE,UAAAxD,EAAE,qCAAqC,EAAA,CAC1C,GACF;AAAA,SACEsE,KAAiB+B,QAChBA,KACC,gBAAAhF;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,SAAO;AAAA,YACP,QAAO;AAAA,YACP,MAAK;AAAA,YACL,WAAU;AAAA,YAEV,UAAA,gBAAAH,EAAC,OAAE,MAAMgF,IAAW,eAAY,iBAC7B,UAAArG,EAAE,qCAAqC,EAAA,CAC1C;AAAA,UAAA;AAAA,QAAA,IAGF,gBAAAqB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,QAAO;AAAA,YACP,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,SAAS8C;AAAA,YAER,YAAE,qCAAqC;AAAA,UAAA;AAAA,QAAA;AAAA,MAC1C;AAAA,IAAA;AAAA,EAAA,KAICiB,MAAa,cACtBiB,IAAUxG,EAAE,yBAAyB,GACrCuG,IACE,gBAAAxF,EAAC,KAAA,EAAE,WAAU,iGACX,UAAA;AAAA,IAAA,gBAAAM,EAACqF,IAAA,EAAY,eAAY,QAAO,WAAU,yBAAwB;AAAA,IAClE,gBAAArF,EAAC,QAAA,EAAM,UAAArB,EAAE,oCAAoC,EAAA,CAAE;AAAA,EAAA,GACjD,KAEO2F,MACTa,IAAUP,EAASN,CAAI,EAAE,OACzBc,IAAOR,EAASN,CAAI,EAAE,aACtBY,IACE,gBAAAlF,EAAC,OAAA,EAA6B,aAAWsE,GACtC,gBAAS,aACR,gBAAAtE;AAAA,IAACjB;AAAA,IAAA;AAAA,MACC,QAAQuE;AAAA,MACR,QAAQmB;AAAA,MACR,cAAAvF;AAAA,IAAA;AAAA,EAAA,IAEAoF,MAAS,kBACX,gBAAAtE;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAAE;AAAA,MACA,QAAQgD;AAAA,MACR,QAAQkB;AAAA,MACR,cAAAvF;AAAA,IAAA;AAAA,EAAA,IAEAoF,MAAS,QACX,gBAAAtE;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAAE;AAAA,MACA,MAAMiD;AAAA,MACN,QAAQC;AAAA,MACR,QAAQgB;AAAA,MACR,cAAAvF;AAAA,IAAA;AAAA,EAAA,IAGF,gBAAAc;AAAA,IAACK;AAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,YAAAE;AAAA,MACA,MAAMmD;AAAA,MACN,QAAQC;AAAA,MACR,QAAQc;AAAA,MACR,cAAAvF;AAAA,IAAA;AAAA,EAAA,EACF,GAhCM,GAAGoF,CAAI,IAAID,CAAK,EAkC1B,IAKF,gBAAA3E;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,KAAKmE;AAAA,MACJ,GAAGC;AAAA,MACJ,kBAAe;AAAA,MACf,cAAYS;AAAA,MACZ,mBAAiBvB,IAAgB,SAAYqB;AAAA,MAC7C,mBAAiB3B,EAAM;AAAA,MACvB,mBAAiBtD,IAAO,SAAS;AAAA,MACjC,WAAWiD,GAAa,EAAE,WAAAuB,GAAW;AAAA,MAEpC,UAAA;AAAA,QAAA,CAACP,KACA,gBAAA3D,EAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,UAAA,gBAAAM,EAAC8E,GAAA,EAAM,IAAIf,GAAS,WAAU,kBAC3B,UAAApB,KAAShE,EAAE,sBAAsB,EAAA,CACpC;AAAA,4BACC,KAAA,EAAE,WAAU,yDACV,UAAAiE,KAAejE,EAAE,4BAA4B,EAAA,CAChD;AAAA,QAAA,GACF;AAAA,QAGF,gBAAAe;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,mBAAiBuE;AAAA,YACjB,WAAU;AAAA,YAEV,UAAA;AAAA,cAAA,gBAAAvE,EAAC,OAAA,EAAI,WAAU,mDACZ,UAAA;AAAA,gBAAAgD,EAAM,SAAS,KAAK,CAACM,KAAiBkB,MAAa,cAClD,gBAAAlE;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WAAU;AAAA,oBACV,aAAU;AAAA,oBAET,YAAE,2BAA2B;AAAA,sBAC5B,SAASqE,IAAQ;AAAA,sBACjB,OAAO3B,EAAM;AAAA,oBAAA,CACd;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAGL,gBAAA1C;AAAA,kBAAC+E;AAAA,kBAAA;AAAA,oBACC,KAAKX;AAAA,oBACL,IAAIH;AAAA,oBACJ,UAAU;AAAA,oBACV,WAAW1B,GAAA;AAAA,oBAEV,UAAA4C;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAEFC,KACC,gBAAApF,EAAC,KAAA,EAAE,WAAU,yDACV,UAAAoF,EAAA,CACH;AAAA,cAAA,GAEJ;AAAA,cACCF;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAGF9B,KAAYc,MAAa,cACxB,gBAAAlE;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,QAAO;AAAA,YACP,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,SAASiD;AAAA,YAER,YAAE,uBAAuB;AAAA,UAAA;AAAA,QAAA;AAAA,MAC5B;AAAA,IAAA;AAAA,EAAA;AAIR;AAOO,MAAMkC,KAAiBC;AAAA,EAC5B,CAACC,GAAOC;AAAA;AAAA,IAEN,gBAAAzF;AAAA,MAACyC;AAAA,MAAA;AAAA,QAEE,GAAG+C;AAAA,QACJ,cAAcC;AAAA,MAAA;AAAA,MAFT,GAAGD,EAAM,MAAM,KAAK,GAAG,CAAC,IAAIA,EAAM,gBAAgB,MAAM,EAAE;AAAA,IAAA;AAAA;AAKrE;AACAF,GAAe,cAAc;AAetB,SAASI,GAAqB;AAAA,EACnC,MAAAC;AAAA,EACA,cAAAC;AAAA,EACA,OAAAjD;AAAA,EACA,aAAAC;AAAA,EACA,GAAGiD;AACL,GAA8B;AAC5B,QAAM,EAAE,GAAAlH,EAAA,IAAMC,EAAe,IAAI;AACjC,SACE,gBAAAoB,EAAC8F,EAAO,MAAP,EAAY,MAAAH,GAAY,cAAAC,GACvB,UAAA,gBAAAlG,EAACoG,EAAO,SAAP,EAAe,MAAK,MACnB,UAAA;AAAA,IAAA,gBAAApG,EAACoG,EAAO,QAAP,EACC,UAAA;AAAA,MAAA,gBAAA9F,EAAC8F,EAAO,OAAP,EAAc,UAAAnD,KAAShE,EAAE,sBAAsB,GAAE;AAAA,wBACjDmH,EAAO,aAAP,EACE,UAAAlD,KAAejE,EAAE,4BAA4B,EAAA,CAChD;AAAA,IAAA,GACF;AAAA,IACA,gBAAAqB,EAAC8F,EAAO,MAAP,EACC,UAAA,gBAAA9F;AAAA,MAACsF;AAAA,MAAA;AAAA,QACE,GAAGO;AAAA,QACJ,YAAU;AAAA,QACV,UAAU,MAAMD,EAAa,EAAK;AAAA,MAAA;AAAA,IAAA,EACpC,CACF;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;ACxXA,MAAMG,KACJ;AAEF,SAASC,GAAgB;AAAA,EACvB,cAAAJ;AAAA,EACA,kBAAAK;AAAA,EACA,GAAGJ;AACL,GAAmE;AACjE,QAAM,EAAE,GAAAlH,EAAA,IAAMC,EAAe,IAAI,GAC3B,CAAC+B,GAAOC,CAAQ,IAAI7D,EAAgB,QAAQ,GAC5C,CAAC4H,GAAOuB,CAAQ,IAAInJ,EAAS,EAAE,GAC/B,CAACoJ,GAAOC,CAAQ,IAAIrJ,EAAS,EAAE,GAC/B,CAACsJ,GAAQC,CAAS,IAAIvJ,EAA6C,CAAA,CAAE,GACrE,CAACwJ,GAAWC,CAAY,IAAIzJ,EAAA,GAC5B,CAAC0J,GAAYC,CAAa,IAAI3J,EAAS,EAAK,GAC5CoI,IAAU9H,EAA2B,IAAI,GACzCsJ,IAAUtJ,EAAuB,IAAI,GACrCuJ,IAAavJ,EAAyB,IAAI,GAC1CwJ,IAAaxJ,EAAyB,IAAI,GAC1CyJ,IAAY9C,GAAA,GACZxF,IAAUnB,EAAO,EAAI;AAc3B,SAbAC,EAAU,OACRkB,EAAQ,UAAU,IACX,MAAM;AACX,IAAAA,EAAQ,UAAU;AAAA,EACpB,IACC,CAAA,CAAE,GAGLlB,EAAU,MAAM;;AACd,IAAIqD,MAAU,iBAAad,IAAAsF,EAAQ,YAAR,QAAAtF,EAAiB,UACxCc,MAAU,YAAQb,IAAA6G,EAAQ,YAAR,QAAA7G,EAAiB;AAAA,EACzC,GAAG,CAACa,CAAK,CAAC,GAENA,MAAU,WAEV,gBAAAX;AAAA,IAACsF;AAAA,IAAA;AAAA,MACE,GAAGO;AAAA,MACJ,YAAU;AAAA,MACV,UAAU,MAAMD,EAAa,EAAK;AAAA,MAClC,YAAY,MAAMhF,EAAS,WAAW;AAAA,IAAA;AAAA,EAAA,IAKxCD,MAAU,SAEV,gBAAAjB;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,kBAAe;AAAA,MACf,cAAW;AAAA,MACX,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAAA;AAAA,UAACyC;AAAA,UAAA;AAAA,YACC,KAAKwE;AAAA,YACL,SAAQ;AAAA,YACR,UAAU;AAAA,YACV,mBAAiBG;AAAA,YAEjB,UAAA;AAAA,cAAA,gBAAA9G,EAACmC,EAAM,OAAN,EAAY,IAAG,MAAK,IAAI2E,GACtB,UAAAnI,EAAE,sCAAsC,EAAA,CAC3C;AAAA,gCACCwD,EAAM,aAAN,EACE,UAAAxD,EAAE,4CAA4C,EAAA,CACjD;AAAA,YAAA;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,gBAAAqB;AAAA,UAACG;AAAA,UAAA;AAAA,YACC,MAAK;AAAA,YACL,QAAO;AAAA,YACP,MAAK;AAAA,YACL,eAAY;AAAA,YACZ,WAAU;AAAA,YACV,SAAS,MAAMyF,EAAa,EAAK;AAAA,YAEhC,YAAE,kCAAkC;AAAA,UAAA;AAAA,QAAA;AAAA,MACvC;AAAA,IAAA;AAAA,EAAA,IA8CJ,gBAAAlG;AAAA,IAAC;AAAA,IAAA;AAAA,MACC,YAAU;AAAA,MACV,UA3CW,OAAOC,MAAqB;;AAEzC,YADAA,EAAM,eAAA,GACF8G,EAAY;AAChB,cAAMhC,IAA2C,CAAA,GAC3C1C,IAAQ4C,EAAM,KAAA;AAQpB,YAPI5C,MAAU,KAAI0C,EAAK,QAAQ9F,EAAE,qCAAqC,IAC5DoI,GAAQhF,CAAK,IACdoE,EAAM,KAAA,MAAWpE,MACxB0C,EAAK,QAAQ9F,EAAE,qCAAqC,KAF5B8F,EAAK,QAAQ9F,EAAE,sBAAsB,GAI/D2H,EAAU7B,CAAI,GACd+B,EAAa,MAAS,GAClB/B,EAAK,SAASA,EAAK,OAAO;AAC5B,WAAC5E,KAAA4E,EAAK,QAAQmC,IAAaC,GAAY,YAAtC,QAAAhH,EAA+C;AAChD;AAAA,QACF;AACA,QAAA6G,EAAc,EAAI;AAClB,YAAIxI;AACJ,YAAI;AACF,UAAAA,IAAS,MAAM+H,EAAiBlE,CAAK;AAAA,QACvC,QAAQ;AACN,UAAA7D,IAAS,EAAE,QAAQ,QAAA;AAAA,QACrB;AACA,YAAKM,EAAQ,SAEb;AAAA,cADAkI,EAAc,EAAK,GACfxI,EAAO,WAAW,MAAM;AAC1B,YAAA0C,EAAS,MAAM;AACf;AAAA,UACF;AACA,UAAI1C,EAAO,WAAW,oBACpBoI,EAAU,EAAE,OAAO3H,EAAE,yCAAyC,GAAG,IACjEmB,IAAA8G,EAAW,YAAX,QAAA9G,EAAoB,WACX5B,EAAO,WAAW,aAC3BoI,EAAU,EAAE,OAAO3H,EAAE,oCAAoC,GAAG,IAC5DoB,IAAA6G,EAAW,YAAX,QAAA7G,EAAoB,WAEpByG,EAAatI,EAAO,WAAWS,EAAE,6BAA6B,CAAC;AAAA;AAAA,MAEnE;AAAA,MAMI,aAAW8H,KAAc;AAAA,MACzB,kBAAe;AAAA,MACf,cAAW;AAAA,MACX,mBAAiBA,IAAa,SAAS;AAAA,MACvC,WAAU;AAAA,MAEV,UAAA;AAAA,QAAA,gBAAA/G,EAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,UAAA,gBAAAM,EAAC,MAAA,EAAG,KAAKmF,GAAS,UAAU,IAAI,WAAWY,IACxC,UAAApH,EAAE,qCAAqC,EAAA,CAC1C;AAAA,4BACC,KAAA,EAAE,WAAU,yDACV,UAAAA,EAAE,2CAA2C,EAAA,CAChD;AAAA,QAAA,GACF;AAAA,QACC4H,KACC,gBAAAvG,EAACmC,GAAA,EAAM,SAAQ,SACb,4BAACA,EAAM,aAAN,EAAmB,UAAAoE,EAAA,CAAU,EAAA,CAChC;AAAA,QAEF,gBAAAvG;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAOtB,EAAE,qCAAqC;AAAA,YAC9C,UAAQ;AAAA,YACR,OAAO0H,EAAO;AAAA,YAEd,UAAA,gBAAArG;AAAA,cAACgH;AAAA,cAAA;AAAA,gBACC,KAAKJ;AAAA,gBACL,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,cAAa;AAAA,gBACb,OAAOjC;AAAA,gBACP,UAAU8B;AAAA,gBACV,UAAU,CAAC9G,MAAU;AACnB,kBAAAuG,EAASvG,EAAM,OAAO,KAAK,GAC3B2G,EAAU,CAACW,OAAc,EAAE,GAAGA,GAAU,OAAO,SAAY;AAAA,gBAC7D;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAEF,gBAAAjH;AAAA,UAACC;AAAA,UAAA;AAAA,YACC,OAAOtB,EAAE,yCAAyC;AAAA,YAClD,UAAQ;AAAA,YACR,OAAO0H,EAAO;AAAA,YAEd,UAAA,gBAAArG;AAAA,cAACgH;AAAA,cAAA;AAAA,gBACC,KAAKH;AAAA,gBACL,MAAK;AAAA,gBACL,WAAU;AAAA,gBACV,MAAK;AAAA,gBACL,cAAa;AAAA,gBACb,OAAOV;AAAA,gBACP,UAAUM;AAAA,gBACV,UAAU,CAAC9G,MAAU;AACnB,kBAAAyG,EAASzG,EAAM,OAAO,KAAK,GAC3B2G,EAAU,CAACW,OAAc,EAAE,GAAGA,GAAU,OAAO,SAAY;AAAA,gBAC7D;AAAA,cAAA;AAAA,YAAA;AAAA,UACF;AAAA,QAAA;AAAA,QAEF,gBAAAvH,EAAC,OAAA,EAAI,WAAU,mDACb,UAAA;AAAA,UAAA,gBAAAM;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,MAAK;AAAA,cACL,SAASsG;AAAA,cACT,eAAY;AAAA,cAEX,YAAE,mCAAmC;AAAA,YAAA;AAAA,UAAA;AAAA,UAExC,gBAAAzG;AAAA,YAACG;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,QAAO;AAAA,cACP,MAAK;AAAA,cACL,UAAUsG;AAAA,cACV,eAAY;AAAA,cACZ,SAAS,MAAMb,EAAa,EAAK;AAAA,cAEhC,YAAE,uBAAuB;AAAA,YAAA;AAAA,UAAA;AAAA,QAC5B,EAAA,CACF;AAAA,MAAA;AAAA,IAAA;AAAA,EAAA;AAGN;AAMO,SAASsB,GAAkB;AAAA,EAChC,MAAAvB;AAAA,EACA,cAAAC;AAAA,EACA,OAAAjD;AAAA,EACA,aAAAC;AAAA,EACA,GAAGsC;AACL,GAA2B;AACzB,QAAM,EAAE,GAAAvG,EAAA,IAAMC,EAAe,IAAI;AACjC,SACE,gBAAAoB,EAAC8F,EAAO,MAAP,EAAY,MAAAH,GAAY,cAAAC,GACvB,UAAA,gBAAAlG,EAACoG,EAAO,SAAP,EAAe,MAAK,MACnB,UAAA;AAAA,IAAA,gBAAApG,EAACoG,EAAO,QAAP,EACC,UAAA;AAAA,MAAA,gBAAA9F,EAAC8F,EAAO,OAAP,EACE,UAAAnD,KAAShE,EAAE,kCAAkC,GAChD;AAAA,wBACCmH,EAAO,aAAP,EACE,UAAAlD,KAAejE,EAAE,wCAAwC,EAAA,CAC5D;AAAA,IAAA,GACF;AAAA,IACA,gBAAAqB,EAAC8F,EAAO,MAAP,EACC,4BAACE,IAAA,EAAgB,cAAAJ,GAA6B,GAAGV,EAAA,CAAM,EAAA,CACzD;AAAA,EAAA,EAAA,CACF,EAAA,CACF;AAEJ;AC3QO,MAAMiC,KAAwB;AAAA,EACnC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;"}
|
|
@@ -2,7 +2,7 @@ import { jsx as t, jsxs as c, Fragment as ve } from "react/jsx-runtime";
|
|
|
2
2
|
import { forwardRef as H, useMemo as W, useRef as z, useCallback as F, useState as ge, useImperativeHandle as be, useEffect as ke } from "react";
|
|
3
3
|
import { c as j } from "./index-D2ZczOXr.js";
|
|
4
4
|
import { useTranslation as M } from "react-i18next";
|
|
5
|
-
import { C } from "./card-
|
|
5
|
+
import { C } from "./card-DVO3x8E-.js";
|
|
6
6
|
import { B as ye } from "./badge-BUk4RjTS.js";
|
|
7
7
|
import { a as Z } from "./key-value-pair-DOTl68_U.js";
|
|
8
8
|
import { T as xe } from "./timestamp-DPLDWdxA.js";
|
|
@@ -1321,4 +1321,4 @@ export {
|
|
|
1321
1321
|
ee as r,
|
|
1322
1322
|
D as w
|
|
1323
1323
|
};
|
|
1324
|
-
//# sourceMappingURL=workflow-map-
|
|
1324
|
+
//# sourceMappingURL=workflow-map-B4XkcET0.js.map
|