@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
|
@@ -1,18 +1,41 @@
|
|
|
1
1
|
import classNames from 'classnames';
|
|
2
2
|
|
|
3
|
+
import { getCompiledPropDefs } from './compile-prop-defs.js';
|
|
3
4
|
import { getResponsiveClassNames, getResponsiveStyles } from './get-responsive-styles.js';
|
|
4
5
|
import { isResponsiveObject } from './is-responsive-object.js';
|
|
5
6
|
import { mergeStyles } from './merge-styles.js';
|
|
6
7
|
|
|
8
|
+
import type { CompiledPropDef } from './compile-prop-defs.js';
|
|
7
9
|
import type * as React from 'react';
|
|
8
10
|
import type { PropDef } from '../props/prop-def.js';
|
|
9
11
|
|
|
10
|
-
type PropDefsWithClassName<T> = T extends Record<string, PropDef>
|
|
11
|
-
? { [K in keyof T]: T[K] extends { className: string } ? K : never }[keyof T]
|
|
12
|
-
: never;
|
|
12
|
+
type PropDefsWithClassName<T> = T extends Record<string, PropDef> ? { [K in keyof T]: T[K] extends { className: string } ? K : never }[keyof T] : never;
|
|
13
13
|
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
type ResponsiveValue = Record<string, string | undefined>;
|
|
15
|
+
|
|
16
|
+
/**
|
|
17
|
+
* Fills in the `initial` breakpoint of a responsive value from the prop def's
|
|
18
|
+
* default, and coerces an invalid `initial` enum value back to that default.
|
|
19
|
+
*
|
|
20
|
+
* Returns the value untouched when nothing needs changing, and a copy otherwise
|
|
21
|
+
* — callers routinely hoist responsive objects to module scope, so mutating the
|
|
22
|
+
* caller's object would corrupt it for every later render.
|
|
23
|
+
*/
|
|
24
|
+
function normalizeResponsiveValue(value: ResponsiveValue, propDef: CompiledPropDef) {
|
|
25
|
+
let initial = value.initial;
|
|
26
|
+
let changed = false;
|
|
27
|
+
|
|
28
|
+
if (propDef.hasDefault && initial === undefined) {
|
|
29
|
+
initial = propDef.default as string | undefined;
|
|
30
|
+
changed = true;
|
|
31
|
+
}
|
|
32
|
+
|
|
33
|
+
if (propDef.enumValueSet !== undefined && !propDef.enumValueSet.has(initial)) {
|
|
34
|
+
initial = propDef.default as string | undefined;
|
|
35
|
+
changed = true;
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
return changed ? { ...value, initial } : value;
|
|
16
39
|
}
|
|
17
40
|
|
|
18
41
|
/**
|
|
@@ -21,104 +44,102 @@ function mergePropDefs<T extends Record<string, PropDef>[]>(...args: T): Record<
|
|
|
21
44
|
* the corresponding prop defs that were used to formulate the new `className`
|
|
22
45
|
* and `style` values. Also applies prop def defaults to every prop.
|
|
23
46
|
*/
|
|
24
|
-
function extractProps<
|
|
25
|
-
P extends { className?: string; style?: React.CSSProperties; [key: string]: any },
|
|
26
|
-
T extends Record<string, PropDef>[]
|
|
27
|
-
>(
|
|
47
|
+
function extractProps<P extends { className?: string; style?: React.CSSProperties; [key: string]: any }, T extends Record<string, PropDef>[]>(
|
|
28
48
|
props: P,
|
|
29
49
|
...propDefs: T
|
|
30
50
|
): Omit<P & { className?: string; style?: React.CSSProperties }, PropDefsWithClassName<T[number]>> {
|
|
31
|
-
|
|
51
|
+
const { styling, passthrough, stylingKeys } = getCompiledPropDefs(propDefs);
|
|
52
|
+
|
|
53
|
+
// Copy the props that survive to the element rather than spreading and then
|
|
54
|
+
// deleting the styling keys. Deleting off a spread demotes the object to
|
|
55
|
+
// dictionary mode in V8, and this object is on the render path of every
|
|
56
|
+
// component in the library.
|
|
57
|
+
const extractedProps: Record<string, any> = {};
|
|
58
|
+
for (const key in props) {
|
|
59
|
+
if (stylingKeys.has(key)) continue;
|
|
60
|
+
extractedProps[key] = props[key];
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
for (let i = 0; i < passthrough.length; i++) {
|
|
64
|
+
const propDef = passthrough[i];
|
|
65
|
+
const value = extractedProps[propDef.key];
|
|
66
|
+
|
|
67
|
+
if (value === undefined) {
|
|
68
|
+
if (propDef.hasDefault) extractedProps[propDef.key] = propDef.default;
|
|
69
|
+
continue;
|
|
70
|
+
}
|
|
71
|
+
|
|
72
|
+
// Fall back to the default when the value is not a valid enum value
|
|
73
|
+
if (propDef.enumValueSet !== undefined && !propDef.enumValueSet.has(value) && !isResponsiveObject(value)) {
|
|
74
|
+
extractedProps[propDef.key] = propDef.default;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
32
78
|
let style: ReturnType<typeof mergeStyles>;
|
|
33
|
-
const
|
|
34
|
-
const allPropDefs = mergePropDefs(...propDefs);
|
|
79
|
+
const classes: string[] = [];
|
|
35
80
|
|
|
36
|
-
for (
|
|
37
|
-
|
|
38
|
-
|
|
81
|
+
for (let i = 0; i < styling.length; i++) {
|
|
82
|
+
const propDef = styling[i];
|
|
83
|
+
let value = props[propDef.key];
|
|
39
84
|
|
|
40
85
|
// Apply prop def defaults
|
|
41
|
-
if (
|
|
86
|
+
if (value === undefined && propDef.hasDefault) {
|
|
42
87
|
value = propDef.default;
|
|
43
88
|
}
|
|
44
89
|
|
|
45
90
|
// Apply the default value if the value is not a valid enum value
|
|
46
|
-
if (propDef.
|
|
47
|
-
|
|
91
|
+
if (propDef.enumValueSet !== undefined && !propDef.enumValueSet.has(value) && !isResponsiveObject(value)) {
|
|
92
|
+
value = propDef.default;
|
|
93
|
+
}
|
|
48
94
|
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
95
|
+
if (!value) continue;
|
|
96
|
+
|
|
97
|
+
if (isResponsiveObject(value)) {
|
|
98
|
+
// Make sure we are not threading through responsive values for non-responsive prop defs
|
|
99
|
+
if (!propDef.responsive) continue;
|
|
100
|
+
value = normalizeResponsiveValue(value, propDef);
|
|
52
101
|
}
|
|
53
102
|
|
|
54
|
-
|
|
55
|
-
|
|
103
|
+
if (propDef.type === 'enum') {
|
|
104
|
+
const propClassName = getResponsiveClassNames({
|
|
105
|
+
allowArbitraryValues: false,
|
|
106
|
+
value,
|
|
107
|
+
className: propDef.className!,
|
|
108
|
+
propValues: propDef.values,
|
|
109
|
+
propValueSet: propDef.valueSet,
|
|
110
|
+
parseValue: propDef.parseValue,
|
|
111
|
+
});
|
|
112
|
+
|
|
113
|
+
if (propClassName) classes.push(propClassName);
|
|
114
|
+
continue;
|
|
115
|
+
}
|
|
56
116
|
|
|
57
|
-
if ('
|
|
58
|
-
|
|
117
|
+
if (propDef.type === 'string' || propDef.type === 'enum | string') {
|
|
118
|
+
const [propClassNames, propCustomProperties] = getResponsiveStyles({
|
|
119
|
+
className: propDef.className!,
|
|
120
|
+
customProperties: propDef.customProperties!,
|
|
121
|
+
// `string` prop defs have no enum values, so every value is arbitrary
|
|
122
|
+
propValues: propDef.type === 'string' ? [] : propDef.values,
|
|
123
|
+
propValueSet: propDef.type === 'string' ? undefined : propDef.valueSet,
|
|
124
|
+
parseValue: propDef.parseValue,
|
|
125
|
+
value,
|
|
126
|
+
});
|
|
127
|
+
|
|
128
|
+
if (propCustomProperties) style = mergeStyles(style, propCustomProperties);
|
|
129
|
+
if (propClassNames) classes.push(propClassNames);
|
|
130
|
+
continue;
|
|
131
|
+
}
|
|
59
132
|
|
|
60
|
-
|
|
61
|
-
//
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
}
|
|
65
|
-
|
|
66
|
-
if (isResponsiveObject(value)) {
|
|
67
|
-
// Apply prop def defaults to the `initial` breakpoint
|
|
68
|
-
if (propDef.default !== undefined && value.initial === undefined) {
|
|
69
|
-
value.initial = propDef.default;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
// Apply the default value to the `initial` breakpoint when it is not a valid enum value
|
|
73
|
-
if (propDef.type === 'enum') {
|
|
74
|
-
const values = [propDef.default, ...propDef.values];
|
|
75
|
-
|
|
76
|
-
if (!values.includes(value.initial)) {
|
|
77
|
-
value.initial = propDef.default;
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
if (propDef.type === 'enum') {
|
|
83
|
-
const propClassName = getResponsiveClassNames({
|
|
84
|
-
allowArbitraryValues: false,
|
|
85
|
-
value,
|
|
86
|
-
className: propDef.className,
|
|
87
|
-
propValues: propDef.values,
|
|
88
|
-
parseValue: propDef.parseValue,
|
|
89
|
-
});
|
|
90
|
-
|
|
91
|
-
className = classNames(className, propClassName);
|
|
92
|
-
continue;
|
|
93
|
-
}
|
|
94
|
-
|
|
95
|
-
if (propDef.type === 'string' || propDef.type === 'enum | string') {
|
|
96
|
-
const propDefValues = propDef.type === 'string' ? [] : propDef.values;
|
|
97
|
-
|
|
98
|
-
const [propClassNames, propCustomProperties] = getResponsiveStyles({
|
|
99
|
-
className: propDef.className,
|
|
100
|
-
customProperties: propDef.customProperties,
|
|
101
|
-
propValues: propDefValues,
|
|
102
|
-
parseValue: propDef.parseValue,
|
|
103
|
-
value,
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
style = mergeStyles(style, propCustomProperties);
|
|
107
|
-
className = classNames(className, propClassNames);
|
|
108
|
-
continue;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
if (propDef.type === 'boolean' && value) {
|
|
112
|
-
// TODO handle responsive boolean props
|
|
113
|
-
className = classNames(className, propDef.className);
|
|
114
|
-
continue;
|
|
115
|
-
}
|
|
133
|
+
if (propDef.type === 'boolean') {
|
|
134
|
+
// TODO handle responsive boolean props
|
|
135
|
+
classes.push(propDef.className!);
|
|
136
|
+
continue;
|
|
116
137
|
}
|
|
117
138
|
}
|
|
118
139
|
|
|
119
|
-
extractedProps.className = classNames(
|
|
140
|
+
extractedProps.className = classNames(classes.length > 0 ? classes.join(' ') : undefined, props.className);
|
|
120
141
|
extractedProps.style = mergeStyles(style, props.style);
|
|
121
|
-
return extractedProps
|
|
142
|
+
return extractedProps as ReturnType<typeof extractProps<P, T>>;
|
|
122
143
|
}
|
|
123
144
|
|
|
124
145
|
export { extractProps };
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
import classNames from 'classnames';
|
|
2
|
-
|
|
3
1
|
import { getResponsiveStyles } from './get-responsive-styles.js';
|
|
4
2
|
import { mergeStyles } from './merge-styles.js';
|
|
5
3
|
import { marginPropDefs } from '../props/margin.props.js';
|
|
@@ -7,75 +5,44 @@ import { marginPropDefs } from '../props/margin.props.js';
|
|
|
7
5
|
import type { MarginProps } from '../props/margin.props.js';
|
|
8
6
|
|
|
9
7
|
const marginValues = marginPropDefs.m.values;
|
|
8
|
+
const marginValueSet: ReadonlySet<string> = new Set(marginValues);
|
|
9
|
+
|
|
10
|
+
// Static table so the common case — a component with no margin props at all —
|
|
11
|
+
// is seven property reads and nothing else.
|
|
12
|
+
const MARGIN_PROPS: ReadonlyArray<{
|
|
13
|
+
key: keyof MarginProps;
|
|
14
|
+
className: string;
|
|
15
|
+
customProperties: `--${string}`[];
|
|
16
|
+
}> = [
|
|
17
|
+
{ key: 'm', className: 'rt-r-m', customProperties: ['--margin'] },
|
|
18
|
+
{ key: 'mx', className: 'rt-r-mx', customProperties: ['--margin-left', '--margin-right'] },
|
|
19
|
+
{ key: 'my', className: 'rt-r-my', customProperties: ['--margin-top', '--margin-bottom'] },
|
|
20
|
+
{ key: 'mt', className: 'rt-r-mt', customProperties: ['--margin-top'] },
|
|
21
|
+
{ key: 'mr', className: 'rt-r-mr', customProperties: ['--margin-right'] },
|
|
22
|
+
{ key: 'mb', className: 'rt-r-mb', customProperties: ['--margin-bottom'] },
|
|
23
|
+
{ key: 'ml', className: 'rt-r-ml', customProperties: ['--margin-left'] },
|
|
24
|
+
];
|
|
10
25
|
|
|
11
26
|
export function getMarginStyles(props: MarginProps) {
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
const [mtClassNames, mtCustomProperties] = getResponsiveStyles({
|
|
34
|
-
className: 'rt-r-mt',
|
|
35
|
-
customProperties: ['--margin-top'],
|
|
36
|
-
propValues: marginValues,
|
|
37
|
-
value: props.mt,
|
|
38
|
-
});
|
|
39
|
-
|
|
40
|
-
const [mrClassNames, mrCustomProperties] = getResponsiveStyles({
|
|
41
|
-
className: 'rt-r-mr',
|
|
42
|
-
customProperties: ['--margin-right'],
|
|
43
|
-
propValues: marginValues,
|
|
44
|
-
value: props.mr,
|
|
45
|
-
});
|
|
46
|
-
|
|
47
|
-
const [mbClassNames, mbCustomProperties] = getResponsiveStyles({
|
|
48
|
-
className: 'rt-r-mb',
|
|
49
|
-
customProperties: ['--margin-bottom'],
|
|
50
|
-
propValues: marginValues,
|
|
51
|
-
value: props.mb,
|
|
52
|
-
});
|
|
53
|
-
|
|
54
|
-
const [mlClassNames, mlCustomProperties] = getResponsiveStyles({
|
|
55
|
-
className: 'rt-r-ml',
|
|
56
|
-
customProperties: ['--margin-left'],
|
|
57
|
-
propValues: marginValues,
|
|
58
|
-
value: props.ml,
|
|
59
|
-
});
|
|
60
|
-
|
|
61
|
-
return [
|
|
62
|
-
classNames(
|
|
63
|
-
mClassNames,
|
|
64
|
-
mxClassNames,
|
|
65
|
-
myClassNames,
|
|
66
|
-
mtClassNames,
|
|
67
|
-
mrClassNames,
|
|
68
|
-
mbClassNames,
|
|
69
|
-
mlClassNames
|
|
70
|
-
),
|
|
71
|
-
mergeStyles(
|
|
72
|
-
mCustomProperties,
|
|
73
|
-
mxCustomProperties,
|
|
74
|
-
myCustomProperties,
|
|
75
|
-
mtCustomProperties,
|
|
76
|
-
mrCustomProperties,
|
|
77
|
-
mbCustomProperties,
|
|
78
|
-
mlCustomProperties
|
|
79
|
-
),
|
|
80
|
-
] as const;
|
|
27
|
+
let classes: string[] | undefined;
|
|
28
|
+
let style: ReturnType<typeof mergeStyles>;
|
|
29
|
+
|
|
30
|
+
for (let i = 0; i < MARGIN_PROPS.length; i++) {
|
|
31
|
+
const { key, className, customProperties } = MARGIN_PROPS[i];
|
|
32
|
+
const value = props[key];
|
|
33
|
+
if (value === undefined) continue;
|
|
34
|
+
|
|
35
|
+
const [propClassNames, propCustomProperties] = getResponsiveStyles({
|
|
36
|
+
className,
|
|
37
|
+
customProperties,
|
|
38
|
+
propValues: marginValues,
|
|
39
|
+
propValueSet: marginValueSet,
|
|
40
|
+
value,
|
|
41
|
+
});
|
|
42
|
+
|
|
43
|
+
if (propClassNames) (classes ??= []).push(propClassNames);
|
|
44
|
+
if (propCustomProperties) style = mergeStyles(style, propCustomProperties);
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
return [classes !== undefined ? classes.join(' ') : '', style] as const;
|
|
81
48
|
}
|
|
@@ -4,11 +4,21 @@ import { isResponsiveObject } from './is-responsive-object.js';
|
|
|
4
4
|
|
|
5
5
|
import type { Responsive, Union } from '../props/prop-def.js';
|
|
6
6
|
|
|
7
|
+
/**
|
|
8
|
+
* Membership test against a prop def's enum values. Callers that already hold a
|
|
9
|
+
* compiled prop def pass `propValueSet` for an O(1) lookup; the handful of call
|
|
10
|
+
* sites that build options inline fall back to scanning the array.
|
|
11
|
+
*/
|
|
12
|
+
function includesValue(propValues: string[] | readonly string[], propValueSet: ReadonlySet<string> | undefined, value: string): boolean {
|
|
13
|
+
return propValueSet !== undefined ? propValueSet.has(value) : propValues.includes(value);
|
|
14
|
+
}
|
|
15
|
+
|
|
7
16
|
interface GetResponsiveStylesOptions {
|
|
8
17
|
className: string;
|
|
9
18
|
customProperties: `--${string}`[];
|
|
10
19
|
value: Responsive<Union> | Responsive<string> | undefined;
|
|
11
20
|
propValues: string[] | readonly string[];
|
|
21
|
+
propValueSet?: ReadonlySet<string>;
|
|
12
22
|
parseValue?: (value: string) => string | undefined;
|
|
13
23
|
}
|
|
14
24
|
|
|
@@ -28,28 +38,25 @@ interface GetResponsiveClassNamesOptions {
|
|
|
28
38
|
className: string;
|
|
29
39
|
value: Responsive<Union> | Responsive<string> | undefined;
|
|
30
40
|
propValues: string[] | readonly string[];
|
|
41
|
+
propValueSet?: ReadonlySet<string>;
|
|
31
42
|
parseValue?: (value: string) => string | undefined;
|
|
32
43
|
}
|
|
33
44
|
|
|
34
|
-
function getResponsiveClassNames({
|
|
35
|
-
allowArbitraryValues,
|
|
36
|
-
value,
|
|
37
|
-
className,
|
|
38
|
-
propValues,
|
|
39
|
-
parseValue = (value) => value,
|
|
40
|
-
}: GetResponsiveClassNamesOptions): string | undefined {
|
|
41
|
-
const classNames: string[] = [];
|
|
42
|
-
|
|
45
|
+
function getResponsiveClassNames({ allowArbitraryValues, value, className, propValues, propValueSet, parseValue = (value) => value }: GetResponsiveClassNamesOptions): string | undefined {
|
|
43
46
|
if (!value) {
|
|
44
47
|
return undefined;
|
|
45
48
|
}
|
|
46
49
|
|
|
47
|
-
if (typeof value === 'string'
|
|
48
|
-
|
|
50
|
+
if (typeof value === 'string') {
|
|
51
|
+
if (includesValue(propValues, propValueSet, value)) {
|
|
52
|
+
return getBaseClassName(className, value, parseValue);
|
|
53
|
+
}
|
|
54
|
+
return allowArbitraryValues ? className : undefined;
|
|
49
55
|
}
|
|
50
56
|
|
|
51
57
|
if (isResponsiveObject(value)) {
|
|
52
58
|
const object = value;
|
|
59
|
+
const classNames: string[] = [];
|
|
53
60
|
|
|
54
61
|
for (const bp in object) {
|
|
55
62
|
// Make sure we are not iterating over keys that aren't breakpoints
|
|
@@ -60,7 +67,7 @@ function getResponsiveClassNames({
|
|
|
60
67
|
const value = object[bp];
|
|
61
68
|
|
|
62
69
|
if (value !== undefined) {
|
|
63
|
-
if (propValues
|
|
70
|
+
if (includesValue(propValues, propValueSet, value)) {
|
|
64
71
|
const baseClassName = getBaseClassName(className, value, parseValue);
|
|
65
72
|
const bpClassName = bp === 'initial' ? baseClassName : `${bp}:${baseClassName}`;
|
|
66
73
|
classNames.push(bpClassName);
|
|
@@ -71,7 +78,7 @@ function getResponsiveClassNames({
|
|
|
71
78
|
}
|
|
72
79
|
}
|
|
73
80
|
|
|
74
|
-
return classNames.join(' ');
|
|
81
|
+
return classNames.length > 0 ? classNames.join(' ') : '';
|
|
75
82
|
}
|
|
76
83
|
|
|
77
84
|
if (allowArbitraryValues) {
|
|
@@ -79,11 +86,7 @@ function getResponsiveClassNames({
|
|
|
79
86
|
}
|
|
80
87
|
}
|
|
81
88
|
|
|
82
|
-
function getBaseClassName(
|
|
83
|
-
className: string,
|
|
84
|
-
value: string,
|
|
85
|
-
parseValue: (value: string) => string | undefined
|
|
86
|
-
): string {
|
|
89
|
+
function getBaseClassName(className: string, value: string, parseValue: (value: string) => string | undefined): string {
|
|
87
90
|
const delimiter = className ? '-' : '';
|
|
88
91
|
const matchedValue = parseValue(value);
|
|
89
92
|
const isNegative = matchedValue?.startsWith('-');
|
|
@@ -96,24 +99,25 @@ interface GetResponsiveCustomPropertiesOptions {
|
|
|
96
99
|
customProperties: `--${string}`[];
|
|
97
100
|
value: Responsive<Union> | Responsive<string> | undefined;
|
|
98
101
|
propValues: string[] | readonly string[];
|
|
102
|
+
propValueSet?: ReadonlySet<string>;
|
|
99
103
|
parseValue?: (value: string) => string | undefined;
|
|
100
104
|
}
|
|
101
105
|
|
|
102
|
-
function getResponsiveCustomProperties({
|
|
103
|
-
customProperties,
|
|
104
|
-
value,
|
|
105
|
-
propValues,
|
|
106
|
-
parseValue = (value) => value,
|
|
107
|
-
}: GetResponsiveCustomPropertiesOptions) {
|
|
108
|
-
let styles: Record<string, string | undefined> = {};
|
|
109
|
-
|
|
106
|
+
function getResponsiveCustomProperties({ customProperties, value, propValues, propValueSet, parseValue = (value) => value }: GetResponsiveCustomPropertiesOptions) {
|
|
110
107
|
// Don't generate custom properties if the value is not arbitrary
|
|
111
|
-
if (!value || (typeof value === 'string' && propValues
|
|
108
|
+
if (!value || (typeof value === 'string' && includesValue(propValues, propValueSet, value))) {
|
|
112
109
|
return undefined;
|
|
113
110
|
}
|
|
114
111
|
|
|
112
|
+
let styles: Record<string, string | undefined> | undefined;
|
|
113
|
+
|
|
115
114
|
if (typeof value === 'string') {
|
|
116
|
-
|
|
115
|
+
const parsed = parseValue(value);
|
|
116
|
+
styles = {};
|
|
117
|
+
for (const customProperty of customProperties) {
|
|
118
|
+
styles[customProperty] = parsed;
|
|
119
|
+
}
|
|
120
|
+
return styles;
|
|
117
121
|
}
|
|
118
122
|
|
|
119
123
|
if (isResponsiveObject(value)) {
|
|
@@ -128,25 +132,20 @@ function getResponsiveCustomProperties({
|
|
|
128
132
|
const value = object[bp];
|
|
129
133
|
|
|
130
134
|
// Don't generate a custom property if the value is not arbitrary
|
|
131
|
-
if (propValues
|
|
135
|
+
if (value === undefined || includesValue(propValues, propValueSet, value)) {
|
|
132
136
|
continue;
|
|
133
137
|
}
|
|
134
138
|
|
|
139
|
+
const parsed = parseValue(value);
|
|
140
|
+
styles ??= {};
|
|
135
141
|
for (const customProperty of customProperties) {
|
|
136
142
|
const bpProperty = bp === 'initial' ? customProperty : `${customProperty}-${bp}`;
|
|
137
|
-
styles[bpProperty] =
|
|
143
|
+
styles[bpProperty] = parsed;
|
|
138
144
|
}
|
|
139
145
|
}
|
|
140
146
|
}
|
|
141
147
|
|
|
142
|
-
|
|
143
|
-
const value = styles[key];
|
|
144
|
-
if (value !== undefined) {
|
|
145
|
-
styles[key] = parseValue(value);
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
|
|
149
|
-
return styles;
|
|
148
|
+
return styles ?? {};
|
|
150
149
|
}
|
|
151
150
|
|
|
152
151
|
export { getResponsiveStyles, getResponsiveCustomProperties, getResponsiveClassNames };
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
|
|
3
|
+
const PANEL_BACKGROUND_MESSAGE = 'Warning: The `panelBackground` prop is deprecated and will be removed in a future version. Use `material` prop instead.';
|
|
4
|
+
|
|
5
|
+
const warned = new Set<string>();
|
|
6
|
+
|
|
7
|
+
function warnOnce(message: string) {
|
|
8
|
+
if (warned.has(message)) return;
|
|
9
|
+
warned.add(message);
|
|
10
|
+
console.warn(message);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
/**
|
|
14
|
+
* Warns, in development only, that `panelBackground` is deprecated.
|
|
15
|
+
*
|
|
16
|
+
* The `process.env.NODE_ENV` check is a compile-time constant, so a production
|
|
17
|
+
* bundle minifies the effect body away to an empty function instead of reading
|
|
18
|
+
* props and formatting a message per mounted component. The message is also
|
|
19
|
+
* logged once per session rather than once per component instance.
|
|
20
|
+
*/
|
|
21
|
+
export function useDeprecatedPanelBackgroundWarning(panelBackground: unknown) {
|
|
22
|
+
React.useEffect(() => {
|
|
23
|
+
if (process.env.NODE_ENV === 'production') return;
|
|
24
|
+
if (panelBackground !== undefined) warnOnce(PANEL_BACKGROUND_MESSAGE);
|
|
25
|
+
}, [panelBackground]);
|
|
26
|
+
}
|
|
@@ -16,6 +16,20 @@ export function useBodyPointerEventsCleanup() {
|
|
|
16
16
|
|
|
17
17
|
cleanupInstalled = true;
|
|
18
18
|
|
|
19
|
+
// Deferred cleanups are tracked so unmount can cancel the ones still
|
|
20
|
+
// queued. A timer that outlives the document reaches for `document.body`
|
|
21
|
+
// after it is gone; under jsdom that surfaces as an unhandled
|
|
22
|
+
// ReferenceError attributed to whichever test happened to be running.
|
|
23
|
+
const pending = new Set<ReturnType<typeof setTimeout>>();
|
|
24
|
+
|
|
25
|
+
const defer = (fn: () => void, delay: number) => {
|
|
26
|
+
const id = setTimeout(() => {
|
|
27
|
+
pending.delete(id);
|
|
28
|
+
fn();
|
|
29
|
+
}, delay);
|
|
30
|
+
pending.add(id);
|
|
31
|
+
};
|
|
32
|
+
|
|
19
33
|
const hasOpenModal = (): boolean => {
|
|
20
34
|
// Check for open dialogs/alertdialogs
|
|
21
35
|
const hasDialogs = Boolean(
|
|
@@ -64,20 +78,20 @@ export function useBodyPointerEventsCleanup() {
|
|
|
64
78
|
)
|
|
65
79
|
) {
|
|
66
80
|
// Clicked outside any modal - force cleanup after a short delay
|
|
67
|
-
|
|
81
|
+
defer(forceCleanup, 100);
|
|
68
82
|
}
|
|
69
83
|
};
|
|
70
84
|
|
|
71
85
|
// Force cleanup on ESC key
|
|
72
86
|
const onEscapeKey = (event: KeyboardEvent) => {
|
|
73
87
|
if (event.key === 'Escape') {
|
|
74
|
-
|
|
88
|
+
defer(forceCleanup, 200);
|
|
75
89
|
}
|
|
76
90
|
};
|
|
77
91
|
|
|
78
92
|
// Safe cleanup on other interactions
|
|
79
93
|
const onInteraction = () => {
|
|
80
|
-
|
|
94
|
+
defer(safeCleanup, 50);
|
|
81
95
|
};
|
|
82
96
|
|
|
83
97
|
// Install global listeners
|
|
@@ -89,7 +103,7 @@ export function useBodyPointerEventsCleanup() {
|
|
|
89
103
|
|
|
90
104
|
// Watch for DOM changes that might indicate overlay removal
|
|
91
105
|
const observer = new MutationObserver(() => {
|
|
92
|
-
|
|
106
|
+
defer(safeCleanup, 0);
|
|
93
107
|
});
|
|
94
108
|
observer.observe(document.body, { childList: true, subtree: true, attributes: true });
|
|
95
109
|
|
|
@@ -102,11 +116,27 @@ export function useBodyPointerEventsCleanup() {
|
|
|
102
116
|
}, 1000);
|
|
103
117
|
|
|
104
118
|
// Initial cleanup
|
|
105
|
-
|
|
119
|
+
defer(safeCleanup, 100);
|
|
106
120
|
|
|
107
|
-
//
|
|
121
|
+
// Tear everything down together. The observer is the important one: it
|
|
122
|
+
// fires while React unmounts the tree, so leaving it connected keeps
|
|
123
|
+
// queueing work against a document that is about to go away. Releasing the
|
|
124
|
+
// latch lets a later mount reinstall.
|
|
108
125
|
return () => {
|
|
109
126
|
clearInterval(intervalId);
|
|
127
|
+
|
|
128
|
+
pending.forEach(clearTimeout);
|
|
129
|
+
pending.clear();
|
|
130
|
+
|
|
131
|
+
observer.disconnect();
|
|
132
|
+
|
|
133
|
+
document.removeEventListener('click', onDocumentClick, true);
|
|
134
|
+
document.removeEventListener('keydown', onEscapeKey, true);
|
|
135
|
+
document.removeEventListener('pointerup', onInteraction, true);
|
|
136
|
+
document.removeEventListener('transitionend', onInteraction, true);
|
|
137
|
+
document.removeEventListener('animationend', onInteraction, true);
|
|
138
|
+
|
|
139
|
+
cleanupInstalled = false;
|
|
110
140
|
};
|
|
111
141
|
}, []);
|
|
112
142
|
}
|