@alfadocs/ui-kit-debug 1.132.0 → 1.134.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{agenda-card-B8hV3dZV.js → agenda-card-B9wgX_Ed.js} +2 -2
- package/dist/_chunks/{agenda-card-B8hV3dZV.js.map → agenda-card-B9wgX_Ed.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-Bu46s3dI.js → agenda-tray-CGcS_qoM.js} +2 -2
- package/dist/_chunks/{agenda-tray-Bu46s3dI.js.map → agenda-tray-CGcS_qoM.js.map} +1 -1
- package/dist/_chunks/appointment-card-DG3m9yN-.js +504 -0
- package/dist/_chunks/appointment-card-DG3m9yN-.js.map +1 -0
- package/dist/_chunks/{appointment-peek-DZa6xyUb.js → appointment-peek-BK0tDs4C.js} +2 -2
- package/dist/_chunks/{appointment-peek-DZa6xyUb.js.map → appointment-peek-BK0tDs4C.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-DQePqpyH.js → appointment-timeline-BiI2riRZ.js} +2 -2
- package/dist/_chunks/{appointment-timeline-DQePqpyH.js.map → appointment-timeline-BiI2riRZ.js.map} +1 -1
- package/dist/_chunks/appointment-tray-ClJCtYQj.js +200 -0
- package/dist/_chunks/appointment-tray-ClJCtYQj.js.map +1 -0
- package/dist/_chunks/{appointment-workflow-status-DMjuIK90.js → appointment-workflow-status-S-lx81Yz.js} +2 -2
- package/dist/_chunks/{appointment-workflow-status-DMjuIK90.js.map → appointment-workflow-status-S-lx81Yz.js.map} +1 -1
- package/dist/_chunks/ban-CiSCCcOE.js +15 -0
- package/dist/_chunks/ban-CiSCCcOE.js.map +1 -0
- package/dist/_chunks/{calendar-BIoOeBTT.js → calendar-CyLtLBNP.js} +2 -2
- package/dist/_chunks/{calendar-BIoOeBTT.js.map → calendar-CyLtLBNP.js.map} +1 -1
- package/dist/_chunks/calendar-appointment-editor-dialog-BSkIYGlW.js +13773 -0
- package/dist/_chunks/calendar-appointment-editor-dialog-BSkIYGlW.js.map +1 -0
- package/dist/_chunks/{calendar-event-card-BNEzkjm-.js → calendar-event-card-BJifpYZQ.js} +7 -6
- package/dist/_chunks/{calendar-event-card-BNEzkjm-.js.map → calendar-event-card-BJifpYZQ.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-DKScH9Ss.js → care-plan-card-CjHq6PLo.js} +6 -6
- package/dist/_chunks/{care-plan-card-DKScH9Ss.js.map → care-plan-card-CjHq6PLo.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-AG1y3nyW.js → care-plan-entry-card-DY1toF6E.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-AG1y3nyW.js.map → care-plan-entry-card-DY1toF6E.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-Dx5OMkc9.js → care-plan-header-CeFXUDnL.js} +6 -6
- package/dist/_chunks/{care-plan-header-Dx5OMkc9.js.map → care-plan-header-CeFXUDnL.js.map} +1 -1
- package/dist/_chunks/check-in-documents-CEVcgcYZ.js +136 -0
- package/dist/_chunks/check-in-documents-CEVcgcYZ.js.map +1 -0
- package/dist/_chunks/{clinical-note-card-pPaeWWnu.js → clinical-note-card-D--IwbZa.js} +2 -2
- package/dist/_chunks/{clinical-note-card-pPaeWWnu.js.map → clinical-note-card-D--IwbZa.js.map} +1 -1
- package/dist/_chunks/document-preview-DLVIrOYV.js +385 -0
- package/dist/_chunks/document-preview-DLVIrOYV.js.map +1 -0
- package/dist/_chunks/{entity-card-fpm-KUKc.js → entity-card-p-LANpYt.js} +18 -17
- package/dist/_chunks/{entity-card-fpm-KUKc.js.map → entity-card-p-LANpYt.js.map} +1 -1
- package/dist/_chunks/{error-page-B0fGNTRB.js → error-page-WLhmWUTq.js} +100 -115
- package/dist/_chunks/error-page-WLhmWUTq.js.map +1 -0
- package/dist/_chunks/finished-terminal-unDnXT4j.js +191 -0
- package/dist/_chunks/finished-terminal-unDnXT4j.js.map +1 -0
- package/dist/_chunks/house-DGCypGTo.js +21 -0
- package/dist/_chunks/house-DGCypGTo.js.map +1 -0
- package/dist/_chunks/is-safe-url-CEy9CEml.js +8 -0
- package/dist/_chunks/is-safe-url-CEy9CEml.js.map +1 -0
- package/dist/_chunks/keypad-DBH_keVs.js +152 -0
- package/dist/_chunks/keypad-DBH_keVs.js.map +1 -0
- package/dist/_chunks/keypad-button-mOaPQRrH.js +114 -0
- package/dist/_chunks/keypad-button-mOaPQRrH.js.map +1 -0
- package/dist/_chunks/{message-card-BG3_3nN1.js → message-card-Bw_q1qKx.js} +2 -2
- package/dist/_chunks/{message-card-BG3_3nN1.js.map → message-card-Bw_q1qKx.js.map} +1 -1
- package/dist/_chunks/{message-tray-BjZv0Fsk.js → message-tray-pLGgLmoG.js} +2 -2
- package/dist/_chunks/{message-tray-BjZv0Fsk.js.map → message-tray-pLGgLmoG.js.map} +1 -1
- package/dist/_chunks/{note-attachment-MNTIqdSz.js → note-attachment-JTIy9iXN.js} +2 -2
- package/dist/_chunks/{note-attachment-MNTIqdSz.js.map → note-attachment-JTIy9iXN.js.map} +1 -1
- package/dist/_chunks/{note-timeline-BQeW0VZY.js → note-timeline-BbjHMhkL.js} +2 -2
- package/dist/_chunks/{note-timeline-BQeW0VZY.js.map → note-timeline-BbjHMhkL.js.map} +1 -1
- package/dist/_chunks/{notes-panel-Cm-_pCRJ.js → notes-panel-BAyPOr8N.js} +2 -2
- package/dist/_chunks/{notes-panel-Cm-_pCRJ.js.map → notes-panel-BAyPOr8N.js.map} +1 -1
- package/dist/_chunks/{operator-hero-CnfWckNQ.js → operator-hero-D4wfVu2l.js} +2 -2
- package/dist/_chunks/{operator-hero-CnfWckNQ.js.map → operator-hero-D4wfVu2l.js.map} +1 -1
- package/dist/_chunks/otp-input-BNOTlxq3.js +342 -0
- package/dist/_chunks/otp-input-BNOTlxq3.js.map +1 -0
- package/dist/_chunks/patient-account-settings-BkAtIxJW.js +546 -0
- package/dist/_chunks/patient-account-settings-BkAtIxJW.js.map +1 -0
- package/dist/_chunks/patient-card-DTh3QTyS.js +125 -0
- package/dist/_chunks/patient-card-DTh3QTyS.js.map +1 -0
- package/dist/_chunks/patient-check-in-resume-xhqjC6gf.js +742 -0
- package/dist/_chunks/patient-check-in-resume-xhqjC6gf.js.map +1 -0
- package/dist/_chunks/patient-sign-in-pin-CDBqV254.js +432 -0
- package/dist/_chunks/patient-sign-in-pin-CDBqV254.js.map +1 -0
- package/dist/_chunks/patient-sign-in-steps-C2JSqlok.js +199 -0
- package/dist/_chunks/patient-sign-in-steps-C2JSqlok.js.map +1 -0
- package/dist/_chunks/{patient-summary-card-BUcZ-gaL.js → patient-summary-card-Bl2NknPe.js} +2 -2
- package/dist/_chunks/{patient-summary-card-BUcZ-gaL.js.map → patient-summary-card-Bl2NknPe.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-Dv4WbRBe.js → payment-request-card-CNW00DCx.js} +6 -6
- package/dist/_chunks/{payment-request-card-Dv4WbRBe.js.map → payment-request-card-CNW00DCx.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-BnBKdx0y.js → pdf-viewer-TRC5jEm5.js} +472 -425
- package/dist/_chunks/pdf-viewer-TRC5jEm5.js.map +1 -0
- package/dist/_chunks/pin-entry-BugWQMOS.js +219 -0
- package/dist/_chunks/pin-entry-BugWQMOS.js.map +1 -0
- package/dist/_chunks/pin-indicator-Cb-n40UI.js +124 -0
- package/dist/_chunks/pin-indicator-Cb-n40UI.js.map +1 -0
- package/dist/_chunks/portal-details-CTEsm705.js +478 -0
- package/dist/_chunks/portal-details-CTEsm705.js.map +1 -0
- package/dist/_chunks/portal-documents-D8skew0h.js +902 -0
- package/dist/_chunks/portal-documents-D8skew0h.js.map +1 -0
- package/dist/_chunks/portal-parts-BdR29P7z.js +285 -0
- package/dist/_chunks/portal-parts-BdR29P7z.js.map +1 -0
- package/dist/_chunks/{privacy-mask-DJ1gee4c.js → privacy-mask-C19dJFMk.js} +5 -5
- package/dist/_chunks/{privacy-mask-DJ1gee4c.js.map → privacy-mask-C19dJFMk.js.map} +1 -1
- package/dist/_chunks/{product-hub-panel-a8wdVOUt.js → product-hub-panel-K4QbULG7.js} +2 -2
- package/dist/_chunks/{product-hub-panel-a8wdVOUt.js.map → product-hub-panel-K4QbULG7.js.map} +1 -1
- package/dist/_chunks/{registration-form-CwbhtKcy.js → registration-form-DS3RuKHu.js} +2 -2
- package/dist/_chunks/{registration-form-CwbhtKcy.js.map → registration-form-DS3RuKHu.js.map} +1 -1
- package/dist/_chunks/{reserved.agent-W8mR179D.js → reserved.agent-DOzOBUW7.js} +2 -2
- package/dist/_chunks/{reserved.agent-W8mR179D.js.map → reserved.agent-DOzOBUW7.js.map} +1 -1
- package/dist/_chunks/session-countdown-DOx1IBUB.js +232 -0
- package/dist/_chunks/session-countdown-DOx1IBUB.js.map +1 -0
- package/dist/_chunks/{sign-document-CQZVzfpk.js → sign-document-DDZbmYHu.js} +2 -2
- package/dist/_chunks/{sign-document-CQZVzfpk.js.map → sign-document-DDZbmYHu.js.map} +1 -1
- package/dist/_chunks/{signature-field-DjabvRZm.js → signature-field-BjlY_yXH.js} +39 -34
- package/dist/_chunks/signature-field-BjlY_yXH.js.map +1 -0
- package/dist/_chunks/{signature-request-4pGq3YBe.js → signature-request-CHsM_iWi.js} +2 -2
- package/dist/_chunks/{signature-request-4pGq3YBe.js.map → signature-request-CHsM_iWi.js.map} +1 -1
- package/dist/_chunks/{signature-status-chip-pIoQjvH8.js → signature-status-chip-DS9hHwIt.js} +66 -69
- package/dist/_chunks/signature-status-chip-DS9hHwIt.js.map +1 -0
- package/dist/_chunks/signing-end-screen-an9P8DOT.js +1041 -0
- package/dist/_chunks/signing-end-screen-an9P8DOT.js.map +1 -0
- package/dist/_chunks/sms-code-entry-Dgp4GwlM.js +316 -0
- package/dist/_chunks/sms-code-entry-Dgp4GwlM.js.map +1 -0
- package/dist/_chunks/step-up-dialog-C2JqJmCA.js +132 -0
- package/dist/_chunks/step-up-dialog-C2JqJmCA.js.map +1 -0
- package/dist/_chunks/{task-editor-BL2hHxNz.js → task-editor-g1AGfxhr.js} +38 -38
- package/dist/_chunks/{task-editor-BL2hHxNz.js.map → task-editor-g1AGfxhr.js.map} +1 -1
- package/dist/_chunks/{use-appointment-details-read-_b7FRB1x.js → use-appointment-details-read-Dzc6fEzG.js} +6 -6
- package/dist/_chunks/{use-appointment-details-read-_b7FRB1x.js.map → use-appointment-details-read-Dzc6fEzG.js.map} +1 -1
- package/dist/_chunks/use-zoom-drilldown-Cr1baU5X.js +221 -0
- package/dist/_chunks/use-zoom-drilldown-Cr1baU5X.js.map +1 -0
- package/dist/_chunks/{user-x-DYszNtIg.js → user-x-BJZg4kaP.js} +8 -19
- package/dist/_chunks/user-x-BJZg4kaP.js.map +1 -0
- package/dist/_chunks/{verify-identity-types-CxtrBXsZ.js → verify-identity-types-C6Bam8v6.js} +2 -2
- package/dist/_chunks/{verify-identity-types-CxtrBXsZ.js.map → verify-identity-types-C6Bam8v6.js.map} +1 -1
- package/dist/agent-catalog.json +723 -364
- package/dist/agent-i18n/en.json +75 -18
- package/dist/browser-support.js +1 -1
- package/dist/components/_shared/is-safe-url.d.ts +3 -1
- package/dist/components/_shared/is-safe-url.d.ts.map +1 -1
- package/dist/components/agenda-card/index.js +2 -2
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/appointment-card/appointment-card.d.ts +45 -0
- package/dist/components/appointment-card/appointment-card.d.ts.map +1 -1
- package/dist/components/appointment-card/appointment-tray.agent.d.ts.map +1 -1
- package/dist/components/appointment-card/appointment-tray.d.ts +11 -0
- package/dist/components/appointment-card/appointment-tray.d.ts.map +1 -1
- package/dist/components/appointment-card/index.js +3 -3
- package/dist/components/appointment-details-panel/index.js +1 -1
- package/dist/components/appointment-peek/index.js +1 -1
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/calendar-event-card/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/care-plan-header/index.js +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/document-preview/document-preview.agent.d.ts.map +1 -1
- package/dist/components/document-preview/document-preview.d.ts +61 -7
- package/dist/components/document-preview/document-preview.d.ts.map +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/finished-terminal/finished-terminal.d.ts +63 -6
- package/dist/components/finished-terminal/finished-terminal.d.ts.map +1 -1
- package/dist/components/finished-terminal/index.d.ts +1 -1
- package/dist/components/finished-terminal/index.d.ts.map +1 -1
- package/dist/components/finished-terminal/index.js +1 -1
- package/dist/components/index.d.ts +12 -0
- package/dist/components/index.d.ts.map +1 -1
- package/dist/components/keypad/index.d.ts +3 -0
- package/dist/components/keypad/index.d.ts.map +1 -0
- package/dist/components/keypad/index.js +6 -0
- package/dist/components/keypad/index.js.map +1 -0
- package/dist/components/keypad/keypad.d.ts +54 -0
- package/dist/components/keypad/keypad.d.ts.map +1 -0
- package/dist/components/keypad-button/index.d.ts +3 -0
- package/dist/components/keypad-button/index.d.ts.map +1 -0
- package/dist/components/keypad-button/index.js +6 -0
- package/dist/components/keypad-button/index.js.map +1 -0
- package/dist/components/keypad-button/keypad-button.d.ts +33 -0
- package/dist/components/keypad-button/keypad-button.d.ts.map +1 -0
- package/dist/components/message-card/index.js +2 -2
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/note-timeline/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.d.ts +11 -0
- package/dist/components/otp-input/otp-input.d.ts.map +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/payment-card/index.js +1 -1
- package/dist/components/pdf-viewer/index.js +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.agent.d.ts.map +1 -1
- package/dist/components/pdf-viewer/pdf-viewer.d.ts +7 -0
- package/dist/components/pdf-viewer/pdf-viewer.d.ts.map +1 -1
- package/dist/components/pin-entry/index.d.ts +3 -0
- package/dist/components/pin-entry/index.d.ts.map +1 -0
- package/dist/components/pin-entry/index.js +5 -0
- package/dist/components/pin-entry/index.js.map +1 -0
- package/dist/components/pin-entry/pin-entry.agent.d.ts +4 -0
- package/dist/components/pin-entry/pin-entry.agent.d.ts.map +1 -0
- package/dist/components/pin-entry/pin-entry.d.ts +64 -0
- package/dist/components/pin-entry/pin-entry.d.ts.map +1 -0
- package/dist/components/pin-indicator/index.d.ts +3 -0
- package/dist/components/pin-indicator/index.d.ts.map +1 -0
- package/dist/components/pin-indicator/index.js +9 -0
- package/dist/components/pin-indicator/index.js.map +1 -0
- package/dist/components/pin-indicator/pin-indicator.d.ts +34 -0
- package/dist/components/pin-indicator/pin-indicator.d.ts.map +1 -0
- package/dist/components/product-hub-tray/index.js +2 -2
- package/dist/components/session-countdown/index.js +1 -1
- package/dist/components/session-countdown/session-countdown.d.ts +19 -0
- package/dist/components/session-countdown/session-countdown.d.ts.map +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/signature-field/index.js +1 -1
- package/dist/components/signature-field/signature-field.d.ts +17 -6
- package/dist/components/signature-field/signature-field.d.ts.map +1 -1
- package/dist/components/signature-status-chip/index.js +1 -1
- package/dist/components/signature-status-chip/signature-status-chip.d.ts +3 -2
- package/dist/components/signature-status-chip/signature-status-chip.d.ts.map +1 -1
- package/dist/components/sms-code-entry/index.d.ts +3 -0
- package/dist/components/sms-code-entry/index.d.ts.map +1 -0
- package/dist/components/sms-code-entry/index.js +5 -0
- package/dist/components/sms-code-entry/index.js.map +1 -0
- package/dist/components/sms-code-entry/sms-code-entry.agent.d.ts +4 -0
- package/dist/components/sms-code-entry/sms-code-entry.agent.d.ts.map +1 -0
- package/dist/components/sms-code-entry/sms-code-entry.d.ts +156 -0
- package/dist/components/sms-code-entry/sms-code-entry.d.ts.map +1 -0
- package/dist/components/step-up-dialog/index.d.ts +3 -0
- package/dist/components/step-up-dialog/index.d.ts.map +1 -0
- package/dist/components/step-up-dialog/index.js +5 -0
- package/dist/components/step-up-dialog/index.js.map +1 -0
- package/dist/components/step-up-dialog/step-up-dialog.d.ts +108 -0
- package/dist/components/step-up-dialog/step-up-dialog.d.ts.map +1 -0
- package/dist/components/task-editor/index.js +1 -1
- package/dist/components/workflow-status/index.js +1 -1
- package/dist/core.css +1 -1
- package/dist/hooks/index.js +1 -1
- package/dist/hooks/use-signing-session.d.ts +7 -2
- package/dist/hooks/use-signing-session.d.ts.map +1 -1
- package/dist/host-compat.css +10 -1
- package/dist/i18n/locales/ar.d.ts +514 -1
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +512 -4
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +514 -1
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +520 -5
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +514 -1
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +515 -5
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +516 -1
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +522 -4
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +514 -1
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +513 -5
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +514 -1
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +513 -5
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +514 -1
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +513 -5
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +514 -1
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +520 -5
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +514 -1
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +513 -5
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +514 -1
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +520 -5
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +514 -1
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +520 -5
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +514 -1
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +520 -5
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +514 -1
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +520 -5
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +514 -1
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +512 -4
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +514 -1
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +513 -5
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +514 -1
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +513 -5
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +514 -1
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +515 -5
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +514 -1
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +513 -5
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +1271 -1204
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +516 -3
- package/dist/locales/de.json +517 -4
- package/dist/locales/el.json +517 -4
- package/dist/locales/en.json +516 -3
- package/dist/locales/es.json +517 -4
- package/dist/locales/fr.json +517 -4
- package/dist/locales/hi.json +517 -4
- package/dist/locales/it.json +517 -4
- package/dist/locales/ja.json +517 -4
- package/dist/locales/nl.json +517 -4
- package/dist/locales/pl.json +517 -4
- package/dist/locales/pt.json +517 -4
- package/dist/locales/ro.json +517 -4
- package/dist/locales/ru.json +516 -3
- package/dist/locales/sq.json +517 -4
- package/dist/locales/sv.json +517 -4
- package/dist/locales/tr.json +517 -4
- package/dist/locales/zh.json +517 -4
- package/dist/patterns/calendar/calendar-workspace.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar-workspace.model.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.journey.d.ts +4 -0
- package/dist/patterns/calendar/calendar.journey.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.sheets.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.surface.d.ts +15 -1
- package/dist/patterns/calendar/calendar.surface.d.ts.map +1 -1
- package/dist/patterns/calendar/calendar.types.d.ts +4 -0
- package/dist/patterns/calendar/calendar.types.d.ts.map +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/check-in-documents/check-in-documents.d.ts +61 -0
- package/dist/patterns/check-in-documents/check-in-documents.d.ts.map +1 -0
- package/dist/patterns/check-in-documents/check-in-signable-document.d.ts +32 -0
- package/dist/patterns/check-in-documents/check-in-signable-document.d.ts.map +1 -0
- package/dist/patterns/check-in-documents/index.d.ts +4 -0
- package/dist/patterns/check-in-documents/index.d.ts.map +1 -0
- package/dist/patterns/check-in-documents/index.js +5 -0
- package/dist/patterns/check-in-documents/index.js.map +1 -0
- package/dist/patterns/error-page/index.js +1 -1
- package/dist/patterns/patient-account-settings/index.d.ts +4 -0
- package/dist/patterns/patient-account-settings/index.d.ts.map +1 -0
- package/dist/patterns/patient-account-settings/index.js +5 -0
- package/dist/patterns/patient-account-settings/index.js.map +1 -0
- package/dist/patterns/patient-account-settings/patient-account-settings-panels.d.ts +36 -0
- package/dist/patterns/patient-account-settings/patient-account-settings-panels.d.ts.map +1 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.d.ts +94 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.d.ts.map +1 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.types.d.ts +91 -0
- package/dist/patterns/patient-account-settings/patient-account-settings.types.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/index.d.ts +20 -0
- package/dist/patterns/patient-check-in/index.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/index.js +13 -0
- package/dist/patterns/patient-check-in/index.js.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-changed.d.ts +33 -0
- package/dist/patterns/patient-check-in/patient-check-in-changed.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-connection-notice.d.ts +29 -0
- package/dist/patterns/patient-check-in/patient-check-in-connection-notice.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-done.d.ts +25 -0
- package/dist/patterns/patient-check-in/patient-check-in-done.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-entry.d.ts +29 -0
- package/dist/patterns/patient-check-in/patient-check-in-entry.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub-empty.d.ts +23 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub-empty.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub.d.ts +61 -0
- package/dist/patterns/patient-check-in/patient-check-in-hub.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-personal-data.d.ts +73 -0
- package/dist/patterns/patient-check-in/patient-check-in-personal-data.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-privacy.d.ts +9 -0
- package/dist/patterns/patient-check-in/patient-check-in-privacy.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-resume.d.ts +29 -0
- package/dist/patterns/patient-check-in/patient-check-in-resume.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-shell.d.ts +60 -0
- package/dist/patterns/patient-check-in/patient-check-in-shell.d.ts.map +1 -0
- package/dist/patterns/patient-check-in/patient-check-in-types.d.ts +92 -0
- package/dist/patterns/patient-check-in/patient-check-in-types.d.ts.map +1 -0
- package/dist/patterns/patient-portal/index.d.ts +12 -0
- package/dist/patterns/patient-portal/index.d.ts.map +1 -0
- package/dist/patterns/patient-portal/index.js +13 -0
- package/dist/patterns/patient-portal/index.js.map +1 -0
- package/dist/patterns/patient-portal/portal-appointments.d.ts +70 -0
- package/dist/patterns/patient-portal/portal-appointments.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-details.d.ts +148 -0
- package/dist/patterns/patient-portal/portal-details.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-documents.d.ts +74 -0
- package/dist/patterns/patient-portal/portal-documents.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-format.d.ts +14 -0
- package/dist/patterns/patient-portal/portal-format.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-home.d.ts +71 -0
- package/dist/patterns/patient-portal/portal-home.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-parts.d.ts +107 -0
- package/dist/patterns/patient-portal/portal-parts.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-shell.d.ts +84 -0
- package/dist/patterns/patient-portal/portal-shell.d.ts.map +1 -0
- package/dist/patterns/patient-portal/portal-types.d.ts +157 -0
- package/dist/patterns/patient-portal/portal-types.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/index.d.ts +7 -0
- package/dist/patterns/patient-sign-in/index.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/index.js +15 -0
- package/dist/patterns/patient-sign-in/index.js.map +1 -0
- package/dist/patterns/patient-sign-in/patient-card.d.ts +74 -0
- package/dist/patterns/patient-sign-in/patient-card.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-email.d.ts +109 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-email.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-pin.d.ts +157 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-pin.d.ts.map +1 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-steps.d.ts +143 -0
- package/dist/patterns/patient-sign-in/patient-sign-in-steps.d.ts.map +1 -0
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/patterns/signing/index.d.ts +25 -0
- package/dist/patterns/signing/index.d.ts.map +1 -0
- package/dist/patterns/signing/index.js +16 -0
- package/dist/patterns/signing/index.js.map +1 -0
- package/dist/patterns/signing/multi-field-signer.d.ts +117 -0
- package/dist/patterns/signing/multi-field-signer.d.ts.map +1 -0
- package/dist/patterns/signing/signing-awaiting-screen.d.ts +25 -0
- package/dist/patterns/signing/signing-awaiting-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-chrome.d.ts +30 -0
- package/dist/patterns/signing/signing-chrome.d.ts.map +1 -0
- package/dist/patterns/signing/signing-document-screen.d.ts +87 -0
- package/dist/patterns/signing/signing-document-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-end-screen.d.ts +27 -0
- package/dist/patterns/signing/signing-end-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-finished-screen.d.ts +34 -0
- package/dist/patterns/signing/signing-finished-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-footer.d.ts +56 -0
- package/dist/patterns/signing/signing-footer.d.ts.map +1 -0
- package/dist/patterns/signing/signing-handoff-screen.d.ts +37 -0
- package/dist/patterns/signing/signing-handoff-screen.d.ts.map +1 -0
- package/dist/patterns/signing/signing-message-dialog.d.ts +29 -0
- package/dist/patterns/signing/signing-message-dialog.d.ts.map +1 -0
- package/dist/patterns/signing/signing-progress-chip.d.ts +27 -0
- package/dist/patterns/signing/signing-progress-chip.d.ts.map +1 -0
- package/dist/patterns/signing/signing-roster.d.ts +44 -0
- package/dist/patterns/signing/signing-roster.d.ts.map +1 -0
- package/dist/patterns/signing/signing-staff-id-confirmation.d.ts +49 -0
- package/dist/patterns/signing/signing-staff-id-confirmation.d.ts.map +1 -0
- package/dist/patterns/verify-identity/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +49 -1
- package/dist/_chunks/appointment-card-OAOur8lH.js +0 -434
- package/dist/_chunks/appointment-card-OAOur8lH.js.map +0 -1
- package/dist/_chunks/appointment-tray-DSFqO5Rm.js +0 -193
- package/dist/_chunks/appointment-tray-DSFqO5Rm.js.map +0 -1
- package/dist/_chunks/calendar-appointment-editor-dialog-WW6V1SGh.js +0 -13663
- package/dist/_chunks/calendar-appointment-editor-dialog-WW6V1SGh.js.map +0 -1
- package/dist/_chunks/document-preview-_kQ9QvZV.js +0 -291
- package/dist/_chunks/document-preview-_kQ9QvZV.js.map +0 -1
- package/dist/_chunks/error-page-B0fGNTRB.js.map +0 -1
- package/dist/_chunks/finished-terminal-FR8uc_Ws.js +0 -122
- package/dist/_chunks/finished-terminal-FR8uc_Ws.js.map +0 -1
- package/dist/_chunks/is-safe-url-DkETxeHz.js +0 -7
- package/dist/_chunks/is-safe-url-DkETxeHz.js.map +0 -1
- package/dist/_chunks/otp-input-gV1446Dw.js +0 -301
- package/dist/_chunks/otp-input-gV1446Dw.js.map +0 -1
- package/dist/_chunks/pdf-viewer-BnBKdx0y.js.map +0 -1
- package/dist/_chunks/session-countdown-C4tzbJVc.js +0 -223
- package/dist/_chunks/session-countdown-C4tzbJVc.js.map +0 -1
- package/dist/_chunks/signature-field-DjabvRZm.js.map +0 -1
- package/dist/_chunks/signature-status-chip-pIoQjvH8.js.map +0 -1
- package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js +0 -210
- package/dist/_chunks/use-zoom-drilldown-qCX34w9I.js.map +0 -1
- package/dist/_chunks/user-x-DYszNtIg.js.map +0 -1
|
@@ -0,0 +1,504 @@
|
|
|
1
|
+
import { jsxs as r, jsx as e } from "react/jsx-runtime";
|
|
2
|
+
import { forwardRef as Na, useMemo as aa, useEffect as wa } from "react";
|
|
3
|
+
import { c as ka } from "./index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as ya } from "react-i18next";
|
|
5
|
+
import { A as ea } from "./avatar-Dp5apm1d.js";
|
|
6
|
+
import { B as c } from "./badge-BUk4RjTS.js";
|
|
7
|
+
import { T as Ca } from "./tag-BNlcEJfE.js";
|
|
8
|
+
import { T as za } from "./timestamp-DPLDWdxA.js";
|
|
9
|
+
import { T as sa } from "./transaction-chip-CkYd-3ky.js";
|
|
10
|
+
import { i as Ta } from "./is-development-CLUAnsU7.js";
|
|
11
|
+
import { V as Sa } from "./visually-hidden-BHxEUGyT.js";
|
|
12
|
+
import { p as Ma } from "./privacy-mask-text-B8YfzB7L.js";
|
|
13
|
+
import { a as Ra } from "./workflow-status-D1WgGVTP.js";
|
|
14
|
+
import { i as Aa } from "./is-safe-url-CEy9CEml.js";
|
|
15
|
+
import { a as Da, b as Va, c as _a } from "./entity-card-p-LANpYt.js";
|
|
16
|
+
import { V as Ia } from "./video-BheNGvsu.js";
|
|
17
|
+
import { M as La } from "./map-pin-BaY37-Km.js";
|
|
18
|
+
import { E as Pa } from "./eye-off-C_4xkbRP.js";
|
|
19
|
+
import { U as Ea } from "./user-x-BJZg4kaP.js";
|
|
20
|
+
import { B as Oa } from "./building-2-D33bLCWL.js";
|
|
21
|
+
import { S as ra } from "./star-Bf9L2Uot.js";
|
|
22
|
+
import { c as oa } from "./createLucideIcon-DhHxpK9K.js";
|
|
23
|
+
import { A as Ua } from "./armchair-BaLDW6Hz.js";
|
|
24
|
+
import { G as Fa } from "./globe-sHBW1JN5.js";
|
|
25
|
+
import { R as ja } from "./repeat-CvQa5rZt.js";
|
|
26
|
+
import { F as $a } from "./file-pen-line-k4uMBM3h.js";
|
|
27
|
+
import { C as Ba } from "./chevron-right-I9AeSxH2.js";
|
|
28
|
+
/**
|
|
29
|
+
* @license lucide-react v1.22.0 - ISC
|
|
30
|
+
*
|
|
31
|
+
* This source code is licensed under the ISC license.
|
|
32
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
33
|
+
*/
|
|
34
|
+
const qa = [
|
|
35
|
+
["rect", { width: "8", height: "4", x: "8", y: "2", rx: "1", ry: "1", key: "tgr4d6" }],
|
|
36
|
+
[
|
|
37
|
+
"path",
|
|
38
|
+
{
|
|
39
|
+
d: "M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2",
|
|
40
|
+
key: "116196"
|
|
41
|
+
}
|
|
42
|
+
],
|
|
43
|
+
["path", { d: "M9 14h6", key: "159ibu" }],
|
|
44
|
+
["path", { d: "M12 17v-6", key: "1y8rbf" }]
|
|
45
|
+
], Wa = oa("clipboard-plus", qa);
|
|
46
|
+
/**
|
|
47
|
+
* @license lucide-react v1.22.0 - ISC
|
|
48
|
+
*
|
|
49
|
+
* This source code is licensed under the ISC license.
|
|
50
|
+
* See the LICENSE file in the root directory of this source tree.
|
|
51
|
+
*/
|
|
52
|
+
const Ga = [
|
|
53
|
+
[
|
|
54
|
+
"path",
|
|
55
|
+
{
|
|
56
|
+
d: "M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z",
|
|
57
|
+
key: "18887p"
|
|
58
|
+
}
|
|
59
|
+
],
|
|
60
|
+
["path", { d: "M7 11h10", key: "1twpyw" }],
|
|
61
|
+
["path", { d: "M7 15h6", key: "d9of3u" }],
|
|
62
|
+
["path", { d: "M7 7h8", key: "af5zfr" }]
|
|
63
|
+
], Ha = oa("message-square-text", Ga), Ka = {
|
|
64
|
+
"var(--color-violet-500)": "ds:bg-[var(--color-violet-500)]",
|
|
65
|
+
"var(--color-purple-500)": "ds:bg-[var(--color-purple-500)]",
|
|
66
|
+
"var(--color-magenta-500)": "ds:bg-[var(--color-magenta-500)]",
|
|
67
|
+
"var(--color-blue-500)": "ds:bg-[var(--color-blue-500)]",
|
|
68
|
+
"var(--color-green-500)": "ds:bg-[var(--color-green-500)]",
|
|
69
|
+
"var(--color-red-500)": "ds:bg-[var(--color-red-500)]",
|
|
70
|
+
"var(--color-yellow-500)": "ds:bg-[var(--color-yellow-500)]",
|
|
71
|
+
"var(--color-indigo-500)": "ds:bg-[var(--color-indigo-500)]",
|
|
72
|
+
"var(--color-orange-500)": "ds:bg-[var(--color-orange-500)]",
|
|
73
|
+
"var(--color-fuchsia-500)": "ds:bg-[var(--color-fuchsia-500)]",
|
|
74
|
+
"var(--color-grey-700)": "ds:bg-[var(--color-grey-700)]"
|
|
75
|
+
};
|
|
76
|
+
function Ya(a) {
|
|
77
|
+
return Ka[_a(a)] ?? "ds:bg-[var(--color-grey-700)]";
|
|
78
|
+
}
|
|
79
|
+
function Xa(a) {
|
|
80
|
+
if (!a) return;
|
|
81
|
+
const t = new Date(a);
|
|
82
|
+
if (Number.isNaN(t.getTime())) return;
|
|
83
|
+
const u = /* @__PURE__ */ new Date();
|
|
84
|
+
let o = u.getFullYear() - t.getFullYear();
|
|
85
|
+
const d = u.getMonth() - t.getMonth();
|
|
86
|
+
return (d < 0 || d === 0 && u.getDate() < t.getDate()) && o--, o < 0 || o > 130 ? void 0 : o;
|
|
87
|
+
}
|
|
88
|
+
const na = {
|
|
89
|
+
hour: "numeric",
|
|
90
|
+
minute: "2-digit"
|
|
91
|
+
};
|
|
92
|
+
function Ja(a) {
|
|
93
|
+
if (a)
|
|
94
|
+
try {
|
|
95
|
+
return new Intl.DateTimeFormat("en", { timeZone: a }).resolvedOptions().timeZone;
|
|
96
|
+
} catch {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
const Qa = ka(
|
|
101
|
+
[
|
|
102
|
+
"ds:relative ds:flex ds:items-start ds:gap-[var(--spacing-sm)]",
|
|
103
|
+
"ds:rounded-[var(--radius-md)]",
|
|
104
|
+
"ds:text-start ds:group",
|
|
105
|
+
"ds:bg-[var(--card)] ds:text-[color:var(--card-foreground)]",
|
|
106
|
+
"ds:transition-[colors,border-color,box-shadow] ds:duration-[var(--animation-duration)]",
|
|
107
|
+
"ds:motion-reduce:transition-none",
|
|
108
|
+
"ds:forced-colors:border ds:forced-colors:border-[CanvasText]"
|
|
109
|
+
].join(" "),
|
|
110
|
+
{
|
|
111
|
+
variants: {
|
|
112
|
+
size: {
|
|
113
|
+
sm: "ds:p-[var(--spacing-sm)]",
|
|
114
|
+
md: "ds:p-[var(--spacing-md)]"
|
|
115
|
+
},
|
|
116
|
+
interactive: {
|
|
117
|
+
true: "ds:hover:bg-[color:var(--muted)]/40 ds:cursor-pointer",
|
|
118
|
+
false: ""
|
|
119
|
+
},
|
|
120
|
+
surface: {
|
|
121
|
+
// `flat` (default) is the chrome-less row used inside a bordered
|
|
122
|
+
// AppointmentTray. `elevated` gives each row its own card chrome
|
|
123
|
+
// (border + shadow) for use directly on a rail, e.g. AppointmentTimeline.
|
|
124
|
+
// Uses `--shadow-sm` (a row lift), not `--shadow-card`/`--shadow-lg`:
|
|
125
|
+
// the rail's `overflow-y:auto` scroll region clips `overflow-x` at a
|
|
126
|
+
// narrow gutter, so a wide 30px-blur shadow gets a hard-edged clip.
|
|
127
|
+
flat: "",
|
|
128
|
+
elevated: "ds:[:where(&)]:border-[length:var(--surface-border-width,var(--border-width-sm))] ds:border-[color:var(--card-border)] ds:shadow-[var(--shadow-sm)]"
|
|
129
|
+
},
|
|
130
|
+
selected: {
|
|
131
|
+
// The row the host has marked as the active/selected appointment —
|
|
132
|
+
// matches the `current` note's info-tinted accent: a solid
|
|
133
|
+
// inline-start bar plus a soft info wash, so the eye keeps its
|
|
134
|
+
// place in the list after a click.
|
|
135
|
+
true: "ds:border-s-2 ds:border-s-[color:var(--info)] ds:bg-[color:var(--info)]/10",
|
|
136
|
+
false: ""
|
|
137
|
+
},
|
|
138
|
+
dimmed: {
|
|
139
|
+
// Settled (concluded / no-show) rows: a muted wash instead of the
|
|
140
|
+
// elevated card surface, shadow dropped. Only the CHROME dims —
|
|
141
|
+
// text stays `--card-foreground` / `--muted-foreground`, so AA
|
|
142
|
+
// contrast is untouched in every theme.
|
|
143
|
+
true: "ds:bg-[color:var(--muted)]/40 ds:shadow-none",
|
|
144
|
+
false: ""
|
|
145
|
+
},
|
|
146
|
+
next: {
|
|
147
|
+
// The next appointment to start: a STEADY accent outline (a state,
|
|
148
|
+
// not a one-off address like the notes/bookings "addressed" ring,
|
|
149
|
+
// so no keyframe replay). `outline` rather than `border` keeps the
|
|
150
|
+
// row's own border/radius untouched.
|
|
151
|
+
true: "ds:outline ds:outline-2 ds:outline-[color:var(--accent)] ds:[outline-offset:-1px] ds:forced-colors:outline-[Highlight]",
|
|
152
|
+
false: ""
|
|
153
|
+
}
|
|
154
|
+
},
|
|
155
|
+
defaultVariants: {
|
|
156
|
+
size: "sm",
|
|
157
|
+
interactive: !1,
|
|
158
|
+
surface: "flat",
|
|
159
|
+
selected: !1,
|
|
160
|
+
dimmed: !1,
|
|
161
|
+
next: !1
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
), Za = [
|
|
165
|
+
"ds:min-w-0",
|
|
166
|
+
"ds:[&>div]:h-auto ds:[&>div]:min-h-8 ds:[&>div]:py-[var(--spacing-2xs)]",
|
|
167
|
+
"ds:[&_[data-workflow-status-value]]:overflow-visible",
|
|
168
|
+
"ds:[&_[data-workflow-status-value]]:whitespace-normal",
|
|
169
|
+
"ds:[&_[data-workflow-status-value]]:break-words"
|
|
170
|
+
].join(" "), ta = [
|
|
171
|
+
// Interactive elements need a box to remain keyboard-focusable in browsers.
|
|
172
|
+
"ds:inline-flex ds:min-w-0",
|
|
173
|
+
"ds:focus-visible:outline-none",
|
|
174
|
+
"ds:after:content-[''] ds:after:absolute ds:after:inset-0 ds:after:rounded-[var(--radius-md)]",
|
|
175
|
+
"ds:after:pointer-events-auto",
|
|
176
|
+
"ds:focus-visible:after:outline-[length:var(--focus-ring-width)]",
|
|
177
|
+
"ds:focus-visible:after:outline-solid",
|
|
178
|
+
"ds:focus-visible:after:outline-[color:var(--ring)]",
|
|
179
|
+
"ds:focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]",
|
|
180
|
+
"ds:forced-colors:focus-visible:after:outline-[CanvasText]"
|
|
181
|
+
].join(" "), ae = {
|
|
182
|
+
inPractice: La,
|
|
183
|
+
telehealth: Ia
|
|
184
|
+
}, ee = Na(
|
|
185
|
+
({
|
|
186
|
+
item: a,
|
|
187
|
+
size: t = "sm",
|
|
188
|
+
surface: u = "flat",
|
|
189
|
+
locale: o,
|
|
190
|
+
timeZone: d,
|
|
191
|
+
currency: C = "EUR",
|
|
192
|
+
showPatient: i = !0,
|
|
193
|
+
onActivate: p,
|
|
194
|
+
selected: z = !1,
|
|
195
|
+
hideDefaultStatus: da = !1,
|
|
196
|
+
privacy: l = !1,
|
|
197
|
+
privacyTitle: ia,
|
|
198
|
+
wrapText: b = !1,
|
|
199
|
+
className: la,
|
|
200
|
+
...ca
|
|
201
|
+
}, pa) => {
|
|
202
|
+
var P, E, O, U, F, j, $, B, q, W, G, H, K, Y, X, J, Q, Z;
|
|
203
|
+
const { t: s } = ya("ui"), f = aa(() => Ja(d), [d]), ma = aa(
|
|
204
|
+
() => f ? { ...na, timeZone: f } : na,
|
|
205
|
+
[f]
|
|
206
|
+
);
|
|
207
|
+
wa(() => {
|
|
208
|
+
d && !f && Ta() && console.warn(
|
|
209
|
+
`AppointmentCard: "${d}" is not a time zone this browser knows, so the start time shows in the browser's own zone.`
|
|
210
|
+
);
|
|
211
|
+
}, [d, f]);
|
|
212
|
+
const g = !!p, ua = !!a.url && Aa(a.url), fa = !(da && a.state === "confirmed"), x = ((P = a.patient) == null ? void 0 : P.name) ?? s("appointmentCard.noPatient"), m = (E = a.operator) == null ? void 0 : E.name, h = s(`appointmentCard.state.${a.state}`), T = Da(a.state), ga = T.Icon, ha = ((O = a.flags) == null ? void 0 : O.noPatientAssigned) || !a.patient, S = l && i && a.patient !== void 0, M = l ? void 0 : Xa((U = a.patient) == null ? void 0 : U.dobIso), R = ((F = a.practiceName) == null ? void 0 : F.trim()) || void 0, N = t === "md" ? "md" : "sm", va = ae[a.type], A = i ? x : m ?? s("appointmentCard.appointment"), D = S ? s("appointmentCard.itemLabelGeneric", {
|
|
213
|
+
title: s("appointmentPeek.hiddenName"),
|
|
214
|
+
state: h
|
|
215
|
+
}) : i ? s("appointmentCard.itemLabel", {
|
|
216
|
+
patient: x,
|
|
217
|
+
state: h
|
|
218
|
+
}) : s("appointmentCard.itemLabelGeneric", { title: A, state: h }), w = /* @__PURE__ */ r(
|
|
219
|
+
"span",
|
|
220
|
+
{
|
|
221
|
+
className: (b ? "ds:min-w-0 ds:break-words" : "ds:min-w-0 ds:truncate") + " type-title-item ds:text-[color:var(--foreground)]",
|
|
222
|
+
children: [
|
|
223
|
+
S ? /* @__PURE__ */ r("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
|
|
224
|
+
/* @__PURE__ */ e(Pa, { "aria-hidden": "true", className: "ds:size-4 ds:shrink-0" }),
|
|
225
|
+
/* @__PURE__ */ e(Sa, { children: s("appointmentPeek.hiddenName") }),
|
|
226
|
+
/* @__PURE__ */ e("span", { "aria-hidden": "true", children: Ma(ia) })
|
|
227
|
+
] }) : A,
|
|
228
|
+
i && M !== void 0 ? /* @__PURE__ */ r("span", { className: "ds:ms-[var(--spacing-2xs)] ds:font-normal ds:text-[color:var(--muted-foreground)]", children: [
|
|
229
|
+
"· ",
|
|
230
|
+
M
|
|
231
|
+
] }) : null
|
|
232
|
+
]
|
|
233
|
+
}
|
|
234
|
+
);
|
|
235
|
+
let v;
|
|
236
|
+
g && ua ? v = /* @__PURE__ */ e(
|
|
237
|
+
"a",
|
|
238
|
+
{
|
|
239
|
+
href: a.url,
|
|
240
|
+
"aria-label": D,
|
|
241
|
+
"data-action": "open-appointment",
|
|
242
|
+
className: ta,
|
|
243
|
+
onClick: (n) => {
|
|
244
|
+
n.defaultPrevented || n.metaKey || n.ctrlKey || n.shiftKey || p == null || p(a);
|
|
245
|
+
},
|
|
246
|
+
children: w
|
|
247
|
+
}
|
|
248
|
+
) : g ? v = /* @__PURE__ */ e(
|
|
249
|
+
"button",
|
|
250
|
+
{
|
|
251
|
+
type: "button",
|
|
252
|
+
"aria-label": D,
|
|
253
|
+
"data-action": "open-appointment",
|
|
254
|
+
className: ta + " ds:bg-transparent ds:border-0 ds:p-0 ds:text-start",
|
|
255
|
+
onClick: () => p == null ? void 0 : p(a),
|
|
256
|
+
children: w
|
|
257
|
+
}
|
|
258
|
+
) : v = w;
|
|
259
|
+
const V = (a.treatments ?? []).map((n, ba) => {
|
|
260
|
+
const xa = n.elements && n.elements.length > 0 ? s("appointmentCard.treatmentWithElements", {
|
|
261
|
+
care: n.careName,
|
|
262
|
+
elements: n.elements.join(", ")
|
|
263
|
+
}) : n.careName;
|
|
264
|
+
return /* @__PURE__ */ e(
|
|
265
|
+
Ca,
|
|
266
|
+
{
|
|
267
|
+
label: xa,
|
|
268
|
+
variant: "neutral",
|
|
269
|
+
fill: "outline",
|
|
270
|
+
size: "sm",
|
|
271
|
+
maxInlineSize: "12rem"
|
|
272
|
+
},
|
|
273
|
+
`${n.careName}-${ba}`
|
|
274
|
+
);
|
|
275
|
+
}), k = (j = a.bookingReason) == null ? void 0 : j.advanceAmountCents, _ = !l && typeof k == "number" && k > 0, y = ($ = a.money) == null ? void 0 : $.unpaidAmountCents, I = !l && typeof y == "number" && y > 0, L = !l && ((B = a.flags) == null ? void 0 : B.highlightedAnamnesis);
|
|
276
|
+
return /* @__PURE__ */ r(
|
|
277
|
+
"div",
|
|
278
|
+
{
|
|
279
|
+
ref: pa,
|
|
280
|
+
role: "listitem",
|
|
281
|
+
"data-component": "appointment-card",
|
|
282
|
+
"data-component-id": a.id,
|
|
283
|
+
"data-state": a.state,
|
|
284
|
+
"data-type": a.type,
|
|
285
|
+
"data-privacy": l ? "masked" : void 0,
|
|
286
|
+
"aria-current": z ? "true" : void 0,
|
|
287
|
+
className: Qa({
|
|
288
|
+
size: t,
|
|
289
|
+
interactive: g,
|
|
290
|
+
surface: u,
|
|
291
|
+
selected: z,
|
|
292
|
+
dimmed: a.dimmed,
|
|
293
|
+
next: a.next,
|
|
294
|
+
className: la
|
|
295
|
+
}),
|
|
296
|
+
...ca,
|
|
297
|
+
children: [
|
|
298
|
+
/* @__PURE__ */ r("span", { className: "ds:flex ds:min-w-20 ds:shrink-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]", children: [
|
|
299
|
+
/* @__PURE__ */ r("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:whitespace-nowrap ds:text-[color:var(--muted-foreground)]", children: [
|
|
300
|
+
/* @__PURE__ */ e(va, { "aria-hidden": "true", className: "ds:size-3.5 ds:shrink-0" }),
|
|
301
|
+
/* @__PURE__ */ e("span", { className: "ds:sr-only", children: s(`appointmentCard.type.${a.type}`) }),
|
|
302
|
+
/* @__PURE__ */ e(
|
|
303
|
+
za,
|
|
304
|
+
{
|
|
305
|
+
value: a.startIso,
|
|
306
|
+
format: "absolute",
|
|
307
|
+
shape: "bare",
|
|
308
|
+
locale: o,
|
|
309
|
+
absoluteFormat: ma,
|
|
310
|
+
className: "type-body-sm ds:font-medium ds:text-[color:var(--foreground)] ds:tabular-nums"
|
|
311
|
+
}
|
|
312
|
+
)
|
|
313
|
+
] }),
|
|
314
|
+
/* @__PURE__ */ e("span", { className: "type-eyebrow ds:text-[color:var(--muted-foreground)]", children: s("appointmentCard.duration", { count: a.durationMin }) })
|
|
315
|
+
] }),
|
|
316
|
+
m ? /* @__PURE__ */ r("span", { className: "ds:relative ds:shrink-0", children: [
|
|
317
|
+
/* @__PURE__ */ e(
|
|
318
|
+
ea,
|
|
319
|
+
{
|
|
320
|
+
name: m,
|
|
321
|
+
color: Va((q = a.operator) == null ? void 0 : q.colorId),
|
|
322
|
+
size: N,
|
|
323
|
+
"aria-hidden": "true",
|
|
324
|
+
role: "presentation",
|
|
325
|
+
"aria-label": void 0
|
|
326
|
+
}
|
|
327
|
+
),
|
|
328
|
+
/* @__PURE__ */ e(
|
|
329
|
+
"span",
|
|
330
|
+
{
|
|
331
|
+
"aria-hidden": "true",
|
|
332
|
+
className: "ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] " + Ya((W = a.operator) == null ? void 0 : W.colorId)
|
|
333
|
+
}
|
|
334
|
+
)
|
|
335
|
+
] }) : null,
|
|
336
|
+
/* @__PURE__ */ r("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]", children: [
|
|
337
|
+
/* @__PURE__ */ r(
|
|
338
|
+
"div",
|
|
339
|
+
{
|
|
340
|
+
className: "ds:flex ds:items-start ds:gap-[var(--spacing-sm)]" + (b ? " ds:flex-wrap" : ""),
|
|
341
|
+
children: [
|
|
342
|
+
/* @__PURE__ */ r("div", { className: "ds:flex-1 ds:min-w-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)]", children: [
|
|
343
|
+
i && !l && ((G = a.patient) != null && G.avatarUrl) ? /* @__PURE__ */ e(
|
|
344
|
+
ea,
|
|
345
|
+
{
|
|
346
|
+
name: x,
|
|
347
|
+
src: a.patient.avatarUrl,
|
|
348
|
+
size: N,
|
|
349
|
+
className: "ds:shrink-0",
|
|
350
|
+
"aria-hidden": "true",
|
|
351
|
+
role: "presentation",
|
|
352
|
+
"aria-label": void 0
|
|
353
|
+
}
|
|
354
|
+
) : null,
|
|
355
|
+
i && ha ? /* @__PURE__ */ e(
|
|
356
|
+
"span",
|
|
357
|
+
{
|
|
358
|
+
className: `ds:shrink-0 ds:inline-flex ds:items-center ds:justify-center ds:rounded-[var(--radius-full)] ds:bg-[color:var(--muted)] ds:text-[color:var(--muted-foreground)] ${N === "md" ? "ds:size-10" : "ds:size-8"}`,
|
|
359
|
+
children: /* @__PURE__ */ e(Ea, { "aria-hidden": "true", className: "ds:size-4" })
|
|
360
|
+
}
|
|
361
|
+
) : null,
|
|
362
|
+
v
|
|
363
|
+
] }),
|
|
364
|
+
a.next ? /* @__PURE__ */ e(
|
|
365
|
+
c,
|
|
366
|
+
{
|
|
367
|
+
variant: "accentSoft",
|
|
368
|
+
size: "sm",
|
|
369
|
+
className: "ds:shrink-0",
|
|
370
|
+
"aria-hidden": "true",
|
|
371
|
+
children: s("appointmentCard.next")
|
|
372
|
+
}
|
|
373
|
+
) : null,
|
|
374
|
+
fa ? /* @__PURE__ */ e(
|
|
375
|
+
Ra,
|
|
376
|
+
{
|
|
377
|
+
size: "sm",
|
|
378
|
+
value: a.state,
|
|
379
|
+
option: {
|
|
380
|
+
value: a.state,
|
|
381
|
+
label: h,
|
|
382
|
+
icon: /* @__PURE__ */ e(ga, { "aria-hidden": "true" }),
|
|
383
|
+
tone: T.tone
|
|
384
|
+
},
|
|
385
|
+
className: b ? Za : "ds:shrink-0"
|
|
386
|
+
}
|
|
387
|
+
) : null
|
|
388
|
+
]
|
|
389
|
+
}
|
|
390
|
+
),
|
|
391
|
+
a.next ? /* @__PURE__ */ e("span", { className: "ds:sr-only", children: s("appointmentCard.nextSr") }) : null,
|
|
392
|
+
R ? /* @__PURE__ */ r(
|
|
393
|
+
"span",
|
|
394
|
+
{
|
|
395
|
+
"data-slot": "practice",
|
|
396
|
+
className: "type-meta ds:flex ds:min-w-0 ds:items-start ds:gap-[var(--spacing-2xs)] ds:text-[color:var(--muted-foreground)]",
|
|
397
|
+
children: [
|
|
398
|
+
/* @__PURE__ */ e("span", { className: "ds:flex ds:h-[1lh] ds:shrink-0 ds:items-center", children: /* @__PURE__ */ e(Oa, { "aria-hidden": "true", className: "ds:size-3" }) }),
|
|
399
|
+
/* @__PURE__ */ e("span", { className: "ds:sr-only", children: s("appointmentCard.practice") }),
|
|
400
|
+
/* @__PURE__ */ e("span", { dir: "auto", className: "ds:min-w-0 ds:break-words", children: R })
|
|
401
|
+
]
|
|
402
|
+
}
|
|
403
|
+
) : null,
|
|
404
|
+
i && m || (H = a.bookingReason) != null && H.specialty || a.firstVisit === "yes" || a.firstVisit === "unknown" || a.bookingNote ? /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]", children: [
|
|
405
|
+
i && m ? /* @__PURE__ */ e("span", { children: m }) : null,
|
|
406
|
+
(K = a.bookingReason) != null && K.specialty ? /* @__PURE__ */ e("span", { children: a.bookingReason.specialty }) : null,
|
|
407
|
+
a.firstVisit === "yes" ? /* @__PURE__ */ r("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
|
|
408
|
+
/* @__PURE__ */ e(ra, { "aria-hidden": "true", className: "ds:size-3 ds:shrink-0" }),
|
|
409
|
+
s("appointmentCard.firstVisit")
|
|
410
|
+
] }) : null,
|
|
411
|
+
a.firstVisit === "unknown" ? /* @__PURE__ */ r("span", { className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]", children: [
|
|
412
|
+
/* @__PURE__ */ e(ra, { "aria-hidden": "true", className: "ds:size-3 ds:shrink-0" }),
|
|
413
|
+
s("appointmentCard.firstVisitUnknown")
|
|
414
|
+
] }) : null,
|
|
415
|
+
a.bookingNote ? /* @__PURE__ */ r(
|
|
416
|
+
"span",
|
|
417
|
+
{
|
|
418
|
+
className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]",
|
|
419
|
+
title: s("appointmentCard.hasBookingNote"),
|
|
420
|
+
children: [
|
|
421
|
+
/* @__PURE__ */ e(
|
|
422
|
+
Ha,
|
|
423
|
+
{
|
|
424
|
+
"aria-hidden": "true",
|
|
425
|
+
className: "ds:size-3 ds:shrink-0"
|
|
426
|
+
}
|
|
427
|
+
),
|
|
428
|
+
s("appointmentCard.hasBookingNote")
|
|
429
|
+
]
|
|
430
|
+
}
|
|
431
|
+
) : null
|
|
432
|
+
] }) : null,
|
|
433
|
+
(Y = a.bookingReason) != null && Y.description && !l ? /* @__PURE__ */ e("span", { className: "type-body-sm ds:text-[color:var(--foreground)] ds:truncate", children: a.bookingReason.description }) : null,
|
|
434
|
+
V.length > 0 ? /* @__PURE__ */ e("div", { className: "ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]", children: V }) : null,
|
|
435
|
+
a.carePlan || a.chair || (X = a.flags) != null && X.bookedOnline || L || (J = a.flags) != null && J.billable || a.recurring || a.signing || _ || I ? /* @__PURE__ */ r("div", { className: "ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]", children: [
|
|
436
|
+
a.carePlan ? /* @__PURE__ */ e(
|
|
437
|
+
c,
|
|
438
|
+
{
|
|
439
|
+
variant: "accentSoft",
|
|
440
|
+
size: "sm",
|
|
441
|
+
leading: /* @__PURE__ */ e(Wa, {}),
|
|
442
|
+
children: s("appointmentCard.carePlan", {
|
|
443
|
+
number: a.carePlan.number
|
|
444
|
+
})
|
|
445
|
+
}
|
|
446
|
+
) : null,
|
|
447
|
+
a.chair ? /* @__PURE__ */ e(c, { variant: "neutral", size: "sm", leading: /* @__PURE__ */ e(Ua, {}), children: s("appointmentCard.chair", { chair: a.chair }) }) : null,
|
|
448
|
+
(Q = a.flags) != null && Q.bookedOnline ? /* @__PURE__ */ e(c, { variant: "info", size: "sm", leading: /* @__PURE__ */ e(Fa, {}), children: s("appointmentCard.flag.bookedOnline") }) : null,
|
|
449
|
+
L ? /* @__PURE__ */ e(c, { variant: "warning", size: "sm", withDot: !0, children: s("appointmentCard.flag.highlightedAnamnesis") }) : null,
|
|
450
|
+
a.recurring ? /* @__PURE__ */ e(c, { variant: "neutral", size: "sm", leading: /* @__PURE__ */ e(ja, {}), children: s("appointmentCard.recurring") }) : null,
|
|
451
|
+
a.signing ? /* @__PURE__ */ e(
|
|
452
|
+
c,
|
|
453
|
+
{
|
|
454
|
+
variant: a.signing.toComplete >= a.signing.required ? "success" : "warning",
|
|
455
|
+
size: "sm",
|
|
456
|
+
leading: /* @__PURE__ */ e($a, {}),
|
|
457
|
+
children: s("appointmentCard.signing", {
|
|
458
|
+
complete: a.signing.toComplete,
|
|
459
|
+
required: a.signing.required
|
|
460
|
+
})
|
|
461
|
+
}
|
|
462
|
+
) : null,
|
|
463
|
+
(Z = a.flags) != null && Z.billable ? /* @__PURE__ */ e(c, { variant: "success", size: "sm", withDot: !0, children: s("appointmentCard.flag.billable") }) : null,
|
|
464
|
+
_ ? /* @__PURE__ */ e(
|
|
465
|
+
sa,
|
|
466
|
+
{
|
|
467
|
+
state: "to-invoice",
|
|
468
|
+
amount: k / 100,
|
|
469
|
+
currency: C,
|
|
470
|
+
locale: o,
|
|
471
|
+
size: "sm",
|
|
472
|
+
showLabel: !0
|
|
473
|
+
}
|
|
474
|
+
) : null,
|
|
475
|
+
I ? /* @__PURE__ */ e(
|
|
476
|
+
sa,
|
|
477
|
+
{
|
|
478
|
+
state: "debt",
|
|
479
|
+
amount: y / 100,
|
|
480
|
+
currency: C,
|
|
481
|
+
locale: o,
|
|
482
|
+
size: "sm",
|
|
483
|
+
showLabel: !0
|
|
484
|
+
}
|
|
485
|
+
) : null
|
|
486
|
+
] }) : null
|
|
487
|
+
] }),
|
|
488
|
+
g ? /* @__PURE__ */ e(
|
|
489
|
+
Ba,
|
|
490
|
+
{
|
|
491
|
+
"aria-hidden": "true",
|
|
492
|
+
className: "ds:size-4 ds:shrink-0 ds:self-center ds:text-[color:var(--muted-foreground)] ds:opacity-0 ds:transition-opacity ds:motion-reduce:transition-none ds:group-hover:opacity-100 ds:group-focus-within:opacity-100 ds:rtl:rotate-180"
|
|
493
|
+
}
|
|
494
|
+
) : null
|
|
495
|
+
]
|
|
496
|
+
}
|
|
497
|
+
);
|
|
498
|
+
}
|
|
499
|
+
);
|
|
500
|
+
ee.displayName = "AppointmentCard";
|
|
501
|
+
export {
|
|
502
|
+
ee as A
|
|
503
|
+
};
|
|
504
|
+
//# sourceMappingURL=appointment-card-DG3m9yN-.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"appointment-card-DG3m9yN-.js","sources":["../../node_modules/lucide-react/dist/esm/icons/clipboard-plus.mjs","../../node_modules/lucide-react/dist/esm/icons/message-square-text.mjs","../../src/components/appointment-card/appointment-card.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\"rect\", { width: \"8\", height: \"4\", x: \"8\", y: \"2\", rx: \"1\", ry: \"1\", key: \"tgr4d6\" }],\n [\n \"path\",\n {\n d: \"M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2\",\n key: \"116196\"\n }\n ],\n [\"path\", { d: \"M9 14h6\", key: \"159ibu\" }],\n [\"path\", { d: \"M12 17v-6\", key: \"1y8rbf\" }]\n];\nconst ClipboardPlus = createLucideIcon(\"clipboard-plus\", __iconNode);\n\nexport { __iconNode, ClipboardPlus as default };\n//# sourceMappingURL=clipboard-plus.mjs.map\n","/**\n * @license lucide-react v1.22.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.mjs';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z\",\n key: \"18887p\"\n }\n ],\n [\"path\", { d: \"M7 11h10\", key: \"1twpyw\" }],\n [\"path\", { d: \"M7 15h6\", key: \"d9of3u\" }],\n [\"path\", { d: \"M7 7h8\", key: \"af5zfr\" }]\n];\nconst MessageSquareText = createLucideIcon(\"message-square-text\", __iconNode);\n\nexport { __iconNode, MessageSquareText as default };\n//# sourceMappingURL=message-square-text.mjs.map\n","import {\n forwardRef,\n useEffect,\n useMemo,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport {\n Armchair,\n Building2,\n ChevronRight,\n ClipboardPlus,\n EyeOff,\n FileSignature,\n Globe,\n MapPin,\n MessageSquareText,\n Repeat,\n Star,\n UserX,\n Video,\n} from 'lucide-react';\nimport { Avatar } from '../avatar/avatar';\nimport { Badge } from '../badge/badge';\nimport { Tag } from '../tag/tag';\nimport { Timestamp } from '../timestamp/timestamp';\nimport { TransactionChip } from '../transaction-chip/transaction-chip';\nimport {\n appointmentStateWorkflow,\n colorIdToToken,\n colorIdToAvatarToken,\n isSafeEntityUrl,\n} from '../_shared/entity-card';\nimport type { AppointmentState } from '../_shared/entity-card';\nimport { isDevelopment } from '../_shared/is-development';\nimport { privacyMask } from '../_shared/privacy-mask';\nimport { VisuallyHidden } from '../visually-hidden';\nimport { WorkflowStatusDisplay } from '../workflow-status';\n\n/*\n * Closed colour-dot class map. `colorIdToToken` resolves the operator's\n * numeric colour id to one of a fixed set of palette tokens; the operator\n * dot needs a *static* Tailwind class for each so the compiler can emit it\n * (dynamic `ds:bg-[…]` strings are not seen by the JIT). The keys mirror the\n * exact token strings the shared helper returns.\n */\nconst OPERATOR_DOT_CLASS: Record<string, string> = {\n 'var(--color-violet-500)': 'ds:bg-[var(--color-violet-500)]',\n 'var(--color-purple-500)': 'ds:bg-[var(--color-purple-500)]',\n 'var(--color-magenta-500)': 'ds:bg-[var(--color-magenta-500)]',\n 'var(--color-blue-500)': 'ds:bg-[var(--color-blue-500)]',\n 'var(--color-green-500)': 'ds:bg-[var(--color-green-500)]',\n 'var(--color-red-500)': 'ds:bg-[var(--color-red-500)]',\n 'var(--color-yellow-500)': 'ds:bg-[var(--color-yellow-500)]',\n 'var(--color-indigo-500)': 'ds:bg-[var(--color-indigo-500)]',\n 'var(--color-orange-500)': 'ds:bg-[var(--color-orange-500)]',\n 'var(--color-fuchsia-500)': 'ds:bg-[var(--color-fuchsia-500)]',\n 'var(--color-grey-700)': 'ds:bg-[var(--color-grey-700)]',\n};\n\nfunction operatorDotClass(colorId: number | string | undefined): string {\n return (\n OPERATOR_DOT_CLASS[colorIdToToken(colorId)] ??\n 'ds:bg-[var(--color-grey-700)]'\n );\n}\n\n/** Age in whole years from a DOB string, or undefined if unparseable. */\nfunction ageFromDob(dobIso: string | undefined): number | undefined {\n if (!dobIso) return undefined;\n const dob = new Date(dobIso);\n if (Number.isNaN(dob.getTime())) return undefined;\n const now = new Date();\n let age = now.getFullYear() - dob.getFullYear();\n const monthDiff = now.getMonth() - dob.getMonth();\n if (monthDiff < 0 || (monthDiff === 0 && now.getDate() < dob.getDate())) {\n age--;\n }\n return age < 0 || age > 130 ? undefined : age;\n}\n\n/** The start time on the leading rail: hours and minutes, no date. */\nconst START_TIME_FORMAT: Intl.DateTimeFormatOptions = {\n hour: 'numeric',\n minute: '2-digit',\n};\n\n/**\n * The zone as `Intl` knows it, or undefined when `Intl` rejects it. An\n * unknown zone makes `Intl.DateTimeFormat` throw, which would take the\n * whole card down; undefined falls back to the browser's zone instead.\n */\nfunction supportedTimeZone(timeZone: string | undefined): string | undefined {\n if (!timeZone) return undefined;\n try {\n const format = new Intl.DateTimeFormat('en', { timeZone });\n return format.resolvedOptions().timeZone;\n } catch {\n return undefined;\n }\n}\n\n/* -------------------------------------------------------------------- */\n/* AppointmentCard */\n/* */\n/* Single-row appointment surface — sibling of AgendaCard, but richer: */\n/* leading timestamp, operator + patient avatars with the operator */\n/* colour dot, a lifecycle-state Badge (announced by label, never colour */\n/* alone), treatment / tooth Tags, and an optional advance-deposit */\n/* TransactionChip. State→Badge-variant + colour-id→token + URL-safety */\n/* come from the shared `_shared/entity-card` helpers. */\n/* */\n/* Optional, for patient-facing lists across practices: */\n/* `item.practiceName` adds a practice line, and `timeZone` shows the */\n/* start time on the practice's clock instead of the browser's. */\n/* */\n/* All visible text flows through useTranslation('ui') against the */\n/* `appointmentCard.*` namespace (plus shared `financial.*` for money). */\n/* -------------------------------------------------------------------- */\n\n// Back-compat / one-stop import — the URL guard lives in the shared helper.\nexport { isSafeEntityUrl as isSafeAppointmentUrl } from '../_shared/is-safe-url';\n\n/* -------------------------------------------------------------------- */\n/* Types */\n/* -------------------------------------------------------------------- */\n\n/** Appointment delivery channel. */\nexport type AppointmentType = 'inPractice' | 'telehealth';\n\n/** First-visit tri-state flag. */\nexport type AppointmentFirstVisit = 'yes' | 'no' | 'unknown';\n\n/** Operator (clinician) summary — name + optional palette colour id. */\nexport interface AppointmentOperator {\n /** Operator display name — drives the avatar initials + accessible name. */\n name: string;\n /** Numeric palette colour id, resolved to a kit token for the colour dot. */\n colorId?: number | string;\n}\n\n/** Patient summary — identity + optional age driver. */\nexport interface AppointmentPatient {\n /** Patient display name. */\n name: string;\n /** Optional avatar image URL. */\n avatarUrl?: string;\n /** ISO-8601 date of birth — when present, the card renders the age as a\n * suffix on the name (e.g. \"Carol Danvers · 45\"). */\n dobIso?: string;\n}\n\n/** One treatment line within the appointment. */\nexport interface AppointmentTreatment {\n /** Localised care / treatment name. */\n careName: string;\n /** Optional tooth elements (e.g. FDI ids) the treatment targets. */\n elements?: string[];\n}\n\n/** Booking-reason metadata captured at online-booking time. */\nexport interface AppointmentBookingReason {\n /** Localised booking-reason description. */\n description: string;\n /** Expected duration in minutes. */\n durationMin?: number;\n /** Advance / deposit amount in cents (non-negative). */\n advanceAmountCents?: number;\n /** Localised specialty label. */\n specialty?: string;\n}\n\n/** Money summary for the appointment. */\nexport interface AppointmentMoney {\n /** Total billable amount in cents. When present, rendered as a\n * TransactionChip. */\n billableAmountCents?: number;\n /** Outstanding unpaid amount in cents. When > 0, rendered as a warning\n * TransactionChip so the front desk can flag it at a glance. */\n unpaidAmountCents?: number;\n}\n\n/** Signing status for documents attached to the appointment. */\nexport interface AppointmentSigning {\n /** How many documents require a signature. */\n required: number;\n /** How many have been completed so far. */\n toComplete: number;\n}\n\n/** Boolean appointment flags surfaced as chips / indicators. */\nexport interface AppointmentFlags {\n /** Shows the \"Booked online\" chip. */\n bookedOnline?: boolean;\n /** Shows the no-patient placeholder in place of the patient avatar. */\n noPatientAssigned?: boolean;\n /** Shows the \"Anamnesis flag\" warning chip. */\n highlightedAnamnesis?: boolean;\n /** Shows the \"Billable\" chip. */\n billable?: boolean;\n}\n\nexport interface AppointmentItem {\n /** Stable appointment identifier. */\n id: string;\n /** ISO-8601 start instant. */\n startIso: string;\n /** Duration in minutes. */\n durationMin: number;\n /** Lifecycle state — drives the Badge variant + label. */\n state: AppointmentState;\n /** Delivery channel — drives the leading type glyph. */\n type: AppointmentType;\n /** First-visit flag. */\n firstVisit?: AppointmentFirstVisit;\n /** Assigned operator. */\n operator?: AppointmentOperator;\n /** Chair / room label — surfaced as a chip. */\n chair?: string;\n /**\n * The practice the appointment is at, as the practice writes its name.\n * Shown on its own line under the title, so a patient with appointments\n * at several practices sees where each one is. Laid out in its own\n * direction (`dir=\"auto\"`), as text a practice writes always is. Not part\n * of the activator's accessible name. Absent or blank, no line is shown.\n */\n practiceName?: string;\n /**\n * The care plan this appointment belongs to, when any — surfaced as a chip\n * (`Care plan {number}`). `url` is the deep link the consumer may use for\n * navigation; the chip itself is non-interactive so it never nests an anchor\n * inside the row's own stretched link.\n */\n carePlan?: { number: string; url?: string };\n /** Patient identity. */\n patient?: AppointmentPatient;\n /** Treatment lines. */\n treatments?: AppointmentTreatment[];\n /** Online booking-reason metadata. */\n bookingReason?: AppointmentBookingReason;\n /** Boolean flags. */\n flags?: AppointmentFlags;\n /** Money summary — billable + unpaid amounts. */\n money?: AppointmentMoney;\n /** Whether this appointment is part of a recurring series. */\n recurring?: boolean;\n /** Signing status for attached documents. */\n signing?: AppointmentSigning;\n /** A note left by the patient at booking time. When present, a small\n * message icon signals it. */\n bookingNote?: string;\n /** Optional deep link — when present (and safe) the row renders as an anchor. */\n url?: string;\n /**\n * Settle the row visually without removing it from the list — a muted\n * wash in place of the elevated surface, shadow dropped. Text keeps its\n * normal foreground colour so contrast is unaffected; only the chrome\n * dims. For a row already concluded (done / no-show) that a host still\n * wants listed alongside what's still ahead.\n */\n dimmed?: boolean;\n /**\n * Marks this as the NEXT appointment to start — a steady accent outline\n * (a state, not a one-off address, so it never animates) plus a small\n * \"Next\" label. The cue never rests on colour alone.\n */\n next?: boolean;\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA — row */\n/* -------------------------------------------------------------------- */\n\nconst appointmentCardVariants = cva(\n [\n 'ds:relative ds:flex ds:items-start ds:gap-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-md)]',\n 'ds:text-start ds:group',\n 'ds:bg-[var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:transition-[colors,border-color,box-shadow] ds:duration-[var(--animation-duration)]',\n 'ds:motion-reduce:transition-none',\n 'ds:forced-colors:border ds:forced-colors:border-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:p-[var(--spacing-sm)]',\n md: 'ds:p-[var(--spacing-md)]',\n },\n interactive: {\n true: 'ds:hover:bg-[color:var(--muted)]/40 ds:cursor-pointer',\n false: '',\n },\n surface: {\n // `flat` (default) is the chrome-less row used inside a bordered\n // AppointmentTray. `elevated` gives each row its own card chrome\n // (border + shadow) for use directly on a rail, e.g. AppointmentTimeline.\n // Uses `--shadow-sm` (a row lift), not `--shadow-card`/`--shadow-lg`:\n // the rail's `overflow-y:auto` scroll region clips `overflow-x` at a\n // narrow gutter, so a wide 30px-blur shadow gets a hard-edged clip.\n flat: '',\n elevated:\n 'ds:[:where(&)]:border-[length:var(--surface-border-width,var(--border-width-sm))] ds:border-[color:var(--card-border)] ds:shadow-[var(--shadow-sm)]',\n },\n selected: {\n // The row the host has marked as the active/selected appointment —\n // matches the `current` note's info-tinted accent: a solid\n // inline-start bar plus a soft info wash, so the eye keeps its\n // place in the list after a click.\n true: 'ds:border-s-2 ds:border-s-[color:var(--info)] ds:bg-[color:var(--info)]/10',\n false: '',\n },\n dimmed: {\n // Settled (concluded / no-show) rows: a muted wash instead of the\n // elevated card surface, shadow dropped. Only the CHROME dims —\n // text stays `--card-foreground` / `--muted-foreground`, so AA\n // contrast is untouched in every theme.\n true: 'ds:bg-[color:var(--muted)]/40 ds:shadow-none',\n false: '',\n },\n next: {\n // The next appointment to start: a STEADY accent outline (a state,\n // not a one-off address like the notes/bookings \"addressed\" ring,\n // so no keyframe replay). `outline` rather than `border` keeps the\n // row's own border/radius untouched.\n true: 'ds:outline ds:outline-2 ds:outline-[color:var(--accent)] ds:[outline-offset:-1px] ds:forced-colors:outline-[Highlight]',\n false: '',\n },\n },\n defaultVariants: {\n size: 'sm',\n interactive: false,\n surface: 'flat',\n selected: false,\n dimmed: false,\n next: false,\n },\n },\n);\n\n// The shared status surface has a fixed height and a one-line value. These\n// descendant selectors out-rank its own classes, so a long label wraps and\n// the box grows with it. Used only when `wrapText` is set.\nconst WRAPPED_STATUS_CLASS = [\n 'ds:min-w-0',\n 'ds:[&>div]:h-auto ds:[&>div]:min-h-8 ds:[&>div]:py-[var(--spacing-2xs)]',\n 'ds:[&_[data-workflow-status-value]]:overflow-visible',\n 'ds:[&_[data-workflow-status-value]]:whitespace-normal',\n 'ds:[&_[data-workflow-status-value]]:break-words',\n].join(' ');\n\nconst stretchedLinkClass = [\n // Interactive elements need a box to remain keyboard-focusable in browsers.\n 'ds:inline-flex ds:min-w-0',\n 'ds:focus-visible:outline-none',\n \"ds:after:content-[''] ds:after:absolute ds:after:inset-0 ds:after:rounded-[var(--radius-md)]\",\n 'ds:after:pointer-events-auto',\n 'ds:focus-visible:after:outline-[length:var(--focus-ring-width)]',\n 'ds:focus-visible:after:outline-solid',\n 'ds:focus-visible:after:outline-[color:var(--ring)]',\n 'ds:focus-visible:after:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:forced-colors:focus-visible:after:outline-[CanvasText]',\n].join(' ');\n\nconst TYPE_ICON: Record<AppointmentType, typeof MapPin> = {\n inPractice: MapPin,\n telehealth: Video,\n};\n\n/* -------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------- */\n\nexport interface AppointmentCardProps\n extends\n Omit<HTMLAttributes<HTMLDivElement>, 'onClick' | 'title'>,\n VariantProps<typeof appointmentCardVariants> {\n /** The appointment to render. */\n item: AppointmentItem;\n /** Visual density. */\n size?: 'sm' | 'md';\n /**\n * `'flat'` (default) — chrome-less row for use inside a bordered\n * `AppointmentTray`. `'elevated'` — each row carries its own card chrome\n * (border + shadow), for placing rows directly on a rail (AppointmentTimeline).\n */\n surface?: 'flat' | 'elevated';\n /** BCP-47 locale override for the timestamp + currency. */\n locale?: string;\n /**\n * IANA time zone the start time is shown in, for example `\"Europe/Rome\"`:\n * the practice's clock rather than the browser's, so a patient reading\n * from another zone sees the time the practice expects them. The\n * `<time datetime>` stays the exact UTC instant either way. Absent, the\n * browser's own zone is used (the default behaviour). A zone the browser\n * does not recognise is ignored the same way, with a warning in\n * development builds.\n */\n timeZone?: string;\n /** ISO-4217 currency code for the advance-deposit chip. Defaults to `EUR`. */\n currency?: string;\n /**\n * Show the patient identity (avatar + name as the row title). Default `true`.\n * Set `false` in single-patient surfaces (e.g. a patient's own\n * `AppointmentTimeline`) where repeating the name is redundant — the row then\n * leads with the operator as its title, falling back to a generic label.\n */\n showPatient?: boolean;\n /** Fires when the row is activated. */\n onActivate?: (item: AppointmentItem) => void;\n /**\n * Mark this row as the active/selected appointment — an info-tinted\n * inline-start bar plus a soft wash, so the eye keeps its place in the\n * list after a click. Renders `aria-current=\"true\"` for assistive tech.\n */\n selected?: boolean;\n /**\n * Withhold the lifecycle-state badge when the item's state is the\n * default/expected one (`confirmed`) — it needs no announcement, and\n * dropping it leaves the badge to states that actually ask for\n * attention. Default `false` (today's behaviour: every state, including\n * `confirmed`, shows its badge) so existing consumers are unaffected.\n */\n hideDefaultStatus?: boolean;\n /**\n * Privacy mode. The patient identity is masked and read out as \"Patient\n * name hidden\"; the age, the photo, the anamnesis chip, the money chips\n * and the booking-reason description are withheld. Time, place, operator,\n * status and the other chips stay.\n * A display mask on top of the host's own server-side masking, never\n * instead of it. Default `false`: the card is unchanged.\n */\n privacy?: boolean;\n /**\n * The mask shown in place of the patient name under `privacy`. Absent or\n * blank, bullets are shown. Read only under `privacy`.\n */\n privacyTitle?: string;\n /**\n * Let the title and the status label wrap onto more lines instead of\n * being cut with an ellipsis. Use it where the card can be narrower than\n * its content, for example a phone at 320 px: a cut title loses\n * information (WCAG 1.4.10 Reflow). The status then drops under the title\n * when the row is too narrow for both. Default `false`: titles and status\n * labels truncate as before.\n */\n wrapText?: boolean;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const AppointmentCard = forwardRef<HTMLDivElement, AppointmentCardProps>(\n (\n {\n item,\n size = 'sm',\n surface = 'flat',\n locale,\n timeZone,\n currency = 'EUR',\n showPatient = true,\n onActivate,\n selected = false,\n hideDefaultStatus = false,\n privacy = false,\n privacyTitle,\n wrapText = false,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation('ui');\n\n // The start time reads in the host's zone when it names one Intl knows;\n // otherwise in the browser's, as before the prop existed.\n const zone = useMemo(() => supportedTimeZone(timeZone), [timeZone]);\n const startTimeFormat = useMemo<Intl.DateTimeFormatOptions>(\n () =>\n zone ? { ...START_TIME_FORMAT, timeZone: zone } : START_TIME_FORMAT,\n [zone],\n );\n useEffect(() => {\n if (timeZone && !zone && isDevelopment()) {\n console.warn(\n `AppointmentCard: \"${timeZone}\" is not a time zone this browser knows, so the start time shows in the browser's own zone.`,\n );\n }\n }, [timeZone, zone]);\n\n const interactive = !!onActivate;\n const hasSafeUrl = !!item.url && isSafeEntityUrl(item.url);\n const showStatus = !(hideDefaultStatus && item.state === 'confirmed');\n\n const patientName = item.patient?.name ?? t('appointmentCard.noPatient');\n const operatorName = item.operator?.name;\n const stateLabel = t(`appointmentCard.state.${item.state}`);\n const stateWorkflow = appointmentStateWorkflow(item.state);\n const StateIcon = stateWorkflow.Icon;\n const noPatient = item.flags?.noPatientAssigned || !item.patient;\n // Privacy masks every supplied patient, whatever the flags say: a host can\n // send `noPatientAssigned` beside a name (an online booking not yet linked\n // to a record). Only the absence of a patient says nothing personal.\n const masked = privacy && showPatient && item.patient !== undefined;\n const patientAge = privacy ? undefined : ageFromDob(item.patient?.dobIso);\n\n // A blank name is no name: never a glyph beside nothing.\n const practiceName = item.practiceName?.trim() || undefined;\n\n const avatarSize = size === 'md' ? 'md' : 'sm';\n const TypeIcon = TYPE_ICON[item.type];\n\n // In single-patient context the patient name is redundant, so the row leads\n // with the operator (the \"who am I seeing\") and falls back to a generic\n // label when no operator is set.\n const title = showPatient\n ? patientName\n : (operatorName ?? t('appointmentCard.appointment'));\n\n const ariaLabel = masked\n ? t('appointmentCard.itemLabelGeneric', {\n title: t('appointmentPeek.hiddenName'),\n state: stateLabel,\n })\n : showPatient\n ? t('appointmentCard.itemLabel', {\n patient: patientName,\n state: stateLabel,\n })\n : t('appointmentCard.itemLabelGeneric', { title, state: stateLabel });\n\n const titleNode = (\n <span\n className={\n (wrapText ? 'ds:min-w-0 ds:break-words' : 'ds:min-w-0 ds:truncate') +\n ' type-title-item ds:text-[color:var(--foreground)]'\n }\n >\n {masked ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <EyeOff aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <VisuallyHidden>{t('appointmentPeek.hiddenName')}</VisuallyHidden>\n <span aria-hidden=\"true\">{privacyMask(privacyTitle)}</span>\n </span>\n ) : (\n title\n )}\n {showPatient && patientAge !== undefined ? (\n <span className=\"ds:ms-[var(--spacing-2xs)] ds:font-normal ds:text-[color:var(--muted-foreground)]\">\n · {patientAge}\n </span>\n ) : null}\n </span>\n );\n\n let activator: ReactNode;\n if (interactive && hasSafeUrl) {\n activator = (\n <a\n href={item.url}\n aria-label={ariaLabel}\n data-action=\"open-appointment\"\n className={stretchedLinkClass}\n onClick={(e) => {\n if (e.defaultPrevented || e.metaKey || e.ctrlKey || e.shiftKey)\n return;\n onActivate?.(item);\n }}\n >\n {titleNode}\n </a>\n );\n } else if (interactive) {\n activator = (\n <button\n type=\"button\"\n aria-label={ariaLabel}\n data-action=\"open-appointment\"\n className={\n stretchedLinkClass +\n ' ds:bg-transparent ds:border-0 ds:p-0 ds:text-start'\n }\n onClick={() => onActivate?.(item)}\n >\n {titleNode}\n </button>\n );\n } else {\n activator = titleNode;\n }\n\n // Treatment / tooth-element Tags. Each treatment becomes one Tag; the\n // tooth elements (when present) are appended to the visible label.\n const treatmentTags = (item.treatments ?? []).map((tx, index) => {\n const label =\n tx.elements && tx.elements.length > 0\n ? t('appointmentCard.treatmentWithElements', {\n care: tx.careName,\n elements: tx.elements.join(', '),\n })\n : tx.careName;\n return (\n <Tag\n key={`${tx.careName}-${index}`}\n label={label}\n variant=\"neutral\"\n fill=\"outline\"\n size=\"sm\"\n maxInlineSize=\"12rem\"\n />\n );\n });\n\n const advanceCents = item.bookingReason?.advanceAmountCents;\n const hasAdvance =\n !privacy && typeof advanceCents === 'number' && advanceCents > 0;\n const unpaidCents = item.money?.unpaidAmountCents;\n const hasUnpaid =\n !privacy && typeof unpaidCents === 'number' && unpaidCents > 0;\n const showAnamnesis = !privacy && item.flags?.highlightedAnamnesis;\n\n return (\n <div\n ref={ref}\n /* `listitem` by default — the card is normally a list child. A\n consumer composing a richer row (card plus its own action row)\n owns the semantics instead and passes `role=\"presentation\"`,\n so the two do not nest. `rest` is spread after this. */\n role=\"listitem\"\n data-component=\"appointment-card\"\n data-component-id={item.id}\n data-state={item.state}\n data-type={item.type}\n data-privacy={privacy ? 'masked' : undefined}\n aria-current={selected ? 'true' : undefined}\n className={appointmentCardVariants({\n size,\n interactive,\n surface,\n selected,\n dimmed: item.dimmed,\n next: item.next,\n className,\n })}\n {...rest}\n >\n {/* Leading rail: type glyph + start time + duration */}\n {/* min-w, not a fixed w: a 12-hour time (\"10:30 AM\") plus the type\n glyph is wider than 4rem, and must never wrap AM/PM onto a\n second line. */}\n <span className=\"ds:flex ds:min-w-20 ds:shrink-0 ds:flex-col ds:items-start ds:gap-[var(--spacing-2xs)]\">\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] ds:whitespace-nowrap ds:text-[color:var(--muted-foreground)]\">\n <TypeIcon aria-hidden=\"true\" className=\"ds:size-3.5 ds:shrink-0\" />\n <span className=\"ds:sr-only\">\n {t(`appointmentCard.type.${item.type}`)}\n </span>\n <Timestamp\n value={item.startIso}\n format=\"absolute\"\n shape=\"bare\"\n locale={locale}\n absoluteFormat={startTimeFormat}\n className=\"type-body-sm ds:font-medium ds:text-[color:var(--foreground)] ds:tabular-nums\"\n />\n </span>\n <span className=\"type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {t('appointmentCard.duration', { count: item.durationMin })}\n </span>\n </span>\n\n {/* Operator avatar with colour dot */}\n {operatorName ? (\n <span className=\"ds:relative ds:shrink-0\">\n <Avatar\n name={operatorName}\n color={colorIdToAvatarToken(item.operator?.colorId)}\n size={avatarSize}\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n <span\n aria-hidden=\"true\"\n className={\n 'ds:absolute ds:bottom-0 ds:end-0 ds:size-2.5 ds:rounded-[var(--radius-full)] ds:border ds:border-[color:var(--card)] ' +\n operatorDotClass(item.operator?.colorId)\n }\n />\n </span>\n ) : null}\n\n {/* Main content column */}\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:flex-col ds:gap-[var(--spacing-xs)]\">\n <div\n className={\n 'ds:flex ds:items-start ds:gap-[var(--spacing-sm)]' +\n (wrapText ? ' ds:flex-wrap' : '')\n }\n >\n <div className=\"ds:flex-1 ds:min-w-0 ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n {showPatient && !privacy && item.patient?.avatarUrl ? (\n <Avatar\n name={patientName}\n src={item.patient.avatarUrl}\n size={avatarSize}\n className=\"ds:shrink-0\"\n aria-hidden=\"true\"\n role=\"presentation\"\n aria-label={undefined}\n />\n ) : null}\n {showPatient && noPatient ? (\n <span\n className={`ds:shrink-0 ds:inline-flex ds:items-center ds:justify-center ds:rounded-[var(--radius-full)] ds:bg-[color:var(--muted)] ds:text-[color:var(--muted-foreground)] ${\n avatarSize === 'md' ? 'ds:size-10' : 'ds:size-8'\n }`}\n >\n <UserX aria-hidden=\"true\" className=\"ds:size-4\" />\n </span>\n ) : null}\n {activator}\n </div>\n {item.next ? (\n <Badge\n variant=\"accentSoft\"\n size=\"sm\"\n className=\"ds:shrink-0\"\n aria-hidden=\"true\"\n >\n {t('appointmentCard.next')}\n </Badge>\n ) : null}\n {/* The kit's read-only status surface, not a bare Badge: an\n appointment's status is the same thing on a card, in a details\n footer and in a history entry, so it wears one face and takes\n its tone and glyph from the shared map. `hideDefaultStatus`\n withholds it for the expected/default state only. */}\n {showStatus ? (\n <WorkflowStatusDisplay\n size=\"sm\"\n value={item.state}\n option={{\n value: item.state,\n label: stateLabel,\n icon: <StateIcon aria-hidden=\"true\" />,\n tone: stateWorkflow.tone,\n }}\n className={wrapText ? WRAPPED_STATUS_CLASS : 'ds:shrink-0'}\n />\n ) : null}\n </div>\n {item.next ? (\n <span className=\"ds:sr-only\">{t('appointmentCard.nextSr')}</span>\n ) : null}\n\n {/* Practice: where the appointment is. `type-meta`, not the\n uppercase eyebrow, because a name is a proper noun. The glyph\n box is one line tall so it stays on the first line when a long\n name wraps; the name keeps its own direction (§06). */}\n {practiceName ? (\n <span\n data-slot=\"practice\"\n className=\"type-meta ds:flex ds:min-w-0 ds:items-start ds:gap-[var(--spacing-2xs)] ds:text-[color:var(--muted-foreground)]\"\n >\n <span className=\"ds:flex ds:h-[1lh] ds:shrink-0 ds:items-center\">\n <Building2 aria-hidden=\"true\" className=\"ds:size-3\" />\n </span>\n <span className=\"ds:sr-only\">\n {t('appointmentCard.practice')}\n </span>\n <span dir=\"auto\" className=\"ds:min-w-0 ds:break-words\">\n {practiceName}\n </span>\n </span>\n ) : null}\n\n {/* Meta line: operator name · specialty · first visit · booking note\n (chair moved to a chip below). When the patient is hidden the\n operator is promoted to the title, so it drops out of the meta. */}\n {(showPatient && operatorName) ||\n item.bookingReason?.specialty ||\n item.firstVisit === 'yes' ||\n item.firstVisit === 'unknown' ||\n item.bookingNote ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-x-[var(--spacing-sm)] ds:gap-y-[var(--spacing-2xs)] type-eyebrow ds:text-[color:var(--muted-foreground)]\">\n {showPatient && operatorName ? <span>{operatorName}</span> : null}\n {item.bookingReason?.specialty ? (\n <span>{item.bookingReason.specialty}</span>\n ) : null}\n {item.firstVisit === 'yes' ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <Star aria-hidden=\"true\" className=\"ds:size-3 ds:shrink-0\" />\n {t('appointmentCard.firstVisit')}\n </span>\n ) : null}\n {item.firstVisit === 'unknown' ? (\n <span className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\">\n <Star aria-hidden=\"true\" className=\"ds:size-3 ds:shrink-0\" />\n {t('appointmentCard.firstVisitUnknown')}\n </span>\n ) : null}\n {item.bookingNote ? (\n <span\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-2xs)]\"\n title={t('appointmentCard.hasBookingNote')}\n >\n <MessageSquareText\n aria-hidden=\"true\"\n className=\"ds:size-3 ds:shrink-0\"\n />\n {t('appointmentCard.hasBookingNote')}\n </span>\n ) : null}\n </div>\n ) : null}\n\n {/* Booking reason */}\n {item.bookingReason?.description && !privacy ? (\n <span className=\"type-body-sm ds:text-[color:var(--foreground)] ds:truncate\">\n {item.bookingReason.description}\n </span>\n ) : null}\n\n {/* Treatment / tooth Tags */}\n {treatmentTags.length > 0 ? (\n <div className=\"ds:flex ds:flex-wrap ds:gap-[var(--spacing-2xs)]\">\n {treatmentTags}\n </div>\n ) : null}\n\n {/* Chips: care plan · chair · flags · recurring · signing ·\n advance-deposit · unpaid balance · billable */}\n {item.carePlan ||\n item.chair ||\n item.flags?.bookedOnline ||\n showAnamnesis ||\n item.flags?.billable ||\n item.recurring ||\n item.signing ||\n hasAdvance ||\n hasUnpaid ? (\n <div className=\"ds:flex ds:flex-wrap ds:items-center ds:gap-[var(--spacing-xs)]\">\n {item.carePlan ? (\n <Badge\n variant=\"accentSoft\"\n size=\"sm\"\n leading={<ClipboardPlus />}\n >\n {t('appointmentCard.carePlan', {\n number: item.carePlan.number,\n })}\n </Badge>\n ) : null}\n {item.chair ? (\n <Badge variant=\"neutral\" size=\"sm\" leading={<Armchair />}>\n {t('appointmentCard.chair', { chair: item.chair })}\n </Badge>\n ) : null}\n {item.flags?.bookedOnline ? (\n <Badge variant=\"info\" size=\"sm\" leading={<Globe />}>\n {t('appointmentCard.flag.bookedOnline')}\n </Badge>\n ) : null}\n {showAnamnesis ? (\n <Badge variant=\"warning\" size=\"sm\" withDot>\n {t('appointmentCard.flag.highlightedAnamnesis')}\n </Badge>\n ) : null}\n {item.recurring ? (\n <Badge variant=\"neutral\" size=\"sm\" leading={<Repeat />}>\n {t('appointmentCard.recurring')}\n </Badge>\n ) : null}\n {item.signing ? (\n <Badge\n variant={\n item.signing.toComplete >= item.signing.required\n ? 'success'\n : 'warning'\n }\n size=\"sm\"\n leading={<FileSignature />}\n >\n {t('appointmentCard.signing', {\n complete: item.signing.toComplete,\n required: item.signing.required,\n })}\n </Badge>\n ) : null}\n {item.flags?.billable ? (\n <Badge variant=\"success\" size=\"sm\" withDot>\n {t('appointmentCard.flag.billable')}\n </Badge>\n ) : null}\n {hasAdvance ? (\n <TransactionChip\n state=\"to-invoice\"\n amount={(advanceCents as number) / 100}\n currency={currency}\n locale={locale}\n size=\"sm\"\n showLabel\n />\n ) : null}\n {hasUnpaid ? (\n <TransactionChip\n state=\"debt\"\n amount={unpaidCents / 100}\n currency={currency}\n locale={locale}\n size=\"sm\"\n showLabel\n />\n ) : null}\n </div>\n ) : null}\n </div>\n\n {interactive ? (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:shrink-0 ds:self-center ds:text-[color:var(--muted-foreground)] ds:opacity-0 ds:transition-opacity ds:motion-reduce:transition-none ds:group-hover:opacity-100 ds:group-focus-within:opacity-100 ds:rtl:rotate-180\"\n />\n ) : null}\n </div>\n );\n },\n);\n\nAppointmentCard.displayName = 'AppointmentCard';\n"],"names":["__iconNode","ClipboardPlus","createLucideIcon","MessageSquareText","OPERATOR_DOT_CLASS","operatorDotClass","colorId","colorIdToToken","ageFromDob","dobIso","dob","now","age","monthDiff","START_TIME_FORMAT","supportedTimeZone","timeZone","appointmentCardVariants","cva","WRAPPED_STATUS_CLASS","stretchedLinkClass","TYPE_ICON","MapPin","Video","AppointmentCard","forwardRef","item","size","surface","locale","currency","showPatient","onActivate","selected","hideDefaultStatus","privacy","privacyTitle","wrapText","className","rest","ref","t","useTranslation","zone","useMemo","startTimeFormat","useEffect","isDevelopment","interactive","hasSafeUrl","isSafeEntityUrl","showStatus","patientName","_a","operatorName","_b","stateLabel","stateWorkflow","appointmentStateWorkflow","StateIcon","noPatient","_c","masked","patientAge","_d","practiceName","_e","avatarSize","TypeIcon","title","ariaLabel","titleNode","jsxs","jsx","EyeOff","VisuallyHidden","privacyMask","activator","e","treatmentTags","tx","index","label","Tag","advanceCents","_f","hasAdvance","unpaidCents","_g","hasUnpaid","showAnamnesis","_h","Timestamp","Avatar","colorIdToAvatarToken","_i","_j","_k","UserX","Badge","WorkflowStatusDisplay","Building2","_l","_m","Star","_n","_o","_p","Armchair","_q","Globe","Repeat","FileSignature","_r","TransactionChip","ChevronRight"],"mappings":"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","x_google_ignoreList":[0,1]}
|
|
@@ -10,7 +10,7 @@ import { C as I } from "./clock-Drd4Wtis.js";
|
|
|
10
10
|
import { V as S } from "./video-BheNGvsu.js";
|
|
11
11
|
import { A as W } from "./armchair-BaLDW6Hz.js";
|
|
12
12
|
import { E as j } from "./eye-off-C_4xkbRP.js";
|
|
13
|
-
import { a as L } from "./entity-card-
|
|
13
|
+
import { a as L } from "./entity-card-p-LANpYt.js";
|
|
14
14
|
const R = V(
|
|
15
15
|
"ds:flex ds:min-w-0 ds:flex-col ds:gap-[var(--spacing-sm)]"
|
|
16
16
|
), T = P(
|
|
@@ -120,4 +120,4 @@ T.displayName = "AppointmentPeek";
|
|
|
120
120
|
export {
|
|
121
121
|
T as A
|
|
122
122
|
};
|
|
123
|
-
//# sourceMappingURL=appointment-peek-
|
|
123
|
+
//# sourceMappingURL=appointment-peek-BK0tDs4C.js.map
|