@alfadocs/ui-kit 0.1.2 → 0.1.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-BJD1aM67.js → accordion-B6fyINUk.js} +10 -9
- package/dist/_chunks/accordion-B6fyINUk.js.map +1 -0
- package/dist/_chunks/{agenda-card-DXOgg8IX.js → agenda-card-C_hQGErS.js} +12 -11
- package/dist/_chunks/{agenda-card-DXOgg8IX.js.map → agenda-card-C_hQGErS.js.map} +1 -1
- package/dist/_chunks/{agenda-tray-DEO8XL8V.js → agenda-tray-CBaVMJLO.js} +6 -5
- package/dist/_chunks/{agenda-tray-DEO8XL8V.js.map → agenda-tray-CBaVMJLO.js.map} +1 -1
- package/dist/_chunks/{ai-prompt-input-8IShJ-GX.js → ai-prompt-input-K94oVLG2.js} +17 -16
- package/dist/_chunks/ai-prompt-input-K94oVLG2.js.map +1 -0
- package/dist/_chunks/{alert-ETrF7Q8J.js → alert-rOM4EG0P.js} +12 -11
- package/dist/_chunks/{alert-ETrF7Q8J.js.map → alert-rOM4EG0P.js.map} +1 -1
- package/dist/_chunks/{app-frame-uq2Gy0vs.js → app-frame-6d7Lu4ea.js} +2 -1
- package/dist/_chunks/{app-frame-uq2Gy0vs.js.map → app-frame-6d7Lu4ea.js.map} +1 -1
- package/dist/_chunks/{aspect-ratio-BqU4itGW.js → aspect-ratio-CxsdG8vk.js} +9 -8
- package/dist/_chunks/{aspect-ratio-BqU4itGW.js.map → aspect-ratio-CxsdG8vk.js.map} +1 -1
- package/dist/_chunks/{audio-recorder-BvisG0Wt.js → audio-recorder-Cn8z2zC9.js} +6 -5
- package/dist/_chunks/{audio-recorder-BvisG0Wt.js.map → audio-recorder-Cn8z2zC9.js.map} +1 -1
- package/dist/_chunks/{audio-visualiser-B4u4goV5.js → audio-visualiser-CeMPCZkd.js} +2 -1
- package/dist/_chunks/{audio-visualiser-B4u4goV5.js.map → audio-visualiser-CeMPCZkd.js.map} +1 -1
- package/dist/_chunks/{autocomplete.agent-BmrpzsfW.js → autocomplete.agent-DRrp-Rsx.js} +3 -2
- package/dist/_chunks/{autocomplete.agent-BmrpzsfW.js.map → autocomplete.agent-DRrp-Rsx.js.map} +1 -1
- package/dist/_chunks/{avatar-DTQY5qIZ.js → avatar-Biffh-_H.js} +2 -1
- package/dist/_chunks/{avatar-DTQY5qIZ.js.map → avatar-Biffh-_H.js.map} +1 -1
- package/dist/_chunks/{badge-BbbBRweN.js → badge-mrstWxve.js} +14 -13
- package/dist/_chunks/{badge-BbbBRweN.js.map → badge-mrstWxve.js.map} +1 -1
- package/dist/_chunks/{balance-cell-renderer-DjR0rPS6.js → balance-cell-renderer-CiyezQhi.js} +11 -11
- package/dist/_chunks/{balance-cell-renderer-DjR0rPS6.js.map → balance-cell-renderer-CiyezQhi.js.map} +1 -1
- package/dist/_chunks/{breadcrumb-pdUacgm1.js → breadcrumb-CcZovmIq.js} +2 -1
- package/dist/_chunks/breadcrumb-CcZovmIq.js.map +1 -0
- package/dist/_chunks/{button-group-BtTHSyU0.js → button-group-CONver7M.js} +9 -8
- package/dist/_chunks/{button-group-BtTHSyU0.js.map → button-group-CONver7M.js.map} +1 -1
- package/dist/_chunks/{card-DeItIBcV.js → card-BEy58ZKp.js} +2 -1
- package/dist/_chunks/card-BEy58ZKp.js.map +1 -0
- package/dist/_chunks/{chat-container-ChdJTH0J.js → chat-container-BZvQ3_yT.js} +2 -2
- package/dist/_chunks/{chat-container-ChdJTH0J.js.map → chat-container-BZvQ3_yT.js.map} +1 -1
- package/dist/_chunks/{chat-input-C-B4snVJ.js → chat-input-xiBIujMv.js} +3 -3
- package/dist/_chunks/chat-input-xiBIujMv.js.map +1 -0
- package/dist/_chunks/{chat-message-cFNbQYRH.js → chat-message-BtxUyugB.js} +9 -8
- package/dist/_chunks/chat-message-BtxUyugB.js.map +1 -0
- package/dist/_chunks/{checkbox-DMzgtnqw.js → checkbox-Ni6C_KJg.js} +11 -11
- package/dist/_chunks/{checkbox-DMzgtnqw.js.map → checkbox-Ni6C_KJg.js.map} +1 -1
- package/dist/_chunks/{checkbox-group-DBnIBRT_.js → checkbox-group-BFZ4oN5t.js} +8 -7
- package/dist/_chunks/checkbox-group-BFZ4oN5t.js.map +1 -0
- package/dist/_chunks/{collapsible-DPGQnHZh.js → collapsible-fFMqzpdL.js} +8 -7
- package/dist/_chunks/collapsible-fFMqzpdL.js.map +1 -0
- package/dist/_chunks/{color-picker-DkMFcK2m.js → color-picker-Cl3KdjJd.js} +18 -16
- package/dist/_chunks/{color-picker-DkMFcK2m.js.map → color-picker-Cl3KdjJd.js.map} +1 -1
- package/dist/_chunks/{combobox.agent-9w6W1Jct.js → combobox.agent-DjdivI3X.js} +2 -1
- package/dist/_chunks/combobox.agent-DjdivI3X.js.map +1 -0
- package/dist/_chunks/{command-palette.agent-Dg7jhOIc.js → command-palette.agent-BUjzr2ET.js} +2 -1
- package/dist/_chunks/command-palette.agent-BUjzr2ET.js.map +1 -0
- package/dist/_chunks/{date-picker-0WQ98ZC0.js → date-picker-DYXNsWmM.js} +2 -2
- package/dist/_chunks/{date-picker-0WQ98ZC0.js.map → date-picker-DYXNsWmM.js.map} +1 -1
- package/dist/_chunks/{date-range-picker-CtwEwoyr.js → date-range-picker-BcNDJI7m.js} +2 -2
- package/dist/_chunks/date-range-picker-BcNDJI7m.js.map +1 -0
- package/dist/_chunks/{date-time-picker-Df3OJ2_C.js → date-time-picker-CmGiTU__.js} +3 -3
- package/dist/_chunks/{date-time-picker-Df3OJ2_C.js.map → date-time-picker-CmGiTU__.js.map} +1 -1
- package/dist/_chunks/{description-list-Bk3p71qY.js → description-list-C_1NX8P3.js} +3 -2
- package/dist/_chunks/description-list-C_1NX8P3.js.map +1 -0
- package/dist/_chunks/{dialog.agent-CtMkDinJ.js → dialog.agent-C2lP9H0h.js} +2 -2
- package/dist/_chunks/{dialog.agent-CtMkDinJ.js.map → dialog.agent-C2lP9H0h.js.map} +1 -1
- package/dist/_chunks/{dropdown-menu-BnVUeVG3.js → dropdown-menu-2HgU1Emf.js} +4 -3
- package/dist/_chunks/dropdown-menu-2HgU1Emf.js.map +1 -0
- package/dist/_chunks/{empty-state-DPUnQp0A.js → empty-state-BHrItOiE.js} +2 -1
- package/dist/_chunks/{empty-state-DPUnQp0A.js.map → empty-state-BHrItOiE.js.map} +1 -1
- package/dist/_chunks/{file-upload.agent-DVMxMeDA.js → file-upload.agent-LlC0W468.js} +2 -2
- package/dist/_chunks/{file-upload.agent-DVMxMeDA.js.map → file-upload.agent-LlC0W468.js.map} +1 -1
- package/dist/_chunks/{flag-C3BUEwHH.js → flag-DZ6V7-hU.js} +3 -1
- package/dist/_chunks/{flag-C3BUEwHH.js.map → flag-DZ6V7-hU.js.map} +1 -1
- package/dist/_chunks/{floating-action-button-DjRhFQdd.js → floating-action-button-Cnw-f6AG.js} +5 -4
- package/dist/_chunks/{floating-action-button-DjRhFQdd.js.map → floating-action-button-Cnw-f6AG.js.map} +1 -1
- package/dist/_chunks/{form-field-DI5LY5aG.js → form-field-BfsPLTSc.js} +2 -1
- package/dist/_chunks/form-field-BfsPLTSc.js.map +1 -0
- package/dist/_chunks/{freemium-paywall-CCsX3GhK.js → freemium-paywall-Dr9aOtOC.js} +23 -22
- package/dist/_chunks/freemium-paywall-Dr9aOtOC.js.map +1 -0
- package/dist/_chunks/{header-CVQxeLc_.js → header-BpU9U-1X.js} +3 -2
- package/dist/_chunks/{header-CVQxeLc_.js.map → header-BpU9U-1X.js.map} +1 -1
- package/dist/_chunks/{icon-button-SWpSs9S6.js → icon-button-CNjWCD1X.js} +9 -8
- package/dist/_chunks/icon-button-CNjWCD1X.js.map +1 -0
- package/dist/_chunks/{icon-button-group-BnhkUWUg.js → icon-button-group-DeV3FpNY.js} +26 -25
- package/dist/_chunks/{icon-button-group-BnhkUWUg.js.map → icon-button-group-DeV3FpNY.js.map} +1 -1
- package/dist/_chunks/{kbd-DTcIjYA7.js → kbd-8baVw3KU.js} +35 -31
- package/dist/_chunks/kbd-8baVw3KU.js.map +1 -0
- package/dist/_chunks/{key-value-pair-Cm-pSE6k.js → key-value-pair-C9hpjC_B.js} +13 -12
- package/dist/_chunks/{key-value-pair-Cm-pSE6k.js.map → key-value-pair-C9hpjC_B.js.map} +1 -1
- package/dist/_chunks/{leo-sidebar-SqGAp1vx.js → leo-sidebar-CNjZqljo.js} +11 -11
- package/dist/_chunks/{leo-sidebar-SqGAp1vx.js.map → leo-sidebar-CNjZqljo.js.map} +1 -1
- package/dist/_chunks/{list-Cwe8mcmh.js → list-B1ozIjQe.js} +4 -1
- package/dist/_chunks/list-B1ozIjQe.js.map +1 -0
- package/dist/_chunks/live-region-C41SO3cA.js +58 -0
- package/dist/_chunks/{live-region-COggO6x6.js.map → live-region-C41SO3cA.js.map} +1 -1
- package/dist/_chunks/{logo-3wrZGpwg.js → logo-BpFoCL-s.js} +7 -7
- package/dist/_chunks/{logo-3wrZGpwg.js.map → logo-BpFoCL-s.js.map} +1 -1
- package/dist/_chunks/{matrix-rain-gsHqSvW7.js → matrix-rain-BEkvux64.js} +2 -1
- package/dist/_chunks/{matrix-rain-gsHqSvW7.js.map → matrix-rain-BEkvux64.js.map} +1 -1
- package/dist/_chunks/{message-card-B0oGrI3i.js → message-card-CZzNO4ov.js} +5 -4
- package/dist/_chunks/message-card-CZzNO4ov.js.map +1 -0
- package/dist/_chunks/{message-tray-DZ6oZ0cs.js → message-tray-BWbjXW3F.js} +6 -5
- package/dist/_chunks/message-tray-BWbjXW3F.js.map +1 -0
- package/dist/_chunks/{multi-select.agent-BDEVGMmW.js → multi-select.agent-BSGEW10d.js} +19 -18
- package/dist/_chunks/multi-select.agent-BSGEW10d.js.map +1 -0
- package/dist/_chunks/{navigation-menu-NjwxyshT.js → navigation-menu-DxOMvrKM.js} +2 -1
- package/dist/_chunks/navigation-menu-DxOMvrKM.js.map +1 -0
- package/dist/_chunks/{notification-card-C73GqjHH.js → notification-card-DgW-vVg-.js} +4 -3
- package/dist/_chunks/{notification-card-C73GqjHH.js.map → notification-card-DgW-vVg-.js.map} +1 -1
- package/dist/_chunks/{notification-tray-a8a_nut-.js → notification-tray-CKUgl2jc.js} +6 -5
- package/dist/_chunks/{notification-tray-a8a_nut-.js.map → notification-tray-CKUgl2jc.js.map} +1 -1
- package/dist/_chunks/{number-input-DFQtl5K2.js → number-input-BPPhekLu.js} +16 -15
- package/dist/_chunks/{number-input-DFQtl5K2.js.map → number-input-BPPhekLu.js.map} +1 -1
- package/dist/_chunks/{otp-input-C2FdizHh.js → otp-input-De5_Ih7B.js} +2 -1
- package/dist/_chunks/{otp-input-C2FdizHh.js.map → otp-input-De5_Ih7B.js.map} +1 -1
- package/dist/_chunks/{pagination.agent-sxokDphY.js → pagination.agent-CmA0Ocr5.js} +2 -1
- package/dist/_chunks/pagination.agent-CmA0Ocr5.js.map +1 -0
- package/dist/_chunks/{password-input-C6PvKyQV.js → password-input-DAT5HQth.js} +7 -7
- package/dist/_chunks/password-input-DAT5HQth.js.map +1 -0
- package/dist/_chunks/{patient-shell-B4vKnuOf.js → patient-shell-BzHhg6uA.js} +9 -9
- package/dist/_chunks/{patient-shell-B4vKnuOf.js.map → patient-shell-BzHhg6uA.js.map} +1 -1
- package/dist/_chunks/{payment-form-175AzK-1.js → payment-form-YlxrCpZQ.js} +3 -3
- package/dist/_chunks/{payment-form-175AzK-1.js.map → payment-form-YlxrCpZQ.js.map} +1 -1
- package/dist/_chunks/{pdf-viewer.agent-DuGfSoep.js → pdf-viewer.agent-sMned5Xn.js} +3 -3
- package/dist/_chunks/{pdf-viewer.agent-DuGfSoep.js.map → pdf-viewer.agent-sMned5Xn.js.map} +1 -1
- package/dist/_chunks/{phone-input-BavVyXxZ.js → phone-input-BuRe5PyI.js} +3 -2
- package/dist/_chunks/phone-input-BuRe5PyI.js.map +1 -0
- package/dist/_chunks/{popover-BWgOopjI.js → popover-Ds1iOdiv.js} +3 -2
- package/dist/_chunks/popover-Ds1iOdiv.js.map +1 -0
- package/dist/_chunks/{privacy-lock-DWL7m_VT.js → privacy-lock-KEruBpM1.js} +16 -15
- package/dist/_chunks/privacy-lock-KEruBpM1.js.map +1 -0
- package/dist/_chunks/{radio-B_gvGU29.js → radio-XSSNX3Af.js} +8 -7
- package/dist/_chunks/radio-XSSNX3Af.js.map +1 -0
- package/dist/_chunks/{radio-group-Bn8Wt0yc.js → radio-group-DBrUOPcy.js} +19 -18
- package/dist/_chunks/radio-group-DBrUOPcy.js.map +1 -0
- package/dist/_chunks/{scroll-area-Ba99pJ_R.js → scroll-area-HIq0hJyJ.js} +14 -12
- package/dist/_chunks/scroll-area-HIq0hJyJ.js.map +1 -0
- package/dist/_chunks/{search-bar-VoTqJhRp.js → search-bar-9Zbew4yM.js} +4 -3
- package/dist/_chunks/search-bar-9Zbew4yM.js.map +1 -0
- package/dist/_chunks/{search-input-D6rarD0_.js → search-input-CtkWITO2.js} +28 -28
- package/dist/_chunks/{search-input-D6rarD0_.js.map → search-input-CtkWITO2.js.map} +1 -1
- package/dist/_chunks/{select-CQxhOXVE.js → select-DdAOtomN.js} +18 -17
- package/dist/_chunks/select-DdAOtomN.js.map +1 -0
- package/dist/_chunks/{separator-BRQHi8s0.js → separator-B4wXDLNC.js} +9 -8
- package/dist/_chunks/{separator-BRQHi8s0.js.map → separator-B4wXDLNC.js.map} +1 -1
- package/dist/_chunks/{sheet-CKsuHuHB.js → sheet-D7GRhnWw.js} +3 -2
- package/dist/_chunks/sheet-D7GRhnWw.js.map +1 -0
- package/dist/_chunks/{sidebar-CiEpSH9e.js → sidebar-Dc2ffrbf.js} +4 -3
- package/dist/_chunks/sidebar-Dc2ffrbf.js.map +1 -0
- package/dist/_chunks/sign-in-with-alfadocs-button-BotwPDcW.js +45 -0
- package/dist/_chunks/{sign-in-with-alfadocs-button-BDErAgG2.js.map → sign-in-with-alfadocs-button-BotwPDcW.js.map} +1 -1
- package/dist/_chunks/{skeleton-ClO1v5GE.js → skeleton-DAdPFx9d.js} +18 -16
- package/dist/_chunks/{skeleton-ClO1v5GE.js.map → skeleton-DAdPFx9d.js.map} +1 -1
- package/dist/_chunks/{skip-link-CASJkBOe.js → skip-link-DmZ3c6cb.js} +12 -11
- package/dist/_chunks/{skip-link-CASJkBOe.js.map → skip-link-DmZ3c6cb.js.map} +1 -1
- package/dist/_chunks/{slider-BVBlOW_l.js → slider-DjyRt3Mp.js} +2 -1
- package/dist/_chunks/slider-DjyRt3Mp.js.map +1 -0
- package/dist/_chunks/{slot-grid-B4WvLEwT.js → slot-grid-WHc5A8-z.js} +5 -4
- package/dist/_chunks/{slot-grid-B4WvLEwT.js.map → slot-grid-WHc5A8-z.js.map} +1 -1
- package/dist/_chunks/{spinner-CoAOGcDa.js → spinner-GCcv67vh.js} +2 -1
- package/dist/_chunks/spinner-GCcv67vh.js.map +1 -0
- package/dist/_chunks/{stat-D76MNHzK.js → stat-DUB6g90R.js} +3 -1
- package/dist/_chunks/{stat-D76MNHzK.js.map → stat-DUB6g90R.js.map} +1 -1
- package/dist/_chunks/{stepper-accordion-DHQ80A4v.js → stepper-accordion-2_7Pw0tC.js} +2 -1
- package/dist/_chunks/{stepper-accordion-DHQ80A4v.js.map → stepper-accordion-2_7Pw0tC.js.map} +1 -1
- package/dist/_chunks/{stepper-calendar-BZUJpj8i.js → stepper-calendar-CWZcFgt_.js} +7 -6
- package/dist/_chunks/{stepper-calendar-BZUJpj8i.js.map → stepper-calendar-CWZcFgt_.js.map} +1 -1
- package/dist/_chunks/{stepper-progress-DMZ5w5VR.js → stepper-progress-rE7tn7WY.js} +12 -11
- package/dist/_chunks/{stepper-progress-DMZ5w5VR.js.map → stepper-progress-rE7tn7WY.js.map} +1 -1
- package/dist/_chunks/{streaming-text-D0cW8pwq.js → streaming-text-BgjCTVOw.js} +6 -5
- package/dist/_chunks/{streaming-text-D0cW8pwq.js.map → streaming-text-BgjCTVOw.js.map} +1 -1
- package/dist/_chunks/{suggestion-chip-BgNFpPEE.js → suggestion-chip-6AB40rxz.js} +2 -1
- package/dist/_chunks/{suggestion-chip-BgNFpPEE.js.map → suggestion-chip-6AB40rxz.js.map} +1 -1
- package/dist/_chunks/{switch-DtLPKO0p.js → switch-DhSORO9C.js} +2 -1
- package/dist/_chunks/{switch-DtLPKO0p.js.map → switch-DhSORO9C.js.map} +1 -1
- package/dist/_chunks/{tabs.agent-sQAHxebC.js → tabs.agent-BtaNGxRh.js} +3 -2
- package/dist/_chunks/tabs.agent-BtaNGxRh.js.map +1 -0
- package/dist/_chunks/{tag-CfSZZN2f.js → tag--uLKOb9f.js} +17 -14
- package/dist/_chunks/{tag-CfSZZN2f.js.map → tag--uLKOb9f.js.map} +1 -1
- package/dist/_chunks/{task-card-B5xfiFg5.js → task-card-BeSuntXP.js} +11 -10
- package/dist/_chunks/{task-card-B5xfiFg5.js.map → task-card-BeSuntXP.js.map} +1 -1
- package/dist/_chunks/{task-tray-CWvVxWM0.js → task-tray-pRk6u8Ik.js} +10 -9
- package/dist/_chunks/{task-tray-CWvVxWM0.js.map → task-tray-pRk6u8Ik.js.map} +1 -1
- package/dist/_chunks/{text-area-iPDv7Nah.js → text-area-xf9-6iDf.js} +13 -13
- package/dist/_chunks/{text-area-iPDv7Nah.js.map → text-area-xf9-6iDf.js.map} +1 -1
- package/dist/_chunks/{text-input-lh6kRXZS.js → text-input-exh7VD7D.js} +10 -9
- package/dist/_chunks/{text-input-lh6kRXZS.js.map → text-input-exh7VD7D.js.map} +1 -1
- package/dist/_chunks/theme-root-DDb0TJjd.js +18 -0
- package/dist/_chunks/{theme-root-vapFjsnt.js.map → theme-root-DDb0TJjd.js.map} +1 -1
- package/dist/_chunks/{theme-toggle-CEaPghpm.js → theme-toggle-CJgA6G24.js} +42 -39
- package/dist/_chunks/theme-toggle-CJgA6G24.js.map +1 -0
- package/dist/_chunks/{time-picker-Crc87DU3.js → time-picker-D-EueWUG.js} +2 -1
- package/dist/_chunks/{time-picker-Crc87DU3.js.map → time-picker-D-EueWUG.js.map} +1 -1
- package/dist/_chunks/{timeline-Ym2DRmtu.js → timeline-DIueH4TJ.js} +5 -4
- package/dist/_chunks/timeline-DIueH4TJ.js.map +1 -0
- package/dist/_chunks/{timestamp-DmSt92P1.js → timestamp-BV2lC-wV.js} +2 -1
- package/dist/_chunks/{timestamp-DmSt92P1.js.map → timestamp-BV2lC-wV.js.map} +1 -1
- package/dist/_chunks/{toast-DoMNrzwm.js → toast-q0SlabGr.js} +2 -2
- package/dist/_chunks/{toast-DoMNrzwm.js.map → toast-q0SlabGr.js.map} +1 -1
- package/dist/_chunks/{tooltip-Dp3u8jGz.js → tooltip-DHik5yRI.js} +2 -1
- package/dist/_chunks/{tooltip-Dp3u8jGz.js.map → tooltip-DHik5yRI.js.map} +1 -1
- package/dist/_chunks/{transcript-panel-Bg1BTMSr.js → transcript-panel-DFnhbrlQ.js} +39 -38
- package/dist/_chunks/{transcript-panel-Bg1BTMSr.js.map → transcript-panel-DFnhbrlQ.js.map} +1 -1
- package/dist/_chunks/{typing-indicator-BRg22Rqr.js → typing-indicator-CbUBf-Dx.js} +9 -8
- package/dist/_chunks/{typing-indicator-BRg22Rqr.js.map → typing-indicator-CbUBf-Dx.js.map} +1 -1
- package/dist/_chunks/visually-hidden-BlkhaZWe.js +21 -0
- package/dist/_chunks/{visually-hidden-Y3jcdCv-.js.map → visually-hidden-BlkhaZWe.js.map} +1 -1
- package/dist/_chunks/{warning-stack-5KROOw9M.js → warning-stack-DCmO0R07.js} +25 -23
- package/dist/_chunks/warning-stack-DCmO0R07.js.map +1 -0
- package/dist/_chunks/{workflow-map-D4sjYv2d.js → workflow-map-CAM6Uy_J.js} +12 -9
- package/dist/_chunks/workflow-map-CAM6Uy_J.js.map +1 -0
- package/dist/components/accordion/accordion.d.ts.map +1 -1
- package/dist/components/accordion/index.js +1 -1
- package/dist/components/agenda-card/agenda-card.d.ts.map +1 -1
- package/dist/components/agenda-card/index.js +1 -1
- package/dist/components/agenda-tray/agenda-tray.d.ts.map +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/alert/alert.d.ts.map +1 -1
- package/dist/components/alert/index.js +1 -1
- package/dist/components/app-frame/app-frame.d.ts.map +1 -1
- package/dist/components/app-frame/index.js +1 -1
- package/dist/components/aspect-ratio/aspect-ratio.d.ts.map +1 -1
- package/dist/components/aspect-ratio/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/autocomplete.d.ts.map +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/badge.d.ts.map +1 -1
- package/dist/components/badge/index.js +1 -1
- package/dist/components/breadcrumb/breadcrumb.d.ts.map +1 -1
- package/dist/components/breadcrumb/index.js +1 -1
- package/dist/components/button/icon-button.d.ts.map +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/card/card.d.ts.map +1 -1
- package/dist/components/card/index.js +1 -1
- package/dist/components/chat-container/index.js +1 -1
- package/dist/components/chat-input/index.js +1 -1
- package/dist/components/chat-message/chat-message.d.ts.map +1 -1
- package/dist/components/chat-message/index.js +1 -1
- package/dist/components/checkbox/index.js +1 -1
- package/dist/components/checkbox-group/checkbox-group.d.ts.map +1 -1
- package/dist/components/checkbox-group/index.js +1 -1
- package/dist/components/collapsible/collapsible.d.ts.map +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/data-table/index.js +1 -1
- package/dist/components/date-picker/index.js +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/description-list.d.ts.map +1 -1
- package/dist/components/description-list/index.js +1 -1
- package/dist/components/dialog/index.js +1 -1
- package/dist/components/dropdown-menu/dropdown-menu.d.ts.map +1 -1
- package/dist/components/dropdown-menu/index.js +1 -1
- package/dist/components/empty-state/empty-state.d.ts.map +1 -1
- package/dist/components/empty-state/index.js +1 -1
- package/dist/components/file-upload/index.js +1 -1
- package/dist/components/flag/flag.d.ts.map +1 -1
- package/dist/components/flag/index.js +1 -1
- package/dist/components/floating-action-button/floating-action-button.d.ts.map +1 -1
- package/dist/components/floating-action-button/index.js +1 -1
- package/dist/components/form-field/form-field.d.ts.map +1 -1
- package/dist/components/form-field/index.js +1 -1
- package/dist/components/freemium-paywall/freemium-paywall.d.ts.map +1 -1
- package/dist/components/freemium-paywall/index.js +1 -1
- package/dist/components/header/header.d.ts.map +1 -1
- package/dist/components/header/index.js +1 -1
- 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/kbd/index.js +1 -1
- package/dist/components/kbd/kbd.d.ts.map +1 -1
- package/dist/components/key-value-pair/index.js +1 -1
- package/dist/components/key-value-pair/key-value-pair.d.ts.map +1 -1
- package/dist/components/list/index.js +1 -1
- package/dist/components/list/list.d.ts.map +1 -1
- package/dist/components/live-region/index.js +1 -1
- package/dist/components/live-region/live-region.d.ts.map +1 -1
- package/dist/components/logo/index.js +1 -1
- package/dist/components/matrix-rain/index.js +1 -1
- package/dist/components/matrix-rain/matrix-rain.d.ts.map +1 -1
- package/dist/components/message-card/index.js +1 -1
- package/dist/components/message-card/message-card.d.ts.map +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 +2 -2
- package/dist/components/navigation-menu/navigation-menu.d.ts.map +1 -1
- package/dist/components/notification-card/index.js +1 -1
- package/dist/components/notification-card/notification-card.d.ts.map +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/number-input/number-input.d.ts.map +1 -1
- package/dist/components/otp-input/index.js +1 -1
- package/dist/components/otp-input/otp-input.d.ts.map +1 -1
- package/dist/components/pagination/index.js +1 -1
- package/dist/components/pagination/pagination.d.ts.map +1 -1
- package/dist/components/password-input/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/phone-input/index.js +1 -1
- package/dist/components/phone-input/phone-input.d.ts.map +1 -1
- package/dist/components/popover/index.js +1 -1
- package/dist/components/popover/popover.d.ts.map +1 -1
- package/dist/components/privacy-lock/index.js +1 -1
- package/dist/components/privacy-lock/privacy-lock.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.d.ts.map +1 -1
- package/dist/components/radio-group/radio.d.ts.map +1 -1
- package/dist/components/scroll-area/index.js +1 -1
- package/dist/components/scroll-area/scroll-area.d.ts.map +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/select/select.d.ts.map +1 -1
- package/dist/components/separator/index.js +1 -1
- package/dist/components/separator/separator.d.ts.map +1 -1
- package/dist/components/sheet/index.js +1 -1
- package/dist/components/sheet/sheet.d.ts.map +1 -1
- package/dist/components/sidebar/index.js +1 -1
- package/dist/components/sidebar/sidebar.d.ts.map +1 -1
- package/dist/components/sign-in-with-alfadocs-button/index.js +1 -1
- package/dist/components/sign-in-with-alfadocs-button/sign-in-with-alfadocs-button.d.ts.map +1 -1
- package/dist/components/skeleton/index.js +1 -1
- package/dist/components/skeleton/skeleton.d.ts.map +1 -1
- package/dist/components/skip-link/index.js +1 -1
- package/dist/components/skip-link/skip-link.d.ts.map +1 -1
- package/dist/components/slider/index.js +1 -1
- package/dist/components/slider/slider.d.ts.map +1 -1
- package/dist/components/slot-grid/index.js +1 -1
- package/dist/components/slot-grid/slot-grid.d.ts.map +1 -1
- package/dist/components/spinner/index.js +1 -1
- package/dist/components/spinner/spinner.d.ts.map +1 -1
- package/dist/components/stat/index.js +1 -1
- package/dist/components/stat/stat.d.ts.map +1 -1
- package/dist/components/stepper-accordion/index.js +1 -1
- package/dist/components/stepper-accordion/stepper-accordion.d.ts.map +1 -1
- package/dist/components/stepper-calendar/index.js +1 -1
- package/dist/components/stepper-calendar/stepper-calendar.d.ts.map +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/suggestion-chip/index.js +1 -1
- package/dist/components/suggestion-chip/suggestion-chip.d.ts.map +1 -1
- package/dist/components/switch/index.js +1 -1
- package/dist/components/switch/switch.d.ts.map +1 -1
- package/dist/components/tabs/index.js +1 -1
- package/dist/components/tabs/tabs.d.ts.map +1 -1
- package/dist/components/tag/index.js +1 -1
- package/dist/components/tag/tag.d.ts.map +1 -1
- package/dist/components/task-card/index.js +1 -1
- package/dist/components/task-card/task-card.d.ts.map +1 -1
- package/dist/components/task-tray/index.js +1 -1
- package/dist/components/task-tray/task-tray.d.ts.map +1 -1
- package/dist/components/text-area/index.js +1 -1
- package/dist/components/text-input/index.js +1 -1
- package/dist/components/text-input/text-input.d.ts.map +1 -1
- package/dist/components/theme-root/index.js +1 -1
- package/dist/components/theme-toggle/index.js +1 -1
- package/dist/components/theme-toggle/theme-toggle.d.ts.map +1 -1
- package/dist/components/time-picker/index.js +1 -1
- package/dist/components/time-picker/time-picker.d.ts.map +1 -1
- package/dist/components/timeline/index.js +1 -1
- package/dist/components/timeline/timeline.d.ts.map +1 -1
- package/dist/components/timestamp/index.js +1 -1
- package/dist/components/timestamp/timestamp.d.ts.map +1 -1
- package/dist/components/toast/index.js +1 -1
- package/dist/components/tooltip/index.js +1 -1
- package/dist/components/tooltip/tooltip.d.ts.map +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/typing-indicator/index.js +1 -1
- package/dist/components/typing-indicator/typing-indicator.d.ts.map +1 -1
- package/dist/components/visually-hidden/index.js +1 -1
- package/dist/components/warning-stack/index.js +1 -1
- package/dist/components/warning-stack/warning-stack.d.ts.map +1 -1
- package/dist/components/workflow/index.js +1 -1
- package/dist/components/workflow/workflow-card.d.ts.map +1 -1
- package/dist/components/workflow/workflow-editor.d.ts.map +1 -1
- package/dist/components/workflow/workflow-map.d.ts.map +1 -1
- package/dist/index.js +103 -103
- package/dist/patterns/leo-assistant/index.js +1 -1
- package/dist/patterns/patient-shell/index.js +1 -1
- package/package.json +1 -1
- package/dist/_chunks/accordion-BJD1aM67.js.map +0 -1
- package/dist/_chunks/ai-prompt-input-8IShJ-GX.js.map +0 -1
- package/dist/_chunks/breadcrumb-pdUacgm1.js.map +0 -1
- package/dist/_chunks/card-DeItIBcV.js.map +0 -1
- package/dist/_chunks/chat-input-C-B4snVJ.js.map +0 -1
- package/dist/_chunks/chat-message-cFNbQYRH.js.map +0 -1
- package/dist/_chunks/checkbox-group-DBnIBRT_.js.map +0 -1
- package/dist/_chunks/collapsible-DPGQnHZh.js.map +0 -1
- package/dist/_chunks/combobox.agent-9w6W1Jct.js.map +0 -1
- package/dist/_chunks/command-palette.agent-Dg7jhOIc.js.map +0 -1
- package/dist/_chunks/date-range-picker-CtwEwoyr.js.map +0 -1
- package/dist/_chunks/description-list-Bk3p71qY.js.map +0 -1
- package/dist/_chunks/dropdown-menu-BnVUeVG3.js.map +0 -1
- package/dist/_chunks/form-field-DI5LY5aG.js.map +0 -1
- package/dist/_chunks/freemium-paywall-CCsX3GhK.js.map +0 -1
- package/dist/_chunks/icon-button-SWpSs9S6.js.map +0 -1
- package/dist/_chunks/kbd-DTcIjYA7.js.map +0 -1
- package/dist/_chunks/list-Cwe8mcmh.js.map +0 -1
- package/dist/_chunks/live-region-COggO6x6.js +0 -57
- package/dist/_chunks/message-card-B0oGrI3i.js.map +0 -1
- package/dist/_chunks/message-tray-DZ6oZ0cs.js.map +0 -1
- package/dist/_chunks/multi-select.agent-BDEVGMmW.js.map +0 -1
- package/dist/_chunks/navigation-menu-NjwxyshT.js.map +0 -1
- package/dist/_chunks/pagination.agent-sxokDphY.js.map +0 -1
- package/dist/_chunks/password-input-C6PvKyQV.js.map +0 -1
- package/dist/_chunks/phone-input-BavVyXxZ.js.map +0 -1
- package/dist/_chunks/popover-BWgOopjI.js.map +0 -1
- package/dist/_chunks/privacy-lock-DWL7m_VT.js.map +0 -1
- package/dist/_chunks/radio-B_gvGU29.js.map +0 -1
- package/dist/_chunks/radio-group-Bn8Wt0yc.js.map +0 -1
- package/dist/_chunks/scroll-area-Ba99pJ_R.js.map +0 -1
- package/dist/_chunks/search-bar-VoTqJhRp.js.map +0 -1
- package/dist/_chunks/select-CQxhOXVE.js.map +0 -1
- package/dist/_chunks/sheet-CKsuHuHB.js.map +0 -1
- package/dist/_chunks/sidebar-CiEpSH9e.js.map +0 -1
- package/dist/_chunks/sign-in-with-alfadocs-button-BDErAgG2.js +0 -44
- package/dist/_chunks/slider-BVBlOW_l.js.map +0 -1
- package/dist/_chunks/spinner-CoAOGcDa.js.map +0 -1
- package/dist/_chunks/tabs.agent-sQAHxebC.js.map +0 -1
- package/dist/_chunks/theme-root-vapFjsnt.js +0 -18
- package/dist/_chunks/theme-toggle-CEaPghpm.js.map +0 -1
- package/dist/_chunks/timeline-Ym2DRmtu.js.map +0 -1
- package/dist/_chunks/visually-hidden-Y3jcdCv-.js +0 -21
- package/dist/_chunks/warning-stack-5KROOw9M.js.map +0 -1
- package/dist/_chunks/workflow-map-D4sjYv2d.js.map +0 -1
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
import { jsx as o } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as L, useRef as c, useEffect as y } from "react";
|
|
3
|
-
import { useTranslation as E } from "react-i18next";
|
|
4
|
-
import { B as I } from "./button-7dTew-IV.js";
|
|
5
|
-
import { L as b } from "./logo-3wrZGpwg.js";
|
|
6
|
-
import { S as A } from "./spinner-CoAOGcDa.js";
|
|
7
|
-
const B = /* @__PURE__ */ new Set(["primary", "secondary", "tonal"]), R = L(
|
|
8
|
-
({
|
|
9
|
-
intent: r = "primary",
|
|
10
|
-
size: n,
|
|
11
|
-
loading: t = !1,
|
|
12
|
-
disabled: u,
|
|
13
|
-
label: f,
|
|
14
|
-
onLoadingCancelled: s,
|
|
15
|
-
type: m = "button",
|
|
16
|
-
...p
|
|
17
|
-
}, d) => {
|
|
18
|
-
const { t: h } = E(), l = f ?? h("ui.auth.continueWithAlfadocs", "Continue with AlfaDocs"), w = B.has(r) ? "inherit" : "auto", v = n ?? "md", a = c(t), e = c(s);
|
|
19
|
-
return a.current = t, e.current = s, y(() => {
|
|
20
|
-
const i = (S) => {
|
|
21
|
-
S.persisted && a.current && e.current && e.current();
|
|
22
|
-
};
|
|
23
|
-
return window.addEventListener("pageshow", i), () => window.removeEventListener("pageshow", i);
|
|
24
|
-
}, []), /* @__PURE__ */ o(
|
|
25
|
-
I,
|
|
26
|
-
{
|
|
27
|
-
ref: d,
|
|
28
|
-
type: m,
|
|
29
|
-
intent: r,
|
|
30
|
-
size: n,
|
|
31
|
-
disabled: u || t,
|
|
32
|
-
"aria-busy": t || void 0,
|
|
33
|
-
startIcon: t ? /* @__PURE__ */ o(A, { size: v, variant: "pulse" }) : /* @__PURE__ */ o(b, { variant: "mark", size: "sm", tone: w, decorative: !0 }),
|
|
34
|
-
...p,
|
|
35
|
-
children: l
|
|
36
|
-
}
|
|
37
|
-
);
|
|
38
|
-
}
|
|
39
|
-
);
|
|
40
|
-
R.displayName = "SignInWithAlfadocsButton";
|
|
41
|
-
export {
|
|
42
|
-
R as S
|
|
43
|
-
};
|
|
44
|
-
//# sourceMappingURL=sign-in-with-alfadocs-button-BDErAgG2.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"slider-BVBlOW_l.js","sources":["../../src/components/slider/slider.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useRef,\n useState,\n type CSSProperties,\n type ComponentPropsWithoutRef,\n type ElementRef,\n type KeyboardEvent,\n} from 'react';\nimport * as RadixSlider from '@radix-ui/react-slider';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { useFormField } from '../form-field/form-field-context';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\n\nexport interface SliderMark {\n value: number;\n label?: string;\n}\n\nconst sliderVariants = cva(\n [\n 'ds:relative ds:flex ds:touch-none ds:select-none ds:items-center',\n 'ds:data-[orientation=horizontal]:w-full',\n 'ds:data-[orientation=vertical]:flex-col ds:data-[orientation=vertical]:h-full',\n 'ds:data-[disabled]:cursor-not-allowed ds:data-[disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:data-[orientation=horizontal]:h-1 ds:data-[orientation=vertical]:w-1',\n md: 'ds:data-[orientation=horizontal]:h-2 ds:data-[orientation=vertical]:w-2',\n lg: 'ds:data-[orientation=horizontal]:h-3 ds:data-[orientation=vertical]:w-3',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst trackVariants = cva(\n [\n 'ds:relative ds:grow ds:overflow-hidden ds:rounded-[var(--radius-full)] ds:bg-muted',\n 'ds:data-[orientation=horizontal]:h-full',\n 'ds:data-[orientation=vertical]:w-full',\n ].join(' '),\n);\n\nconst rangeVariants = cva(\n [\n 'ds:absolute ds:bg-primary ds:rounded-[var(--radius-full)]',\n 'ds:data-[orientation=horizontal]:h-full',\n 'ds:data-[orientation=vertical]:w-full',\n ].join(' '),\n);\n\nconst thumbVariants = cva(\n [\n 'ds:group/thumb',\n 'ds:relative ds:block ds:rounded-full',\n 'ds:bg-background ds:border-2 ds:border-primary ds:shadow-[var(--shadow-sm)]',\n 'ds:transition-[transform,box-shadow] ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:outline-none',\n 'ds:focus-visible:shadow-[var(--shadow-focus),var(--shadow-sm)]',\n 'ds:active:shadow-[var(--shadow-sm)]',\n 'ds:data-[disabled]:cursor-not-allowed ds:data-[disabled]:opacity-50',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:size-4',\n md: 'ds:size-5',\n lg: 'ds:size-6',\n },\n },\n defaultVariants: { size: 'md' },\n },\n);\n\nconst hitAreaVariants = cva('ds:absolute ds:rounded-full', {\n variants: {\n size: {\n sm: 'ds:-inset-[calc((var(--min-target-size)-1rem)/2)]',\n md: 'ds:-inset-[calc((var(--min-target-size)-1.25rem)/2)]',\n lg: 'ds:-inset-[calc((var(--min-target-size)-1.5rem)/2)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst tooltipWrapperVariants = cva(\n 'ds:absolute ds:flex ds:pointer-events-none ds:items-center ds:justify-center',\n {\n variants: {\n orientation: {\n horizontal: 'ds:start-0 ds:end-0 ds:bottom-full',\n vertical: 'ds:top-0 ds:bottom-0 ds:start-full',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n },\n);\n\nconst tooltipBubbleVariants = cva(\n [\n 'ds:whitespace-nowrap ds:bg-foreground ds:text-background',\n 'ds:px-[var(--spacing-sm)] ds:py-[var(--spacing-xs)]',\n 'ds:rounded-[var(--radius-sm)] ds:text-[length:var(--font-size-xs)] ds:tabular-nums',\n 'ds:shadow-[var(--shadow-sm)]',\n 'ds:transition-opacity ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n ].join(' '),\n {\n variants: {\n orientation: {\n horizontal: 'ds:mb-[var(--spacing-xs)]',\n vertical: 'ds:ms-[var(--spacing-xs)]',\n },\n alwaysShow: {\n true: 'ds:opacity-100',\n false:\n 'ds:opacity-0 ds:group-hover/thumb:opacity-100 ds:group-focus-visible/thumb:opacity-100',\n },\n },\n defaultVariants: { orientation: 'horizontal', alwaysShow: false },\n },\n);\n\nconst marksContainerVariants = cva('ds:absolute ds:pointer-events-none', {\n variants: {\n orientation: {\n horizontal: 'ds:start-0 ds:end-0 ds:top-full',\n vertical: 'ds:top-0 ds:bottom-0 ds:start-full',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n});\n\nconst markVariants = cva('ds:absolute ds:flex ds:items-center', {\n variants: {\n orientation: {\n horizontal: 'ds:flex-col ds:-translate-x-1/2 ds:rtl:translate-x-1/2',\n vertical: 'ds:flex-row ds:-translate-y-1/2 ds:ps-[var(--spacing-xs)]',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n});\n\nconst tickVariants = cva('ds:bg-border', {\n variants: {\n orientation: {\n horizontal: 'ds:w-px ds:h-1',\n vertical: 'ds:h-px ds:w-1',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n});\n\nconst markLabelVariants = cva(\n 'ds:text-muted-foreground type-meta ds:mt-[var(--spacing-xs)]',\n);\n\nconst endpointWrapperVariants = cva(\n 'ds:flex ds:items-center ds:gap-[var(--spacing-sm)]',\n {\n variants: {\n orientation: {\n horizontal: 'ds:w-full ds:flex-row',\n vertical: 'ds:h-full ds:flex-col-reverse',\n },\n },\n defaultVariants: { orientation: 'horizontal' },\n },\n);\n\nconst endpointLabelVariants = cva(\n 'ds:text-muted-foreground type-meta ds:tabular-nums ds:shrink-0',\n);\n\ntype RadixSliderRootProps = ComponentPropsWithoutRef<typeof RadixSlider.Root>;\n\nexport interface SliderProps\n extends Omit<RadixSliderRootProps, 'children'>,\n VariantProps<typeof sliderVariants> {\n value?: number[];\n defaultValue?: number[];\n marks?: SliderMark[];\n minLabel?: string;\n maxLabel?: string;\n formatValue?: (value: number) => string;\n alwaysShowValue?: boolean;\n step?: number;\n largeStep?: number;\n thumbLabels?: string[];\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n onValueChange?: (value: number[]) => void;\n onValueCommit?: (value: number[]) => void;\n className?: string;\n}\n\nexport const Slider = forwardRef<\n ElementRef<typeof RadixSlider.Root>,\n SliderProps\n>((props, ref) => {\n const {\n value,\n defaultValue,\n marks,\n minLabel,\n maxLabel,\n formatValue,\n alwaysShowValue = false,\n step = 1,\n largeStep = 10,\n thumbLabels,\n size = 'md',\n orientation = 'horizontal',\n min = 0,\n max = 100,\n disabled,\n dir,\n id,\n className,\n onValueChange,\n onValueCommit,\n onKeyDown,\n ...rest\n } = props;\n\n const { t, i18n } = useTranslation();\n const ctx = useFormField();\n\n const isControlled = value !== undefined;\n const [internalValue, setInternalValue] = useState<number[]>(\n value ?? defaultValue ?? [min],\n );\n const currentValue: number[] = isControlled\n ? (value as number[])\n : internalValue;\n\n const handleValueChange = (next: number[]) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n };\n\n const effectiveDisabled = Boolean(ctx.disabled || disabled);\n const describedBy = ctx.describedBy || undefined;\n const sliderId = id ?? ctx.id;\n\n const defaultFormat = useCallback(\n (n: number) => new Intl.NumberFormat(i18n.language).format(n),\n [i18n.language],\n );\n const format = formatValue ?? defaultFormat;\n\n const defaultMinThumbLabel = t('ui.inputs.slider.minLabel', 'Minimum');\n const defaultMaxThumbLabel = t('ui.inputs.slider.maxLabel', 'Maximum');\n const labelForThumb = (i: number): string | undefined => {\n if (thumbLabels?.[i]) return thumbLabels[i];\n if (currentValue.length === 2) {\n return i === 0 ? defaultMinThumbLabel : defaultMaxThumbLabel;\n }\n return undefined;\n };\n\n const handleKeyDown = (event: KeyboardEvent<HTMLDivElement>) => {\n onKeyDown?.(event);\n if (event.defaultPrevented) return;\n if (effectiveDisabled) return;\n if (event.key !== 'PageUp' && event.key !== 'PageDown') return;\n\n event.preventDefault();\n const thumbs = Array.from(\n event.currentTarget.querySelectorAll<HTMLElement>('[role=\"slider\"]'),\n );\n const activeIndex = Math.max(\n 0,\n thumbs.indexOf(document.activeElement as HTMLElement),\n );\n const delta = event.key === 'PageUp' ? largeStep : -largeStep;\n const next = currentValue.map((v, i) =>\n i === activeIndex ? Math.max(min, Math.min(max, v + delta)) : v,\n );\n handleValueChange(next);\n onValueCommit?.(next);\n };\n\n const denom = max - min || 1;\n const percentFor = (n: number) => ((n - min) / denom) * 100;\n\n const rootRef = useRef<HTMLSpanElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const autoDir = useDirection(rootRef);\n\n const root = (\n <RadixSlider.Root\n ref={composedRef}\n id={sliderId}\n dir={dir ?? autoDir}\n orientation={orientation}\n min={min}\n max={max}\n step={step}\n disabled={effectiveDisabled}\n value={isControlled ? value : undefined}\n defaultValue={!isControlled ? (defaultValue ?? [min]) : undefined}\n onValueChange={handleValueChange}\n onValueCommit={onValueCommit}\n onKeyDown={handleKeyDown}\n aria-describedby={describedBy}\n aria-invalid={ctx.invalid || undefined}\n aria-required={ctx.required || undefined}\n className={sliderVariants({ size, className })}\n {...rest}\n >\n <RadixSlider.Track className={trackVariants()}>\n <RadixSlider.Range className={rangeVariants()} />\n </RadixSlider.Track>\n {marks && marks.length > 0 ? (\n <span\n aria-hidden=\"true\"\n className={marksContainerVariants({ orientation })}\n >\n {marks.map((m) => {\n const p = percentFor(m.value);\n const positionStyle: CSSProperties =\n orientation === 'vertical'\n ? { insetBlockEnd: `${p}%` }\n : { insetInlineStart: `${p}%` };\n return (\n <span\n key={`${m.value}-${m.label ?? ''}`}\n className={markVariants({ orientation })}\n style={positionStyle}\n >\n <span className={tickVariants({ orientation })} />\n {m.label ? (\n <span className={markLabelVariants()}>{m.label}</span>\n ) : null}\n </span>\n );\n })}\n </span>\n ) : null}\n {currentValue.map((v, i) => (\n <RadixSlider.Thumb\n key={i}\n aria-label={labelForThumb(i)}\n aria-valuetext={format(v)}\n className={thumbVariants({ size })}\n >\n <span aria-hidden=\"true\" className={hitAreaVariants({ size })} />\n <span\n aria-hidden=\"true\"\n className={tooltipWrapperVariants({ orientation })}\n >\n <span\n className={tooltipBubbleVariants({\n orientation,\n alwaysShow: alwaysShowValue,\n })}\n >\n {format(v)}\n </span>\n </span>\n </RadixSlider.Thumb>\n ))}\n </RadixSlider.Root>\n );\n\n if (minLabel !== undefined || maxLabel !== undefined) {\n return (\n <div className={endpointWrapperVariants({ orientation })}>\n {minLabel !== undefined ? (\n <span className={endpointLabelVariants()}>{minLabel}</span>\n ) : null}\n {root}\n {maxLabel !== undefined ? (\n <span className={endpointLabelVariants()}>{maxLabel}</span>\n ) : null}\n </div>\n );\n }\n\n return root;\n});\n\nSlider.displayName = 'Slider';\n"],"names":["sliderVariants","cva","trackVariants","rangeVariants","thumbVariants","hitAreaVariants","tooltipWrapperVariants","tooltipBubbleVariants","marksContainerVariants","markVariants","tickVariants","markLabelVariants","endpointWrapperVariants","endpointLabelVariants","Slider","forwardRef","props","ref","value","defaultValue","marks","minLabel","maxLabel","formatValue","alwaysShowValue","step","largeStep","thumbLabels","size","orientation","min","max","disabled","dir","id","className","onValueChange","onValueCommit","onKeyDown","rest","t","i18n","useTranslation","ctx","useFormField","isControlled","internalValue","setInternalValue","useState","currentValue","handleValueChange","next","effectiveDisabled","describedBy","sliderId","defaultFormat","useCallback","n","format","defaultMinThumbLabel","defaultMaxThumbLabel","labelForThumb","i","handleKeyDown","event","thumbs","activeIndex","delta","v","denom","percentFor","rootRef","useRef","composedRef","composeRefs","autoDir","useDirection","root","jsxs","RadixSlider","jsx","m","p","positionStyle"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"spinner-CoAOGcDa.js","sources":["../../src/components/spinner/spinner.tsx"],"sourcesContent":["import { forwardRef, type HTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\n\nconst spinnerVariants = cva('ds:inline-block ds:shrink-0 ds:text-current', {\n variants: {\n size: {\n sm: 'ds:size-3',\n md: 'ds:size-4',\n lg: 'ds:size-5',\n },\n variant: {\n pulse: '',\n chase: '',\n prism: '',\n },\n speed: {\n slower: '',\n slow: '',\n normal: '',\n fast: '',\n faster: '',\n },\n },\n compoundVariants: [\n { variant: 'pulse', speed: 'slower', class: 'ds:[--spinner-duration:2400ms]' },\n { variant: 'pulse', speed: 'slow', class: 'ds:[--spinner-duration:1800ms]' },\n { variant: 'pulse', speed: 'normal', class: 'ds:[--spinner-duration:1200ms]' },\n { variant: 'pulse', speed: 'fast', class: 'ds:[--spinner-duration:900ms]' },\n { variant: 'pulse', speed: 'faster', class: 'ds:[--spinner-duration:600ms]' },\n { variant: 'chase', speed: 'slower', class: 'ds:[--spinner-duration:2400ms]' },\n { variant: 'chase', speed: 'slow', class: 'ds:[--spinner-duration:1800ms]' },\n { variant: 'chase', speed: 'normal', class: 'ds:[--spinner-duration:1200ms]' },\n { variant: 'chase', speed: 'fast', class: 'ds:[--spinner-duration:900ms]' },\n { variant: 'chase', speed: 'faster', class: 'ds:[--spinner-duration:600ms]' },\n // prism runs 2× so each of the 4 brand hues has room to read.\n { variant: 'prism', speed: 'slower', class: 'ds:[--spinner-duration:4800ms]' },\n { variant: 'prism', speed: 'slow', class: 'ds:[--spinner-duration:3600ms]' },\n { variant: 'prism', speed: 'normal', class: 'ds:[--spinner-duration:2400ms]' },\n { variant: 'prism', speed: 'fast', class: 'ds:[--spinner-duration:1800ms]' },\n { variant: 'prism', speed: 'faster', class: 'ds:[--spinner-duration:1200ms]' },\n ],\n defaultVariants: { size: 'md', variant: 'pulse', speed: 'normal' },\n});\n\nconst shapeVariants = cva(\n [\n 'ds:fill-current',\n 'ds:[transform-box:fill-box] ds:[transform-origin:center]',\n 'ds:motion-reduce:animate-none',\n 'ds:[animation-delay:calc(var(--spinner-duration)/4*var(--spinner-position))]',\n ].join(' '),\n {\n variants: {\n variant: {\n pulse:\n 'ds:animate-[spinner-pulse_var(--spinner-duration)_ease-in-out_infinite]',\n chase:\n 'ds:animate-[spinner-chase_var(--spinner-duration)_ease-out_infinite]',\n prism:\n 'ds:animate-[spinner-prism_var(--spinner-duration)_linear_infinite] ds:motion-reduce:fill-[var(--color-violet-500)]',\n },\n position: {\n top: 'ds:[--spinner-position:0]',\n right: 'ds:[--spinner-position:1]',\n bottom: 'ds:[--spinner-position:2]',\n left: 'ds:[--spinner-position:3]',\n },\n },\n defaultVariants: { variant: 'pulse', position: 'top' },\n },\n);\n\nexport type SpinnerVariant = 'pulse' | 'chase' | 'prism';\nexport type SpinnerSpeed = 'slower' | 'slow' | 'normal' | 'fast' | 'faster';\n\nexport interface SpinnerProps\n extends Omit<HTMLAttributes<HTMLSpanElement>, 'role' | 'children'>,\n VariantProps<typeof spinnerVariants> {\n size?: 'sm' | 'md' | 'lg';\n variant?: SpinnerVariant;\n speed?: SpinnerSpeed;\n label?: string;\n}\n\nexport const Spinner = forwardRef<HTMLSpanElement, SpinnerProps>(\n (\n {\n size = 'md',\n variant = 'pulse',\n speed = 'normal',\n label,\n className,\n ...props\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const accessibleLabel = label ?? t('ui.common.loading', 'Loading…');\n\n return (\n <span\n ref={ref}\n role=\"status\"\n aria-live=\"polite\"\n className={spinnerVariants({ size, variant, speed, className })}\n {...props}\n >\n <svg aria-hidden=\"true\" viewBox=\"0 0 148 148\" className=\"ds:size-full\">\n <g\n data-shape=\"top\"\n className={shapeVariants({ variant, position: 'top' })}\n >\n <rect\n x=\"53.04\"\n y=\"2.54\"\n width=\"33.99\"\n height=\"49.34\"\n rx=\"4.56\"\n ry=\"4.56\"\n transform=\"translate(-4.66 19.05) rotate(-15)\"\n />\n </g>\n <g\n data-shape=\"right\"\n className={shapeVariants({ variant, position: 'right' })}\n >\n <rect\n x=\"96.12\"\n y=\"53.04\"\n width=\"49.34\"\n height=\"33.99\"\n rx=\"4.56\"\n ry=\"4.56\"\n transform=\"translate(-14.01 33.65) rotate(-15)\"\n />\n </g>\n <g\n data-shape=\"bottom\"\n className={shapeVariants({ variant, position: 'bottom' })}\n >\n <rect\n x=\"60.97\"\n y=\"96.12\"\n width=\"33.99\"\n height=\"49.34\"\n rx=\"4.56\"\n ry=\"4.56\"\n transform=\"translate(-28.61 24.29) rotate(-15)\"\n />\n </g>\n <g\n data-shape=\"left\"\n className={shapeVariants({ variant, position: 'left' })}\n >\n <path d=\"M47.82,59.56c-.65-2.43-3.15-3.87-5.58-3.22L3.38,66.75c-2.43.65-3.87,3.15-3.22,5.58l6.44,24.03c.65,2.43,3.15,3.87,5.58,3.22l38.86-10.41c2.43-.65,3.87-3.15,3.22-5.58l-6.44-24.03Z\" />\n </g>\n </svg>\n <span className=\"ds:sr-only\">{accessibleLabel}</span>\n </span>\n );\n },\n);\n\nSpinner.displayName = 'Spinner';\n"],"names":["spinnerVariants","cva","shapeVariants","Spinner","forwardRef","size","variant","speed","label","className","props","ref","t","useTranslation","accessibleLabel","jsxs","jsx"],"mappings":";;;;AAIA,MAAMA,IAAkBC,EAAI,+CAA+C;AAAA,EACzE,UAAU;AAAA,IACR,MAAM;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,MACJ,IAAI;AAAA,IAAA;AAAA,IAEN,SAAS;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,MACP,OAAO;AAAA,IAAA;AAAA,IAET,OAAO;AAAA,MACL,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,MAAM;AAAA,MACN,QAAQ;AAAA,IAAA;AAAA,EACV;AAAA,EAEF,kBAAkB;AAAA,IAChB,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,QAAQ,OAAO,iCAAA;AAAA,IAC1C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,QAAQ,OAAO,gCAAA;AAAA,IAC1C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,gCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,QAAQ,OAAO,iCAAA;AAAA,IAC1C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,QAAQ,OAAO,gCAAA;AAAA,IAC1C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,gCAAA;AAAA;AAAA,IAE5C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,QAAQ,OAAO,iCAAA;AAAA,IAC1C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,IAC5C,EAAE,SAAS,SAAS,OAAO,QAAQ,OAAO,iCAAA;AAAA,IAC1C,EAAE,SAAS,SAAS,OAAO,UAAU,OAAO,iCAAA;AAAA,EAAiC;AAAA,EAE/E,iBAAiB,EAAE,MAAM,MAAM,SAAS,SAAS,OAAO,SAAA;AAC1D,CAAC,GAEKC,IAAgBD;AAAA,EACpB;AAAA,IACE;AAAA,IACA;AAAA,IACA;AAAA,IACA;AAAA,EAAA,EACA,KAAK,GAAG;AAAA,EACV;AAAA,IACE,UAAU;AAAA,MACR,SAAS;AAAA,QACP,OACE;AAAA,QACF,OACE;AAAA,QACF,OACE;AAAA,MAAA;AAAA,MAEJ,UAAU;AAAA,QACR,KAAK;AAAA,QACL,OAAO;AAAA,QACP,QAAQ;AAAA,QACR,MAAM;AAAA,MAAA;AAAA,IACR;AAAA,IAEF,iBAAiB,EAAE,SAAS,SAAS,UAAU,MAAA;AAAA,EAAM;AAEzD,GAcaE,IAAUC;AAAA,EACrB,CACE;AAAA,IACE,MAAAC,IAAO;AAAA,IACP,SAAAC,IAAU;AAAA,IACV,OAAAC,IAAQ;AAAA,IACR,OAAAC;AAAA,IACA,WAAAC;AAAA,IACA,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAM,EAAE,GAAAC,EAAA,IAAMC,EAAA,GACRC,IAAkBN,KAASI,EAAE,qBAAqB,UAAU;AAElE,WACE,gBAAAG;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAAJ;AAAA,QACA,MAAK;AAAA,QACL,aAAU;AAAA,QACV,WAAWX,EAAgB,EAAE,MAAAK,GAAM,SAAAC,GAAS,OAAAC,GAAO,WAAAE,GAAW;AAAA,QAC7D,GAAGC;AAAA,QAEJ,UAAA;AAAA,UAAA,gBAAAK,EAAC,SAAI,eAAY,QAAO,SAAQ,eAAc,WAAU,gBACtD,UAAA;AAAA,YAAA,gBAAAC;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,WAAWd,EAAc,EAAE,SAAAI,GAAS,UAAU,OAAO;AAAA,gBAErD,UAAA,gBAAAU;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,GAAE;AAAA,oBACF,GAAE;AAAA,oBACF,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAEF,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,WAAWd,EAAc,EAAE,SAAAI,GAAS,UAAU,SAAS;AAAA,gBAEvD,UAAA,gBAAAU;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,GAAE;AAAA,oBACF,GAAE;AAAA,oBACF,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAEF,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,WAAWd,EAAc,EAAE,SAAAI,GAAS,UAAU,UAAU;AAAA,gBAExD,UAAA,gBAAAU;AAAA,kBAAC;AAAA,kBAAA;AAAA,oBACC,GAAE;AAAA,oBACF,GAAE;AAAA,oBACF,OAAM;AAAA,oBACN,QAAO;AAAA,oBACP,IAAG;AAAA,oBACH,IAAG;AAAA,oBACH,WAAU;AAAA,kBAAA;AAAA,gBAAA;AAAA,cACZ;AAAA,YAAA;AAAA,YAEF,gBAAAA;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,cAAW;AAAA,gBACX,WAAWd,EAAc,EAAE,SAAAI,GAAS,UAAU,QAAQ;AAAA,gBAEtD,UAAA,gBAAAU,EAAC,QAAA,EAAK,GAAE,mLAAA,CAAmL;AAAA,cAAA;AAAA,YAAA;AAAA,UAC7L,GACF;AAAA,UACA,gBAAAA,EAAC,QAAA,EAAK,WAAU,cAAc,UAAAF,EAAA,CAAgB;AAAA,QAAA;AAAA,MAAA;AAAA,IAAA;AAAA,EAGpD;AACF;AAEAX,EAAQ,cAAc;"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tabs.agent-sQAHxebC.js","sources":["../../src/components/tabs/tabs.tsx","../../src/components/tabs/tabs.agent.ts"],"sourcesContent":["import {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type ComponentPropsWithoutRef,\n type MutableRefObject,\n type ReactElement,\n type ReactNode,\n} from 'react';\nimport * as TabsPrimitive from '@radix-ui/react-tabs';\nimport * as DropdownMenuPrimitive from '@radix-ui/react-dropdown-menu';\nimport { cva, cx, type VariantProps } from 'class-variance-authority';\nimport { X, ChevronDown } from 'lucide-react';\nimport { useTranslation } from 'react-i18next';\nimport { useDirection } from '../_shared/use-direction';\nimport { composeRefs } from '../_shared/compose-refs';\nimport { Select, type SelectOption } from '../select/select';\n\n// ---------------------------------------------------------------------------\n// CVA recipes\n// ---------------------------------------------------------------------------\n\nexport const tabsListVariants = cva(\n 'ds:relative ds:flex',\n {\n variants: {\n variant: {\n // Shadcn-style segmented control: light container, white active card\n default: 'ds:flex-1 ds:min-w-0 ds:items-center ds:bg-muted/10 ds:rounded-[var(--radius-md)] ds:p-1',\n // Classic underline tabs: bottom border with colored active indicator\n underlined: 'ds:flex-1 ds:min-w-0 ds:items-end ds:[border-block-end:1px_solid_var(--border)]',\n // Segmented control: warm secondary container, content-width\n pills: 'ds:items-center ds:bg-secondary ds:rounded-[var(--radius-md)] ds:p-1',\n },\n orientation: {\n horizontal: 'ds:flex-row ds:overflow-hidden',\n vertical: 'ds:flex-col',\n },\n },\n defaultVariants: {\n variant: 'default',\n orientation: 'horizontal',\n },\n },\n);\n\nexport const tabsTriggerVariants = cva(\n [\n 'ds:relative ds:inline-flex ds:items-center ds:justify-center ds:whitespace-nowrap ds:border-0',\n 'ds:gap-2 ds:font-medium ds:transition-colors',\n 'ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n 'ds:cursor-pointer ds:select-none',\n 'ds:disabled:pointer-events-none ds:disabled:opacity-50',\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 ].join(' '),\n {\n variants: {\n variant: {\n default: [\n 'ds:rounded-[var(--radius-sm)] ds:bg-transparent ds:text-muted-foreground',\n 'ds:hover:bg-muted/10 ds:hover:text-foreground',\n 'ds:data-[state=active]:bg-background ds:data-[state=active]:text-foreground',\n 'ds:data-[state=active]:shadow-sm',\n ].join(' '),\n underlined: [\n 'ds:bg-transparent ds:text-muted-foreground',\n 'ds:[border-block-end:2px_solid_transparent]',\n 'ds:hover:bg-muted/10 ds:hover:text-foreground',\n 'ds:data-[state=active]:[border-block-end-color:var(--primary)]',\n 'ds:data-[state=active]:text-foreground ds:data-[state=active]:[margin-block-end:-1px]',\n ].join(' '),\n pills: [\n 'ds:rounded-[var(--radius-full)] ds:bg-transparent ds:text-muted-foreground',\n 'ds:hover:bg-muted/20 ds:hover:text-foreground',\n 'ds:data-[state=active]:bg-primary ds:data-[state=active]:text-primary-foreground',\n ].join(' '),\n },\n size: {\n sm: 'ds:h-8 ds:px-[var(--spacing-sm)] ds:text-[length:var(--font-size-sm)]',\n md: 'ds:h-10 ds:px-[var(--spacing-md)] ds:text-[length:var(--font-size-base)]',\n lg: 'ds:h-12 ds:px-[var(--spacing-lg)] ds:text-[length:var(--font-size-lg)]',\n },\n orientation: {\n horizontal: '',\n vertical: 'ds:w-full ds:justify-start',\n },\n },\n defaultVariants: {\n variant: 'default',\n size: 'md',\n orientation: 'horizontal',\n },\n },\n);\n\n// ---------------------------------------------------------------------------\n// Context\n// ---------------------------------------------------------------------------\n\ntype TabsOverflow = 'dropdown' | 'select';\n\ninterface TabsContextValue {\n variant: 'default' | 'underlined' | 'pills';\n size: 'sm' | 'md' | 'lg';\n orientation: 'horizontal' | 'vertical';\n overflow: TabsOverflow;\n value: string;\n setValue: (value: string) => void;\n}\n\nconst TabsContext = createContext<TabsContextValue>({\n variant: 'default',\n size: 'md',\n orientation: 'horizontal',\n overflow: 'dropdown',\n value: '',\n setValue: () => {},\n});\n\n// ---------------------------------------------------------------------------\n// Types\n// ---------------------------------------------------------------------------\n\nexport interface TabsRootProps\n extends Omit<ComponentPropsWithoutRef<typeof TabsPrimitive.Root>, 'orientation'> {\n variant?: 'default' | 'underlined' | 'pills';\n size?: 'sm' | 'md' | 'lg';\n orientation?: 'horizontal' | 'vertical';\n /**\n * Strategy for tabs that don't fit horizontally.\n *\n * - `'dropdown'` (default) — overflowing tabs collapse into a \"More\"\n * `DropdownMenu` rendered next to the visible tab list. Most tabs\n * stay visible inline; the few that don't fit hide behind the menu.\n * Best when there are 5–7 tabs at moderately narrow viewports.\n * - `'select'` — at narrow container widths (under the `@md` breakpoint)\n * the entire tab strip collapses into a single `Select` whose value\n * is the active tab. Best when there are many tabs and the panel is\n * genuinely cramped (mobile, side-panel host). Above `@md`, the\n * inline tab list reappears unchanged.\n *\n * Limitation: the Select mirror builds option labels from each\n * `Tabs.Trigger`'s `children`. Plain string / number children are\n * used verbatim; richer children (icon + text, fragments) fall back\n * to the trigger's `value` so the option remains selectable. Prefer\n * plain-text trigger children when using `overflow=\"select\"`, or use\n * the trigger's `icon` prop for the icon and keep `children` a\n * plain string.\n *\n * @default 'dropdown'\n */\n overflow?: TabsOverflow;\n}\n\nexport interface TabsListProps extends ComponentPropsWithoutRef<typeof TabsPrimitive.List> {\n 'aria-label'?: string;\n}\n\nexport interface TabsTriggerProps\n extends ComponentPropsWithoutRef<typeof TabsPrimitive.Trigger>,\n VariantProps<typeof tabsTriggerVariants> {\n icon?: ReactNode;\n badge?: ReactNode;\n dismissible?: boolean;\n onDismiss?: () => void;\n}\n\nexport type TabsContentProps = ComponentPropsWithoutRef<typeof TabsPrimitive.Content>;\n\n// ---------------------------------------------------------------------------\n// TabsRoot\n// ---------------------------------------------------------------------------\n\nconst TabsRoot = forwardRef<HTMLDivElement, TabsRootProps>(\n (\n {\n variant = 'default',\n size = 'md',\n orientation = 'horizontal',\n overflow = 'dropdown',\n className,\n children,\n value: valueProp,\n defaultValue,\n onValueChange,\n ...props\n },\n ref,\n ) => {\n const rootRef = useRef<HTMLDivElement>(null);\n const composedRef = composeRefs(ref, rootRef);\n const dir = useDirection(rootRef);\n\n // Track the active tab so the `overflow=\"select\"` mirror can read it\n // without forcing consumers into controlled mode. If `value` is passed\n // we honour it; otherwise we manage internal state seeded from\n // `defaultValue` and notify consumers via `onValueChange`. Net effect\n // is identical to Radix's own controlled / uncontrolled split — we\n // just shadow the value into context so the Select can mirror it.\n const isControlled = valueProp !== undefined;\n const [internalValue, setInternalValue] = useState<string>(defaultValue ?? '');\n const value = isControlled ? (valueProp ?? '') : internalValue;\n const setValue = useCallback(\n (next: string) => {\n if (!isControlled) setInternalValue(next);\n onValueChange?.(next);\n },\n [isControlled, onValueChange],\n );\n\n const ctxValue = useMemo(\n () => ({ variant, size, orientation, overflow, value, setValue }),\n [variant, size, orientation, overflow, value, setValue],\n );\n\n return (\n <TabsContext.Provider value={ctxValue}>\n <TabsPrimitive.Root\n ref={composedRef}\n orientation={orientation}\n dir={dir}\n // We always run Radix in controlled mode against our shadow state\n // (seeded from `defaultValue`) so the `overflow=\"select\"` mirror\n // can read the active value via context without DOM observation.\n value={value}\n onValueChange={setValue}\n className={cx(\n 'flex',\n orientation === 'vertical' ? 'flex-row gap-[var(--spacing-md)]' : 'flex-col',\n className,\n )}\n {...props}\n >\n {children}\n </TabsPrimitive.Root>\n </TabsContext.Provider>\n );\n },\n);\nTabsRoot.displayName = 'Tabs';\n\n// ---------------------------------------------------------------------------\n// TabsList — with overflow detection\n// ---------------------------------------------------------------------------\n\nconst TabsList = forwardRef<HTMLDivElement, TabsListProps>(\n ({ className, children, 'aria-label': ariaLabel, ...props }, ref) => {\n const { variant, size, orientation, overflow, value, setValue } = useContext(TabsContext);\n const { t } = useTranslation('ui');\n\n const listRef = useRef<HTMLDivElement>(null);\n const [overflowTabs, setOverflowTabs] = useState<{ value: string; label: string }[]>([]);\n const isHorizontal = orientation === 'horizontal';\n // The `select` overflow strategy renders a Select mirror at narrow\n // container widths and skips the DropdownMenu overflow detector\n // (it's the wrong UX for that case — a select-and-a-dropdown would\n // double up). The dropdown detector only runs when `overflow` is\n // `dropdown` and the strip is horizontal.\n const isDropdownOverflow = overflow === 'dropdown' && isHorizontal;\n\n useEffect(() => {\n if (!isDropdownOverflow) {\n setOverflowTabs([]);\n return;\n }\n const el = listRef.current;\n if (!el) return;\n\n const detectOverflow = () => {\n const containerRight = el.getBoundingClientRect().right;\n const hidden: { value: string; label: string }[] = [];\n el.querySelectorAll<HTMLButtonElement>('[role=\"tab\"]').forEach((tab) => {\n const rect = tab.getBoundingClientRect();\n if (rect.right > containerRight + 2) {\n const value = tab.getAttribute('data-value') ?? tab.dataset['value'] ?? '';\n const label = tab.textContent?.trim() ?? value;\n hidden.push({ value, label });\n }\n });\n setOverflowTabs(hidden);\n };\n\n const ro = new ResizeObserver(detectOverflow);\n ro.observe(el);\n detectOverflow();\n return () => ro.disconnect();\n }, [isDropdownOverflow, children]);\n\n const combinedRef = (node: HTMLDivElement | null) => {\n (listRef as MutableRefObject<HTMLDivElement | null>).current = node;\n if (typeof ref === 'function') ref(node);\n else if (ref) (ref as MutableRefObject<HTMLDivElement | null>).current = node;\n };\n\n // For `overflow=\"select\"` we mirror the Trigger children as Select\n // options. Triggers may carry icon + text; for the Select label we\n // prefer the trigger's plain-text children — anything else falls\n // back to the trigger's `value` so the option is at least selectable.\n const selectOptions = useMemo<SelectOption<string>[]>(() => {\n if (overflow !== 'select') return [];\n return Children.toArray(children)\n .filter((child): child is ReactElement<TabsTriggerProps> => isValidElement(child))\n .filter((child) => typeof child.props.value === 'string' && child.props.value.length > 0)\n .map((child) => {\n const triggerValue = child.props.value as string;\n const labelChild = child.props.children;\n const label =\n typeof labelChild === 'string'\n ? labelChild\n : typeof labelChild === 'number'\n ? String(labelChild)\n : triggerValue;\n return { value: triggerValue, label };\n });\n }, [children, overflow]);\n\n if (overflow === 'select' && isHorizontal) {\n // Container queries gate the swap: above `@md` (Tailwind v4 default\n // 28rem container width) the inline tab strip renders; below it,\n // the Select takes over. The Tabs.List markup stays mounted in\n // both modes so Radix's roving-tabindex / ARIA wiring is preserved\n // even when the strip is visually hidden — keyboard users who land\n // on the panel via skip-link still get to the active tab.\n return (\n <div className=\"ds:@container/tabs ds:relative ds:w-full\">\n {/* Select mirror — visible at narrow container widths only. */}\n <div className=\"ds:block ds:@md/tabs:hidden\">\n <Select\n options={selectOptions}\n value={value}\n onValueChange={(next) => {\n if (typeof next === 'string' && next.length > 0) setValue(next);\n }}\n size={size}\n aria-label={ariaLabel ?? t('tabs.selectLabel')}\n />\n </div>\n {/* Inline tab strip — visible at wider container widths. */}\n <div className=\"ds:hidden ds:@md/tabs:flex ds:relative ds:items-center\">\n <TabsPrimitive.List\n ref={combinedRef}\n aria-label={ariaLabel}\n className={tabsListVariants({ variant, orientation, className })}\n {...props}\n >\n {children}\n </TabsPrimitive.List>\n </div>\n </div>\n );\n }\n\n return (\n <div className=\"ds:relative ds:flex ds:items-center\">\n <TabsPrimitive.List\n ref={combinedRef}\n aria-label={ariaLabel}\n className={tabsListVariants({ variant, orientation, className })}\n {...props}\n >\n {children}\n </TabsPrimitive.List>\n\n {isDropdownOverflow && overflowTabs.length > 0 && (\n <OverflowMenu tabs={overflowTabs} label={t('tabs.moreTabs')} size={size} />\n )}\n </div>\n );\n },\n);\nTabsList.displayName = 'TabsList';\n\n// ---------------------------------------------------------------------------\n// OverflowMenu (internal)\n// ---------------------------------------------------------------------------\n\ninterface OverflowMenuProps {\n tabs: { value: string; label: string }[];\n label: string;\n size: 'sm' | 'md' | 'lg';\n}\n\nfunction OverflowMenu({ tabs, label, size }: OverflowMenuProps) {\n const { variant } = useContext(TabsContext);\n\n return (\n <DropdownMenuPrimitive.Root>\n <DropdownMenuPrimitive.Trigger\n className={cx(\n tabsTriggerVariants({ variant, size, orientation: 'horizontal' }),\n 'shrink-0 ms-1',\n )}\n aria-label={label}\n >\n {label}\n <ChevronDown aria-hidden=\"true\" className=\"ds:size-4\" />\n </DropdownMenuPrimitive.Trigger>\n <DropdownMenuPrimitive.Portal>\n <DropdownMenuPrimitive.Content\n sideOffset={4}\n className={cx(\n 'z-50 min-w-40 overflow-hidden rounded-[var(--radius-md)]',\n 'border border-border bg-popover p-1 shadow-md',\n 'data-[state=open]:animate-in data-[state=closed]:animate-out',\n 'data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0',\n 'data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95',\n )}\n >\n {tabs.map(({ value, label: tabLabel }) => (\n <DropdownMenuPrimitive.Item\n key={value}\n className={cx(\n 'relative flex cursor-pointer select-none items-center',\n 'rounded-[var(--radius-sm)] px-[var(--spacing-sm)] py-[var(--spacing-xs)]',\n 'text-[var(--font-size-sm)] text-foreground outline-none',\n 'hover:bg-muted focus:bg-muted',\n 'data-[disabled]:pointer-events-none data-[disabled]:opacity-50',\n )}\n onSelect={() => {\n const tab = document.querySelector<HTMLButtonElement>(\n `[role=\"tab\"][data-value=\"${CSS.escape(value)}\"]`,\n );\n tab?.click();\n tab?.scrollIntoView({ inline: 'nearest' });\n }}\n >\n {tabLabel}\n </DropdownMenuPrimitive.Item>\n ))}\n </DropdownMenuPrimitive.Content>\n </DropdownMenuPrimitive.Portal>\n </DropdownMenuPrimitive.Root>\n );\n}\n\n// ---------------------------------------------------------------------------\n// TabsTrigger\n// ---------------------------------------------------------------------------\n\nconst TabsTrigger = forwardRef<HTMLButtonElement, TabsTriggerProps>(\n (\n {\n variant: variantProp,\n size: sizeProp,\n orientation: orientationProp,\n icon,\n badge,\n dismissible = false,\n onDismiss,\n className,\n children,\n value,\n onKeyDown,\n ...props\n },\n ref,\n ) => {\n const ctx = useContext(TabsContext);\n const variant = variantProp ?? ctx.variant;\n const size = sizeProp ?? ctx.size;\n const orientation = orientationProp ?? ctx.orientation;\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLButtonElement>) => {\n // APG dismissible-tab pattern: Delete/Backspace while trigger is focused closes the tab.\n // The visual X is pointer-only (aria-hidden) to avoid nested-interactive HTML violation.\n if (dismissible && (e.key === 'Delete' || e.key === 'Backspace')) {\n e.preventDefault();\n onDismiss?.();\n }\n onKeyDown?.(e);\n };\n\n return (\n <TabsPrimitive.Trigger\n ref={ref}\n value={value}\n data-value={value}\n className={tabsTriggerVariants({ variant, size, orientation, className })}\n onKeyDown={handleKeyDown}\n {...props}\n >\n {icon && <span aria-hidden=\"true\" className=\"ds:shrink-0 ds:size-4\">{icon}</span>}\n {children}\n {badge && <span className=\"ds:shrink-0\">{badge}</span>}\n {dismissible && (\n // Visual-only dismiss indicator — pointer dismiss fires here; keyboard dismiss fires via Delete/Backspace on the trigger above.\n // No role/tabIndex to avoid nested-interactive (interactive content inside <button> is invalid HTML).\n <span\n aria-hidden=\"true\"\n className={cx(\n 'inline-flex items-center justify-center shrink-0',\n 'size-6 rounded-[var(--radius-sm)]',\n 'hover:bg-muted-foreground/20',\n )}\n onPointerDown={(e) => {\n e.stopPropagation();\n e.preventDefault();\n onDismiss?.();\n }}\n >\n <X className=\"ds:size-3.5\" />\n </span>\n )}\n </TabsPrimitive.Trigger>\n );\n },\n);\nTabsTrigger.displayName = 'TabsTrigger';\n\n// ---------------------------------------------------------------------------\n// TabsContent\n// ---------------------------------------------------------------------------\n\nconst TabsContent = forwardRef<HTMLDivElement, TabsContentProps>(\n ({ className, children, ...props }, ref) => (\n <TabsPrimitive.Content\n ref={ref}\n className={cx(\n 'mt-[var(--spacing-sm)] outline-none',\n 'focus-visible:outline-[length:var(--focus-ring-width)] focus-visible:outline-solid',\n 'focus-visible:outline-ring focus-visible:outline-offset-[length:var(--focus-ring-offset)]',\n className,\n )}\n {...props}\n >\n {children}\n </TabsPrimitive.Content>\n ),\n);\nTabsContent.displayName = 'TabsContent';\n\n// ---------------------------------------------------------------------------\n// Compound export\n// ---------------------------------------------------------------------------\n\nexport const Tabs = Object.assign(TabsRoot, {\n Root: TabsRoot,\n List: TabsList,\n Trigger: TabsTrigger,\n Content: TabsContent,\n});\n\nexport { TabsList, TabsTrigger, TabsContent };\n\n","import type { AgentAdapter } from '../../agent/types';\n\nexport const tabsAgent: AgentAdapter<unknown> = {\n id: 'tabs',\n capabilities: ['select_single', 'navigate'],\n state: {},\n actions: {},\n domHooks: {\n root: { attr: 'data-component', value: 'tabs' },\n item: {\n attr: 'data-tab-id',\n description: 'Each Tab.Trigger emits its value as data-tab-id. The agent reads this to identify the active tab via the DOM.',\n },\n },\n};\n"],"names":["tabsListVariants","cva","tabsTriggerVariants","TabsContext","createContext","TabsRoot","forwardRef","variant","size","orientation","overflow","className","children","valueProp","defaultValue","onValueChange","props","ref","rootRef","useRef","composedRef","composeRefs","dir","useDirection","isControlled","internalValue","setInternalValue","useState","value","setValue","useCallback","next","ctxValue","useMemo","jsx","TabsPrimitive","cx","TabsList","ariaLabel","useContext","t","useTranslation","listRef","overflowTabs","setOverflowTabs","isHorizontal","isDropdownOverflow","useEffect","el","detectOverflow","containerRight","hidden","tab","label","_a","ro","combinedRef","node","selectOptions","Children","child","isValidElement","triggerValue","labelChild","jsxs","Select","OverflowMenu","tabs","DropdownMenuPrimitive","ChevronDown","tabLabel","TabsTrigger","variantProp","sizeProp","orientationProp","icon","badge","dismissible","onDismiss","onKeyDown","ctx","handleKeyDown","e","X","TabsContent","Tabs","tabsAgent"],"mappings":"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"}
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import { jsx as p } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as f } from "react";
|
|
3
|
-
import { Slot as c } from "@radix-ui/react-slot";
|
|
4
|
-
function h(s, t, o) {
|
|
5
|
-
const e = [s === "dark" ? "theme-dark" : "theme-light"];
|
|
6
|
-
return t && e.push("theme-accessible"), o && e.push(o), e.join(" ");
|
|
7
|
-
}
|
|
8
|
-
const l = f(
|
|
9
|
-
({ theme: s = "light", accessible: t = !1, asChild: o = !1, className: e, children: m, ...r }, a) => {
|
|
10
|
-
const i = h(s, t, e);
|
|
11
|
-
return /* @__PURE__ */ p(o ? c : "div", { ref: a, className: i, ...r, children: m });
|
|
12
|
-
}
|
|
13
|
-
);
|
|
14
|
-
l.displayName = "ThemeRoot";
|
|
15
|
-
export {
|
|
16
|
-
l as T
|
|
17
|
-
};
|
|
18
|
-
//# sourceMappingURL=theme-root-vapFjsnt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"theme-toggle-CEaPghpm.js","sources":["../../node_modules/lucide-react/dist/esm/icons/monitor.js","../../node_modules/lucide-react/dist/esm/icons/moon.js","../../node_modules/lucide-react/dist/esm/icons/sun.js","../../src/components/theme-toggle/theme-toggle.tsx"],"sourcesContent":["/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"3\", rx: \"2\", key: \"48i651\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"21\", y2: \"21\", key: \"1svkeh\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"17\", y2: \"21\", key: \"vw1qmm\" }]\n];\nconst Monitor = createLucideIcon(\"monitor\", __iconNode);\n\nexport { __iconNode, Monitor as default };\n//# sourceMappingURL=monitor.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\n \"path\",\n {\n d: \"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401\",\n key: \"kfwtm\"\n }\n ]\n];\nconst Moon = createLucideIcon(\"moon\", __iconNode);\n\nexport { __iconNode, Moon as default };\n//# sourceMappingURL=moon.js.map\n","/**\n * @license lucide-react v1.8.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n];\nconst Sun = createLucideIcon(\"sun\", __iconNode);\n\nexport { __iconNode, Sun as default };\n//# sourceMappingURL=sun.js.map\n","import {\n forwardRef,\n useCallback,\n type HTMLAttributes,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { Monitor, Moon, Sun } from 'lucide-react';\nimport { IconButton } from '../button/icon-button';\nimport { IconButtonGroup } from '../icon-button-group/icon-button-group';\nimport { Switch } from '../switch/switch';\nimport { DropdownMenu } from '../dropdown-menu/dropdown-menu';\nimport {\n useTheme,\n type AccessibilityPreference,\n type ThemePreference,\n type UseThemeReturn,\n} from '../../hooks';\n\n/* ------------------------------------------------------------------ */\n/* CVA */\n/* ------------------------------------------------------------------ */\n\nconst wrapperVariants = cva('ds:inline-flex ds:items-center', {\n variants: {\n variant: {\n menu: '',\n compact: '',\n split: 'ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { variant: 'menu' },\n});\n\n/* ------------------------------------------------------------------ */\n/* Public types */\n/* ------------------------------------------------------------------ */\n\nexport type ThemeToggleVariant = 'menu' | 'compact' | 'split';\n\ninterface ThemeToggleBaseProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'onChange'>,\n VariantProps<typeof wrapperVariants> {\n /**\n * Visual form factor.\n * - `menu` (default) — single trigger that opens a dropdown with both\n * Appearance and Accessibility controls. Best for headers / nav rails.\n * - `compact` — segmented Appearance control only. Use when accessibility\n * lives on a separate settings surface.\n * - `split` — segmented Appearance control plus an inline Accessibility\n * switch. Best for full-width settings panels.\n */\n variant?: ThemeToggleVariant;\n /** Hide the accessibility control. Ignored on `compact`, which never renders it. */\n showAccessibility?: boolean;\n /**\n * Controlled escape hatch — when omitted the component reads/writes\n * `useTheme()` directly so it can drop into any header with no wiring.\n * Pass all four to opt into controlled mode.\n */\n theme?: ThemePreference;\n accessibility?: AccessibilityPreference;\n onThemeChange?: (next: ThemePreference) => void;\n onAccessibilityChange?: (next: AccessibilityPreference) => void;\n}\n\nexport type ThemeToggleProps = ThemeToggleBaseProps;\n\n/* ------------------------------------------------------------------ */\n/* Hook adapter */\n/* ------------------------------------------------------------------ */\n\n/**\n * Resolves controlled props against the store. When the consumer passes\n * `theme` / `onThemeChange` (etc.) we honour those; otherwise we fall\n * through to the singleton `useTheme()` hook so a bare `<ThemeToggle />`\n * works with zero wiring.\n */\nfunction useResolvedTheme(props: ThemeToggleBaseProps): UseThemeReturn {\n const {\n theme: themeProp,\n accessibility: accessibilityProp,\n onThemeChange,\n onAccessibilityChange,\n } = props;\n const store = useTheme();\n const theme = themeProp ?? store.theme;\n const accessibility = accessibilityProp ?? store.accessibility;\n\n const storeSetTheme = store.setTheme;\n const storeSetAccessibility = store.setAccessibility;\n\n const setTheme = useCallback(\n (next: ThemePreference) => {\n if (onThemeChange) {\n onThemeChange(next);\n return;\n }\n storeSetTheme(next);\n },\n [onThemeChange, storeSetTheme],\n );\n\n const setAccessibility = useCallback(\n (next: AccessibilityPreference) => {\n if (onAccessibilityChange) {\n onAccessibilityChange(next);\n return;\n }\n storeSetAccessibility(next);\n },\n [onAccessibilityChange, storeSetAccessibility],\n );\n\n return {\n theme,\n accessibility,\n resolvedTheme: store.resolvedTheme,\n setTheme,\n setAccessibility,\n };\n}\n\n/* ------------------------------------------------------------------ */\n/* Sub-pieces */\n/* ------------------------------------------------------------------ */\n\ninterface AppearanceSegmentProps {\n value: ThemePreference;\n onValueChange: (next: ThemePreference) => void;\n ariaLabel: string;\n size?: 'sm' | 'md' | 'lg';\n}\n\nfunction AppearanceSegment({\n value,\n onValueChange,\n ariaLabel,\n size = 'md',\n}: AppearanceSegmentProps) {\n const { t } = useTranslation();\n return (\n <IconButtonGroup\n aria-label={ariaLabel}\n role=\"radiogroup\"\n mode=\"toggle-single\"\n size={size}\n value={value}\n onValueChange={(next) => onValueChange(next as ThemePreference)}\n >\n <IconButton\n icon={<Sun aria-hidden />}\n aria-label={t('ui.navigation.themeToggle.appearance.light')}\n value=\"light\"\n />\n <IconButton\n icon={<Moon aria-hidden />}\n aria-label={t('ui.navigation.themeToggle.appearance.dark')}\n value=\"dark\"\n />\n <IconButton\n icon={<Monitor aria-hidden />}\n aria-label={t('ui.navigation.themeToggle.appearance.system')}\n value=\"system\"\n />\n </IconButtonGroup>\n );\n}\n\ninterface AccessibilitySwitchProps {\n value: AccessibilityPreference;\n onValueChange: (next: AccessibilityPreference) => void;\n size?: 'sm' | 'md' | 'lg';\n}\n\nfunction AccessibilitySwitch({\n value,\n onValueChange,\n size = 'md',\n}: AccessibilitySwitchProps) {\n const { t } = useTranslation();\n // 'system' is treated as \"off\" visually — the OS preference flows through\n // automatically. Flipping the switch on creates an explicit override.\n const checked = value === 'accessible';\n return (\n <Switch\n label={t('ui.navigation.themeToggle.accessibility.label')}\n labelSide=\"start\"\n size={size}\n checked={checked}\n onCheckedChange={(next) =>\n onValueChange(next ? 'accessible' : 'default')\n }\n />\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* Variants */\n/* ------------------------------------------------------------------ */\n\ninterface VariantRenderProps {\n state: UseThemeReturn;\n className?: string;\n rest: HTMLAttributes<HTMLDivElement>;\n forwardedRef: React.Ref<HTMLDivElement>;\n showAccessibility: boolean;\n}\n\nfunction MenuVariant({\n state,\n className,\n rest,\n forwardedRef,\n showAccessibility,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n const triggerIcon =\n state.resolvedTheme === 'dark' || state.resolvedTheme === 'dark-accessible'\n ? <Moon aria-hidden />\n : <Sun aria-hidden />;\n\n const accessibleChecked = state.accessibility === 'accessible';\n\n return (\n <div\n ref={forwardedRef}\n className={wrapperVariants({ variant: 'menu', className })}\n {...rest}\n >\n <DropdownMenu.Root>\n <DropdownMenu.Trigger asChild>\n <IconButton\n icon={triggerIcon}\n aria-label={t('ui.navigation.themeToggle.trigger')}\n />\n </DropdownMenu.Trigger>\n <DropdownMenu.Portal>\n <DropdownMenu.Content align=\"end\" sideOffset={8}>\n <DropdownMenu.Label>\n {t('ui.navigation.themeToggle.appearance.label')}\n </DropdownMenu.Label>\n <DropdownMenu.RadioGroup\n value={state.theme}\n onValueChange={(next) =>\n state.setTheme(next as ThemePreference)\n }\n >\n <DropdownMenu.RadioItem value=\"light\">\n <Sun aria-hidden className=\"ds:size-4\" />\n {t('ui.navigation.themeToggle.appearance.light')}\n </DropdownMenu.RadioItem>\n <DropdownMenu.RadioItem value=\"dark\">\n <Moon aria-hidden className=\"ds:size-4\" />\n {t('ui.navigation.themeToggle.appearance.dark')}\n </DropdownMenu.RadioItem>\n <DropdownMenu.RadioItem value=\"system\">\n <Monitor aria-hidden className=\"ds:size-4\" />\n {t('ui.navigation.themeToggle.appearance.system')}\n </DropdownMenu.RadioItem>\n </DropdownMenu.RadioGroup>\n {showAccessibility ? (\n <>\n <DropdownMenu.Separator />\n {/* CheckboxItem keeps the accessibility toggle inside the\n Radix menu collection so ArrowDown reaches it and Space\n activates it; `onSelect={preventDefault}` prevents the\n menu from closing on toggle. */}\n <DropdownMenu.CheckboxItem\n checked={accessibleChecked}\n onCheckedChange={(next) =>\n state.setAccessibility(next ? 'accessible' : 'default')\n }\n onSelect={(event) => event.preventDefault()}\n >\n {t('ui.navigation.themeToggle.accessibility.label')}\n </DropdownMenu.CheckboxItem>\n </>\n ) : null}\n </DropdownMenu.Content>\n </DropdownMenu.Portal>\n </DropdownMenu.Root>\n </div>\n );\n}\n\nfunction CompactVariant({\n state,\n className,\n rest,\n forwardedRef,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n return (\n <div\n ref={forwardedRef}\n className={wrapperVariants({ variant: 'compact', className })}\n {...rest}\n >\n <AppearanceSegment\n value={state.theme}\n onValueChange={state.setTheme}\n ariaLabel={t('ui.navigation.themeToggle.appearance.label')}\n />\n </div>\n );\n}\n\nfunction SplitVariant({\n state,\n className,\n rest,\n forwardedRef,\n showAccessibility,\n}: VariantRenderProps) {\n const { t } = useTranslation();\n return (\n <div\n ref={forwardedRef}\n className={wrapperVariants({ variant: 'split', className })}\n {...rest}\n >\n <AppearanceSegment\n value={state.theme}\n onValueChange={state.setTheme}\n ariaLabel={t('ui.navigation.themeToggle.appearance.label')}\n />\n {showAccessibility ? (\n <AccessibilitySwitch\n value={state.accessibility}\n onValueChange={state.setAccessibility}\n />\n ) : null}\n </div>\n );\n}\n\n/* ------------------------------------------------------------------ */\n/* ThemeToggle */\n/* ------------------------------------------------------------------ */\n\nexport const ThemeToggle = forwardRef<HTMLDivElement, ThemeToggleProps>(\n (props, ref) => {\n const {\n variant = 'menu',\n showAccessibility = true,\n className,\n // Strip controlled props from the spread — they are read by the\n // adapter, not by the DOM element.\n theme: _theme,\n accessibility: _accessibility,\n onThemeChange: _onThemeChange,\n onAccessibilityChange: _onAccessibilityChange,\n ...rest\n } = props;\n\n const state = useResolvedTheme(props);\n\n if (variant === 'compact') {\n return (\n <CompactVariant\n state={state}\n className={className}\n rest={rest}\n forwardedRef={ref}\n showAccessibility={showAccessibility}\n />\n );\n }\n if (variant === 'split') {\n return (\n <SplitVariant\n state={state}\n className={className}\n rest={rest}\n forwardedRef={ref}\n showAccessibility={showAccessibility}\n />\n );\n }\n return (\n <MenuVariant\n state={state}\n className={className}\n rest={rest}\n forwardedRef={ref}\n showAccessibility={showAccessibility}\n />\n );\n },\n);\n\nThemeToggle.displayName = 'ThemeToggle';\n"],"names":["__iconNode","Monitor","createLucideIcon","Moon","Sun","wrapperVariants","cva","useResolvedTheme","props","themeProp","accessibilityProp","onThemeChange","onAccessibilityChange","store","useTheme","theme","accessibility","storeSetTheme","storeSetAccessibility","setTheme","useCallback","next","setAccessibility","AppearanceSegment","value","onValueChange","ariaLabel","size","t","useTranslation","jsxs","IconButtonGroup","jsx","IconButton","AccessibilitySwitch","checked","Switch","MenuVariant","state","className","rest","forwardedRef","showAccessibility","triggerIcon","accessibleChecked","DropdownMenu","Fragment","event","CompactVariant","SplitVariant","ThemeToggle","forwardRef","ref","variant","_theme","_accessibility","_onThemeChange","_onAccessibilityChange"],"mappings":"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","x_google_ignoreList":[0,1,2]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"timeline-Ym2DRmtu.js","sources":["../../src/components/timeline/timeline.tsx"],"sourcesContent":["import { createContext, forwardRef, useContext, useMemo, type HTMLAttributes, type LiHTMLAttributes, type OlHTMLAttributes, type ReactNode, type TimeHTMLAttributes } from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { AlertTriangle, Check, Circle, Info, X } from 'lucide-react';\nimport { Avatar } from '../avatar';\nimport { Card } from '../card';\nimport { Timestamp } from '../timestamp';\n\n// TODO: optional @tanstack/react-virtual integration for 500+ events\n\n/* ------------------------------------------------------------------ */\n/* Context */\n/* ------------------------------------------------------------------ */\n\ntype EventType = 'info' | 'success' | 'warning' | 'error' | 'neutral';\ntype Layout = 'rail-start' | 'rail-end' | 'alternating';\n\ninterface TimelineContextValue {\n layout: Layout;\n order: 'newest-first' | 'oldest-first';\n}\n\nconst TimelineContext = createContext<TimelineContextValue>({\n layout: 'rail-start',\n order: 'newest-first',\n});\n\ninterface TimelineEventContextValue {\n type: EventType;\n}\n\nconst TimelineEventContext = createContext<TimelineEventContextValue>({\n type: 'neutral',\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — root */\n/* ------------------------------------------------------------------ */\n\nconst timelineVariants = cva('ds:flex ds:flex-col', {\n variants: {\n layout: {\n 'rail-start': 'ds:ps-4',\n 'rail-end': 'ds:pe-4',\n 'alternating': 'ds:grid ds:grid-cols-[1fr_2rem_1fr] ds:gap-x-[var(--spacing-md)]',\n },\n order: {\n 'newest-first': 'ds:flex-col',\n 'oldest-first': 'ds:flex-col-reverse',\n },\n },\n defaultVariants: { layout: 'rail-start', order: 'newest-first' },\n});\n\n/* ------------------------------------------------------------------ */\n/* CVA — event item */\n/* ------------------------------------------------------------------ */\n\nconst eventVariants = cva(\n 'ds:relative ds:flex ds:gap-[var(--spacing-md)] ds:pb-[var(--spacing-md)]',\n {\n variants: {\n layout: {\n 'rail-start': [\n 'ds:flex-row',\n // Rail: continuous border on the inline-start of the event list\n 'ds:before:absolute ds:before:top-8 ds:before:bottom-0',\n 'ds:before:border-inline-start-[2px] ds:before:border-[color:var(--border)]',\n 'ds:before:inset-inline-start-[-1rem]',\n 'ds:last:before:hidden',\n ].join(' '),\n 'rail-end': [\n 'ds:flex-row-reverse',\n 'ds:before:absolute ds:before:top-8 ds:before:bottom-0',\n 'ds:before:border-inline-end-[2px] ds:before:border-[color:var(--border)]',\n 'ds:before:inset-inline-end-[-1rem]',\n 'ds:last:before:hidden',\n ].join(' '),\n 'alternating': 'ds:contents',\n },\n },\n defaultVariants: { layout: 'rail-start' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* CVA — dot */\n/* ------------------------------------------------------------------ */\n\nconst dotVariants = cva(\n [\n 'ds:relative ds:z-10 ds:flex ds:items-center ds:justify-center',\n 'ds:rounded-[var(--radius-full)] ds:shrink-0',\n 'ds:size-8',\n 'ds:ring-2 ds:ring-[var(--background)]',\n ].join(' '),\n {\n variants: {\n type: {\n info: 'ds:bg-[var(--info)] ds:text-[var(--info-solid-foreground)]',\n success: 'ds:bg-[var(--success)] ds:text-[var(--success-solid-foreground)]',\n warning: 'ds:bg-[var(--warning)] ds:text-[var(--warning-solid-foreground)]',\n error: 'ds:bg-[var(--destructive)] ds:text-[var(--destructive-foreground)]',\n neutral: 'ds:bg-[var(--muted)] ds:text-[var(--muted-foreground)]',\n },\n },\n defaultVariants: { type: 'neutral' },\n },\n);\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface TimelineProps\n extends Omit<OlHTMLAttributes<HTMLOListElement>, 'color'>,\n VariantProps<typeof timelineVariants> {\n layout?: Layout;\n order?: 'newest-first' | 'oldest-first';\n children: ReactNode;\n className?: string;\n}\n\nexport interface TimelineEventProps\n extends LiHTMLAttributes<HTMLLIElement> {\n type?: EventType;\n children: ReactNode;\n className?: string;\n}\n\nexport interface TimelineDotProps\n extends HTMLAttributes<HTMLDivElement> {\n icon?: ReactNode;\n className?: string;\n}\n\nexport interface TimelineContentProps\n extends HTMLAttributes<HTMLDivElement> {\n title: string;\n description?: string;\n actor?: { name: string; src?: string };\n children?: ReactNode;\n className?: string;\n}\n\nexport interface TimelineTimestampProps\n extends TimeHTMLAttributes<HTMLTimeElement> {\n date: Date | string;\n relative?: boolean;\n format?: Intl.DateTimeFormatOptions;\n className?: string;\n}\n\n/* ------------------------------------------------------------------ */\n/* Default icons per type */\n/* ------------------------------------------------------------------ */\n\nconst TYPE_ICONS: Record<EventType, ReactNode> = {\n info: <Info size={16} aria-hidden=\"true\" />,\n success: <Check size={16} aria-hidden=\"true\" />,\n warning: <AlertTriangle size={16} aria-hidden=\"true\" />,\n error: <X size={16} aria-hidden=\"true\" />,\n neutral: <Circle size={16} aria-hidden=\"true\" />,\n};\n\n/* ------------------------------------------------------------------ */\n/* Timeline root */\n/* ------------------------------------------------------------------ */\n\nconst TimelineRoot = forwardRef<HTMLOListElement, TimelineProps>(\n (\n {\n layout = 'rail-start',\n order = 'newest-first',\n className,\n children,\n ...props\n },\n ref,\n ) => {\n const ctx = useMemo(() => ({ layout, order }), [layout, order]);\n\n return (\n <TimelineContext.Provider value={ctx}>\n <ol\n ref={ref}\n className={timelineVariants({ layout, order, className })}\n {...props}\n >\n {children}\n </ol>\n </TimelineContext.Provider>\n );\n },\n);\nTimelineRoot.displayName = 'Timeline';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Event */\n/* ------------------------------------------------------------------ */\n\nconst TimelineEvent = forwardRef<HTMLLIElement, TimelineEventProps>(\n ({ type = 'neutral', className, children, ...props }, ref) => {\n const { layout } = useContext(TimelineContext);\n const { t } = useTranslation();\n\n const evtCtx = useMemo(() => ({ type }), [type]);\n\n if (layout === 'alternating') {\n // In alternating layout the <li> uses `contents` so its children\n // participate directly in the parent grid.\n return (\n <TimelineEventContext.Provider value={evtCtx}>\n <li\n ref={ref}\n className={['ds:contents', className].filter(Boolean).join(' ')}\n {...props}\n >\n {/* Visually-hidden type prefix for screen readers */}\n <span className=\"ds:sr-only\">{t(`ui.timeline.type.${type}`)}</span>\n {children}\n </li>\n </TimelineEventContext.Provider>\n );\n }\n\n return (\n <TimelineEventContext.Provider value={evtCtx}>\n <li\n ref={ref}\n className={eventVariants({ layout, className })}\n {...props}\n >\n {/* Visually-hidden type prefix for screen readers */}\n <span className=\"ds:sr-only\">{t(`ui.timeline.type.${type}`)}</span>\n {children}\n </li>\n </TimelineEventContext.Provider>\n );\n },\n);\nTimelineEvent.displayName = 'Timeline.Event';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Dot */\n/* ------------------------------------------------------------------ */\n\nconst TimelineDot = forwardRef<HTMLDivElement, TimelineDotProps>(\n ({ icon, className, ...props }, ref) => {\n const { type } = useContext(TimelineEventContext);\n const { layout } = useContext(TimelineContext);\n\n const dot = (\n <div\n ref={ref}\n aria-hidden=\"true\"\n className={dotVariants({ type, className })}\n {...props}\n >\n {icon ?? TYPE_ICONS[type]}\n </div>\n );\n\n if (layout === 'alternating') {\n // In alternating grid: col 2 (centre) for the dot with the rail line\n return (\n <div\n aria-hidden=\"true\"\n className=\"ds:col-start-2 ds:flex ds:flex-col ds:items-center\"\n >\n {/* Rail segment above the dot */}\n <div className=\"ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)] ds:first:hidden\" />\n {dot}\n {/* Rail segment below the dot */}\n <div className=\"ds:w-[var(--border-width-md)] ds:flex-1 ds:bg-[var(--border)]\" />\n </div>\n );\n }\n\n return dot;\n },\n);\nTimelineDot.displayName = 'Timeline.Dot';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Content */\n/* ------------------------------------------------------------------ */\n\nconst TimelineContent = forwardRef<HTMLDivElement, TimelineContentProps>(\n ({ title, description, actor, children, className, ...props }, ref) => {\n const { layout } = useContext(TimelineContext);\n\n const inner = (\n <div\n ref={ref}\n className={[\n 'ds:flex-1 ds:min-w-0 ds:pb-[var(--spacing-md)]',\n 'ds:[&_*]:break-normal ds:[&_*]:[overflow-wrap:anywhere]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n >\n <Card variant=\"outlined\">\n <Card.Body>\n <p className=\"type-label ds:text-[var(--foreground)]\">\n {title}\n </p>\n {description && (\n <p className=\"ds:mt-[var(--spacing-xs)] type-body-sm ds:text-[var(--muted-foreground)]\">\n {description}\n </p>\n )}\n {actor && (\n <div className=\"ds:mt-[var(--spacing-sm)] ds:flex ds:items-center ds:gap-[var(--spacing-xs)]\">\n <Avatar size=\"xs\" name={actor.name} src={actor.src} />\n <span className=\"type-meta ds:text-[var(--muted-foreground)]\">\n {actor.name}\n </span>\n </div>\n )}\n {children}\n </Card.Body>\n </Card>\n </div>\n );\n\n if (layout === 'alternating') {\n // Alternating: odd events in col 1 (start), even events in col 3 (end).\n // We use CSS nth-child targeting via a wrapper that sets col placement.\n return (\n <div className=\"ds:col-span-1 ds:[li:nth-child(even)_&]:col-start-3 ds:[li:nth-child(odd)_&]:col-start-1\">\n {inner}\n </div>\n );\n }\n\n return inner;\n },\n);\nTimelineContent.displayName = 'Timeline.Content';\n\n/* ------------------------------------------------------------------ */\n/* Timeline.Timestamp — thin wrapper over the shared Timestamp */\n/* component. Keeps the existing API (`date`, `relative`, `format`) */\n/* for backward compatibility; adds tabular-nums because timeline */\n/* timestamps sit in a rail gutter and benefit from column-aligned */\n/* digits. */\n/* ------------------------------------------------------------------ */\n\nconst TWENTY_FOUR_HOURS_MS = 24 * 60 * 60 * 1000;\n\nconst TimelineTimestamp = forwardRef<HTMLTimeElement, TimelineTimestampProps>(\n (\n {\n date,\n relative = true,\n format = { dateStyle: 'medium', timeStyle: 'short' },\n className,\n ...props\n },\n ref,\n ) => (\n <Timestamp\n ref={ref}\n value={date}\n format={relative ? 'relative' : 'absolute'}\n relativeWindow={relative ? TWENTY_FOUR_HOURS_MS : undefined}\n absoluteFormat={format}\n className={[\n 'ds:text-[var(--muted-foreground)]',\n 'ds:[font-variant-numeric:var(--font-feature-tabular)]',\n className,\n ]\n .filter(Boolean)\n .join(' ')}\n {...props}\n />\n ),\n);\nTimelineTimestamp.displayName = 'Timeline.Timestamp';\n\n/* ------------------------------------------------------------------ */\n/* Compound export */\n/* ------------------------------------------------------------------ */\n\nexport const Timeline = Object.assign(TimelineRoot, {\n Event: TimelineEvent,\n Dot: TimelineDot,\n Content: TimelineContent,\n Timestamp: TimelineTimestamp,\n});\n\n"],"names":["TimelineContext","createContext","TimelineEventContext","timelineVariants","cva","eventVariants","dotVariants","TYPE_ICONS","jsx","Info","Check","AlertTriangle","X","Circle","TimelineRoot","forwardRef","layout","order","className","children","props","ref","ctx","useMemo","TimelineEvent","type","useContext","t","useTranslation","evtCtx","jsxs","TimelineDot","icon","dot","TimelineContent","title","description","actor","inner","Card","Avatar","TWENTY_FOUR_HOURS_MS","TimelineTimestamp","date","relative","format","Timestamp","Timeline"],"mappings":"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"}
|
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
import { jsx as i } from "react/jsx-runtime";
|
|
2
|
-
import { forwardRef as c, isValidElement as p, cloneElement as d } from "react";
|
|
3
|
-
const n = "sr-only", N = c(
|
|
4
|
-
({ asChild: r = !1, className: l, children: s, ...o }, m) => {
|
|
5
|
-
const a = l ? `${n} ${l}` : n;
|
|
6
|
-
if (r && p(s)) {
|
|
7
|
-
const e = s, t = e.props.className ? `${a} ${e.props.className}` : a;
|
|
8
|
-
return d(e, {
|
|
9
|
-
...o,
|
|
10
|
-
className: t,
|
|
11
|
-
ref: m
|
|
12
|
-
});
|
|
13
|
-
}
|
|
14
|
-
return /* @__PURE__ */ i("span", { ref: m, className: a, ...o, children: s });
|
|
15
|
-
}
|
|
16
|
-
);
|
|
17
|
-
N.displayName = "VisuallyHidden";
|
|
18
|
-
export {
|
|
19
|
-
N as V
|
|
20
|
-
};
|
|
21
|
-
//# sourceMappingURL=visually-hidden-Y3jcdCv-.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"warning-stack-5KROOw9M.js","sources":["../../src/components/warning-stack/warning-stack.tsx"],"sourcesContent":["import {\n forwardRef,\n useCallback,\n useEffect,\n useId,\n useMemo,\n useRef,\n useState,\n type HTMLAttributes,\n type ReactNode,\n} from 'react';\nimport { cva, type VariantProps } from 'class-variance-authority';\nimport { useTranslation } from 'react-i18next';\nimport { ChevronDown } from 'lucide-react';\nimport { Alert, type AlertProps } from '../alert/alert';\nimport { Button } from '../button/button';\n\n/* ------------------------------------------------------------------ */\n/* Types */\n/* ------------------------------------------------------------------ */\n\nexport interface WarningStackItem {\n id: string;\n variant?: AlertProps['variant'];\n title: ReactNode;\n description?: ReactNode;\n icon?: ReactNode;\n actions?: ReactNode;\n dismissible?: boolean;\n}\n\nconst stackVariants = cva(\n [\n 'ds:flex ds:flex-col',\n 'ds:rounded-[var(--radius-lg)]',\n 'ds:bg-[color:var(--card)] ds:text-[color:var(--card-foreground)]',\n 'ds:shadow-[var(--shadow-card)]',\n 'ds:p-[var(--spacing-md)]',\n ].join(' '),\n {\n variants: {\n size: {\n sm: 'ds:gap-[var(--spacing-sm)]',\n md: 'ds:gap-[var(--spacing-md)]',\n },\n // `stretch: true` fills the parent layout cell — mirrors the `stretch`\n // prop on `Card` so a WarningStack rendered next to a Card in a grid\n // row ends up at matching height.\n stretch: {\n true: 'ds:h-full ds:self-stretch',\n false: '',\n },\n },\n defaultVariants: {\n size: 'md',\n stretch: false,\n },\n },\n);\n\nconst listVariants = cva('ds:flex ds:flex-col', {\n variants: {\n size: {\n sm: 'ds:gap-[var(--spacing-sm)]',\n md: 'ds:gap-[var(--spacing-md)]',\n },\n },\n defaultVariants: { size: 'md' },\n});\n\nconst TOGGLE_CLASSES = [\n 'inline-flex items-center gap-[var(--spacing-xs)] self-start',\n].join(' ');\n\nexport interface WarningStackProps\n extends Omit<HTMLAttributes<HTMLDivElement>, 'children' | 'role' | 'title'>,\n VariantProps<typeof stackVariants> {\n /** Items rendered inside the stack. */\n items: WarningStackItem[];\n /** Fill the parent layout cell — use in a dashboard grid row so the\n * stack ends up with matching height to sibling Cards. */\n stretch?: boolean;\n /** Visible title rendered as an `<h2>` above the stack. Also labels the\n * region for assistive tech. When omitted, the region is labelled via a\n * visually hidden heading using `ariaLabel` (or the default \"Warnings\"). */\n title?: ReactNode;\n /** Optional short description rendered under the title. */\n description?: ReactNode;\n /** Cap on visible items before a \"Show N more\" toggle appears. */\n maxVisible?: number;\n /** Whether the stack starts collapsed when items exceed `maxVisible`. */\n defaultCollapsed?: boolean;\n /** Fires when a dismissible item's close control is activated. */\n onDismiss?: (item: WarningStackItem) => void;\n /** Accessible label for the region when `title` is not set. */\n ariaLabel?: string;\n /** Optional node rendered when the stack has zero items. */\n emptyState?: ReactNode;\n}\n\n/* ------------------------------------------------------------------ */\n/* Root */\n/* ------------------------------------------------------------------ */\n\nexport const WarningStack = forwardRef<HTMLDivElement, WarningStackProps>(\n (\n {\n items,\n title,\n description,\n maxVisible,\n defaultCollapsed = true,\n onDismiss,\n size = 'md',\n stretch = false,\n ariaLabel,\n emptyState,\n className,\n ...rest\n },\n ref,\n ) => {\n const { t } = useTranslation();\n const labelId = useId();\n const listId = useId();\n\n const overflow = maxVisible !== undefined && items.length > maxVisible;\n const [collapsed, setCollapsed] = useState(defaultCollapsed);\n\n // Live-region announces the count when items change.\n const liveRef = useRef<HTMLDivElement>(null);\n const lastCountRef = useRef<number>(items.length);\n\n useEffect(() => {\n if (!liveRef.current) return;\n const prev = lastCountRef.current;\n const next = items.length;\n if (prev !== next) {\n liveRef.current.textContent = t('ui.warningStack.countChanged', {\n count: next,\n defaultValue: '{{count}} warnings to review',\n });\n }\n lastCountRef.current = next;\n }, [items.length, t]);\n\n const visible = useMemo(() => {\n if (!overflow || !collapsed) return items;\n return items.slice(0, maxVisible);\n }, [items, overflow, collapsed, maxVisible]);\n\n const hiddenCount = overflow ? items.length - (maxVisible ?? 0) : 0;\n\n const handleDismiss = useCallback(\n (item: WarningStackItem) => (open: boolean) => {\n if (!open) onDismiss?.(item);\n },\n [onDismiss],\n );\n\n const toggle = useCallback(() => setCollapsed((c) => !c), []);\n\n const regionLabel = ariaLabel ?? t('ui.warningStack.regionLabel', 'Warnings');\n\n // Title block: a visible header when `title` is provided; otherwise a\n // visually hidden heading so the region still has a programmatic name.\n // A `<div>` rather than `<header>` wrapper keeps the `<header>` element's\n // implicit banner role from leaking out of the region.\n const header = title ? (\n <div className=\"ds:flex ds:flex-col ds:gap-[var(--spacing-3xs)]\">\n <h2\n id={labelId}\n className=\"ds:text-start type-title-section ds:text-[var(--foreground)]\"\n >\n {title}\n </h2>\n {description ? (\n <p className=\"ds:text-start type-body-sm ds:text-[var(--muted-foreground)]\">\n {description}\n </p>\n ) : null}\n </div>\n ) : (\n <h2 id={labelId} className=\"ds:sr-only\">\n {regionLabel}\n </h2>\n );\n\n if (items.length === 0) {\n if (!emptyState) return null;\n return (\n <section\n ref={ref}\n role=\"region\"\n aria-labelledby={labelId}\n className={[stackVariants({ size, stretch }), className].filter(Boolean).join(' ')}\n {...rest}\n >\n {header}\n {emptyState}\n </section>\n );\n }\n\n return (\n <section\n ref={ref}\n role=\"region\"\n aria-labelledby={labelId}\n className={[stackVariants({ size, stretch }), className].filter(Boolean).join(' ')}\n {...rest}\n >\n {header}\n <div\n ref={liveRef}\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"ds:sr-only\"\n />\n <ul\n id={listId}\n className={listVariants({ size })}\n aria-label={t('ui.warningStack.listLabel', 'Warning list')}\n >\n {visible.map((item) => {\n const variant = item.variant ?? 'warning';\n return (\n <li key={item.id}>\n <Alert\n variant={variant}\n dismissible={item.dismissible}\n icon={item.icon}\n onOpenChange={handleDismiss(item)}\n >\n {/* `as=\"h3\"` keeps a clean heading ladder — the stack's\n h2 labels the region, then each item's h3 rises from it. */}\n <Alert.Title as=\"h3\">{item.title}</Alert.Title>\n {item.description ? (\n <Alert.Description>{item.description}</Alert.Description>\n ) : null}\n {item.actions ? <Alert.Action>{item.actions}</Alert.Action> : null}\n </Alert>\n </li>\n );\n })}\n </ul>\n\n {overflow ? (\n <Button\n type=\"button\"\n intent=\"link\"\n size=\"sm\"\n aria-expanded={!collapsed}\n aria-controls={listId}\n onClick={toggle}\n className={TOGGLE_CLASSES}\n >\n <ChevronDown\n aria-hidden=\"true\"\n className={[\n 'ds:size-4 ds:transition-transform ds:duration-[var(--animation-duration)] ds:motion-reduce:transition-none',\n collapsed ? '' : 'ds:rotate-180',\n ].join(' ')}\n />\n {collapsed\n ? t('ui.warningStack.showMore', {\n count: hiddenCount,\n defaultValue: 'Show {{count}} more warnings',\n })\n : t('ui.warningStack.showLess', 'Show less')}\n </Button>\n ) : null}\n </section>\n );\n },\n);\n\nWarningStack.displayName = 'WarningStack';\n"],"names":["stackVariants","cva","listVariants","TOGGLE_CLASSES","WarningStack","forwardRef","items","title","description","maxVisible","defaultCollapsed","onDismiss","size","stretch","ariaLabel","emptyState","className","rest","ref","t","useTranslation","labelId","useId","listId","overflow","collapsed","setCollapsed","useState","liveRef","useRef","lastCountRef","useEffect","prev","next","visible","useMemo","hiddenCount","handleDismiss","useCallback","item","open","toggle","c","regionLabel","header","jsxs","jsx","variant","Alert","Button","ChevronDown"],"mappings":"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"}
|