@alfadocs/ui-kit-debug 0.31.0 → 0.31.3
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/{accordion-CNcodXuO.js → accordion-bSU21uTV.js} +3 -3
- package/dist/_chunks/{accordion-CNcodXuO.js.map → accordion-bSU21uTV.js.map} +1 -1
- package/dist/_chunks/{agenda-card-DO9_yogb.js → agenda-card-UJA6Arbs.js} +3 -3
- package/dist/_chunks/{agenda-card-DO9_yogb.js.map → agenda-card-UJA6Arbs.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-WLbfMip6.js → agenda-tray-1fAxNOMz.js} +4 -4
- package/dist/_chunks/{agenda-tray-WLbfMip6.js.map → agenda-tray-1fAxNOMz.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-BXlwNnWe.js → ai-prompt-input-C6sCr1Vi.js} +11 -10
- package/dist/_chunks/ai-prompt-input-C6sCr1Vi.js.map +1 -0
- package/dist/_chunks/{alia-sidebar-C-232sD7.js → alia-sidebar-BEoMl6UL.js} +9 -9
- package/dist/_chunks/{alia-sidebar-C-232sD7.js.map → alia-sidebar-BEoMl6UL.js.map} +1 -1
- package/dist/_chunks/ar-CEpIJtcO.js +399 -0
- package/dist/_chunks/ar-CEpIJtcO.js.map +1 -0
- package/dist/_chunks/{audio-recorder-DL800PE_.js → audio-recorder-C1rhKhSN.js} +114 -114
- package/dist/_chunks/audio-recorder-C1rhKhSN.js.map +1 -0
- package/dist/_chunks/audio-visualiser-l6zPd0AG.js +162 -0
- package/dist/_chunks/audio-visualiser-l6zPd0AG.js.map +1 -0
- package/dist/_chunks/{autocomplete-CUh0f7Dj.js → autocomplete-DIgdhCGJ.js} +2 -2
- package/dist/_chunks/{autocomplete-CUh0f7Dj.js.map → autocomplete-DIgdhCGJ.js.map} +1 -1
- package/dist/_chunks/{avatar-D_H4emLo.js → avatar-BNQNhoyL.js} +19 -18
- package/dist/_chunks/avatar-BNQNhoyL.js.map +1 -0
- package/dist/_chunks/{badge-CIjQ1Us1.js → badge-CptERaHx.js} +2 -2
- package/dist/_chunks/{badge-CIjQ1Us1.js.map → badge-CptERaHx.js.map} +1 -1
- package/dist/_chunks/{booking-Bhk9IYm3.js → booking-A4o9xI2n.js} +160 -149
- package/dist/_chunks/booking-A4o9xI2n.js.map +1 -0
- package/dist/_chunks/{breadcrumb--YI7lcHA.js → breadcrumb-CLlhx7qo.js} +2 -2
- package/dist/_chunks/{breadcrumb--YI7lcHA.js.map → breadcrumb-CLlhx7qo.js.map} +1 -1
- package/dist/_chunks/{button-group-Bh2g_Ng-.js → button-group-Ciq6J4IW.js} +15 -14
- package/dist/_chunks/button-group-Ciq6J4IW.js.map +1 -0
- package/dist/_chunks/{calendar-WWNx448i.js → calendar-YHFknAGv.js} +22 -22
- package/dist/_chunks/{calendar-WWNx448i.js.map → calendar-YHFknAGv.js.map} +1 -1
- package/dist/_chunks/{carousel.agent-C2Icc9_T.js → carousel.agent-DrX96W-1.js} +2 -2
- package/dist/_chunks/{carousel.agent-C2Icc9_T.js.map → carousel.agent-DrX96W-1.js.map} +1 -1
- package/dist/_chunks/{chart-BLvFl169.js → chart-DLkVn_ex.js} +2 -2
- package/dist/_chunks/{chart-BLvFl169.js.map → chart-DLkVn_ex.js.map} +1 -1
- package/dist/_chunks/{chat-container-izziXViv.js → chat-container-ogB4OskO.js} +24 -23
- package/dist/_chunks/chat-container-ogB4OskO.js.map +1 -0
- package/dist/_chunks/{chat-input-cyl_y9bh.js → chat-input-CQe7nR_v.js} +132 -118
- package/dist/_chunks/chat-input-CQe7nR_v.js.map +1 -0
- package/dist/_chunks/{chat-message-fg221-yx.js → chat-message-D53_fH2w.js} +2 -2
- package/dist/_chunks/{chat-message-fg221-yx.js.map → chat-message-D53_fH2w.js.map} +1 -1
- package/dist/_chunks/{checkbox-Dgp_cfUr.js → checkbox-DRcOdmXv.js} +3 -3
- package/dist/_chunks/{checkbox-Dgp_cfUr.js.map → checkbox-DRcOdmXv.js.map} +1 -1
- package/dist/_chunks/{checkbox-group-eVowqKcT.js → checkbox-group-CpUwlHug.js} +3 -3
- package/dist/_chunks/{checkbox-group-eVowqKcT.js.map → checkbox-group-CpUwlHug.js.map} +1 -1
- package/dist/_chunks/{collapsible-hHiyZp0b.js → collapsible-CERONory.js} +2 -2
- package/dist/_chunks/{collapsible-hHiyZp0b.js.map → collapsible-CERONory.js.map} +1 -1
- package/dist/_chunks/{color-picker-Bm-gzpsh.js → color-picker-9tL7pz5y.js} +192 -181
- package/dist/_chunks/color-picker-9tL7pz5y.js.map +1 -0
- package/dist/_chunks/{combobox-Da9eq00i.js → combobox-BC-DFx8G.js} +31 -30
- package/dist/_chunks/combobox-BC-DFx8G.js.map +1 -0
- package/dist/_chunks/{command-palette-11BieSNq.js → command-palette-BiPAAno-.js} +125 -123
- package/dist/_chunks/command-palette-BiPAAno-.js.map +1 -0
- package/dist/_chunks/{copy-field-BAF4mt9h.js → copy-field-CCq7j6Zc.js} +2 -2
- package/dist/_chunks/{copy-field-BAF4mt9h.js.map → copy-field-CCq7j6Zc.js.map} +1 -1
- package/dist/_chunks/{date-picker-D0Ry1dMz.js → date-picker-B94HAV4A.js} +4 -4
- package/dist/_chunks/{date-picker-D0Ry1dMz.js.map → date-picker-B94HAV4A.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-DYgHzMOo.js → date-range-picker-D4dgDlLU.js} +73 -73
- package/dist/_chunks/date-range-picker-D4dgDlLU.js.map +1 -0
- package/dist/_chunks/{date-time-picker-CGmGtcyc.js → date-time-picker-D1GEzf8p.js} +5 -5
- package/dist/_chunks/{date-time-picker-CGmGtcyc.js.map → date-time-picker-D1GEzf8p.js.map} +1 -1
- package/dist/_chunks/de-Dfbeau59.js +477 -0
- package/dist/_chunks/de-Dfbeau59.js.map +1 -0
- package/dist/_chunks/{description-list-CWjnaDGn.js → description-list-BEbK2g93.js} +2 -2
- package/dist/_chunks/{description-list-CWjnaDGn.js.map → description-list-BEbK2g93.js.map} +1 -1
- package/dist/_chunks/{dialog-C-lTGVkB.js → dialog-Cee13rHU.js} +3 -3
- package/dist/_chunks/{dialog-C-lTGVkB.js.map → dialog-Cee13rHU.js.map} +1 -1
- package/dist/_chunks/{dropdown-menu-DZxwF23X.js → dropdown-menu-BC5ZdOMo.js} +3 -3
- package/dist/_chunks/{dropdown-menu-DZxwF23X.js.map → dropdown-menu-BC5ZdOMo.js.map} +1 -1
- package/dist/_chunks/{editable-currency-cell-renderer-Od3Q-Y8J.js → editable-currency-cell-renderer-BpicmolK.js} +314 -317
- package/dist/_chunks/editable-currency-cell-renderer-BpicmolK.js.map +1 -0
- package/dist/_chunks/el-Dro3J7CP.js +373 -0
- package/dist/_chunks/el-Dro3J7CP.js.map +1 -0
- package/dist/_chunks/{email-input-DvJ_kPKL.js → email-input-lQivsFrw.js} +3 -3
- package/dist/_chunks/{email-input-DvJ_kPKL.js.map → email-input-lQivsFrw.js.map} +1 -1
- package/dist/_chunks/es-Dvg8u70B.js +373 -0
- package/dist/_chunks/es-Dvg8u70B.js.map +1 -0
- package/dist/_chunks/{file-upload-DxAQprcU.js → file-upload-CdozCPct.js} +226 -233
- package/dist/_chunks/file-upload-CdozCPct.js.map +1 -0
- package/dist/_chunks/fr-VOGjBSPP.js +338 -0
- package/dist/_chunks/fr-VOGjBSPP.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-B9c8Ylww.js → freemium-paywall-D1N02Oam.js} +4 -4
- package/dist/_chunks/{freemium-paywall-B9c8Ylww.js.map → freemium-paywall-D1N02Oam.js.map} +1 -1
- package/dist/_chunks/{header-DDj7uGD-.js → header-CTZWX-tm.js} +2 -2
- package/dist/_chunks/{header-DDj7uGD-.js.map → header-CTZWX-tm.js.map} +1 -1
- package/dist/_chunks/hi-BSDxWU_y.js +433 -0
- package/dist/_chunks/hi-BSDxWU_y.js.map +1 -0
- package/dist/_chunks/{icon-button-DPEqBKBQ.js → icon-button-CKEOrN37.js} +2 -2
- package/dist/_chunks/{icon-button-DPEqBKBQ.js.map → icon-button-CKEOrN37.js.map} +1 -1
- package/dist/_chunks/{icon-button-group-DeV3FpNY.js → icon-button-group-C48khLE0.js} +23 -22
- package/dist/_chunks/icon-button-group-C48khLE0.js.map +1 -0
- package/dist/_chunks/{isSameDay-DHG8Xade.js → isSameDay-DUEiAT0G.js} +2 -2
- package/dist/_chunks/{isSameDay-DHG8Xade.js.map → isSameDay-DUEiAT0G.js.map} +1 -1
- package/dist/_chunks/isSameWeek-Dfzu29cW.js +14 -0
- package/dist/_chunks/isSameWeek-Dfzu29cW.js.map +1 -0
- package/dist/_chunks/it-CuonvcI_.js +401 -0
- package/dist/_chunks/it-CuonvcI_.js.map +1 -0
- package/dist/_chunks/ja-DO57gIOT.js +366 -0
- package/dist/_chunks/ja-DO57gIOT.js.map +1 -0
- package/dist/_chunks/{key-value-pair-BvDY3zuc.js → key-value-pair-C8DaR3Xs.js} +2 -2
- package/dist/_chunks/{key-value-pair-BvDY3zuc.js.map → key-value-pair-C8DaR3Xs.js.map} +1 -1
- package/dist/_chunks/{list-BdvDctBz.js → list-BOwqwy03.js} +44 -43
- package/dist/_chunks/list-BOwqwy03.js.map +1 -0
- package/dist/_chunks/{locale-picker-CY89MChR.js → locale-picker-D99UyZVJ.js} +4 -4
- package/dist/_chunks/{locale-picker-CY89MChR.js.map → locale-picker-D99UyZVJ.js.map} +1 -1
- package/dist/_chunks/{map-view-DyB8tr6c.js → map-view-WEWqXzof.js} +569 -557
- package/dist/_chunks/{map-view-DyB8tr6c.js.map → map-view-WEWqXzof.js.map} +1 -1
- package/dist/_chunks/{message-card-D6iyPacd.js → message-card-BbRhZkDI.js} +3 -3
- package/dist/_chunks/{message-card-D6iyPacd.js.map → message-card-BbRhZkDI.js.map} +1 -1
- package/dist/_chunks/{message-tray-Bh-0ra-Y.js → message-tray-B762TKuv.js} +11 -10
- package/dist/_chunks/message-tray-B762TKuv.js.map +1 -0
- package/dist/_chunks/{multi-select-dSe6Xtc4.js → multi-select-DOLO3K_z.js} +26 -25
- package/dist/_chunks/multi-select-DOLO3K_z.js.map +1 -0
- package/dist/_chunks/{navigation-menu-CyS1fBJ7.js → navigation-menu-C6lBYVv9.js} +3 -3
- package/dist/_chunks/{navigation-menu-CyS1fBJ7.js.map → navigation-menu-C6lBYVv9.js.map} +1 -1
- package/dist/_chunks/nl-DjPaaWaW.js +326 -0
- package/dist/_chunks/nl-DjPaaWaW.js.map +1 -0
- package/dist/_chunks/{notification-card-vaMaA7Wa.js → notification-card-DMdO4g54.js} +2 -2
- package/dist/_chunks/{notification-card-vaMaA7Wa.js.map → notification-card-DMdO4g54.js.map} +1 -1
- package/dist/_chunks/{notification-tray-Cnum6LwM.js → notification-tray-Dl3FTleW.js} +17 -16
- package/dist/_chunks/notification-tray-Dl3FTleW.js.map +1 -0
- package/dist/_chunks/{number-input-BZXu6bPY.js → number-input-Dj5L3pXK.js} +2 -2
- package/dist/_chunks/{number-input-BZXu6bPY.js.map → number-input-Dj5L3pXK.js.map} +1 -1
- package/dist/_chunks/{otp-input-BDF_iNpa.js → otp-input-BEg_sn8A.js} +2 -2
- package/dist/_chunks/{otp-input-BDF_iNpa.js.map → otp-input-BEg_sn8A.js.map} +1 -1
- package/dist/_chunks/{pagination-BWaXF7W0.js → pagination-DQOgnxxw.js} +2 -2
- package/dist/_chunks/{pagination-BWaXF7W0.js.map → pagination-DQOgnxxw.js.map} +1 -1
- package/dist/_chunks/{parseISO-Dk4xa7q6.js → parseISO-DEpUNwxZ.js} +2 -2
- package/dist/_chunks/{parseISO-Dk4xa7q6.js.map → parseISO-DEpUNwxZ.js.map} +1 -1
- package/dist/_chunks/{patient-search-ZpHN-pgJ.js → patient-search-hFiYbqcl.js} +8 -8
- package/dist/_chunks/{patient-search-ZpHN-pgJ.js.map → patient-search-hFiYbqcl.js.map} +1 -1
- package/dist/_chunks/{patient-shell-CYaNkbA1.js → patient-shell-CDvMw_Nk.js} +6 -6
- package/dist/_chunks/{patient-shell-CYaNkbA1.js.map → patient-shell-CDvMw_Nk.js.map} +1 -1
- package/dist/_chunks/{payment-form-Ds3rxvad.js → payment-form-D5rgnZu7.js} +2 -2
- package/dist/_chunks/{payment-form-Ds3rxvad.js.map → payment-form-D5rgnZu7.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer-CIuaocnq.js → pdf-viewer-DvtEHcEP.js} +347 -320
- package/dist/_chunks/{pdf-viewer-CIuaocnq.js.map → pdf-viewer-DvtEHcEP.js.map} +1 -1
- package/dist/_chunks/{phone-input-DKSHX7NQ.js → phone-input-DfZbPPvh.js} +217 -201
- package/dist/_chunks/phone-input-DfZbPPvh.js.map +1 -0
- package/dist/_chunks/pl-Cl4lOx2N.js +514 -0
- package/dist/_chunks/pl-Cl4lOx2N.js.map +1 -0
- package/dist/_chunks/{popover-BfHSBEKq.js → popover-Devce-tT.js} +3 -3
- package/dist/_chunks/{popover-BfHSBEKq.js.map → popover-Devce-tT.js.map} +1 -1
- package/dist/_chunks/practice-results-RPL64j8E.js +1582 -0
- package/dist/_chunks/practice-results-RPL64j8E.js.map +1 -0
- package/dist/_chunks/{privacy-lock-C6Ra5m3p.js → privacy-lock-DD-wHxBg.js} +3 -3
- package/dist/_chunks/{privacy-lock-C6Ra5m3p.js.map → privacy-lock-DD-wHxBg.js.map} +1 -1
- package/dist/_chunks/{progress-B-PSO5OS.js → progress-kzIRcdaq.js} +11 -10
- package/dist/_chunks/progress-kzIRcdaq.js.map +1 -0
- package/dist/_chunks/pt-D7qO5CzD.js +370 -0
- package/dist/_chunks/pt-D7qO5CzD.js.map +1 -0
- package/dist/_chunks/{public-footer.agent-Bc99tE5Z.js → public-footer.agent-Bh0rnx4i.js} +21 -14
- package/dist/_chunks/public-footer.agent-Bh0rnx4i.js.map +1 -0
- package/dist/_chunks/{public-header.agent-B-B0WDAi.js → public-header.agent-B2dDg2_d.js} +3 -3
- package/dist/_chunks/{public-header.agent-B-B0WDAi.js.map → public-header.agent-B2dDg2_d.js.map} +1 -1
- package/dist/_chunks/{radio-i4ogu3cq.js → radio-TWf9Q-mp.js} +2 -2
- package/dist/_chunks/{radio-i4ogu3cq.js.map → radio-TWf9Q-mp.js.map} +1 -1
- package/dist/_chunks/{radio-group-CTlGc36r.js → radio-group-BcF92GEF.js} +4 -4
- package/dist/_chunks/{radio-group-CTlGc36r.js.map → radio-group-BcF92GEF.js.map} +1 -1
- package/dist/_chunks/{react-day-picker-D3yzgvDB.js → react-day-picker-DsjfS7uI.js} +662 -615
- package/dist/_chunks/{react-day-picker-D3yzgvDB.js.map → react-day-picker-DsjfS7uI.js.map} +1 -1
- package/dist/_chunks/recaptcha-widget-CFYyLSEX.js +221 -0
- package/dist/_chunks/recaptcha-widget-CFYyLSEX.js.map +1 -0
- package/dist/_chunks/registry-nPAVE19X.js +21 -0
- package/dist/_chunks/registry-nPAVE19X.js.map +1 -0
- package/dist/_chunks/{resizable-COV-cnth.js → resizable-3vzqDlg6.js} +29 -28
- package/dist/_chunks/resizable-3vzqDlg6.js.map +1 -0
- package/dist/_chunks/{reviews-panel-bKEUKSic.js → reviews-panel-yanuBZs-.js} +4 -4
- package/dist/_chunks/{reviews-panel-bKEUKSic.js.map → reviews-panel-yanuBZs-.js.map} +1 -1
- package/dist/_chunks/{rich-text-editor-J-wAz9eN.js → rich-text-editor-CHmr9Bz8.js} +2 -2
- package/dist/_chunks/{rich-text-editor-J-wAz9eN.js.map → rich-text-editor-CHmr9Bz8.js.map} +1 -1
- package/dist/_chunks/ro-CP2-VJ_O.js +361 -0
- package/dist/_chunks/ro-CP2-VJ_O.js.map +1 -0
- package/dist/_chunks/ru-RPn9_Lpq.js +561 -0
- package/dist/_chunks/ru-RPn9_Lpq.js.map +1 -0
- package/dist/_chunks/{scroll-area-DEDU-lp-.js → scroll-area-BWqCkEGz.js} +2 -2
- package/dist/_chunks/{scroll-area-DEDU-lp-.js.map → scroll-area-BWqCkEGz.js.map} +1 -1
- package/dist/_chunks/{search-bar-BRMW1-WG.js → search-bar-CP6wUJFY.js} +3 -3
- package/dist/_chunks/{search-bar-BRMW1-WG.js.map → search-bar-CP6wUJFY.js.map} +1 -1
- package/dist/_chunks/{search-input-CIA6pPfn.js → search-input-C1C3jQpD.js} +24 -23
- package/dist/_chunks/search-input-C1C3jQpD.js.map +1 -0
- package/dist/_chunks/{select-C92AT_OZ.js → select-hsCaJSX3.js} +3 -3
- package/dist/_chunks/{select-C92AT_OZ.js.map → select-hsCaJSX3.js.map} +1 -1
- package/dist/_chunks/{sheet-D8Yl0nKR.js → sheet-BV-yuLE2.js} +3 -3
- package/dist/_chunks/{sheet-D8Yl0nKR.js.map → sheet-BV-yuLE2.js.map} +1 -1
- package/dist/_chunks/{sidebar-DkyC6GvS.js → sidebar-BbR8f6oe.js} +3 -3
- package/dist/_chunks/{sidebar-DkyC6GvS.js.map → sidebar-BbR8f6oe.js.map} +1 -1
- package/dist/_chunks/{signature-capture-DjMlFOzS.js → signature-capture-C-fF71xI.js} +213 -205
- package/dist/_chunks/signature-capture-C-fF71xI.js.map +1 -0
- package/dist/_chunks/{slider-CfEzeseL.js → slider-BHWzXdjt.js} +3 -3
- package/dist/_chunks/{slider-CfEzeseL.js.map → slider-BHWzXdjt.js.map} +1 -1
- package/dist/_chunks/{slot-grid-Q94gVmhn.js → slot-grid-Dz13dH82.js} +4 -4
- package/dist/_chunks/{slot-grid-Q94gVmhn.js.map → slot-grid-Dz13dH82.js.map} +1 -1
- package/dist/_chunks/{sparkline-B5Ms55PZ.js → sparkline-DEROcSl0.js} +2 -2
- package/dist/_chunks/{sparkline-B5Ms55PZ.js.map → sparkline-DEROcSl0.js.map} +1 -1
- package/dist/_chunks/sq-AQvefouo.js +355 -0
- package/dist/_chunks/sq-AQvefouo.js.map +1 -0
- package/dist/_chunks/{stepper-progress-jFY8BSf7.js → stepper-progress-DDjq5nei.js} +16 -15
- package/dist/_chunks/stepper-progress-DDjq5nei.js.map +1 -0
- package/dist/_chunks/streaming-text-GH07yIYh.js +127 -0
- package/dist/_chunks/streaming-text-GH07yIYh.js.map +1 -0
- package/dist/_chunks/sv-zkx9eBtD.js +376 -0
- package/dist/_chunks/sv-zkx9eBtD.js.map +1 -0
- package/dist/_chunks/{switch-D916VW86.js → switch-BJ6HD3Mn.js} +2 -2
- package/dist/_chunks/{switch-D916VW86.js.map → switch-BJ6HD3Mn.js.map} +1 -1
- package/dist/_chunks/{tabs-aEQfQV3x.js → tabs-BpPYVme_.js} +4 -4
- package/dist/_chunks/{tabs-aEQfQV3x.js.map → tabs-BpPYVme_.js.map} +1 -1
- package/dist/_chunks/{tag-bBPAvXyh.js → tag-CyoaEmf_.js} +2 -2
- package/dist/_chunks/{tag-bBPAvXyh.js.map → tag-CyoaEmf_.js.map} +1 -1
- package/dist/_chunks/{task-tray-6NlryfMJ.js → task-tray-DRK0b0Qb.js} +3 -3
- package/dist/_chunks/{task-tray-6NlryfMJ.js.map → task-tray-DRK0b0Qb.js.map} +1 -1
- package/dist/_chunks/{text-area-D5GAe8pV.js → text-area-BIx0tZ05.js} +27 -26
- package/dist/_chunks/text-area-BIx0tZ05.js.map +1 -0
- package/dist/_chunks/{text-input-CakysYnD.js → text-input-BaClJL8Y.js} +2 -2
- package/dist/_chunks/{text-input-CakysYnD.js.map → text-input-BaClJL8Y.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-JoeMs_ws.js → theme-toggle-DpC28kt5.js} +6 -6
- package/dist/_chunks/{theme-toggle-JoeMs_ws.js.map → theme-toggle-DpC28kt5.js.map} +1 -1
- package/dist/_chunks/{time-picker-DeVZkIY2.js → time-picker-B5umYwfv.js} +2 -2
- package/dist/_chunks/{time-picker-DeVZkIY2.js.map → time-picker-B5umYwfv.js.map} +1 -1
- package/dist/_chunks/{timeline-CR7HjZCK.js → timeline-D0Wo7v_o.js} +3 -3
- package/dist/_chunks/{timeline-CR7HjZCK.js.map → timeline-D0Wo7v_o.js.map} +1 -1
- package/dist/_chunks/{toast.agent-DVpKt38p.js → toast.agent-WHHfw5VX.js} +322 -320
- package/dist/_chunks/{toast.agent-DVpKt38p.js.map → toast.agent-WHHfw5VX.js.map} +1 -1
- package/dist/_chunks/{tooltip-ClJd0ciy.js → tooltip-DvmfrNvB.js} +29 -20
- package/dist/_chunks/tooltip-DvmfrNvB.js.map +1 -0
- package/dist/_chunks/{tooth-scheme-3mITSXiZ.js → tooth-scheme-CxlsLjfN.js} +2 -2
- package/dist/_chunks/{tooth-scheme-3mITSXiZ.js.map → tooth-scheme-CxlsLjfN.js.map} +1 -1
- package/dist/_chunks/tr-Dmr412Ac.js +378 -0
- package/dist/_chunks/tr-Dmr412Ac.js.map +1 -0
- package/dist/_chunks/{transcript-panel-QUQ9XJmf.js → transcript-panel-DyhTpAP7.js} +21 -20
- package/dist/_chunks/transcript-panel-DyhTpAP7.js.map +1 -0
- package/dist/_chunks/{use-direction-D6rvvG9G.js → use-direction-Dp8h70PP.js} +7 -6
- package/dist/_chunks/use-direction-Dp8h70PP.js.map +1 -0
- package/dist/_chunks/use-isomorphic-layout-effect-BGfaCOP1.js +6 -0
- package/dist/_chunks/use-isomorphic-layout-effect-BGfaCOP1.js.map +1 -0
- package/dist/_chunks/use-media-query-CcAx5SMM.js +16 -0
- package/dist/_chunks/use-media-query-CcAx5SMM.js.map +1 -0
- package/dist/_chunks/{use-password-requirements-E0sSfx5X.js → use-password-requirements-DsgduV1x.js} +3 -3
- package/dist/_chunks/{use-password-requirements-E0sSfx5X.js.map → use-password-requirements-DsgduV1x.js.map} +1 -1
- package/dist/_chunks/use-scroll-to-first-error-4Za-u5Nw.js +43 -0
- package/dist/_chunks/use-scroll-to-first-error-4Za-u5Nw.js.map +1 -0
- package/dist/_chunks/{workflow-map-DlWBJJBt.js → workflow-map-BSvQS3be.js} +6 -6
- package/dist/_chunks/{workflow-map-DlWBJJBt.js.map → workflow-map-BSvQS3be.js.map} +1 -1
- package/dist/_chunks/zh-CN-DxVt64Zk.js +388 -0
- package/dist/_chunks/zh-CN-DxVt64Zk.js.map +1 -0
- package/dist/agent/registry.d.ts +1 -6
- package/dist/agent/registry.d.ts.map +1 -1
- package/dist/agent-catalog.json +1 -1
- package/dist/components/_shared/date-locale.d.ts +7 -2
- package/dist/components/_shared/date-locale.d.ts.map +1 -1
- package/dist/components/_shared/index.d.ts +1 -1
- package/dist/components/_shared/index.d.ts.map +1 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/index.js +1 -1
- package/dist/components/ai-prompt-input/ai-prompt-input.d.ts.map +1 -1
- package/dist/components/ai-prompt-input/index.js +1 -1
- package/dist/components/audio-recorder/audio-recorder.d.ts.map +1 -1
- package/dist/components/audio-recorder/index.js +1 -1
- package/dist/components/audio-visualiser/audio-visualiser.d.ts.map +1 -1
- package/dist/components/audio-visualiser/index.js +1 -1
- package/dist/components/autocomplete/index.js +1 -1
- package/dist/components/avatar/avatar.d.ts.map +1 -1
- package/dist/components/avatar/index.js +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/booking/index.js +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/button/index.js +1 -1
- package/dist/components/button-group/button-group.d.ts.map +1 -1
- package/dist/components/button-group/index.js +1 -1
- package/dist/components/calendar/calendar.d.ts.map +1 -1
- package/dist/components/calendar/index.js +1 -1
- package/dist/components/carousel/index.js +1 -1
- package/dist/components/chart/index.js +1 -1
- package/dist/components/chat-container/chat-container.d.ts.map +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/chat-input.d.ts.map +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/collapsible/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/combobox/combobox.d.ts.map +1 -1
- package/dist/components/combobox/index.js +1 -1
- package/dist/components/command-palette/command-palette.d.ts.map +1 -1
- package/dist/components/command-palette/index.js +1 -1
- package/dist/components/copy-field/index.js +1 -1
- package/dist/components/data-table/cell-renderers/color-dot-cell-renderer.d.ts.map +1 -1
- package/dist/components/data-table/data-table.d.ts.map +1 -1
- package/dist/components/data-table/index.js +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/index.js +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/dropdown-menu/index.js +1 -1
- package/dist/components/email-input/index.js +1 -1
- package/dist/components/file-upload/file-upload.d.ts.map +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/header/index.js +1 -1
- package/dist/components/header-settings/index.js +6 -6
- package/dist/components/icon-button/index.js +1 -1
- package/dist/components/icon-button-group/icon-button-group.d.ts.map +1 -1
- package/dist/components/icon-button-group/index.js +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/list/index.js +1 -1
- package/dist/components/list/list.d.ts.map +1 -1
- package/dist/components/locale-picker/index.js +1 -1
- package/dist/components/map-view/index.js +1 -1
- package/dist/components/map-view/map-view.d.ts +10 -0
- package/dist/components/map-view/map-view.d.ts.map +1 -1
- package/dist/components/message-card/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/multi-select/index.js +1 -1
- package/dist/components/multi-select/multi-select.d.ts.map +1 -1
- package/dist/components/navigation-menu/index.js +1 -1
- package/dist/components/notification-card/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/number-input/index.js +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/password-input/index.js +1 -1
- package/dist/components/patient-search/index.js +1 -1
- package/dist/components/payment-form/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/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/practice-results/index.js +1 -1
- package/dist/components/practice-results/practice-results.d.ts +23 -1
- package/dist/components/practice-results/practice-results.d.ts.map +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/progress/index.js +1 -1
- package/dist/components/progress/progress.d.ts.map +1 -1
- package/dist/components/public-footer/index.js +1 -1
- package/dist/components/public-footer/public-footer.d.ts.map +1 -1
- package/dist/components/public-header/index.js +1 -1
- package/dist/components/radio/index.js +1 -1
- package/dist/components/radio-group/index.js +2 -2
- package/dist/components/recaptcha-widget/index.js +1 -1
- package/dist/components/recaptcha-widget/recaptcha-widget.d.ts.map +1 -1
- package/dist/components/resizable/index.js +1 -1
- package/dist/components/resizable/resizable.d.ts.map +1 -1
- package/dist/components/reviews-panel/index.js +1 -1
- package/dist/components/rich-text-editor/index.js +1 -1
- package/dist/components/scroll-area/index.js +1 -1
- package/dist/components/search-bar/index.js +1 -1
- package/dist/components/search-input/index.js +1 -1
- package/dist/components/select/index.js +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/signature-capture/index.js +1 -1
- package/dist/components/signature-capture/signature-capture.d.ts.map +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/sparkline/index.js +1 -1
- package/dist/components/stepper-progress/index.js +1 -1
- package/dist/components/stepper-progress/stepper-progress.d.ts.map +1 -1
- package/dist/components/streaming-text/index.js +1 -1
- package/dist/components/streaming-text/streaming-text.d.ts.map +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tag/index.js +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-area/text-area.d.ts.map +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/toast/toast.d.ts.map +1 -1
- package/dist/components/tooltip/index.js +1 -1
- package/dist/components/tooltip/tooltip.d.ts.map +1 -1
- package/dist/components/tooth-scheme/index.js +1 -1
- package/dist/components/transcript-panel/index.js +1 -1
- package/dist/components/transcript-panel/transcript-panel.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/hooks/index.js +69 -66
- package/dist/hooks/index.js.map +1 -1
- package/dist/hooks/use-debounced-value.d.ts.map +1 -1
- package/dist/hooks/use-direction.d.ts.map +1 -1
- package/dist/hooks/use-focus-trap.d.ts.map +1 -1
- package/dist/hooks/use-scroll-to-first-error.d.ts.map +1 -1
- package/dist/i18n/locales/ar.d.ts +92 -0
- package/dist/i18n/locales/ar.d.ts.map +1 -1
- package/dist/i18n/locales/ar.js +82 -0
- package/dist/i18n/locales/ar.js.map +1 -1
- package/dist/i18n/locales/de.d.ts +92 -0
- package/dist/i18n/locales/de.d.ts.map +1 -1
- package/dist/i18n/locales/de.js +81 -0
- package/dist/i18n/locales/de.js.map +1 -1
- package/dist/i18n/locales/el.d.ts +92 -0
- package/dist/i18n/locales/el.d.ts.map +1 -1
- package/dist/i18n/locales/el.js +82 -0
- package/dist/i18n/locales/el.js.map +1 -1
- package/dist/i18n/locales/en.d.ts +27 -0
- package/dist/i18n/locales/en.d.ts.map +1 -1
- package/dist/i18n/locales/en.js +27 -0
- package/dist/i18n/locales/en.js.map +1 -1
- package/dist/i18n/locales/es.d.ts +92 -0
- package/dist/i18n/locales/es.d.ts.map +1 -1
- package/dist/i18n/locales/es.js +81 -0
- package/dist/i18n/locales/es.js.map +1 -1
- package/dist/i18n/locales/fr.d.ts +92 -0
- package/dist/i18n/locales/fr.d.ts.map +1 -1
- package/dist/i18n/locales/fr.js +81 -0
- package/dist/i18n/locales/fr.js.map +1 -1
- package/dist/i18n/locales/hi.d.ts +92 -0
- package/dist/i18n/locales/hi.d.ts.map +1 -1
- package/dist/i18n/locales/hi.js +82 -0
- package/dist/i18n/locales/hi.js.map +1 -1
- package/dist/i18n/locales/it.d.ts +92 -0
- package/dist/i18n/locales/it.d.ts.map +1 -1
- package/dist/i18n/locales/it.js +81 -0
- package/dist/i18n/locales/it.js.map +1 -1
- package/dist/i18n/locales/ja.d.ts +92 -0
- package/dist/i18n/locales/ja.d.ts.map +1 -1
- package/dist/i18n/locales/ja.js +82 -0
- package/dist/i18n/locales/ja.js.map +1 -1
- package/dist/i18n/locales/nl.d.ts +92 -0
- package/dist/i18n/locales/nl.d.ts.map +1 -1
- package/dist/i18n/locales/nl.js +81 -0
- package/dist/i18n/locales/nl.js.map +1 -1
- package/dist/i18n/locales/pl.d.ts +92 -0
- package/dist/i18n/locales/pl.d.ts.map +1 -1
- package/dist/i18n/locales/pl.js +82 -0
- package/dist/i18n/locales/pl.js.map +1 -1
- package/dist/i18n/locales/pt.d.ts +92 -0
- package/dist/i18n/locales/pt.d.ts.map +1 -1
- package/dist/i18n/locales/pt.js +83 -0
- package/dist/i18n/locales/pt.js.map +1 -1
- package/dist/i18n/locales/ro.d.ts +92 -0
- package/dist/i18n/locales/ro.d.ts.map +1 -1
- package/dist/i18n/locales/ro.js +82 -0
- package/dist/i18n/locales/ro.js.map +1 -1
- package/dist/i18n/locales/ru.d.ts +92 -0
- package/dist/i18n/locales/ru.d.ts.map +1 -1
- package/dist/i18n/locales/ru.js +82 -0
- package/dist/i18n/locales/ru.js.map +1 -1
- package/dist/i18n/locales/sq.d.ts +92 -0
- package/dist/i18n/locales/sq.d.ts.map +1 -1
- package/dist/i18n/locales/sq.js +82 -0
- package/dist/i18n/locales/sq.js.map +1 -1
- package/dist/i18n/locales/sv.d.ts +92 -0
- package/dist/i18n/locales/sv.d.ts.map +1 -1
- package/dist/i18n/locales/sv.js +82 -0
- package/dist/i18n/locales/sv.js.map +1 -1
- package/dist/i18n/locales/tr.d.ts +92 -0
- package/dist/i18n/locales/tr.d.ts.map +1 -1
- package/dist/i18n/locales/tr.js +82 -0
- package/dist/i18n/locales/tr.js.map +1 -1
- package/dist/i18n/locales/zh.d.ts +92 -0
- package/dist/i18n/locales/zh.d.ts.map +1 -1
- package/dist/i18n/locales/zh.js +82 -0
- package/dist/i18n/locales/zh.js.map +1 -1
- package/dist/index.js +541 -540
- package/dist/index.js.map +1 -1
- package/dist/locales/ar.json +92 -0
- package/dist/locales/de.json +92 -0
- package/dist/locales/el.json +92 -0
- package/dist/locales/en.json +27 -0
- package/dist/locales/es.json +92 -0
- package/dist/locales/fr.json +92 -0
- package/dist/locales/hi.json +92 -0
- package/dist/locales/it.json +92 -0
- package/dist/locales/ja.json +92 -0
- package/dist/locales/nl.json +92 -0
- package/dist/locales/pl.json +92 -0
- package/dist/locales/pt.json +92 -0
- package/dist/locales/ro.json +92 -0
- package/dist/locales/ru.json +92 -0
- package/dist/locales/sq.json +92 -0
- package/dist/locales/sv.json +92 -0
- package/dist/locales/tr.json +92 -0
- package/dist/locales/zh.json +92 -0
- package/dist/patterns/alia-assistant/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/dist/tokens.css +1 -1
- package/package.json +2 -2
- package/dist/_chunks/ai-prompt-input-BXlwNnWe.js.map +0 -1
- package/dist/_chunks/audio-recorder-DL800PE_.js.map +0 -1
- package/dist/_chunks/audio-visualiser-I-T4Z7EU.js +0 -145
- package/dist/_chunks/audio-visualiser-I-T4Z7EU.js.map +0 -1
- package/dist/_chunks/avatar-D_H4emLo.js.map +0 -1
- package/dist/_chunks/booking-Bhk9IYm3.js.map +0 -1
- package/dist/_chunks/button-group-Bh2g_Ng-.js.map +0 -1
- package/dist/_chunks/chat-container-izziXViv.js.map +0 -1
- package/dist/_chunks/chat-input-cyl_y9bh.js.map +0 -1
- package/dist/_chunks/color-picker-Bm-gzpsh.js.map +0 -1
- package/dist/_chunks/combobox-Da9eq00i.js.map +0 -1
- package/dist/_chunks/command-palette-11BieSNq.js.map +0 -1
- package/dist/_chunks/date-range-picker-DYgHzMOo.js.map +0 -1
- package/dist/_chunks/editable-currency-cell-renderer-Od3Q-Y8J.js.map +0 -1
- package/dist/_chunks/file-upload-DxAQprcU.js.map +0 -1
- package/dist/_chunks/icon-button-group-DeV3FpNY.js.map +0 -1
- package/dist/_chunks/list-BdvDctBz.js.map +0 -1
- package/dist/_chunks/message-tray-Bh-0ra-Y.js.map +0 -1
- package/dist/_chunks/multi-select-dSe6Xtc4.js.map +0 -1
- package/dist/_chunks/notification-tray-Cnum6LwM.js.map +0 -1
- package/dist/_chunks/phone-input-DKSHX7NQ.js.map +0 -1
- package/dist/_chunks/practice-results-CEKjwsgS.js +0 -1441
- package/dist/_chunks/practice-results-CEKjwsgS.js.map +0 -1
- package/dist/_chunks/progress-B-PSO5OS.js.map +0 -1
- package/dist/_chunks/public-footer.agent-Bc99tE5Z.js.map +0 -1
- package/dist/_chunks/recaptcha-widget-BtBNb6tB.js +0 -192
- package/dist/_chunks/recaptcha-widget-BtBNb6tB.js.map +0 -1
- package/dist/_chunks/registry-C9nwlNyL.js +0 -21
- package/dist/_chunks/registry-C9nwlNyL.js.map +0 -1
- package/dist/_chunks/resizable-COV-cnth.js.map +0 -1
- package/dist/_chunks/search-input-CIA6pPfn.js.map +0 -1
- package/dist/_chunks/signature-capture-DjMlFOzS.js.map +0 -1
- package/dist/_chunks/smile-BSYLAHy6.js +0 -17
- package/dist/_chunks/smile-BSYLAHy6.js.map +0 -1
- package/dist/_chunks/stepper-progress-jFY8BSf7.js.map +0 -1
- package/dist/_chunks/streaming-text-BgjCTVOw.js +0 -105
- package/dist/_chunks/streaming-text-BgjCTVOw.js.map +0 -1
- package/dist/_chunks/text-area-D5GAe8pV.js.map +0 -1
- package/dist/_chunks/tooltip-ClJd0ciy.js.map +0 -1
- package/dist/_chunks/transcript-panel-QUQ9XJmf.js.map +0 -1
- package/dist/_chunks/use-direction-D6rvvG9G.js.map +0 -1
- package/dist/_chunks/use-scroll-to-first-error-BrK7dKB_.js +0 -55
- package/dist/_chunks/use-scroll-to-first-error-BrK7dKB_.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"breadcrumb--YI7lcHA.js","sources":["../../src/components/breadcrumb/breadcrumb.agent.ts","../../src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Breadcrumb. */\n/* */\n/* Breadcrumb is a navigation trail. Items expose their stable route id */\n/* + href ONLY — labels can contain patient names or other PHI and MUST */\n/* NOT be exposed on `data-*` or in adapter state (see PRS §26 §6.1). */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the full contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { BreadcrumbHandle } from './breadcrumb';\n\nexport interface BreadcrumbAgentItem {\n id: string;\n href?: string;\n}\n\nexport const breadcrumbAgent: AgentAdapter<BreadcrumbHandle> = {\n id: 'breadcrumb',\n capabilities: ['navigate'],\n state: {\n items: {\n type: 'Array<{ id: string, href?: string }>',\n descriptionKey: 'ui.agent.breadcrumb.state.items',\n description:\n 'Ordered list of crumb ids + hrefs in display order. Labels are intentionally excluded — they may contain PHI.',\n read: (handle) => handle.getItems(),\n },\n },\n actions: {\n navigate_to: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.breadcrumb.actions.navigateTo',\n description:\n 'Activate the crumb with the given id — equivalent to clicking the link.',\n invoke: (handle, args: { id: string }) => {\n handle.navigateTo(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'breadcrumb',\n description: 'Marks the Breadcrumb root `<nav>`.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-crumb-id',\n description:\n 'Stable opaque id of a crumb. Labels are NEVER carried in data-* — they may contain PHI.',\n },\n },\n};\n","import {\n Children,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n type AnchorHTMLAttributes,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { breadcrumbAgent } from './breadcrumb.agent';\n\n/* -------------------------------------------------------------------- */\n/* Context — shares separator variant between siblings */\n/* -------------------------------------------------------------------- */\n\ntype SeparatorVariant = 'chevron' | 'slash';\n\ninterface BreadcrumbContextValue {\n separator: SeparatorVariant;\n}\n\nconst BreadcrumbContext = createContext<BreadcrumbContextValue>({\n separator: 'chevron',\n});\n\n/* -------------------------------------------------------------------- */\n/* Root — <nav aria-label> wrapper + truncation engine */\n/* -------------------------------------------------------------------- */\n\nexport interface BreadcrumbProps extends Omit<\n ComponentPropsWithoutRef<'nav'>,\n 'id'\n> {\n /** Override the default `aria-label` (falls back to translated `ui.navigation.breadcrumb.label`). */\n 'aria-label'?: string;\n /** Separator glyph between items. @default 'chevron' */\n separator?: SeparatorVariant;\n /** Maximum number of visible crumbs before collapsing. @default 4 */\n maxItems?: number;\n /** Items kept visible at the start. @default 1 */\n itemsBeforeCollapse?: number;\n /** Items kept visible at the end. @default 1 */\n itemsAfterCollapse?: number;\n /** If true, disables collapse behaviour. */\n disableCollapse?: boolean;\n /**\n * Consumer-supplied instance id, surfaced as `data-component-id` so an\n * agent / UI bridge can address this instance.\n */\n id?: string;\n}\n\n/**\n * Imperative handle for agent-readiness.\n *\n * Items expose their stable id (`BreadcrumbItem` `id` prop, falling back\n * to the `BreadcrumbLink` href) and href — never their visible label,\n * which may contain PHI (see PRS §26 §6.1).\n */\nexport interface BreadcrumbHandle {\n getItems: () => Array<{ id: string; href?: string }>;\n navigateTo: (id: string) => void;\n}\n\nconst Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (\n {\n children,\n className,\n 'aria-label': ariaLabel,\n separator = 'chevron',\n maxItems = 4,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n disableCollapse = false,\n id,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const items = useMemo(() => extractAgentItems(children), [children]);\n\n const handle = useMemo<BreadcrumbHandle>(\n () => ({\n getItems: () => items,\n navigateTo: (targetId: string) => {\n const hit = items.find((i) => i.id === targetId);\n if (!hit?.href) return;\n if (typeof window === 'undefined') return;\n // Same allow-list as the BreadcrumbLink renderer — never honour\n // `javascript:` / `data:` URLs.\n const trimmed = hit.href.trim();\n if (/^\\s*javascript:/i.test(trimmed)) return;\n window.location.assign(trimmed);\n },\n }),\n [items],\n );\n const innerRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLElement, []);\n useAgentRegistration(breadcrumbAgent, handle, id);\n\n return (\n <BreadcrumbContext.Provider value={{ separator }}>\n <nav\n ref={innerRef}\n id={id}\n aria-label={ariaLabel ?? t('navigation.breadcrumb.label')}\n data-component=\"breadcrumb\"\n data-component-id={id}\n className={className}\n {...rest}\n >\n <BreadcrumbList\n maxItems={maxItems}\n itemsBeforeCollapse={itemsBeforeCollapse}\n itemsAfterCollapse={itemsAfterCollapse}\n disableCollapse={disableCollapse}\n >\n {children}\n </BreadcrumbList>\n </nav>\n </BreadcrumbContext.Provider>\n );\n },\n);\nBreadcrumb.displayName = 'Breadcrumb';\n\n/**\n * Walks the Breadcrumb children to collect `{ id, href }` for the agent\n * handle. The id is taken from the BreadcrumbItem's `id` prop, falling\n * back to the inner BreadcrumbLink's href (or an index string as a last\n * resort). Labels are never read — they may contain PHI.\n */\nfunction extractAgentItems(\n children: ReactNode,\n): Array<{ id: string; href?: string }> {\n const out: Array<{ id: string; href?: string }> = [];\n let index = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n // Only collect Items. Anything else (separators, custom wrappers) is\n // skipped — the agent contract addresses crumbs, not chrome.\n if (child.type !== BreadcrumbItem) return;\n const itemProps = child.props as BreadcrumbItemProps & {\n id?: string;\n children?: ReactNode;\n };\n let href: string | undefined;\n Children.forEach(itemProps.children, (grandchild) => {\n if (href) return;\n if (!isValidElement(grandchild)) return;\n if (grandchild.type !== BreadcrumbLink) return;\n const linkProps = grandchild.props as BreadcrumbLinkProps;\n if (typeof linkProps.href === 'string') href = linkProps.href;\n });\n const id = itemProps.id ?? href ?? String(index);\n out.push({ id, href });\n index += 1;\n });\n return out;\n}\n\n/* -------------------------------------------------------------------- */\n/* List — walks its children, injects separators & ellipsis */\n/* -------------------------------------------------------------------- */\n\nconst listClasses = [\n 'ds:flex ds:flex-wrap ds:items-center',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:text-[var(--font-size-sm)] ds:text-[var(--muted-foreground)]',\n 'ds:ps-0 ds:m-0',\n 'ds:list-none',\n].join(' ');\n\nexport interface BreadcrumbListProps extends ComponentPropsWithoutRef<'ol'> {\n maxItems?: number;\n itemsBeforeCollapse?: number;\n itemsAfterCollapse?: number;\n disableCollapse?: boolean;\n}\n\nconst BreadcrumbList = forwardRef<HTMLOListElement, BreadcrumbListProps>(\n (\n {\n children,\n className,\n maxItems = 4,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n disableCollapse = false,\n ...rest\n },\n ref,\n ) => {\n const arr = Children.toArray(children).filter((c) =>\n isValidElement(c),\n ) as ReactElement[];\n const total = arr.length;\n\n const shouldCollapse =\n !disableCollapse &&\n total > maxItems &&\n itemsBeforeCollapse + itemsAfterCollapse < total;\n\n const renderItem = (child: ReactElement, isLast: boolean, key: string) =>\n cloneElement(child, {\n isCurrent: (child.props as BreadcrumbItemProps).isCurrent ?? isLast,\n key,\n } as Partial<BreadcrumbItemProps>);\n\n const renderSeparatorIf = (condition: boolean, key: string) =>\n condition ? <BreadcrumbSeparator key={key} /> : null;\n\n const nodes: ReactNode[] = [];\n if (!shouldCollapse) {\n arr.forEach((child, i) => {\n const isLast = i === total - 1;\n nodes.push(renderItem(child, isLast, `item-${i}`));\n nodes.push(renderSeparatorIf(!isLast, `sep-${i}`));\n });\n } else {\n const before = arr.slice(0, itemsBeforeCollapse);\n const after = arr.slice(total - itemsAfterCollapse);\n const hidden = arr.slice(itemsBeforeCollapse, total - itemsAfterCollapse);\n\n before.forEach((child, i) => {\n nodes.push(renderItem(child, false, `b-${i}`));\n nodes.push(renderSeparatorIf(true, `b-sep-${i}`));\n });\n\n nodes.push(\n <BreadcrumbItem key=\"ellipsis\">\n <BreadcrumbEllipsis hiddenItems={hidden} />\n </BreadcrumbItem>,\n );\n nodes.push(renderSeparatorIf(true, 'ellipsis-sep'));\n\n after.forEach((child, i) => {\n const isLast = i === after.length - 1;\n nodes.push(renderItem(child, isLast, `a-${i}`));\n nodes.push(renderSeparatorIf(!isLast, `a-sep-${i}`));\n });\n }\n\n return (\n <ol\n ref={ref}\n className={[listClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {nodes}\n </ol>\n );\n },\n);\nBreadcrumbList.displayName = 'BreadcrumbList';\n\n/* -------------------------------------------------------------------- */\n/* Item — <li> marks current when `isCurrent` */\n/* -------------------------------------------------------------------- */\n\nconst itemClasses = [\n 'ds:inline-flex ds:items-center',\n 'ds:max-inline-size-[16rem]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:py-[var(--spacing-xs)]',\n].join(' ');\n\nexport interface BreadcrumbItemProps extends ComponentPropsWithoutRef<'li'> {\n /** Set automatically by `BreadcrumbList` on the final item. */\n isCurrent?: boolean;\n}\n\nconst BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ children, className, isCurrent = false, id, ...rest }, ref) => {\n // Derive an agent crumb id: explicit `id` prop, else the inner link's\n // href. Labels are never used — they may contain PHI (PRS §26 §6.1).\n let derived: string | undefined = id;\n if (!derived) {\n Children.forEach(children, (child) => {\n if (derived) return;\n if (!isValidElement(child)) return;\n if (child.type !== BreadcrumbLink) return;\n const linkProps = child.props as BreadcrumbLinkProps;\n if (typeof linkProps.href === 'string') derived = linkProps.href;\n });\n }\n return (\n <li\n ref={ref}\n id={id}\n data-crumb-id={derived}\n className={[itemClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {Children.map(children, (child) =>\n isValidElement(child) &&\n (child.type === BreadcrumbLink ||\n (child.props as { _link?: boolean })?._link)\n ? cloneElement(child as ReactElement<BreadcrumbLinkProps>, {\n isCurrent,\n })\n : child,\n )}\n </li>\n );\n },\n);\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\n/* -------------------------------------------------------------------- */\n/* Link — renders <a>, or plain text when current */\n/* -------------------------------------------------------------------- */\n\nconst linkClasses = [\n 'ds:inline-flex ds:items-center',\n 'ds:max-inline-size-[16rem]',\n 'ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap',\n 'ds:break-normal',\n 'ds:text-[var(--muted-foreground)] ds:no-underline',\n 'ds:hover:text-[var(--foreground)] ds:hover:underline',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:min-h-[var(--min-target-size)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n].join(' ');\n\nconst currentClasses = [\n 'ds:inline-flex ds:items-center',\n 'ds:max-inline-size-[16rem]',\n 'ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap',\n 'ds:break-normal',\n 'ds:text-[var(--foreground)] ds:font-[var(--font-weight-semibold)]',\n 'ds:min-h-[var(--min-target-size)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n].join(' ');\n\nexport interface BreadcrumbLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Use Radix `Slot` so consumers can pass a router link. */\n asChild?: boolean;\n /** Set by the parent Item when this is the current page. */\n isCurrent?: boolean;\n}\n\nconst BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n (\n { asChild = false, isCurrent = false, className, children, ...rest },\n ref,\n ) => {\n const { t } = useTranslation();\n\n if (isCurrent) {\n return (\n <span\n aria-current=\"page\"\n aria-label={\n (rest['aria-label'] as string | undefined) ??\n t('navigation.breadcrumb.current')\n }\n className={[currentClasses, className].filter(Boolean).join(' ')}\n >\n {children}\n </span>\n );\n }\n\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={[linkClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <a\n ref={ref}\n className={[linkClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </a>\n );\n },\n);\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\n/* -------------------------------------------------------------------- */\n/* Separator */\n/* -------------------------------------------------------------------- */\n\nconst separatorVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:text-[var(--muted-foreground)]',\n 'ds:ms-[var(--spacing-xs)] ds:me-[var(--spacing-xs)]',\n 'ds:select-none',\n ].join(' '),\n {\n variants: {\n variant: {\n chevron: '',\n slash: '',\n },\n },\n defaultVariants: { variant: 'chevron' },\n },\n);\n\nexport interface BreadcrumbSeparatorProps\n extends\n Omit<ComponentPropsWithoutRef<'li'>, 'children'>,\n VariantProps<typeof separatorVariants> {\n children?: ReactNode;\n}\n\nconst BreadcrumbSeparator = forwardRef<HTMLLIElement, BreadcrumbSeparatorProps>(\n ({ className, variant, children, ...rest }, ref) => {\n const ctx = useContext(BreadcrumbContext);\n const resolved = variant ?? ctx.separator;\n const defaultGlyph =\n resolved === 'slash' ? (\n <span aria-hidden=\"true\">/</span>\n ) : (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:rtl:-scale-x-100\"\n />\n );\n return (\n <li\n ref={ref}\n aria-hidden=\"true\"\n role=\"presentation\"\n className={separatorVariants({ variant: resolved, className })}\n {...rest}\n >\n {children ?? defaultGlyph}\n </li>\n );\n },\n);\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n\n/* -------------------------------------------------------------------- */\n/* Ellipsis — opens a Radix DropdownMenu with hidden crumbs */\n/* -------------------------------------------------------------------- */\n\nconst ellipsisTriggerClasses = [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-[var(--muted-foreground)]',\n 'ds:hover:text-[var(--foreground)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\nconst ellipsisContentClasses = [\n 'ds:z-[var(--z-dropdown)] ds:min-w-[12rem] ds:overflow-hidden',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-xs)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95 ds:motion-reduce:animate-none',\n].join(' ');\n\nconst ellipsisItemClasses = [\n 'ds:flex ds:items-center',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-[var(--foreground)] ds:cursor-pointer ds:select-none',\n 'ds:data-[highlighted]:bg-[var(--muted)] ds:data-[highlighted]:text-[var(--foreground)]',\n 'ds:outline-none',\n].join(' ');\n\nexport interface BreadcrumbEllipsisProps extends ComponentPropsWithoutRef<'button'> {\n /** Hidden crumb elements rendered inside the dropdown menu. */\n hiddenItems?: ReactElement[];\n}\n\nconst BreadcrumbEllipsis = forwardRef<\n HTMLButtonElement,\n BreadcrumbEllipsisProps\n>(({ className, hiddenItems = [], ...rest }, ref) => {\n const { t } = useTranslation();\n const showPath = t('navigation.breadcrumb.showPath');\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button\n ref={ref}\n type=\"button\"\n aria-label={showPath}\n className={[ellipsisTriggerClasses, className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <MoreHorizontal aria-hidden=\"true\" className=\"ds:size-4\" />\n <span className=\"ds:sr-only\">{showPath}</span>\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className={ellipsisContentClasses}\n align=\"start\"\n sideOffset={6}\n >\n {hiddenItems.map((item, i) => {\n // Extract the anchor inside the hidden BreadcrumbItem (if any)\n const linkChild = extractLink(item);\n return (\n <DropdownMenu.Item\n key={`hidden-${i}`}\n asChild\n className={ellipsisItemClasses}\n >\n {linkChild ?? <span>{item}</span>}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n});\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\n\n/**\n * Walks a `BreadcrumbItem` to find the first child whose type is\n * `BreadcrumbLink` and returns the link rendered as a plain `<a>` so the\n * dropdown item can adopt its navigational behaviour.\n */\nfunction extractLink(item: ReactElement): ReactElement | null {\n let found: ReactElement | null = null;\n const itemChildren = (item.props as { children?: ReactNode }).children;\n Children.forEach(itemChildren, (child) => {\n if (found) return;\n if (!isValidElement(child)) return;\n if (child.type === BreadcrumbLink) {\n const linkProps = child.props as BreadcrumbLinkProps & {\n children?: ReactNode;\n };\n const href =\n typeof linkProps.href === 'string' ? linkProps.href : undefined;\n const safeHref = href && /^\\s*javascript:/i.test(href) ? undefined : href;\n found = (\n <a\n href={safeHref}\n onClick={\n linkProps.onClick as AnchorHTMLAttributes<HTMLAnchorElement>['onClick']\n }\n >\n {linkProps.children}\n </a>\n );\n }\n });\n return found;\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n"],"names":["breadcrumbAgent","handle","args","BreadcrumbContext","createContext","Breadcrumb","forwardRef","children","className","ariaLabel","separator","maxItems","itemsBeforeCollapse","itemsAfterCollapse","disableCollapse","id","rest","ref","t","useTranslation","items","useMemo","extractAgentItems","targetId","hit","i","trimmed","innerRef","useRef","useImperativeHandle","useAgentRegistration","jsx","BreadcrumbList","out","index","Children","child","isValidElement","BreadcrumbItem","itemProps","href","grandchild","BreadcrumbLink","linkProps","listClasses","arr","total","shouldCollapse","renderItem","isLast","key","cloneElement","renderSeparatorIf","condition","BreadcrumbSeparator","nodes","before","after","hidden","BreadcrumbEllipsis","itemClasses","isCurrent","derived","_a","linkClasses","currentClasses","asChild","Slot","separatorVariants","cva","variant","ctx","useContext","resolved","defaultGlyph","ChevronRight","ellipsisTriggerClasses","ellipsisContentClasses","ellipsisItemClasses","hiddenItems","showPath","jsxs","DropdownMenu","MoreHorizontal","item","linkChild","extractLink","found","itemChildren","safeHref"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"breadcrumb-CLlhx7qo.js","sources":["../../src/components/breadcrumb/breadcrumb.agent.ts","../../src/components/breadcrumb/breadcrumb.tsx"],"sourcesContent":["/* -------------------------------------------------------------------- */\n/* Agent adapter — Breadcrumb. */\n/* */\n/* Breadcrumb is a navigation trail. Items expose their stable route id */\n/* + href ONLY — labels can contain patient names or other PHI and MUST */\n/* NOT be exposed on `data-*` or in adapter state (see PRS §26 §6.1). */\n/* */\n/* See `src/docs/26-agent-readiness.mdx` for the full contract. */\n/* -------------------------------------------------------------------- */\n\nimport type { AgentAdapter } from '../../agent/types';\nimport type { BreadcrumbHandle } from './breadcrumb';\n\nexport interface BreadcrumbAgentItem {\n id: string;\n href?: string;\n}\n\nexport const breadcrumbAgent: AgentAdapter<BreadcrumbHandle> = {\n id: 'breadcrumb',\n capabilities: ['navigate'],\n state: {\n items: {\n type: 'Array<{ id: string, href?: string }>',\n descriptionKey: 'ui.agent.breadcrumb.state.items',\n description:\n 'Ordered list of crumb ids + hrefs in display order. Labels are intentionally excluded — they may contain PHI.',\n read: (handle) => handle.getItems(),\n },\n },\n actions: {\n navigate_to: {\n safety: 'read',\n argsType: '{ id: string }',\n descriptionKey: 'ui.agent.breadcrumb.actions.navigateTo',\n description:\n 'Activate the crumb with the given id — equivalent to clicking the link.',\n invoke: (handle, args: { id: string }) => {\n handle.navigateTo(args.id);\n },\n },\n },\n domHooks: {\n root: {\n attr: 'data-component',\n value: 'breadcrumb',\n description: 'Marks the Breadcrumb root `<nav>`.',\n },\n instanceId: {\n attr: 'data-component-id',\n sourceProp: 'id',\n description: 'Sourced from the id prop.',\n },\n item: {\n attr: 'data-crumb-id',\n description:\n 'Stable opaque id of a crumb. Labels are NEVER carried in data-* — they may contain PHI.',\n },\n },\n};\n","import {\n Children,\n cloneElement,\n createContext,\n forwardRef,\n isValidElement,\n useContext,\n useImperativeHandle,\n useMemo,\n useRef,\n type AnchorHTMLAttributes,\n type ComponentPropsWithoutRef,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport * as DropdownMenu from '@radix-ui/react-dropdown-menu';\nimport { Slot } from '@radix-ui/react-slot';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronRight, MoreHorizontal } from 'lucide-react';\nimport { useAgentRegistration } from '../../agent/registry';\nimport { breadcrumbAgent } from './breadcrumb.agent';\n\n/* -------------------------------------------------------------------- */\n/* Context — shares separator variant between siblings */\n/* -------------------------------------------------------------------- */\n\ntype SeparatorVariant = 'chevron' | 'slash';\n\ninterface BreadcrumbContextValue {\n separator: SeparatorVariant;\n}\n\nconst BreadcrumbContext = createContext<BreadcrumbContextValue>({\n separator: 'chevron',\n});\n\n/* -------------------------------------------------------------------- */\n/* Root — <nav aria-label> wrapper + truncation engine */\n/* -------------------------------------------------------------------- */\n\nexport interface BreadcrumbProps extends Omit<\n ComponentPropsWithoutRef<'nav'>,\n 'id'\n> {\n /** Override the default `aria-label` (falls back to translated `ui.navigation.breadcrumb.label`). */\n 'aria-label'?: string;\n /** Separator glyph between items. @default 'chevron' */\n separator?: SeparatorVariant;\n /** Maximum number of visible crumbs before collapsing. @default 4 */\n maxItems?: number;\n /** Items kept visible at the start. @default 1 */\n itemsBeforeCollapse?: number;\n /** Items kept visible at the end. @default 1 */\n itemsAfterCollapse?: number;\n /** If true, disables collapse behaviour. */\n disableCollapse?: boolean;\n /**\n * Consumer-supplied instance id, surfaced as `data-component-id` so an\n * agent / UI bridge can address this instance.\n */\n id?: string;\n}\n\n/**\n * Imperative handle for agent-readiness.\n *\n * Items expose their stable id (`BreadcrumbItem` `id` prop, falling back\n * to the `BreadcrumbLink` href) and href — never their visible label,\n * which may contain PHI (see PRS §26 §6.1).\n */\nexport interface BreadcrumbHandle {\n getItems: () => Array<{ id: string; href?: string }>;\n navigateTo: (id: string) => void;\n}\n\nconst Breadcrumb = forwardRef<HTMLElement, BreadcrumbProps>(\n (\n {\n children,\n className,\n 'aria-label': ariaLabel,\n separator = 'chevron',\n maxItems = 4,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n disableCollapse = false,\n id,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n\n const items = useMemo(() => extractAgentItems(children), [children]);\n\n const handle = useMemo<BreadcrumbHandle>(\n () => ({\n getItems: () => items,\n navigateTo: (targetId: string) => {\n const hit = items.find((i) => i.id === targetId);\n if (!hit?.href) return;\n if (typeof window === 'undefined') return;\n // Same allow-list as the BreadcrumbLink renderer — never honour\n // `javascript:` / `data:` URLs.\n const trimmed = hit.href.trim();\n if (/^\\s*javascript:/i.test(trimmed)) return;\n window.location.assign(trimmed);\n },\n }),\n [items],\n );\n const innerRef = useRef<HTMLElement>(null);\n useImperativeHandle(ref, () => innerRef.current as HTMLElement, []);\n useAgentRegistration(breadcrumbAgent, handle, id);\n\n return (\n <BreadcrumbContext.Provider value={{ separator }}>\n <nav\n ref={innerRef}\n id={id}\n aria-label={ariaLabel ?? t('navigation.breadcrumb.label')}\n data-component=\"breadcrumb\"\n data-component-id={id}\n className={className}\n {...rest}\n >\n <BreadcrumbList\n maxItems={maxItems}\n itemsBeforeCollapse={itemsBeforeCollapse}\n itemsAfterCollapse={itemsAfterCollapse}\n disableCollapse={disableCollapse}\n >\n {children}\n </BreadcrumbList>\n </nav>\n </BreadcrumbContext.Provider>\n );\n },\n);\nBreadcrumb.displayName = 'Breadcrumb';\n\n/**\n * Walks the Breadcrumb children to collect `{ id, href }` for the agent\n * handle. The id is taken from the BreadcrumbItem's `id` prop, falling\n * back to the inner BreadcrumbLink's href (or an index string as a last\n * resort). Labels are never read — they may contain PHI.\n */\nfunction extractAgentItems(\n children: ReactNode,\n): Array<{ id: string; href?: string }> {\n const out: Array<{ id: string; href?: string }> = [];\n let index = 0;\n Children.forEach(children, (child) => {\n if (!isValidElement(child)) return;\n // Only collect Items. Anything else (separators, custom wrappers) is\n // skipped — the agent contract addresses crumbs, not chrome.\n if (child.type !== BreadcrumbItem) return;\n const itemProps = child.props as BreadcrumbItemProps & {\n id?: string;\n children?: ReactNode;\n };\n let href: string | undefined;\n Children.forEach(itemProps.children, (grandchild) => {\n if (href) return;\n if (!isValidElement(grandchild)) return;\n if (grandchild.type !== BreadcrumbLink) return;\n const linkProps = grandchild.props as BreadcrumbLinkProps;\n if (typeof linkProps.href === 'string') href = linkProps.href;\n });\n const id = itemProps.id ?? href ?? String(index);\n out.push({ id, href });\n index += 1;\n });\n return out;\n}\n\n/* -------------------------------------------------------------------- */\n/* List — walks its children, injects separators & ellipsis */\n/* -------------------------------------------------------------------- */\n\nconst listClasses = [\n 'ds:flex ds:flex-wrap ds:items-center',\n 'ds:gap-[var(--spacing-xs)]',\n 'ds:text-[var(--font-size-sm)] ds:text-[var(--muted-foreground)]',\n 'ds:ps-0 ds:m-0',\n 'ds:list-none',\n].join(' ');\n\nexport interface BreadcrumbListProps extends ComponentPropsWithoutRef<'ol'> {\n maxItems?: number;\n itemsBeforeCollapse?: number;\n itemsAfterCollapse?: number;\n disableCollapse?: boolean;\n}\n\nconst BreadcrumbList = forwardRef<HTMLOListElement, BreadcrumbListProps>(\n (\n {\n children,\n className,\n maxItems = 4,\n itemsBeforeCollapse = 1,\n itemsAfterCollapse = 1,\n disableCollapse = false,\n ...rest\n },\n ref,\n ) => {\n const arr = Children.toArray(children).filter((c) =>\n isValidElement(c),\n ) as ReactElement[];\n const total = arr.length;\n\n const shouldCollapse =\n !disableCollapse &&\n total > maxItems &&\n itemsBeforeCollapse + itemsAfterCollapse < total;\n\n const renderItem = (child: ReactElement, isLast: boolean, key: string) =>\n cloneElement(child, {\n isCurrent: (child.props as BreadcrumbItemProps).isCurrent ?? isLast,\n key,\n } as Partial<BreadcrumbItemProps>);\n\n const renderSeparatorIf = (condition: boolean, key: string) =>\n condition ? <BreadcrumbSeparator key={key} /> : null;\n\n const nodes: ReactNode[] = [];\n if (!shouldCollapse) {\n arr.forEach((child, i) => {\n const isLast = i === total - 1;\n nodes.push(renderItem(child, isLast, `item-${i}`));\n nodes.push(renderSeparatorIf(!isLast, `sep-${i}`));\n });\n } else {\n const before = arr.slice(0, itemsBeforeCollapse);\n const after = arr.slice(total - itemsAfterCollapse);\n const hidden = arr.slice(itemsBeforeCollapse, total - itemsAfterCollapse);\n\n before.forEach((child, i) => {\n nodes.push(renderItem(child, false, `b-${i}`));\n nodes.push(renderSeparatorIf(true, `b-sep-${i}`));\n });\n\n nodes.push(\n <BreadcrumbItem key=\"ellipsis\">\n <BreadcrumbEllipsis hiddenItems={hidden} />\n </BreadcrumbItem>,\n );\n nodes.push(renderSeparatorIf(true, 'ellipsis-sep'));\n\n after.forEach((child, i) => {\n const isLast = i === after.length - 1;\n nodes.push(renderItem(child, isLast, `a-${i}`));\n nodes.push(renderSeparatorIf(!isLast, `a-sep-${i}`));\n });\n }\n\n return (\n <ol\n ref={ref}\n className={[listClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {nodes}\n </ol>\n );\n },\n);\nBreadcrumbList.displayName = 'BreadcrumbList';\n\n/* -------------------------------------------------------------------- */\n/* Item — <li> marks current when `isCurrent` */\n/* -------------------------------------------------------------------- */\n\nconst itemClasses = [\n 'ds:inline-flex ds:items-center',\n 'ds:max-inline-size-[16rem]',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:py-[var(--spacing-xs)]',\n].join(' ');\n\nexport interface BreadcrumbItemProps extends ComponentPropsWithoutRef<'li'> {\n /** Set automatically by `BreadcrumbList` on the final item. */\n isCurrent?: boolean;\n}\n\nconst BreadcrumbItem = forwardRef<HTMLLIElement, BreadcrumbItemProps>(\n ({ children, className, isCurrent = false, id, ...rest }, ref) => {\n // Derive an agent crumb id: explicit `id` prop, else the inner link's\n // href. Labels are never used — they may contain PHI (PRS §26 §6.1).\n let derived: string | undefined = id;\n if (!derived) {\n Children.forEach(children, (child) => {\n if (derived) return;\n if (!isValidElement(child)) return;\n if (child.type !== BreadcrumbLink) return;\n const linkProps = child.props as BreadcrumbLinkProps;\n if (typeof linkProps.href === 'string') derived = linkProps.href;\n });\n }\n return (\n <li\n ref={ref}\n id={id}\n data-crumb-id={derived}\n className={[itemClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {Children.map(children, (child) =>\n isValidElement(child) &&\n (child.type === BreadcrumbLink ||\n (child.props as { _link?: boolean })?._link)\n ? cloneElement(child as ReactElement<BreadcrumbLinkProps>, {\n isCurrent,\n })\n : child,\n )}\n </li>\n );\n },\n);\nBreadcrumbItem.displayName = 'BreadcrumbItem';\n\n/* -------------------------------------------------------------------- */\n/* Link — renders <a>, or plain text when current */\n/* -------------------------------------------------------------------- */\n\nconst linkClasses = [\n 'ds:inline-flex ds:items-center',\n 'ds:max-inline-size-[16rem]',\n 'ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap',\n 'ds:break-normal',\n 'ds:text-[var(--muted-foreground)] ds:no-underline',\n 'ds:hover:text-[var(--foreground)] ds:hover:underline',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:min-h-[var(--min-target-size)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n].join(' ');\n\nconst currentClasses = [\n 'ds:inline-flex ds:items-center',\n 'ds:max-inline-size-[16rem]',\n 'ds:overflow-hidden ds:text-ellipsis ds:whitespace-nowrap',\n 'ds:break-normal',\n 'ds:text-[var(--foreground)] ds:font-[var(--font-weight-semibold)]',\n 'ds:min-h-[var(--min-target-size)] ds:ps-[var(--spacing-xs)] ds:pe-[var(--spacing-xs)]',\n].join(' ');\n\nexport interface BreadcrumbLinkProps extends AnchorHTMLAttributes<HTMLAnchorElement> {\n /** Use Radix `Slot` so consumers can pass a router link. */\n asChild?: boolean;\n /** Set by the parent Item when this is the current page. */\n isCurrent?: boolean;\n}\n\nconst BreadcrumbLink = forwardRef<HTMLAnchorElement, BreadcrumbLinkProps>(\n (\n { asChild = false, isCurrent = false, className, children, ...rest },\n ref,\n ) => {\n const { t } = useTranslation();\n\n if (isCurrent) {\n return (\n <span\n aria-current=\"page\"\n aria-label={\n (rest['aria-label'] as string | undefined) ??\n t('navigation.breadcrumb.current')\n }\n className={[currentClasses, className].filter(Boolean).join(' ')}\n >\n {children}\n </span>\n );\n }\n\n if (asChild) {\n return (\n <Slot\n ref={ref}\n className={[linkClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </Slot>\n );\n }\n\n return (\n <a\n ref={ref}\n className={[linkClasses, className].filter(Boolean).join(' ')}\n {...rest}\n >\n {children}\n </a>\n );\n },\n);\nBreadcrumbLink.displayName = 'BreadcrumbLink';\n\n/* -------------------------------------------------------------------- */\n/* Separator */\n/* -------------------------------------------------------------------- */\n\nconst separatorVariants = cva(\n [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:text-[var(--muted-foreground)]',\n 'ds:ms-[var(--spacing-xs)] ds:me-[var(--spacing-xs)]',\n 'ds:select-none',\n ].join(' '),\n {\n variants: {\n variant: {\n chevron: '',\n slash: '',\n },\n },\n defaultVariants: { variant: 'chevron' },\n },\n);\n\nexport interface BreadcrumbSeparatorProps\n extends\n Omit<ComponentPropsWithoutRef<'li'>, 'children'>,\n VariantProps<typeof separatorVariants> {\n children?: ReactNode;\n}\n\nconst BreadcrumbSeparator = forwardRef<HTMLLIElement, BreadcrumbSeparatorProps>(\n ({ className, variant, children, ...rest }, ref) => {\n const ctx = useContext(BreadcrumbContext);\n const resolved = variant ?? ctx.separator;\n const defaultGlyph =\n resolved === 'slash' ? (\n <span aria-hidden=\"true\">/</span>\n ) : (\n <ChevronRight\n aria-hidden=\"true\"\n className=\"ds:size-4 ds:rtl:-scale-x-100\"\n />\n );\n return (\n <li\n ref={ref}\n aria-hidden=\"true\"\n role=\"presentation\"\n className={separatorVariants({ variant: resolved, className })}\n {...rest}\n >\n {children ?? defaultGlyph}\n </li>\n );\n },\n);\nBreadcrumbSeparator.displayName = 'BreadcrumbSeparator';\n\n/* -------------------------------------------------------------------- */\n/* Ellipsis — opens a Radix DropdownMenu with hidden crumbs */\n/* -------------------------------------------------------------------- */\n\nconst ellipsisTriggerClasses = [\n 'ds:inline-flex ds:items-center ds:justify-center',\n 'ds:min-w-[var(--min-target-size)] ds:min-h-[var(--min-target-size)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-[var(--muted-foreground)]',\n 'ds:hover:text-[var(--foreground)]',\n 'ds:focus-visible:outline-[length:var(--focus-ring-width)] ds:focus-visible:outline-solid',\n 'ds:focus-visible:outline-[var(--ring)] ds:focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n 'ds:transition-colors ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n].join(' ');\n\nconst ellipsisContentClasses = [\n 'ds:z-[var(--z-dropdown)] ds:min-w-[12rem] ds:overflow-hidden',\n 'ds:rounded-[var(--radius-md)] ds:border ds:border-[var(--border)]',\n 'ds:bg-[var(--background)] ds:text-[var(--foreground)]',\n 'ds:shadow-[var(--shadow-lg)]',\n 'ds:p-[var(--spacing-xs)]',\n 'ds:animate-in ds:fade-in ds:zoom-in-95 ds:motion-reduce:animate-none',\n].join(' ');\n\nconst ellipsisItemClasses = [\n 'ds:flex ds:items-center',\n 'ds:min-h-[var(--min-target-size)]',\n 'ds:ps-[var(--spacing-sm)] ds:pe-[var(--spacing-sm)]',\n 'ds:rounded-[var(--radius-sm)]',\n 'ds:text-[var(--foreground)] ds:cursor-pointer ds:select-none',\n 'ds:data-[highlighted]:bg-[var(--muted)] ds:data-[highlighted]:text-[var(--foreground)]',\n 'ds:outline-none',\n].join(' ');\n\nexport interface BreadcrumbEllipsisProps extends ComponentPropsWithoutRef<'button'> {\n /** Hidden crumb elements rendered inside the dropdown menu. */\n hiddenItems?: ReactElement[];\n}\n\nconst BreadcrumbEllipsis = forwardRef<\n HTMLButtonElement,\n BreadcrumbEllipsisProps\n>(({ className, hiddenItems = [], ...rest }, ref) => {\n const { t } = useTranslation();\n const showPath = t('navigation.breadcrumb.showPath');\n return (\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <button\n ref={ref}\n type=\"button\"\n aria-label={showPath}\n className={[ellipsisTriggerClasses, className]\n .filter(Boolean)\n .join(' ')}\n {...rest}\n >\n <MoreHorizontal aria-hidden=\"true\" className=\"ds:size-4\" />\n <span className=\"ds:sr-only\">{showPath}</span>\n </button>\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content\n className={ellipsisContentClasses}\n align=\"start\"\n sideOffset={6}\n >\n {hiddenItems.map((item, i) => {\n // Extract the anchor inside the hidden BreadcrumbItem (if any)\n const linkChild = extractLink(item);\n return (\n <DropdownMenu.Item\n key={`hidden-${i}`}\n asChild\n className={ellipsisItemClasses}\n >\n {linkChild ?? <span>{item}</span>}\n </DropdownMenu.Item>\n );\n })}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n );\n});\nBreadcrumbEllipsis.displayName = 'BreadcrumbEllipsis';\n\n/**\n * Walks a `BreadcrumbItem` to find the first child whose type is\n * `BreadcrumbLink` and returns the link rendered as a plain `<a>` so the\n * dropdown item can adopt its navigational behaviour.\n */\nfunction extractLink(item: ReactElement): ReactElement | null {\n let found: ReactElement | null = null;\n const itemChildren = (item.props as { children?: ReactNode }).children;\n Children.forEach(itemChildren, (child) => {\n if (found) return;\n if (!isValidElement(child)) return;\n if (child.type === BreadcrumbLink) {\n const linkProps = child.props as BreadcrumbLinkProps & {\n children?: ReactNode;\n };\n const href =\n typeof linkProps.href === 'string' ? linkProps.href : undefined;\n const safeHref = href && /^\\s*javascript:/i.test(href) ? undefined : href;\n found = (\n <a\n href={safeHref}\n onClick={\n linkProps.onClick as AnchorHTMLAttributes<HTMLAnchorElement>['onClick']\n }\n >\n {linkProps.children}\n </a>\n );\n }\n });\n return found;\n}\n\nexport {\n Breadcrumb,\n BreadcrumbList,\n BreadcrumbItem,\n BreadcrumbLink,\n BreadcrumbSeparator,\n BreadcrumbEllipsis,\n};\n"],"names":["breadcrumbAgent","handle","args","BreadcrumbContext","createContext","Breadcrumb","forwardRef","children","className","ariaLabel","separator","maxItems","itemsBeforeCollapse","itemsAfterCollapse","disableCollapse","id","rest","ref","t","useTranslation","items","useMemo","extractAgentItems","targetId","hit","i","trimmed","innerRef","useRef","useImperativeHandle","useAgentRegistration","jsx","BreadcrumbList","out","index","Children","child","isValidElement","BreadcrumbItem","itemProps","href","grandchild","BreadcrumbLink","linkProps","listClasses","arr","total","shouldCollapse","renderItem","isLast","key","cloneElement","renderSeparatorIf","condition","BreadcrumbSeparator","nodes","before","after","hidden","BreadcrumbEllipsis","itemClasses","isCurrent","derived","_a","linkClasses","currentClasses","asChild","Slot","separatorVariants","cva","variant","ctx","useContext","resolved","defaultGlyph","ChevronRight","ellipsisTriggerClasses","ellipsisContentClasses","ellipsisItemClasses","hiddenItems","showPath","jsxs","DropdownMenu","MoreHorizontal","item","linkChild","extractLink","found","itemChildren","safeHref"],"mappings":"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"}
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { jsx as G } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as K, useRef as R, useState as g,
|
|
3
|
-
import { c as
|
|
4
|
-
import { useTranslation as
|
|
5
|
-
|
|
2
|
+
import { forwardRef as K, useRef as R, useState as g, useCallback as T, Children as V, isValidElement as C, cloneElement as F } from "react";
|
|
3
|
+
import { c as N } from "./index-D2ZczOXr.js";
|
|
4
|
+
import { useTranslation as S } from "react-i18next";
|
|
5
|
+
import { u as H } from "./use-isomorphic-layout-effect-BGfaCOP1.js";
|
|
6
|
+
const M = N(
|
|
6
7
|
"ds:inline-flex ds:isolate ds:[&>*]:relative ds:[&>*:focus-visible]:z-10",
|
|
7
8
|
{
|
|
8
9
|
variants: {
|
|
@@ -53,13 +54,13 @@ const M = S(
|
|
|
53
54
|
children: z,
|
|
54
55
|
...E
|
|
55
56
|
}, l) => {
|
|
56
|
-
const { t:
|
|
57
|
-
|
|
57
|
+
const { t: I } = S(), L = A ?? I("buttonGroup.label", "Button group"), c = p, d = R([]), [u, h] = g(0), w = R(null), [b, j] = g(!1);
|
|
58
|
+
H(() => {
|
|
58
59
|
if (typeof window > "u") return;
|
|
59
60
|
const t = w.current;
|
|
60
|
-
t &&
|
|
61
|
+
t && j(window.getComputedStyle(t).direction === "rtl");
|
|
61
62
|
}, []);
|
|
62
|
-
const
|
|
63
|
+
const B = T(
|
|
63
64
|
(t) => {
|
|
64
65
|
var y;
|
|
65
66
|
if (!c) return;
|
|
@@ -79,8 +80,8 @@ const M = S(
|
|
|
79
80
|
t.preventDefault(), h(r), (y = d.current[r]) == null || y.focus();
|
|
80
81
|
},
|
|
81
82
|
[c, a, b, u]
|
|
82
|
-
), D =
|
|
83
|
-
if (!
|
|
83
|
+
), D = V.map(z, (t, e) => {
|
|
84
|
+
if (!C(t)) return t;
|
|
84
85
|
const s = t, f = (i) => {
|
|
85
86
|
d.current[e] = i;
|
|
86
87
|
const o = s.ref;
|
|
@@ -94,7 +95,7 @@ const M = S(
|
|
|
94
95
|
},
|
|
95
96
|
ref: f
|
|
96
97
|
};
|
|
97
|
-
return
|
|
98
|
+
return F(s, n);
|
|
98
99
|
});
|
|
99
100
|
return /* @__PURE__ */ G(
|
|
100
101
|
"div",
|
|
@@ -103,10 +104,10 @@ const M = S(
|
|
|
103
104
|
w.current = t, typeof l == "function" ? l(t) : l && typeof l == "object" && (l.current = t);
|
|
104
105
|
},
|
|
105
106
|
role: p ? "toolbar" : "group",
|
|
106
|
-
"aria-label":
|
|
107
|
+
"aria-label": L,
|
|
107
108
|
"aria-orientation": p ? a ?? "horizontal" : void 0,
|
|
108
109
|
"data-component": "button-group",
|
|
109
|
-
onKeyDown:
|
|
110
|
+
onKeyDown: B,
|
|
110
111
|
className: M({ orientation: a, separator: k, className: x }),
|
|
111
112
|
...E,
|
|
112
113
|
children: D
|
|
@@ -118,4 +119,4 @@ U.displayName = "ButtonGroup";
|
|
|
118
119
|
export {
|
|
119
120
|
U as B
|
|
120
121
|
};
|
|
121
|
-
//# sourceMappingURL=button-group-
|
|
122
|
+
//# sourceMappingURL=button-group-Ciq6J4IW.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"button-group-Ciq6J4IW.js","sources":["../../src/components/button-group/button-group.tsx"],"sourcesContent":["import {\n Children,\n cloneElement,\n forwardRef,\n isValidElement,\n useCallback,\n useRef,\n useState,\n type HTMLAttributes,\n type KeyboardEvent as ReactKeyboardEvent,\n type ReactElement,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport type { ButtonProps } from '../button/button';\nimport { useIsomorphicLayoutEffect } from '../../hooks/use-isomorphic-layout-effect';\n\ntype ButtonIntent = NonNullable<ButtonProps['intent']>;\n\nconst buttonGroupVariants = cva(\n 'ds:inline-flex ds:isolate ds:[&>*]:relative ds:[&>*:focus-visible]:z-10',\n {\n variants: {\n orientation: {\n horizontal: [\n 'ds:flex-row',\n 'ds:[&>*:not(:first-child)]:rounded-s-none',\n 'ds:[&>*:not(:last-child)]:rounded-e-none',\n 'ds:[&>*:not(:first-child)]:-ms-px',\n ].join(' '),\n vertical: [\n 'ds:flex-col',\n 'ds:[&>*:not(:first-child)]:rounded-t-none',\n 'ds:[&>*:not(:last-child)]:rounded-b-none',\n 'ds:[&>*:not(:first-child)]:-mt-px',\n ].join(' '),\n },\n separator: {\n true: '',\n false: '',\n },\n },\n compoundVariants: [\n {\n orientation: 'horizontal',\n separator: true,\n class:\n 'ds:[&>*:not(:last-child)]:border-e ds:[&>*:not(:last-child)]:border-border',\n },\n {\n orientation: 'vertical',\n separator: true,\n class:\n 'ds:[&>*:not(:last-child)]:border-b ds:[&>*:not(:last-child)]:border-border',\n },\n ],\n defaultVariants: {\n orientation: 'horizontal',\n separator: false,\n },\n },\n);\n\nexport interface ButtonGroupProps\n extends\n HTMLAttributes<HTMLDivElement>,\n VariantProps<typeof buttonGroupVariants> {\n /**\n * Accessible label for the group. Falls back to the translated\n * `ui.buttonGroup.label` string when not provided.\n */\n label?: string;\n /**\n * When the children are interactive toolbar-style controls (e.g. toggles),\n * set this to render `role=\"toolbar\"` instead of `role=\"group\"`.\n */\n toolbar?: boolean;\n /**\n * Intent applied to every Button / IconButton child that does not set\n * its own `intent`. Defaults to `outline` — grouped buttons are peers,\n * not three solid-primary CTAs.\n */\n intent?: ButtonIntent;\n}\n\nexport const ButtonGroup = forwardRef<HTMLDivElement, ButtonGroupProps>(\n (\n {\n className,\n orientation = 'horizontal',\n separator = false,\n toolbar = false,\n intent = 'outline',\n label,\n children,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const accessibleLabel = label ?? t('buttonGroup.label', 'Button group');\n\n // Roving tabindex — required by the WAI-ARIA toolbar pattern.\n // When `toolbar` is true, one child owns `tabIndex=0` and the rest are\n // `-1`. Arrow keys / Home / End move focus between children, respecting\n // orientation and RTL. Plain `group` mode keeps every child natively\n // tabbable.\n const rovingTabindex = toolbar;\n const buttonsRef = useRef<Array<HTMLButtonElement | null>>([]);\n const [focusIndex, setFocusIndex] = useState(0);\n\n const rootRef = useRef<HTMLDivElement | null>(null);\n const [isRTL, setIsRTL] = useState(false);\n useIsomorphicLayoutEffect(() => {\n if (typeof window === 'undefined') return;\n const node = rootRef.current;\n if (!node) return;\n setIsRTL(window.getComputedStyle(node).direction === 'rtl');\n }, []);\n\n const handleRootKeyDown = useCallback(\n (event: ReactKeyboardEvent<HTMLDivElement>) => {\n if (!rovingTabindex) return;\n const count = buttonsRef.current.filter(Boolean).length;\n if (count === 0) return;\n\n const forwardKey =\n orientation === 'vertical'\n ? 'ArrowDown'\n : isRTL\n ? 'ArrowLeft'\n : 'ArrowRight';\n const backwardKey =\n orientation === 'vertical'\n ? 'ArrowUp'\n : isRTL\n ? 'ArrowRight'\n : 'ArrowLeft';\n\n let next: number | null = null;\n if (event.key === forwardKey) next = (focusIndex + 1) % count;\n else if (event.key === backwardKey)\n next = (focusIndex - 1 + count) % count;\n else if (event.key === 'Home') next = 0;\n else if (event.key === 'End') next = count - 1;\n if (next === null) return;\n\n // Skip over disabled children.\n const maxAttempts = count;\n let attempts = 0;\n let candidate = next;\n while (attempts < maxAttempts) {\n const el = buttonsRef.current[candidate];\n if (\n el &&\n el.getAttribute('aria-disabled') !== 'true' &&\n !el.disabled\n ) {\n break;\n }\n candidate =\n event.key === backwardKey || event.key === 'End'\n ? (candidate - 1 + count) % count\n : (candidate + 1) % count;\n attempts += 1;\n }\n event.preventDefault();\n setFocusIndex(candidate);\n buttonsRef.current[candidate]?.focus();\n },\n [rovingTabindex, orientation, isRTL, focusIndex],\n );\n\n const enhanced = Children.map(children, (child, index) => {\n if (!isValidElement(child)) return child;\n const childEl = child as ReactElement<{\n intent?: ButtonIntent;\n tabIndex?: number;\n onFocus?: React.FocusEventHandler<HTMLButtonElement>;\n ref?: React.Ref<HTMLButtonElement>;\n }>;\n\n const setMergedRef = (node: HTMLButtonElement | null) => {\n buttonsRef.current[index] = node;\n const originalRef = (\n childEl as unknown as { ref?: React.Ref<HTMLButtonElement> }\n ).ref;\n if (typeof originalRef === 'function') originalRef(node);\n else if (\n originalRef !== null &&\n originalRef !== undefined &&\n typeof originalRef === 'object'\n ) {\n (\n originalRef as React.MutableRefObject<HTMLButtonElement | null>\n ).current = node;\n }\n };\n\n const overrides = {\n intent: childEl.props.intent ?? intent,\n tabIndex: rovingTabindex\n ? index === focusIndex\n ? 0\n : -1\n : childEl.props.tabIndex,\n onFocus: (ev: React.FocusEvent<HTMLButtonElement>) => {\n if (rovingTabindex) setFocusIndex(index);\n childEl.props.onFocus?.(ev);\n },\n ref: setMergedRef,\n } as unknown as Partial<{ intent?: ButtonIntent }>;\n\n return cloneElement(childEl, overrides);\n });\n\n const mergedRootRef = (node: HTMLDivElement | null) => {\n rootRef.current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref && typeof ref === 'object') {\n (ref as React.MutableRefObject<HTMLDivElement | null>).current = node;\n }\n };\n\n return (\n <div\n ref={mergedRootRef}\n role={toolbar ? 'toolbar' : 'group'}\n aria-label={accessibleLabel}\n aria-orientation={toolbar ? (orientation ?? 'horizontal') : undefined}\n data-component=\"button-group\"\n onKeyDown={handleRootKeyDown}\n className={buttonGroupVariants({ orientation, separator, className })}\n {...props}\n >\n {enhanced}\n </div>\n );\n },\n);\n\nButtonGroup.displayName = 'ButtonGroup';\n"],"names":["buttonGroupVariants","cva","ButtonGroup","forwardRef","className","orientation","separator","toolbar","intent","label","children","props","ref","t","useTranslation","accessibleLabel","rovingTabindex","buttonsRef","useRef","focusIndex","setFocusIndex","useState","rootRef","isRTL","setIsRTL","useIsomorphicLayoutEffect","node","handleRootKeyDown","useCallback","event","count","forwardKey","backwardKey","next","maxAttempts","attempts","candidate","el","_a","enhanced","Children","child","index","isValidElement","childEl","setMergedRef","originalRef","overrides","ev","_b","cloneElement","jsx"],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import nt from "@fullcalendar/resource-timeline";
|
|
|
12
12
|
import at from "@fullcalendar/timeline";
|
|
13
13
|
import st from "@fullcalendar/interaction";
|
|
14
14
|
import { u as ot } from "./use-prefers-reduced-motion-BMwIQRjB.js";
|
|
15
|
-
import { u as it } from "./registry-
|
|
15
|
+
import { u as it } from "./registry-nPAVE19X.js";
|
|
16
16
|
import { C as de } from "./chevron-right-BrpYejk0.js";
|
|
17
17
|
import { C as ce } from "./chevron-left-CX1jqD2M.js";
|
|
18
18
|
import { c as V } from "./createLucideIcon-CrFbzy84.js";
|
|
@@ -285,7 +285,7 @@ function _t(r) {
|
|
|
285
285
|
}
|
|
286
286
|
return r.startsWith("en-US") || r.startsWith("he") || r.startsWith("ar-SA") ? 0 : 1;
|
|
287
287
|
}
|
|
288
|
-
function
|
|
288
|
+
function Et() {
|
|
289
289
|
const { i18n: r } = ae(), [s, d] = ne(() => {
|
|
290
290
|
if (typeof document > "u") return !1;
|
|
291
291
|
const u = document.documentElement.getAttribute("dir"), h = typeof r.dir == "function" ? r.dir() : "ltr";
|
|
@@ -303,7 +303,7 @@ function Rt() {
|
|
|
303
303
|
}), () => u.disconnect();
|
|
304
304
|
}, [r]), s;
|
|
305
305
|
}
|
|
306
|
-
function
|
|
306
|
+
function Rt({
|
|
307
307
|
arg: r,
|
|
308
308
|
locale: s,
|
|
309
309
|
resources: d,
|
|
@@ -398,7 +398,7 @@ const fe = [
|
|
|
398
398
|
"ds:min-w-[var(--min-target-size)]"
|
|
399
399
|
].join(" "), se = me(
|
|
400
400
|
({ title: r, onToday: s, onPrev: d, onNext: u, end: h, className: D }, N) => {
|
|
401
|
-
const { t: m } = ae(), v =
|
|
401
|
+
const { t: m } = ae(), v = Et(), f = v ? de : ce, y = v ? ce : de, A = [
|
|
402
402
|
"ds:calendar-toolbar",
|
|
403
403
|
"ds:sticky ds:top-0 ds:z-20",
|
|
404
404
|
"ds:flex ds:items-center ds:gap-[var(--spacing-sm)]",
|
|
@@ -500,7 +500,7 @@ const ve = me(
|
|
|
500
500
|
resourceLayout: F = "vertical",
|
|
501
501
|
showResourceInitials: oe = !1
|
|
502
502
|
}, ye) => {
|
|
503
|
-
const { t: o, i18n: _ } = ae(), S = M(null), ee = M(null), b = M(null), w = M(null),
|
|
503
|
+
const { t: o, i18n: _ } = ae(), S = M(null), ee = M(null), b = M(null), w = M(null), E = M(null), H = D ?? _.language ?? "en", [xe, Te] = ne(() => {
|
|
504
504
|
if (typeof document > "u") return "ltr";
|
|
505
505
|
const e = document.documentElement.getAttribute("dir"), t = typeof _.dir == "function" ? _.dir() : "ltr";
|
|
506
506
|
return e === "rtl" || t === "rtl" ? "rtl" : "ltr";
|
|
@@ -604,17 +604,17 @@ const ve = me(
|
|
|
604
604
|
if (!n) return;
|
|
605
605
|
const c = `[data-event-id="${CSS.escape(t)}"]`, i = n.querySelector(c);
|
|
606
606
|
if (i) {
|
|
607
|
-
if (w.current && (clearTimeout(w.current), w.current = null),
|
|
607
|
+
if (w.current && (clearTimeout(w.current), w.current = null), E.current && E.current !== i && E.current.classList.remove("calendar-event-focused"), i.scrollIntoView({
|
|
608
608
|
behavior: q ? "auto" : "smooth",
|
|
609
609
|
block: "center"
|
|
610
|
-
}), i.classList.add("calendar-event-focused"),
|
|
611
|
-
const g = i.getAttribute("aria-label") ?? t,
|
|
610
|
+
}), i.classList.add("calendar-event-focused"), E.current = i, b.current) {
|
|
611
|
+
const g = i.getAttribute("aria-label") ?? t, R = p ? "•••" : g;
|
|
612
612
|
b.current.textContent = o("calendar.focusedEvent", {
|
|
613
|
-
title:
|
|
613
|
+
title: R
|
|
614
614
|
});
|
|
615
615
|
}
|
|
616
616
|
w.current = setTimeout(() => {
|
|
617
|
-
i.classList.remove("calendar-event-focused"),
|
|
617
|
+
i.classList.remove("calendar-event-focused"), E.current === i && (E.current = null), w.current = null;
|
|
618
618
|
}, 3e3);
|
|
619
619
|
}
|
|
620
620
|
}
|
|
@@ -742,7 +742,7 @@ const ve = me(
|
|
|
742
742
|
const t = e.oldEvent.end;
|
|
743
743
|
if (!t)
|
|
744
744
|
return;
|
|
745
|
-
const n = e.event.end, c = e.event.start ?? t;
|
|
745
|
+
const n = e.event.end, c = e.event.start ?? e.oldEvent.start ?? t;
|
|
746
746
|
if (m({
|
|
747
747
|
event: re(e.event),
|
|
748
748
|
oldEnd: t,
|
|
@@ -750,19 +750,19 @@ const ve = me(
|
|
|
750
750
|
}), b.current) {
|
|
751
751
|
const i = Math.round(
|
|
752
752
|
(n.getTime() - c.getTime()) / 6e4
|
|
753
|
-
), g = e.event.extendedProps ?? {},
|
|
753
|
+
), g = e.event.extendedProps ?? {}, R = p ? g.privacyModeTitle ?? "•••" : e.event.title;
|
|
754
754
|
b.current.textContent = o("calendar.eventResized", {
|
|
755
|
-
title:
|
|
755
|
+
title: R,
|
|
756
756
|
duration: i
|
|
757
757
|
});
|
|
758
758
|
}
|
|
759
759
|
};
|
|
760
|
-
}, [m, p, o]),
|
|
760
|
+
}, [m, p, o]), Ee = l(() => {
|
|
761
761
|
if (f)
|
|
762
762
|
return (e) => {
|
|
763
763
|
e.event.start && f(re(e.event));
|
|
764
764
|
};
|
|
765
|
-
}, [f]),
|
|
765
|
+
}, [f]), Re = l(() => {
|
|
766
766
|
if (y)
|
|
767
767
|
return (e) => {
|
|
768
768
|
var t;
|
|
@@ -792,7 +792,7 @@ const ve = me(
|
|
|
792
792
|
[u, F]
|
|
793
793
|
), Le = B(
|
|
794
794
|
(e) => {
|
|
795
|
-
const t = e.resource.extendedProps, n = e.resource.title, c = t.shortTitle, i = t.color, g = t.shortTitleTextColor,
|
|
795
|
+
const t = e.resource.extendedProps, n = e.resource.title, c = t.shortTitle, i = t.color, g = t.shortTitleTextColor, R = i || g ? {
|
|
796
796
|
...i ? { "--resource-color": i } : {},
|
|
797
797
|
...g ? {
|
|
798
798
|
"--resource-initials-text-color": g
|
|
@@ -810,7 +810,7 @@ const ve = me(
|
|
|
810
810
|
"span",
|
|
811
811
|
{
|
|
812
812
|
className: Ke,
|
|
813
|
-
style:
|
|
813
|
+
style: R,
|
|
814
814
|
"aria-hidden": "true",
|
|
815
815
|
children: c
|
|
816
816
|
}
|
|
@@ -823,7 +823,7 @@ const ve = me(
|
|
|
823
823
|
"span",
|
|
824
824
|
{
|
|
825
825
|
className: "resource-dot ds:[background-color:var(--resource-color)]",
|
|
826
|
-
style:
|
|
826
|
+
style: R,
|
|
827
827
|
"aria-hidden": "true"
|
|
828
828
|
}
|
|
829
829
|
),
|
|
@@ -976,7 +976,7 @@ const ve = me(
|
|
|
976
976
|
nowIndicator: k,
|
|
977
977
|
eventLongPressDelay: q ? 0 : 1e3,
|
|
978
978
|
eventDragMinDistance: q ? 0 : 5,
|
|
979
|
-
eventContent: (e) =>
|
|
979
|
+
eventContent: (e) => Rt({
|
|
980
980
|
arg: e,
|
|
981
981
|
locale: H,
|
|
982
982
|
resources: d ?? [],
|
|
@@ -984,11 +984,11 @@ const ve = me(
|
|
|
984
984
|
privacyMode: p,
|
|
985
985
|
showTime: Y
|
|
986
986
|
}),
|
|
987
|
-
eventClick:
|
|
987
|
+
eventClick: Ee,
|
|
988
988
|
eventDrop: Se,
|
|
989
989
|
eventResize: _e,
|
|
990
990
|
eventResizeStart: v,
|
|
991
|
-
select:
|
|
991
|
+
select: Re,
|
|
992
992
|
datesSet: Me
|
|
993
993
|
}
|
|
994
994
|
)
|
|
@@ -1005,4 +1005,4 @@ export {
|
|
|
1005
1005
|
Ct as c,
|
|
1006
1006
|
le as r
|
|
1007
1007
|
};
|
|
1008
|
-
//# sourceMappingURL=calendar-
|
|
1008
|
+
//# sourceMappingURL=calendar-YHFknAGv.js.map
|