@alfadocs/ui-kit-debug 1.31.0 → 1.33.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_chunks/{agenda-card-pdN49pMu.js → agenda-card-DVz3jwTf.js} +2 -2
- package/dist/_chunks/{agenda-card-pdN49pMu.js.map → agenda-card-DVz3jwTf.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-BweO8pDo.js → agenda-tray-1oDWCJdB.js} +2 -2
- package/dist/_chunks/{agenda-tray-BweO8pDo.js.map → agenda-tray-1oDWCJdB.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-CrHr-5H8.js → ai-prompt-input-Dt7tpCBh.js} +2 -2
- package/dist/_chunks/{ai-prompt-input-CrHr-5H8.js.map → ai-prompt-input-Dt7tpCBh.js.map} +1 -1
- package/dist/_chunks/{alia-sidebar-BWcWZivN.js → alia-sidebar-D18kp3p9.js} +3 -3
- package/dist/_chunks/{alia-sidebar-BWcWZivN.js.map → alia-sidebar-D18kp3p9.js.map} +1 -1
- package/dist/_chunks/{anamnesis-summary-rows-DMO3MWSt.js → anamnesis-summary-rows-BYgyp_i2.js} +6 -6
- package/dist/_chunks/{anamnesis-summary-rows-DMO3MWSt.js.map → anamnesis-summary-rows-BYgyp_i2.js.map} +1 -1
- package/dist/_chunks/{appointment-card-CvUFFEdS.js → appointment-card-D-oj_ugh.js} +2 -2
- package/dist/_chunks/{appointment-card-CvUFFEdS.js.map → appointment-card-D-oj_ugh.js.map} +1 -1
- package/dist/_chunks/{appointment-timeline-DsMZY7U9.js → appointment-timeline-CymGHyIP.js} +2 -2
- package/dist/_chunks/{appointment-timeline-DsMZY7U9.js.map → appointment-timeline-CymGHyIP.js.map} +1 -1
- package/dist/_chunks/{appointment-tray-Z2GaOIYQ.js → appointment-tray-DCk8gHod.js} +2 -2
- package/dist/_chunks/{appointment-tray-Z2GaOIYQ.js.map → appointment-tray-DCk8gHod.js.map} +1 -1
- package/dist/_chunks/{audio-recorder-DXG6LTtO.js → audio-recorder-11wClczr.js} +2 -2
- package/dist/_chunks/{audio-recorder-DXG6LTtO.js.map → audio-recorder-11wClczr.js.map} +1 -1
- package/dist/_chunks/{avatar-BNQNhoyL.js → avatar-CkDeQOSI.js} +37 -37
- package/dist/_chunks/avatar-CkDeQOSI.js.map +1 -0
- package/dist/_chunks/{balance-badge-cell-CX6b0ML4.js → balance-badge-cell-DhBtFRoW.js} +4 -4
- package/dist/_chunks/{balance-badge-cell-CX6b0ML4.js.map → balance-badge-cell-DhBtFRoW.js.map} +1 -1
- package/dist/_chunks/{bishop-score-CJUVBfAu.js → bishop-score-CAl7C5hm.js} +2 -2
- package/dist/_chunks/{bishop-score-CJUVBfAu.js.map → bishop-score-CAl7C5hm.js.map} +1 -1
- package/dist/_chunks/{bmi-calculator-CcH6upht.js → bmi-calculator-Dwkih9a4.js} +3 -3
- package/dist/_chunks/{bmi-calculator-CcH6upht.js.map → bmi-calculator-Dwkih9a4.js.map} +1 -1
- package/dist/_chunks/{booking-jGzRUETo.js → booking-BqkEtsKx.js} +777 -747
- package/dist/_chunks/{booking-jGzRUETo.js.map → booking-BqkEtsKx.js.map} +1 -1
- package/dist/_chunks/{calculator-dialog-12d3Sxaz.js → calculator-dialog-C0ixc3SU.js} +2 -2
- package/dist/_chunks/{calculator-dialog-12d3Sxaz.js.map → calculator-dialog-C0ixc3SU.js.map} +1 -1
- package/dist/_chunks/{calendar-BNQKpxhE.js → calendar-Dgvl5L4T.js} +2 -2
- package/dist/_chunks/{calendar-BNQKpxhE.js.map → calendar-Dgvl5L4T.js.map} +1 -1
- package/dist/_chunks/{calendar-workspace-Dy1jHBvG.js → calendar-workspace-BX-zDyVR.js} +14 -14
- package/dist/_chunks/{calendar-workspace-Dy1jHBvG.js.map → calendar-workspace-BX-zDyVR.js.map} +1 -1
- package/dist/_chunks/{care-plan-card-CQVboTn1.js → care-plan-card-CZW476Kg.js} +2 -2
- package/dist/_chunks/{care-plan-card-CQVboTn1.js.map → care-plan-card-CZW476Kg.js.map} +1 -1
- package/dist/_chunks/{care-plan-entry-card-jxHkzez5.js → care-plan-entry-card-BMUYagEw.js} +2 -2
- package/dist/_chunks/{care-plan-entry-card-jxHkzez5.js.map → care-plan-entry-card-BMUYagEw.js.map} +1 -1
- package/dist/_chunks/{chat-message-DBQu10rs.js → chat-message-C-8UU2av.js} +2 -2
- package/dist/_chunks/{chat-message-DBQu10rs.js.map → chat-message-C-8UU2av.js.map} +1 -1
- package/dist/_chunks/{clinical-note-card-yCTR9DB6.js → clinical-note-card-D2WTV2CO.js} +2 -2
- package/dist/_chunks/{clinical-note-card-yCTR9DB6.js.map → clinical-note-card-D2WTV2CO.js.map} +1 -1
- package/dist/_chunks/{data-table-DB5BiVQ0.js → data-table-DC96JJIq.js} +2 -2
- package/dist/_chunks/{data-table-DB5BiVQ0.js.map → data-table-DC96JJIq.js.map} +1 -1
- package/dist/_chunks/{dependent-selector-cJlJFAKD.js → dependent-selector-yTKKsuc9.js} +2 -2
- package/dist/_chunks/{dependent-selector-cJlJFAKD.js.map → dependent-selector-yTKKsuc9.js.map} +1 -1
- package/dist/_chunks/{dialog-UbKJCi1X.js → dialog-BJiLqhx6.js} +54 -46
- package/dist/_chunks/dialog-BJiLqhx6.js.map +1 -0
- package/dist/_chunks/{document-preview-CDb-n_W7.js → document-preview-BrhMHNh8.js} +2 -2
- package/dist/_chunks/{document-preview-CDb-n_W7.js.map → document-preview-BrhMHNh8.js.map} +1 -1
- package/dist/_chunks/{due-date-calculator-BtgWeFqp.js → due-date-calculator-CxgK8vzt.js} +3 -3
- package/dist/_chunks/{due-date-calculator-BtgWeFqp.js.map → due-date-calculator-CxgK8vzt.js.map} +1 -1
- package/dist/_chunks/{entity-summary-B_vO5Ur4.js → entity-summary-5o768XLU.js} +2 -2
- package/dist/_chunks/{entity-summary-B_vO5Ur4.js.map → entity-summary-5o768XLU.js.map} +1 -1
- package/dist/_chunks/{file-manager-Cd8V9IcZ.js → file-manager-CI2Qn8qW.js} +3 -3
- package/dist/_chunks/{file-manager-Cd8V9IcZ.js.map → file-manager-CI2Qn8qW.js.map} +1 -1
- package/dist/_chunks/{gestational-age-calculator-KdMg9z9H.js → gestational-age-calculator-CZHVrERT.js} +4 -4
- package/dist/_chunks/{gestational-age-calculator-KdMg9z9H.js.map → gestational-age-calculator-CZHVrERT.js.map} +1 -1
- package/dist/_chunks/{link-cell-renderer-tWEOv3Sc.js → link-cell-renderer-BEpMNtAa.js} +3 -3
- package/dist/_chunks/{link-cell-renderer-tWEOv3Sc.js.map → link-cell-renderer-BEpMNtAa.js.map} +1 -1
- package/dist/_chunks/{marketplace-app-shell-C4AjQmvz.js → marketplace-app-shell-CK_ND8Tr.js} +2 -2
- package/dist/_chunks/{marketplace-app-shell-C4AjQmvz.js.map → marketplace-app-shell-CK_ND8Tr.js.map} +1 -1
- package/dist/_chunks/{message-card-D8GB4FdF.js → message-card-BUMv16un.js} +2 -2
- package/dist/_chunks/{message-card-D8GB4FdF.js.map → message-card-BUMv16un.js.map} +1 -1
- package/dist/_chunks/{message-tray-CGIRQjx5.js → message-tray-0zsv27xX.js} +2 -2
- package/dist/_chunks/{message-tray-CGIRQjx5.js.map → message-tray-0zsv27xX.js.map} +1 -1
- package/dist/_chunks/{muscle-scheme-BSJsI4-I.js → muscle-scheme-UVz_x4iE.js} +2 -2
- package/dist/_chunks/{muscle-scheme-BSJsI4-I.js.map → muscle-scheme-UVz_x4iE.js.map} +1 -1
- package/dist/_chunks/{notes-panel-am6e-Lwh.js → notes-panel-C4G-mhZ9.js} +3 -3
- package/dist/_chunks/{notes-panel-am6e-Lwh.js.map → notes-panel-C4G-mhZ9.js.map} +1 -1
- package/dist/_chunks/{operator-hero-BnFv-Uef.js → operator-hero-D7-iiFQ9.js} +2 -2
- package/dist/_chunks/{operator-hero-BnFv-Uef.js.map → operator-hero-D7-iiFQ9.js.map} +1 -1
- package/dist/_chunks/{optical-prescription-BvwuqTpl.js → optical-prescription-DUJOhKz_.js} +2 -2
- package/dist/_chunks/{optical-prescription-BvwuqTpl.js.map → optical-prescription-DUJOhKz_.js.map} +1 -1
- package/dist/_chunks/{patient-details-CdfursHt.js → patient-details-BGiawUHd.js} +3 -3
- package/dist/_chunks/{patient-details-CdfursHt.js.map → patient-details-BGiawUHd.js.map} +1 -1
- package/dist/_chunks/{patient-summary-card-C9WBwct-.js → patient-summary-card--CT_gbaQ.js} +2 -2
- package/dist/_chunks/{patient-summary-card-C9WBwct-.js.map → patient-summary-card--CT_gbaQ.js.map} +1 -1
- package/dist/_chunks/{periodontal-diagnosis-HrFsVi-C.js → periodontal-diagnosis-lEwA8wqX.js} +3 -3
- package/dist/_chunks/{periodontal-diagnosis-HrFsVi-C.js.map → periodontal-diagnosis-lEwA8wqX.js.map} +1 -1
- package/dist/_chunks/{practice-profile-hero-YQ7h2K4o.js → practice-profile-hero-DQyDvpJL.js} +2 -2
- package/dist/_chunks/{practice-profile-hero-YQ7h2K4o.js.map → practice-profile-hero-DQyDvpJL.js.map} +1 -1
- package/dist/_chunks/{practice-results-CxIsU2YO.js → practice-results-DjEzPgAK.js} +2 -2
- package/dist/_chunks/{practice-results-CxIsU2YO.js.map → practice-results-DjEzPgAK.js.map} +1 -1
- package/dist/_chunks/{pregnancy-dating-m-c05DOI.js → pregnancy-dating-n5j5dAKy.js} +4 -4
- package/dist/_chunks/{pregnancy-dating-m-c05DOI.js.map → pregnancy-dating-n5j5dAKy.js.map} +1 -1
- package/dist/_chunks/{pregnancy-weight-gain-CJwbs9W-.js → pregnancy-weight-gain-D5A8vPjj.js} +3 -3
- package/dist/_chunks/{pregnancy-weight-gain-CJwbs9W-.js.map → pregnancy-weight-gain-D5A8vPjj.js.map} +1 -1
- package/dist/_chunks/qr-code-DOJs4suh.js +750 -0
- package/dist/_chunks/qr-code-DOJs4suh.js.map +1 -0
- package/dist/_chunks/radio-DNRe6H_8.js +193 -0
- package/dist/_chunks/radio-DNRe6H_8.js.map +1 -0
- package/dist/_chunks/radio-group-DyVBgnA3.js +297 -0
- package/dist/_chunks/radio-group-DyVBgnA3.js.map +1 -0
- package/dist/_chunks/{radiograph-panel.agent-ByM9M3qm.js → radiograph-panel.agent-o4jwEJPC.js} +2 -2
- package/dist/_chunks/{radiograph-panel.agent-ByM9M3qm.js.map → radiograph-panel.agent-o4jwEJPC.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-VJATL1Tk.js → rich-text-editor-CQ7yZdG3.js} +2 -2
- package/dist/_chunks/{rich-text-editor-VJATL1Tk.js.map → rich-text-editor-CQ7yZdG3.js.map} +1 -1
- package/dist/_chunks/select-CLSUnKjF.js +520 -0
- package/dist/_chunks/select-CLSUnKjF.js.map +1 -0
- package/dist/_chunks/signature-request-vihDT8On.js +2232 -0
- package/dist/_chunks/signature-request-vihDT8On.js.map +1 -0
- package/dist/_chunks/{tabs-DqKtTIjZ.js → tabs-BnRaLT0y.js} +2 -2
- package/dist/_chunks/{tabs-DqKtTIjZ.js.map → tabs-BnRaLT0y.js.map} +1 -1
- package/dist/_chunks/{tasks-panel-DPCNaRko.js → tasks-panel-DQuaVvl5.js} +2 -2
- package/dist/_chunks/{tasks-panel-DPCNaRko.js.map → tasks-panel-DQuaVvl5.js.map} +1 -1
- package/dist/_chunks/{timeline-u-2t9t_M.js → timeline-Bs9Erxlo.js} +2 -2
- package/dist/_chunks/{timeline-u-2t9t_M.js.map → timeline-Bs9Erxlo.js.map} +1 -1
- package/dist/_chunks/{tooth-scheme-C9jssOmy.js → tooth-scheme-Qe7LO5Di.js} +2 -2
- package/dist/_chunks/{tooth-scheme-C9jssOmy.js.map → tooth-scheme-Qe7LO5Di.js.map} +1 -1
- package/dist/_chunks/{unit-converter-C6jMjqL9.js → unit-converter-BTgU50gk.js} +2 -2
- package/dist/_chunks/{unit-converter-C6jMjqL9.js.map → unit-converter-BTgU50gk.js.map} +1 -1
- package/dist/_chunks/{widget-picker-em4xGgv0.js → widget-picker-DvUkBemi.js} +2 -2
- package/dist/_chunks/{widget-picker-em4xGgv0.js.map → widget-picker-DvUkBemi.js.map} +1 -1
- package/dist/agent-catalog.json +316 -20
- package/dist/agent-i18n/en.json +18 -8
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/appointment-card/index.js +2 -2
- package/dist/components/appointment-timeline/index.js +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/avatar/avatar.d.ts +2 -0
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/bishop-score/index.js +1 -1
- package/dist/components/bmi-calculator/index.js +1 -1
- package/dist/components/booking/booking.d.ts.map +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/calculator-dialog/index.js +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/care-plan-card/index.js +1 -1
- package/dist/components/care-plan-entry-card/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/clinical-note-card/index.js +1 -1
- package/dist/components/data-table/index.js +2 -2
- package/dist/components/dependent-selector/index.js +1 -1
- package/dist/components/dialog/dialog.d.ts +9 -0
- 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/gestational-age-calculator/index.js +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-tray/index.js +1 -1
- package/dist/components/muscle-scheme/index.js +1 -1
- package/dist/components/notes-panel/index.js +1 -1
- package/dist/components/operator-hero/index.js +1 -1
- package/dist/components/optical-prescription/index.js +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-table/index.js +1 -1
- package/dist/components/periodontal-diagnosis/index.js +1 -1
- package/dist/components/practice-profile-hero/index.js +1 -1
- package/dist/components/practice-results/index.js +1 -1
- package/dist/components/pregnancy-dating/index.js +1 -1
- package/dist/components/pregnancy-weight-gain/index.js +1 -1
- package/dist/components/qr-code/index.js +1 -1
- package/dist/components/qr-code/qr-encode.d.ts +14 -16
- package/dist/components/qr-code/qr-encode.d.ts.map +1 -1
- package/dist/components/radio/index.js +1 -1
- package/dist/components/radio-group/index.js +2 -2
- package/dist/components/radio-group/radio-group-context.d.ts +4 -1
- package/dist/components/radio-group/radio-group-context.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.agent.d.ts.map +1 -1
- package/dist/components/radio-group/radio-group.d.ts +13 -1
- package/dist/components/radio-group/radio-group.d.ts.map +1 -1
- package/dist/components/radio-group/radio.d.ts +24 -1
- package/dist/components/radio-group/radio.d.ts.map +1 -1
- package/dist/components/radiograph-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/select/select.agent.d.ts.map +1 -1
- package/dist/components/select/select.d.ts +33 -0
- package/dist/components/select/select.d.ts.map +1 -1
- package/dist/components/skeleton-scheme/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tasks-panel/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/unit-converter/index.js +1 -1
- package/dist/components/widget-picker/index.js +1 -1
- package/dist/i18n/locales/ar.d.ts +68 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +69 -1
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +68 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +71 -1
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +68 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +69 -1
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +68 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +69 -1
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +68 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +69 -1
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +68 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +69 -1
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +68 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +69 -1
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +68 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +69 -1
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +68 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +69 -1
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +68 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +69 -1
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +68 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +69 -1
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +68 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +69 -1
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +68 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +69 -1
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +68 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +69 -1
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +68 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +69 -1
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +68 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +69 -1
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +68 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +69 -1
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +68 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +69 -1
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +57 -57
- package/dist/locales/ar.json +69 -1
- package/dist/locales/de.json +69 -1
- package/dist/locales/el.json +69 -1
- package/dist/locales/en.json +69 -1
- package/dist/locales/es.json +69 -1
- package/dist/locales/fr.json +69 -1
- package/dist/locales/hi.json +69 -1
- package/dist/locales/it.json +69 -1
- package/dist/locales/ja.json +69 -1
- package/dist/locales/nl.json +69 -1
- package/dist/locales/pl.json +69 -1
- package/dist/locales/pt.json +69 -1
- package/dist/locales/ro.json +69 -1
- package/dist/locales/ru.json +69 -1
- package/dist/locales/sq.json +69 -1
- package/dist/locales/sv.json +69 -1
- package/dist/locales/tr.json +69 -1
- package/dist/locales/zh.json +69 -1
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/anamnesis/index.js +1 -1
- package/dist/patterns/calendar/index.js +1 -1
- package/dist/patterns/marketplace-app-shell/index.js +1 -1
- package/dist/patterns/signature-request/channel-meta.d.ts +27 -0
- package/dist/patterns/signature-request/channel-meta.d.ts.map +1 -0
- package/dist/patterns/signature-request/index.d.ts +1 -1
- package/dist/patterns/signature-request/index.d.ts.map +1 -1
- package/dist/patterns/signature-request/index.js +1 -1
- package/dist/patterns/signature-request/load-status.d.ts +13 -0
- package/dist/patterns/signature-request/load-status.d.ts.map +1 -0
- package/dist/patterns/signature-request/person-grid.d.ts +32 -0
- package/dist/patterns/signature-request/person-grid.d.ts.map +1 -0
- package/dist/patterns/signature-request/required-documents.d.ts +127 -0
- package/dist/patterns/signature-request/required-documents.d.ts.map +1 -0
- package/dist/patterns/signature-request/signature-history.d.ts +57 -0
- package/dist/patterns/signature-request/signature-history.d.ts.map +1 -0
- package/dist/patterns/signature-request/signature-outcome.d.ts +29 -0
- package/dist/patterns/signature-request/signature-outcome.d.ts.map +1 -0
- package/dist/patterns/signature-request/signature-request.d.ts +390 -26
- package/dist/patterns/signature-request/signature-request.d.ts.map +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +3 -1
- package/dist/_chunks/avatar-BNQNhoyL.js.map +0 -1
- package/dist/_chunks/dialog-UbKJCi1X.js.map +0 -1
- package/dist/_chunks/qr-code-CPkEs5mG.js +0 -574
- package/dist/_chunks/qr-code-CPkEs5mG.js.map +0 -1
- package/dist/_chunks/radio-TWf9Q-mp.js +0 -108
- package/dist/_chunks/radio-TWf9Q-mp.js.map +0 -1
- package/dist/_chunks/radio-group-rXDJADzW.js +0 -175
- package/dist/_chunks/radio-group-rXDJADzW.js.map +0 -1
- package/dist/_chunks/select-Bi8zril7.js +0 -471
- package/dist/_chunks/select-Bi8zril7.js.map +0 -1
- package/dist/_chunks/signature-request-C-IsbkPf.js +0 -417
- package/dist/_chunks/signature-request-C-IsbkPf.js.map +0 -1
|
@@ -3,7 +3,7 @@ import { forwardRef as le, useId as ce, useRef as f, useEffect as P, useMemo as
|
|
|
3
3
|
import * as E from "@radix-ui/react-radio-group";
|
|
4
4
|
import { c as G } from "./index-D2ZczOXr.js";
|
|
5
5
|
import { useTranslation as pe } from "react-i18next";
|
|
6
|
-
import { A as ue } from "./avatar-
|
|
6
|
+
import { A as ue } from "./avatar-CkDeQOSI.js";
|
|
7
7
|
import { B as fe } from "./badge-sTusUqZD.js";
|
|
8
8
|
import { T as ge } from "./tooltip-DvmfrNvB.js";
|
|
9
9
|
import { c as ve } from "./compose-refs-C0k0tdqF.js";
|
|
@@ -335,4 +335,4 @@ export {
|
|
|
335
335
|
ke as D,
|
|
336
336
|
xe as d
|
|
337
337
|
};
|
|
338
|
-
//# sourceMappingURL=dependent-selector-
|
|
338
|
+
//# sourceMappingURL=dependent-selector-yTKKsuc9.js.map
|
package/dist/_chunks/{dependent-selector-cJlJFAKD.js.map → dependent-selector-yTKKsuc9.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dependent-selector-cJlJFAKD.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 { 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 ...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();\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 handleValueChange = (next: string) => {\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 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","props","ref","size","tone","t","useTranslation","baseId","useId","legendId","descriptionId","errorId","useRef","useEffect","selectablePeople","useMemo","person","hasDependents","autoSelectId","isControlled","internalValue","setInternalValue","useState","currentValue","currentValueRef","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","outerClasses"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"dependent-selector-yTKKsuc9.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 { 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 ...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();\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 handleValueChange = (next: string) => {\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 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","props","ref","size","tone","t","useTranslation","baseId","useId","legendId","descriptionId","errorId","useRef","useEffect","selectablePeople","useMemo","person","hasDependents","autoSelectId","isControlled","internalValue","setInternalValue","useState","currentValue","currentValueRef","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","outerClasses"],"mappings":"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"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { jsx as t, jsxs as f } from "react/jsx-runtime";
|
|
2
|
-
import { useRef as
|
|
2
|
+
import { useRef as j, useEffect as T, useMemo as x, forwardRef as i, useContext as B, createContext as k } from "react";
|
|
3
3
|
import * as s from "@radix-ui/react-dialog";
|
|
4
|
-
import { c as
|
|
5
|
-
import { useTranslation as
|
|
6
|
-
import { u as
|
|
7
|
-
import { u as
|
|
8
|
-
import { X as
|
|
9
|
-
const
|
|
4
|
+
import { c as H } from "./index-D2ZczOXr.js";
|
|
5
|
+
import { useTranslation as S } from "react-i18next";
|
|
6
|
+
import { u as A } from "./use-controllable-state-BiY4xTzM.js";
|
|
7
|
+
import { u as E } from "./registry-DvAUVLHh.js";
|
|
8
|
+
import { X as I } from "./x-B5YnXwCz.js";
|
|
9
|
+
const w = {
|
|
10
10
|
id: "dialog",
|
|
11
11
|
capabilities: ["open", "close", "dismiss"],
|
|
12
12
|
state: {
|
|
@@ -54,28 +54,35 @@ const I = {
|
|
|
54
54
|
description: "Sourced from the id prop on Dialog.Root."
|
|
55
55
|
}
|
|
56
56
|
}
|
|
57
|
-
},
|
|
57
|
+
}, z = [
|
|
58
58
|
"ds-dialog__backdrop",
|
|
59
59
|
"ds:backdrop-blur-sm",
|
|
60
60
|
"ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0",
|
|
61
61
|
"ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0",
|
|
62
62
|
"ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
|
|
63
|
-
].join(" "),
|
|
63
|
+
].join(" "), F = [
|
|
64
64
|
"ds:focus-visible:outline-none",
|
|
65
65
|
"ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0 ds:data-[state=open]:zoom-in-95",
|
|
66
66
|
"ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=closed]:zoom-out-95",
|
|
67
67
|
"ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none"
|
|
68
|
-
].join(" "),
|
|
68
|
+
].join(" "), K = H(`ds-dialog ds-dialog__surface ${F}`, {
|
|
69
69
|
variants: {
|
|
70
70
|
size: {
|
|
71
71
|
sm: "ds-dialog__surface--sm",
|
|
72
72
|
md: "",
|
|
73
73
|
lg: "ds-dialog__surface--lg",
|
|
74
74
|
fullscreen: "ds-dialog__surface--fullscreen"
|
|
75
|
+
},
|
|
76
|
+
// `body` pins the header and footer and scrolls only `Dialog.Body` once
|
|
77
|
+
// the content passes the height cap. `surface` (default) scrolls the
|
|
78
|
+
// whole panel as one block.
|
|
79
|
+
scroll: {
|
|
80
|
+
surface: "",
|
|
81
|
+
body: "ds-dialog__surface--scroll-body"
|
|
75
82
|
}
|
|
76
83
|
},
|
|
77
|
-
defaultVariants: { size: "md" }
|
|
78
|
-
}), y =
|
|
84
|
+
defaultVariants: { size: "md", scroll: "surface" }
|
|
85
|
+
}), y = k(void 0), u = ({
|
|
79
86
|
children: e,
|
|
80
87
|
id: o,
|
|
81
88
|
open: a,
|
|
@@ -83,15 +90,15 @@ const I = {
|
|
|
83
90
|
onOpenChange: c,
|
|
84
91
|
...p
|
|
85
92
|
}) => {
|
|
86
|
-
const [g, n] =
|
|
93
|
+
const [g, n] = A({
|
|
87
94
|
value: a,
|
|
88
95
|
defaultValue: l ?? !1,
|
|
89
96
|
onChange: c
|
|
90
|
-
}), d = g ?? !1, r =
|
|
91
|
-
|
|
97
|
+
}), d = g ?? !1, r = j(d);
|
|
98
|
+
T(() => {
|
|
92
99
|
r.current = d;
|
|
93
100
|
}, [d]);
|
|
94
|
-
const m =
|
|
101
|
+
const m = x(
|
|
95
102
|
() => ({
|
|
96
103
|
getIsOpen: () => r.current,
|
|
97
104
|
open: () => n(!0),
|
|
@@ -99,43 +106,44 @@ const I = {
|
|
|
99
106
|
}),
|
|
100
107
|
[n]
|
|
101
108
|
);
|
|
102
|
-
return
|
|
109
|
+
return E(w, m, o), /* @__PURE__ */ t(y.Provider, { value: o, children: /* @__PURE__ */ t(s.Root, { open: d, onOpenChange: n, ...p, children: e }) });
|
|
103
110
|
};
|
|
104
111
|
u.displayName = "Dialog.Root";
|
|
105
112
|
const D = i(({ children: e, ...o }, a) => /* @__PURE__ */ t(s.Trigger, { ref: a, ...o, children: e }));
|
|
106
113
|
D.displayName = "Dialog.Trigger";
|
|
107
114
|
const v = i(({ children: e, ...o }, a) => /* @__PURE__ */ t(s.Close, { ref: a, ...o, children: e }));
|
|
108
115
|
v.displayName = "Dialog.Close";
|
|
109
|
-
const
|
|
116
|
+
const _ = i(
|
|
110
117
|
({
|
|
111
118
|
size: e = "md",
|
|
112
119
|
variant: o = "default",
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
120
|
+
scroll: a = "surface",
|
|
121
|
+
hideCloseButton: l,
|
|
122
|
+
className: c,
|
|
123
|
+
children: p,
|
|
124
|
+
...g
|
|
125
|
+
}, n) => {
|
|
126
|
+
const { t: d } = S(), r = B(y), m = o === "alert" ? { role: "alertdialog" } : {}, O = l ?? o !== "default";
|
|
119
127
|
return /* @__PURE__ */ f(s.Portal, { children: [
|
|
120
128
|
/* @__PURE__ */ t(
|
|
121
129
|
s.Overlay,
|
|
122
130
|
{
|
|
123
131
|
"data-component": "dialog-overlay",
|
|
124
|
-
className:
|
|
132
|
+
className: z
|
|
125
133
|
}
|
|
126
134
|
),
|
|
127
135
|
/* @__PURE__ */ f(
|
|
128
136
|
s.Content,
|
|
129
137
|
{
|
|
130
|
-
ref:
|
|
131
|
-
...
|
|
138
|
+
ref: n,
|
|
139
|
+
...m,
|
|
132
140
|
"data-component": "dialog",
|
|
133
|
-
"data-component-id":
|
|
134
|
-
className:
|
|
135
|
-
...
|
|
141
|
+
"data-component-id": r,
|
|
142
|
+
className: K({ size: e, scroll: a, className: c }),
|
|
143
|
+
...g,
|
|
136
144
|
children: [
|
|
137
|
-
|
|
138
|
-
!
|
|
145
|
+
p,
|
|
146
|
+
!O && // The close is a plain button carrying the `ds-dialog__close`
|
|
139
147
|
// contract class — the SAME class a vanilla host renders. The CSS
|
|
140
148
|
// (src/styles.css) owns its position, sizing, glyph size, hover
|
|
141
149
|
// wash, and focus ring from tokens, so the React and non-React
|
|
@@ -145,8 +153,8 @@ const C = i(
|
|
|
145
153
|
{
|
|
146
154
|
type: "button",
|
|
147
155
|
className: "ds-dialog__close",
|
|
148
|
-
"aria-label":
|
|
149
|
-
children: /* @__PURE__ */ t(
|
|
156
|
+
"aria-label": d("common.close", "Close"),
|
|
157
|
+
children: /* @__PURE__ */ t(I, { "aria-hidden": "true" })
|
|
150
158
|
}
|
|
151
159
|
)
|
|
152
160
|
]
|
|
@@ -155,8 +163,8 @@ const C = i(
|
|
|
155
163
|
] });
|
|
156
164
|
}
|
|
157
165
|
);
|
|
158
|
-
|
|
159
|
-
const
|
|
166
|
+
_.displayName = "Dialog.Content";
|
|
167
|
+
const b = i(
|
|
160
168
|
({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
161
169
|
"div",
|
|
162
170
|
{
|
|
@@ -166,8 +174,8 @@ const _ = i(
|
|
|
166
174
|
}
|
|
167
175
|
)
|
|
168
176
|
);
|
|
169
|
-
|
|
170
|
-
const
|
|
177
|
+
b.displayName = "Dialog.Header";
|
|
178
|
+
const C = i(
|
|
171
179
|
({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
172
180
|
"div",
|
|
173
181
|
{
|
|
@@ -177,7 +185,7 @@ const b = i(
|
|
|
177
185
|
}
|
|
178
186
|
)
|
|
179
187
|
);
|
|
180
|
-
|
|
188
|
+
C.displayName = "Dialog.Body";
|
|
181
189
|
const h = i(({ className: e, ...o }, a) => /* @__PURE__ */ t(
|
|
182
190
|
s.Title,
|
|
183
191
|
{
|
|
@@ -212,19 +220,19 @@ const R = i(
|
|
|
212
220
|
)
|
|
213
221
|
);
|
|
214
222
|
R.displayName = "Dialog.Footer";
|
|
215
|
-
const
|
|
223
|
+
const $ = Object.assign(u, {
|
|
216
224
|
Root: u,
|
|
217
225
|
Trigger: D,
|
|
218
|
-
Content:
|
|
219
|
-
Header:
|
|
226
|
+
Content: _,
|
|
227
|
+
Header: b,
|
|
220
228
|
Title: h,
|
|
221
229
|
Description: N,
|
|
222
|
-
Body:
|
|
230
|
+
Body: C,
|
|
223
231
|
Footer: R,
|
|
224
232
|
Close: v
|
|
225
233
|
});
|
|
226
234
|
export {
|
|
227
|
-
|
|
228
|
-
|
|
235
|
+
$ as D,
|
|
236
|
+
w as d
|
|
229
237
|
};
|
|
230
|
-
//# sourceMappingURL=dialog-
|
|
238
|
+
//# sourceMappingURL=dialog-BJiLqhx6.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dialog-BJiLqhx6.js","sources":["../../src/components/dialog/dialog.agent.ts","../../src/components/dialog/dialog.tsx"],"sourcesContent":["import type { AgentAdapter } from '../../agent/types';\nimport type { DialogHandle } from './dialog';\n\n/**\n * Dialog wraps Radix Dialog. The curated handle (`DialogHandle`) bridges the\n * Radix controlled-or-uncontrolled `open` state so an agent can observe and\n * drive the dialog without owning the React state itself.\n */\nexport const dialogAgent: AgentAdapter<DialogHandle> = {\n id: 'dialog',\n capabilities: ['open', 'close', 'dismiss'],\n state: {\n isOpen: {\n type: 'boolean',\n descriptionKey: 'ui.agent.dialog.state.isOpen',\n description: 'True when the dialog is currently open.',\n read: (handle) => handle.getIsOpen(),\n },\n },\n actions: {\n open: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dialog.actions.open',\n description: 'Open the dialog.',\n invoke: (handle) => {\n handle.open();\n },\n },\n close: {\n safety: 'read',\n idempotent: true,\n descriptionKey: 'ui.agent.dialog.actions.close',\n description: 'Close the dialog. Reversible by reopening.',\n invoke: (handle) => {\n handle.close();\n },\n },\n dismiss: {\n safety: 'destructive',\n idempotent: true,\n descriptionKey: 'ui.agent.dialog.actions.dismiss',\n description:\n 'Dismiss the dialog. Loses any in-progress input that has not been committed.',\n invoke: (handle) => {\n handle.close();\n },\n },\n },\n domHooks: {\n root: { attr: 'data-component', value: 'dialog' },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop on Dialog.Root.',\n },\n },\n};\n","import {\n createContext,\n forwardRef,\n useContext,\n useEffect,\n useMemo,\n useRef,\n type ComponentPropsWithoutRef,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport * as RadixDialog from '@radix-ui/react-dialog';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { X } from 'lucide-react';\nimport { useControllableState } from '../../hooks/use-controllable-state';\nimport { useAgentRegistration } from '../../agent';\nimport { dialogAgent } from './dialog.agent';\n\n// The `ds-dialog__*` class names below are the framework-agnostic contract\n// defined in src/styles.css (@layer ui-kit-components). The React component\n// renders the SAME classes a vanilla (non-React) host hand-authors — the\n// surface (`ds-dialog__surface` + its size modifiers), the close button\n// (`ds-dialog__close`), and the body slot (`ds-dialog__body`) — so there is\n// ONE visual skin (scrim, radius, elevation, bg, padding, centering, sizing,\n// close-button glyph + hover/focus) and the two surfaces can't drift. The few\n// Tailwind utilities that remain are NOT skin: they are the Radix animation\n// hooks (`data-[state=…]:animate-*`) and the surface focus-suppression chrome\n// — neither lives in the vanilla CSS contract. Layer order\n// (`…, utilities, ui-kit-tokens, ui-kit-components`) puts the `ds-dialog__*`\n// rules after Tailwind's utilities, so the contract owns every visual\n// property and the animation utilities only touch `animation` / `outline`.\nconst OVERLAY_CLASSES = [\n 'ds-dialog__backdrop',\n 'ds:backdrop-blur-sm',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// Animation + focus chrome only — every visual property (position, centering,\n// bg, radius, elevation, padding, sizing) comes from `.ds-dialog__surface`.\nconst SURFACE_CHROME = [\n 'ds:focus-visible:outline-none',\n 'ds:data-[state=open]:animate-in ds:data-[state=open]:fade-in-0 ds:data-[state=open]:zoom-in-95',\n 'ds:data-[state=closed]:animate-out ds:data-[state=closed]:fade-out-0 ds:data-[state=closed]:zoom-out-95',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\n// CVA drives only the contract class names per size. `ds-dialog` is the host\n// marker (cascade-reset boundary); `ds-dialog__surface` carries the panel skin;\n// the `--sm` / `--lg` / `--fullscreen` modifiers shift only `max-inline-size`\n// (or the fullscreen geometry) and are defined alongside the base rule in\n// src/styles.css — so size, like the skin, lives in one place.\nconst contentVariants = cva(`ds-dialog ds-dialog__surface ${SURFACE_CHROME}`, {\n variants: {\n size: {\n sm: 'ds-dialog__surface--sm',\n md: '',\n lg: 'ds-dialog__surface--lg',\n fullscreen: 'ds-dialog__surface--fullscreen',\n },\n // `body` pins the header and footer and scrolls only `Dialog.Body` once\n // the content passes the height cap. `surface` (default) scrolls the\n // whole panel as one block.\n scroll: {\n surface: '',\n body: 'ds-dialog__surface--scroll-body',\n },\n },\n defaultVariants: { size: 'md', scroll: 'surface' },\n});\n\n// Curated agent-readiness handle — see dialog.agent.ts.\nexport interface DialogHandle {\n getIsOpen: () => boolean;\n open: () => void;\n close: () => void;\n}\n\nexport interface DialogRootProps extends ComponentPropsWithoutRef<\n typeof RadixDialog.Root\n> {\n /** Opaque instance id — forwarded to Dialog.Content as `data-component-id`. */\n id?: string;\n}\n\nconst DialogIdContext = createContext<string | undefined>(undefined);\n\nconst DialogRoot = ({\n children,\n id,\n open: openProp,\n defaultOpen,\n onOpenChange,\n ...props\n}: DialogRootProps) => {\n const [openRaw, setOpen] = useControllableState<boolean>({\n value: openProp,\n defaultValue: defaultOpen ?? false,\n onChange: onOpenChange,\n });\n const open = openRaw ?? false;\n\n const openRef = useRef(open);\n useEffect(() => {\n openRef.current = open;\n }, [open]);\n\n const handle = useMemo<DialogHandle>(\n () => ({\n getIsOpen: () => openRef.current,\n open: () => setOpen(true),\n close: () => setOpen(false),\n }),\n [setOpen],\n );\n useAgentRegistration(dialogAgent, handle, id);\n\n return (\n <DialogIdContext.Provider value={id}>\n <RadixDialog.Root open={open} onOpenChange={setOpen} {...props}>\n {children}\n </RadixDialog.Root>\n </DialogIdContext.Provider>\n );\n};\nDialogRoot.displayName = 'Dialog.Root';\n\nconst DialogTrigger = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Trigger>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Trigger ref={ref} {...props}>\n {children}\n </RadixDialog.Trigger>\n));\nDialogTrigger.displayName = 'Dialog.Trigger';\n\nconst DialogClose = forwardRef<\n HTMLButtonElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Close>\n>(({ children, ...props }, ref) => (\n <RadixDialog.Close ref={ref} {...props}>\n {children}\n </RadixDialog.Close>\n));\nDialogClose.displayName = 'Dialog.Close';\n\nexport interface DialogContentProps\n extends\n Omit<ComponentPropsWithoutRef<typeof RadixDialog.Content>, 'role'>,\n VariantProps<typeof contentVariants> {\n size?: 'sm' | 'md' | 'lg' | 'fullscreen';\n variant?: 'default' | 'alert' | 'confirmation';\n /**\n * Hide the top-right dismiss \"X\". The default is **variant-aware**: the X is\n * shown for `variant=\"default\"` and hidden for `variant=\"alert\"` /\n * `\"confirmation\"` (forced-choice surfaces, where the decision is made via\n * the explicit footer actions). An explicit value always wins — pass `false`\n * to force the X onto an alert, or `true` to suppress it on a default dialog.\n */\n hideCloseButton?: boolean;\n /**\n * What scrolls once the content passes the height cap (85dvh). `surface`\n * (default) scrolls the whole panel, title and footer included. `body`\n * keeps `Dialog.Header` and `Dialog.Footer` in view and scrolls only\n * `Dialog.Body`, so the content must sit in a `Dialog.Body`. Below 480px\n * of viewport height it falls back to scrolling the whole panel.\n */\n scroll?: 'surface' | 'body';\n className?: string;\n children: ReactNode;\n}\n\nconst DialogContent = forwardRef<HTMLDivElement, DialogContentProps>(\n (\n {\n size = 'md',\n variant = 'default',\n scroll = 'surface',\n hideCloseButton,\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const instanceId = useContext(DialogIdContext);\n // Only forward `role` when we actually need to override Radix's default\n // (`role=\"dialog\"`). Passing `role={undefined}` explicitly wins over\n // Radix's internal assignment and strips the attribute entirely.\n const roleOverride =\n variant === 'alert' ? { role: 'alertdialog' as const } : {};\n\n // Variant-aware close default: plain dialogs expose the dismiss X; alert\n // and confirmation dialogs are forced-choice (no X) so the decision is\n // made via the explicit footer actions. An explicit `hideCloseButton`\n // always wins.\n const closeHidden = hideCloseButton ?? variant !== 'default';\n\n return (\n <RadixDialog.Portal>\n <RadixDialog.Overlay\n data-component=\"dialog-overlay\"\n className={OVERLAY_CLASSES}\n />\n <RadixDialog.Content\n ref={ref}\n {...roleOverride}\n data-component=\"dialog\"\n data-component-id={instanceId}\n className={contentVariants({ size, scroll, className })}\n {...props}\n >\n {children}\n\n {!closeHidden && (\n // The close is a plain button carrying the `ds-dialog__close`\n // contract class — the SAME class a vanilla host renders. The CSS\n // (src/styles.css) owns its position, sizing, glyph size, hover\n // wash, and focus ring from tokens, so the React and non-React\n // close buttons are identical and can't drift.\n <RadixDialog.Close\n type=\"button\"\n className=\"ds-dialog__close\"\n aria-label={t('common.close', 'Close')}\n >\n <X aria-hidden=\"true\" />\n </RadixDialog.Close>\n )}\n </RadixDialog.Content>\n </RadixDialog.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\nconst DialogHeader = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds-dialog__header', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nDialogHeader.displayName = 'Dialog.Header';\n\n// Optional body slot. Carries the `ds-dialog__body` contract class — the SAME\n// class a vanilla host renders — so content / iframe slots match between the\n// React and non-React surfaces and can't drift. Additive: content placed\n// directly in Dialog.Content (without this wrapper) still works as before.\nconst DialogBody = forwardRef<HTMLDivElement, HTMLAttributes<HTMLDivElement>>(\n ({ className, ...props }, ref) => (\n <div\n ref={ref}\n className={['ds-dialog__body', className].filter(Boolean).join(' ')}\n {...props}\n />\n ),\n);\nDialogBody.displayName = 'Dialog.Body';\n\nconst DialogTitle = forwardRef<\n HTMLHeadingElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Title>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Title\n ref={ref}\n className={['ds-dialog__title type-title-card ds:break-words', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogTitle.displayName = 'Dialog.Title';\n\nconst DialogDescription = forwardRef<\n HTMLParagraphElement,\n ComponentPropsWithoutRef<typeof RadixDialog.Description>\n>(({ className, ...props }, ref) => (\n <RadixDialog.Description\n ref={ref}\n className={['type-body-sm ds:text-[var(--muted-foreground)]', className]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n));\nDialogDescription.displayName = 'Dialog.Description';\n\ninterface DialogFooterProps extends HTMLAttributes<HTMLDivElement> {\n divider?: boolean;\n}\n\nconst DialogFooter = forwardRef<HTMLDivElement, DialogFooterProps>(\n ({ className, divider = false, ...props }, ref) => (\n <div\n ref={ref}\n className={[\n 'ds:flex ds:items-center ds:justify-end ds:gap-[var(--spacing-sm)]',\n 'ds:mt-[var(--spacing-md)]',\n divider &&\n 'ds:border-t ds:border-[color:var(--border)] ds:pt-[var(--spacing-md)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nDialogFooter.displayName = 'Dialog.Footer';\n\nexport const Dialog = Object.assign(DialogRoot, {\n Root: DialogRoot,\n Trigger: DialogTrigger,\n Content: DialogContent,\n Header: DialogHeader,\n Title: DialogTitle,\n Description: DialogDescription,\n Body: DialogBody,\n Footer: DialogFooter,\n Close: DialogClose,\n});\n\nexport type { DialogFooterProps };\n"],"names":["dialogAgent","handle","OVERLAY_CLASSES","SURFACE_CHROME","contentVariants","cva","DialogIdContext","createContext","DialogRoot","children","id","openProp","defaultOpen","onOpenChange","props","openRaw","setOpen","useControllableState","open","openRef","useRef","useEffect","useMemo","useAgentRegistration","jsx","RadixDialog","DialogTrigger","forwardRef","ref","DialogClose","DialogContent","size","variant","scroll","hideCloseButton","className","t","useTranslation","instanceId","useContext","roleOverride","closeHidden","jsxs","X","DialogHeader","DialogBody","DialogTitle","DialogDescription","DialogFooter","divider","Dialog"],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { C as B } from "./card-DPmk26CL.js";
|
|
|
7
7
|
import { E as G } from "./empty-state-X0sVPfVo.js";
|
|
8
8
|
import { P as Y } from "./panel-header-D313n_9-.js";
|
|
9
9
|
import { P as J } from "./pdf-viewer-DUIsV9s5.js";
|
|
10
|
-
import { T as O, b as Q, c as X, a as Z } from "./tabs-
|
|
10
|
+
import { T as O, b as Q, c as X, a as Z } from "./tabs-BnRaLT0y.js";
|
|
11
11
|
import { u as ee } from "./registry-DvAUVLHh.js";
|
|
12
12
|
import { F as ie, a as te } from "./file-Cwe9VC1A.js";
|
|
13
13
|
import { F as se } from "./file-text-5yv6r2ls.js";
|
|
@@ -287,4 +287,4 @@ export {
|
|
|
287
287
|
ue as D,
|
|
288
288
|
de as d
|
|
289
289
|
};
|
|
290
|
-
//# sourceMappingURL=document-preview-
|
|
290
|
+
//# sourceMappingURL=document-preview-BrhMHNh8.js.map
|