@kushagradhawan/kookie-ui 0.3.21 → 0.3.23
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/components.css +264 -329
- package/dist/cjs/components/_internal/base-button.d.ts.map +1 -1
- package/dist/cjs/components/_internal/base-button.js +1 -1
- package/dist/cjs/components/_internal/base-button.js.map +4 -4
- package/dist/cjs/components/_internal/dropdown-menu-drill-down.js +1 -1
- package/dist/cjs/components/_internal/dropdown-menu-drill-down.js.map +3 -3
- package/dist/cjs/components/_internal/shell-bottom.js +1 -1
- package/dist/cjs/components/_internal/shell-bottom.js.map +4 -4
- package/dist/cjs/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/cjs/components/_internal/shell-handles.js +1 -1
- package/dist/cjs/components/_internal/shell-handles.js.map +3 -3
- package/dist/cjs/components/_internal/shell-inspector.js +1 -1
- package/dist/cjs/components/_internal/shell-inspector.js.map +4 -4
- package/dist/cjs/components/_internal/shell-sidebar.js +1 -1
- package/dist/cjs/components/_internal/shell-sidebar.js.map +4 -4
- package/dist/cjs/components/accordion.d.ts.map +1 -1
- package/dist/cjs/components/accordion.js +1 -1
- package/dist/cjs/components/accordion.js.map +4 -4
- package/dist/cjs/components/alert-dialog.d.ts.map +1 -1
- package/dist/cjs/components/alert-dialog.js +1 -1
- package/dist/cjs/components/alert-dialog.js.map +4 -4
- package/dist/cjs/components/avatar.js +1 -1
- package/dist/cjs/components/avatar.js.map +4 -4
- package/dist/cjs/components/badge.d.ts.map +1 -1
- package/dist/cjs/components/badge.js +1 -1
- package/dist/cjs/components/badge.js.map +4 -4
- package/dist/cjs/components/blockquote.js +1 -1
- package/dist/cjs/components/blockquote.js.map +4 -4
- package/dist/cjs/components/box.js +1 -1
- package/dist/cjs/components/box.js.map +4 -4
- package/dist/cjs/components/button.js +1 -1
- package/dist/cjs/components/button.js.map +4 -4
- package/dist/cjs/components/callout.js +1 -1
- package/dist/cjs/components/callout.js.map +4 -4
- package/dist/cjs/components/card.js +1 -1
- package/dist/cjs/components/card.js.map +4 -4
- package/dist/cjs/components/chatbar.js +2 -2
- package/dist/cjs/components/chatbar.js.map +4 -4
- package/dist/cjs/components/checkbox-cards.js +1 -1
- package/dist/cjs/components/checkbox-cards.js.map +4 -4
- package/dist/cjs/components/checkbox-group.js +1 -1
- package/dist/cjs/components/checkbox-group.js.map +4 -4
- package/dist/cjs/components/checkbox.js +1 -1
- package/dist/cjs/components/checkbox.js.map +4 -4
- package/dist/cjs/components/code.js +1 -1
- package/dist/cjs/components/code.js.map +4 -4
- package/dist/cjs/components/combobox.js +1 -1
- package/dist/cjs/components/combobox.js.map +4 -4
- package/dist/cjs/components/container.js +1 -1
- package/dist/cjs/components/container.js.map +4 -4
- package/dist/cjs/components/context-menu.d.ts.map +1 -1
- package/dist/cjs/components/context-menu.js +1 -1
- package/dist/cjs/components/context-menu.js.map +4 -4
- package/dist/cjs/components/data-list.js +1 -1
- package/dist/cjs/components/data-list.js.map +4 -4
- package/dist/cjs/components/dialog.d.ts.map +1 -1
- package/dist/cjs/components/dialog.js +1 -1
- package/dist/cjs/components/dialog.js.map +4 -4
- package/dist/cjs/components/dropdown-menu.d.ts.map +1 -1
- package/dist/cjs/components/dropdown-menu.js +1 -1
- package/dist/cjs/components/dropdown-menu.js.map +4 -4
- package/dist/cjs/components/em.js +1 -1
- package/dist/cjs/components/em.js.map +4 -4
- package/dist/cjs/components/flex.js +1 -1
- package/dist/cjs/components/flex.js.map +4 -4
- package/dist/cjs/components/grid.js +1 -1
- package/dist/cjs/components/grid.js.map +4 -4
- package/dist/cjs/components/heading.js +1 -1
- package/dist/cjs/components/heading.js.map +4 -4
- package/dist/cjs/components/hover-card.js +1 -1
- package/dist/cjs/components/hover-card.js.map +4 -4
- package/dist/cjs/components/icon-button.js +2 -2
- package/dist/cjs/components/icon-button.js.map +4 -4
- package/dist/cjs/components/image.js +1 -1
- package/dist/cjs/components/image.js.map +4 -4
- package/dist/cjs/components/index.js +5 -5
- package/dist/cjs/components/index.js.map +4 -4
- package/dist/cjs/components/inset.js +1 -1
- package/dist/cjs/components/inset.js.map +4 -4
- package/dist/cjs/components/kbd.js +1 -1
- package/dist/cjs/components/kbd.js.map +4 -4
- package/dist/cjs/components/link.js +1 -1
- package/dist/cjs/components/link.js.map +4 -4
- package/dist/cjs/components/navbar.js +1 -1
- package/dist/cjs/components/navbar.js.map +4 -4
- package/dist/cjs/components/popover.js +1 -1
- package/dist/cjs/components/popover.js.map +4 -4
- package/dist/cjs/components/progress.js +1 -1
- package/dist/cjs/components/progress.js.map +4 -4
- package/dist/cjs/components/quote.js +1 -1
- package/dist/cjs/components/quote.js.map +4 -4
- package/dist/cjs/components/radio-cards.js +1 -1
- package/dist/cjs/components/radio-cards.js.map +4 -4
- package/dist/cjs/components/radio-group.js +1 -1
- package/dist/cjs/components/radio-group.js.map +4 -4
- package/dist/cjs/components/radio.js +1 -1
- package/dist/cjs/components/radio.js.map +4 -4
- package/dist/cjs/components/schemas/base-button.schema.d.ts +2 -2
- package/dist/cjs/components/schemas/button.schema.d.ts +2 -2
- package/dist/cjs/components/schemas/icon-button.schema.d.ts +4 -4
- package/dist/cjs/components/schemas/shell.schema.d.ts +2 -2
- package/dist/cjs/components/schemas/toggle-button.schema.d.ts +6 -6
- package/dist/cjs/components/schemas/toggle-icon-button.schema.d.ts +8 -8
- package/dist/cjs/components/scroll-area.js +1 -1
- package/dist/cjs/components/scroll-area.js.map +4 -4
- package/dist/cjs/components/section.js +1 -1
- package/dist/cjs/components/section.js.map +4 -4
- package/dist/cjs/components/segmented-control.js +1 -1
- package/dist/cjs/components/segmented-control.js.map +4 -4
- package/dist/cjs/components/select.js +1 -1
- package/dist/cjs/components/select.js.map +4 -4
- package/dist/cjs/components/separator.js +1 -1
- package/dist/cjs/components/separator.js.map +4 -4
- package/dist/cjs/components/sheet.d.ts.map +1 -1
- package/dist/cjs/components/sheet.js +1 -1
- package/dist/cjs/components/sheet.js.map +4 -4
- package/dist/cjs/components/shell.d.ts.map +1 -1
- package/dist/cjs/components/shell.js +1 -1
- package/dist/cjs/components/shell.js.map +4 -4
- package/dist/cjs/components/sidebar.js +1 -1
- package/dist/cjs/components/sidebar.js.map +4 -4
- package/dist/cjs/components/skeleton.js +1 -1
- package/dist/cjs/components/skeleton.js.map +4 -4
- package/dist/cjs/components/slider.js +1 -1
- package/dist/cjs/components/slider.js.map +4 -4
- package/dist/cjs/components/spinner.js +1 -1
- package/dist/cjs/components/spinner.js.map +4 -4
- package/dist/cjs/components/strong.js +1 -1
- package/dist/cjs/components/strong.js.map +4 -4
- package/dist/cjs/components/switch.js +1 -1
- package/dist/cjs/components/switch.js.map +4 -4
- package/dist/cjs/components/tab-nav.js +1 -1
- package/dist/cjs/components/tab-nav.js.map +4 -4
- package/dist/cjs/components/table.js +1 -1
- package/dist/cjs/components/table.js.map +4 -4
- package/dist/cjs/components/tabs.js +1 -1
- package/dist/cjs/components/tabs.js.map +4 -4
- package/dist/cjs/components/text-area.js +1 -1
- package/dist/cjs/components/text-area.js.map +4 -4
- package/dist/cjs/components/text-field.js +2 -2
- package/dist/cjs/components/text-field.js.map +4 -4
- package/dist/cjs/components/text.js +1 -1
- package/dist/cjs/components/text.js.map +4 -4
- package/dist/cjs/components/theme-panel.js +3 -3
- package/dist/cjs/components/theme-panel.js.map +4 -4
- package/dist/cjs/components/theme.d.ts.map +1 -1
- package/dist/cjs/components/theme.js +1 -1
- package/dist/cjs/components/theme.js.map +4 -4
- package/dist/cjs/components/toggle-button.js +2 -2
- package/dist/cjs/components/toggle-button.js.map +4 -4
- package/dist/cjs/components/toggle-icon-button.js +3 -3
- package/dist/cjs/components/toggle-icon-button.js.map +4 -4
- package/dist/cjs/components/toolbar.js +1 -1
- package/dist/cjs/components/toolbar.js.map +4 -4
- package/dist/cjs/components/tooltip.js +1 -1
- package/dist/cjs/components/tooltip.js.map +4 -4
- package/dist/cjs/components/user-card.js +1 -1
- package/dist/cjs/components/user-card.js.map +4 -4
- package/dist/cjs/helpers/compile-prop-defs.d.ts +49 -0
- package/dist/cjs/helpers/compile-prop-defs.d.ts.map +1 -0
- package/dist/cjs/helpers/compile-prop-defs.js +2 -0
- package/dist/cjs/helpers/compile-prop-defs.js.map +7 -0
- package/dist/cjs/helpers/extract-props.d.ts.map +1 -1
- package/dist/cjs/helpers/extract-props.js +1 -1
- package/dist/cjs/helpers/extract-props.js.map +4 -4
- package/dist/cjs/helpers/get-margin-styles.d.ts.map +1 -1
- package/dist/cjs/helpers/get-margin-styles.js +1 -1
- package/dist/cjs/helpers/get-margin-styles.js.map +3 -3
- package/dist/cjs/helpers/get-responsive-styles.d.ts +5 -2
- package/dist/cjs/helpers/get-responsive-styles.d.ts.map +1 -1
- package/dist/cjs/helpers/get-responsive-styles.js +1 -1
- package/dist/cjs/helpers/get-responsive-styles.js.map +3 -3
- package/dist/cjs/helpers/index.js +2 -2
- package/dist/cjs/helpers/index.js.map +4 -4
- package/dist/cjs/helpers/use-deprecation-warning.d.ts +10 -0
- package/dist/cjs/helpers/use-deprecation-warning.d.ts.map +1 -0
- package/dist/cjs/helpers/use-deprecation-warning.js +2 -0
- package/dist/cjs/helpers/use-deprecation-warning.js.map +7 -0
- package/dist/cjs/hooks/index.js +2 -2
- package/dist/cjs/hooks/index.js.map +3 -3
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.js +1 -1
- package/dist/cjs/hooks/use-body-pointer-events-cleanup.js.map +3 -3
- package/dist/cjs/hooks/use-breakpoint.d.ts +7 -3
- package/dist/cjs/hooks/use-breakpoint.d.ts.map +1 -1
- package/dist/cjs/hooks/use-breakpoint.js +1 -1
- package/dist/cjs/hooks/use-breakpoint.js.map +3 -3
- package/dist/cjs/hooks/use-prop-synced-state.d.ts +14 -0
- package/dist/cjs/hooks/use-prop-synced-state.d.ts.map +1 -0
- package/dist/cjs/hooks/use-prop-synced-state.js +2 -0
- package/dist/cjs/hooks/use-prop-synced-state.js.map +7 -0
- package/dist/cjs/index.js +5 -5
- package/dist/cjs/index.js.map +4 -4
- package/dist/esm/{chunk-RQ2ZPMHJ.js → chunk-22HGLMPQ.js} +2 -2
- package/dist/esm/{chunk-WYA4IRU6.js → chunk-25WZA7ZU.js} +2 -2
- package/dist/esm/chunk-2UPAYDKR.js +2 -0
- package/dist/esm/chunk-2UPAYDKR.js.map +7 -0
- package/dist/esm/{chunk-XHQGMOXV.js → chunk-36ZQVP7F.js} +2 -2
- package/dist/esm/{chunk-K3R4AH3E.js → chunk-3MWWP4MW.js} +2 -2
- package/dist/esm/{chunk-HQ35PM4O.js → chunk-43A5GUSI.js} +2 -2
- package/dist/esm/{chunk-Z5DQ6FSA.js → chunk-4AQTUBVP.js} +2 -2
- package/dist/esm/{chunk-25U7DENY.js → chunk-4BBOHEF4.js} +2 -2
- package/dist/esm/chunk-4CKDU6FY.js +2 -0
- package/dist/esm/chunk-4CKDU6FY.js.map +7 -0
- package/dist/esm/{chunk-ZSEFZM5H.js → chunk-4IY2PR6N.js} +2 -2
- package/dist/esm/{chunk-QLIELX4I.js → chunk-4ME6O27S.js} +2 -2
- package/dist/esm/chunk-4XJY6FIK.js +2 -0
- package/dist/esm/chunk-4XJY6FIK.js.map +7 -0
- package/dist/esm/{chunk-JQOFJNCV.js → chunk-4YFJWXL2.js} +2 -2
- package/dist/esm/{chunk-DNI4QRXQ.js → chunk-5IBGFL6O.js} +2 -2
- package/dist/esm/chunk-5TXQLK4G.js +2 -0
- package/dist/esm/chunk-5TXQLK4G.js.map +7 -0
- package/dist/esm/{chunk-IPJUHVM6.js → chunk-666GX7O5.js} +2 -2
- package/dist/esm/chunk-6FLLFCBU.js +2 -0
- package/dist/esm/chunk-6FLLFCBU.js.map +7 -0
- package/dist/esm/{chunk-DJBPM5QK.js → chunk-7FC7HF76.js} +2 -2
- package/dist/esm/{chunk-SVLY6B5F.js → chunk-7QDTSBJF.js} +2 -2
- package/dist/esm/chunk-AX5S56DS.js +2 -0
- package/dist/esm/chunk-AX5S56DS.js.map +7 -0
- package/dist/esm/{chunk-DK5MHD6I.js → chunk-B24BDVG2.js} +2 -2
- package/dist/esm/{chunk-WZCZHCVE.js → chunk-BJYUPIXO.js} +2 -2
- package/dist/esm/{chunk-BJTJUIYJ.js → chunk-CRWYCLTE.js} +2 -2
- package/dist/esm/{chunk-OHJVFZMH.js → chunk-CSKZZOI2.js} +2 -2
- package/dist/esm/chunk-D5N627TH.js +2 -0
- package/dist/esm/chunk-D5N627TH.js.map +7 -0
- package/dist/esm/{chunk-ADYTQCZX.js → chunk-D6B7IMZU.js} +2 -2
- package/dist/esm/chunk-DL2O3GKG.js +2 -0
- package/dist/esm/chunk-DL2O3GKG.js.map +7 -0
- package/dist/esm/{chunk-USGTBZ43.js → chunk-E67CIG6A.js} +2 -2
- package/dist/esm/{chunk-42HFGCHX.js → chunk-ETMLMDW4.js} +2 -2
- package/dist/esm/{chunk-7CBAHIVG.js → chunk-F2HYQ3ZR.js} +2 -2
- package/dist/esm/{chunk-YUZPSUJE.js → chunk-F7IYL2VW.js} +2 -2
- package/dist/esm/{chunk-FVCWNSRU.js → chunk-FHOCUZDR.js} +2 -2
- package/dist/esm/{chunk-7MURQ6CR.js → chunk-FLFAXVFB.js} +2 -2
- package/dist/esm/{chunk-APRBRAOT.js → chunk-FOEZLQTW.js} +2 -2
- package/dist/esm/{chunk-WNSPLWRV.js → chunk-GJSGKE7B.js} +2 -2
- package/dist/esm/{chunk-OGOOZLUD.js → chunk-GLERJXVS.js} +2 -2
- package/dist/esm/{chunk-6VGPTAHM.js → chunk-GWXVETMF.js} +2 -2
- package/dist/esm/{chunk-ES7MK2MM.js → chunk-GYBLXQ4R.js} +2 -2
- package/dist/esm/{chunk-4OBMRJHC.js → chunk-H7ST535H.js} +2 -2
- package/dist/esm/{chunk-QLZ5XAW6.js → chunk-HF5WY5YE.js} +2 -2
- package/dist/esm/chunk-ICIGZ3N7.js +2 -0
- package/dist/esm/chunk-ICIGZ3N7.js.map +7 -0
- package/dist/esm/{chunk-RDP4UQ42.js → chunk-IEWCQU2S.js} +2 -2
- package/dist/esm/{chunk-XLOHPURR.js → chunk-IHK3H2OM.js} +2 -2
- package/dist/esm/{chunk-3F6I7YOR.js → chunk-JDGJSNWT.js} +2 -2
- package/dist/esm/chunk-JQQIPEGY.js +2 -0
- package/dist/esm/chunk-JQQIPEGY.js.map +7 -0
- package/dist/esm/chunk-JR2YOGII.js +2 -0
- package/dist/esm/chunk-JR2YOGII.js.map +7 -0
- package/dist/esm/chunk-JUY7CBSL.js +2 -0
- package/dist/esm/chunk-JUY7CBSL.js.map +7 -0
- package/dist/esm/{chunk-VF5TRT3H.js → chunk-KKM6T5P7.js} +2 -2
- package/dist/esm/{chunk-ZHYOJNWV.js → chunk-LKAK5GXF.js} +2 -2
- package/dist/esm/chunk-LOGJJF4I.js +2 -0
- package/dist/esm/chunk-LOGJJF4I.js.map +7 -0
- package/dist/esm/{chunk-JCYI4NTV.js → chunk-MBCBP73P.js} +2 -2
- package/dist/esm/{chunk-UYNYUR7O.js → chunk-MBE2YSBU.js} +2 -2
- package/dist/esm/chunk-MHANZINI.js +2 -0
- package/dist/esm/chunk-MHANZINI.js.map +7 -0
- package/dist/esm/chunk-MRECKC4D.js +2 -0
- package/dist/esm/chunk-MRECKC4D.js.map +7 -0
- package/dist/esm/{chunk-H2G446JG.js → chunk-NMKPFUNP.js} +2 -2
- package/dist/esm/{chunk-4N5JU7XQ.js → chunk-O3CDWEZA.js} +2 -2
- package/dist/esm/{chunk-TEULZKBM.js → chunk-OGXZHAQL.js} +2 -2
- package/dist/esm/{chunk-2AEELIG6.js → chunk-OWAUCLRT.js} +2 -2
- package/dist/esm/{chunk-7CXVHFMQ.js → chunk-P7HYVJSU.js} +2 -2
- package/dist/esm/{chunk-4532RT2B.js → chunk-P7IAHW4V.js} +2 -2
- package/dist/esm/{chunk-M3ZYJANH.js → chunk-PQZXQ4ST.js} +2 -2
- package/dist/esm/{chunk-SGU4HUHF.js → chunk-PTLFMWCN.js} +2 -2
- package/dist/esm/chunk-S2HA3W3V.js +2 -0
- package/dist/esm/chunk-S2HA3W3V.js.map +7 -0
- package/dist/esm/{chunk-E6IWYD3U.js → chunk-S5C5YRBS.js} +2 -2
- package/dist/esm/{chunk-A24PYRVV.js → chunk-SO67YEVQ.js} +2 -2
- package/dist/esm/chunk-TLWTUKKL.js +2 -0
- package/dist/esm/chunk-TLWTUKKL.js.map +7 -0
- package/dist/esm/{chunk-HACQF6F4.js → chunk-TOOSHJOA.js} +2 -2
- package/dist/esm/{chunk-QOWA5LK5.js → chunk-U2X2CAW4.js} +2 -2
- package/dist/esm/{chunk-U7AASKZI.js → chunk-UVCH7QKO.js} +2 -2
- package/dist/esm/{chunk-GWYFT3EI.js → chunk-VLO7NXSP.js} +2 -2
- package/dist/esm/{chunk-DXI5P5O4.js → chunk-VX6ARMWP.js} +2 -2
- package/dist/esm/chunk-WAURCNAS.js +2 -0
- package/dist/esm/chunk-WAURCNAS.js.map +7 -0
- package/dist/esm/{chunk-EJWAAFCI.js → chunk-WO43WW3A.js} +2 -2
- package/dist/esm/{chunk-GLC4QJBF.js → chunk-WTYNFBFV.js} +2 -2
- package/dist/esm/{chunk-6FAICIYS.js → chunk-XMRIRFM7.js} +2 -2
- package/dist/esm/chunk-YV2KYHGR.js +2 -0
- package/dist/esm/chunk-YV2KYHGR.js.map +7 -0
- package/dist/esm/{chunk-UIEUZLZZ.js → chunk-ZY6SQWHT.js} +2 -2
- package/dist/esm/components/_internal/base-button.d.ts.map +1 -1
- package/dist/esm/components/_internal/base-button.js +1 -1
- package/dist/esm/components/_internal/dropdown-menu-drill-down.js +1 -1
- package/dist/esm/components/_internal/shell-bottom.js +1 -1
- package/dist/esm/components/_internal/shell-handles.d.ts.map +1 -1
- package/dist/esm/components/_internal/shell-handles.js +1 -1
- package/dist/esm/components/_internal/shell-inspector.js +1 -1
- package/dist/esm/components/_internal/shell-sidebar.js +1 -1
- package/dist/esm/components/accordion.d.ts.map +1 -1
- package/dist/esm/components/accordion.js +1 -1
- package/dist/esm/components/alert-dialog.d.ts.map +1 -1
- package/dist/esm/components/alert-dialog.js +1 -1
- package/dist/esm/components/avatar.js +1 -1
- package/dist/esm/components/badge.d.ts.map +1 -1
- package/dist/esm/components/badge.js +1 -1
- package/dist/esm/components/blockquote.js +1 -1
- package/dist/esm/components/box.js +1 -1
- package/dist/esm/components/button.js +1 -1
- package/dist/esm/components/callout.js +1 -1
- package/dist/esm/components/card.js +1 -1
- package/dist/esm/components/chatbar.js +1 -1
- package/dist/esm/components/checkbox-cards.js +1 -1
- package/dist/esm/components/checkbox-group.js +1 -1
- package/dist/esm/components/checkbox.js +1 -1
- package/dist/esm/components/code.js +1 -1
- package/dist/esm/components/combobox.js +1 -1
- package/dist/esm/components/container.js +1 -1
- package/dist/esm/components/context-menu.d.ts.map +1 -1
- package/dist/esm/components/context-menu.js +1 -1
- package/dist/esm/components/data-list.js +1 -1
- package/dist/esm/components/dialog.d.ts.map +1 -1
- package/dist/esm/components/dialog.js +1 -1
- package/dist/esm/components/dropdown-menu.d.ts.map +1 -1
- package/dist/esm/components/dropdown-menu.js +1 -1
- package/dist/esm/components/em.js +1 -1
- package/dist/esm/components/flex.js +1 -1
- package/dist/esm/components/grid.js +1 -1
- package/dist/esm/components/heading.js +1 -1
- package/dist/esm/components/hover-card.js +1 -1
- package/dist/esm/components/icon-button.js +1 -1
- package/dist/esm/components/image.js +1 -1
- package/dist/esm/components/index.js +1 -1
- package/dist/esm/components/inset.js +1 -1
- package/dist/esm/components/kbd.js +1 -1
- package/dist/esm/components/link.js +1 -1
- package/dist/esm/components/navbar.js +1 -1
- package/dist/esm/components/popover.js +1 -1
- package/dist/esm/components/progress.js +1 -1
- package/dist/esm/components/quote.js +1 -1
- package/dist/esm/components/radio-cards.js +1 -1
- package/dist/esm/components/radio-group.js +1 -1
- package/dist/esm/components/radio.js +1 -1
- package/dist/esm/components/schemas/base-button.schema.d.ts +2 -2
- package/dist/esm/components/schemas/button.schema.d.ts +2 -2
- package/dist/esm/components/schemas/icon-button.schema.d.ts +4 -4
- package/dist/esm/components/schemas/shell.schema.d.ts +2 -2
- package/dist/esm/components/schemas/toggle-button.schema.d.ts +6 -6
- package/dist/esm/components/schemas/toggle-icon-button.schema.d.ts +8 -8
- package/dist/esm/components/scroll-area.js +1 -1
- package/dist/esm/components/section.js +1 -1
- package/dist/esm/components/segmented-control.js +1 -1
- package/dist/esm/components/select.js +1 -1
- package/dist/esm/components/separator.js +1 -1
- package/dist/esm/components/sheet.d.ts.map +1 -1
- package/dist/esm/components/sheet.js +1 -1
- package/dist/esm/components/shell.d.ts.map +1 -1
- package/dist/esm/components/shell.js +1 -1
- package/dist/esm/components/sidebar.js +1 -1
- package/dist/esm/components/skeleton.js +1 -1
- package/dist/esm/components/slider.js +1 -1
- package/dist/esm/components/spinner.js +1 -1
- package/dist/esm/components/strong.js +1 -1
- package/dist/esm/components/switch.js +1 -1
- package/dist/esm/components/tab-nav.js +1 -1
- package/dist/esm/components/table.js +1 -1
- package/dist/esm/components/tabs.js +1 -1
- package/dist/esm/components/text-area.js +1 -1
- package/dist/esm/components/text-field.js +1 -1
- package/dist/esm/components/text.js +1 -1
- package/dist/esm/components/theme-panel.js +1 -1
- package/dist/esm/components/theme.d.ts.map +1 -1
- package/dist/esm/components/theme.js +1 -1
- package/dist/esm/components/toggle-button.js +1 -1
- package/dist/esm/components/toggle-icon-button.js +1 -1
- package/dist/esm/components/toolbar.js +1 -1
- package/dist/esm/components/tooltip.js +1 -1
- package/dist/esm/components/user-card.js +1 -1
- package/dist/esm/helpers/compile-prop-defs.d.ts +49 -0
- package/dist/esm/helpers/compile-prop-defs.d.ts.map +1 -0
- package/dist/esm/helpers/compile-prop-defs.js +2 -0
- package/dist/esm/helpers/compile-prop-defs.js.map +7 -0
- package/dist/esm/helpers/extract-props.d.ts.map +1 -1
- package/dist/esm/helpers/extract-props.js +1 -1
- package/dist/esm/helpers/get-margin-styles.d.ts.map +1 -1
- package/dist/esm/helpers/get-margin-styles.js +1 -1
- package/dist/esm/helpers/get-responsive-styles.d.ts +5 -2
- package/dist/esm/helpers/get-responsive-styles.d.ts.map +1 -1
- package/dist/esm/helpers/get-responsive-styles.js +1 -1
- package/dist/esm/helpers/index.js +1 -1
- package/dist/esm/helpers/use-deprecation-warning.d.ts +10 -0
- package/dist/esm/helpers/use-deprecation-warning.d.ts.map +1 -0
- package/dist/esm/helpers/use-deprecation-warning.js +2 -0
- package/dist/esm/helpers/use-deprecation-warning.js.map +7 -0
- package/dist/esm/hooks/index.js +1 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.d.ts.map +1 -1
- package/dist/esm/hooks/use-body-pointer-events-cleanup.js +1 -1
- package/dist/esm/hooks/use-breakpoint.d.ts +7 -3
- package/dist/esm/hooks/use-breakpoint.d.ts.map +1 -1
- package/dist/esm/hooks/use-breakpoint.js +1 -1
- package/dist/esm/hooks/use-prop-synced-state.d.ts +14 -0
- package/dist/esm/hooks/use-prop-synced-state.d.ts.map +1 -0
- package/dist/esm/hooks/use-prop-synced-state.js +2 -0
- package/dist/esm/hooks/use-prop-synced-state.js.map +7 -0
- package/dist/esm/index.js +1 -1
- package/package.json +2 -1
- package/schemas/base-button.json +0 -1
- package/schemas/button.json +0 -1
- package/schemas/icon-button.json +0 -1
- package/schemas/index.json +0 -6
- package/schemas/toggle-button.json +0 -1
- package/schemas/toggle-icon-button.json +0 -1
- package/src/components/_internal/base-button.css +2 -2
- package/src/components/_internal/base-button.tsx +3 -58
- package/src/components/_internal/base-card.css +19 -4
- package/src/components/_internal/base-checkbox.css +2 -2
- package/src/components/_internal/base-dialog.css +7 -13
- package/src/components/_internal/base-menu.css +7 -0
- package/src/components/_internal/base-radio.css +2 -2
- package/src/components/_internal/base-sidebar.css +7 -0
- package/src/components/_internal/base-tab-list.css +2 -2
- package/src/components/_internal/shell-handles.tsx +27 -0
- package/src/components/accordion.css +6 -6
- package/src/components/accordion.tsx +2 -8
- package/src/components/alert-dialog.tsx +22 -20
- package/src/components/avatar.css +2 -2
- package/src/components/badge.css +2 -2
- package/src/components/badge.tsx +2 -8
- package/src/components/callout.css +2 -2
- package/src/components/chatbar.css +1 -1
- package/src/components/context-menu.tsx +2 -8
- package/src/components/dialog.tsx +46 -72
- package/src/components/dropdown-menu.tsx +2 -8
- package/src/components/popover.css +7 -0
- package/src/components/progress.css +21 -8
- package/src/components/segmented-control.css +2 -2
- package/src/components/select.css +9 -2
- package/src/components/sheet.tsx +31 -28
- package/src/components/shell.css +106 -69
- package/src/components/shell.tsx +168 -97
- package/src/components/slider.css +2 -2
- package/src/components/switch.css +2 -2
- package/src/components/table.css +7 -0
- package/src/components/text-area.css +2 -2
- package/src/components/text-field.css +2 -2
- package/src/components/theme.tsx +35 -34
- package/src/helpers/compile-prop-defs.ts +121 -0
- package/src/helpers/extract-props.ts +104 -83
- package/src/helpers/get-margin-styles.ts +38 -71
- package/src/helpers/get-responsive-styles.ts +37 -38
- package/src/helpers/use-deprecation-warning.ts +26 -0
- package/src/hooks/use-body-pointer-events-cleanup.ts +36 -6
- package/src/hooks/use-breakpoint.ts +94 -53
- package/src/hooks/use-prop-synced-state.ts +24 -0
- package/src/styles/tokens/blur.css +28 -0
- package/src/styles/tokens/color.css +3 -3
- package/src/styles/tokens/constants.css +11 -0
- package/styles.css +280 -332
- package/tokens/base.css +13 -3
- package/tokens.css +16 -3
- package/dist/esm/chunk-2SS3FA3N.js +0 -2
- package/dist/esm/chunk-2SS3FA3N.js.map +0 -7
- package/dist/esm/chunk-5U2Q23K3.js +0 -2
- package/dist/esm/chunk-5U2Q23K3.js.map +0 -7
- package/dist/esm/chunk-6ELPYR73.js +0 -2
- package/dist/esm/chunk-6ELPYR73.js.map +0 -7
- package/dist/esm/chunk-DZ4H2KTP.js +0 -2
- package/dist/esm/chunk-DZ4H2KTP.js.map +0 -7
- package/dist/esm/chunk-H4MMVAGQ.js +0 -2
- package/dist/esm/chunk-H4MMVAGQ.js.map +0 -7
- package/dist/esm/chunk-HURTSXRY.js +0 -2
- package/dist/esm/chunk-HURTSXRY.js.map +0 -7
- package/dist/esm/chunk-ITRVKLYU.js +0 -2
- package/dist/esm/chunk-ITRVKLYU.js.map +0 -7
- package/dist/esm/chunk-KCAFSCOV.js +0 -2
- package/dist/esm/chunk-KCAFSCOV.js.map +0 -7
- package/dist/esm/chunk-KMPBTEZH.js +0 -2
- package/dist/esm/chunk-KMPBTEZH.js.map +0 -7
- package/dist/esm/chunk-LN5SP46K.js +0 -2
- package/dist/esm/chunk-LN5SP46K.js.map +0 -7
- package/dist/esm/chunk-Q73Y5O5P.js +0 -2
- package/dist/esm/chunk-Q73Y5O5P.js.map +0 -7
- package/dist/esm/chunk-RMBS6CAO.js +0 -2
- package/dist/esm/chunk-RMBS6CAO.js.map +0 -7
- package/dist/esm/chunk-UUX42HBM.js +0 -2
- package/dist/esm/chunk-UUX42HBM.js.map +0 -7
- package/dist/esm/chunk-X7BD5FLE.js +0 -2
- package/dist/esm/chunk-X7BD5FLE.js.map +0 -7
- package/dist/esm/chunk-YEA646GM.js +0 -2
- package/dist/esm/chunk-YEA646GM.js.map +0 -7
- package/dist/esm/chunk-ZMEXIPWM.js +0 -2
- package/dist/esm/chunk-ZMEXIPWM.js.map +0 -7
- /package/dist/esm/{chunk-RQ2ZPMHJ.js.map → chunk-22HGLMPQ.js.map} +0 -0
- /package/dist/esm/{chunk-WYA4IRU6.js.map → chunk-25WZA7ZU.js.map} +0 -0
- /package/dist/esm/{chunk-XHQGMOXV.js.map → chunk-36ZQVP7F.js.map} +0 -0
- /package/dist/esm/{chunk-K3R4AH3E.js.map → chunk-3MWWP4MW.js.map} +0 -0
- /package/dist/esm/{chunk-HQ35PM4O.js.map → chunk-43A5GUSI.js.map} +0 -0
- /package/dist/esm/{chunk-Z5DQ6FSA.js.map → chunk-4AQTUBVP.js.map} +0 -0
- /package/dist/esm/{chunk-25U7DENY.js.map → chunk-4BBOHEF4.js.map} +0 -0
- /package/dist/esm/{chunk-ZSEFZM5H.js.map → chunk-4IY2PR6N.js.map} +0 -0
- /package/dist/esm/{chunk-QLIELX4I.js.map → chunk-4ME6O27S.js.map} +0 -0
- /package/dist/esm/{chunk-JQOFJNCV.js.map → chunk-4YFJWXL2.js.map} +0 -0
- /package/dist/esm/{chunk-DNI4QRXQ.js.map → chunk-5IBGFL6O.js.map} +0 -0
- /package/dist/esm/{chunk-IPJUHVM6.js.map → chunk-666GX7O5.js.map} +0 -0
- /package/dist/esm/{chunk-DJBPM5QK.js.map → chunk-7FC7HF76.js.map} +0 -0
- /package/dist/esm/{chunk-SVLY6B5F.js.map → chunk-7QDTSBJF.js.map} +0 -0
- /package/dist/esm/{chunk-DK5MHD6I.js.map → chunk-B24BDVG2.js.map} +0 -0
- /package/dist/esm/{chunk-WZCZHCVE.js.map → chunk-BJYUPIXO.js.map} +0 -0
- /package/dist/esm/{chunk-BJTJUIYJ.js.map → chunk-CRWYCLTE.js.map} +0 -0
- /package/dist/esm/{chunk-OHJVFZMH.js.map → chunk-CSKZZOI2.js.map} +0 -0
- /package/dist/esm/{chunk-ADYTQCZX.js.map → chunk-D6B7IMZU.js.map} +0 -0
- /package/dist/esm/{chunk-USGTBZ43.js.map → chunk-E67CIG6A.js.map} +0 -0
- /package/dist/esm/{chunk-42HFGCHX.js.map → chunk-ETMLMDW4.js.map} +0 -0
- /package/dist/esm/{chunk-7CBAHIVG.js.map → chunk-F2HYQ3ZR.js.map} +0 -0
- /package/dist/esm/{chunk-YUZPSUJE.js.map → chunk-F7IYL2VW.js.map} +0 -0
- /package/dist/esm/{chunk-FVCWNSRU.js.map → chunk-FHOCUZDR.js.map} +0 -0
- /package/dist/esm/{chunk-7MURQ6CR.js.map → chunk-FLFAXVFB.js.map} +0 -0
- /package/dist/esm/{chunk-APRBRAOT.js.map → chunk-FOEZLQTW.js.map} +0 -0
- /package/dist/esm/{chunk-WNSPLWRV.js.map → chunk-GJSGKE7B.js.map} +0 -0
- /package/dist/esm/{chunk-OGOOZLUD.js.map → chunk-GLERJXVS.js.map} +0 -0
- /package/dist/esm/{chunk-6VGPTAHM.js.map → chunk-GWXVETMF.js.map} +0 -0
- /package/dist/esm/{chunk-ES7MK2MM.js.map → chunk-GYBLXQ4R.js.map} +0 -0
- /package/dist/esm/{chunk-4OBMRJHC.js.map → chunk-H7ST535H.js.map} +0 -0
- /package/dist/esm/{chunk-QLZ5XAW6.js.map → chunk-HF5WY5YE.js.map} +0 -0
- /package/dist/esm/{chunk-RDP4UQ42.js.map → chunk-IEWCQU2S.js.map} +0 -0
- /package/dist/esm/{chunk-XLOHPURR.js.map → chunk-IHK3H2OM.js.map} +0 -0
- /package/dist/esm/{chunk-3F6I7YOR.js.map → chunk-JDGJSNWT.js.map} +0 -0
- /package/dist/esm/{chunk-VF5TRT3H.js.map → chunk-KKM6T5P7.js.map} +0 -0
- /package/dist/esm/{chunk-ZHYOJNWV.js.map → chunk-LKAK5GXF.js.map} +0 -0
- /package/dist/esm/{chunk-JCYI4NTV.js.map → chunk-MBCBP73P.js.map} +0 -0
- /package/dist/esm/{chunk-UYNYUR7O.js.map → chunk-MBE2YSBU.js.map} +0 -0
- /package/dist/esm/{chunk-H2G446JG.js.map → chunk-NMKPFUNP.js.map} +0 -0
- /package/dist/esm/{chunk-4N5JU7XQ.js.map → chunk-O3CDWEZA.js.map} +0 -0
- /package/dist/esm/{chunk-TEULZKBM.js.map → chunk-OGXZHAQL.js.map} +0 -0
- /package/dist/esm/{chunk-2AEELIG6.js.map → chunk-OWAUCLRT.js.map} +0 -0
- /package/dist/esm/{chunk-7CXVHFMQ.js.map → chunk-P7HYVJSU.js.map} +0 -0
- /package/dist/esm/{chunk-4532RT2B.js.map → chunk-P7IAHW4V.js.map} +0 -0
- /package/dist/esm/{chunk-M3ZYJANH.js.map → chunk-PQZXQ4ST.js.map} +0 -0
- /package/dist/esm/{chunk-SGU4HUHF.js.map → chunk-PTLFMWCN.js.map} +0 -0
- /package/dist/esm/{chunk-E6IWYD3U.js.map → chunk-S5C5YRBS.js.map} +0 -0
- /package/dist/esm/{chunk-A24PYRVV.js.map → chunk-SO67YEVQ.js.map} +0 -0
- /package/dist/esm/{chunk-HACQF6F4.js.map → chunk-TOOSHJOA.js.map} +0 -0
- /package/dist/esm/{chunk-QOWA5LK5.js.map → chunk-U2X2CAW4.js.map} +0 -0
- /package/dist/esm/{chunk-U7AASKZI.js.map → chunk-UVCH7QKO.js.map} +0 -0
- /package/dist/esm/{chunk-GWYFT3EI.js.map → chunk-VLO7NXSP.js.map} +0 -0
- /package/dist/esm/{chunk-DXI5P5O4.js.map → chunk-VX6ARMWP.js.map} +0 -0
- /package/dist/esm/{chunk-EJWAAFCI.js.map → chunk-WO43WW3A.js.map} +0 -0
- /package/dist/esm/{chunk-GLC4QJBF.js.map → chunk-WTYNFBFV.js.map} +0 -0
- /package/dist/esm/{chunk-6FAICIYS.js.map → chunk-XMRIRFM7.js.map} +0 -0
- /package/dist/esm/{chunk-UIEUZLZZ.js.map → chunk-ZY6SQWHT.js.map} +0 -0
package/tokens/base.css
CHANGED
|
@@ -176,9 +176,9 @@
|
|
|
176
176
|
--color-panel: var(--color-panel-translucent);
|
|
177
177
|
--color-surface: var(--color-surface-translucent);
|
|
178
178
|
--color-dialog: var(--color-dialog-translucent);
|
|
179
|
-
--backdrop-filter-panel:
|
|
180
|
-
--backdrop-filter-components:
|
|
181
|
-
--backdrop-filter-dialog:
|
|
179
|
+
--backdrop-filter-panel: var(--backdrop-filter-panel-enabled);
|
|
180
|
+
--backdrop-filter-components: var(--backdrop-filter-components-enabled);
|
|
181
|
+
--backdrop-filter-dialog: var(--backdrop-filter-dialog-enabled);
|
|
182
182
|
--material-blend: 60%;
|
|
183
183
|
--material-alpha: 1;
|
|
184
184
|
}
|
|
@@ -1598,6 +1598,16 @@
|
|
|
1598
1598
|
}
|
|
1599
1599
|
[data-blur='none'] {
|
|
1600
1600
|
--blur-factor: 0;
|
|
1601
|
+
--backdrop-filter-components-enabled: none;
|
|
1602
|
+
--backdrop-filter-panel-enabled: none;
|
|
1603
|
+
--backdrop-filter-dialog-enabled: none;
|
|
1604
|
+
}
|
|
1605
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
1606
|
+
.radix-themes {
|
|
1607
|
+
--backdrop-filter-components-enabled: none;
|
|
1608
|
+
--backdrop-filter-panel-enabled: none;
|
|
1609
|
+
--backdrop-filter-dialog-enabled: none;
|
|
1610
|
+
}
|
|
1601
1611
|
}
|
|
1602
1612
|
[data-blur='small'] {
|
|
1603
1613
|
--blur-factor: 0.75;
|
package/tokens.css
CHANGED
|
@@ -3309,6 +3309,9 @@
|
|
|
3309
3309
|
--backdrop-blur-components: var(--blur-4);
|
|
3310
3310
|
--backdrop-blur-panel: var(--blur-5);
|
|
3311
3311
|
--backdrop-blur-dialog: var(--blur-6);
|
|
3312
|
+
--backdrop-filter-components-enabled: blur(var(--backdrop-blur-components));
|
|
3313
|
+
--backdrop-filter-panel-enabled: blur(var(--backdrop-blur-panel));
|
|
3314
|
+
--backdrop-filter-dialog-enabled: blur(var(--backdrop-blur-dialog));
|
|
3312
3315
|
--surface-opacity-light: var(--opacity-5);
|
|
3313
3316
|
--surface-opacity-heavy: var(--opacity-6);
|
|
3314
3317
|
--surface-opacity-dark: var(--opacity-7);
|
|
@@ -3558,9 +3561,9 @@
|
|
|
3558
3561
|
--color-panel: var(--color-panel-translucent);
|
|
3559
3562
|
--color-surface: var(--color-surface-translucent);
|
|
3560
3563
|
--color-dialog: var(--color-dialog-translucent);
|
|
3561
|
-
--backdrop-filter-panel:
|
|
3562
|
-
--backdrop-filter-components:
|
|
3563
|
-
--backdrop-filter-dialog:
|
|
3564
|
+
--backdrop-filter-panel: var(--backdrop-filter-panel-enabled);
|
|
3565
|
+
--backdrop-filter-components: var(--backdrop-filter-components-enabled);
|
|
3566
|
+
--backdrop-filter-dialog: var(--backdrop-filter-dialog-enabled);
|
|
3564
3567
|
--material-blend: 60%;
|
|
3565
3568
|
--material-alpha: 1;
|
|
3566
3569
|
}
|
|
@@ -4980,6 +4983,16 @@
|
|
|
4980
4983
|
}
|
|
4981
4984
|
[data-blur='none'] {
|
|
4982
4985
|
--blur-factor: 0;
|
|
4986
|
+
--backdrop-filter-components-enabled: none;
|
|
4987
|
+
--backdrop-filter-panel-enabled: none;
|
|
4988
|
+
--backdrop-filter-dialog-enabled: none;
|
|
4989
|
+
}
|
|
4990
|
+
@media (prefers-reduced-transparency: reduce) {
|
|
4991
|
+
.radix-themes {
|
|
4992
|
+
--backdrop-filter-components-enabled: none;
|
|
4993
|
+
--backdrop-filter-panel-enabled: none;
|
|
4994
|
+
--backdrop-filter-dialog-enabled: none;
|
|
4995
|
+
}
|
|
4983
4996
|
}
|
|
4984
4997
|
[data-blur='small'] {
|
|
4985
4998
|
--blur-factor: 0.75;
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as h}from"./chunk-USGTBZ43.js";import{a as b}from"./chunk-WNSPLWRV.js";import{b as I,d as G}from"./chunk-IX5HIHVI.js";import{a as E}from"./chunk-MJJ7XDIP.js";import{b as N,c as R}from"./chunk-LN5SP46K.js";import{a as f}from"./chunk-KMPBTEZH.js";import{b as m,d as v,e as y,f as T}from"./chunk-HUKPWYG2.js";import{a as U}from"./chunk-3XT5P2HO.js";var H={};U(H,{CheckboxItem:()=>_,Content:()=>W,Group:()=>O,Item:()=>D,Label:()=>L,RadioGroup:()=>V,RadioItem:()=>z,Root:()=>k,Separator:()=>F,Sub:()=>A,SubContent:()=>j,SubTrigger:()=>K,Trigger:()=>B});import*as e from"react";import s from"classnames";import{ContextMenu as r,Slot as g}from"radix-ui";var k=t=>e.createElement(r.Root,{...t});k.displayName="ContextMenu.Root";var B=e.forwardRef(({children:t,...n},o)=>e.createElement(r.Trigger,{...n,ref:o,asChild:!0},E(t)));B.displayName="ContextMenu.Trigger";var w=e.createContext({}),W=e.forwardRef((t,n)=>{let o=N();e.useEffect(()=>{t.panelBackground!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.")},[t.panelBackground]);let u=t.material??t.panelBackground??o.panelBackground,a=e.useMemo(()=>({material:u,accentColor:o.accentColor}),[u,o.accentColor]),{size:i=m.size.default,variant:C=m.variant.default,highContrast:c=m.highContrast.default,material:p=a.material}=t,{className:x,children:l,color:M,container:S,forceMount:d,material:J,panelBackground:Q,...q}=f(t,m),P=e.useMemo(()=>M||a.accentColor,[M,a.accentColor]);return e.createElement(r.Portal,{container:S,forceMount:d},e.createElement(R,{asChild:!0},e.createElement(r.Content,{"data-accent-color":P,"data-material":p,"data-panel-background":p,alignOffset:-Number(i)*4,collisionPadding:10,...q,asChild:!1,ref:n,className:s("rt-PopperContent","rt-BaseMenuContent","rt-ContextMenuContent",x)},e.createElement(b,{type:"auto"},e.createElement("div",{className:s("rt-BaseMenuViewport","rt-ContextMenuViewport")},e.createElement(w.Provider,{value:e.useMemo(()=>({size:i,variant:C,color:P,highContrast:c,material:p}),[i,C,P,c,p])},l))))))});W.displayName="ContextMenu.Content";var L=e.forwardRef(({className:t,...n},o)=>e.createElement(r.Label,{...n,asChild:!1,ref:o,className:s("rt-BaseMenuLabel","rt-ContextMenuLabel",t)}));L.displayName="ContextMenu.Label";var D=e.forwardRef((t,n)=>{let{className:o,children:u,color:a=v.color.default,shortcut:i,...C}=t;return e.createElement(r.Item,{"data-accent-color":a,...C,ref:n,className:s("rt-reset","rt-BaseMenuItem","rt-ContextMenuItem",o)},e.createElement(g.Slottable,null,u),i&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-ContextMenuShortcut"},e.createElement(h,{size:"1"},i)))});D.displayName="ContextMenu.Item";var O=e.forwardRef(({className:t,...n},o)=>e.createElement(r.Group,{...n,asChild:!1,ref:o,className:s("rt-BaseMenuGroup","rt-ContextMenuGroup",t)}));O.displayName="ContextMenu.Group";var V=e.forwardRef(({className:t,...n},o)=>e.createElement(r.RadioGroup,{...n,asChild:!1,ref:o,className:s("rt-BaseMenuRadioGroup","rt-ContextMenuRadioGroup",t)}));V.displayName="ContextMenu.RadioGroup";var z=e.forwardRef((t,n)=>{let{children:o,className:u,color:a=T.color.default,...i}=t;return e.createElement(r.RadioItem,{...i,asChild:!1,ref:n,"data-accent-color":a,className:s("rt-BaseMenuItem","rt-BaseMenuRadioItem","rt-ContextMenuItem","rt-ContextMenuRadioItem",u)},e.createElement(g.Slottable,null,o),e.createElement(r.ItemIndicator,{className:"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator"},e.createElement(I,{className:"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon"})))});z.displayName="ContextMenu.RadioItem";var _=e.forwardRef((t,n)=>{let{children:o,className:u,shortcut:a,color:i=y.color.default,...C}=t;return e.createElement(r.CheckboxItem,{...C,asChild:!1,ref:n,"data-accent-color":i,className:s("rt-BaseMenuItem","rt-BaseMenuCheckboxItem","rt-ContextMenuItem","rt-ContextMenuCheckboxItem",u)},e.createElement(g.Slottable,null,o),e.createElement(r.ItemIndicator,{className:"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator"},e.createElement(I,{className:"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon"})),a&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-ContextMenuShortcut"},e.createElement(h,{size:"1"},a)))});_.displayName="ContextMenu.CheckboxItem";var A=t=>e.createElement(r.Sub,{...t});A.displayName="ContextMenu.Sub";var K=e.forwardRef((t,n)=>{let{className:o,children:u,...a}=t;return e.createElement(r.SubTrigger,{...a,asChild:!1,ref:n,className:s("rt-BaseMenuItem","rt-BaseMenuSubTrigger","rt-ContextMenuItem","rt-ContextMenuSubTrigger",o)},u,e.createElement("div",{className:"rt-BaseMenuShortcut rt-ContextMenuShortcut"},e.createElement(G,{className:"rt-BaseMenuSubTriggerIcon rt-ContextMenuSubTriggerIcon"})))});K.displayName="ContextMenu.SubTrigger";var j=e.forwardRef((t,n)=>{let{size:o,variant:u,color:a,highContrast:i,material:C}=e.useContext(w),{className:c,children:p,container:x,forceMount:l,material:M,panelBackground:S,...d}=f({size:o,variant:u,color:a,highContrast:i,material:C,...t},m);return e.createElement(r.Portal,{container:x,forceMount:l},e.createElement(R,{asChild:!0},e.createElement(r.SubContent,{"data-accent-color":a,"data-material":C,"data-panel-background":C,alignOffset:-Number(o)*4,sideOffset:1,collisionPadding:10,...d,asChild:!1,ref:n,className:s("rt-PopperContent","rt-BaseMenuContent","rt-BaseMenuSubContent","rt-ContextMenuContent","rt-ContextMenuSubContent",c)},e.createElement(b,{type:"auto"},e.createElement("div",{className:s("rt-BaseMenuViewport","rt-ContextMenuViewport")},p)))))});j.displayName="ContextMenu.SubContent";var F=e.forwardRef(({className:t,...n},o)=>e.createElement(r.Separator,{...n,asChild:!1,ref:o,className:s("rt-BaseMenuSeparator","rt-ContextMenuSeparator",t)}));F.displayName="ContextMenu.Separator";export{k as a,B as b,W as c,L as d,D as e,O as f,V as g,z as h,_ as i,A as j,K as k,j as l,F as m,H as n};
|
|
2
|
-
//# sourceMappingURL=chunk-2SS3FA3N.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/context-menu.tsx"],
|
|
4
|
-
"sourcesContent": ["/**\n * Context Menu component that provides right-click menu functionality.\n * Requires client-side rendering due to event handling and portal usage.\n */\n'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { ContextMenu as ContextMenuPrimitive, Slot } from 'radix-ui';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n contextMenuContentPropDefs,\n contextMenuItemPropDefs,\n contextMenuCheckboxItemPropDefs,\n contextMenuRadioItemPropDefs,\n} from './context-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ThickCheckIcon, ThickChevronRightIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { Kbd } from './kbd.js';\n\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ninterface ContextMenuRootProps\n extends React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Root> {}\nconst ContextMenuRoot: React.FC<ContextMenuRootProps> = (props) => (\n <ContextMenuPrimitive.Root {...props} />\n);\nContextMenuRoot.displayName = 'ContextMenu.Root';\n\ntype ContextMenuTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.Trigger>;\ninterface ContextMenuTriggerProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Trigger, RemovedProps> {}\nconst ContextMenuTrigger = React.forwardRef<ContextMenuTriggerElement, ContextMenuTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </ContextMenuPrimitive.Trigger>\n ),\n);\nContextMenuTrigger.displayName = 'ContextMenu.Trigger';\n\ntype ContextMenuContentOwnProps = GetPropDefTypes<typeof contextMenuContentPropDefs>;\ntype ContextMenuContentContextValue = ContextMenuContentOwnProps;\nconst ContextMenuContentContext = React.createContext<ContextMenuContentContextValue>({});\ntype ContextMenuContentElement = React.ElementRef<typeof ContextMenuPrimitive.Content>;\ninterface ContextMenuContentProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Content, RemovedProps>,\n ContextMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];\n}\nconst ContextMenuContent = React.forwardRef<ContextMenuContentElement, ContextMenuContentProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial =\n props.material ?? props.panelBackground ?? themeContext.panelBackground;\n\n // Memoize theme context values to prevent unnecessary re-renders\n const memoizedThemeContext = React.useMemo(\n () => ({\n material: effectiveMaterial,\n accentColor: themeContext.accentColor,\n }),\n [effectiveMaterial, themeContext.accentColor],\n );\n\n const {\n size = contextMenuContentPropDefs.size.default,\n variant = contextMenuContentPropDefs.variant.default,\n highContrast = contextMenuContentPropDefs.highContrast.default,\n material = memoizedThemeContext.material,\n } = props;\n const {\n className,\n children,\n color,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n ...contentProps\n } = extractProps(props, contextMenuContentPropDefs);\n\n // Memoize color resolution to prevent unnecessary re-renders\n const resolvedColor = React.useMemo(\n () => color || memoizedThemeContext.accentColor,\n [color, memoizedThemeContext.accentColor],\n );\n return (\n <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <ContextMenuPrimitive.Content\n data-accent-color={resolvedColor}\n data-material={material}\n data-panel-background={material}\n alignOffset={-Number(size) * 4}\n collisionPadding={10}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-ContextMenuContent',\n className,\n )}\n >\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>\n <ContextMenuContentContext.Provider\n value={React.useMemo(\n () => ({ size, variant, color: resolvedColor, highContrast, material }),\n [size, variant, resolvedColor, highContrast, material],\n )}\n >\n {children}\n </ContextMenuContentContext.Provider>\n </div>\n </ScrollArea>\n </ContextMenuPrimitive.Content>\n </Theme>\n </ContextMenuPrimitive.Portal>\n );\n },\n);\nContextMenuContent.displayName = 'ContextMenu.Content';\n\ntype ContextMenuLabelElement = React.ElementRef<typeof ContextMenuPrimitive.Label>;\ninterface ContextMenuLabelProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Label, RemovedProps> {}\nconst ContextMenuLabel = React.forwardRef<ContextMenuLabelElement, ContextMenuLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuLabel', 'rt-ContextMenuLabel', className)}\n />\n ),\n);\nContextMenuLabel.displayName = 'ContextMenu.Label';\n\ntype ContextMenuItemElement = React.ElementRef<typeof ContextMenuPrimitive.Item>;\ntype ContextMenuItemOwnProps = GetPropDefTypes<typeof contextMenuItemPropDefs>;\ninterface ContextMenuItemProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Item, RemovedProps>,\n ContextMenuItemOwnProps {}\nconst ContextMenuItem = React.forwardRef<ContextMenuItemElement, ContextMenuItemProps>(\n (props, forwardedRef) => {\n const {\n className,\n children,\n color = contextMenuItemPropDefs.color.default,\n shortcut,\n ...itemProps\n } = props;\n return (\n <ContextMenuPrimitive.Item\n data-accent-color={color}\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-ContextMenuItem', className)}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </ContextMenuPrimitive.Item>\n );\n },\n);\nContextMenuItem.displayName = 'ContextMenu.Item';\n\ntype ContextMenuGroupElement = React.ElementRef<typeof ContextMenuPrimitive.Group>;\ninterface ContextMenuGroupProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Group, RemovedProps> {}\nconst ContextMenuGroup = React.forwardRef<ContextMenuGroupElement, ContextMenuGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuGroup', 'rt-ContextMenuGroup', className)}\n />\n ),\n);\nContextMenuGroup.displayName = 'ContextMenu.Group';\n\ntype ContextMenuRadioGroupElement = React.ElementRef<typeof ContextMenuPrimitive.RadioGroup>;\ninterface ContextMenuRadioGroupProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.RadioGroup, RemovedProps> {}\nconst ContextMenuRadioGroup = React.forwardRef<\n ContextMenuRadioGroupElement,\n ContextMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.RadioGroup\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuRadioGroup', 'rt-ContextMenuRadioGroup', className)}\n />\n));\nContextMenuRadioGroup.displayName = 'ContextMenu.RadioGroup';\n\ntype ContextMenuRadioItemElement = React.ElementRef<typeof ContextMenuPrimitive.RadioItem>;\ntype ContextMenuRadioItemOwnProps = GetPropDefTypes<typeof contextMenuRadioItemPropDefs>;\ninterface ContextMenuRadioItemProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.RadioItem, RemovedProps>,\n ContextMenuRadioItemOwnProps {}\nconst ContextMenuRadioItem = React.forwardRef<\n ContextMenuRadioItemElement,\n ContextMenuRadioItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n color = contextMenuRadioItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <ContextMenuPrimitive.RadioItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuRadioItem',\n 'rt-ContextMenuItem',\n 'rt-ContextMenuRadioItem',\n className,\n )}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n <ContextMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n </ContextMenuPrimitive.ItemIndicator>\n </ContextMenuPrimitive.RadioItem>\n );\n});\nContextMenuRadioItem.displayName = 'ContextMenu.RadioItem';\n\ntype ContextMenuCheckboxItemElement = React.ElementRef<typeof ContextMenuPrimitive.CheckboxItem>;\ntype ContextMenuCheckboxItemOwnProps = GetPropDefTypes<typeof contextMenuCheckboxItemPropDefs>;\ninterface ContextMenuCheckboxItemProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.CheckboxItem, RemovedProps>,\n ContextMenuCheckboxItemOwnProps {}\nconst ContextMenuCheckboxItem = React.forwardRef<\n ContextMenuCheckboxItemElement,\n ContextMenuCheckboxItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n shortcut,\n color = contextMenuCheckboxItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <ContextMenuPrimitive.CheckboxItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuCheckboxItem',\n 'rt-ContextMenuItem',\n 'rt-ContextMenuCheckboxItem',\n className,\n )}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n <ContextMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-ContextMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n </ContextMenuPrimitive.ItemIndicator>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </ContextMenuPrimitive.CheckboxItem>\n );\n});\nContextMenuCheckboxItem.displayName = 'ContextMenu.CheckboxItem';\n\ninterface ContextMenuSubProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Sub, RemovedProps> {}\nconst ContextMenuSub: React.FC<ContextMenuSubProps> = (props) => (\n <ContextMenuPrimitive.Sub {...props} />\n);\nContextMenuSub.displayName = 'ContextMenu.Sub';\n\ntype ContextMenuSubTriggerElement = React.ElementRef<typeof ContextMenuPrimitive.SubTrigger>;\ninterface ContextMenuSubTriggerProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.SubTrigger, RemovedProps> {}\nconst ContextMenuSubTrigger = React.forwardRef<\n ContextMenuSubTriggerElement,\n ContextMenuSubTriggerProps\n>((props, forwardedRef) => {\n const { className, children, ...subTriggerProps } = props;\n return (\n <ContextMenuPrimitive.SubTrigger\n {...subTriggerProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-ContextMenuItem',\n 'rt-ContextMenuSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-ContextMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-ContextMenuSubTriggerIcon\" />\n </div>\n </ContextMenuPrimitive.SubTrigger>\n );\n});\nContextMenuSubTrigger.displayName = 'ContextMenu.SubTrigger';\n\ntype ContextMenuSubContentElement = React.ElementRef<typeof ContextMenuPrimitive.SubContent>;\ninterface ContextMenuSubContentProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.SubContent, RemovedProps>,\n ContextMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof ContextMenuPrimitive.Portal>['container'];\n}\nconst ContextMenuSubContent = React.forwardRef<\n ContextMenuSubContentElement,\n ContextMenuSubContentProps\n>((props, forwardedRef) => {\n const { size, variant, color, highContrast, material } = React.useContext(ContextMenuContentContext);\n\n const {\n className,\n children,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n ...subContentProps\n } = extractProps(\n { size, variant, color, highContrast, material, ...props },\n contextMenuContentPropDefs,\n );\n return (\n <ContextMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <ContextMenuPrimitive.SubContent\n data-accent-color={color}\n data-material={material}\n data-panel-background={material}\n alignOffset={-Number(size) * 4}\n // Side offset accounts for the outer solid box-shadow\n sideOffset={1}\n collisionPadding={10}\n {...subContentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-BaseMenuSubContent',\n 'rt-ContextMenuContent',\n 'rt-ContextMenuSubContent',\n className,\n )}\n >\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-ContextMenuViewport')}>\n {children}\n </div>\n </ScrollArea>\n </ContextMenuPrimitive.SubContent>\n </Theme>\n </ContextMenuPrimitive.Portal>\n );\n});\nContextMenuSubContent.displayName = 'ContextMenu.SubContent';\n\ntype ContextMenuSeparatorElement = React.ElementRef<typeof ContextMenuPrimitive.Separator>;\ninterface ContextMenuSeparatorProps\n extends ComponentPropsWithout<typeof ContextMenuPrimitive.Separator, RemovedProps> {}\nconst ContextMenuSeparator = React.forwardRef<\n ContextMenuSeparatorElement,\n ContextMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => (\n <ContextMenuPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuSeparator', 'rt-ContextMenuSeparator', className)}\n />\n));\nContextMenuSeparator.displayName = 'ContextMenu.Separator';\n\nexport {\n ContextMenuRoot as Root,\n ContextMenuTrigger as Trigger,\n ContextMenuContent as Content,\n ContextMenuLabel as Label,\n ContextMenuItem as Item,\n ContextMenuGroup as Group,\n ContextMenuRadioGroup as RadioGroup,\n ContextMenuRadioItem as RadioItem,\n ContextMenuCheckboxItem as CheckboxItem,\n ContextMenuSub as Sub,\n ContextMenuSubTrigger as SubTrigger,\n ContextMenuSubContent as SubContent,\n ContextMenuSeparator as Separator,\n};\n\nexport type {\n ContextMenuRootProps as RootProps,\n ContextMenuTriggerProps as TriggerProps,\n ContextMenuContentProps as ContentProps,\n ContextMenuLabelProps as LabelProps,\n ContextMenuItemProps as ItemProps,\n ContextMenuGroupProps as GroupProps,\n ContextMenuRadioGroupProps as RadioGroupProps,\n ContextMenuRadioItemProps as RadioItemProps,\n ContextMenuCheckboxItemProps as CheckboxItemProps,\n ContextMenuSubProps as SubProps,\n ContextMenuSubTriggerProps as SubTriggerProps,\n ContextMenuSubContentProps as SubContentProps,\n ContextMenuSeparatorProps as SeparatorProps,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["context_menu_exports", "__export", "ContextMenuCheckboxItem", "ContextMenuContent", "ContextMenuGroup", "ContextMenuItem", "ContextMenuLabel", "ContextMenuRadioGroup", "ContextMenuRadioItem", "ContextMenuRoot", "ContextMenuSeparator", "ContextMenuSub", "ContextMenuSubContent", "ContextMenuSubTrigger", "ContextMenuTrigger", "React", "classNames", "ContextMenuPrimitive", "Slot", "ContextMenuRoot", "props", "ContextMenuPrimitive", "ContextMenuTrigger", "children", "forwardedRef", "requireReactElement", "ContextMenuContentContext", "ContextMenuContent", "themeContext", "useThemeContext", "effectiveMaterial", "memoizedThemeContext", "size", "baseMenuContentPropDefs", "variant", "highContrast", "material", "className", "color", "container", "forceMount", "_", "__", "contentProps", "extractProps", "resolvedColor", "Theme", "classNames", "ScrollArea", "ContextMenuLabel", "ContextMenuItem", "baseMenuItemPropDefs", "shortcut", "itemProps", "Slot", "Kbd", "ContextMenuGroup", "ContextMenuRadioGroup", "ContextMenuRadioItem", "baseMenuRadioItemPropDefs", "ThickCheckIcon", "ContextMenuCheckboxItem", "baseMenuCheckboxItemPropDefs", "ContextMenuSub", "ContextMenuSubTrigger", "subTriggerProps", "ThickChevronRightIcon", "ContextMenuSubContent", "subContentProps", "ContextMenuSeparator"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as t}from"./chunk-GSTOGDAJ.js";import{a as e}from"./chunk-E23RKOQJ.js";import{a as s}from"./chunk-ZMEXIPWM.js";import y from"classnames";var r=t.m.values;function S(m){let[a,o]=s({className:"rt-r-m",customProperties:["--margin"],propValues:r,value:m.m}),[l,i]=s({className:"rt-r-mx",customProperties:["--margin-left","--margin-right"],propValues:r,value:m.mx}),[p,u]=s({className:"rt-r-my",customProperties:["--margin-top","--margin-bottom"],propValues:r,value:m.my}),[n,c]=s({className:"rt-r-mt",customProperties:["--margin-top"],propValues:r,value:m.mt}),[g,P]=s({className:"rt-r-mr",customProperties:["--margin-right"],propValues:r,value:m.mr}),[N,C]=s({className:"rt-r-mb",customProperties:["--margin-bottom"],propValues:r,value:m.mb}),[f,v]=s({className:"rt-r-ml",customProperties:["--margin-left"],propValues:r,value:m.ml});return[y(a,l,p,n,g,N,f),e(o,i,u,c,P,C,v)]}export{S as a};
|
|
2
|
-
//# sourceMappingURL=chunk-5U2Q23K3.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/helpers/get-margin-styles.ts"],
|
|
4
|
-
"sourcesContent": ["import classNames from 'classnames';\n\nimport { getResponsiveStyles } from './get-responsive-styles.js';\nimport { mergeStyles } from './merge-styles.js';\nimport { marginPropDefs } from '../props/margin.props.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\n\nconst marginValues = marginPropDefs.m.values;\n\nexport function getMarginStyles(props: MarginProps) {\n const [mClassNames, mCustomProperties] = getResponsiveStyles({\n className: 'rt-r-m',\n customProperties: ['--margin'],\n propValues: marginValues,\n value: props.m,\n });\n\n const [mxClassNames, mxCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mx',\n customProperties: ['--margin-left', '--margin-right'],\n propValues: marginValues,\n value: props.mx,\n });\n\n const [myClassNames, myCustomProperties] = getResponsiveStyles({\n className: 'rt-r-my',\n customProperties: ['--margin-top', '--margin-bottom'],\n propValues: marginValues,\n value: props.my,\n });\n\n const [mtClassNames, mtCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mt',\n customProperties: ['--margin-top'],\n propValues: marginValues,\n value: props.mt,\n });\n\n const [mrClassNames, mrCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mr',\n customProperties: ['--margin-right'],\n propValues: marginValues,\n value: props.mr,\n });\n\n const [mbClassNames, mbCustomProperties] = getResponsiveStyles({\n className: 'rt-r-mb',\n customProperties: ['--margin-bottom'],\n propValues: marginValues,\n value: props.mb,\n });\n\n const [mlClassNames, mlCustomProperties] = getResponsiveStyles({\n className: 'rt-r-ml',\n customProperties: ['--margin-left'],\n propValues: marginValues,\n value: props.ml,\n });\n\n return [\n classNames(\n mClassNames,\n mxClassNames,\n myClassNames,\n mtClassNames,\n mrClassNames,\n mbClassNames,\n mlClassNames\n ),\n mergeStyles(\n mCustomProperties,\n mxCustomProperties,\n myCustomProperties,\n mtCustomProperties,\n mrCustomProperties,\n mbCustomProperties,\n mlCustomProperties\n ),\n ] as const;\n}\n"],
|
|
5
|
-
"mappings": "wHAAA,OAAOA,MAAgB,aAQvB,IAAMC,EAAeC,EAAe,EAAE,OAE/B,SAASC,EAAgBC,EAAoB,CAClD,GAAM,CAACC,EAAaC,CAAiB,EAAIC,EAAoB,CAC3D,UAAW,SACX,iBAAkB,CAAC,UAAU,EAC7B,WAAYN,EACZ,MAAOG,EAAM,CACf,CAAC,EAEK,CAACI,EAAcC,CAAkB,EAAIF,EAAoB,CAC7D,UAAW,UACX,iBAAkB,CAAC,gBAAiB,gBAAgB,EACpD,WAAYN,EACZ,MAAOG,EAAM,EACf,CAAC,EAEK,CAACM,EAAcC,CAAkB,EAAIJ,EAAoB,CAC7D,UAAW,UACX,iBAAkB,CAAC,eAAgB,iBAAiB,EACpD,WAAYN,EACZ,MAAOG,EAAM,EACf,CAAC,EAEK,CAACQ,EAAcC,CAAkB,EAAIN,EAAoB,CAC7D,UAAW,UACX,iBAAkB,CAAC,cAAc,EACjC,WAAYN,EACZ,MAAOG,EAAM,EACf,CAAC,EAEK,CAACU,EAAcC,CAAkB,EAAIR,EAAoB,CAC7D,UAAW,UACX,iBAAkB,CAAC,gBAAgB,EACnC,WAAYN,EACZ,MAAOG,EAAM,EACf,CAAC,EAEK,CAACY,EAAcC,CAAkB,EAAIV,EAAoB,CAC7D,UAAW,UACX,iBAAkB,CAAC,iBAAiB,EACpC,WAAYN,EACZ,MAAOG,EAAM,EACf,CAAC,EAEK,CAACc,EAAcC,CAAkB,EAAIZ,EAAoB,CAC7D,UAAW,UACX,iBAAkB,CAAC,eAAe,EAClC,WAAYN,EACZ,MAAOG,EAAM,EACf,CAAC,EAED,MAAO,CACLgB,EACEf,EACAG,EACAE,EACAE,EACAE,EACAE,EACAE,CACF,EACAG,EACEf,EACAG,EACAE,EACAE,EACAE,EACAE,EACAE,CACF,CACF,CACF",
|
|
6
|
-
"names": ["classNames", "marginValues", "marginPropDefs", "getMarginStyles", "props", "mClassNames", "mCustomProperties", "getResponsiveStyles", "mxClassNames", "mxCustomProperties", "myClassNames", "myCustomProperties", "mtClassNames", "mtCustomProperties", "mrClassNames", "mrCustomProperties", "mbClassNames", "mbCustomProperties", "mlClassNames", "mlCustomProperties", "classNames", "mergeStyles"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as d}from"./chunk-XHQGMOXV.js";import{a as l}from"./chunk-MJ47O7KH.js";import{a as s}from"./chunk-GSTOGDAJ.js";import{a as i}from"./chunk-KMPBTEZH.js";import*as e from"react";import C from"classnames";import{Slot as h}from"radix-ui";var T=e.forwardRef((m,c)=>{let{asChild:t,className:f,children:g,color:P,radius:u,material:r,panelBackground:o,tooltip:a,tooltipSide:b="top",tooltipAlign:B="center",tooltipDelayDuration:y,tooltipDisableHoverableContent:R,...D}=i(m,l,s),p=e.useMemo(()=>r??o,[r,o]);e.useEffect(()=>{o!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.")},[o]);let v=e.useMemo(()=>t?h.Root:"span",[t]),n=e.createElement(v,{"data-accent-color":P,"data-radius":u,"data-material":p,"data-panel-background":p,...D,ref:c,className:C("rt-reset","rt-Badge",f)},g);return a?e.createElement(d,{content:a,side:b,align:B,delayDuration:y,disableHoverableContent:R},n):n});T.displayName="Badge";export{T as a};
|
|
2
|
-
//# sourceMappingURL=chunk-6ELPYR73.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/badge.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\n\nimport { badgePropDefs } from './badge.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { marginPropDefs } from '../props/margin.props.js';\nimport { Tooltip } from './tooltip.js';\n\nimport type { MarginProps } from '../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../props/prop-def.js';\n\ntype BadgeElement = React.ElementRef<'span'>;\ntype BadgeOwnProps = GetPropDefTypes<typeof badgePropDefs>;\n\n// Tooltip props that can be passed to Badge\ninterface BadgeTooltipProps {\n tooltip?: React.ReactNode;\n tooltipSide?: 'top' | 'right' | 'bottom' | 'left';\n tooltipAlign?: 'start' | 'center' | 'end';\n tooltipDelayDuration?: number;\n tooltipDisableHoverableContent?: boolean;\n}\n\ninterface BadgeProps\n extends ComponentPropsWithout<'span', RemovedProps>,\n MarginProps,\n BadgeOwnProps,\n BadgeTooltipProps {}\n\nconst Badge = React.forwardRef<BadgeElement, BadgeProps>((props, forwardedRef) => {\n const {\n asChild,\n className,\n children,\n color,\n radius,\n material,\n panelBackground,\n tooltip,\n tooltipSide = 'top',\n tooltipAlign = 'center',\n tooltipDelayDuration,\n tooltipDisableHoverableContent,\n ...badgeProps\n } = extractProps(props, badgePropDefs, marginPropDefs);\n\n // Memoize material calculation for performance\n const effectiveMaterial = React.useMemo(\n () => material ?? panelBackground,\n [material, panelBackground],\n );\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [panelBackground]);\n\n // Memoize component variable to prevent unnecessary re-renders\n const Comp = React.useMemo(() => (asChild ? Slot.Root : 'span'), [asChild]);\n\n const badge = (\n <Comp\n data-accent-color={color}\n data-radius={radius}\n data-material={effectiveMaterial}\n data-panel-background={effectiveMaterial}\n {...badgeProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-Badge', className)}\n >\n {children}\n </Comp>\n );\n\n // If no tooltip is provided, return the badge as-is\n if (!tooltip) {\n return badge;\n }\n\n // Wrap with Tooltip when tooltip content is provided\n return (\n <Tooltip\n content={tooltip}\n side={tooltipSide}\n align={tooltipAlign}\n delayDuration={tooltipDelayDuration}\n disableHoverableContent={tooltipDisableHoverableContent}\n >\n {badge}\n </Tooltip>\n );\n});\nBadge.displayName = 'Badge';\n\nexport { Badge };\nexport type { BadgeProps };\n"],
|
|
5
|
-
"mappings": "gKAAA,UAAYA,MAAW,QACvB,OAAOC,MAAgB,aACvB,OAAS,QAAAC,MAAY,WA6BrB,IAAMC,EAAc,aAAqC,CAACC,EAAOC,IAAiB,CAChF,GAAM,CACJ,QAAAC,EACA,UAAAC,EACA,SAAAC,EACA,MAAAC,EACA,OAAAC,EACA,SAAAC,EACA,gBAAAC,EACA,QAAAC,EACA,YAAAC,EAAc,MACd,aAAAC,EAAe,SACf,qBAAAC,EACA,+BAAAC,EACA,GAAGC,CACL,EAAIC,EAAaf,EAAOgB,EAAeC,CAAc,EAG/CC,EAA0B,UAC9B,IAAMX,GAAYC,EAClB,CAACD,EAAUC,CAAe,CAC5B,EAGM,YAAU,IAAM,CAChBA,IAAoB,QACtB,QAAQ,KACN,yHACF,CAEJ,EAAG,CAACA,CAAe,CAAC,EAGpB,IAAMW,EAAa,UAAQ,IAAOjB,EAAUkB,EAAK,KAAO,OAAS,CAAClB,CAAO,CAAC,EAEpEmB,EACJ,gBAACF,EAAA,CACC,oBAAmBd,EACnB,cAAaC,EACb,gBAAeY,EACf,wBAAuBA,EACtB,GAAGJ,EACJ,IAAKb,EACL,UAAWqB,EAAW,WAAY,WAAYnB,CAAS,GAEtDC,CACH,EAIF,OAAKK,EAMH,gBAACc,EAAA,CACC,QAASd,EACT,KAAMC,EACN,MAAOC,EACP,cAAeC,EACf,wBAAyBC,GAExBQ,CACH,EAbOA,CAeX,CAAC,EACDtB,EAAM,YAAc",
|
|
6
|
-
"names": ["React", "classNames", "Slot", "Badge", "props", "forwardedRef", "asChild", "className", "children", "color", "radius", "material", "panelBackground", "tooltip", "tooltipSide", "tooltipAlign", "tooltipDelayDuration", "tooltipDisableHoverableContent", "badgeProps", "extractProps", "badgePropDefs", "marginPropDefs", "effectiveMaterial", "Comp", "Slot", "badge", "classNames", "Tooltip"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as g}from"./chunk-QLZ5XAW6.js";import{a as P}from"./chunk-FVCWNSRU.js";import{a as R,c as T}from"./chunk-5T6K7VPP.js";import{a as h}from"./chunk-AGAQC4HH.js";import{a as B}from"./chunk-GSTOGDAJ.js";import{a as b}from"./chunk-KMPBTEZH.js";import{a as p}from"./chunk-D2AZAGGP.js";import*as e from"react";import W from"classnames";import{Slot as G}from"radix-ui";import{composeRefs as $}from"radix-ui/internal";var A=e.forwardRef((t,w)=>{let{size:v=p.size.default}=t,{className:C,children:o,asChild:s,as:r,color:x,radius:E,material:M,panelBackground:k,flush:D,disabled:d=t.loading,...c}=b(t,p,B);e.useEffect(()=>{t.panelBackground!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.")},[t.panelBackground]);let a=M??k,m=e.useRef(null),f=e.useRef(a);f.current=a,e.useEffect(()=>{let n=m.current;if(!n)return;if(a==="translucent"){n.style.setProperty("will-change","backdrop-filter");let u,V=()=>{let F=getComputedStyle(n).getPropertyValue("--duration-2")||"75ms",H=parseInt(F)||75;u=setTimeout(()=>{n&&f.current!=="translucent"&&n.style.setProperty("will-change","auto")},H)},y=new MutationObserver(V);return y.observe(n,{attributes:!0,attributeFilter:["data-material"]}),()=>{u&&clearTimeout(u),y.disconnect(),n.style.setProperty("will-change","auto")}}else n.style.setProperty("will-change","auto")},[a]);let S=s?G.Root:r||"button",z=s||!r||["button","input","textarea","select"].includes(r),I=!s&&(!r||r==="button"),N="type"in c,j=e.useId(),i=t.loading?`${j}-loading`:void 0,l=e.useMemo(()=>typeof o=="string"?o:e.isValidElement(o)&&typeof o.props?.children=="string"?o.props.children:"button",[o]),O=e.useMemo(()=>t.loading?{"aria-busy":!0,"aria-disabled":!0,"aria-describedby":i,"aria-label":`${l} (loading)`}:{},[t.loading,i,l]);return e.createElement(S,{"data-disabled":d||void 0,"data-accent-color":x,"data-radius":E,"data-material":a,"data-panel-background":a,"data-flush":D?"true":void 0,...c,...O,ref:$(m,w),className:W("rt-reset","rt-BaseButton",C),...z&&{disabled:d},...I&&!N?{type:"button"}:{}},t.loading?e.createElement(e.Fragment,null,e.createElement("span",{style:{display:"contents",visibility:"hidden"},"aria-hidden":!0},o),e.createElement(h,null,e.createElement("span",{id:i},l," is loading, please wait..."),o),e.createElement(P,{asChild:!0,align:"center",justify:"center",position:"absolute",inset:"0"},e.createElement("span",null,e.createElement(g,{size:R(v,T),"aria-hidden":"true"})))):o)});A.displayName="BaseButton";export{A as a};
|
|
2
|
-
//# sourceMappingURL=chunk-DZ4H2KTP.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/_internal/base-button.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Slot } from 'radix-ui';\nimport { composeRefs } from 'radix-ui/internal';\n\nimport { baseButtonPropDefs } from './base-button.props.js';\nimport { Flex } from '../flex.js';\nimport { Spinner } from '../spinner.js';\nimport { VisuallyHidden } from '../visually-hidden.js';\nimport { extractProps } from '../../helpers/extract-props.js';\nimport { mapResponsiveProp, mapButtonSizeToSpinnerSize } from '../../helpers/map-prop-values.js';\nimport { marginPropDefs } from '../../props/margin.props.js';\n\nimport type { MarginProps } from '../../props/margin.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../../helpers/component-props.js';\nimport type { GetPropDefTypes } from '../../props/prop-def.js';\n\ntype BaseButtonElement = React.ElementRef<'button'>;\ntype BaseButtonOwnProps = GetPropDefTypes<typeof baseButtonPropDefs>;\n\n/**\n * Polymorphic BaseButton props that support rendering as different HTML elements\n * Uses the proper ComponentPropsWithout pattern for type safety\n * @template C - The element type to render as (defaults to 'button')\n */\ntype PolymorphicBaseButtonProps<C extends React.ElementType = 'button'> = {\n /** Element type to render as (e.g., 'a', 'span', etc.) */\n as?: C;\n} & BaseButtonOwnProps &\n MarginProps &\n ComponentPropsWithout<C, RemovedProps | keyof BaseButtonOwnProps | keyof MarginProps | 'as'>;\n\n/**\n * BaseButton props interface that combines all available props\n */\ninterface BaseButtonProps extends PolymorphicBaseButtonProps {}\n\n/**\n * BaseButton component that provides the core button functionality\n *\n * This is the foundational button component that handles all the complex logic\n * including loading states, accessibility, performance optimizations, and\n * polymorphic rendering. It's used by Button, IconButton, and other button\n * variants to ensure consistent behavior across the design system.\n *\n * Key features:\n * - Loading state with spinner and accessibility announcements\n * - Performance optimizations for backdrop-filter effects\n * - Comprehensive accessibility support\n * - Polymorphic rendering support\n * - Material/panel background handling\n *\n * @example\n * ```tsx\n * // Basic usage\n * <BaseButton>Click me</BaseButton>\n *\n * // With loading state\n * <BaseButton loading>Processing...</BaseButton>\n *\n * // Polymorphic rendering\n * <BaseButton as=\"a\" href=\"/link\">Link Button</BaseButton>\n * ```\n */\nconst BaseButton = React.forwardRef<BaseButtonElement, BaseButtonProps>((props, forwardedRef) => {\n const { size = baseButtonPropDefs.size.default } = props;\n\n // Extract button-specific props from the combined props object\n const {\n className,\n children,\n asChild,\n as,\n color,\n radius,\n material,\n panelBackground,\n flush,\n disabled = props.loading, // Loading state automatically disables the button\n ...baseButtonProps\n } = extractProps(props, baseButtonPropDefs, marginPropDefs);\n\n // Show deprecation warning for panelBackground when used\n // This helps developers migrate to the new material prop\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn('Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.');\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground for backward compatibility\n const effectiveMaterial = material ?? panelBackground;\n\n // Will-change cleanup for backdrop-filter performance optimization\n // This prevents layout thrashing when using translucent materials\n const buttonRef = React.useRef<HTMLElement>(null);\n\n // Use a ref to track current material value to avoid stale closures in setTimeout\n const materialRef = React.useRef(effectiveMaterial);\n materialRef.current = effectiveMaterial;\n\n React.useEffect(() => {\n const button = buttonRef.current;\n if (!button) return;\n\n const hasTranslucentMaterial = effectiveMaterial === 'translucent';\n\n if (hasTranslucentMaterial) {\n // Add will-change when material is translucent to optimize rendering\n button.style.setProperty('will-change', 'backdrop-filter');\n\n // Track timeout for cleanup\n let timeoutId: ReturnType<typeof setTimeout> | undefined;\n\n // Clean up will-change after transition completes to prevent memory leaks\n const cleanup = () => {\n const transitionDuration = getComputedStyle(button).getPropertyValue('--duration-2') || '75ms';\n const duration = parseInt(transitionDuration) || 75;\n\n timeoutId = setTimeout(() => {\n // Use ref to get current value, not stale closure value\n if (button && materialRef.current !== 'translucent') {\n button.style.setProperty('will-change', 'auto');\n }\n }, duration);\n };\n\n // Listen for material changes to clean up will-change property\n const observer = new MutationObserver(cleanup);\n observer.observe(button, { attributes: true, attributeFilter: ['data-material'] });\n\n return () => {\n if (timeoutId) clearTimeout(timeoutId);\n observer.disconnect();\n button.style.setProperty('will-change', 'auto');\n };\n } else {\n // Remove will-change when material is not translucent\n button.style.setProperty('will-change', 'auto');\n }\n }, [effectiveMaterial]);\n\n // asChild takes precedence over as prop for Radix Slot integration\n // When asChild is true, we use Slot.Root to merge props onto the child element\n // When asChild is false, we render as the specified element (or button by default)\n const Comp = asChild ? Slot.Root : (as || 'button');\n\n // Only pass disabled for elements that support it\n // This prevents invalid HTML attributes on unsupported elements\n const shouldPassDisabled = asChild || !as || ['button', 'input', 'textarea', 'select'].includes(as);\n\n // Determine if we are rendering a real <button> element so we can set a safe\n // default type. Native <button> defaults to type=\"submit\" which can cause\n // accidental form submissions. We default to type=\"button\" unless the user\n // explicitly provided a type or we're using asChild (unknown underlying node).\n const isNativeButtonElement = !asChild && (!as || as === 'button');\n const hasExplicitTypeAttribute = 'type' in (baseButtonProps as Record<string, unknown>);\n\n // Generate unique ID for loading announcements\n const loadingId = React.useId();\n const describedById = props.loading ? `${loadingId}-loading` : undefined;\n\n // Extract button text for accessibility announcements\n const buttonText = React.useMemo(() => {\n if (typeof children === 'string') return children;\n if (React.isValidElement(children) && typeof (children.props as any)?.children === 'string') {\n return (children.props as any).children;\n }\n return 'button';\n }, [children]);\n\n // Enhanced accessibility props for loading state\n // These ensure screen readers announce the loading state properly\n const accessibilityProps = React.useMemo(() => {\n if (props.loading) {\n return {\n 'aria-busy': true,\n 'aria-disabled': true,\n 'aria-describedby': describedById,\n 'aria-label': `${buttonText} (loading)`,\n };\n }\n return {};\n }, [props.loading, describedById, buttonText]);\n\n return (\n <Comp\n // The `data-disabled` attribute enables correct styles when doing `<Button asChild disabled>`\n data-disabled={disabled || undefined}\n data-accent-color={color}\n data-radius={radius}\n data-material={effectiveMaterial}\n data-panel-background={effectiveMaterial}\n data-flush={flush ? 'true' : undefined}\n {...baseButtonProps}\n {...accessibilityProps}\n ref={composeRefs(buttonRef, forwardedRef)}\n className={classNames('rt-reset', 'rt-BaseButton', className)}\n {...(shouldPassDisabled && { disabled })}\n {...(isNativeButtonElement && !hasExplicitTypeAttribute ? { type: 'button' } : {})}\n >\n {props.loading ? (\n <>\n {/**\n * We need a wrapper to set `visibility: hidden` to hide the button content whilst we show the `Spinner`.\n * The button is a flex container with a `gap`, so we use `display: contents` to ensure the correct flex layout.\n *\n * However, `display: contents` removes the content from the accessibility tree in some browsers,\n * so we force remove it with `aria-hidden` and re-add it in the tree with `VisuallyHidden`\n */}\n <span style={{ display: 'contents', visibility: 'hidden' }} aria-hidden>\n {children}\n </span>\n\n {/* Enhanced accessibility for loading state */}\n <VisuallyHidden>\n <span id={describedById}>{buttonText} is loading, please wait...</span>\n {children}\n </VisuallyHidden>\n\n {/* Centered spinner overlay during loading state */}\n <Flex asChild align=\"center\" justify=\"center\" position=\"absolute\" inset=\"0\">\n <span>\n <Spinner size={mapResponsiveProp(size, mapButtonSizeToSpinnerSize)} aria-hidden=\"true\" />\n </span>\n </Flex>\n </>\n ) : (\n children\n )}\n </Comp>\n );\n});\nBaseButton.displayName = 'BaseButton';\n\nexport { BaseButton };\nexport type { BaseButtonProps };\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["React", "classNames", "Slot", "composeRefs", "BaseButton", "props", "forwardedRef", "size", "baseButtonPropDefs", "className", "children", "asChild", "as", "color", "radius", "material", "panelBackground", "flush", "disabled", "baseButtonProps", "extractProps", "marginPropDefs", "effectiveMaterial", "buttonRef", "materialRef", "button", "timeoutId", "cleanup", "transitionDuration", "duration", "observer", "Comp", "Slot", "shouldPassDisabled", "isNativeButtonElement", "hasExplicitTypeAttribute", "loadingId", "describedById", "buttonText", "accessibilityProps", "composeRefs", "classNames", "VisuallyHidden", "Flex", "Spinner", "mapResponsiveProp", "mapButtonSizeToSpinnerSize"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as T}from"./chunk-USGTBZ43.js";import{a as y}from"./chunk-WNSPLWRV.js";import{b as H,c as K,d as S,e as A,f as j}from"./chunk-IX5HIHVI.js";import{a as V}from"./chunk-MJJ7XDIP.js";import{b as z,c as h}from"./chunk-LN5SP46K.js";import{a as C}from"./chunk-KMPBTEZH.js";import{b as M,c as B,d as G,e as L,f as W}from"./chunk-HUKPWYG2.js";import{d as O,g as b,h as f,i as I,j as g}from"./chunk-UIEUZLZZ.js";import{a as _}from"./chunk-QCNUTT4R.js";import{a as ie}from"./chunk-3XT5P2HO.js";var ce={};ie(ce,{CheckboxItem:()=>ee,Content:()=>J,Group:()=>Y,Item:()=>X,Label:()=>Q,RadioGroup:()=>Z,RadioItem:()=>$,Root:()=>F,Separator:()=>x,Sub:()=>oe,SubContent:()=>re,SubTrigger:()=>ne,Trigger:()=>q,TriggerIcon:()=>te});import*as e from"react";import d from"classnames";import{DropdownMenu as u,Slot as pe}from"radix-ui";var F=o=>e.createElement(u.Root,{...o});F.displayName="DropdownMenu.Root";var q=e.forwardRef(({children:o,...n},r)=>e.createElement(u.Trigger,{...n,ref:r,asChild:!0},V(o)));q.displayName="DropdownMenu.Trigger";function ue({children:o}){let n=f();return!n||n.behavior==="cascade"?e.createElement(e.Fragment,null,o):e.createElement("div",{className:"rt-DropdownMenuDrillDownRoot","data-drill-down-active":n.isRoot?void 0:!0,"data-animation-direction":n.animationDirection??void 0},o)}var U=e.createContext({}),J=e.forwardRef((o,n)=>{let r=z();e.useEffect(()=>{o.panelBackground!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.")},[o.panelBackground]);let a=o.material??o.panelBackground??r.panelBackground,t=e.useMemo(()=>({material:a,accentColor:r.accentColor}),[a,r.accentColor]),{size:s=M.size.default,variant:p=M.variant.default,highContrast:l=M.highContrast.default,material:i=t.material,submenuBehavior:m,virtualized:w=!1}=o,{className:D,children:c,color:P,container:N,forceMount:R,material:E,panelBackground:le,submenuBehavior:me,virtualized:we,...ae}=C(o,M),v=e.useMemo(()=>P||t.accentColor,[P,t.accentColor]),k=e.createElement(_,{size:s},e.createElement(U.Provider,{value:e.useMemo(()=>({size:s,variant:p,color:v,highContrast:l,material:i}),[s,p,v,l,i])},e.createElement(O,{submenuBehavior:m},e.createElement(ue,null,c))));return e.createElement(u.Portal,{container:N,forceMount:R},e.createElement(h,{asChild:!0},e.createElement(u.Content,{"data-accent-color":v,"data-material":i,"data-panel-background":i,align:"start",sideOffset:4,collisionPadding:10,...ae,asChild:!1,ref:n,className:d("rt-PopperContent","rt-BaseMenuContent","rt-DropdownMenuContent",D)},w?e.createElement("div",{className:d("rt-BaseMenuViewport","rt-DropdownMenuViewport","rt-virtualized")},k):e.createElement(y,{type:"auto"},e.createElement("div",{className:d("rt-BaseMenuViewport","rt-DropdownMenuViewport")},k)))))});J.displayName="DropdownMenu.Content";var Q=e.forwardRef(({className:o,...n},r)=>e.createElement(u.Label,{...n,asChild:!1,ref:r,className:d("rt-BaseMenuLabel","rt-DropdownMenuLabel",o)}));Q.displayName="DropdownMenu.Label";var X=e.forwardRef((o,n)=>{let{className:r,children:a,color:t=G.color.default,shortcut:s,...p}=o;return e.createElement(u.Item,{"data-accent-color":t,...p,ref:n,className:d("rt-reset","rt-BaseMenuItem","rt-DropdownMenuItem",r)},e.createElement(pe.Slottable,null,a),s&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-DropdownMenuShortcut"},e.createElement(T,{size:"1"},s)))});X.displayName="DropdownMenu.Item";var Y=e.forwardRef(({className:o,...n},r)=>e.createElement(u.Group,{...n,asChild:!1,ref:r,className:d("rt-BaseMenuGroup","rt-DropdownMenuGroup",o)}));Y.displayName="DropdownMenu.Group";var Z=e.forwardRef(({className:o,...n},r)=>e.createElement(u.RadioGroup,{...n,asChild:!1,ref:r,className:d("rt-BaseMenuRadioGroup","rt-DropdownMenuRadioGroup",o)}));Z.displayName="DropdownMenu.RadioGroup";var $=e.forwardRef((o,n)=>{let{children:r,className:a,color:t=W.color.default,...s}=o;return e.createElement(u.RadioItem,{...s,asChild:!1,ref:n,"data-accent-color":t,className:d("rt-BaseMenuItem","rt-BaseMenuRadioItem","rt-DropdownMenuItem","rt-DropdownMenuRadioItem",a)},r,e.createElement(u.ItemIndicator,{className:"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator"},e.createElement(j,{className:"rt-BaseMenuItemIndicatorIcon rt-DropdownMenuItemIndicatorIcon"})))});$.displayName="DropdownMenu.RadioItem";var ee=e.forwardRef((o,n)=>{let{children:r,className:a,shortcut:t,color:s=L.color.default,...p}=o;return e.createElement(u.CheckboxItem,{...p,asChild:!1,ref:n,"data-accent-color":s,className:d("rt-BaseMenuItem","rt-BaseMenuCheckboxItem","rt-DropdownMenuItem","rt-DropdownMenuCheckboxItem",a)},r,e.createElement(u.ItemIndicator,{className:"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator"},e.createElement(H,{className:"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon"})),t&&e.createElement("div",{className:"rt-BaseMenuShortcut rt-DropdownMenuShortcut"},e.createElement(T,{size:"1"},t)))});ee.displayName="DropdownMenu.CheckboxItem";function de(){return e.useId()}var oe=({label:o="Back",...n})=>{let r=f(),a=de(),t=e.useMemo(()=>({id:a,label:o}),[a,o]);return r?.behavior==="drill-down"?e.createElement(I.Provider,{value:t},n.children):e.createElement(I.Provider,{value:t},e.createElement(u.Sub,{...n}))};oe.displayName="DropdownMenu.Sub";var ne=e.forwardRef((o,n)=>{let{className:r,children:a,onClick:t,...s}=o,p=b(),l=f(),i=g(),m=e.useRef(t);m.current=t;let w=e.useCallback(c=>{c.preventDefault(),i&&p&&p.push(i.id),m.current?.(c)},[i,p]),D=e.useCallback(c=>{(c.key==="Enter"||c.key===" ")&&(c.preventDefault(),i&&p&&p.push(i.id))},[i,p]);return l?.behavior==="drill-down"&&i?e.createElement("div",{role:"menuitem",tabIndex:0,ref:n,onClick:w,onKeyDown:D,className:d("rt-reset","rt-BaseMenuItem","rt-BaseMenuSubTrigger","rt-DropdownMenuItem","rt-DropdownMenuSubTrigger","rt-DropdownMenuDrillDownSubTrigger",r)},a,e.createElement("div",{className:"rt-BaseMenuShortcut rt-DropdownMenuShortcut"},e.createElement(S,{className:"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon"}))):e.createElement(u.SubTrigger,{...s,onClick:t,asChild:!1,ref:n,className:d("rt-BaseMenuItem","rt-BaseMenuSubTrigger","rt-DropdownMenuItem","rt-DropdownMenuSubTrigger",r)},a,e.createElement("div",{className:"rt-BaseMenuShortcut rt-DropdownMenuShortcut"},e.createElement(S,{className:"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon"})))});ne.displayName="DropdownMenu.SubTrigger";var x=e.forwardRef(({className:o,...n},r)=>e.createElement(u.Separator,{...n,asChild:!1,ref:r,className:d("rt-BaseMenuSeparator","rt-DropdownMenuSeparator",o)}));x.displayName="DropdownMenu.Separator";function se({label:o}){let{pop:n}=b()??{},r=e.useCallback(t=>{t.preventDefault(),n?.()},[n]),a=e.useCallback(t=>{(t.key==="Enter"||t.key===" ")&&(t.preventDefault(),n?.())},[n]);return e.createElement("div",{role:"menuitem",tabIndex:0,onClick:r,onKeyDown:a,className:d("rt-reset","rt-BaseMenuItem","rt-DropdownMenuItem","rt-DropdownMenuDrillDownBackItem")},e.createElement(A,{className:"rt-DropdownMenuDrillDownBackIcon"}),e.createElement("span",{className:"rt-DropdownMenuDrillDownBackLabel"},o))}var re=e.forwardRef((o,n)=>{let{size:r,variant:a,color:t,highContrast:s,material:p}=e.useContext(U),l=f(),i=g(),{className:m,children:w,container:D,forceMount:c,material:P,panelBackground:N,...R}=C({size:r,variant:a,color:t,highContrast:s,material:p,...o},B);if(l?.behavior==="drill-down"&&i){let E=l.isActive(i.id);return e.createElement("div",{ref:n,role:"menu","aria-label":typeof i.label=="string"?i.label:void 0,"data-drill-down-active":E?!0:void 0,"data-animation-direction":l.animationDirection??void 0,className:d("rt-DropdownMenuDrillDownPanel",m)},e.createElement(se,{label:i.label}),e.createElement(x,null),w)}return e.createElement(u.Portal,{container:D,forceMount:c},e.createElement(h,{asChild:!0},e.createElement(u.SubContent,{"data-accent-color":t,"data-material":p,"data-panel-background":p,alignOffset:-Number(r)*4,sideOffset:1,collisionPadding:10,...R,asChild:!1,ref:n,className:d("rt-PopperContent","rt-BaseMenuContent","rt-BaseMenuSubContent","rt-DropdownMenuContent","rt-DropdownMenuSubContent",m)},e.createElement(y,{type:"auto"},e.createElement("div",{className:d("rt-BaseMenuViewport","rt-DropdownMenuViewport")},w)))))});re.displayName="DropdownMenu.SubContent";var te=e.forwardRef((o,n)=>e.createElement(K,{...o,ref:n,className:"rt-DropdownMenuTriggerIcon"}));te.displayName="DropdownMenu.TriggerIcon";export{F as a,q as b,J as c,Q as d,X as e,Y as f,Z as g,$ as h,ee as i,oe as j,ne as k,x as l,re as m,te as n,ce as o};
|
|
2
|
-
//# sourceMappingURL=chunk-H4MMVAGQ.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/dropdown-menu.tsx"],
|
|
4
|
-
"sourcesContent": ["'use client';\n\nimport * as React from 'react';\nimport classNames from 'classnames';\nimport { DropdownMenu as DropdownMenuPrimitive, Slot } from 'radix-ui';\n\nimport { ScrollArea } from './scroll-area.js';\nimport {\n dropdownMenuContentPropDefs,\n dropdownMenuSubContentPropDefs,\n dropdownMenuItemPropDefs,\n dropdownMenuCheckboxItemPropDefs,\n dropdownMenuRadioItemPropDefs,\n} from './dropdown-menu.props.js';\nimport { Theme, useThemeContext } from './theme.js';\nimport { ChevronDownIcon, ThickCheckIcon, ThickChevronLeftIcon, ThickChevronRightIcon, ThickDotIcon } from './icons.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport {\n DrillDownProvider,\n SubContext,\n useDrillDownActionsOptional,\n useDrillDownStateOptional,\n useSubContext,\n} from './_internal/dropdown-menu-drill-down.js';\nimport { MenuProvider } from './_internal/menu-context.js';\nimport type { SubmenuBehavior } from './_internal/dropdown-menu-drill-down.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { Kbd } from './kbd.js';\n\nimport type { IconProps } from './icons.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\nimport type { GetPropDefTypes, Responsive } from '../props/prop-def.js';\n\ninterface DropdownMenuRootProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Root> {}\nconst DropdownMenuRoot: React.FC<DropdownMenuRootProps> = (props) => (\n <DropdownMenuPrimitive.Root {...props} />\n);\nDropdownMenuRoot.displayName = 'DropdownMenu.Root';\n\ntype DropdownMenuTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.Trigger>;\ninterface DropdownMenuTriggerProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Trigger, RemovedProps> {}\nconst DropdownMenuTrigger = React.forwardRef<DropdownMenuTriggerElement, DropdownMenuTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DropdownMenuPrimitive.Trigger>\n ),\n);\nDropdownMenuTrigger.displayName = 'DropdownMenu.Trigger';\n\n/**\n * Internal component that wraps root menu items and handles visibility in drill-down mode.\n * In drill-down mode, this hides when a submenu is active.\n * Uses state-only hook to subscribe only to state changes, not action changes.\n */\nfunction DrillDownRoot({ children }: { children: React.ReactNode }) {\n const drillDownState = useDrillDownStateOptional();\n\n // In cascade mode or when no drill-down context, always show\n if (!drillDownState || drillDownState.behavior === 'cascade') {\n return <>{children}</>;\n }\n\n // In drill-down mode, hide root when a submenu is active\n return (\n <div\n className=\"rt-DropdownMenuDrillDownRoot\"\n data-drill-down-active={drillDownState.isRoot ? undefined : true}\n data-animation-direction={drillDownState.animationDirection ?? undefined}\n >\n {children}\n </div>\n );\n}\n\ntype DropdownMenuContentOwnProps = GetPropDefTypes<typeof dropdownMenuContentPropDefs> & {\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior?: Responsive<SubmenuBehavior>;\n /**\n * When true, skips the ScrollArea wrapper to allow VirtualMenu to handle its own scrolling.\n * Use this when rendering virtualized lists inside the dropdown.\n */\n virtualized?: boolean;\n};\ntype DropdownMenuContentContextValue = Omit<DropdownMenuContentOwnProps, 'submenuBehavior'>;\nconst DropdownMenuContentContext = React.createContext<DropdownMenuContentContextValue>({});\ntype DropdownMenuContentElement = React.ElementRef<typeof DropdownMenuPrimitive.Content>;\ninterface DropdownMenuContentProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Content, RemovedProps>,\n DropdownMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n /**\n * Controls how submenus behave.\n * - `cascade`: Default cascading behavior where submenus open to the side (portal-based)\n * - `drill-down`: Mobile-friendly behavior where submenus replace the content inline\n * Supports responsive values: `{ initial: 'drill-down', md: 'cascade' }`\n */\n submenuBehavior?: Responsive<SubmenuBehavior>;\n /**\n * When true, skips the ScrollArea wrapper to allow VirtualMenu to handle its own scrolling.\n * Use this when rendering virtualized lists inside the dropdown.\n */\n virtualized?: boolean;\n}\nconst DropdownMenuContent = React.forwardRef<DropdownMenuContentElement, DropdownMenuContentProps>(\n (props, forwardedRef) => {\n const themeContext = useThemeContext();\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial =\n props.material ?? props.panelBackground ?? themeContext.panelBackground;\n\n // Memoize theme context values to prevent unnecessary re-renders\n const memoizedThemeContext = React.useMemo(\n () => ({\n material: effectiveMaterial,\n accentColor: themeContext.accentColor,\n }),\n [effectiveMaterial, themeContext.accentColor],\n );\n\n const {\n size = dropdownMenuContentPropDefs.size.default,\n variant = dropdownMenuContentPropDefs.variant.default,\n highContrast = dropdownMenuContentPropDefs.highContrast.default,\n material = memoizedThemeContext.material,\n submenuBehavior,\n virtualized = false,\n } = props;\n const {\n className,\n children,\n color,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n submenuBehavior: ___,\n virtualized: ____,\n ...contentProps\n } = extractProps(props, dropdownMenuContentPropDefs);\n\n // Memoize color resolution to prevent unnecessary re-renders\n const resolvedColor = React.useMemo(\n () => color || memoizedThemeContext.accentColor,\n [color, memoizedThemeContext.accentColor],\n );\n const contentBody = (\n <MenuProvider size={size}>\n <DropdownMenuContentContext.Provider\n value={React.useMemo(\n () => ({ size, variant, color: resolvedColor, highContrast, material }),\n [size, variant, resolvedColor, highContrast, material],\n )}\n >\n <DrillDownProvider submenuBehavior={submenuBehavior}>\n <DrillDownRoot>{children}</DrillDownRoot>\n </DrillDownProvider>\n </DropdownMenuContentContext.Provider>\n </MenuProvider>\n );\n\n return (\n <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DropdownMenuPrimitive.Content\n data-accent-color={resolvedColor}\n data-material={material}\n data-panel-background={material}\n align=\"start\"\n sideOffset={4}\n collisionPadding={10}\n {...contentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-DropdownMenuContent',\n className,\n )}\n >\n {virtualized ? (\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport', 'rt-virtualized')}>\n {contentBody}\n </div>\n ) : (\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n {contentBody}\n </div>\n </ScrollArea>\n )}\n </DropdownMenuPrimitive.Content>\n </Theme>\n </DropdownMenuPrimitive.Portal>\n );\n },\n);\nDropdownMenuContent.displayName = 'DropdownMenu.Content';\n\ntype DropdownMenuLabelElement = React.ElementRef<typeof DropdownMenuPrimitive.Label>;\ninterface DropdownMenuLabelProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Label, RemovedProps> {}\nconst DropdownMenuLabel = React.forwardRef<DropdownMenuLabelElement, DropdownMenuLabelProps>(\n ({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Label\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuLabel', 'rt-DropdownMenuLabel', className)}\n />\n ),\n);\nDropdownMenuLabel.displayName = 'DropdownMenu.Label';\n\ntype DropdownMenuItemElement = React.ElementRef<typeof DropdownMenuPrimitive.Item>;\ntype DropdownMenuItemOwnProps = GetPropDefTypes<typeof dropdownMenuItemPropDefs>;\ninterface DropdownMenuItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Item, RemovedProps>,\n DropdownMenuItemOwnProps {}\nconst DropdownMenuItem = React.forwardRef<DropdownMenuItemElement, DropdownMenuItemProps>(\n (props, forwardedRef) => {\n const {\n className,\n children,\n color = dropdownMenuItemPropDefs.color.default,\n shortcut,\n ...itemProps\n } = props;\n return (\n <DropdownMenuPrimitive.Item\n data-accent-color={color}\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-reset', 'rt-BaseMenuItem', 'rt-DropdownMenuItem', className)}\n >\n <Slot.Slottable>{children}</Slot.Slottable>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </DropdownMenuPrimitive.Item>\n );\n },\n);\nDropdownMenuItem.displayName = 'DropdownMenu.Item';\n\ntype DropdownMenuGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.Group>;\ninterface DropdownMenuGroupProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Group, RemovedProps> {}\nconst DropdownMenuGroup = React.forwardRef<DropdownMenuGroupElement, DropdownMenuGroupProps>(\n ({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Group\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuGroup', 'rt-DropdownMenuGroup', className)}\n />\n ),\n);\nDropdownMenuGroup.displayName = 'DropdownMenu.Group';\n\ntype DropdownMenuRadioGroupElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioGroup>;\ninterface DropdownMenuRadioGroupProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioGroup, RemovedProps> {}\nconst DropdownMenuRadioGroup = React.forwardRef<\n DropdownMenuRadioGroupElement,\n DropdownMenuRadioGroupProps\n>(({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.RadioGroup\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuRadioGroup', 'rt-DropdownMenuRadioGroup', className)}\n />\n));\nDropdownMenuRadioGroup.displayName = 'DropdownMenu.RadioGroup';\n\ntype DropdownMenuRadioItemElement = React.ElementRef<typeof DropdownMenuPrimitive.RadioItem>;\ntype DropdownMenuRadioItemOwnProps = GetPropDefTypes<typeof dropdownMenuRadioItemPropDefs>;\ninterface DropdownMenuRadioItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.RadioItem, RemovedProps>,\n DropdownMenuRadioItemOwnProps {}\nconst DropdownMenuRadioItem = React.forwardRef<\n DropdownMenuRadioItemElement,\n DropdownMenuRadioItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n color = dropdownMenuRadioItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <DropdownMenuPrimitive.RadioItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuRadioItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuRadioItem',\n className,\n )}\n >\n {children}\n <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n <ThickDotIcon className=\"rt-BaseMenuItemIndicatorIcon rt-DropdownMenuItemIndicatorIcon\" />\n </DropdownMenuPrimitive.ItemIndicator>\n </DropdownMenuPrimitive.RadioItem>\n );\n});\nDropdownMenuRadioItem.displayName = 'DropdownMenu.RadioItem';\n\ntype DropdownMenuCheckboxItemElement = React.ElementRef<typeof DropdownMenuPrimitive.CheckboxItem>;\ntype DropdownMenuCheckboxItemOwnProps = GetPropDefTypes<typeof dropdownMenuCheckboxItemPropDefs>;\ninterface DropdownMenuCheckboxItemProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.CheckboxItem, RemovedProps>,\n DropdownMenuCheckboxItemOwnProps {}\nconst DropdownMenuCheckboxItem = React.forwardRef<\n DropdownMenuCheckboxItemElement,\n DropdownMenuCheckboxItemProps\n>((props, forwardedRef) => {\n const {\n children,\n className,\n shortcut,\n color = dropdownMenuCheckboxItemPropDefs.color.default,\n ...itemProps\n } = props;\n return (\n <DropdownMenuPrimitive.CheckboxItem\n {...itemProps}\n asChild={false}\n ref={forwardedRef}\n data-accent-color={color}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuCheckboxItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuCheckboxItem',\n className,\n )}\n >\n {children}\n <DropdownMenuPrimitive.ItemIndicator className=\"rt-BaseMenuItemIndicator rt-DropdownMenuItemIndicator\">\n <ThickCheckIcon className=\"rt-BaseMenuItemIndicatorIcon rt-ContextMenuItemIndicatorIcon\" />\n </DropdownMenuPrimitive.ItemIndicator>\n {shortcut && (\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <Kbd size=\"1\">{shortcut}</Kbd>\n </div>\n )}\n </DropdownMenuPrimitive.CheckboxItem>\n );\n});\nDropdownMenuCheckboxItem.displayName = 'DropdownMenu.CheckboxItem';\n\n// Generate unique submenu IDs using React 18's useId for SSR safety\nfunction useSubId() {\n return React.useId();\n}\n\ninterface DropdownMenuSubProps\n extends React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Sub> {\n /**\n * Label displayed in the back button when using drill-down mode.\n * If not provided, defaults to \"Back\".\n */\n label?: React.ReactNode;\n}\nconst DropdownMenuSub: React.FC<DropdownMenuSubProps> = ({ label = 'Back', ...props }) => {\n // Use state-only hook since we only need behavior check\n const drillDownState = useDrillDownStateOptional();\n const subId = useSubId();\n\n // Create context value for SubContent and SubTrigger\n const subContextValue = React.useMemo(\n () => ({ id: subId, label }),\n [subId, label]\n );\n\n // In drill-down mode, we don't use Radix's Sub component\n // We just provide the SubContext and render children\n if (drillDownState?.behavior === 'drill-down') {\n return (\n <SubContext.Provider value={subContextValue}>\n {props.children}\n </SubContext.Provider>\n );\n }\n\n // In cascade mode, use Radix's Sub component normally\n return (\n <SubContext.Provider value={subContextValue}>\n <DropdownMenuPrimitive.Sub {...props} />\n </SubContext.Provider>\n );\n};\nDropdownMenuSub.displayName = 'DropdownMenu.Sub';\n\ntype DropdownMenuSubTriggerElement = React.ElementRef<typeof DropdownMenuPrimitive.SubTrigger>;\ninterface DropdownMenuSubTriggerProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubTrigger, RemovedProps> {}\nconst DropdownMenuSubTrigger = React.forwardRef<\n DropdownMenuSubTriggerElement,\n DropdownMenuSubTriggerProps\n>((props, forwardedRef) => {\n const { className, children, onClick, ...subTriggerProps } = props;\n // Use split hooks: actions for stable push callback, state only for behavior check\n const drillDownActions = useDrillDownActionsOptional();\n const drillDownState = useDrillDownStateOptional();\n const subContext = useSubContext();\n\n // Store onClick in ref to avoid recreating handlers when onClick changes\n const onClickRef = React.useRef(onClick);\n onClickRef.current = onClick;\n\n // Stable click handler - only depends on stable refs\n const handleClick = React.useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n if (subContext && drillDownActions) {\n drillDownActions.push(subContext.id);\n }\n (onClickRef.current as React.MouseEventHandler<HTMLDivElement> | undefined)?.(e);\n }, [subContext, drillDownActions]);\n\n // Stable keydown handler\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n if (subContext && drillDownActions) {\n drillDownActions.push(subContext.id);\n }\n }\n }, [subContext, drillDownActions]);\n\n // In drill-down mode, render a button that navigates to the submenu\n if (drillDownState?.behavior === 'drill-down' && subContext) {\n return (\n <div\n role=\"menuitem\"\n tabIndex={0}\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuSubTrigger',\n 'rt-DropdownMenuDrillDownSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon\" />\n </div>\n </div>\n );\n }\n\n // In cascade mode, use Radix's SubTrigger\n return (\n <DropdownMenuPrimitive.SubTrigger\n {...subTriggerProps}\n onClick={onClick as React.MouseEventHandler<HTMLDivElement> | undefined}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-BaseMenuItem',\n 'rt-BaseMenuSubTrigger',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuSubTrigger',\n className,\n )}\n >\n {children}\n <div className=\"rt-BaseMenuShortcut rt-DropdownMenuShortcut\">\n <ThickChevronRightIcon className=\"rt-BaseMenuSubTriggerIcon rt-DropdownMenuSubtriggerIcon\" />\n </div>\n </DropdownMenuPrimitive.SubTrigger>\n );\n});\nDropdownMenuSubTrigger.displayName = 'DropdownMenu.SubTrigger';\n\n// Separator is defined here (before SubContent) because it's used in drill-down mode\ntype DropdownMenuSeparatorElement = React.ElementRef<typeof DropdownMenuPrimitive.Separator>;\ninterface DropdownMenuSeparatorProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.Separator, RemovedProps> {}\nconst DropdownMenuSeparator = React.forwardRef<\n DropdownMenuSeparatorElement,\n DropdownMenuSeparatorProps\n>(({ className, ...props }, forwardedRef) => (\n <DropdownMenuPrimitive.Separator\n {...props}\n asChild={false}\n ref={forwardedRef}\n className={classNames('rt-BaseMenuSeparator', 'rt-DropdownMenuSeparator', className)}\n />\n));\nDropdownMenuSeparator.displayName = 'DropdownMenu.Separator';\n\n/**\n * Internal component for the drill-down back button.\n * Uses actions-only hook since it only needs to call pop(), never reads state.\n * This prevents re-renders when drill-down state changes.\n */\nfunction DrillDownBackItem({ label }: { label: React.ReactNode }) {\n // Use actions-only hook for stable pop callback - prevents re-renders on stack changes\n const { pop } = useDrillDownActionsOptional() ?? {};\n\n // Stable click handler\n const handleClick = React.useCallback((e: React.MouseEvent<HTMLDivElement>) => {\n e.preventDefault();\n pop?.();\n }, [pop]);\n\n // Stable keydown handler\n const handleKeyDown = React.useCallback((e: React.KeyboardEvent<HTMLDivElement>) => {\n if (e.key === 'Enter' || e.key === ' ') {\n e.preventDefault();\n pop?.();\n }\n }, [pop]);\n\n return (\n <div\n role=\"menuitem\"\n tabIndex={0}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n className={classNames(\n 'rt-reset',\n 'rt-BaseMenuItem',\n 'rt-DropdownMenuItem',\n 'rt-DropdownMenuDrillDownBackItem',\n )}\n >\n <ThickChevronLeftIcon className=\"rt-DropdownMenuDrillDownBackIcon\" />\n <span className=\"rt-DropdownMenuDrillDownBackLabel\">{label}</span>\n </div>\n );\n}\n\ntype DropdownMenuSubContentElement = React.ElementRef<typeof DropdownMenuPrimitive.SubContent>;\ninterface DropdownMenuSubContentProps\n extends ComponentPropsWithout<typeof DropdownMenuPrimitive.SubContent, RemovedProps>,\n DropdownMenuContentContextValue {\n container?: React.ComponentPropsWithoutRef<typeof DropdownMenuPrimitive.Portal>['container'];\n}\nconst DropdownMenuSubContent = React.forwardRef<\n DropdownMenuSubContentElement,\n DropdownMenuSubContentProps\n>((props, forwardedRef) => {\n // Get context values directly - memoization at provider level handles stability\n const { size, variant, color, highContrast, material } = React.useContext(\n DropdownMenuContentContext,\n );\n // Use state-only hook since we only need behavior and isActive (no actions)\n const drillDownState = useDrillDownStateOptional();\n const subContext = useSubContext();\n\n const {\n className,\n children,\n container,\n forceMount,\n material: _,\n panelBackground: __,\n ...subContentProps\n } = extractProps(\n { size, variant, color, highContrast, material, ...props },\n dropdownMenuSubContentPropDefs,\n );\n\n // In drill-down mode, render inline instead of in a portal\n if (drillDownState?.behavior === 'drill-down' && subContext) {\n const isActive = drillDownState.isActive(subContext.id);\n\n return (\n <div\n ref={forwardedRef as React.Ref<HTMLDivElement>}\n role=\"menu\"\n aria-label={typeof subContext.label === 'string' ? subContext.label : undefined}\n data-drill-down-active={isActive ? true : undefined}\n data-animation-direction={drillDownState.animationDirection ?? undefined}\n className={classNames(\n 'rt-DropdownMenuDrillDownPanel',\n className,\n )}\n >\n <DrillDownBackItem label={subContext.label} />\n <DropdownMenuSeparator />\n {children}\n </div>\n );\n }\n\n // In cascade mode, use Portal and Radix's SubContent\n return (\n <DropdownMenuPrimitive.Portal container={container} forceMount={forceMount}>\n <Theme asChild>\n <DropdownMenuPrimitive.SubContent\n data-accent-color={color}\n data-material={material}\n data-panel-background={material}\n alignOffset={-Number(size) * 4}\n // Side offset accounts for the outer solid box-shadow\n sideOffset={1}\n collisionPadding={10}\n {...subContentProps}\n asChild={false}\n ref={forwardedRef}\n className={classNames(\n 'rt-PopperContent',\n 'rt-BaseMenuContent',\n 'rt-BaseMenuSubContent',\n 'rt-DropdownMenuContent',\n 'rt-DropdownMenuSubContent',\n className,\n )}\n >\n <ScrollArea type=\"auto\">\n <div className={classNames('rt-BaseMenuViewport', 'rt-DropdownMenuViewport')}>\n {children}\n </div>\n </ScrollArea>\n </DropdownMenuPrimitive.SubContent>\n </Theme>\n </DropdownMenuPrimitive.Portal>\n );\n});\nDropdownMenuSubContent.displayName = 'DropdownMenu.SubContent';\n\ntype DropdownMenuTriggerIconElement = React.ElementRef<'svg'>;\ninterface DropdownMenuTriggerIconProps extends IconProps {}\nconst DropdownMenuTriggerIcon = React.forwardRef<\n DropdownMenuTriggerIconElement,\n DropdownMenuTriggerIconProps\n>((props, forwardedRef) => (\n <ChevronDownIcon {...props} ref={forwardedRef} className=\"rt-DropdownMenuTriggerIcon\" />\n));\nDropdownMenuTriggerIcon.displayName = 'DropdownMenu.TriggerIcon';\n\nexport {\n DropdownMenuRoot as Root,\n DropdownMenuTrigger as Trigger,\n DropdownMenuTriggerIcon as TriggerIcon,\n DropdownMenuContent as Content,\n DropdownMenuLabel as Label,\n DropdownMenuItem as Item,\n DropdownMenuGroup as Group,\n DropdownMenuRadioGroup as RadioGroup,\n DropdownMenuRadioItem as RadioItem,\n DropdownMenuCheckboxItem as CheckboxItem,\n DropdownMenuSub as Sub,\n DropdownMenuSubTrigger as SubTrigger,\n DropdownMenuSubContent as SubContent,\n DropdownMenuSeparator as Separator,\n};\n\nexport type {\n DropdownMenuRootProps as RootProps,\n DropdownMenuTriggerProps as TriggerProps,\n DropdownMenuTriggerIconProps as TriggerIconProps,\n DropdownMenuContentProps as ContentProps,\n DropdownMenuLabelProps as LabelProps,\n DropdownMenuItemProps as ItemProps,\n DropdownMenuGroupProps as GroupProps,\n DropdownMenuRadioGroupProps as RadioGroupProps,\n DropdownMenuRadioItemProps as RadioItemProps,\n DropdownMenuCheckboxItemProps as CheckboxItemProps,\n DropdownMenuSubProps as SubProps,\n DropdownMenuSubTriggerProps as SubTriggerProps,\n DropdownMenuSubContentProps as SubContentProps,\n DropdownMenuSeparatorProps as SeparatorProps,\n SubmenuBehavior,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["dropdown_menu_exports", "__export", "DropdownMenuCheckboxItem", "DropdownMenuContent", "DropdownMenuGroup", "DropdownMenuItem", "DropdownMenuLabel", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "DropdownMenuRoot", "DropdownMenuSeparator", "DropdownMenuSub", "DropdownMenuSubContent", "DropdownMenuSubTrigger", "DropdownMenuTrigger", "DropdownMenuTriggerIcon", "React", "classNames", "DropdownMenuPrimitive", "Slot", "DropdownMenuRoot", "props", "DropdownMenuPrimitive", "DropdownMenuTrigger", "children", "forwardedRef", "requireReactElement", "DrillDownRoot", "drillDownState", "useDrillDownStateOptional", "DropdownMenuContentContext", "DropdownMenuContent", "themeContext", "useThemeContext", "effectiveMaterial", "memoizedThemeContext", "size", "baseMenuContentPropDefs", "variant", "highContrast", "material", "submenuBehavior", "virtualized", "className", "color", "container", "forceMount", "_", "__", "___", "____", "contentProps", "extractProps", "resolvedColor", "contentBody", "MenuProvider", "DrillDownProvider", "Theme", "classNames", "ScrollArea", "DropdownMenuLabel", "DropdownMenuItem", "baseMenuItemPropDefs", "shortcut", "itemProps", "Slot", "Kbd", "DropdownMenuGroup", "DropdownMenuRadioGroup", "DropdownMenuRadioItem", "baseMenuRadioItemPropDefs", "ThickDotIcon", "DropdownMenuCheckboxItem", "baseMenuCheckboxItemPropDefs", "ThickCheckIcon", "useSubId", "DropdownMenuSub", "label", "subId", "subContextValue", "SubContext", "DropdownMenuSubTrigger", "onClick", "subTriggerProps", "drillDownActions", "useDrillDownActionsOptional", "subContext", "useSubContext", "onClickRef", "handleClick", "e", "handleKeyDown", "ThickChevronRightIcon", "DropdownMenuSeparator", "DrillDownBackItem", "pop", "ThickChevronLeftIcon", "DropdownMenuSubContent", "subContentProps", "baseMenuSubContentPropDefs", "isActive", "DropdownMenuTriggerIcon", "ChevronDownIcon"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as B}from"./chunk-ITRVKLYU.js";import{a as E}from"./chunk-HACQF6F4.js";import{a as c}from"./chunk-MJJ7XDIP.js";import{a as T}from"./chunk-GCUGJXI2.js";import{c as m}from"./chunk-LN5SP46K.js";import{a as h}from"./chunk-4OBMRJHC.js";import{a as l}from"./chunk-KMPBTEZH.js";import{a as j}from"./chunk-3XT5P2HO.js";var z={};j(z,{Close:()=>w,Content:()=>k,Description:()=>M,Root:()=>N,Title:()=>b,Trigger:()=>x});import*as e from"react";import q from"classnames";import{Dialog as a}from"radix-ui";var N=o=>e.createElement(a.Root,{...o,modal:!0});N.displayName="Dialog.Root";var x=e.forwardRef(({children:o,...t},r)=>e.createElement(a.Trigger,{...t,ref:r,asChild:!0},c(o)));x.displayName="Dialog.Trigger";var k=e.forwardRef(({align:o,...t},r)=>{let{align:S,panelBackground:O,material:H,...L}=T,{className:D}=l({align:o},{align:S}),{panelBackground:d}=l({panelBackground:t.panelBackground},{panelBackground:O}),{material:p}=l({material:t.material},{material:H}),f=e.useMemo(()=>(p!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead."),p??d),[p,d]),{className:W,forceMount:A,container:P,panelBackground:F,material:$,...K}=l(t,L),u=e.useRef(null),_=e.useMemo(()=>i=>{u.current=i,typeof r=="function"?r(i):r&&(r.current=i)},[r]);B(),e.useEffect(()=>{if(typeof window>"u")return;let i=u.current;if(!i)return;let n=i.querySelectorAll('button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])');if(n.length===0)return;let g=n[0],y=n[n.length-1],R=s=>{s.key==="Tab"&&(s.shiftKey?document.activeElement===g&&(s.preventDefault(),y.focus()):document.activeElement===y&&(s.preventDefault(),g.focus()))};return i.addEventListener("keydown",R),g.focus(),()=>{i.removeEventListener("keydown",R)}},[]);let C=e.createElement(a.Content,{...K,ref:_,className:q("rt-BaseDialogContent","rt-DialogContent",W),"data-material":f,"data-panel-background":f,tabIndex:-1,role:"dialog","aria-modal":"true",onCloseAutoFocus:i=>{i.preventDefault(),document.body.style.pointerEvents=""}}),v=e.createElement("div",{"aria-live":"polite","aria-atomic":"true",className:"rt-sr-only",id:"dialog-announcement"});return A?e.createElement(a.Portal,{container:P,forceMount:!0},e.createElement(m,null,e.createElement(a.Overlay,{className:"rt-BaseDialogOverlay rt-DialogOverlay"}),e.createElement("div",{className:"rt-BaseDialogScroll rt-DialogScroll rt-BaseDialogScroll--detached"},e.createElement("div",{className:`rt-BaseDialogScrollPadding rt-DialogScrollPadding ${D}`},e.cloneElement(C,{forceMount:!0}),v)))):e.createElement(a.Portal,{container:P},e.createElement(m,{asChild:!0},e.createElement(a.Overlay,{className:"rt-BaseDialogOverlay rt-DialogOverlay"},e.createElement("div",{className:"rt-BaseDialogScroll rt-DialogScroll"},e.createElement("div",{className:`rt-BaseDialogScrollPadding rt-DialogScrollPadding ${D}`},C,v)))))});k.displayName="Dialog.Content";var b=e.forwardRef((o,t)=>e.createElement(a.Title,{asChild:!0},e.createElement(E,{size:"5",mb:"3",trim:"start",...o,asChild:!1,ref:t})));b.displayName="Dialog.Title";var M=e.forwardRef((o,t)=>e.createElement(a.Description,{asChild:!0},e.createElement(h,{as:"p",size:"3",...o,asChild:!1,ref:t})));M.displayName="Dialog.Description";var w=e.forwardRef(({children:o,...t},r)=>e.createElement(a.Close,{...t,ref:r,asChild:!0},c(o)));w.displayName="Dialog.Close";export{N as a,x as b,k as c,b as d,M as e,w as f,z as g};
|
|
2
|
-
//# sourceMappingURL=chunk-HURTSXRY.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/dialog.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Dialog as DialogPrimitive } from 'radix-ui';\n\nimport { dialogContentPropDefs } from './dialog.props.js';\nimport { Heading } from './heading.js';\nimport { Text } from './text.js';\nimport { Theme } from './theme.js';\nimport { extractProps } from '../helpers/extract-props.js';\nimport { requireReactElement } from '../helpers/require-react-element.js';\nimport { useBodyPointerEventsCleanup } from '../hooks/use-body-pointer-events-cleanup.js';\n\nimport type { DialogContentOwnProps } from './dialog.props.js';\nimport type {\n ComponentPropsWithout,\n RemovedProps,\n ComponentPropsAs,\n} from '../helpers/component-props.js';\n\ninterface DialogRootProps extends ComponentPropsWithout<typeof DialogPrimitive.Root, 'modal'> {}\nconst DialogRoot: React.FC<DialogRootProps> = (props) => <DialogPrimitive.Root {...props} modal />;\nDialogRoot.displayName = 'Dialog.Root';\n\ntype DialogTriggerElement = React.ElementRef<typeof DialogPrimitive.Trigger>;\ninterface DialogTriggerProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Trigger, RemovedProps> {}\nconst DialogTrigger = React.forwardRef<DialogTriggerElement, DialogTriggerProps>(\n ({ children, ...props }, forwardedRef) => (\n <DialogPrimitive.Trigger {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Trigger>\n ),\n);\nDialogTrigger.displayName = 'Dialog.Trigger';\n\ntype DialogContentElement = React.ElementRef<typeof DialogPrimitive.Content>;\ninterface DialogContentProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Content, RemovedProps>,\n DialogContentOwnProps {\n container?: React.ComponentPropsWithoutRef<typeof DialogPrimitive.Portal>['container'];\n}\nconst DialogContent = React.forwardRef<DialogContentElement, DialogContentProps>(\n ({ align, ...props }, forwardedRef) => {\n const {\n align: alignPropDef,\n panelBackground: panelBackgroundPropDef,\n material: materialPropDef,\n ...propDefs\n } = dialogContentPropDefs;\n\n const { className: alignClassName } = extractProps({ align }, { align: alignPropDef });\n\n // Extract panelBackground and material from props\n const { panelBackground: extractedPanelBackground } = extractProps(\n { panelBackground: props.panelBackground },\n { panelBackground: panelBackgroundPropDef },\n );\n\n const { material: extractedMaterial } = extractProps(\n { material: props.material },\n { material: materialPropDef },\n );\n\n // Handle material prop with panelBackground fallback\n const materialValue = React.useMemo(() => {\n if (extractedMaterial !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n return extractedMaterial ?? extractedPanelBackground;\n }, [extractedMaterial, extractedPanelBackground]);\n\n const {\n className,\n forceMount,\n container,\n panelBackground: _,\n material: __,\n ...contentProps\n } = extractProps(props, propDefs);\n\n // Focus management\n const contentRef = React.useRef<HTMLDivElement>(null);\n const combinedRef = React.useMemo(\n () => (node: HTMLDivElement | null) => {\n contentRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n },\n [forwardedRef],\n );\n\n // Cleanup stuck pointer-events on body\n useBodyPointerEventsCleanup();\n\n // Focus trap effect\n React.useEffect(() => {\n // SSR safety - only run on client\n if (typeof window === 'undefined') return;\n\n const content = contentRef.current;\n if (!content) return;\n\n const focusableElements = content.querySelectorAll(\n 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])',\n );\n\n if (focusableElements.length === 0) return;\n\n const firstElement = focusableElements[0] as HTMLElement;\n const lastElement = focusableElements[focusableElements.length - 1] as HTMLElement;\n\n const handleKeyDown = (event: KeyboardEvent) => {\n if (event.key === 'Tab') {\n if (event.shiftKey) {\n if (document.activeElement === firstElement) {\n event.preventDefault();\n lastElement.focus();\n }\n } else {\n if (document.activeElement === lastElement) {\n event.preventDefault();\n firstElement.focus();\n }\n }\n }\n };\n\n content.addEventListener('keydown', handleKeyDown);\n\n // Focus first element when dialog opens\n firstElement.focus();\n\n return () => {\n content.removeEventListener('keydown', handleKeyDown);\n };\n }, []);\n\n const contentElement = (\n <DialogPrimitive.Content\n {...contentProps}\n ref={combinedRef}\n className={classNames('rt-BaseDialogContent', 'rt-DialogContent', className)}\n data-material={materialValue}\n data-panel-background={materialValue}\n tabIndex={-1}\n role=\"dialog\"\n aria-modal=\"true\"\n onCloseAutoFocus={(event) => {\n // Prevent default focus behavior\n event.preventDefault();\n // Restore pointer-events to body (Radix UI fix for issue #1241)\n document.body.style.pointerEvents = '';\n }}\n />\n );\n\n const ariaLiveRegion = (\n <div\n aria-live=\"polite\"\n aria-atomic=\"true\"\n className=\"rt-sr-only\"\n id=\"dialog-announcement\"\n />\n );\n\n // When forceMount is used, render Overlay and Content as siblings so the\n // Overlay (which uses react-remove-scroll) can unmount independently when\n // the dialog closes, while the Content stays mounted.\n if (forceMount) {\n return (\n <DialogPrimitive.Portal container={container} forceMount>\n <Theme>\n <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay\" />\n <div className=\"rt-BaseDialogScroll rt-DialogScroll rt-BaseDialogScroll--detached\">\n <div\n className={`rt-BaseDialogScrollPadding rt-DialogScrollPadding ${alignClassName}`}\n >\n {React.cloneElement(contentElement, { forceMount: true })}\n {ariaLiveRegion}\n </div>\n </div>\n </Theme>\n </DialogPrimitive.Portal>\n );\n }\n\n return (\n <DialogPrimitive.Portal container={container}>\n <Theme asChild>\n <DialogPrimitive.Overlay className=\"rt-BaseDialogOverlay rt-DialogOverlay\">\n <div className=\"rt-BaseDialogScroll rt-DialogScroll\">\n <div\n className={`rt-BaseDialogScrollPadding rt-DialogScrollPadding ${alignClassName}`}\n >\n {contentElement}\n {ariaLiveRegion}\n </div>\n </div>\n </DialogPrimitive.Overlay>\n </Theme>\n </DialogPrimitive.Portal>\n );\n },\n);\nDialogContent.displayName = 'Dialog.Content';\n\ntype DialogTitleElement = React.ElementRef<typeof Heading>;\ntype DialogTitleProps = ComponentPropsWithout<typeof Heading, 'asChild'>;\nconst DialogTitle = React.forwardRef<DialogTitleElement, DialogTitleProps>(\n (props, forwardedRef) => (\n <DialogPrimitive.Title asChild>\n <Heading size=\"5\" mb=\"3\" trim=\"start\" {...props} asChild={false} ref={forwardedRef} />\n </DialogPrimitive.Title>\n ),\n);\nDialogTitle.displayName = 'Dialog.Title';\n\ntype DialogDescriptionElement = HTMLParagraphElement;\ntype DialogDescriptionProps = ComponentPropsAs<typeof Text, 'p'>;\nconst DialogDescription = React.forwardRef<DialogDescriptionElement, DialogDescriptionProps>(\n (props, forwardedRef) => (\n <DialogPrimitive.Description asChild>\n <Text as=\"p\" size=\"3\" {...props} asChild={false} ref={forwardedRef} />\n </DialogPrimitive.Description>\n ),\n);\nDialogDescription.displayName = 'Dialog.Description';\n\ntype DialogCloseElement = React.ElementRef<typeof DialogPrimitive.Close>;\ninterface DialogCloseProps\n extends ComponentPropsWithout<typeof DialogPrimitive.Close, RemovedProps> {}\nconst DialogClose = React.forwardRef<DialogCloseElement, DialogCloseProps>(\n ({ children, ...props }, forwardedRef) => (\n <DialogPrimitive.Close {...props} ref={forwardedRef} asChild>\n {requireReactElement(children)}\n </DialogPrimitive.Close>\n ),\n);\nDialogClose.displayName = 'Dialog.Close';\n\nexport {\n DialogRoot as Root,\n DialogTrigger as Trigger,\n DialogContent as Content,\n DialogTitle as Title,\n DialogDescription as Description,\n DialogClose as Close,\n};\n\nexport type {\n DialogRootProps as RootProps,\n DialogTriggerProps as TriggerProps,\n DialogContentProps as ContentProps,\n DialogTitleProps as TitleProps,\n DialogDescriptionProps as DescriptionProps,\n DialogCloseProps as CloseProps,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["dialog_exports", "__export", "DialogClose", "DialogContent", "DialogDescription", "DialogRoot", "DialogTitle", "DialogTrigger", "React", "classNames", "DialogPrimitive", "DialogRoot", "props", "DialogPrimitive", "DialogTrigger", "children", "forwardedRef", "requireReactElement", "DialogContent", "align", "alignPropDef", "panelBackgroundPropDef", "materialPropDef", "propDefs", "dialogContentPropDefs", "alignClassName", "extractProps", "extractedPanelBackground", "extractedMaterial", "materialValue", "className", "forceMount", "container", "_", "__", "contentProps", "contentRef", "combinedRef", "node", "useBodyPointerEventsCleanup", "content", "focusableElements", "firstElement", "lastElement", "handleKeyDown", "event", "contentElement", "classNames", "ariaLiveRegion", "Theme", "DialogTitle", "Heading", "DialogDescription", "Text", "DialogClose"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import*as d from"react";var s=!1;function m(){d.useEffect(()=>{if(typeof document>"u"||s)return;s=!0;let r=()=>{let e=!!document.querySelector('[role="dialog"][aria-modal="true"], [role="alertdialog"][aria-modal="true"]'),t=!!document.querySelector('[data-radix-popper-content-wrapper], [data-state="open"]');return e||t},a=()=>{document.body.style.pointerEvents==="none"&&(console.log("[KookieUI] Force cleaning stuck pointer-events: none from body"),document.body.style.pointerEvents="",document.body.removeAttribute("data-scroll-locked"),document.body.removeAttribute("data-remove-scroll"),document.body.classList.remove("ReactModal__Body--open"))},o=()=>{document.body.style.pointerEvents==="none"&&!r()&&(console.log("[KookieUI] Safe cleaning stuck pointer-events: none from body"),document.body.style.pointerEvents="")},c=e=>{let t=e.target;t&&!t.closest('[role="dialog"], [role="alertdialog"], [data-radix-popper-content-wrapper]')&&setTimeout(a,100)},i=e=>{e.key==="Escape"&&setTimeout(a,200)},n=()=>{setTimeout(o,50)};document.addEventListener("click",c,!0),document.addEventListener("keydown",i,!0),document.addEventListener("pointerup",n,!0),document.addEventListener("transitionend",n,!0),document.addEventListener("animationend",n,!0),new MutationObserver(()=>{setTimeout(o,0)}).observe(document.body,{childList:!0,subtree:!0,attributes:!0});let l=setInterval(()=>{document.body.style.pointerEvents==="none"&&!r()&&(console.log("[KookieUI] Periodic cleanup of stuck pointer-events"),document.body.style.pointerEvents="")},1e3);return setTimeout(o,100),()=>{clearInterval(l)}},[])}export{m as a};
|
|
2
|
-
//# sourceMappingURL=chunk-ITRVKLYU.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/hooks/use-body-pointer-events-cleanup.ts"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\n\nlet cleanupInstalled = false;\n\n/**\n * Hook to cleanup stuck pointer-events: none on document.body\n *\n * This addresses an issue where react-remove-scroll (used by Radix UI Dialog)\n * sometimes fails to restore body pointer-events after dialog closes,\n * leaving the page unclickable.\n */\nexport function useBodyPointerEventsCleanup() {\n React.useEffect(() => {\n if (typeof document === 'undefined') return;\n if (cleanupInstalled) return;\n\n cleanupInstalled = true;\n\n const hasOpenModal = (): boolean => {\n // Check for open dialogs/alertdialogs\n const hasDialogs = Boolean(\n document.querySelector(\n '[role=\"dialog\"][aria-modal=\"true\"], [role=\"alertdialog\"][aria-modal=\"true\"]',\n ),\n );\n\n // Also check for any Radix overlays that are still mounted\n const hasRadixOverlays = Boolean(\n document.querySelector('[data-radix-popper-content-wrapper], [data-state=\"open\"]'),\n );\n\n return hasDialogs || hasRadixOverlays;\n };\n\n const forceCleanup = () => {\n // Aggressive cleanup - remove pointer-events regardless\n if (document.body.style.pointerEvents === 'none') {\n console.log('[KookieUI] Force cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n\n // Also remove any scroll-lock related attributes\n document.body.removeAttribute('data-scroll-locked');\n document.body.removeAttribute('data-remove-scroll');\n\n // Remove any classes that might be causing issues\n document.body.classList.remove('ReactModal__Body--open');\n }\n };\n\n const safeCleanup = () => {\n if (document.body.style.pointerEvents === 'none' && !hasOpenModal()) {\n console.log('[KookieUI] Safe cleaning stuck pointer-events: none from body');\n document.body.style.pointerEvents = '';\n }\n };\n\n // Force cleanup on any click outside modal content\n const onDocumentClick = (event: Event) => {\n const target = event.target as Element;\n if (\n target &&\n !target.closest(\n '[role=\"dialog\"], [role=\"alertdialog\"], [data-radix-popper-content-wrapper]',\n )\n ) {\n // Clicked outside any modal - force cleanup after a short delay\n setTimeout(forceCleanup, 100);\n }\n };\n\n // Force cleanup on ESC key\n const onEscapeKey = (event: KeyboardEvent) => {\n if (event.key === 'Escape') {\n setTimeout(forceCleanup, 200);\n }\n };\n\n // Safe cleanup on other interactions\n const onInteraction = () => {\n setTimeout(safeCleanup, 50);\n };\n\n // Install global listeners\n document.addEventListener('click', onDocumentClick, true);\n document.addEventListener('keydown', onEscapeKey, true);\n document.addEventListener('pointerup', onInteraction, true);\n document.addEventListener('transitionend', onInteraction, true);\n document.addEventListener('animationend', onInteraction, true);\n\n // Watch for DOM changes that might indicate overlay removal\n const observer = new MutationObserver(() => {\n setTimeout(safeCleanup, 0);\n });\n observer.observe(document.body, { childList: true, subtree: true, attributes: true });\n\n // Fallback periodic cleanup\n const intervalId = setInterval(() => {\n if (document.body.style.pointerEvents === 'none' && !hasOpenModal()) {\n console.log('[KookieUI] Periodic cleanup of stuck pointer-events');\n document.body.style.pointerEvents = '';\n }\n }, 1000);\n\n // Initial cleanup\n setTimeout(safeCleanup, 100);\n\n // Cleanup function (keep listeners for app lifetime)\n return () => {\n clearInterval(intervalId);\n };\n }, []);\n}\n"],
|
|
5
|
-
"mappings": "AAAA,UAAYA,MAAW,QAEvB,IAAIC,EAAmB,GAShB,SAASC,GAA8B,CACtC,YAAU,IAAM,CAEpB,GADI,OAAO,SAAa,KACpBD,EAAkB,OAEtBA,EAAmB,GAEnB,IAAME,EAAe,IAAe,CAElC,IAAMC,EAAa,EACjB,SAAS,cACP,6EACF,EAIIC,EAAmB,EACvB,SAAS,cAAc,0DAA0D,EAGnF,OAAOD,GAAcC,CACvB,EAEMC,EAAe,IAAM,CAErB,SAAS,KAAK,MAAM,gBAAkB,SACxC,QAAQ,IAAI,gEAAgE,EAC5E,SAAS,KAAK,MAAM,cAAgB,GAGpC,SAAS,KAAK,gBAAgB,oBAAoB,EAClD,SAAS,KAAK,gBAAgB,oBAAoB,EAGlD,SAAS,KAAK,UAAU,OAAO,wBAAwB,EAE3D,EAEMC,EAAc,IAAM,CACpB,SAAS,KAAK,MAAM,gBAAkB,QAAU,CAACJ,EAAa,IAChE,QAAQ,IAAI,+DAA+D,EAC3E,SAAS,KAAK,MAAM,cAAgB,GAExC,EAGMK,EAAmBC,GAAiB,CACxC,IAAMC,EAASD,EAAM,OAEnBC,GACA,CAACA,EAAO,QACN,4EACF,GAGA,WAAWJ,EAAc,GAAG,CAEhC,EAGMK,EAAeF,GAAyB,CACxCA,EAAM,MAAQ,UAChB,WAAWH,EAAc,GAAG,CAEhC,EAGMM,EAAgB,IAAM,CAC1B,WAAWL,EAAa,EAAE,CAC5B,EAGA,SAAS,iBAAiB,QAASC,EAAiB,EAAI,EACxD,SAAS,iBAAiB,UAAWG,EAAa,EAAI,EACtD,SAAS,iBAAiB,YAAaC,EAAe,EAAI,EAC1D,SAAS,iBAAiB,gBAAiBA,EAAe,EAAI,EAC9D,SAAS,iBAAiB,eAAgBA,EAAe,EAAI,EAG5C,IAAI,iBAAiB,IAAM,CAC1C,WAAWL,EAAa,CAAC,CAC3B,CAAC,EACQ,QAAQ,SAAS,KAAM,CAAE,UAAW,GAAM,QAAS,GAAM,WAAY,EAAK,CAAC,EAGpF,IAAMM,EAAa,YAAY,IAAM,CAC/B,SAAS,KAAK,MAAM,gBAAkB,QAAU,CAACV,EAAa,IAChE,QAAQ,IAAI,qDAAqD,EACjE,SAAS,KAAK,MAAM,cAAgB,GAExC,EAAG,GAAI,EAGP,kBAAWI,EAAa,GAAG,EAGpB,IAAM,CACX,cAAcM,CAAU,CAC1B,CACF,EAAG,CAAC,CAAC,CACP",
|
|
6
|
-
"names": ["React", "cleanupInstalled", "useBodyPointerEventsCleanup", "hasOpenModal", "hasDialogs", "hasRadixOverlays", "forceCleanup", "safeCleanup", "onDocumentClick", "event", "target", "onEscapeKey", "onInteraction", "intervalId"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as A,b as g,c as R,d as u,e as y}from"./chunk-BI7W34WW.js";import{a as i}from"./chunk-KMPBTEZH.js";import{a as x}from"./chunk-3XT5P2HO.js";var O={};x(O,{Content:()=>H,Header:()=>v,Item:()=>T,Root:()=>C,Trigger:()=>E});import*as o from"react";import p from"classnames";import{Accordion as m}from"radix-ui";var C=o.forwardRef((r,t)=>{let{className:e,panelBackground:c,material:a,flush:l,radius:s,color:I,...N}=i(r,A),n=N;o.useEffect(()=>{r.panelBackground!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.")},[r.panelBackground]);let P=a??c;n.type==="single"&&n.collapsible===void 0&&(n.collapsible=!0);let w=o.useCallback(d=>{if(n.type==="multiple"){let f=d.currentTarget.querySelectorAll("[data-radix-accordion-item]");d.key==="Home"?(d.preventDefault(),f[0]?.querySelector("[data-radix-accordion-trigger]")?.focus()):d.key==="End"&&(d.preventDefault(),f[f.length-1]?.querySelector("[data-radix-accordion-trigger]")?.focus())}},[n.type]);return o.createElement(m.Root,{...n,ref:t,className:p("rt-AccordionRoot",e),"data-accent-color":I,"data-panel-background":P,"data-material":P,"data-flush":l||void 0,"data-radius":s,onKeyDown:w})});C.displayName="Accordion.Root";var T=o.forwardRef((r,t)=>{let{className:e,...c}=i(r,g);return o.createElement(m.Item,{...c,ref:t,className:p("rt-AccordionItem",e)})});T.displayName="Accordion.Item";var v=o.forwardRef((r,t)=>{let{className:e,...c}=i(r,R);return o.createElement(m.Header,{...c,ref:t,className:p("rt-AccordionHeader",e)})});v.displayName="Accordion.Header";var E=o.forwardRef(({children:r,...t},e)=>{let{className:c,...a}=i(t,u),l=o.useRef(null);return o.createElement(m.Trigger,{...a,ref:s=>{l.current=s,typeof e=="function"?e(s):e&&(e.current=s)},className:p("rt-AccordionTrigger",c)},r)});E.displayName="Accordion.Trigger";var H=o.forwardRef((r,t)=>{let{className:e,children:c,...a}=i(r,y);return o.createElement(m.Content,{...a,ref:t,className:p("rt-AccordionContent",e),"aria-live":"polite"},o.createElement("div",{className:"rt-AccordionContentInner"},c))});H.displayName="Accordion.Content";export{C as a,T as b,v as c,E as d,H as e,O as f};
|
|
2
|
-
//# sourceMappingURL=chunk-KCAFSCOV.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/components/accordion.tsx"],
|
|
4
|
-
"sourcesContent": ["import * as React from 'react';\nimport classNames from 'classnames';\nimport { Accordion as AccordionPrimitive } from 'radix-ui';\n\nimport {\n accordionRootPropDefs,\n accordionItemPropDefs,\n accordionHeaderPropDefs,\n accordionTriggerPropDefs,\n accordionContentPropDefs,\n} from './accordion.props.js';\nimport { extractProps } from '../helpers/extract-props.js';\n\nimport type {\n AccordionRootOwnProps,\n AccordionItemOwnProps,\n AccordionHeaderOwnProps,\n AccordionTriggerOwnProps,\n AccordionContentOwnProps,\n} from './accordion.props.js';\nimport type { ComponentPropsWithout, RemovedProps } from '../helpers/component-props.js';\n\n// Root component\ntype AccordionRootElement = React.ElementRef<typeof AccordionPrimitive.Root>;\ninterface AccordionRootProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Root, RemovedProps>,\n AccordionRootOwnProps {}\n\nconst AccordionRoot = React.forwardRef<AccordionRootElement, AccordionRootProps>(\n (props, forwardedRef) => {\n const { className, panelBackground, material, flush, radius, color, ...extractedRadixProps } =\n extractProps(props, accordionRootPropDefs);\n\n const radixProps = extractedRadixProps as React.ComponentPropsWithoutRef<\n typeof AccordionPrimitive.Root\n >;\n\n // Show deprecation warning for panelBackground when used\n React.useEffect(() => {\n if (props.panelBackground !== undefined) {\n console.warn(\n 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.',\n );\n }\n }, [props.panelBackground]);\n\n // Material takes precedence over panelBackground\n const effectiveMaterial = material ?? panelBackground;\n\n // Ensure single accordions can collapse by default unless explicitly set\n if (radixProps.type === 'single' && radixProps.collapsible === undefined) {\n radixProps.collapsible = true;\n }\n\n // Handle Home/End key navigation for multi-item accordions\n const handleKeyDown = React.useCallback(\n (event: React.KeyboardEvent) => {\n if (radixProps.type === 'multiple') {\n const items = event.currentTarget.querySelectorAll('[data-radix-accordion-item]');\n\n if (event.key === 'Home') {\n event.preventDefault();\n const firstTrigger = items[0]?.querySelector(\n '[data-radix-accordion-trigger]',\n ) as HTMLElement;\n firstTrigger?.focus();\n } else if (event.key === 'End') {\n event.preventDefault();\n const lastTrigger = items[items.length - 1]?.querySelector(\n '[data-radix-accordion-trigger]',\n ) as HTMLElement;\n lastTrigger?.focus();\n }\n }\n },\n [radixProps.type],\n );\n\n return (\n <AccordionPrimitive.Root\n {...radixProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionRoot', className)}\n data-accent-color={color}\n data-panel-background={effectiveMaterial}\n data-material={effectiveMaterial}\n data-flush={flush || undefined}\n data-radius={radius}\n onKeyDown={handleKeyDown}\n />\n );\n },\n);\nAccordionRoot.displayName = 'Accordion.Root';\n\n// Item component\ntype AccordionItemElement = React.ElementRef<typeof AccordionPrimitive.Item>;\ninterface AccordionItemProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Item, RemovedProps>,\n AccordionItemOwnProps {}\n\nconst AccordionItem = React.forwardRef<AccordionItemElement, AccordionItemProps>(\n (props, forwardedRef) => {\n const { className, ...itemProps } = extractProps(props, accordionItemPropDefs);\n\n return (\n <AccordionPrimitive.Item\n {...itemProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionItem', className)}\n />\n );\n },\n);\nAccordionItem.displayName = 'Accordion.Item';\n\n// Header component\ntype AccordionHeaderElement = React.ElementRef<typeof AccordionPrimitive.Header>;\ninterface AccordionHeaderProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Header, RemovedProps>,\n AccordionHeaderOwnProps {}\n\nconst AccordionHeader = React.forwardRef<AccordionHeaderElement, AccordionHeaderProps>(\n (props, forwardedRef) => {\n const { className, ...headerProps } = extractProps(props, accordionHeaderPropDefs);\n\n return (\n <AccordionPrimitive.Header\n {...headerProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionHeader', className)}\n />\n );\n },\n);\nAccordionHeader.displayName = 'Accordion.Header';\n\n// Trigger component\ntype AccordionTriggerElement = React.ElementRef<typeof AccordionPrimitive.Trigger>;\ninterface AccordionTriggerProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Trigger, RemovedProps>,\n AccordionTriggerOwnProps {}\n\nconst AccordionTrigger = React.forwardRef<AccordionTriggerElement, AccordionTriggerProps>(\n ({ children, ...props }, forwardedRef) => {\n const { className, ...triggerProps } = extractProps(props, accordionTriggerPropDefs);\n\n // Radix UI handles focus management automatically\n const triggerRef = React.useRef<HTMLButtonElement>(null);\n\n return (\n <AccordionPrimitive.Trigger\n {...triggerProps}\n ref={(node) => {\n triggerRef.current = node;\n if (typeof forwardedRef === 'function') {\n forwardedRef(node);\n } else if (forwardedRef) {\n forwardedRef.current = node;\n }\n }}\n className={classNames('rt-AccordionTrigger', className)}\n >\n {children}\n </AccordionPrimitive.Trigger>\n );\n },\n);\nAccordionTrigger.displayName = 'Accordion.Trigger';\n\n// Content component\ntype AccordionContentElement = React.ElementRef<typeof AccordionPrimitive.Content>;\ninterface AccordionContentProps\n extends ComponentPropsWithout<typeof AccordionPrimitive.Content, RemovedProps>,\n AccordionContentOwnProps {}\n\nconst AccordionContent = React.forwardRef<AccordionContentElement, AccordionContentProps>(\n (props, forwardedRef) => {\n const { className, children, ...contentProps } = extractProps(props, accordionContentPropDefs);\n\n return (\n <AccordionPrimitive.Content\n {...contentProps}\n ref={forwardedRef}\n className={classNames('rt-AccordionContent', className)}\n aria-live=\"polite\"\n >\n <div className=\"rt-AccordionContentInner\">{children}</div>\n </AccordionPrimitive.Content>\n );\n },\n);\nAccordionContent.displayName = 'Accordion.Content';\n\nexport {\n AccordionRoot as Root,\n AccordionItem as Item,\n AccordionHeader as Header,\n AccordionTrigger as Trigger,\n AccordionContent as Content,\n};\n\nexport type {\n AccordionRootProps as RootProps,\n AccordionItemProps as ItemProps,\n AccordionHeaderProps as HeaderProps,\n AccordionTriggerProps as TriggerProps,\n AccordionContentProps as ContentProps,\n};\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["accordion_exports", "__export", "AccordionContent", "AccordionHeader", "AccordionItem", "AccordionRoot", "AccordionTrigger", "React", "classNames", "AccordionPrimitive", "AccordionRoot", "props", "forwardedRef", "className", "panelBackground", "material", "flush", "radius", "color", "extractedRadixProps", "extractProps", "accordionRootPropDefs", "radixProps", "effectiveMaterial", "handleKeyDown", "event", "items", "AccordionPrimitive", "classNames", "AccordionItem", "itemProps", "accordionItemPropDefs", "AccordionHeader", "headerProps", "accordionHeaderPropDefs", "AccordionTrigger", "children", "triggerProps", "accordionTriggerPropDefs", "triggerRef", "node", "AccordionContent", "contentProps", "accordionContentPropDefs"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as f}from"./chunk-E23RKOQJ.js";import{a as m,b as d}from"./chunk-ZMEXIPWM.js";import{a as o}from"./chunk-RZCX6IBE.js";import l from"classnames";function N(...r){return Object.assign({},...r)}function x(r,...y){let t,p,a={...r},u=N(...y);for(let n in u){let s=a[n],e=u[n];if(e.default!==void 0&&s===void 0&&(s=e.default),e.type==="enum"&&![e.default,...e.values].includes(s)&&!o(s)&&(s=e.default),a[n]=s,"className"in e&&e.className){delete a[n];let c="responsive"in e;if(!s||o(s)&&!c)continue;if(o(s)&&(e.default!==void 0&&s.initial===void 0&&(s.initial=e.default),e.type==="enum"&&([e.default,...e.values].includes(s.initial)||(s.initial=e.default))),e.type==="enum"){let i=d({allowArbitraryValues:!1,value:s,className:e.className,propValues:e.values,parseValue:e.parseValue});t=l(t,i);continue}if(e.type==="string"||e.type==="enum | string"){let i=e.type==="string"?[]:e.values,[P,g]=m({className:e.className,customProperties:e.customProperties,propValues:i,parseValue:e.parseValue,value:s});p=f(p,g),t=l(t,P);continue}if(e.type==="boolean"&&s){t=l(t,e.className);continue}}}return a.className=l(t,r.className),a.style=f(p,r.style),a}export{x as a};
|
|
2
|
-
//# sourceMappingURL=chunk-KMPBTEZH.js.map
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../../src/helpers/extract-props.ts"],
|
|
4
|
-
"sourcesContent": ["import classNames from 'classnames';\n\nimport { getResponsiveClassNames, getResponsiveStyles } from './get-responsive-styles.js';\nimport { isResponsiveObject } from './is-responsive-object.js';\nimport { mergeStyles } from './merge-styles.js';\n\nimport type * as React from 'react';\nimport type { PropDef } from '../props/prop-def.js';\n\ntype PropDefsWithClassName<T> = T extends Record<string, PropDef>\n ? { [K in keyof T]: T[K] extends { className: string } ? K : never }[keyof T]\n : never;\n\nfunction mergePropDefs<T extends Record<string, PropDef>[]>(...args: T): Record<string, PropDef> {\n return Object.assign({}, ...args);\n}\n\n/**\n * Takes props, checks them against prop defs that have a `className` on them,\n * adds necessary CSS classes and inline styles, and returns the props without\n * the corresponding prop defs that were used to formulate the new `className`\n * and `style` values. Also applies prop def defaults to every prop.\n */\nfunction extractProps<\n P extends { className?: string; style?: React.CSSProperties; [key: string]: any },\n T extends Record<string, PropDef>[]\n>(\n props: P,\n ...propDefs: T\n): Omit<P & { className?: string; style?: React.CSSProperties }, PropDefsWithClassName<T[number]>> {\n let className: string | undefined;\n let style: ReturnType<typeof mergeStyles>;\n const extractedProps = { ...props };\n const allPropDefs = mergePropDefs(...propDefs);\n\n for (const key in allPropDefs) {\n let value = extractedProps[key];\n const propDef = allPropDefs[key];\n\n // Apply prop def defaults\n if (propDef.default !== undefined && value === undefined) {\n value = propDef.default;\n }\n\n // Apply the default value if the value is not a valid enum value\n if (propDef.type === 'enum') {\n const values = [propDef.default, ...propDef.values];\n\n if (!values.includes(value) && !isResponsiveObject(value)) {\n value = propDef.default;\n }\n }\n\n // Apply the value with defaults\n (extractedProps as Record<string, any>)[key] = value;\n\n if ('className' in propDef && propDef.className) {\n delete extractedProps[key];\n\n const isResponsivePropDef = 'responsive' in propDef;\n // Make sure we are not threading through responsive values for non-responsive prop defs\n if (!value || (isResponsiveObject(value) && !isResponsivePropDef)) {\n continue;\n }\n\n if (isResponsiveObject(value)) {\n // Apply prop def defaults to the `initial` breakpoint\n if (propDef.default !== undefined && value.initial === undefined) {\n value.initial = propDef.default;\n }\n\n // Apply the default value to the `initial` breakpoint when it is not a valid enum value\n if (propDef.type === 'enum') {\n const values = [propDef.default, ...propDef.values];\n\n if (!values.includes(value.initial)) {\n value.initial = propDef.default;\n }\n }\n }\n\n if (propDef.type === 'enum') {\n const propClassName = getResponsiveClassNames({\n allowArbitraryValues: false,\n value,\n className: propDef.className,\n propValues: propDef.values,\n parseValue: propDef.parseValue,\n });\n\n className = classNames(className, propClassName);\n continue;\n }\n\n if (propDef.type === 'string' || propDef.type === 'enum | string') {\n const propDefValues = propDef.type === 'string' ? [] : propDef.values;\n\n const [propClassNames, propCustomProperties] = getResponsiveStyles({\n className: propDef.className,\n customProperties: propDef.customProperties,\n propValues: propDefValues,\n parseValue: propDef.parseValue,\n value,\n });\n\n style = mergeStyles(style, propCustomProperties);\n className = classNames(className, propClassNames);\n continue;\n }\n\n if (propDef.type === 'boolean' && value) {\n // TODO handle responsive boolean props\n className = classNames(className, propDef.className);\n continue;\n }\n }\n }\n\n extractedProps.className = classNames(className, props.className);\n extractedProps.style = mergeStyles(style, props.style);\n return extractedProps;\n}\n\nexport { extractProps };\n"],
|
|
5
|
-
"mappings": "+HAAA,OAAOA,MAAgB,aAavB,SAASC,KAAsDC,EAAkC,CAC/F,OAAO,OAAO,OAAO,CAAC,EAAG,GAAGA,CAAI,CAClC,CAQA,SAASC,EAIPC,KACGC,EAC8F,CACjG,IAAIC,EACAC,EACEC,EAAiB,CAAE,GAAGJ,CAAM,EAC5BK,EAAcR,EAAc,GAAGI,CAAQ,EAE7C,QAAWK,KAAOD,EAAa,CAC7B,IAAIE,EAAQH,EAAeE,CAAG,EACxBE,EAAUH,EAAYC,CAAG,EAmB/B,GAhBIE,EAAQ,UAAY,QAAaD,IAAU,SAC7CA,EAAQC,EAAQ,SAIdA,EAAQ,OAAS,QAGf,CAFW,CAACA,EAAQ,QAAS,GAAGA,EAAQ,MAAM,EAEtC,SAASD,CAAK,GAAK,CAACE,EAAmBF,CAAK,IACtDA,EAAQC,EAAQ,SAKnBJ,EAAuCE,CAAG,EAAIC,EAE3C,cAAeC,GAAWA,EAAQ,UAAW,CAC/C,OAAOJ,EAAeE,CAAG,EAEzB,IAAMI,EAAsB,eAAgBF,EAE5C,GAAI,CAACD,GAAUE,EAAmBF,CAAK,GAAK,CAACG,EAC3C,SAmBF,GAhBID,EAAmBF,CAAK,IAEtBC,EAAQ,UAAY,QAAaD,EAAM,UAAY,SACrDA,EAAM,QAAUC,EAAQ,SAItBA,EAAQ,OAAS,SACJ,CAACA,EAAQ,QAAS,GAAGA,EAAQ,MAAM,EAEtC,SAASD,EAAM,OAAO,IAChCA,EAAM,QAAUC,EAAQ,WAK1BA,EAAQ,OAAS,OAAQ,CAC3B,IAAMG,EAAgBC,EAAwB,CAC5C,qBAAsB,GACtB,MAAAL,EACA,UAAWC,EAAQ,UACnB,WAAYA,EAAQ,OACpB,WAAYA,EAAQ,UACtB,CAAC,EAEDN,EAAYW,EAAWX,EAAWS,CAAa,EAC/C,QACF,CAEA,GAAIH,EAAQ,OAAS,UAAYA,EAAQ,OAAS,gBAAiB,CACjE,IAAMM,EAAgBN,EAAQ,OAAS,SAAW,CAAC,EAAIA,EAAQ,OAEzD,CAACO,EAAgBC,CAAoB,EAAIC,EAAoB,CACjE,UAAWT,EAAQ,UACnB,iBAAkBA,EAAQ,iBAC1B,WAAYM,EACZ,WAAYN,EAAQ,WACpB,MAAAD,CACF,CAAC,EAEDJ,EAAQe,EAAYf,EAAOa,CAAoB,EAC/Cd,EAAYW,EAAWX,EAAWa,CAAc,EAChD,QACF,CAEA,GAAIP,EAAQ,OAAS,WAAaD,EAAO,CAEvCL,EAAYW,EAAWX,EAAWM,EAAQ,SAAS,EACnD,QACF,CACF,CACF,CAEA,OAAAJ,EAAe,UAAYS,EAAWX,EAAWF,EAAM,SAAS,EAChEI,EAAe,MAAQc,EAAYf,EAAOH,EAAM,KAAK,EAC9CI,CACT",
|
|
6
|
-
"names": ["classNames", "mergePropDefs", "args", "extractProps", "props", "propDefs", "className", "style", "extractedProps", "allPropDefs", "key", "value", "propDef", "isResponsiveObject", "isResponsivePropDef", "propClassName", "getResponsiveClassNames", "classNames", "propDefValues", "propClassNames", "propCustomProperties", "getResponsiveStyles", "mergeStyles"]
|
|
7
|
-
}
|
|
@@ -1,2 +0,0 @@
|
|
|
1
|
-
import{a as M}from"./chunk-F22ZRNWL.js";import{a}from"./chunk-T27QHMW7.js";import*as e from"react";import N from"classnames";import{Direction as O,Slot as V,Tooltip as W}from"radix-ui";var n=()=>{},H={appearance:a.appearance.default,accentColor:a.accentColor.default,grayColor:a.grayColor.default,resolvedGrayColor:a.grayColor.default,material:a.material.default,panelBackground:a.panelBackground.default,radius:a.radius.default,scaling:a.scaling.default,fontFamily:a.fontFamily.default,onAppearanceChange:n,onAccentColorChange:n,onGrayColorChange:n,onMaterialChange:n,onPanelBackgroundChange:n,onRadiusChange:n,onScalingChange:n,onFontFamilyChange:n},b=e.createContext(void 0);function K(){return e.useContext(b)??H}var j=e.forwardRef((o,u)=>e.useContext(b)===void 0?e.createElement(W.Provider,{delayDuration:200},e.createElement(O.Provider,{dir:"ltr"},e.createElement(w,{...o,ref:u}))):e.createElement(D,{...o,ref:u}));j.displayName="Theme";var w=e.forwardRef((o,u)=>{let{appearance:t=a.appearance.default,accentColor:m=a.accentColor.default,grayColor:r=a.grayColor.default,material:g=a.material.default,panelBackground:i=a.panelBackground.default,radius:l=a.radius.default,scaling:c=a.scaling.default,fontFamily:s=a.fontFamily.default,hasBackground:C=a.hasBackground.default,...y}=o;e.useEffect(()=>{o.panelBackground!==void 0&&console.warn("Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.")},[o.panelBackground]);let[T,d]=e.useState(t);e.useEffect(()=>d(t),[t]);let[B,P]=e.useState(m);e.useEffect(()=>P(m),[m]);let[F,R]=e.useState(r);e.useEffect(()=>R(r),[r]);let p=g!==a.material.default?g:i,[f,v]=e.useState(p);e.useEffect(()=>v(p),[p]);let[x,k]=e.useState(i);e.useEffect(()=>k(f),[f]);let[E,h]=e.useState(l);e.useEffect(()=>h(l),[l]);let[G,S]=e.useState(c);e.useEffect(()=>S(c),[c]);let[I,A]=e.useState(s);return e.useEffect(()=>A(s),[s]),e.createElement(D,{...y,ref:u,isRoot:!0,hasBackground:C,appearance:T,accentColor:B,grayColor:F,material:f,panelBackground:x,radius:E,scaling:G,fontFamily:I,onAppearanceChange:d,onAccentColorChange:P,onGrayColorChange:R,onMaterialChange:v,onPanelBackgroundChange:k,onRadiusChange:h,onScalingChange:S,onFontFamilyChange:A})});w.displayName="ThemeRoot";function L(){if(typeof navigator>"u")return;let o=navigator.userAgent;if(o.includes("Win"))return"windows";if(o.includes("Mac"))return"macos";if(o.includes("Linux"))return"linux"}var D=e.forwardRef((o,u)=>{let t=e.useContext(b),{asChild:m,isRoot:r,hasBackground:g,appearance:i=o.appearance??t?.appearance??a.appearance.default,accentColor:l=o.accentColor??t?.accentColor??a.accentColor.default,grayColor:c=o.grayColor??t?.resolvedGrayColor??a.grayColor.default,material:s=o.material??t?.material??a.material.default,panelBackground:C=o.panelBackground??t?.panelBackground??a.panelBackground.default,radius:y=o.radius??t?.radius??a.radius.default,scaling:T=o.scaling??t?.scaling??a.scaling.default,fontFamily:d=o.fontFamily??t?.fontFamily??a.fontFamily.default,onAppearanceChange:B=n,onAccentColorChange:P=n,onGrayColorChange:F=n,onMaterialChange:R=n,onPanelBackgroundChange:p=n,onRadiusChange:f=n,onScalingChange:v=n,onFontFamilyChange:x=n,...k}=o,E=m?V.Root:"div",h=c==="auto"?M(l):c,G=o.appearance==="light"||o.appearance==="dark",S=g===void 0?r||G:g,[I,A]=e.useState(void 0);return e.useEffect(()=>{r&&A(L())},[r]),e.createElement(b.Provider,{value:e.useMemo(()=>({appearance:i,accentColor:l,grayColor:c,resolvedGrayColor:h,material:s,panelBackground:C,radius:y,scaling:T,fontFamily:d,onAppearanceChange:B,onAccentColorChange:P,onGrayColorChange:F,onMaterialChange:R,onPanelBackgroundChange:p,onRadiusChange:f,onScalingChange:v,onFontFamilyChange:x}),[i,l,c,h,s,C,y,T,d,B,P,F,R,p,f,v,x])},e.createElement(E,{"data-is-root-theme":r?"true":"false","data-accent-color":l,"data-gray-color":h,"data-has-background":S?"true":"false","data-material":s,"data-panel-background":C,"data-radius":y,"data-scaling":T,"data-font-family":d,"data-os":r?I:void 0,ref:u,...k,className:N("radix-themes",{light:i==="light",dark:i==="dark"},k.className)}))});D.displayName="ThemeImpl";export{b as a,K as b,j as c};
|
|
2
|
-
//# sourceMappingURL=chunk-LN5SP46K.js.map
|