@alfadocs/ui-kit-debug 1.55.0 → 1.57.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/{ai-credits-notice-BoNJtOuE.js → ai-credits-notice-ktklr8fy.js} +2 -2
- package/dist/_chunks/{ai-credits-notice-BoNJtOuE.js.map → ai-credits-notice-ktklr8fy.js.map} +1 -1
- package/dist/_chunks/ai-permission-notice-DyuEGwAt.js +206 -0
- package/dist/_chunks/ai-permission-notice-DyuEGwAt.js.map +1 -0
- package/dist/_chunks/alia-sidebar-BBKBJCv6.js +1284 -0
- package/dist/_chunks/alia-sidebar-BBKBJCv6.js.map +1 -0
- package/dist/_chunks/{anamnesis-summary-rows-Dtw5Hpg4.js → anamnesis-summary-rows-CCQ62mMN.js} +5 -5
- package/dist/_chunks/{anamnesis-summary-rows-Dtw5Hpg4.js.map → anamnesis-summary-rows-CCQ62mMN.js.map} +1 -1
- package/dist/_chunks/{appointment-peek-BIZaDeCi.js → appointment-peek-WvNbE4JG.js} +2 -2
- package/dist/_chunks/{appointment-peek-BIZaDeCi.js.map → appointment-peek-WvNbE4JG.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-DmqYEIT9.js → appointment-timeline-Z0494xO-.js} +2 -2
- package/dist/_chunks/{appointment-timeline-DmqYEIT9.js.map → appointment-timeline-Z0494xO-.js.map} +1 -1
- package/dist/_chunks/{balance-badge-cell-zP-iN-Pd.js → balance-badge-cell-CII3SDmR.js} +3 -3
- package/dist/_chunks/{balance-badge-cell-zP-iN-Pd.js.map → balance-badge-cell-CII3SDmR.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-DTZhRhXe.js → bmi-calculator-C0UTxB7R.js} +2 -2
- package/dist/_chunks/{bmi-calculator-DTZhRhXe.js.map → bmi-calculator-C0UTxB7R.js.map} +1 -1
- package/dist/_chunks/{booking-uZO10TLK.js → booking-81WnKDsH.js} +4 -4
- package/dist/_chunks/{booking-uZO10TLK.js.map → booking-81WnKDsH.js.map} +1 -1
- package/dist/_chunks/{breadcrumb-xgVpPH2H.js → breadcrumb-Boan-5n8.js} +39 -39
- package/dist/_chunks/breadcrumb-Boan-5n8.js.map +1 -0
- package/dist/_chunks/{calculator-dialog-BRjZMWuE.js → calculator-dialog-CzQv03p0.js} +2 -2
- package/dist/_chunks/{calculator-dialog-BRjZMWuE.js.map → calculator-dialog-CzQv03p0.js.map} +1 -1
- package/dist/_chunks/{calendar-workspace-DVajSkKA.js → calendar-workspace-D5-k_9zE.js} +15 -15
- package/dist/_chunks/{calendar-workspace-DVajSkKA.js.map → calendar-workspace-D5-k_9zE.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-Ddjh5Doc.js → care-plan-card-DxrRLRdW.js} +2 -2
- package/dist/_chunks/{care-plan-card-Ddjh5Doc.js.map → care-plan-card-DxrRLRdW.js.map} +1 -1
- package/dist/_chunks/{care-plan-header-BeMYMiI7.js → care-plan-header-BMwZIgHJ.js} +3 -3
- package/dist/_chunks/{care-plan-header-BeMYMiI7.js.map → care-plan-header-BMwZIgHJ.js.map} +1 -1
- package/dist/_chunks/chart-DQ5GxqgT.js +906 -0
- package/dist/_chunks/chart-DQ5GxqgT.js.map +1 -0
- package/dist/_chunks/{clinical-note-card-14JIoUR0.js → clinical-note-card-hx939bvw.js} +2 -2
- package/dist/_chunks/{clinical-note-card-14JIoUR0.js.map → clinical-note-card-hx939bvw.js.map} +1 -1
- package/dist/_chunks/{color-picker-BRQ4Y9SO.js → color-picker-BsggJovx.js} +128 -123
- package/dist/_chunks/color-picker-BsggJovx.js.map +1 -0
- package/dist/_chunks/{contact-card-CmK05vNb.js → contact-card-fHBMwEsx.js} +2 -2
- package/dist/_chunks/{contact-card-CmK05vNb.js.map → contact-card-fHBMwEsx.js.map} +1 -1
- package/dist/_chunks/{contact-profile-card-C5DbP_X3.js → contact-profile-card-CMyBYgRR.js} +3 -3
- package/dist/_chunks/{contact-profile-card-C5DbP_X3.js.map → contact-profile-card-CMyBYgRR.js.map} +1 -1
- package/dist/_chunks/{cycle-calculator-Dgfqr4Q4.js → cycle-calculator-Cww9DzIa.js} +2 -2
- package/dist/_chunks/{cycle-calculator-Dgfqr4Q4.js.map → cycle-calculator-Cww9DzIa.js.map} +1 -1
- package/dist/_chunks/dashboard-grid-DfEY2qci.js +844 -0
- package/dist/_chunks/dashboard-grid-DfEY2qci.js.map +1 -0
- package/dist/_chunks/{data-table-C6T31E33.js → data-table-fAMTeAjM.js} +2 -2
- package/dist/_chunks/{data-table-C6T31E33.js.map → data-table-fAMTeAjM.js.map} +1 -1
- package/dist/_chunks/{data-table-tabs-Xhg5G0gU.js → data-table-tabs-CHYAAeHy.js} +2 -2
- package/dist/_chunks/{data-table-tabs-Xhg5G0gU.js.map → data-table-tabs-CHYAAeHy.js.map} +1 -1
- package/dist/_chunks/{date-picker-wRAcq2lt.js → date-picker-BSZuKo13.js} +69 -62
- package/dist/_chunks/date-picker-BSZuKo13.js.map +1 -0
- package/dist/_chunks/{date-range-picker-BOvHwWO5.js → date-range-picker-CFk-5O3R.js} +188 -177
- package/dist/_chunks/date-range-picker-CFk-5O3R.js.map +1 -0
- package/dist/_chunks/{date-time-picker-CLeLKuv9.js → date-time-picker-CjxTkblD.js} +92 -85
- package/dist/_chunks/date-time-picker-CjxTkblD.js.map +1 -0
- package/dist/_chunks/{dependent-selector-Bet3XAFj.js → dependent-selector-DgaAQc-c.js} +91 -86
- package/dist/_chunks/dependent-selector-DgaAQc-c.js.map +1 -0
- package/dist/_chunks/{dialog-D52AI4nF.js → dialog-Dn-iQ0Jp.js} +86 -69
- package/dist/_chunks/dialog-Dn-iQ0Jp.js.map +1 -0
- package/dist/_chunks/{document-preview-uoTekVR7.js → document-preview-CHGGG0l_.js} +2 -2
- package/dist/_chunks/{document-preview-uoTekVR7.js.map → document-preview-CHGGG0l_.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-DXDJbUzo.js → due-date-calculator-D_qFUiHp.js} +3 -3
- package/dist/_chunks/{due-date-calculator-DXDJbUzo.js.map → due-date-calculator-D_qFUiHp.js.map} +1 -1
- package/dist/_chunks/{entity-summary-DcB0fIiv.js → entity-summary-CWcCSThK.js} +2 -2
- package/dist/_chunks/{entity-summary-DcB0fIiv.js.map → entity-summary-CWcCSThK.js.map} +1 -1
- package/dist/_chunks/{file-manager-dIJQUZvq.js → file-manager-CFsL1KVt.js} +4 -4
- package/dist/_chunks/{file-manager-dIJQUZvq.js.map → file-manager-CFsL1KVt.js.map} +1 -1
- package/dist/_chunks/{freemium-paywall-B6ojVXq7.js → freemium-paywall-DIKuhX8b.js} +90 -86
- package/dist/_chunks/freemium-paywall-DIKuhX8b.js.map +1 -0
- package/dist/_chunks/{gestational-age-calculator-BfGpt3du.js → gestational-age-calculator-CZi43xKG.js} +3 -3
- package/dist/_chunks/{gestational-age-calculator-BfGpt3du.js.map → gestational-age-calculator-CZi43xKG.js.map} +1 -1
- package/dist/_chunks/{hcg-doubling-BIYyI2Yo.js → hcg-doubling-Ccvh7OaU.js} +2 -2
- package/dist/_chunks/{hcg-doubling-BIYyI2Yo.js.map → hcg-doubling-Ccvh7OaU.js.map} +1 -1
- package/dist/_chunks/{header-settings-ge_3gYEq.js → header-settings-BMcCx2LC.js} +2 -2
- package/dist/_chunks/{header-settings-ge_3gYEq.js.map → header-settings-BMcCx2LC.js.map} +1 -1
- package/dist/_chunks/{heatmap-BARGZZt2.js → heatmap-BEeOThkW.js} +2 -2
- package/dist/_chunks/{heatmap-BARGZZt2.js.map → heatmap-BEeOThkW.js.map} +1 -1
- package/dist/_chunks/{help-me-write-templates-B7L3zGsE.js → help-me-write-templates-BUoYGo6f.js} +2 -2
- package/dist/_chunks/help-me-write-templates-BUoYGo6f.js.map +1 -0
- package/dist/_chunks/{hover-card-BnTueNS2.js → hover-card-U_ZYoh1n.js} +201 -187
- package/dist/_chunks/hover-card-U_ZYoh1n.js.map +1 -0
- package/dist/_chunks/{icon-picker-DWrqmI1c.js → icon-picker-C86lQTIA.js} +2 -2
- package/dist/_chunks/{icon-picker-DWrqmI1c.js.map → icon-picker-C86lQTIA.js.map} +1 -1
- package/dist/_chunks/{info-tip-B0jmIt6M.js → info-tip-CJpNpzZe.js} +2 -2
- package/dist/_chunks/{info-tip-B0jmIt6M.js.map → info-tip-CJpNpzZe.js.map} +1 -1
- package/dist/_chunks/{key-value-pair-Ax8IJr1M.js → key-value-pair-BNNITp6S.js} +25 -19
- package/dist/_chunks/key-value-pair-BNNITp6S.js.map +1 -0
- package/dist/_chunks/{kit-extensions-C9-v8Dih.js → kit-extensions-DYVxWcqv.js} +5 -5
- package/dist/_chunks/{kit-extensions-C9-v8Dih.js.map → kit-extensions-DYVxWcqv.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-DlBVPMTi.js → link-cell-renderer-CxW_oLa5.js} +2 -2
- package/dist/_chunks/{link-cell-renderer-DlBVPMTi.js.map → link-cell-renderer-CxW_oLa5.js.map} +1 -1
- package/dist/_chunks/link-gRw3NtOt.js +137 -0
- package/dist/_chunks/link-gRw3NtOt.js.map +1 -0
- package/dist/_chunks/{locale-picker-DfNSdOpy.js → locale-picker-BGfrZyTw.js} +2 -2
- package/dist/_chunks/{locale-picker-DfNSdOpy.js.map → locale-picker-BGfrZyTw.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-Dcx-JEjg.js → marketplace-app-shell-BZcA9Z06.js} +143 -129
- package/dist/_chunks/marketplace-app-shell-BZcA9Z06.js.map +1 -0
- package/dist/_chunks/{message-tray-BB95DA82.js → message-tray-QKQutwxj.js} +76 -69
- package/dist/_chunks/message-tray-QKQutwxj.js.map +1 -0
- package/dist/_chunks/{nav-grid-BqCPH8sm.js → nav-grid-Byx8PxuB.js} +2 -2
- package/dist/_chunks/{nav-grid-BqCPH8sm.js.map → nav-grid-Byx8PxuB.js.map} +1 -1
- package/dist/_chunks/non-modal-tab-exit-j3CPOuE3.js +89 -0
- package/dist/_chunks/non-modal-tab-exit-j3CPOuE3.js.map +1 -0
- package/dist/_chunks/{note-attachment-I1NLoeRZ.js → note-attachment-Bt2cddsZ.js} +2 -2
- package/dist/_chunks/{note-attachment-I1NLoeRZ.js.map → note-attachment-Bt2cddsZ.js.map} +1 -1
- package/dist/_chunks/{note-timeline-CsY8YOE7.js → note-timeline-CX9nAgAR.js} +2 -2
- package/dist/_chunks/{note-timeline-CsY8YOE7.js.map → note-timeline-CX9nAgAR.js.map} +1 -1
- package/dist/_chunks/{notes-panel-I8ntrrUW.js → notes-panel-Cm4pttpl.js} +4 -4
- package/dist/_chunks/{notes-panel-I8ntrrUW.js.map → notes-panel-Cm4pttpl.js.map} +1 -1
- package/dist/_chunks/{notification-tray-__sJXnsz.js → notification-tray-C5VtbGjd.js} +83 -76
- package/dist/_chunks/notification-tray-C5VtbGjd.js.map +1 -0
- package/dist/_chunks/{patient-details-DsTtjpuX.js → patient-details-99kEdtc5.js} +2 -2
- package/dist/_chunks/{patient-details-DsTtjpuX.js.map → patient-details-99kEdtc5.js.map} +1 -1
- package/dist/_chunks/{patient-field-row-BvZ9luz-.js → patient-field-row-DkxY13T6.js} +5 -5
- package/dist/_chunks/{patient-field-row-BvZ9luz-.js.map → patient-field-row-DkxY13T6.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-3dspc2tR.js → patient-summary-card-opdyfeW2.js} +10 -6
- package/dist/_chunks/{patient-summary-card-3dspc2tR.js.map → patient-summary-card-opdyfeW2.js.map} +1 -1
- package/dist/_chunks/{payment-automation-upsell-DEUfM7EU.js → payment-automation-upsell-DiHovmUL.js} +2 -2
- package/dist/_chunks/{payment-automation-upsell-DEUfM7EU.js.map → payment-automation-upsell-DiHovmUL.js.map} +1 -1
- package/dist/_chunks/{payment-request-card-DAGqh9Yx.js → payment-request-card-DAniJNLX.js} +3 -3
- package/dist/_chunks/{payment-request-card-DAGqh9Yx.js.map → payment-request-card-DAniJNLX.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-C3minW5b.js → pdf-viewer-CNQxa4tv.js} +396 -391
- package/dist/_chunks/pdf-viewer-CNQxa4tv.js.map +1 -0
- package/dist/_chunks/{periodontal-chart-BqwLxy2m.js → periodontal-chart-DD5C0M3l.js} +2 -2
- package/dist/_chunks/{periodontal-chart-BqwLxy2m.js.map → periodontal-chart-DD5C0M3l.js.map} +1 -1
- package/dist/_chunks/{periodontal-chart-card-CWZ1YM1h.js → periodontal-chart-card-CxdXvsPU.js} +2 -2
- package/dist/_chunks/{periodontal-chart-card-CWZ1YM1h.js.map → periodontal-chart-card-CxdXvsPU.js.map} +1 -1
- package/dist/_chunks/{periodontal-diagnosis-C9IuvLId.js → periodontal-diagnosis-D-PJv7KS.js} +2 -2
- package/dist/_chunks/{periodontal-diagnosis-C9IuvLId.js.map → periodontal-diagnosis-D-PJv7KS.js.map} +1 -1
- package/dist/_chunks/{phone-input-DxkHMYmu.js → phone-input-O9camxkq.js} +156 -151
- package/dist/_chunks/phone-input-O9camxkq.js.map +1 -0
- package/dist/_chunks/popover-BG75rYjN.js +367 -0
- package/dist/_chunks/popover-BG75rYjN.js.map +1 -0
- package/dist/_chunks/{position-grid-D2D5_Tze.js → position-grid-CBB88EaH.js} +38 -36
- package/dist/_chunks/position-grid-CBB88EaH.js.map +1 -0
- package/dist/_chunks/{practice-results-DxOgbPDy.js → practice-results-CfRkjzsI.js} +2 -2
- package/dist/_chunks/{practice-results-DxOgbPDy.js.map → practice-results-CfRkjzsI.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-R3q5n1Wh.js → pregnancy-dating-BFzv9g1N.js} +3 -3
- package/dist/_chunks/{pregnancy-dating-R3q5n1Wh.js.map → pregnancy-dating-BFzv9g1N.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-DwmNklDU.js → pregnancy-weight-gain-CUUrBTBo.js} +2 -2
- package/dist/_chunks/{pregnancy-weight-gain-DwmNklDU.js.map → pregnancy-weight-gain-CUUrBTBo.js.map} +1 -1
- package/dist/_chunks/{product-hub-panel-BSSiGGG4.js → product-hub-panel-DlVRK7Ue.js} +103 -96
- package/dist/_chunks/product-hub-panel-DlVRK7Ue.js.map +1 -0
- package/dist/_chunks/{public-footer-CxpG6J1M.js → public-footer-ZWTEG1Rq.js} +2 -2
- package/dist/_chunks/{public-footer-CxpG6J1M.js.map → public-footer-ZWTEG1Rq.js.map} +1 -1
- package/dist/_chunks/{public-header.agent-BWusjxY8.js → public-header.agent-BctevbuY.js} +2 -2
- package/dist/_chunks/{public-header.agent-BWusjxY8.js.map → public-header.agent-BctevbuY.js.map} +1 -1
- package/dist/_chunks/{radio-group-BT97ty7o.js → radio-group-DicxWJXP.js} +111 -106
- package/dist/_chunks/radio-group-DicxWJXP.js.map +1 -0
- package/dist/_chunks/{radiograph-panel.agent-BA90I3Mu.js → radiograph-panel.agent-DyqbTECc.js} +4 -4
- package/dist/_chunks/{radiograph-panel.agent-BA90I3Mu.js.map → radiograph-panel.agent-DyqbTECc.js.map} +1 -1
- package/dist/_chunks/{registration-form-D7iNqMBF.js → registration-form-BlTzYywa.js} +2 -2
- package/dist/_chunks/{registration-form-D7iNqMBF.js.map → registration-form-BlTzYywa.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-Blp4smUr.js → rich-text-editor-DTnNZ4Ff.js} +489 -484
- package/dist/_chunks/rich-text-editor-DTnNZ4Ff.js.map +1 -0
- package/dist/_chunks/{sheet-CNFW8mYZ.js → sheet-8qsiMoUI.js} +95 -79
- package/dist/_chunks/sheet-8qsiMoUI.js.map +1 -0
- package/dist/_chunks/{sign-document-B6HlyCGV.js → sign-document-D4iHS_Ug.js} +2 -2
- package/dist/_chunks/{sign-document-B6HlyCGV.js.map → sign-document-D4iHS_Ug.js.map} +1 -1
- package/dist/_chunks/{signature-request-rgMsgo-C.js → signature-request-DRuYAG5I.js} +2 -2
- package/dist/_chunks/{signature-request-rgMsgo-C.js.map → signature-request-DRuYAG5I.js.map} +1 -1
- package/dist/_chunks/{signed-out-frame-B2GTIeqA.js → signed-out-frame-AhMsNW1r.js} +2 -2
- package/dist/_chunks/{signed-out-frame-B2GTIeqA.js.map → signed-out-frame-AhMsNW1r.js.map} +1 -1
- package/dist/_chunks/{stat-51CDL4au.js → stat-DmjGfXND.js} +117 -108
- package/dist/_chunks/stat-DmjGfXND.js.map +1 -0
- package/dist/_chunks/{stepper-accordion-D7lnBGh2.js → stepper-accordion-DDTSOUHc.js} +17 -6
- package/dist/_chunks/stepper-accordion-DDTSOUHc.js.map +1 -0
- package/dist/_chunks/{task-editor-Ctxsa1BY.js → task-editor-NkcopDna.js} +4 -4
- package/dist/_chunks/{task-editor-Ctxsa1BY.js.map → task-editor-NkcopDna.js.map} +1 -1
- package/dist/_chunks/{use-appointment-details-read-DinTrRIW.js → use-appointment-details-read-CfFQNOF_.js} +5 -5
- package/dist/_chunks/{use-appointment-details-read-DinTrRIW.js.map → use-appointment-details-read-CfFQNOF_.js.map} +1 -1
- package/dist/_chunks/use-select-on-arrow-Cr4iBuW5.js +26 -0
- package/dist/_chunks/use-select-on-arrow-Cr4iBuW5.js.map +1 -0
- package/dist/_chunks/{voice-control-panel-Bg1eklL0.js → voice-control-panel-BKbgb7FM.js} +2 -2
- package/dist/_chunks/{voice-control-panel-Bg1eklL0.js.map → voice-control-panel-BKbgb7FM.js.map} +1 -1
- package/dist/_chunks/{widget-picker-D8RiWrJd.js → widget-picker-rBA7MR5P.js} +2 -2
- package/dist/_chunks/{widget-picker-D8RiWrJd.js.map → widget-picker-rBA7MR5P.js.map} +1 -1
- package/dist/_chunks/{workflow-map-D3mezmGB.js → workflow-map-Demlpy39.js} +2 -2
- package/dist/_chunks/{workflow-map-D3mezmGB.js.map → workflow-map-Demlpy39.js.map} +1 -1
- package/dist/agent-catalog.json +28 -11
- package/dist/agent-i18n/en.json +8 -7
- package/dist/components/_shared/non-modal-tab-exit.d.ts +19 -0
- package/dist/components/_shared/non-modal-tab-exit.d.ts.map +1 -0
- package/dist/components/_shared/use-apex-chart-semantics.d.ts +6 -0
- package/dist/components/_shared/use-apex-chart-semantics.d.ts.map +1 -0
- package/dist/components/_shared/use-select-on-arrow.d.ts +20 -0
- package/dist/components/_shared/use-select-on-arrow.d.ts.map +1 -0
- package/dist/components/ai-credits-notice/index.js +1 -1
- package/dist/components/ai-permission-notice/ai-permission-notice.d.ts +32 -0
- package/dist/components/ai-permission-notice/ai-permission-notice.d.ts.map +1 -1
- package/dist/components/ai-permission-notice/index.d.ts +1 -1
- package/dist/components/ai-permission-notice/index.d.ts.map +1 -1
- package/dist/components/ai-permission-notice/index.js +1 -1
- 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/bmi-calculator/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/calculator-dialog/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-header/index.js +1 -1
- package/dist/components/chart/chart.d.ts +15 -10
- package/dist/components/chart/chart.d.ts.map +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/color-picker/color-picker.d.ts.map +1 -1
- package/dist/components/color-picker/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/dashboard-grid/dashboard-grid-engine.d.ts +22 -0
- package/dist/components/dashboard-grid/dashboard-grid-engine.d.ts.map +1 -1
- package/dist/components/dashboard-grid/dashboard-grid.agent.d.ts.map +1 -1
- package/dist/components/dashboard-grid/dashboard-grid.d.ts +48 -4
- package/dist/components/dashboard-grid/dashboard-grid.d.ts.map +1 -1
- package/dist/components/dashboard-grid/index.js +1 -1
- package/dist/components/data-table/index.js +2 -2
- package/dist/components/data-table-tabs/index.js +1 -1
- package/dist/components/date-picker/date-picker.d.ts.map +1 -1
- package/dist/components/date-picker/index.js +1 -1
- package/dist/components/date-range-picker/date-range-picker.d.ts.map +1 -1
- package/dist/components/date-range-picker/index.js +1 -1
- package/dist/components/date-time-picker/date-time-picker.d.ts.map +1 -1
- package/dist/components/date-time-picker/index.js +1 -1
- package/dist/components/dependent-selector/dependent-selector.d.ts.map +1 -1
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/dialog/dialog.d.ts +2 -2
- package/dist/components/dialog/dialog.d.ts.map +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/document-preview/index.js +1 -1
- package/dist/components/due-date-calculator/index.js +1 -1
- package/dist/components/entity-summary/index.js +1 -1
- package/dist/components/file-manager/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
- package/dist/components/freemium-paywall/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/header-settings/index.js +1 -1
- package/dist/components/heatmap/index.js +1 -1
- package/dist/components/hover-card/hover-card.d.ts.map +1 -1
- package/dist/components/hover-card/index.js +1 -1
- package/dist/components/icon-picker/index.js +1 -1
- package/dist/components/info-tip/index.js +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
- package/dist/components/link/index.js +1 -1
- package/dist/components/link/link.d.ts +5 -3
- package/dist/components/link/link.d.ts.map +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/message-tray/message-tray.d.ts.map +1 -1
- package/dist/components/nav-grid/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/notification-tray/index.js +1 -1
- package/dist/components/notification-tray/notification-tray.d.ts.map +1 -1
- package/dist/components/patient-details/index.js +1 -1
- package/dist/components/patient-summary-card/index.js +1 -1
- package/dist/components/patient-summary-card/patient-summary-card.d.ts.map +1 -1
- package/dist/components/patient-table/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.d.ts.map +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/phone-input/index.js +1 -1
- package/dist/components/phone-input/phone-input.d.ts.map +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/popover/popover.d.ts +1 -1
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/position-grid/index.js +1 -1
- package/dist/components/position-grid/position-grid.d.ts.map +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/product-hub-tray/index.js +1 -1
- package/dist/components/product-hub-tray/product-hub-tray.d.ts.map +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/radio-group/index.js +1 -1
- package/dist/components/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/rich-text-editor/editor-toolbar.d.ts.map +1 -1
- package/dist/components/rich-text-editor/index.js +2 -2
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sheet/sheet.d.ts +2 -2
- package/dist/components/sheet/sheet.d.ts.map +1 -1
- package/dist/components/sign-document/index.js +1 -1
- package/dist/components/stat/index.d.ts +1 -1
- package/dist/components/stat/index.d.ts.map +1 -1
- package/dist/components/stat/index.js +1 -1
- package/dist/components/stat/stat.d.ts +9 -0
- package/dist/components/stat/stat.d.ts.map +1 -1
- package/dist/components/stepper-accordion/index.js +1 -1
- package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
- package/dist/components/task-editor/index.js +1 -1
- package/dist/components/voice-control-panel/index.js +1 -1
- package/dist/components/widget-picker/index.js +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/host-legacy.css +13 -2
- package/dist/i18n/locales/ar.d.ts +17 -2
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +20 -5
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +17 -2
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +20 -5
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +17 -2
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +20 -5
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +17 -2
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +20 -5
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +17 -2
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +20 -5
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +17 -2
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +20 -5
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +17 -2
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +20 -5
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +17 -2
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +20 -5
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +17 -2
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +20 -5
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +17 -2
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +20 -5
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +17 -2
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +20 -5
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +17 -2
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +20 -5
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +17 -2
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +20 -5
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +17 -2
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +20 -5
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +17 -2
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +20 -5
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +17 -2
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +20 -5
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +17 -2
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +20 -5
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +17 -2
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +20 -5
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +207 -206
- package/dist/locales/ar.json +20 -5
- package/dist/locales/de.json +20 -5
- package/dist/locales/el.json +20 -5
- package/dist/locales/en.json +20 -5
- package/dist/locales/es.json +20 -5
- package/dist/locales/fr.json +20 -5
- package/dist/locales/hi.json +20 -5
- package/dist/locales/it.json +20 -5
- package/dist/locales/ja.json +20 -5
- package/dist/locales/nl.json +20 -5
- package/dist/locales/pl.json +20 -5
- package/dist/locales/pt.json +20 -5
- package/dist/locales/ro.json +20 -5
- package/dist/locales/ru.json +20 -5
- package/dist/locales/sq.json +20 -5
- package/dist/locales/sv.json +20 -5
- package/dist/locales/tr.json +20 -5
- package/dist/locales/zh.json +20 -5
- package/dist/patterns/alia-assistant/alia-asteroid-icon.d.ts +10 -13
- package/dist/patterns/alia-assistant/alia-asteroid-icon.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/alia-chat-surface.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/alia-popout.d.ts +5 -3
- package/dist/patterns/alia-assistant/alia-popout.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/index.d.ts +2 -0
- package/dist/patterns/alia-assistant/index.d.ts.map +1 -1
- package/dist/patterns/alia-assistant/index.js +6 -5
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts +2 -2
- package/dist/patterns/help-me-write-templates/help-me-write-templates.d.ts.map +1 -1
- package/dist/patterns/help-me-write-templates/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts +7 -2
- package/dist/patterns/marketplace-app-shell/marketplace-app-shell.d.ts.map +1 -1
- package/dist/patterns/payment-automation-upsell/index.js +1 -1
- package/dist/patterns/registration-form/index.js +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/patterns/signed-out-frame/index.js +1 -1
- package/dist/tokens.css +13 -2
- package/package.json +1 -1
- package/dist/_chunks/ai-permission-notice-5vpblPCx.js +0 -171
- package/dist/_chunks/ai-permission-notice-5vpblPCx.js.map +0 -1
- package/dist/_chunks/alia-sidebar-DS0b54Mv.js +0 -1183
- package/dist/_chunks/alia-sidebar-DS0b54Mv.js.map +0 -1
- package/dist/_chunks/breadcrumb-xgVpPH2H.js.map +0 -1
- package/dist/_chunks/chart-C2RBJERE.js +0 -705
- package/dist/_chunks/chart-C2RBJERE.js.map +0 -1
- package/dist/_chunks/color-picker-BRQ4Y9SO.js.map +0 -1
- package/dist/_chunks/dashboard-grid-SAGoyCtL.js +0 -691
- package/dist/_chunks/dashboard-grid-SAGoyCtL.js.map +0 -1
- package/dist/_chunks/date-picker-wRAcq2lt.js.map +0 -1
- package/dist/_chunks/date-range-picker-BOvHwWO5.js.map +0 -1
- package/dist/_chunks/date-time-picker-CLeLKuv9.js.map +0 -1
- package/dist/_chunks/dependent-selector-Bet3XAFj.js.map +0 -1
- package/dist/_chunks/dialog-D52AI4nF.js.map +0 -1
- package/dist/_chunks/freemium-paywall-B6ojVXq7.js.map +0 -1
- package/dist/_chunks/help-me-write-templates-B7L3zGsE.js.map +0 -1
- package/dist/_chunks/hover-card-BnTueNS2.js.map +0 -1
- package/dist/_chunks/key-value-pair-Ax8IJr1M.js.map +0 -1
- package/dist/_chunks/link-2HokYuIi.js +0 -130
- package/dist/_chunks/link-2HokYuIi.js.map +0 -1
- package/dist/_chunks/marketplace-app-shell-Dcx-JEjg.js.map +0 -1
- package/dist/_chunks/message-tray-BB95DA82.js.map +0 -1
- package/dist/_chunks/notification-tray-__sJXnsz.js.map +0 -1
- package/dist/_chunks/pdf-viewer-C3minW5b.js.map +0 -1
- package/dist/_chunks/phone-input-DxkHMYmu.js.map +0 -1
- package/dist/_chunks/popover-BI3oV3eY.js +0 -305
- package/dist/_chunks/popover-BI3oV3eY.js.map +0 -1
- package/dist/_chunks/position-grid-D2D5_Tze.js.map +0 -1
- package/dist/_chunks/product-hub-panel-BSSiGGG4.js.map +0 -1
- package/dist/_chunks/radio-group-BT97ty7o.js.map +0 -1
- package/dist/_chunks/rich-text-editor-Blp4smUr.js.map +0 -1
- package/dist/_chunks/sheet-CNFW8mYZ.js.map +0 -1
- package/dist/_chunks/stat-51CDL4au.js.map +0 -1
- package/dist/_chunks/stepper-accordion-D7lnBGh2.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-time-picker-CjxTkblD.js","sources":["../../node_modules/date-fns/setHours.js","../../node_modules/date-fns/setMinutes.js","../../src/components/date-time-picker/date-time-picker.agent.ts","../../src/components/date-time-picker/date-time-picker.tsx"],"sourcesContent":["import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setHours} function options.\n */\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n * @param options - An object with options\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport function setHours(date, hours, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(hours);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMinutes} function options.\n */\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, returned from the context function, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n * @param options - An object with options\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport function setMinutes(date, minutes, options) {\n const date_ = toDate(date, options?.in);\n date_.setMinutes(minutes);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setMinutes;\n","/* -------------------------------------------------------------------- */\n/* Agent adapter — DateTimePicker. */\n/* */\n/* DateTimePicker composes a react-day-picker calendar grid with the */\n/* TimePicker segments inside a single Radix Popover. The agent surface */\n/* exposes a combined datetime — set / clear / open / close. The handle */\n/* is the curated surface; consumers don't address the inner sub-widgets.*/\n/* */\n/* See `src/docs/26-agent-readiness.mdx` §15. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { DateTimePickerHandle } from './date-time-picker';\n\nexport const dateTimePickerAgent: AgentAdapter<DateTimePickerHandle> = {\n id: 'date-time-picker',\n // Persisted single datetime (value state + set_datetime) → select_single +\n // set_value, plus open/close of the combined popover.\n capabilities: ['select_single', 'set_value', 'open', 'close'],\n state: {\n value: {\n type: 'iso-datetime',\n descriptionKey: 'ui.agent.dateTimePicker.state.value',\n description: 'Currently-selected ISO datetime, or null.',\n read: (handle) => handle.getValue()?.toISOString() ?? null,\n },\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.dateTimePicker.state.isOpen',\n description: 'Whether the datetime popover is open.',\n read: (handle) => handle.isOpen(),\n },\n },\n actions: {\n set_datetime: {\n safety: 'write',\n argsType: '{ datetime: string }',\n argsSchema: {\n type: 'object',\n properties: {\n datetime: {\n type: 'string',\n format: 'date-time',\n description: 'ISO datetime, e.g. \"2026-06-23T14:30:00Z\".',\n },\n },\n required: ['datetime'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.dateTimePicker.actions.setDatetime',\n description: 'Select a specific datetime (ISO string).',\n examples: [\n {\n args: { datetime: '2026-06-23T14:30:00Z' },\n note: 'Select 23 Jun 2026, 14:30 UTC.',\n },\n ],\n invoke: (handle, args: { datetime: string }) => {\n handle.setValue(new Date(args.datetime));\n },\n },\n clear: {\n // Discards the selected datetime — loses the user's input.\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.dateTimePicker.actions.clear',\n description: 'Clear the selected datetime.',\n invoke: (handle) => {\n handle.clear();\n },\n },\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dateTimePicker.actions.open',\n description: 'Open the datetime popover.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dateTimePicker.actions.close',\n description: 'Close the datetime popover.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'date-time-picker',\n description: 'Marks the DateTimePicker wrapper.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n },\n};\n","import {\n forwardRef,\n useCallback,\n useImperativeHandle,\n useMemo,\n useRef,\n useState,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport * as Popover from '@radix-ui/react-popover';\nimport {\n findPopoverTrigger,\n useNonModalTabExit,\n} from '../_shared/non-modal-tab-exit';\nimport { Spinner } from '../spinner';\nimport { useDayPickerLabels } from '../_shared/day-picker-labels';\nimport { DayPicker } from 'react-day-picker';\nimport { isBefore, isAfter, setHours, setMinutes } from 'date-fns';\nimport { CalendarDays } from 'lucide-react';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport {\n useFormField,\n useFormFieldControlId,\n} from '../form-field/form-field-context';\nimport {\n useDateFnsLocale,\n buildDisabledMatcher,\n CalendarChevron,\n calendarClassNames,\n triggerVariants,\n calendarIconVariants,\n popoverContentVariants,\n} from '../_shared';\nimport { TimePicker } from '../time-picker/time-picker';\nimport type { TimeValue } from '../_shared/time';\nimport { formatLocale } from '../_shared/intl-locale';\nimport { useAgentRegistration } from '../../agent';\nimport { dateTimePickerAgent } from './date-time-picker.agent';\n\n/* -------------------------------------------------------------------------- */\n/* Imperative handle */\n/* -------------------------------------------------------------------------- */\n\n/** Curated imperative handle exposed via `ref` — also consumed by the agent adapter. */\nexport interface DateTimePickerHandle {\n /** Get the current selected datetime, or undefined. */\n getValue: () => Date | undefined;\n /** Set the selected datetime. */\n setValue: (date: Date | undefined) => void;\n /** Clear the selected datetime. */\n clear: () => void;\n /** Whether the popover is open. */\n isOpen: () => boolean;\n /** Open the popover. */\n open: () => void;\n /** Close the popover. */\n close: () => void;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Helpers */\n/* -------------------------------------------------------------------------- */\n\n/** Get timezone short name. */\nfunction getTimezoneLabel(locale: string, timezone?: string): string {\n try {\n const opts: Intl.DateTimeFormatOptions = { timeZoneName: 'short' };\n if (timezone && timezone !== 'local') {\n opts.timeZone = timezone === 'utc' ? 'UTC' : timezone;\n }\n const parts = new Intl.DateTimeFormat(locale, opts).formatToParts(\n new Date(),\n );\n return parts.find((p) => p.type === 'timeZoneName')?.value ?? '';\n } catch {\n return '';\n }\n}\n\n/** Check if a timezone differs from the browser's. */\nfunction tzDiffersFromBrowser(timezone?: string): boolean {\n if (!timezone || timezone === 'local') return false;\n try {\n const browserTz = Intl.DateTimeFormat().resolvedOptions().timeZone;\n if (timezone === 'utc') return browserTz !== 'UTC';\n return browserTz !== timezone;\n } catch {\n return false;\n }\n}\n\n/* -------------------------------------------------------------------------- */\n/* CVA variants */\n/* -------------------------------------------------------------------------- */\n\nconst applyButtonVariants = cva(\n [\n 'ds:w-full ds:rounded-[var(--radius-sm)]',\n 'ds:bg-primary ds:text-primary-foreground',\n 'ds:hover:bg-primary-hover ds:cursor-pointer',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:disabled:cursor-not-allowed ds:disabled:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:h-8 ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-[var(--min-target-size)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:text-[length:var(--font-size-lg)]',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\n/* -------------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------------- */\n\nexport interface DateTimePickerProps extends Pick<\n VariantProps<typeof triggerVariants>,\n 'size'\n> {\n /** Current datetime — controlled. */\n value?: Date;\n /** Default datetime — uncontrolled. */\n defaultValue?: Date;\n /** Called when the datetime changes. */\n onChange?: (date: Date | undefined) => void;\n /** Timezone — IANA string, 'local', or 'utc'. */\n timezone?: string;\n /** Show timezone annotation. Defaults to true when tz differs from browser. */\n showTimezone?: boolean;\n /** Minimum datetime. */\n minDate?: Date;\n /** Maximum datetime. */\n maxDate?: Date;\n /** Force 12h/24h mode. */\n hour12?: boolean;\n /** Minute step for TimePicker. */\n minuteStep?: 1 | 5 | 10 | 15 | 30;\n /** Component size. */\n size?: 'sm' | 'md' | 'lg';\n /** Disabled state. */\n disabled?: boolean;\n /** Placeholder text. */\n placeholder?: string;\n /** Additional class names. */\n className?: string;\n /** id override. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------------- */\n\nexport const DateTimePicker = forwardRef<\n DateTimePickerHandle,\n DateTimePickerProps\n>(\n (\n {\n value,\n defaultValue,\n onChange,\n timezone,\n showTimezone: showTimezoneProp,\n minDate,\n maxDate,\n hour12,\n minuteStep = 1,\n size = 'md',\n disabled,\n placeholder,\n className,\n id,\n },\n ref,\n ) => {\n const { t, i18n } = useTranslation('ui');\n const ctx = useFormField();\n const effectiveId = useFormFieldControlId(ctx, id);\n const effectiveDisabled = ctx.disabled || disabled;\n const effectiveTone = ctx.invalid ? 'error' : 'default';\n\n const locale = useDateFnsLocale(i18n.language);\n const calendarLabels = useDayPickerLabels();\n const placeholderText =\n placeholder ??\n t('inputs.dateTimePicker.placeholder', 'Select date and time');\n const applyLabel = t('inputs.dateTimePicker.apply', 'Apply');\n const outOfRangeLabel = t(\n 'inputs.dateTimePicker.outOfRange',\n 'Date/time is out of allowed range',\n );\n\n const showTimezone =\n showTimezoneProp !== undefined\n ? showTimezoneProp\n : tzDiffersFromBrowser(timezone);\n const timezoneLabel = showTimezone\n ? getTimezoneLabel(i18n.language, timezone)\n : '';\n\n const [currentValueRaw, setDateTimeValue] = useControllableState<\n Date | undefined\n >({\n value,\n defaultValue,\n onChange,\n });\n const currentValue = currentValueRaw;\n\n // Draft state while popover is open\n const [draftDate, setDraftDate] = useState<Date | undefined>(currentValue);\n const [open, setOpen] = useState(false);\n const [month, setMonth] = useState<Date>(currentValue ?? new Date());\n const [rangeError, setRangeError] = useState(false);\n\n const triggerRef = useRef<HTMLButtonElement>(null);\n\n const emit = useCallback(\n (date: Date | undefined) => {\n setDateTimeValue(date);\n },\n [setDateTimeValue],\n );\n\n const disabledMatcher = buildDisabledMatcher(minDate, maxDate);\n\n /** Check if a full datetime is within range. */\n const isInRange = useCallback(\n (date: Date): boolean => {\n if (minDate && isBefore(date, minDate)) return false;\n if (maxDate && isAfter(date, maxDate)) return false;\n return true;\n },\n [minDate, maxDate],\n );\n\n // Sync draft when popover opens\n const handleOpenChange = (nextOpen: boolean) => {\n if (nextOpen) {\n setDraftDate(currentValue ?? new Date());\n setMonth(currentValue ?? new Date());\n setRangeError(false);\n }\n setOpen(nextOpen);\n };\n\n const handleDaySelect = (date: Date | undefined) => {\n if (!date) return;\n const prev = draftDate ?? new Date();\n const merged = setMinutes(\n setHours(date, prev.getHours()),\n prev.getMinutes(),\n );\n setDraftDate(merged);\n setRangeError(!isInRange(merged));\n };\n\n const handleTimeChange = (time: TimeValue) => {\n const prev = draftDate ?? new Date();\n const merged = setMinutes(setHours(prev, time.hours), time.minutes);\n setDraftDate(merged);\n setRangeError(!isInRange(merged));\n };\n\n const handleApply = () => {\n if (!draftDate) return;\n if (!isInRange(draftDate)) {\n setRangeError(true);\n return;\n }\n emit(draftDate);\n setOpen(false);\n triggerRef.current?.focus();\n };\n\n // Format display text\n const displayText = currentValue\n ? new Intl.DateTimeFormat(formatLocale(i18n.language), {\n calendar: 'gregory',\n dateStyle: 'medium',\n timeStyle: 'short',\n hourCycle: 'h23',\n }).format(currentValue)\n : '';\n\n const calendarLabel = t('inputs.datePicker.gridLabel', 'Calendar');\n const timeLabel = t('inputs.timePicker.groupLabel', 'Time');\n\n const handle = useMemo<DateTimePickerHandle>(\n () => ({\n getValue: () => currentValue,\n setValue: (date) => emit(date),\n clear: () => emit(undefined),\n isOpen: () => open,\n // Mirror the trigger's open behaviour so draft state seeds correctly.\n open: () => {\n setDraftDate(currentValue ?? new Date());\n setMonth(currentValue ?? new Date());\n setRangeError(false);\n setOpen(true);\n },\n close: () => setOpen(false),\n }),\n [currentValue, emit, open],\n );\n\n useImperativeHandle(ref, () => handle, [handle]);\n useAgentRegistration(dateTimePickerAgent, handle, effectiveId);\n const exitOnTab = useNonModalTabExit(true, {\n getAnchor: findPopoverTrigger,\n onReturnToTrigger: () => handleOpenChange(false),\n });\n\n return (\n <Popover.Root open={open} onOpenChange={handleOpenChange}>\n <div\n className={className}\n data-component=\"date-time-picker\"\n data-component-id={effectiveId}\n >\n <Popover.Trigger asChild disabled={effectiveDisabled}>\n {/* eslint-disable-next-line jsx-a11y/role-supports-aria-props -- FormField propagates invalid state to its trigger; users rely on this for validation announcements */}\n <button\n ref={triggerRef}\n id={effectiveId}\n type=\"button\"\n disabled={effectiveDisabled}\n aria-describedby={ctx.describedBy || undefined}\n aria-invalid={ctx.invalid || undefined}\n // `aria-required` is not valid on `<button>` per ARIA 1.2 — the\n // FormField label's visible asterisk + `aria-describedby` link\n // communicate the required state instead.\n aria-haspopup=\"dialog\"\n aria-expanded={open}\n className={triggerVariants({ size, tone: effectiveTone })}\n >\n <span\n className={\n displayText\n ? 'ds:text-foreground'\n : 'ds:text-muted-foreground'\n }\n >\n {displayText || placeholderText}\n </span>\n <span\n aria-hidden=\"true\"\n className={calendarIconVariants({ size })}\n >\n <CalendarDays />\n </span>\n </button>\n </Popover.Trigger>\n\n <Popover.Portal>\n <Popover.Content\n sideOffset={4}\n align=\"start\"\n onKeyDown={exitOnTab}\n className={popoverContentVariants()}\n >\n <div className=\"ds:flex ds:flex-col ds:sm:flex-row ds:gap-[var(--spacing-md)]\">\n {/* Calendar region */}\n <div role=\"region\" aria-label={calendarLabel}>\n {locale ? (\n <DayPicker\n mode=\"single\"\n selected={draftDate}\n onSelect={handleDaySelect}\n month={month}\n onMonthChange={setMonth}\n disabled={disabledMatcher}\n locale={locale}\n labels={calendarLabels}\n dir={i18n.dir()}\n showOutsideDays\n fixedWeeks\n classNames={calendarClassNames}\n components={{ Chevron: CalendarChevron }}\n />\n ) : (\n <Spinner />\n )}\n </div>\n\n {/* Time + Apply region */}\n <div\n role=\"region\"\n aria-label={timeLabel}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-md)] ds:sm:border-s ds:sm:border-border ds:sm:ps-[var(--spacing-md)] ds:min-w-[10rem]\"\n >\n <TimePicker\n /* Its own id: inside a FormField it would otherwise\n take the field's, the same one as the trigger. */\n id={`${effectiveId}-time`}\n value={\n draftDate\n ? {\n hours: draftDate.getHours(),\n minutes: draftDate.getMinutes(),\n }\n : { hours: 0, minutes: 0 }\n }\n onChange={handleTimeChange}\n hour12={hour12}\n minuteStep={minuteStep}\n size={size}\n />\n\n {/* Timezone annotation */}\n {timezoneLabel ? (\n <span className=\"type-meta ds:text-muted-foreground\">\n {timezoneLabel}\n </span>\n ) : null}\n\n {/* Range error */}\n {rangeError ? (\n <span\n role=\"alert\"\n className=\"type-meta ds:text-destructive\"\n >\n {outOfRangeLabel}\n </span>\n ) : null}\n\n {/* Apply button */}\n <button\n type=\"button\"\n onClick={handleApply}\n disabled={!draftDate || rangeError}\n className={applyButtonVariants({ size })}\n >\n {applyLabel}\n </button>\n </div>\n </div>\n </Popover.Content>\n </Popover.Portal>\n </div>\n </Popover.Root>\n );\n },\n);\n\nDateTimePicker.displayName = 'DateTimePicker';\n"],"names":["setHours","date","hours","options","_date","toDate","setMinutes","minutes","date_","dateTimePickerAgent","handle","_a","args","getTimezoneLabel","locale","timezone","opts","p","tzDiffersFromBrowser","browserTz","applyButtonVariants","cva","DateTimePicker","forwardRef","value","defaultValue","onChange","showTimezoneProp","minDate","maxDate","hour12","minuteStep","size","disabled","placeholder","className","id","ref","t","i18n","useTranslation","ctx","useFormField","effectiveId","useFormFieldControlId","effectiveDisabled","effectiveTone","useDateFnsLocale","calendarLabels","useDayPickerLabels","placeholderText","applyLabel","outOfRangeLabel","timezoneLabel","currentValueRaw","setDateTimeValue","useControllableState","currentValue","draftDate","setDraftDate","useState","open","setOpen","month","setMonth","rangeError","setRangeError","triggerRef","useRef","emit","useCallback","disabledMatcher","buildDisabledMatcher","isInRange","isBefore","isAfter","handleOpenChange","nextOpen","handleDaySelect","prev","merged","handleTimeChange","time","handleApply","displayText","formatLocale","calendarLabel","timeLabel","useMemo","useImperativeHandle","useAgentRegistration","exitOnTab","useNonModalTabExit","findPopoverTrigger","Popover","jsxs","jsx","triggerVariants","calendarIconVariants","CalendarDays","popoverContentVariants","DayPicker","calendarClassNames","CalendarChevron","Spinner","TimePicker"],"mappings":";;;;;;;;;;;;;;;AA4BO,SAASA,EAASC,GAAMC,GAAOC,GAAS;AAC7C,QAAMC,IAAQC,EAAOJ,GAAME,KAAA,gBAAAA,EAAS,EAAE;AACtC,SAAAC,EAAM,SAASF,CAAK,GACbE;AACT;ACJO,SAASE,EAAWL,GAAMM,GAASJ,GAAS;AACjD,QAAMK,IAAQH,EAAOJ,GAAME,KAAA,gBAAAA,EAAS,EAAE;AACtC,SAAAK,EAAM,WAAWD,CAAO,GACjBC;AACT;AClBO,MAAMC,KAA0D;AAAA,EACrE,IAAI;AAAA;AAAA;AAAA,EAGJ,cAAc,CAAC,iBAAiB,aAAa,QAAQ,OAAO;AAAA,EAC5D,OAAO;AAAA,IACL,OAAO;AAAA,MACL,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACC,MAAA;;AAAW,iBAAAC,IAAAD,EAAO,SAAA,MAAP,gBAAAC,EAAmB,kBAAiB;AAAA;AAAA,IAAA;AAAA,IAExD,QAAQ;AAAA,MACN,MAAM;AAAA,MACN,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,MAAM,CAACD,MAAWA,EAAO,OAAA;AAAA,IAAO;AAAA,EAClC;AAAA,EAEF,SAAS;AAAA,IACP,cAAc;AAAA,MACZ,QAAQ;AAAA,MACR,UAAU;AAAA,MACV,YAAY;AAAA,QACV,MAAM;AAAA,QACN,YAAY;AAAA,UACV,UAAU;AAAA,YACR,MAAM;AAAA,YACN,QAAQ;AAAA,YACR,aAAa;AAAA,UAAA;AAAA,QACf;AAAA,QAEF,UAAU,CAAC,UAAU;AAAA,MAAA;AAAA,MAEvB,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,UAAU;AAAA,QACR;AAAA,UACE,MAAM,EAAE,UAAU,uBAAA;AAAA,UAClB,MAAM;AAAA,QAAA;AAAA,MACR;AAAA,MAEF,QAAQ,CAACA,GAAQE,MAA+B;AAC9C,QAAAF,EAAO,SAAS,IAAI,KAAKE,EAAK,QAAQ,CAAC;AAAA,MACzC;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA;AAAA,MAEL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACF,MAAW;AAClB,QAAAA,EAAO,MAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAEF,MAAM;AAAA,MACJ,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,KAAA;AAAA,MACT;AAAA,IAAA;AAAA,IAEF,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,YAAY;AAAA,MACZ,gBAAgB;AAAA,MAChB,aAAa;AAAA,MACb,QAAQ,CAACA,MAAW;AAClB,QAAAA,EAAO,MAAA;AAAA,MACT;AAAA,IAAA;AAAA,EACF;AAAA,EAEF,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf,YAAY;AAAA,MACV,MAAM;AAAA,MACN,YAAY;AAAA,MACZ,aAAa;AAAA,IAAA;AAAA,EACf;AAEJ;ACrCA,SAASG,GAAiBC,GAAgBC,GAA2B;;AACnE,MAAI;AACF,UAAMC,IAAmC,EAAE,cAAc,QAAA;AACzD,WAAID,KAAYA,MAAa,YAC3BC,EAAK,WAAWD,MAAa,QAAQ,QAAQA,MAKxCJ,IAHO,IAAI,KAAK,eAAeG,GAAQE,CAAI,EAAE;AAAA,0BAC9C,KAAA;AAAA,IAAK,EAEE,KAAK,CAACC,MAAMA,EAAE,SAAS,cAAc,MAA3C,gBAAAN,EAA8C,UAAS;AAAA,EAChE,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAGA,SAASO,GAAqBH,GAA4B;AACxD,MAAI,CAACA,KAAYA,MAAa,QAAS,QAAO;AAC9C,MAAI;AACF,UAAMI,IAAY,KAAK,eAAA,EAAiB,kBAAkB;AAC1D,WAAIJ,MAAa,QAAcI,MAAc,QACtCA,MAAcJ;AAAA,EACvB,QAAQ;AACN,WAAO;AAAA,EACT;AACF;AAMA,MAAMK,KAAsBC;AAAA,EAC1B;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,MAAM;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,QACJ,IAAI;AAAA,MAAA;AAAA,IACN;AAAA,IAEF,iBAAiB,EAAE,MAAM,KAAA;AAAA,EAAK;AAElC,GA4CaC,KAAiBC;AAAA,EAI5B,CACE;AAAA,IACE,OAAAC;AAAA,IACA,cAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAX;AAAA,IACA,cAAcY;AAAA,IACd,SAAAC;AAAA,IACA,SAAAC;AAAA,IACA,QAAAC;AAAA,IACA,YAAAC,IAAa;AAAA,IACb,MAAAC,IAAO;AAAA,IACP,UAAAC;AAAA,IACA,aAAAC;AAAA,IACA,WAAAC;AAAA,IACA,IAAAC;AAAA,EAAA,GAEFC,MACG;AACH,UAAM,EAAE,GAAAC,GAAG,MAAAC,MAASC,GAAe,IAAI,GACjCC,IAAMC,GAAA,GACNC,IAAcC,GAAsBH,GAAKL,CAAE,GAC3CS,IAAoBJ,EAAI,YAAYR,GACpCa,IAAgBL,EAAI,UAAU,UAAU,WAExC3B,IAASiC,GAAiBR,EAAK,QAAQ,GACvCS,IAAiBC,GAAA,GACjBC,IACJhB,KACAI,EAAE,qCAAqC,sBAAsB,GACzDa,IAAab,EAAE,+BAA+B,OAAO,GACrDc,IAAkBd;AAAA,MACtB;AAAA,MACA;AAAA,IAAA,GAOIe,KAHJ1B,MAAqB,SACjBA,IACAT,GAAqBH,CAAQ,KAE/BF,GAAiB0B,EAAK,UAAUxB,CAAQ,IACxC,IAEE,CAACuC,GAAiBC,CAAgB,IAAIC,GAE1C;AAAA,MACA,OAAAhC;AAAA,MACA,cAAAC;AAAA,MACA,UAAAC;AAAA,IAAA,CACD,GACK+B,IAAeH,GAGf,CAACI,GAAWC,CAAY,IAAIC,EAA2BH,CAAY,GACnE,CAACI,GAAMC,CAAO,IAAIF,EAAS,EAAK,GAChC,CAACG,IAAOC,CAAQ,IAAIJ,EAAeH,KAAgB,oBAAI,MAAM,GAC7D,CAACQ,GAAYC,CAAa,IAAIN,EAAS,EAAK,GAE5CO,IAAaC,GAA0B,IAAI,GAE3CC,IAAOC;AAAA,MACX,CAACrE,MAA2B;AAC1B,QAAAsD,EAAiBtD,CAAI;AAAA,MACvB;AAAA,MACA,CAACsD,CAAgB;AAAA,IAAA,GAGbgB,KAAkBC,GAAqB5C,GAASC,CAAO,GAGvD4C,IAAYH;AAAA,MAChB,CAACrE,MACK,EAAA2B,KAAW8C,GAASzE,GAAM2B,CAAO,KACjCC,KAAW8C,GAAQ1E,GAAM4B,CAAO;AAAA,MAGtC,CAACD,GAASC,CAAO;AAAA,IAAA,GAIb+C,IAAmB,CAACC,MAAsB;AAC9C,MAAIA,MACFlB,EAAaF,KAAgB,oBAAI,MAAM,GACvCO,EAASP,KAAgB,oBAAI,MAAM,GACnCS,EAAc,EAAK,IAErBJ,EAAQe,CAAQ;AAAA,IAClB,GAEMC,KAAkB,CAAC7E,MAA2B;AAClD,UAAI,CAACA,EAAM;AACX,YAAM8E,IAAOrB,KAAa,oBAAI,KAAA,GACxBsB,IAAS1E;AAAA,QACbN,EAASC,GAAM8E,EAAK,UAAU;AAAA,QAC9BA,EAAK,WAAA;AAAA,MAAW;AAElB,MAAApB,EAAaqB,CAAM,GACnBd,EAAc,CAACO,EAAUO,CAAM,CAAC;AAAA,IAClC,GAEMC,KAAmB,CAACC,MAAoB;AAE5C,YAAMF,IAAS1E,EAAWN,EADb0D,KAAa,oBAAI,KAAA,GACWwB,EAAK,KAAK,GAAGA,EAAK,OAAO;AAClE,MAAAvB,EAAaqB,CAAM,GACnBd,EAAc,CAACO,EAAUO,CAAM,CAAC;AAAA,IAClC,GAEMG,KAAc,MAAM;;AACxB,UAAKzB,GACL;AAAA,YAAI,CAACe,EAAUf,CAAS,GAAG;AACzB,UAAAQ,EAAc,EAAI;AAClB;AAAA,QACF;AACA,QAAAG,EAAKX,CAAS,GACdI,EAAQ,EAAK,IACbnD,IAAAwD,EAAW,YAAX,QAAAxD,EAAoB;AAAA;AAAA,IACtB,GAGMyE,IAAc3B,IAChB,IAAI,KAAK,eAAe4B,GAAa9C,EAAK,QAAQ,GAAG;AAAA,MACnD,UAAU;AAAA,MACV,WAAW;AAAA,MACX,WAAW;AAAA,MACX,WAAW;AAAA,IAAA,CACZ,EAAE,OAAOkB,CAAY,IACtB,IAEE6B,KAAgBhD,EAAE,+BAA+B,UAAU,GAC3DiD,KAAYjD,EAAE,gCAAgC,MAAM,GAEpD5B,IAAS8E;AAAA,MACb,OAAO;AAAA,QACL,UAAU,MAAM/B;AAAA,QAChB,UAAU,CAACxD,MAASoE,EAAKpE,CAAI;AAAA,QAC7B,OAAO,MAAMoE,EAAK,MAAS;AAAA,QAC3B,QAAQ,MAAMR;AAAA;AAAA,QAEd,MAAM,MAAM;AACV,UAAAF,EAAaF,KAAgB,oBAAI,MAAM,GACvCO,EAASP,KAAgB,oBAAI,MAAM,GACnCS,EAAc,EAAK,GACnBJ,EAAQ,EAAI;AAAA,QACd;AAAA,QACA,OAAO,MAAMA,EAAQ,EAAK;AAAA,MAAA;AAAA,MAE5B,CAACL,GAAcY,GAAMR,CAAI;AAAA,IAAA;AAG3B,IAAA4B,GAAoBpD,GAAK,MAAM3B,GAAQ,CAACA,CAAM,CAAC,GAC/CgF,GAAqBjF,IAAqBC,GAAQiC,CAAW;AAC7D,UAAMgD,KAAYC,GAAmB,IAAM;AAAA,MACzC,WAAWC;AAAA,MACX,mBAAmB,MAAMjB,EAAiB,EAAK;AAAA,IAAA,CAChD;AAED,6BACGkB,EAAQ,MAAR,EAAa,MAAAjC,GAAY,cAAce,GACtC,UAAA,gBAAAmB;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,WAAA5D;AAAA,QACA,kBAAe;AAAA,QACf,qBAAmBQ;AAAA,QAEnB,UAAA;AAAA,UAAA,gBAAAqD,EAACF,EAAQ,SAAR,EAAgB,SAAO,IAAC,UAAUjD,GAEjC,UAAA,gBAAAkD;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,KAAK5B;AAAA,cACL,IAAIxB;AAAA,cACJ,MAAK;AAAA,cACL,UAAUE;AAAA,cACV,oBAAkBJ,EAAI,eAAe;AAAA,cACrC,gBAAcA,EAAI,WAAW;AAAA,cAI7B,iBAAc;AAAA,cACd,iBAAeoB;AAAA,cACf,WAAWoC,GAAgB,EAAE,MAAAjE,GAAM,MAAMc,GAAe;AAAA,cAExD,UAAA;AAAA,gBAAA,gBAAAkD;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,WACEZ,IACI,uBACA;AAAA,oBAGL,UAAAA,KAAelC;AAAA,kBAAA;AAAA,gBAAA;AAAA,gBAElB,gBAAA8C;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,eAAY;AAAA,oBACZ,WAAWE,GAAqB,EAAE,MAAAlE,GAAM;AAAA,oBAExC,4BAACmE,IAAA,CAAA,CAAa;AAAA,kBAAA;AAAA,gBAAA;AAAA,cAChB;AAAA,YAAA;AAAA,UAAA,GAEJ;AAAA,UAEA,gBAAAH,EAACF,EAAQ,QAAR,EACC,UAAA,gBAAAE;AAAA,YAACF,EAAQ;AAAA,YAAR;AAAA,cACC,YAAY;AAAA,cACZ,OAAM;AAAA,cACN,WAAWH;AAAA,cACX,WAAWS,GAAA;AAAA,cAEX,UAAA,gBAAAL,EAAC,OAAA,EAAI,WAAU,iEAEb,UAAA;AAAA,gBAAA,gBAAAC,EAAC,OAAA,EAAI,MAAK,UAAS,cAAYV,IAC5B,UAAAxE,IACC,gBAAAkF;AAAA,kBAACK;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,UAAU3C;AAAA,oBACV,UAAUoB;AAAA,oBACV,OAAAf;AAAA,oBACA,eAAeC;AAAA,oBACf,UAAUO;AAAA,oBACV,QAAAzD;AAAA,oBACA,QAAQkC;AAAA,oBACR,KAAKT,EAAK,IAAA;AAAA,oBACV,iBAAe;AAAA,oBACf,YAAU;AAAA,oBACV,YAAY+D;AAAA,oBACZ,YAAY,EAAE,SAASC,GAAA;AAAA,kBAAgB;AAAA,gBAAA,IAGzC,gBAAAP,EAACQ,IAAA,CAAA,CAAQ,GAEb;AAAA,gBAGA,gBAAAT;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,MAAK;AAAA,oBACL,cAAYR;AAAA,oBACZ,WAAU;AAAA,oBAEV,UAAA;AAAA,sBAAA,gBAAAS;AAAA,wBAACS;AAAA,wBAAA;AAAA,0BAGC,IAAI,GAAG9D,CAAW;AAAA,0BAClB,OACEe,IACI;AAAA,4BACE,OAAOA,EAAU,SAAA;AAAA,4BACjB,SAASA,EAAU,WAAA;AAAA,0BAAW,IAEhC,EAAE,OAAO,GAAG,SAAS,EAAA;AAAA,0BAE3B,UAAUuB;AAAA,0BACV,QAAAnD;AAAA,0BACA,YAAAC;AAAA,0BACA,MAAAC;AAAA,wBAAA;AAAA,sBAAA;AAAA,sBAIDqB,IACC,gBAAA2C,EAAC,QAAA,EAAK,WAAU,sCACb,aACH,IACE;AAAA,sBAGH/B,IACC,gBAAA+B;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,MAAK;AAAA,0BACL,WAAU;AAAA,0BAET,UAAA5C;AAAA,wBAAA;AAAA,sBAAA,IAED;AAAA,sBAGJ,gBAAA4C;AAAA,wBAAC;AAAA,wBAAA;AAAA,0BACC,MAAK;AAAA,0BACL,SAASb;AAAA,0BACT,UAAU,CAACzB,KAAaO;AAAA,0BACxB,WAAW7C,GAAoB,EAAE,MAAAY,GAAM;AAAA,0BAEtC,UAAAmB;AAAA,wBAAA;AAAA,sBAAA;AAAA,oBACH;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACF,EAAA,CACF;AAAA,YAAA;AAAA,UAAA,EACF,CACF;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA,GAEJ;AAAA,EAEJ;AACF;AAEA7B,GAAe,cAAc;","x_google_ignoreList":[0,1]}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
1
|
import { jsx as s, jsxs as d } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as
|
|
3
|
-
import * as
|
|
4
|
-
import { c as
|
|
5
|
-
import { useTranslation as
|
|
6
|
-
import { A as
|
|
7
|
-
import { B as
|
|
8
|
-
import { T as
|
|
9
|
-
import { c as
|
|
10
|
-
import { u as
|
|
11
|
-
import { u as
|
|
12
|
-
import {
|
|
13
|
-
|
|
2
|
+
import { forwardRef as me, useId as pe, useRef as f, useEffect as E, useMemo as L, useState as ue } from "react";
|
|
3
|
+
import * as O from "@radix-ui/react-radio-group";
|
|
4
|
+
import { c as F } from "./index-D2ZczOXr.js";
|
|
5
|
+
import { useTranslation as fe } from "react-i18next";
|
|
6
|
+
import { A as ge } from "./avatar-WZY3eGE7.js";
|
|
7
|
+
import { B as ve } from "./badge-hnBt8o7n.js";
|
|
8
|
+
import { T as be } from "./tooltip-Cp-PLePW.js";
|
|
9
|
+
import { c as he } from "./compose-refs-C0k0tdqF.js";
|
|
10
|
+
import { u as ye } from "./use-select-on-arrow-Cr4iBuW5.js";
|
|
11
|
+
import { u as xe } from "./registry-DvAUVLHh.js";
|
|
12
|
+
import { u as Se } from "./use-direction-Dp8h70PP.js";
|
|
13
|
+
import { C as we } from "./circle-alert-rGDZ73Wh.js";
|
|
14
|
+
const Ne = {
|
|
14
15
|
id: "dependent-selector",
|
|
15
16
|
capabilities: ["select_single"],
|
|
16
17
|
state: {
|
|
@@ -62,7 +63,7 @@ const xe = {
|
|
|
62
63
|
description: "Stable person id emitted on each rendered person row."
|
|
63
64
|
}
|
|
64
65
|
}
|
|
65
|
-
},
|
|
66
|
+
}, ze = F(
|
|
66
67
|
"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0",
|
|
67
68
|
{
|
|
68
69
|
variants: {
|
|
@@ -71,7 +72,7 @@ const xe = {
|
|
|
71
72
|
},
|
|
72
73
|
defaultVariants: { size: "md", tone: "checkin" }
|
|
73
74
|
}
|
|
74
|
-
),
|
|
75
|
+
), G = F(
|
|
75
76
|
[
|
|
76
77
|
// The row IS the Radix Item (`<button role="radio">`). Reset the
|
|
77
78
|
// button chrome, lay out avatar + text on the inline axis. Logical
|
|
@@ -116,15 +117,15 @@ const xe = {
|
|
|
116
117
|
},
|
|
117
118
|
defaultVariants: { size: "md", tone: "checkin", disabled: !1 }
|
|
118
119
|
}
|
|
119
|
-
),
|
|
120
|
+
), ke = { sm: "sm", md: "md", lg: "lg" }, Be = {
|
|
120
121
|
sm: "ds:size-8",
|
|
121
122
|
md: "ds:size-10",
|
|
122
123
|
lg: "ds:size-12"
|
|
123
|
-
},
|
|
124
|
+
}, Re = {
|
|
124
125
|
sm: "type-body-sm",
|
|
125
126
|
md: "type-label",
|
|
126
127
|
lg: "type-body"
|
|
127
|
-
},
|
|
128
|
+
}, Ie = me(
|
|
128
129
|
({
|
|
129
130
|
people: t,
|
|
130
131
|
value: c,
|
|
@@ -132,65 +133,66 @@ const xe = {
|
|
|
132
133
|
onValueChange: n,
|
|
133
134
|
label: v,
|
|
134
135
|
description: S,
|
|
135
|
-
size:
|
|
136
|
-
tone:
|
|
136
|
+
size: J = "md",
|
|
137
|
+
tone: Q = "checkin",
|
|
137
138
|
loading: r = !1,
|
|
138
139
|
error: m,
|
|
139
|
-
emptyState:
|
|
140
|
+
emptyState: U,
|
|
140
141
|
id: p,
|
|
141
|
-
className:
|
|
142
|
+
className: W,
|
|
142
143
|
"aria-label": w,
|
|
143
|
-
"aria-labelledby":
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
144
|
+
"aria-labelledby": k,
|
|
145
|
+
onKeyDown: N,
|
|
146
|
+
...X
|
|
147
|
+
}, Y) => {
|
|
148
|
+
const o = J ?? "md", z = Q ?? "checkin", { t: a } = fe("ui"), b = pe(), B = `${b}-legend`, R = `${b}-description`, I = `${b}-error`;
|
|
149
|
+
f(!1), E(() => {
|
|
150
|
+
}, [v, w, k]);
|
|
151
|
+
const A = L(
|
|
150
152
|
() => t.filter((e) => !e.disabled),
|
|
151
153
|
[t]
|
|
152
|
-
),
|
|
154
|
+
), Z = t.some(
|
|
153
155
|
(e) => e.relationshipKey !== "self"
|
|
154
|
-
), u =
|
|
156
|
+
), u = A.length === 1 ? A[0].id : void 0, i = c !== void 0, [C, ee] = ue(
|
|
155
157
|
g ?? u ?? ""
|
|
156
|
-
),
|
|
157
|
-
|
|
158
|
-
const
|
|
159
|
-
r
|
|
158
|
+
), _ = i ? c ?? "" : C, $ = f(_);
|
|
159
|
+
$.current = _;
|
|
160
|
+
const j = ye(), T = (e) => {
|
|
161
|
+
j.noteSelection(), !r && (i || ee(e), n == null || n(e));
|
|
160
162
|
}, h = f(n);
|
|
161
163
|
h.current = n;
|
|
162
|
-
const
|
|
163
|
-
|
|
164
|
+
const V = f(!1);
|
|
165
|
+
E(() => {
|
|
164
166
|
var e;
|
|
165
|
-
!
|
|
167
|
+
!V.current && !i && !r && g === void 0 && u !== void 0 && (V.current = !0, (e = h.current) == null || e.call(h, u));
|
|
166
168
|
}, [i, r, g, u]);
|
|
167
|
-
const
|
|
169
|
+
const se = L(
|
|
168
170
|
() => ({
|
|
169
|
-
getValue: () =>
|
|
170
|
-
setValue: (e) =>
|
|
171
|
+
getValue: () => $.current,
|
|
172
|
+
setValue: (e) => T(e)
|
|
171
173
|
}),
|
|
172
174
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
173
175
|
[i, r, n]
|
|
174
176
|
);
|
|
175
|
-
|
|
176
|
-
const D = f(null),
|
|
177
|
+
xe(Ne, se, p);
|
|
178
|
+
const D = f(null), M = he(Y, D), de = Se(D), y = k ?? (v ? B : void 0), H = [S ? R : null, m ? I : null].filter(Boolean).join(" ") || void 0, K = (e) => a(`dependentSelector.relationship.${e}`), P = (e) => a("dependentSelector.age", { count: e }), te = (e) => {
|
|
177
179
|
const l = [a("dependentSelector.optionLabel", {
|
|
178
180
|
name: e.name,
|
|
179
|
-
relationship:
|
|
181
|
+
relationship: K(e.relationshipKey)
|
|
180
182
|
})];
|
|
181
|
-
return typeof e.age == "number" && l.push(
|
|
182
|
-
},
|
|
183
|
+
return typeof e.age == "number" && l.push(P(e.age)), e.isMinor && l.push(a("dependentSelector.minorBadge")), l.join(", ");
|
|
184
|
+
}, ae = S ? /* @__PURE__ */ s("p", { id: R, className: "type-body-sm ds:text-muted-foreground", children: S }) : null, ie = m ? /* @__PURE__ */ d(
|
|
183
185
|
"p",
|
|
184
186
|
{
|
|
185
|
-
id:
|
|
187
|
+
id: I,
|
|
186
188
|
role: "alert",
|
|
187
189
|
className: "ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-destructive",
|
|
188
190
|
children: [
|
|
189
|
-
/* @__PURE__ */ s(
|
|
191
|
+
/* @__PURE__ */ s(we, { "aria-hidden": "true", className: "ds:size-4 ds:shrink-0" }),
|
|
190
192
|
/* @__PURE__ */ s("span", { children: m })
|
|
191
193
|
]
|
|
192
194
|
}
|
|
193
|
-
) : null,
|
|
195
|
+
) : null, ne = /* @__PURE__ */ s(
|
|
194
196
|
"div",
|
|
195
197
|
{
|
|
196
198
|
"aria-hidden": "true",
|
|
@@ -198,12 +200,12 @@ const xe = {
|
|
|
198
200
|
children: Array.from({ length: 3 }).map((e, x) => /* @__PURE__ */ d(
|
|
199
201
|
"div",
|
|
200
202
|
{
|
|
201
|
-
className:
|
|
203
|
+
className: G({ size: o, tone: z, disabled: !1 }),
|
|
202
204
|
children: [
|
|
203
205
|
/* @__PURE__ */ s(
|
|
204
206
|
"span",
|
|
205
207
|
{
|
|
206
|
-
className: `ds:inline-flex ds:shrink-0 ds:rounded-[var(--radius-full)] ds:bg-muted ds:animate-pulse ${
|
|
208
|
+
className: `ds:inline-flex ds:shrink-0 ds:rounded-[var(--radius-full)] ds:bg-muted ds:animate-pulse ${Be[o]}`
|
|
207
209
|
}
|
|
208
210
|
),
|
|
209
211
|
/* @__PURE__ */ d("span", { className: "ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0 ds:flex-1", children: [
|
|
@@ -215,9 +217,9 @@ const xe = {
|
|
|
215
217
|
x
|
|
216
218
|
))
|
|
217
219
|
}
|
|
218
|
-
),
|
|
219
|
-
const x = `${b}-row-${e.id}`, l =
|
|
220
|
-
|
|
220
|
+
), re = (e) => {
|
|
221
|
+
const x = `${b}-row-${e.id}`, l = te(e), q = /* @__PURE__ */ d(
|
|
222
|
+
O.Item,
|
|
221
223
|
{
|
|
222
224
|
id: x,
|
|
223
225
|
value: e.id,
|
|
@@ -225,18 +227,18 @@ const xe = {
|
|
|
225
227
|
"aria-label": l,
|
|
226
228
|
title: e.dob ?? void 0,
|
|
227
229
|
"data-option-id": e.id,
|
|
228
|
-
className:
|
|
230
|
+
className: G({
|
|
229
231
|
size: o,
|
|
230
|
-
tone:
|
|
232
|
+
tone: z,
|
|
231
233
|
disabled: !!e.disabled
|
|
232
234
|
}),
|
|
233
235
|
children: [
|
|
234
236
|
/* @__PURE__ */ s(
|
|
235
|
-
|
|
237
|
+
ge,
|
|
236
238
|
{
|
|
237
239
|
src: e.avatarSrc,
|
|
238
240
|
name: e.name,
|
|
239
|
-
size:
|
|
241
|
+
size: ke[o],
|
|
240
242
|
"aria-hidden": "true"
|
|
241
243
|
}
|
|
242
244
|
),
|
|
@@ -250,7 +252,7 @@ const xe = {
|
|
|
250
252
|
/* @__PURE__ */ s(
|
|
251
253
|
"span",
|
|
252
254
|
{
|
|
253
|
-
className: `${
|
|
255
|
+
className: `${Re[o]} ds:text-foreground ds:truncate ds:min-w-0`,
|
|
254
256
|
children: e.name
|
|
255
257
|
}
|
|
256
258
|
),
|
|
@@ -258,12 +260,12 @@ const xe = {
|
|
|
258
260
|
// Neutral chip (validated AA ~6:1) — the "Minor" flag is
|
|
259
261
|
// informational, not a warning STATE. The tonal `warning`
|
|
260
262
|
// variant fails AA at the small chip font size.
|
|
261
|
-
/* @__PURE__ */ s(
|
|
263
|
+
/* @__PURE__ */ s(ve, { variant: "neutral", size: "sm", children: a("dependentSelector.minorBadge") })
|
|
262
264
|
) : null
|
|
263
265
|
] }),
|
|
264
266
|
/* @__PURE__ */ d("span", { className: "type-body-sm ds:text-muted-foreground ds:truncate ds:min-w-0", children: [
|
|
265
|
-
|
|
266
|
-
typeof e.age == "number" ? ` · ${
|
|
267
|
+
K(e.relationshipKey),
|
|
268
|
+
typeof e.age == "number" ? ` · ${P(e.age)}` : null
|
|
267
269
|
] })
|
|
268
270
|
]
|
|
269
271
|
}
|
|
@@ -272,25 +274,25 @@ const xe = {
|
|
|
272
274
|
},
|
|
273
275
|
e.id
|
|
274
276
|
);
|
|
275
|
-
return e.disabled && e.disabledReason ? /* @__PURE__ */ s(
|
|
277
|
+
return e.disabled && e.disabledReason ? /* @__PURE__ */ s(be, { label: e.disabledReason, children: /* @__PURE__ */ s(
|
|
276
278
|
"span",
|
|
277
279
|
{
|
|
278
280
|
tabIndex: 0,
|
|
279
281
|
"data-disabled-row": e.id,
|
|
280
282
|
"aria-label": l,
|
|
281
283
|
className: "ds:flex ds:min-w-0 ds:rounded-[var(--radius-md)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]",
|
|
282
|
-
children:
|
|
284
|
+
children: q
|
|
283
285
|
}
|
|
284
|
-
) }, e.id) :
|
|
285
|
-
},
|
|
286
|
+
) }, e.id) : q;
|
|
287
|
+
}, oe = U ?? /* @__PURE__ */ s("p", { className: "type-body-sm ds:text-muted-foreground", children: a("dependentSelector.empty") }), le = r ? /* @__PURE__ */ d(
|
|
286
288
|
"div",
|
|
287
289
|
{
|
|
288
|
-
ref:
|
|
290
|
+
ref: M,
|
|
289
291
|
id: p,
|
|
290
292
|
role: "radiogroup",
|
|
291
293
|
"aria-label": y ? void 0 : w,
|
|
292
294
|
"aria-labelledby": y,
|
|
293
|
-
"aria-describedby":
|
|
295
|
+
"aria-describedby": H,
|
|
294
296
|
"aria-invalid": !!m || void 0,
|
|
295
297
|
"aria-busy": "true",
|
|
296
298
|
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0",
|
|
@@ -298,41 +300,44 @@ const xe = {
|
|
|
298
300
|
"data-component-id": p,
|
|
299
301
|
children: [
|
|
300
302
|
/* @__PURE__ */ s("span", { className: "ds:sr-only", children: a("dependentSelector.loadingLabel") }),
|
|
301
|
-
|
|
303
|
+
ne
|
|
302
304
|
]
|
|
303
305
|
}
|
|
304
306
|
) : /* @__PURE__ */ s(
|
|
305
|
-
|
|
307
|
+
O.Root,
|
|
306
308
|
{
|
|
307
|
-
ref:
|
|
309
|
+
ref: M,
|
|
308
310
|
id: p,
|
|
309
|
-
dir:
|
|
311
|
+
dir: de,
|
|
310
312
|
value: i ? c ?? "" : void 0,
|
|
311
313
|
defaultValue: i ? void 0 : g ?? u,
|
|
312
|
-
onValueChange:
|
|
314
|
+
onValueChange: T,
|
|
315
|
+
onKeyDown: (e) => {
|
|
316
|
+
N == null || N(e), j.onKeyDown(e);
|
|
317
|
+
},
|
|
313
318
|
"aria-label": y ? void 0 : w,
|
|
314
319
|
"aria-labelledby": y,
|
|
315
|
-
"aria-describedby":
|
|
320
|
+
"aria-describedby": H,
|
|
316
321
|
"aria-invalid": !!m || void 0,
|
|
317
322
|
className: "ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0",
|
|
318
323
|
"data-component": "dependent-selector",
|
|
319
324
|
"data-component-id": p,
|
|
320
|
-
...
|
|
321
|
-
children: t.map(
|
|
325
|
+
...X,
|
|
326
|
+
children: t.map(re)
|
|
322
327
|
}
|
|
323
|
-
),
|
|
324
|
-
return /* @__PURE__ */ d("div", { className:
|
|
325
|
-
v ? /* @__PURE__ */ s("div", { id:
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
!r && !
|
|
329
|
-
|
|
328
|
+
), ce = ze({ size: o, tone: z, className: W });
|
|
329
|
+
return /* @__PURE__ */ d("div", { className: ce, children: [
|
|
330
|
+
v ? /* @__PURE__ */ s("div", { id: B, className: "type-label ds:text-foreground", children: v }) : null,
|
|
331
|
+
ae,
|
|
332
|
+
le,
|
|
333
|
+
!r && !Z ? oe : null,
|
|
334
|
+
ie
|
|
330
335
|
] });
|
|
331
336
|
}
|
|
332
337
|
);
|
|
333
|
-
|
|
338
|
+
Ie.displayName = "DependentSelector";
|
|
334
339
|
export {
|
|
335
|
-
|
|
336
|
-
|
|
340
|
+
Ie as D,
|
|
341
|
+
Ne as d
|
|
337
342
|
};
|
|
338
|
-
//# sourceMappingURL=dependent-selector-
|
|
343
|
+
//# sourceMappingURL=dependent-selector-DgaAQc-c.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependent-selector-DgaAQc-c.js","sources":["../../src/components/dependent-selector/dependent-selector.agent.ts","../../src/components/dependent-selector/dependent-selector.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — DependentSelector. */\n/* */\n/* Mirrors radio-group.agent.ts: a single-select domain control. The */\n/* selected person id is the externally-observable state; `select_single` */\n/* is the capability. Per-row `data-option-id` lets an agent address each */\n/* person by their stable opaque id. */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { DependentSelectorHandle } from './dependent-selector';\n\nexport const dependentSelectorAgent: AgentAdapter<DependentSelectorHandle> = {\n id: 'dependent-selector',\n capabilities: ['select_single'],\n state: {\n value: {\n type: 'string',\n descriptionKey: 'ui.agent.dependentSelector.state.value',\n description:\n 'Id of the currently selected person, or empty string when none.',\n read: (handle) => handle.getValue(),\n },\n },\n actions: {\n set_value: {\n safety: 'write',\n argsType: '{ value: string }',\n argsSchema: {\n type: 'object',\n properties: {\n value: {\n type: 'string',\n description: 'Stable opaque id of the person row to select.',\n },\n },\n required: ['value'],\n },\n idempotent: true,\n descriptionKey: 'ui.agent.dependentSelector.actions.setValue',\n description: 'Select the person row with the given id.',\n examples: [\n { args: { value: 'person-2' }, note: 'Select the second dependent.' },\n ],\n invoke: (handle, args: { value: string }) => {\n handle.setValue(args.value);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'dependent-selector',\n description: 'Marks the DependentSelector root (role=radiogroup).',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-option-id',\n description: 'Stable person id emitted on each rendered person row.',\n },\n },\n};\n","import {\n forwardRef,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type ReactNode,\n} from 'react';\nimport * as RadixRadioGroup from '@radix-ui/react-radio-group';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { CircleAlert } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { Avatar } from '../avatar';\nimport { Badge } from '../badge';\nimport { Tooltip } from '../tooltip';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { useSelectOnArrow } from '../_shared/use-select-on-arrow';\nimport { useAgentRegistration } from '../../agent';\nimport { dependentSelectorAgent } from './dependent-selector.agent';\n\n/* -------------------------------------------------------------------- */\n/* DependentSelector */\n/* */\n/* Single-select roster of people — the verified guardian (\"You\") plus */\n/* their registered dependents/minors — that a check-in kiosk uses to */\n/* answer \"Who are you checking in?\". Built on Radix RadioGroup semantics */\n/* (role=radiogroup, single tab stop, roving arrow-key focus, one */\n/* selected value), mirroring the proven src/components/radio-group/ */\n/* pattern. Each option is a person row (Avatar + name + relationship + */\n/* optional age/Minor badge) wrapped in a <label> so the whole card is */\n/* the click target. */\n/* */\n/* The kit owns the localised relationship + age strings via the closed */\n/* `relationshipKey` enum — consumers pass data, never free-text labels, */\n/* or i18n/RTL breaks. `age` is display-only (pre-computed whole years); */\n/* `isMinor` is an explicit per-person flag, NOT age<18 inference. */\n/* -------------------------------------------------------------------- */\n\n/* -------------------------------------------------------------------- */\n/* Public types */\n/* -------------------------------------------------------------------- */\n\n/**\n * Closed relationship vocabulary. The kit owns the localised label for\n * each key (`dependentSelector.relationship.<key>`). `'other'` is the\n * escape hatch for relationships the enum doesn't model.\n */\nexport type DependentRelationship =\n | 'self'\n | 'son'\n | 'daughter'\n | 'child'\n | 'spouse'\n | 'parent'\n | 'sibling'\n | 'ward'\n | 'other';\n\nexport interface DependentSelectorPerson {\n /** Stable id — becomes the radio value + `data-option-id`. */\n id: string;\n /** Display-formatted name (already formatted by the consumer). */\n name: string;\n /** Closed relationship key — the kit owns the localised label. */\n relationshipKey: DependentRelationship;\n /**\n * Explicit \"minor\" flag — drives the localised \"Minor\" badge.\n * Consumer-supplied, NOT derived from `age < 18` (legal age of\n * majority varies by market).\n */\n isMinor?: boolean;\n /** Avatar image source — falls back to initials, then icon. */\n avatarSrc?: string;\n /** Whole years, pre-computed by the consumer. Display-only. */\n age?: number;\n /**\n * ISO 8601 date of birth. Used ONLY for the row title/tooltip — never\n * parsed for display math (timezone/locale birthday math is the\n * consumer's job).\n */\n dob?: string;\n /** Disables this row; skipped by arrow navigation. */\n disabled?: boolean;\n /** Shown in a Tooltip on the disabled row (like Radio.disabledReason). */\n disabledReason?: string;\n}\n\n/** Agent-readiness curated handle for DependentSelector. */\nexport interface DependentSelectorHandle {\n getValue: () => string;\n setValue: (value: string) => void;\n}\n\n/* -------------------------------------------------------------------- */\n/* CVA */\n/* -------------------------------------------------------------------- */\n\nconst rootVariants = cva(\n 'ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0',\n {\n variants: {\n size: { sm: '', md: '', lg: '' },\n tone: { default: '', checkin: '' },\n },\n defaultVariants: { size: 'md', tone: 'checkin' },\n },\n);\n\nconst rowVariants = cva(\n [\n // The row IS the Radix Item (`<button role=\"radio\">`). Reset the\n // button chrome, lay out avatar + text on the inline axis. Logical\n // properties only.\n 'ds:group ds:flex ds:items-center ds:gap-[var(--spacing-md)] ds:w-full ds:text-start ds:appearance-none',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-border ds:bg-card',\n // Touch-target floor: even sm clears AA/AAA (44 → 48px in accessible).\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n // Selected state: low-alpha accent tint BEHIND tokenised text +\n // a ring-coloured border (never accent as a foreground meeting text).\n 'ds:data-[state=checked]:border-ring',\n // Roving focus ring on the item itself — single tab stop, arrow keys\n // move focus+selection.\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n // Forced-colours: repaint a ButtonBorder edge + a Highlight checked\n // edge + a CanvasText focus ring so the row + its checked state\n // survive Windows High Contrast Mode.\n 'ds:forced-colors:border-[ButtonBorder]',\n 'ds:forced-colors:data-[state=checked]:border-[Highlight]',\n 'ds:forced-colors:focus-visible:outline-[CanvasText]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-xs)]',\n md: 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-md)] ds:py-[var(--spacing-sm)]',\n lg: 'ds:ps-[var(--spacing-md)] ds:pe-[var(--spacing-lg)] ds:py-[var(--spacing-md)]',\n },\n tone: {\n // Neutral RadioGroup-card tint for plain forms.\n default:\n 'ds:data-[state=checked]:bg-[color-mix(in_srgb,var(--accent)_5%,transparent)]',\n // Accent-tinted selected surface tuned for the check-in kiosk —\n // slightly stronger low-alpha mix BEHIND the tokenised foreground.\n checkin:\n 'ds:data-[state=checked]:bg-[color-mix(in_srgb,var(--accent)_8%,transparent)]',\n },\n disabled: {\n true: 'ds:cursor-not-allowed ds:opacity-50',\n false:\n 'ds:cursor-pointer ds:hover:bg-[color-mix(in_srgb,var(--accent)_4%,transparent)]',\n },\n },\n defaultVariants: { size: 'md', tone: 'checkin', disabled: false },\n },\n);\n\nconst avatarSizeBySize = { sm: 'sm', md: 'md', lg: 'lg' } as const;\n\n// Keep the loading skeleton's avatar footprint in lock-step with the real\n// Avatar scale (sm=size-8 / md=size-10 / lg=size-12) so the roster\n// resolving in doesn't shift the row height.\nconst skeletonAvatarSizeBySize = {\n sm: 'ds:size-8',\n md: 'ds:size-10',\n lg: 'ds:size-12',\n} as const;\n\nconst nameTypeBySize = {\n sm: 'type-body-sm',\n md: 'type-label',\n lg: 'type-body',\n} as const;\n\n/* -------------------------------------------------------------------- */\n/* Props */\n/* -------------------------------------------------------------------- */\n\ntype RadixRootProps = ComponentPropsWithoutRef<typeof RadixRadioGroup.Root>;\n\nexport interface DependentSelectorProps\n extends\n Omit<\n RadixRootProps,\n 'children' | 'orientation' | 'value' | 'defaultValue' | 'onValueChange'\n >,\n VariantProps<typeof rootVariants> {\n /** Ordered roster to render as options. */\n people: DependentSelectorPerson[];\n /** Controlled selected person id. */\n value?: string;\n /** Uncontrolled initial selection. Ignored when `value` is set. */\n defaultValue?: string;\n /** Fires with the newly selected person id on user selection. */\n onValueChange?: (personId: string) => void;\n /** Accessible group name, rendered as the `<legend>`. */\n label?: string;\n /** Optional helper paragraph under the legend (wired via aria-describedby). */\n description?: string;\n /** Shows N skeleton rows while the roster resolves; sets aria-busy. */\n loading?: boolean;\n /** Validation/empty-confirmation message — role=alert + aria-invalid. */\n error?: string;\n /** Slot shown when no selectable dependents exist (only self / empty). */\n emptyState?: ReactNode;\n /** Forwarded to the radiogroup root as id + data-component-id. */\n id?: string;\n}\n\n/* -------------------------------------------------------------------- */\n/* Component */\n/* -------------------------------------------------------------------- */\n\nexport const DependentSelector = forwardRef<\n HTMLDivElement,\n DependentSelectorProps\n>(\n (\n {\n people,\n value,\n defaultValue,\n onValueChange,\n label,\n description,\n size: sizeProp = 'md',\n tone: toneProp = 'checkin',\n loading = false,\n error,\n emptyState,\n id,\n className,\n 'aria-label': ariaLabel,\n 'aria-labelledby': ariaLabelledBy,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n // CVA's VariantProps types each axis as `T | null | undefined`; the\n // destructure default only covers `undefined`, so coalesce `null`\n // too before the values index the size→class lookup maps.\n const size = sizeProp ?? 'md';\n const tone = toneProp ?? 'checkin';\n const { t } = useTranslation('ui');\n const baseId = useId();\n const legendId = `${baseId}-legend`;\n const descriptionId = `${baseId}-description`;\n const errorId = `${baseId}-error`;\n\n /* ---- Dev-mode accessible-name enforcement ---- */\n const warnedRef = useRef(false);\n useEffect(() => {\n if (\n import.meta.env.DEV &&\n !warnedRef.current &&\n !label &&\n !ariaLabel &&\n !ariaLabelledBy\n ) {\n warnedRef.current = true;\n console.warn(\n '<DependentSelector> rendered without an accessible name. Pass `label`, or `aria-label` / `aria-labelledby`, so the radiogroup is never unnamed.',\n );\n }\n }, [label, ariaLabel, ariaLabelledBy]);\n\n /* ---- Selectable roster + single-selectable auto-select ---- */\n const selectablePeople = useMemo(\n () => people.filter((person) => !person.disabled),\n [people],\n );\n // The dependents region (everything that isn't the verified self row)\n // drives the empty-state slot.\n const hasDependents = people.some(\n (person) => person.relationshipKey !== 'self',\n );\n const autoSelectId =\n selectablePeople.length === 1 ? selectablePeople[0].id : undefined;\n\n /* ---- Controlled / uncontrolled value handling (mirrors RadioGroup) ---- */\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<string>(\n defaultValue ?? autoSelectId ?? '',\n );\n const currentValue = isControlled ? (value ?? '') : internalValue;\n const currentValueRef = useRef<string>(currentValue);\n currentValueRef.current = currentValue;\n\n const selectOnArrow = useSelectOnArrow();\n\n const handleValueChange = (next: string) => {\n selectOnArrow.noteSelection();\n if (loading) return;\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n };\n\n /* ---- Auto-select change notification ---- */\n /* When exactly one selectable person exists we seed the uncontrolled */\n /* selection (Radix `defaultValue` + internal state) so the row */\n /* paints checked — but Radix never fires onValueChange for a */\n /* defaultValue. In the kiosk consent flow the consumer wires the */\n /* consent audit trail off onValueChange, so we fire it once on mount */\n /* for that auto-selection. Only when uncontrolled, not loading, and */\n /* the consumer didn't pass an explicit defaultValue. */\n const onValueChangeRef = useRef(onValueChange);\n onValueChangeRef.current = onValueChange;\n const autoSelectNotifiedRef = useRef(false);\n useEffect(() => {\n if (\n !autoSelectNotifiedRef.current &&\n !isControlled &&\n !loading &&\n defaultValue === undefined &&\n autoSelectId !== undefined\n ) {\n autoSelectNotifiedRef.current = true;\n onValueChangeRef.current?.(autoSelectId);\n }\n }, [isControlled, loading, defaultValue, autoSelectId]);\n\n /* ---- Agent registration ---- */\n const agentHandle = useMemo<DependentSelectorHandle>(\n () => ({\n getValue: () => currentValueRef.current,\n setValue: (next) => handleValueChange(next),\n }),\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isControlled, loading, onValueChange],\n );\n useAgentRegistration(dependentSelectorAgent, agentHandle, id);\n\n /* ---- Direction (Radix auto-flips Left/Right for rtl) ---- */\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const dir = useDirection(rootRef);\n\n /* ---- Resolved a11y wiring ---- */\n /* ONE grouping mechanism: when `label` is set we render a plain */\n /* heading <div id={legendId}> (NOT a native <fieldset>/<legend>) and */\n /* name the single role=radiogroup via aria-labelledby. A fieldset */\n /* would add a second, redundant named group nested around the */\n /* radiogroup — so we deliberately avoid it. */\n const resolvedAriaLabelledBy =\n ariaLabelledBy ?? (label ? legendId : undefined);\n const describedBy =\n [description ? descriptionId : null, error ? errorId : null]\n .filter(Boolean)\n .join(' ') || undefined;\n\n /* ---- Helpers ---- */\n const relationshipLabel = (key: DependentRelationship): string =>\n t(`dependentSelector.relationship.${key}`);\n\n const ageLabel = (age: number): string =>\n t('dependentSelector.age', { count: age });\n\n /** Compose the full accessible name a screen reader announces. */\n const personAccessibleName = (person: DependentSelectorPerson): string => {\n const base = t('dependentSelector.optionLabel', {\n name: person.name,\n relationship: relationshipLabel(person.relationshipKey),\n });\n const parts = [base];\n if (typeof person.age === 'number') parts.push(ageLabel(person.age));\n if (person.isMinor) parts.push(t('dependentSelector.minorBadge'));\n return parts.join(', ');\n };\n\n /* ---- Description + error nodes ---- */\n const descriptionNode = description ? (\n <p id={descriptionId} className=\"type-body-sm ds:text-muted-foreground\">\n {description}\n </p>\n ) : null;\n\n const errorNode = error ? (\n <p\n id={errorId}\n role=\"alert\"\n className=\"ds:inline-flex ds:items-center ds:gap-[var(--spacing-xs)] type-body-sm ds:text-destructive\"\n >\n <CircleAlert aria-hidden=\"true\" className=\"ds:size-4 ds:shrink-0\" />\n <span>{error}</span>\n </p>\n ) : null;\n\n /* ---- Skeleton rows (loading) ---- */\n const skeletonRows = (\n <div\n aria-hidden=\"true\"\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)]\"\n >\n {Array.from({ length: 3 }).map((_, index) => (\n <div\n key={index}\n className={rowVariants({ size, tone, disabled: false })}\n >\n <span\n className={`ds:inline-flex ds:shrink-0 ds:rounded-[var(--radius-full)] ds:bg-muted ds:animate-pulse ${skeletonAvatarSizeBySize[size]}`}\n />\n <span className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0 ds:flex-1\">\n <span className=\"ds:h-4 ds:w-1/2 ds:rounded-[var(--radius-sm)] ds:bg-muted ds:animate-pulse\" />\n <span className=\"ds:h-3 ds:w-1/3 ds:rounded-[var(--radius-sm)] ds:bg-muted ds:animate-pulse\" />\n </span>\n </div>\n ))}\n </div>\n );\n\n /* ---- Person row ---- */\n /* The Radix Item IS the card: it renders the `<button role=\"radio\">` */\n /* that owns the roving tabindex + arrow navigation, so the whole row */\n /* is the focus + click target. The composed name lives on */\n /* `aria-label`; the visible content is aria-hidden so a screen reader */\n /* hears the clean composed name once (no duplication). */\n const renderPerson = (person: DependentSelectorPerson) => {\n const rowId = `${baseId}-row-${person.id}`;\n const accessibleName = personAccessibleName(person);\n\n const row = (\n <RadixRadioGroup.Item\n key={person.id}\n id={rowId}\n value={person.id}\n // Native `disabled` is the single disabled model: Radix renders\n // a <button disabled> that is skipped by roving arrow nav and is\n // non-selectable. `aria-disabled` is intentionally NOT also set —\n // on a natively-disabled button it is redundant (it is meant for\n // elements that REMAIN focusable). The disabledReason tooltip is\n // reached via a focusable wrapper span below, not this button.\n disabled={person.disabled}\n aria-label={accessibleName}\n title={person.dob ?? undefined}\n data-option-id={person.id}\n className={rowVariants({\n size,\n tone,\n disabled: Boolean(person.disabled),\n })}\n >\n {/* The Avatar is intentionally aria-hidden: its name only feeds\n initials/colour, and the radio's own aria-label is the sole\n accessible name. Keep aria-hidden so a future refactor doesn't\n reintroduce a duplicate \"image, <name>\" announcement (the kit\n Avatar always renders role=\"img\" + aria-label={name}). */}\n <Avatar\n src={person.avatarSrc}\n name={person.name}\n size={avatarSizeBySize[size]}\n aria-hidden=\"true\"\n />\n <span\n aria-hidden=\"true\"\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-2xs)] ds:min-w-0 ds:flex-1\"\n >\n <span className=\"ds:flex ds:items-center ds:gap-[var(--spacing-xs)] ds:min-w-0\">\n <span\n className={`${nameTypeBySize[size]} ds:text-foreground ds:truncate ds:min-w-0`}\n >\n {person.name}\n </span>\n {person.isMinor ? (\n // Neutral chip (validated AA ~6:1) — the \"Minor\" flag is\n // informational, not a warning STATE. The tonal `warning`\n // variant fails AA at the small chip font size.\n <Badge variant=\"neutral\" size=\"sm\">\n {t('dependentSelector.minorBadge')}\n </Badge>\n ) : null}\n </span>\n <span className=\"type-body-sm ds:text-muted-foreground ds:truncate ds:min-w-0\">\n {relationshipLabel(person.relationshipKey)}\n {typeof person.age === 'number'\n ? ` · ${ageLabel(person.age)}`\n : null}\n </span>\n </span>\n </RadixRadioGroup.Item>\n );\n\n if (person.disabled && person.disabledReason) {\n // The Radix Item renders a <button disabled>, which is removed\n // from the tab order and does not fire hover/pointer events — so a\n // Tooltip wrapped directly around it would never open. Wrap the row\n // in a focusable, hoverable <span tabIndex={0}> and make THAT the\n // tooltip trigger, so the disabledReason is reachable by both mouse\n // hover and keyboard focus (mirrors radio.tsx putting the Tooltip\n // on the non-disabled wrapper, not the disabled control).\n return (\n <Tooltip key={person.id} label={person.disabledReason}>\n <span\n // eslint-disable-next-line jsx-a11y/no-noninteractive-tabindex -- intentional focusable tooltip trigger so keyboard users can reach the disabled reason\n tabIndex={0}\n data-disabled-row={person.id}\n aria-label={accessibleName}\n className=\"ds:flex ds:min-w-0 ds:rounded-[var(--radius-md)] ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid ds:focus-visible:outline-ring ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]\"\n >\n {row}\n </span>\n </Tooltip>\n );\n }\n return row;\n };\n\n /* ---- Empty-state slot ---- */\n const resolvedEmptyState = emptyState ?? (\n <p className=\"type-body-sm ds:text-muted-foreground\">\n {t('dependentSelector.empty')}\n </p>\n );\n\n /* ---- Radiogroup body ---- */\n /* While loading we still render a role=radiogroup container (carrying */\n /* the data-component marker + aria-busy) holding aria-hidden skeleton */\n /* rows — selection is inert. Otherwise the Radix root renders the */\n /* real person rows. */\n const body = loading ? (\n <div\n ref={composedRef}\n id={id}\n role=\"radiogroup\"\n aria-label={!resolvedAriaLabelledBy ? ariaLabel : undefined}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-describedby={describedBy}\n aria-invalid={Boolean(error) || undefined}\n aria-busy=\"true\"\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0\"\n data-component=\"dependent-selector\"\n data-component-id={id}\n >\n <span className=\"ds:sr-only\">\n {t('dependentSelector.loadingLabel')}\n </span>\n {skeletonRows}\n </div>\n ) : (\n <RadixRadioGroup.Root\n ref={composedRef}\n id={id}\n dir={dir}\n value={isControlled ? (value ?? '') : undefined}\n defaultValue={\n !isControlled ? (defaultValue ?? autoSelectId) : undefined\n }\n onValueChange={handleValueChange}\n onKeyDown={(event) => {\n onKeyDown?.(event);\n selectOnArrow.onKeyDown(event);\n }}\n aria-label={!resolvedAriaLabelledBy ? ariaLabel : undefined}\n aria-labelledby={resolvedAriaLabelledBy}\n aria-describedby={describedBy}\n aria-invalid={Boolean(error) || undefined}\n className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-sm)] ds:min-w-0\"\n data-component=\"dependent-selector\"\n data-component-id={id}\n {...props}\n >\n {people.map(renderPerson)}\n </RadixRadioGroup.Root>\n );\n\n /* ---- Outer wrapper ---- */\n /* When `label` is set we render a plain heading <div id={legendId}> */\n /* styled like a legend, and the single role=radiogroup is named via */\n /* aria-labelledby={legendId}. We do NOT wrap in <fieldset>/<legend>: */\n /* that would create a second named grouping container nested around */\n /* the radiogroup (the legend announced twice). One grouping */\n /* mechanism only. */\n const outerClasses = rootVariants({ size, tone, className });\n\n return (\n <div className={outerClasses}>\n {label ? (\n <div id={legendId} className=\"type-label ds:text-foreground\">\n {label}\n </div>\n ) : null}\n {descriptionNode}\n {body}\n {!loading && !hasDependents ? resolvedEmptyState : null}\n {errorNode}\n </div>\n );\n },\n);\n\nDependentSelector.displayName = 'DependentSelector';\n"],"names":["dependentSelectorAgent","handle","args","rootVariants","cva","rowVariants","avatarSizeBySize","skeletonAvatarSizeBySize","nameTypeBySize","DependentSelector","forwardRef","people","value","defaultValue","onValueChange","label","description","sizeProp","toneProp","loading","error","emptyState","id","className","ariaLabel","ariaLabelledBy","onKeyDown","props","ref","size","tone","t","useTranslation","baseId","useId","legendId","descriptionId","errorId","useRef","useEffect","selectablePeople","useMemo","person","hasDependents","autoSelectId","isControlled","internalValue","setInternalValue","useState","currentValue","currentValueRef","selectOnArrow","useSelectOnArrow","handleValueChange","next","onValueChangeRef","autoSelectNotifiedRef","_a","agentHandle","useAgentRegistration","rootRef","composedRef","composeRefs","dir","useDirection","resolvedAriaLabelledBy","describedBy","relationshipLabel","key","ageLabel","age","personAccessibleName","parts","descriptionNode","jsx","errorNode","jsxs","CircleAlert","skeletonRows","_","index","renderPerson","rowId","accessibleName","row","RadixRadioGroup","Avatar","Badge","Tooltip","resolvedEmptyState","body","event","outerClasses"],"mappings":"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"}
|