@primer/react-brand 0.72.0-rc.f8b72452 → 0.72.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/components/ButtonGroup/react.md +29 -8
- package/docs/components/Hero/react.md +82 -18
- package/docs/components/River/react.md +46 -13
- package/docs/components/index.md +1 -1
- package/docs/getting-started/index.md +9 -3
- package/docs/index.md +3 -3
- package/esm/ActionMenu/ActionMenu.d.ts +1 -1
- package/esm/ActionMenu/ActionMenu.d.ts.map +1 -1
- package/esm/ActionMenu/ActionMenu.js +60 -60
- package/esm/ActionMenu/ActionMenu.js.map +1 -1
- package/esm/AnchorNav/AnchorNav.js +20 -20
- package/esm/Avatar/Avatar.module-DUQdD7On.css +1 -0
- package/esm/Avatar/Avatar.module.js +1 -1
- package/esm/Avatar/Avatar.module.js.map +1 -1
- package/esm/BreakoutBanner/{BreakoutBanner.module-DGBSJFNJ.css → BreakoutBanner.module-gfmzcUSU.css} +1 -1
- package/esm/BreakoutBanner/BreakoutBanner.module.js +1 -1
- package/esm/BreakoutBanner/BreakoutBanner.module.js.map +1 -1
- package/esm/ButtonGroup/ButtonGroup.d.ts +3 -1
- package/esm/ButtonGroup/ButtonGroup.d.ts.map +1 -1
- package/esm/ButtonGroup/ButtonGroup.js +24 -16
- package/esm/ButtonGroup/ButtonGroup.js.map +1 -1
- package/esm/CTABanner/CTABanner.js +6 -6
- package/esm/CTABanner/CTABanner.module-CDLOww8c.css +1 -0
- package/esm/CTABanner/CTABanner.module.js +1 -1
- package/esm/CTABanner/CTABanner.module.js.map +1 -1
- package/esm/Card/Card.js +5 -5
- package/esm/EyebrowBanner/EyebrowBanner.module-DYeTmaU9.css +1 -0
- package/esm/EyebrowBanner/EyebrowBanner.module.js +1 -1
- package/esm/EyebrowBanner/EyebrowBanner.module.js.map +1 -1
- package/esm/Hero/Hero.d.ts +17 -4
- package/esm/Hero/Hero.d.ts.map +1 -1
- package/esm/Hero/Hero.js +103 -98
- package/esm/Hero/Hero.js.map +1 -1
- package/esm/Hero/Hero.module-BfrAFYlo.css +1 -0
- package/esm/Hero/Hero.module.js +8 -5
- package/esm/Hero/Hero.module.js.map +1 -1
- package/esm/Hero/HeroContext.d.ts +7 -5
- package/esm/Hero/HeroContext.d.ts.map +1 -1
- package/esm/Hero/HeroContext.js +3 -9
- package/esm/Hero/HeroContext.js.map +1 -1
- package/esm/Hero/sub-components/HeroButtonGroup.d.ts +5 -0
- package/esm/Hero/sub-components/HeroButtonGroup.d.ts.map +1 -0
- package/esm/Hero/sub-components/HeroButtonGroup.js +28 -0
- package/esm/Hero/sub-components/HeroButtonGroup.js.map +1 -0
- package/esm/Hero/sub-components/HeroImage.d.ts +7 -4
- package/esm/Hero/sub-components/HeroImage.d.ts.map +1 -1
- package/esm/Hero/sub-components/HeroImage.js +6 -6
- package/esm/Hero/sub-components/HeroImage.js.map +1 -1
- package/esm/Hero/sub-components/HeroVideo.d.ts +16 -4
- package/esm/Hero/sub-components/HeroVideo.d.ts.map +1 -1
- package/esm/Hero/sub-components/HeroVideo.js +15 -15
- package/esm/Hero/sub-components/HeroVideo.js.map +1 -1
- package/esm/Hero/sub-components/index.d.ts +2 -0
- package/esm/Hero/sub-components/index.d.ts.map +1 -1
- package/esm/Link/Link.js +5 -5
- package/esm/LogoSuite/LogoSuite.js +11 -11
- package/esm/LogoSuite/LogoSuite.module-BCbX-lfy.css +1 -0
- package/esm/LogoSuite/LogoSuite.module.js +1 -1
- package/esm/LogoSuite/LogoSuite.module.js.map +1 -1
- package/esm/MinimalFooter/MinimalFooter.js +6 -6
- package/esm/MinimalFooter/{MinimalFooter.module-DPMYigso.css → MinimalFooter.module-Cl2g38SO.css} +1 -1
- package/esm/MinimalFooter/MinimalFooter.module.js +1 -1
- package/esm/MinimalFooter/MinimalFooter.module.js.map +1 -1
- package/esm/PricingOptions/PricingOptions.js +18 -18
- package/esm/PricingOptions/{PricingOptions.module-Cm3Oq9u6.css → PricingOptions.module-CgPKaZAm.css} +1 -1
- package/esm/PricingOptions/PricingOptions.module.js +1 -1
- package/esm/PricingOptions/PricingOptions.module.js.map +1 -1
- package/esm/SectionIntro/SectionIntro.module-BbIW9pPO.css +1 -0
- package/esm/SectionIntro/SectionIntro.module.js +1 -1
- package/esm/SectionIntro/SectionIntro.module.js.map +1 -1
- package/esm/Statistic/Statistic.d.ts.map +1 -1
- package/esm/Statistic/Statistic.js +1 -1
- package/esm/Statistic/Statistic.js.map +1 -1
- package/esm/Statistic/{Statistic.module-Dqb6n1GX.css → Statistic.module-DvdiSbXk.css} +1 -1
- package/esm/Statistic/Statistic.module.js +2 -1
- package/esm/Statistic/Statistic.module.js.map +1 -1
- package/esm/SubNav/SubNav.js +30 -30
- package/esm/SubdomainNavBar/NavigationVisbilityObserver.js +21 -21
- package/esm/SubdomainNavBar/SubdomainNavBar.js +83 -83
- package/esm/Testimonial/Testimonial.js +1 -1
- package/esm/Testimonial/Testimonial.js.map +1 -1
- package/esm/Testimonial/Testimonial.module-BEBpUSD7.css +1 -0
- package/esm/Testimonial/Testimonial.module.js +2 -1
- package/esm/Testimonial/Testimonial.module.js.map +1 -1
- package/esm/VideoPlayer/VideoPlayer.js +4 -4
- package/esm/css/reset-CSgu34_f.css +1 -0
- package/esm/css/stylesheets.js +1 -1
- package/esm/index.esm.js +68 -68
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/colors/global-with-modes-Bdet_nBw.css +1 -0
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-DHn1_SEa.css +1 -0
- package/esm/river/River/River.d.ts +17 -3
- package/esm/river/River/River.d.ts.map +1 -1
- package/esm/river/River/River.js +30 -11
- package/esm/river/River/River.js.map +1 -1
- package/esm/river/River/index.d.ts +2 -2
- package/esm/river/River/index.d.ts.map +1 -1
- package/esm/river/RiverAccordion/RiverAccordion.js +1 -1
- package/esm/river/RiverBreakout/RiverBreakout.d.ts +2 -2
- package/esm/river/RiverBreakout/RiverBreakout.d.ts.map +1 -1
- package/esm/river/RiverBreakout/RiverBreakout.js +18 -18
- package/esm/river/RiverBreakout/RiverBreakout.js.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts +3 -3
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js +2 -2
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module-CB2SZhbE.css +1 -0
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScroll.module-kez68wMZ.css +1 -0
- package/esm/river/RiverStoryScroll/RiverStoryScroll.module.js +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScroll.module.js.map +1 -1
- package/esm/river/river-shared.module-5fefR7ip.css +1 -0
- package/esm/river/river-shared.module.js +10 -2
- package/esm/river/river-shared.module.js.map +1 -1
- package/lib/ActionMenu/ActionMenu.d.ts +1 -1
- package/lib/ButtonGroup/ButtonGroup.d.ts +3 -1
- package/lib/Hero/Hero.d.ts +17 -4
- package/lib/Hero/HeroContext.d.ts +7 -5
- package/lib/Hero/sub-components/HeroButtonGroup.d.ts +4 -0
- package/lib/Hero/sub-components/HeroImage.d.ts +7 -4
- package/lib/Hero/sub-components/HeroVideo.d.ts +16 -4
- package/lib/Hero/sub-components/index.d.ts +2 -0
- package/lib/css/main.css +5733 -5548
- package/lib/design-tokens/css/tokens/base/colors/color-scales-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/base/colors/light.css +1 -1
- package/lib/design-tokens/css/tokens/base/size/size.css +1 -1
- package/lib/design-tokens/css/tokens/base/typography/typography.css +1 -1
- package/lib/design-tokens/css/tokens/functional/animation/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/colors/global-with-modes.css +4 -4
- package/lib/design-tokens/css/tokens/functional/colors/global.css +3 -3
- package/lib/design-tokens/css/tokens/functional/components/accordion/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/bento/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/blinking-cursor/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/breadcrumbs/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/button/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/card/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/card/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/card/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/comparison-table/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/comparison-table/comparison-table.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/control/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/cta-banner/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/eyebrow-banner/eyebrow-banner.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/faq/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/faq/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/faq/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/faq/faq.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/footer/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/footer/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/frosted-glass-vfx/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/grid/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/grid/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/grid/grid.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/hero/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/icon/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/icon/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/ide/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/ide/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/image/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/inline-link/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/inline-link/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/inline-link/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/label/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/label/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/link/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/link/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/logosuite/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/logosuite/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/logosuite/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/media-playlist/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/pricing-options/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/pricing-options/pricing-options.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/prose/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/prose/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/river/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/river/river.css +8 -1
- package/lib/design-tokens/css/tokens/functional/components/river-story-scroll/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/section/section.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/statistic/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/sub-nav/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/subdomain-nav-bar/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/tabs/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/tabs/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/tabs/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/testimonial/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/testimonial/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/testimonial/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/text-cursor-animation/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/tiles/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/timeline/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/timeline/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/timeline/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/token/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/token/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/tooltip/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/tooltip/colors.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/video-player/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/video-player/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/size/border.css +1 -1
- package/lib/design-tokens/css/tokens/functional/size/breakpoints.css +1 -1
- package/lib/design-tokens/css/tokens/functional/size/size-coarse.css +1 -1
- package/lib/design-tokens/css/tokens/functional/size/size-fine.css +1 -1
- package/lib/design-tokens/css/tokens/functional/size/size.css +1 -1
- package/lib/design-tokens/css/tokens/functional/size/viewport.css +1 -1
- package/lib/design-tokens/css/tokens/functional/typography/typography-responsive.css +1 -1
- package/lib/design-tokens/css/tokens/functional/typography/typography.css +1 -1
- package/lib/design-tokens/js/module/tokens/base/colors/light.js +1 -1
- package/lib/design-tokens/js/module/tokens/base/size/size.js +1 -1
- package/lib/design-tokens/js/module/tokens/base/typography/typography.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/animation/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/colors/global.js +4 -4
- package/lib/design-tokens/js/module/tokens/functional/components/bento/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/card/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/card/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/comparison-table/comparison-table.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/faq/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/faq/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/faq/faq.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/footer/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/grid/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/grid/grid.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/hero/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/icon/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/ide/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/image/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/inline-link/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/inline-link/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/label/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/link/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/logosuite/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/logosuite/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/media-playlist/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/pricing-options/pricing-options.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/prose/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/river/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/river/river.js +4 -1
- package/lib/design-tokens/js/module/tokens/functional/components/section/section.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/statistic/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/sub-nav/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/tabs/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/tabs/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/testimonial/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/testimonial/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/text-cursor-animation/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/timeline/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/timeline/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/token/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/tooltip/colors.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/video-player/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/size/border.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/size/breakpoints.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/size/size-coarse.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/size/size-fine.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/size/size.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/size/viewport.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/typography/typography-responsive.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/typography/typography.js +1 -1
- package/lib/design-tokens/js/tokens/base/colors/light.js +1 -1
- package/lib/design-tokens/js/tokens/base/size/size.js +1 -1
- package/lib/design-tokens/js/tokens/base/typography/typography.js +1 -1
- package/lib/design-tokens/js/tokens/functional/animation/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/colors/global.js +3 -3
- package/lib/design-tokens/js/tokens/functional/components/bento/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/card/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/card/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/comparison-table/comparison-table.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/faq/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/faq/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/faq/faq.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/footer/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/grid/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/grid/grid.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/hero/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/icon/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/ide/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/image/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/inline-link/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/inline-link/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/label/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/link/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/logosuite/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/logosuite/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/media-playlist/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/pricing-options/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/pricing-options/pricing-options.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/prose/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/river/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/river/river.js +2 -1
- package/lib/design-tokens/js/tokens/functional/components/section/section.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/statistic/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/sub-nav/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/tabs/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/tabs/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/testimonial/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/testimonial/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/text-cursor-animation/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/size.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
- package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
- package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
- package/lib/design-tokens/json/colors.json +2 -2
- package/lib/design-tokens/scss/tokens/base/colors/light.scss +1 -1
- package/lib/design-tokens/scss/tokens/base/size/size.scss +1 -1
- package/lib/design-tokens/scss/tokens/base/typography/typography.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/animation/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/colors/global.scss +3 -3
- package/lib/design-tokens/scss/tokens/functional/components/bento/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/card/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/card/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/comparison-table/comparison-table.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/eyebrow-banner/eyebrow-banner.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/faq/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/faq/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/faq/faq.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/footer/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/frosted-glass-vfx/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/grid/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/grid/grid.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/hero/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/icon/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/ide/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/image/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/inline-link/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/inline-link/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/label/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/link/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/logosuite/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/logosuite/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/media-playlist/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/pricing-options/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/pricing-options/pricing-options.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/prose/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/river/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/river/river.scss +2 -1
- package/lib/design-tokens/scss/tokens/functional/components/section/section.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/statistic/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/sub-nav/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/tabs/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/tabs/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/testimonial/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/testimonial/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/text-cursor-animation/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/timeline/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/timeline/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/token/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/tooltip/colors.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/video-player/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/size/border.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/size/breakpoints.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/size/size-coarse.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/size/size-fine.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/size/size.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/size/viewport.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/typography/typography-responsive.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/typography/typography.scss +1 -1
- package/lib/design-tokens/ts/tokens/base/colors/light.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/base/colors/light.js +1 -1
- package/lib/design-tokens/ts/tokens/base/size/size.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/base/size/size.js +1 -1
- package/lib/design-tokens/ts/tokens/base/typography/typography.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/base/typography/typography.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/animation/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/animation/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/colors/global.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/colors/global.js +3 -3
- package/lib/design-tokens/ts/tokens/functional/components/bento/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/bento/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/card/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/card/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/card/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/card/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/comparison-table/comparison-table.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/eyebrow-banner/eyebrow-banner.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/faq/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/faq/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/faq/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/faq/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/faq/faq.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/faq/faq.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/footer/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/footer/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/frosted-glass-vfx/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/grid/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/grid/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/grid/grid.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/grid/grid.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/hero/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/hero/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/icon/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/icon/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/ide/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/ide/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/image/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/image/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/inline-link/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/inline-link/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/label/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/label/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/link/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/link/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/logosuite/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/logosuite/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/media-playlist/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/pricing-options/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/pricing-options/pricing-options.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/prose/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/prose/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/river/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/river/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/river/river.d.ts +4 -1
- package/lib/design-tokens/ts/tokens/functional/components/river/river.js +4 -1
- package/lib/design-tokens/ts/tokens/functional/components/section/section.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/section/section.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/statistic/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/statistic/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tabs/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tabs/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tabs/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/testimonial/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/testimonial/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
- package/lib/index.js +1 -1
- package/lib/river/River/River.d.ts +17 -3
- package/lib/river/River/index.d.ts +2 -2
- package/lib/river/RiverBreakout/RiverBreakout.d.ts +2 -2
- package/lib/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts +3 -3
- package/llms.txt +3 -3
- package/package.json +1 -1
- package/esm/Avatar/Avatar.module-DzfWmLu4.css +0 -1
- package/esm/CTABanner/CTABanner.module-DZUT186Y.css +0 -1
- package/esm/EyebrowBanner/EyebrowBanner.module-C8hfGfYx.css +0 -1
- package/esm/Hero/Hero.module-DjsgFkIQ.css +0 -1
- package/esm/LogoSuite/LogoSuite.module-69Mthqju.css +0 -1
- package/esm/SectionIntro/SectionIntro.module-CiRymbla.css +0 -1
- package/esm/Testimonial/Testimonial.module-DRCosU_J.css +0 -1
- package/esm/css/reset-PKNIUbst.css +0 -1
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/colors/global-with-modes-tpdcmiok.css +0 -1
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/river/river-QteO10lt.css +0 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module-CH8jehnx.css +0 -1
- package/esm/river/RiverStoryScroll/RiverStoryScroll.module-D8dFaLHq.css +0 -1
- package/esm/river/river-shared.module-Bf_bNlTd.css +0 -1
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import e from "../node_modules/clsx/dist/clsx.js";
|
|
2
2
|
import { useId as t } from "../hooks/useId.js";
|
|
3
3
|
import { Text as n } from "../Text/Text.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
8
|
-
import { useOnClickOutside as
|
|
9
|
-
import { useKeyboardEscape as
|
|
10
|
-
import {
|
|
4
|
+
import { Button as r } from "../Button/Button.js";
|
|
5
|
+
import { ThemeProvider as i } from "../ThemeProvider/ThemeProvider.js";
|
|
6
|
+
import { useTheme as a } from "../ThemeProvider/useTheme.js";
|
|
7
|
+
import { useAnchoredPosition as o } from "../hooks/useAnchoredPosition.js";
|
|
8
|
+
import { useOnClickOutside as s } from "../hooks/useOnClickOutside.js";
|
|
9
|
+
import { useKeyboardEscape as c } from "../hooks/useKeyboardEscape.js";
|
|
10
|
+
import { CheckIcon as l, ChevronDownIcon as u } from "../node_modules/@primer/octicons-react/dist/index.esm.js";
|
|
11
11
|
import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes-B69RzUbe.css';/* empty css */
|
|
12
12
|
import d from "./ActionMenu.module.js";
|
|
13
13
|
import f, { Children as p, cloneElement as m, forwardRef as h, isValidElement as g, memo as _, useCallback as v, useEffect as y, useMemo as b, useRef as x, useState as S } from "react";
|
|
@@ -48,9 +48,9 @@ var O = {
|
|
|
48
48
|
},
|
|
49
49
|
children: t
|
|
50
50
|
});
|
|
51
|
-
}, F = _(({ id: n, children: r, "data-testid": i, disabled: a, open:
|
|
52
|
-
let [k, A] = S(
|
|
53
|
-
|
|
51
|
+
}, F = _(({ id: n, children: r, "data-testid": i, disabled: a, open: l = !1, selectionVariant: u = "none", menuAlignment: f = "end", size: h = "medium", menuSide: _, onSelect: b, mode: C = "default" }) => {
|
|
52
|
+
let [k, A] = S(l), j = x(null), M = x(null), N = t(n);
|
|
53
|
+
s(j, () => A(!1), M), c(v(() => {
|
|
54
54
|
A(!1);
|
|
55
55
|
}, []));
|
|
56
56
|
let F = v(() => {
|
|
@@ -104,7 +104,7 @@ var O = {
|
|
|
104
104
|
F,
|
|
105
105
|
L
|
|
106
106
|
]);
|
|
107
|
-
let { position: B } =
|
|
107
|
+
let { position: B } = o({
|
|
108
108
|
floatingElementRef: j,
|
|
109
109
|
anchorElementRef: M,
|
|
110
110
|
align: f,
|
|
@@ -128,7 +128,7 @@ var O = {
|
|
|
128
128
|
id: `${N}-menu`,
|
|
129
129
|
children: p.map(n.props.children, (e) => g(e) ? m(e, {
|
|
130
130
|
handler: R,
|
|
131
|
-
type: C === "split-button" ? "link" :
|
|
131
|
+
type: C === "split-button" ? "link" : u
|
|
132
132
|
}) : e)
|
|
133
133
|
})), t), {});
|
|
134
134
|
return /* @__PURE__ */ w(P, {
|
|
@@ -141,125 +141,125 @@ var O = {
|
|
|
141
141
|
children: [V, k ? H : null]
|
|
142
142
|
})
|
|
143
143
|
});
|
|
144
|
-
}), I = h(({ as: t, href: n, id:
|
|
144
|
+
}), I = h(({ as: t, href: n, id: i, children: a, className: o, "data-testid": s, disabled: c, menuOpen: l, size: f, _mode: p = "default", onClick: m, leadingVisual: h, variant: g, ..._ }, y) => {
|
|
145
145
|
let { onMenuToggle: b } = N(), x = v((e) => {
|
|
146
146
|
m?.(e), e.defaultPrevented || b?.();
|
|
147
147
|
}, [m, b]);
|
|
148
148
|
if (p === "split-button") {
|
|
149
149
|
let p = g ?? "primary";
|
|
150
150
|
return /* @__PURE__ */ T("div", {
|
|
151
|
-
className: e(d.ActionMenu__button, d[`ActionMenu__button--${f}`],
|
|
152
|
-
children: [/* @__PURE__ */ w(
|
|
151
|
+
className: e(d.ActionMenu__button, d[`ActionMenu__button--${f}`], o),
|
|
152
|
+
children: [/* @__PURE__ */ w(r, {
|
|
153
153
|
as: t,
|
|
154
154
|
href: n,
|
|
155
|
-
className: e(d["ActionMenu__innerButton--split-button"], d[`ActionMenu__innerButton--${p}`], d[`ActionMenu__innerButton--${f}`],
|
|
155
|
+
className: e(d["ActionMenu__innerButton--split-button"], d[`ActionMenu__innerButton--${p}`], d[`ActionMenu__innerButton--${f}`], c && d["ActionMenu__innerButton--disabled"]),
|
|
156
156
|
variant: p,
|
|
157
|
-
"aria-disabled":
|
|
158
|
-
"data-testid":
|
|
157
|
+
"aria-disabled": c,
|
|
158
|
+
"data-testid": s || O.button,
|
|
159
159
|
size: f,
|
|
160
160
|
leadingVisual: h,
|
|
161
161
|
onClick: m,
|
|
162
162
|
..._,
|
|
163
163
|
children: /* @__PURE__ */ w("span", {
|
|
164
164
|
className: d["ActionMenu__button-text"],
|
|
165
|
-
children:
|
|
165
|
+
children: a
|
|
166
166
|
})
|
|
167
|
-
}), /* @__PURE__ */ w(
|
|
167
|
+
}), /* @__PURE__ */ w(r, {
|
|
168
168
|
ref: y,
|
|
169
|
-
id:
|
|
169
|
+
id: i,
|
|
170
170
|
as: "button",
|
|
171
171
|
className: d["ActionMenu__innerButton--split-button"],
|
|
172
172
|
variant: p,
|
|
173
173
|
"aria-haspopup": "true",
|
|
174
174
|
"aria-label": "Menu",
|
|
175
175
|
size: f,
|
|
176
|
-
"aria-expanded":
|
|
176
|
+
"aria-expanded": l ? "true" : "false",
|
|
177
177
|
onClick: b,
|
|
178
|
-
disabled:
|
|
179
|
-
children: /* @__PURE__ */ w(
|
|
178
|
+
disabled: c,
|
|
179
|
+
children: /* @__PURE__ */ w(u, { className: d["ActionMenu__inner-button-dropdown-icon"] })
|
|
180
180
|
})]
|
|
181
181
|
});
|
|
182
182
|
}
|
|
183
|
-
return /* @__PURE__ */ w(
|
|
183
|
+
return /* @__PURE__ */ w(r, {
|
|
184
184
|
ref: y,
|
|
185
|
-
id:
|
|
186
|
-
className: e(d.ActionMenu__button, d[`ActionMenu__button--${f}`],
|
|
185
|
+
id: i,
|
|
186
|
+
className: e(d.ActionMenu__button, d[`ActionMenu__button--${f}`], o),
|
|
187
187
|
"aria-haspopup": "true",
|
|
188
|
-
"aria-expanded":
|
|
189
|
-
disabled:
|
|
190
|
-
"data-testid":
|
|
188
|
+
"aria-expanded": l ? "true" : "false",
|
|
189
|
+
disabled: c,
|
|
190
|
+
"data-testid": s || O.button,
|
|
191
191
|
size: f,
|
|
192
192
|
variant: g,
|
|
193
193
|
leadingVisual: h,
|
|
194
|
-
trailingVisual: /* @__PURE__ */ w(
|
|
194
|
+
trailingVisual: /* @__PURE__ */ w(u, {}),
|
|
195
195
|
onClick: x,
|
|
196
196
|
..._,
|
|
197
197
|
children: /* @__PURE__ */ w("span", {
|
|
198
198
|
className: d["ActionMenu__button-text"],
|
|
199
|
-
children:
|
|
199
|
+
children: a
|
|
200
200
|
})
|
|
201
201
|
});
|
|
202
202
|
}), L = {
|
|
203
203
|
none: "menuitem",
|
|
204
204
|
single: "menuitemradio",
|
|
205
205
|
link: "menuitem"
|
|
206
|
-
}, R = ({ as: t, children:
|
|
206
|
+
}, R = ({ as: t, children: r, className: i, disabled: a, handler: o, selected: s, type: c, value: u, onClick: p, onKeyDown: m, leadingVisual: h, ...g }) => {
|
|
207
207
|
let { size: _ } = N(), y = v((e) => {
|
|
208
|
-
p?.(e),
|
|
208
|
+
p?.(e), a || o?.(String(u));
|
|
209
209
|
}, [
|
|
210
|
-
s,
|
|
211
|
-
u,
|
|
212
210
|
o,
|
|
211
|
+
u,
|
|
212
|
+
a,
|
|
213
213
|
p
|
|
214
214
|
]), x = v((e) => {
|
|
215
|
-
m?.(e), !
|
|
215
|
+
m?.(e), !a && e.key === "Enter" && o?.(String(u));
|
|
216
216
|
}, [
|
|
217
|
-
s,
|
|
218
|
-
u,
|
|
219
217
|
o,
|
|
218
|
+
u,
|
|
219
|
+
a,
|
|
220
220
|
m
|
|
221
221
|
]), S = b(() => ({
|
|
222
|
-
className: e(d.ActionMenu__item,
|
|
223
|
-
role: L[
|
|
224
|
-
"aria-disabled":
|
|
222
|
+
className: e(d.ActionMenu__item, c === "single" && d[`ActionMenu__item--selection-type-${c}`], _ && d[`ActionMenu__item--${_}`], i),
|
|
223
|
+
role: L[c || "single"],
|
|
224
|
+
"aria-disabled": a,
|
|
225
225
|
tabIndex: -1,
|
|
226
226
|
"data-value": u,
|
|
227
227
|
...g
|
|
228
228
|
}), [
|
|
229
229
|
g,
|
|
230
|
-
|
|
230
|
+
c,
|
|
231
231
|
_,
|
|
232
|
+
i,
|
|
232
233
|
a,
|
|
233
|
-
o,
|
|
234
234
|
u
|
|
235
235
|
]), E = b(() => /* @__PURE__ */ T(C, { children: [
|
|
236
236
|
f.isValidElement(h) ? f.cloneElement(h, {
|
|
237
237
|
width: h.props.width || 20,
|
|
238
238
|
height: h.props.width || 20
|
|
239
239
|
}) : null,
|
|
240
|
-
|
|
240
|
+
c === "single" && /* @__PURE__ */ w("span", {
|
|
241
241
|
className: d["ActionMenu__item-leadingVisual"],
|
|
242
|
-
children:
|
|
243
|
-
className: e(d["ActionMenu__item-icon"],
|
|
242
|
+
children: s && /* @__PURE__ */ w(l, {
|
|
243
|
+
className: e(d["ActionMenu__item-icon"], a && d["ActionMenu__item-icon--disabled"]),
|
|
244
244
|
size: 16
|
|
245
245
|
})
|
|
246
246
|
}),
|
|
247
247
|
/* @__PURE__ */ w("span", {
|
|
248
248
|
className: d["ActionMenu__item-text"],
|
|
249
249
|
children: /* @__PURE__ */ w(n, {
|
|
250
|
-
variant:
|
|
250
|
+
variant: a ? "muted" : "default",
|
|
251
251
|
size: _ === "medium" ? "200" : "100",
|
|
252
|
-
className: e(
|
|
253
|
-
children:
|
|
252
|
+
className: e(a && d["ActionMenu__item-content--disabled"]),
|
|
253
|
+
children: r
|
|
254
254
|
})
|
|
255
255
|
})
|
|
256
256
|
] }), [
|
|
257
257
|
h,
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
258
|
+
r,
|
|
259
|
+
s,
|
|
260
|
+
a,
|
|
261
261
|
_,
|
|
262
|
-
|
|
262
|
+
c
|
|
263
263
|
]);
|
|
264
264
|
return t === "a" ? /* @__PURE__ */ w("li", {
|
|
265
265
|
role: "menuitem",
|
|
@@ -267,28 +267,28 @@ var O = {
|
|
|
267
267
|
onClick: p,
|
|
268
268
|
onKeyDown: m,
|
|
269
269
|
children: /* @__PURE__ */ w("a", {
|
|
270
|
-
className: e(d["ActionMenu__item-anchor"],
|
|
270
|
+
className: e(d["ActionMenu__item-anchor"], a && d["ActionMenu__item--disabled"]),
|
|
271
271
|
href: g.href,
|
|
272
272
|
children: E
|
|
273
273
|
})
|
|
274
274
|
}) : /* @__PURE__ */ w("li", {
|
|
275
275
|
role: "menuitem",
|
|
276
276
|
...S,
|
|
277
|
-
"aria-checked":
|
|
277
|
+
"aria-checked": c === "none" ? void 0 : s ? "true" : "false",
|
|
278
278
|
onClick: y,
|
|
279
279
|
onKeyDown: x,
|
|
280
280
|
children: E
|
|
281
281
|
});
|
|
282
|
-
}, z = h(({ children: t, className: n, "data-testid": r, menuOpen:
|
|
283
|
-
let { colorMode: l } =
|
|
284
|
-
return /* @__PURE__ */ w(
|
|
282
|
+
}, z = h(({ children: t, className: n, "data-testid": r, menuOpen: o, ...s }, c) => {
|
|
283
|
+
let { colorMode: l } = a();
|
|
284
|
+
return /* @__PURE__ */ w(i, {
|
|
285
285
|
colorMode: n?.includes("ActionMenu__menu--split") ? "light" : l,
|
|
286
286
|
children: /* @__PURE__ */ w("ul", {
|
|
287
287
|
ref: c,
|
|
288
288
|
className: e(n),
|
|
289
289
|
role: "menu",
|
|
290
290
|
"data-testid": r || O.list,
|
|
291
|
-
...
|
|
291
|
+
...s,
|
|
292
292
|
children: t
|
|
293
293
|
})
|
|
294
294
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActionMenu.js","names":[],"sources":["../../src/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, {\n Children,\n isValidElement,\n cloneElement,\n useRef,\n useCallback,\n useState,\n useEffect,\n PropsWithChildren,\n forwardRef,\n memo,\n ReactElement,\n useMemo,\n} from 'react'\nimport {Button, ButtonProps, Text, ThemeProvider, useTheme} from '../'\nimport {useAnchoredPosition} from '../hooks/useAnchoredPosition'\nimport {useOnClickOutside} from '../hooks/useOnClickOutside'\nimport {useKeyboardEscape} from '../hooks/useKeyboardEscape'\n\nimport {clsx} from 'clsx'\nimport {CheckIcon, ChevronDownIcon, type Icon} from '@primer/octicons-react'\nimport {useId} from '../hooks/useId'\n\nimport {FocusKeys, type PositionSettings, focusZone} from '@primer/behaviors'\nimport type {BaseProps} from '../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './ActionMenu.module.css'\n\nconst testIds = {\n root: 'ActionMenu',\n get button() {\n return `${this.root}-button`\n },\n get overlay() {\n return `${this.root}-overlay`\n },\n get list() {\n return `${this.root}-list`\n },\n get item() {\n return `${this.root}-list-item`\n },\n}\n\n// primer behaviors doesn't export these values, recreating manually\n// https://github.com/primer/behaviors/blob/main/src/anchored-position.ts#L5\nexport const actionMenuOverlaySides = [\n 'inside-top',\n 'inside-bottom',\n 'inside-left',\n 'inside-right',\n 'inside-center',\n 'outside-top',\n 'outside-bottom',\n 'outside-left',\n 'outside-right',\n] as PositionSettings['side'][]\n\nexport const ActionMenuSizes = ['small', 'medium'] as const\n\nexport const ActionMenuButtonModes = ['default', 'split-button'] as const\nexport type ActionMenuButtonModes = (typeof ActionMenuButtonModes)[number]\n\nexport type ActionMenuSizes = (typeof ActionMenuSizes)[number]\n\nexport type ActionMenuProps = {\n /**\n * The content of the ActionMenu. Must be an ActionMenu.Button and an ActionMenu.Overlay\n */\n children:\n | ReactElement<ActionMenuButtonProps>\n | ReactElement<ActionMenuOverlayProps>\n | Array<ReactElement<ActionMenuButtonProps> | ReactElement<ActionMenuOverlayProps>>\n /**\n * Determines whether the ActionMenu is disabled\n */\n disabled?: boolean\n /**\n * Determines whether the ActionMenu is open by default\n */\n open?: boolean\n /**\n * Callback that is called when an item is selected.\n * The value of the selected item is passed as an argument.\n */\n onSelect?: (newValue: string) => void\n /**\n * The selection variant of the ActionMenu.\n * - `single`: Only one item can be selected at a time. Menu items as a menuitemradio.\n * - `none`: No items can be selected. Menu items as a menuitem.\n */\n selectionVariant?: 'single' | 'none'\n /**\n * Test id for the ActionMenu\n */\n 'data-testid'?: string\n /**\n * Horizontal alignment of the menu relative to the bottom of the button\n */\n menuAlignment?: 'start' | 'end'\n /**\n * Size configuratin of the ActionMenu\n */\n size?: ActionMenuSizes\n /*\n * Side the menu overlay appears\n */\n menuSide?: PositionSettings['side']\n /**\n * Alternative behavior for the button and menu items\n * - `default`: The button and menu items behave as a standard button and menu item.\n * - `split-button`: The button behaves as a split button, and the menu items behave as links.\n */\n mode?: ActionMenuButtonModes\n} & BaseProps<HTMLDivElement>\n\ntype ActionMenuContextType = {\n size?: ActionMenuSizes\n setSize?: React.Dispatch<React.SetStateAction<ActionMenuSizes | undefined>>\n onMenuToggle?: () => void\n}\n\nconst ActionMenuContext = React.createContext<ActionMenuContextType>({})\n\nexport const useActionMenuContext = (): ActionMenuContextType => {\n return React.useContext(ActionMenuContext)\n}\n\ntype ActionMenuProviderProps = ActionMenuProps & Pick<ActionMenuContextType, 'onMenuToggle'>\n\nexport const ActionMenuProvider: React.FC<ActionMenuProviderProps> = ({size, children, onMenuToggle}) => {\n const [currentSize, setSize] = useState(size)\n\n return (\n <ActionMenuContext.Provider value={{size: currentSize, setSize, onMenuToggle}}>\n {children}\n </ActionMenuContext.Provider>\n )\n}\n\nconst _ActionMenuRoot = memo(\n ({\n id,\n children,\n 'data-testid': testId,\n disabled,\n open = false,\n selectionVariant = 'none',\n menuAlignment = 'end',\n size = 'medium',\n menuSide,\n onSelect,\n mode = 'default',\n }: ActionMenuProps) => {\n const [showMenu, setShowMenu] = useState(open)\n const floatingElementRef = useRef<HTMLUListElement>(null)\n const anchorElementRef = useRef<HTMLButtonElement>(null)\n const instanceId = useId(id)\n\n useOnClickOutside(floatingElementRef, () => setShowMenu(false), anchorElementRef)\n\n const closeMenuCallback = useCallback(() => {\n setShowMenu(false)\n }, [])\n\n useKeyboardEscape(closeMenuCallback)\n\n const toggleMenu = useCallback(() => {\n setShowMenu(!showMenu)\n }, [showMenu])\n\n const handleOnSelect = useCallback(\n (newValue: string) => {\n if (onSelect) onSelect(newValue)\n toggleMenu()\n },\n [onSelect, toggleMenu],\n )\n\n const handleItemSelection = useCallback(\n (newValue: string) => {\n handleOnSelect(newValue)\n toggleMenu()\n anchorElementRef.current?.focus()\n },\n [handleOnSelect, toggleMenu, anchorElementRef],\n )\n\n useEffect(() => {\n if (showMenu && floatingElementRef.current) {\n const floatingElement = floatingElementRef.current\n const isSplitLayout = mode === 'split-button'\n const splitLayoutFilter = isSplitLayout ? element => element.tagName === 'A' : undefined\n\n focusZone(floatingElementRef.current, {\n bindKeys: FocusKeys.ArrowVertical,\n focusableElementFilter: splitLayoutFilter,\n focusInStrategy: isSplitLayout ? 'first' : undefined,\n })\n\n // enter selects item\n floatingElement.addEventListener('keydown', event => {\n if (event.key === 'Enter') {\n const target = event.target as HTMLElement\n\n // Get the proper element containing the data-value\n const targetElement = target.tagName === 'A' ? target.closest('li') : target\n\n if (!targetElement || targetElement.getAttribute('aria-disabled') === 'true') return\n\n const value = targetElement.getAttribute('data-value')\n if (value) {\n handleOnSelect(value)\n setShowMenu(false)\n setTimeout(() => {\n anchorElementRef.current?.focus()\n }, 10)\n }\n }\n })\n\n const targetSelector = isSplitLayout ? 'a' : 'li'\n\n // focusses first item\n const firstItem = floatingElementRef.current.querySelector(targetSelector)\n if (firstItem) {\n setTimeout(() => {\n firstItem.focus()\n }, 10)\n }\n\n const lastItem =\n floatingElement.querySelectorAll(targetSelector)[floatingElement.querySelectorAll(targetSelector).length - 1]\n lastItem.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowDown') {\n keyboardEvent.preventDefault()\n firstItem?.focus()\n }\n })\n\n firstItem?.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowUp') {\n keyboardEvent.preventDefault()\n lastItem.focus()\n }\n })\n\n //on escape refocus\n floatingElement.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'Escape') {\n anchorElementRef.current?.focus()\n }\n })\n }\n }, [showMenu, floatingElementRef, mode, handleItemSelection, toggleMenu, handleOnSelect])\n\n // Calculate the position of the menu\n const {position} = useAnchoredPosition(\n {\n floatingElementRef,\n anchorElementRef,\n align: menuAlignment,\n allowOutOfBounds: true,\n side: menuSide,\n },\n [showMenu],\n )\n\n const {Button: SelectButton, Overlay: SelectOverlay} = Children.toArray(children).reduce<{\n Button?: ReactElement<ActionMenuButtonProps>\n Overlay?: ReactElement<ActionMenuOverlayProps>\n }>((acc, child) => {\n if (isValidElement<ActionMenuButtonProps>(child) && child.type === ActionMenuButton) {\n acc.Button = cloneElement(child, {\n ref: anchorElementRef as React.RefObject<HTMLButtonElement>,\n className: clsx(child.props.className, styles[`ActionMenu__button--${mode}`], showMenu),\n menuOpen: showMenu,\n disabled,\n id: `${instanceId}-button`,\n size,\n _mode: mode,\n })\n } else if (isValidElement<ActionMenuOverlayProps>(child) && child.type === ActionMenuOverlay) {\n acc.Overlay = cloneElement(child, {\n ref: floatingElementRef as React.RefObject<HTMLUListElement>,\n className: clsx(\n styles.ActionMenu__menu,\n position && styles['ActionMenu__menu--visible'],\n position && styles[`ActionMenu__menu--pos-${position.anchorSide}`],\n styles[`ActionMenu__menu--${size}`],\n mode === 'split-button' && 'ActionMenu__menu--split',\n ),\n style: {\n top: `${position?.top ?? 0}px`,\n left: `${position?.left ?? 0}px`,\n },\n id: `${instanceId}-menu`,\n children: Children.map(child.props.children, item => {\n if (isValidElement<ActionMenuItemBaseProps>(item)) {\n return cloneElement(item, {\n handler: handleItemSelection,\n type: mode === 'split-button' ? 'link' : selectionVariant,\n })\n }\n return item\n }),\n })\n }\n return acc\n }, {})\n\n return (\n <ActionMenuProvider size={size} onMenuToggle={toggleMenu}>\n <div\n id={instanceId}\n className={clsx(styles.ActionMenu, disabled && styles['ActionMenu--disabled'])}\n data-testid={testId || testIds.root}\n >\n {SelectButton}\n {showMenu ? SelectOverlay : null}\n </div>\n </ActionMenuProvider>\n )\n },\n)\n\ntype ActionMenuButtonProps = PropsWithChildren<\n BaseProps<HTMLButtonElement> & Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'disabled' | 'onClick'>\n> & {\n as?: ButtonProps<'a'>['as']\n href?: ButtonProps<'a'>['href']\n menuOpen?: boolean\n 'data-testid'?: string\n size?: ActionMenuSizes\n _mode?: ActionMenuButtonModes\n variant?: ButtonProps<'a'>['variant']\n leadingVisual?: ButtonProps<'a'>['leadingVisual']\n}\n\nconst ActionMenuButton = forwardRef<HTMLButtonElement, ActionMenuButtonProps>(\n (\n {\n as,\n href,\n id,\n children,\n className,\n 'data-testid': testId,\n disabled,\n menuOpen,\n size,\n _mode = 'default',\n onClick,\n leadingVisual,\n variant,\n ...props\n },\n ref,\n ) => {\n const {onMenuToggle} = useActionMenuContext()\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n\n if (!event.defaultPrevented) {\n onMenuToggle?.()\n }\n },\n [onClick, onMenuToggle],\n )\n\n if (_mode === 'split-button') {\n const splitButtonVariant = variant ?? 'primary'\n\n return (\n <div className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}>\n <Button\n as={as}\n href={href}\n className={clsx(\n styles['ActionMenu__innerButton--split-button'],\n styles[`ActionMenu__innerButton--${splitButtonVariant}`],\n styles[`ActionMenu__innerButton--${size}`],\n disabled && styles['ActionMenu__innerButton--disabled'],\n )}\n variant={splitButtonVariant}\n aria-disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n leadingVisual={leadingVisual}\n onClick={onClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n <Button\n ref={ref}\n id={id}\n as=\"button\"\n className={styles['ActionMenu__innerButton--split-button']}\n variant={splitButtonVariant}\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\n size={size}\n aria-expanded={menuOpen ? 'true' : 'false'}\n onClick={onMenuToggle}\n disabled={disabled}\n >\n <ChevronDownIcon className={styles['ActionMenu__inner-button-dropdown-icon']} />\n </Button>\n </div>\n )\n }\n\n return (\n <Button\n ref={ref}\n id={id}\n className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen ? 'true' : 'false'}\n disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n variant={variant}\n leadingVisual={leadingVisual}\n trailingVisual={<ChevronDownIcon />}\n onClick={handleClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n )\n },\n)\n\ntype ActionMenuItemBaseProps = {\n handler?: (newValue: string) => void\n type?: 'none' | 'single' | 'link'\n disabled?: boolean\n size?: ActionMenuSizes\n leadingVisual?: React.ReactElement | React.ReactNode | Icon\n} & PropsWithChildren<React.HTMLProps<HTMLLIElement>>\n\ntype ActionMenuItemAnchorProps = ActionMenuItemBaseProps & {\n as: 'a'\n} & Omit<React.HTMLProps<HTMLAnchorElement>, keyof ActionMenuItemBaseProps | 'as'>\n\n// Type for when 'as' is not set or is anything other than 'a'\ntype ActionMenuItemDefaultProps = ActionMenuItemBaseProps & {\n as?: string\n value?: string\n selected?: boolean\n} & Omit<React.HTMLProps<HTMLLIElement>, keyof ActionMenuItemBaseProps | 'as'>\n\nconst roleTypeMap = {\n none: 'menuitem',\n single: 'menuitemradio',\n link: 'menuitem',\n}\n\nconst ActionMenuItem = ({\n as,\n children,\n className,\n disabled,\n handler,\n selected,\n type,\n value,\n onClick,\n onKeyDown,\n leadingVisual: LeadingVisual,\n ...props\n}: ActionMenuItemAnchorProps | ActionMenuItemDefaultProps) => {\n const {size} = useActionMenuContext()\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n onClick?.(e)\n\n if (!disabled) {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onClick],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLLIElement>) => {\n onKeyDown?.(e)\n\n if (!disabled && e.key === 'Enter') {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onKeyDown],\n )\n\n const liProps = useMemo<React.HTMLProps<HTMLLIElement> & {'data-value': unknown}>(\n () => ({\n className: clsx(\n styles.ActionMenu__item,\n type === 'single' && styles[`ActionMenu__item--selection-type-${type}`],\n size && styles[`ActionMenu__item--${size}`],\n className,\n ),\n role: roleTypeMap[type || 'single'],\n 'aria-disabled': disabled,\n tabIndex: -1,\n 'data-value': value,\n ...props,\n }),\n [props, type, size, className, disabled, value],\n )\n\n const contents = useMemo(\n () => (\n <>\n {React.isValidElement<{width?: number; height?: number}>(LeadingVisual)\n ? React.cloneElement(LeadingVisual, {\n width: LeadingVisual.props.width || 20,\n height: LeadingVisual.props.width || 20,\n })\n : null}\n {type === 'single' && (\n <span className={styles['ActionMenu__item-leadingVisual']}>\n {selected && (\n <CheckIcon\n className={clsx(styles['ActionMenu__item-icon'], disabled && styles['ActionMenu__item-icon--disabled'])}\n size={16}\n />\n )}\n </span>\n )}\n\n <span className={styles['ActionMenu__item-text']}>\n <Text\n variant={disabled ? 'muted' : 'default'}\n size={size === 'medium' ? '200' : '100'}\n className={clsx(disabled && styles['ActionMenu__item-content--disabled'])}\n >\n {children}\n </Text>\n </span>\n </>\n ),\n [LeadingVisual, children, selected, disabled, size, type],\n )\n\n if (as === 'a') {\n return (\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n // Intentionally not calling handle[Click/KeyDown] here so as to not call the handler\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n <a\n className={clsx(styles['ActionMenu__item-anchor'], disabled && styles['ActionMenu__item--disabled'])}\n href={props.href}\n >\n {contents}\n </a>\n </li>\n )\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n aria-checked={type === 'none' ? undefined : selected ? 'true' : 'false'}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {contents}\n </li>\n )\n}\n\ntype ActionMenuOverlayProps = PropsWithChildren<\n BaseProps<HTMLUListElement> & React.HTMLAttributes<HTMLUListElement>\n> & {\n 'aria-label': string\n id?: string\n 'data-testid'?: string\n menuOpen?: boolean\n style?: React.CSSProperties\n}\n\nconst ActionMenuOverlay = forwardRef<HTMLUListElement, ActionMenuOverlayProps>(\n ({children, className, 'data-testid': testId, menuOpen, ...rest}, ref) => {\n const {colorMode: defaultColorMode} = useTheme()\n\n const colorMode = className?.includes('ActionMenu__menu--split') ? 'light' : defaultColorMode\n\n return (\n <ThemeProvider colorMode={colorMode}>\n <ul ref={ref} className={clsx(className)} role=\"menu\" data-testid={testId || testIds.list} {...rest}>\n {children}\n </ul>\n </ThemeProvider>\n )\n },\n)\n\n/**\n * Use ActionMenu to display a list of actions or selections that expand through a trigger button.\n * @see https://primer.style/brand/components/ActionMenu\n */\nexport const ActionMenu = Object.assign(_ActionMenuRoot, {\n Button: ActionMenuButton,\n Item: ActionMenuItem,\n Overlay: ActionMenuOverlay,\n testIds,\n})\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ActionMenu.js","names":[],"sources":["../../src/ActionMenu/ActionMenu.tsx"],"sourcesContent":["import React, {\n Children,\n isValidElement,\n cloneElement,\n useRef,\n useCallback,\n useState,\n useEffect,\n PropsWithChildren,\n forwardRef,\n memo,\n ReactElement,\n useMemo,\n} from 'react'\nimport {Button, ButtonProps} from '../Button'\nimport {Text} from '../Text'\nimport {ThemeProvider, useTheme} from '../ThemeProvider'\nimport {useAnchoredPosition} from '../hooks/useAnchoredPosition'\nimport {useOnClickOutside} from '../hooks/useOnClickOutside'\nimport {useKeyboardEscape} from '../hooks/useKeyboardEscape'\n\nimport {clsx} from 'clsx'\nimport {CheckIcon, ChevronDownIcon, type Icon} from '@primer/octicons-react'\nimport {useId} from '../hooks/useId'\n\nimport {FocusKeys, type PositionSettings, focusZone} from '@primer/behaviors'\nimport type {BaseProps} from '../component-helpers'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/action-menu/colors-with-modes.css'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './ActionMenu.module.css'\n\nconst testIds = {\n root: 'ActionMenu',\n get button() {\n return `${this.root}-button`\n },\n get overlay() {\n return `${this.root}-overlay`\n },\n get list() {\n return `${this.root}-list`\n },\n get item() {\n return `${this.root}-list-item`\n },\n}\n\n// primer behaviors doesn't export these values, recreating manually\n// https://github.com/primer/behaviors/blob/main/src/anchored-position.ts#L5\nexport const actionMenuOverlaySides = [\n 'inside-top',\n 'inside-bottom',\n 'inside-left',\n 'inside-right',\n 'inside-center',\n 'outside-top',\n 'outside-bottom',\n 'outside-left',\n 'outside-right',\n] as PositionSettings['side'][]\n\nexport const ActionMenuSizes = ['small', 'medium'] as const\n\nexport const ActionMenuButtonModes = ['default', 'split-button'] as const\nexport type ActionMenuButtonModes = (typeof ActionMenuButtonModes)[number]\n\nexport type ActionMenuSizes = (typeof ActionMenuSizes)[number]\n\nexport type ActionMenuProps = {\n /**\n * The content of the ActionMenu. Must be an ActionMenu.Button and an ActionMenu.Overlay\n */\n children:\n | ReactElement<ActionMenuButtonProps>\n | ReactElement<ActionMenuOverlayProps>\n | Array<ReactElement<ActionMenuButtonProps> | ReactElement<ActionMenuOverlayProps>>\n /**\n * Determines whether the ActionMenu is disabled\n */\n disabled?: boolean\n /**\n * Determines whether the ActionMenu is open by default\n */\n open?: boolean\n /**\n * Callback that is called when an item is selected.\n * The value of the selected item is passed as an argument.\n */\n onSelect?: (newValue: string) => void\n /**\n * The selection variant of the ActionMenu.\n * - `single`: Only one item can be selected at a time. Menu items as a menuitemradio.\n * - `none`: No items can be selected. Menu items as a menuitem.\n */\n selectionVariant?: 'single' | 'none'\n /**\n * Test id for the ActionMenu\n */\n 'data-testid'?: string\n /**\n * Horizontal alignment of the menu relative to the bottom of the button\n */\n menuAlignment?: 'start' | 'end'\n /**\n * Size configuratin of the ActionMenu\n */\n size?: ActionMenuSizes\n /*\n * Side the menu overlay appears\n */\n menuSide?: PositionSettings['side']\n /**\n * Alternative behavior for the button and menu items\n * - `default`: The button and menu items behave as a standard button and menu item.\n * - `split-button`: The button behaves as a split button, and the menu items behave as links.\n */\n mode?: ActionMenuButtonModes\n} & BaseProps<HTMLDivElement>\n\ntype ActionMenuContextType = {\n size?: ActionMenuSizes\n setSize?: React.Dispatch<React.SetStateAction<ActionMenuSizes | undefined>>\n onMenuToggle?: () => void\n}\n\nconst ActionMenuContext = React.createContext<ActionMenuContextType>({})\n\nexport const useActionMenuContext = (): ActionMenuContextType => {\n return React.useContext(ActionMenuContext)\n}\n\ntype ActionMenuProviderProps = ActionMenuProps & Pick<ActionMenuContextType, 'onMenuToggle'>\n\nexport const ActionMenuProvider: React.FC<ActionMenuProviderProps> = ({size, children, onMenuToggle}) => {\n const [currentSize, setSize] = useState(size)\n\n return (\n <ActionMenuContext.Provider value={{size: currentSize, setSize, onMenuToggle}}>\n {children}\n </ActionMenuContext.Provider>\n )\n}\n\nconst _ActionMenuRoot = memo(\n ({\n id,\n children,\n 'data-testid': testId,\n disabled,\n open = false,\n selectionVariant = 'none',\n menuAlignment = 'end',\n size = 'medium',\n menuSide,\n onSelect,\n mode = 'default',\n }: ActionMenuProps) => {\n const [showMenu, setShowMenu] = useState(open)\n const floatingElementRef = useRef<HTMLUListElement>(null)\n const anchorElementRef = useRef<HTMLButtonElement>(null)\n const instanceId = useId(id)\n\n useOnClickOutside(floatingElementRef, () => setShowMenu(false), anchorElementRef)\n\n const closeMenuCallback = useCallback(() => {\n setShowMenu(false)\n }, [])\n\n useKeyboardEscape(closeMenuCallback)\n\n const toggleMenu = useCallback(() => {\n setShowMenu(!showMenu)\n }, [showMenu])\n\n const handleOnSelect = useCallback(\n (newValue: string) => {\n if (onSelect) onSelect(newValue)\n toggleMenu()\n },\n [onSelect, toggleMenu],\n )\n\n const handleItemSelection = useCallback(\n (newValue: string) => {\n handleOnSelect(newValue)\n toggleMenu()\n anchorElementRef.current?.focus()\n },\n [handleOnSelect, toggleMenu, anchorElementRef],\n )\n\n useEffect(() => {\n if (showMenu && floatingElementRef.current) {\n const floatingElement = floatingElementRef.current\n const isSplitLayout = mode === 'split-button'\n const splitLayoutFilter = isSplitLayout ? element => element.tagName === 'A' : undefined\n\n focusZone(floatingElementRef.current, {\n bindKeys: FocusKeys.ArrowVertical,\n focusableElementFilter: splitLayoutFilter,\n focusInStrategy: isSplitLayout ? 'first' : undefined,\n })\n\n // enter selects item\n floatingElement.addEventListener('keydown', event => {\n if (event.key === 'Enter') {\n const target = event.target as HTMLElement\n\n // Get the proper element containing the data-value\n const targetElement = target.tagName === 'A' ? target.closest('li') : target\n\n if (!targetElement || targetElement.getAttribute('aria-disabled') === 'true') return\n\n const value = targetElement.getAttribute('data-value')\n if (value) {\n handleOnSelect(value)\n setShowMenu(false)\n setTimeout(() => {\n anchorElementRef.current?.focus()\n }, 10)\n }\n }\n })\n\n const targetSelector = isSplitLayout ? 'a' : 'li'\n\n // focusses first item\n const firstItem = floatingElementRef.current.querySelector(targetSelector)\n if (firstItem) {\n setTimeout(() => {\n firstItem.focus()\n }, 10)\n }\n\n const lastItem =\n floatingElement.querySelectorAll(targetSelector)[floatingElement.querySelectorAll(targetSelector).length - 1]\n lastItem.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowDown') {\n keyboardEvent.preventDefault()\n firstItem?.focus()\n }\n })\n\n firstItem?.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'ArrowUp') {\n keyboardEvent.preventDefault()\n lastItem.focus()\n }\n })\n\n //on escape refocus\n floatingElement.addEventListener('keydown', (event: Event) => {\n const keyboardEvent = event as KeyboardEvent\n if (keyboardEvent.key === 'Escape') {\n anchorElementRef.current?.focus()\n }\n })\n }\n }, [showMenu, floatingElementRef, mode, handleItemSelection, toggleMenu, handleOnSelect])\n\n // Calculate the position of the menu\n const {position} = useAnchoredPosition(\n {\n floatingElementRef,\n anchorElementRef,\n align: menuAlignment,\n allowOutOfBounds: true,\n side: menuSide,\n },\n [showMenu],\n )\n\n const {Button: SelectButton, Overlay: SelectOverlay} = Children.toArray(children).reduce<{\n Button?: ReactElement<ActionMenuButtonProps>\n Overlay?: ReactElement<ActionMenuOverlayProps>\n }>((acc, child) => {\n if (isValidElement<ActionMenuButtonProps>(child) && child.type === ActionMenuButton) {\n acc.Button = cloneElement(child, {\n ref: anchorElementRef as React.RefObject<HTMLButtonElement>,\n className: clsx(child.props.className, styles[`ActionMenu__button--${mode}`], showMenu),\n menuOpen: showMenu,\n disabled,\n id: `${instanceId}-button`,\n size,\n _mode: mode,\n })\n } else if (isValidElement<ActionMenuOverlayProps>(child) && child.type === ActionMenuOverlay) {\n acc.Overlay = cloneElement(child, {\n ref: floatingElementRef as React.RefObject<HTMLUListElement>,\n className: clsx(\n styles.ActionMenu__menu,\n position && styles['ActionMenu__menu--visible'],\n position && styles[`ActionMenu__menu--pos-${position.anchorSide}`],\n styles[`ActionMenu__menu--${size}`],\n mode === 'split-button' && 'ActionMenu__menu--split',\n ),\n style: {\n top: `${position?.top ?? 0}px`,\n left: `${position?.left ?? 0}px`,\n },\n id: `${instanceId}-menu`,\n children: Children.map(child.props.children, item => {\n if (isValidElement<ActionMenuItemBaseProps>(item)) {\n return cloneElement(item, {\n handler: handleItemSelection,\n type: mode === 'split-button' ? 'link' : selectionVariant,\n })\n }\n return item\n }),\n })\n }\n return acc\n }, {})\n\n return (\n <ActionMenuProvider size={size} onMenuToggle={toggleMenu}>\n <div\n id={instanceId}\n className={clsx(styles.ActionMenu, disabled && styles['ActionMenu--disabled'])}\n data-testid={testId || testIds.root}\n >\n {SelectButton}\n {showMenu ? SelectOverlay : null}\n </div>\n </ActionMenuProvider>\n )\n },\n)\n\ntype ActionMenuButtonProps = PropsWithChildren<\n BaseProps<HTMLButtonElement> & Pick<React.ButtonHTMLAttributes<HTMLButtonElement>, 'id' | 'disabled' | 'onClick'>\n> & {\n as?: ButtonProps<'a'>['as']\n href?: ButtonProps<'a'>['href']\n menuOpen?: boolean\n 'data-testid'?: string\n size?: ActionMenuSizes\n _mode?: ActionMenuButtonModes\n variant?: ButtonProps<'a'>['variant']\n leadingVisual?: ButtonProps<'a'>['leadingVisual']\n}\n\nconst ActionMenuButton = forwardRef<HTMLButtonElement, ActionMenuButtonProps>(\n (\n {\n as,\n href,\n id,\n children,\n className,\n 'data-testid': testId,\n disabled,\n menuOpen,\n size,\n _mode = 'default',\n onClick,\n leadingVisual,\n variant,\n ...props\n },\n ref,\n ) => {\n const {onMenuToggle} = useActionMenuContext()\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n onClick?.(event)\n\n if (!event.defaultPrevented) {\n onMenuToggle?.()\n }\n },\n [onClick, onMenuToggle],\n )\n\n if (_mode === 'split-button') {\n const splitButtonVariant = variant ?? 'primary'\n\n return (\n <div className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}>\n <Button\n as={as}\n href={href}\n className={clsx(\n styles['ActionMenu__innerButton--split-button'],\n styles[`ActionMenu__innerButton--${splitButtonVariant}`],\n styles[`ActionMenu__innerButton--${size}`],\n disabled && styles['ActionMenu__innerButton--disabled'],\n )}\n variant={splitButtonVariant}\n aria-disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n leadingVisual={leadingVisual}\n onClick={onClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n <Button\n ref={ref}\n id={id}\n as=\"button\"\n className={styles['ActionMenu__innerButton--split-button']}\n variant={splitButtonVariant}\n aria-haspopup=\"true\"\n aria-label=\"Menu\"\n size={size}\n aria-expanded={menuOpen ? 'true' : 'false'}\n onClick={onMenuToggle}\n disabled={disabled}\n >\n <ChevronDownIcon className={styles['ActionMenu__inner-button-dropdown-icon']} />\n </Button>\n </div>\n )\n }\n\n return (\n <Button\n ref={ref}\n id={id}\n className={clsx(styles.ActionMenu__button, styles[`ActionMenu__button--${size}`], className)}\n aria-haspopup=\"true\"\n aria-expanded={menuOpen ? 'true' : 'false'}\n disabled={disabled}\n data-testid={testId || testIds.button}\n size={size}\n variant={variant}\n leadingVisual={leadingVisual}\n trailingVisual={<ChevronDownIcon />}\n onClick={handleClick}\n {...props}\n >\n <span className={styles['ActionMenu__button-text']}>{children}</span>\n </Button>\n )\n },\n)\n\ntype ActionMenuItemBaseProps = {\n handler?: (newValue: string) => void\n type?: 'none' | 'single' | 'link'\n disabled?: boolean\n size?: ActionMenuSizes\n leadingVisual?: React.ReactElement | React.ReactNode | Icon\n} & PropsWithChildren<React.HTMLProps<HTMLLIElement>>\n\ntype ActionMenuItemAnchorProps = ActionMenuItemBaseProps & {\n as: 'a'\n} & Omit<React.HTMLProps<HTMLAnchorElement>, keyof ActionMenuItemBaseProps | 'as'>\n\n// Type for when 'as' is not set or is anything other than 'a'\ntype ActionMenuItemDefaultProps = ActionMenuItemBaseProps & {\n as?: string\n value?: string\n selected?: boolean\n} & Omit<React.HTMLProps<HTMLLIElement>, keyof ActionMenuItemBaseProps | 'as'>\n\nconst roleTypeMap = {\n none: 'menuitem',\n single: 'menuitemradio',\n link: 'menuitem',\n}\n\nconst ActionMenuItem = ({\n as,\n children,\n className,\n disabled,\n handler,\n selected,\n type,\n value,\n onClick,\n onKeyDown,\n leadingVisual: LeadingVisual,\n ...props\n}: ActionMenuItemAnchorProps | ActionMenuItemDefaultProps) => {\n const {size} = useActionMenuContext()\n\n const handleClick = useCallback(\n (e: React.MouseEvent<HTMLLIElement>) => {\n onClick?.(e)\n\n if (!disabled) {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onClick],\n )\n\n const handleKeyDown = useCallback(\n (e: React.KeyboardEvent<HTMLLIElement>) => {\n onKeyDown?.(e)\n\n if (!disabled && e.key === 'Enter') {\n handler?.(String(value))\n }\n },\n [handler, value, disabled, onKeyDown],\n )\n\n const liProps = useMemo<React.HTMLProps<HTMLLIElement> & {'data-value': unknown}>(\n () => ({\n className: clsx(\n styles.ActionMenu__item,\n type === 'single' && styles[`ActionMenu__item--selection-type-${type}`],\n size && styles[`ActionMenu__item--${size}`],\n className,\n ),\n role: roleTypeMap[type || 'single'],\n 'aria-disabled': disabled,\n tabIndex: -1,\n 'data-value': value,\n ...props,\n }),\n [props, type, size, className, disabled, value],\n )\n\n const contents = useMemo(\n () => (\n <>\n {React.isValidElement<{width?: number; height?: number}>(LeadingVisual)\n ? React.cloneElement(LeadingVisual, {\n width: LeadingVisual.props.width || 20,\n height: LeadingVisual.props.width || 20,\n })\n : null}\n {type === 'single' && (\n <span className={styles['ActionMenu__item-leadingVisual']}>\n {selected && (\n <CheckIcon\n className={clsx(styles['ActionMenu__item-icon'], disabled && styles['ActionMenu__item-icon--disabled'])}\n size={16}\n />\n )}\n </span>\n )}\n\n <span className={styles['ActionMenu__item-text']}>\n <Text\n variant={disabled ? 'muted' : 'default'}\n size={size === 'medium' ? '200' : '100'}\n className={clsx(disabled && styles['ActionMenu__item-content--disabled'])}\n >\n {children}\n </Text>\n </span>\n </>\n ),\n [LeadingVisual, children, selected, disabled, size, type],\n )\n\n if (as === 'a') {\n return (\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n // Intentionally not calling handle[Click/KeyDown] here so as to not call the handler\n onClick={onClick}\n onKeyDown={onKeyDown}\n >\n <a\n className={clsx(styles['ActionMenu__item-anchor'], disabled && styles['ActionMenu__item--disabled'])}\n href={props.href}\n >\n {contents}\n </a>\n </li>\n )\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/role-supports-aria-props\n <li\n // This role will be overridden by the role prop in `liProps`. It's just here to keep the linter happy\n role=\"menuitem\"\n {...liProps}\n aria-checked={type === 'none' ? undefined : selected ? 'true' : 'false'}\n onClick={handleClick}\n onKeyDown={handleKeyDown}\n >\n {contents}\n </li>\n )\n}\n\ntype ActionMenuOverlayProps = PropsWithChildren<\n BaseProps<HTMLUListElement> & React.HTMLAttributes<HTMLUListElement>\n> & {\n 'aria-label': string\n id?: string\n 'data-testid'?: string\n menuOpen?: boolean\n style?: React.CSSProperties\n}\n\nconst ActionMenuOverlay = forwardRef<HTMLUListElement, ActionMenuOverlayProps>(\n ({children, className, 'data-testid': testId, menuOpen, ...rest}, ref) => {\n const {colorMode: defaultColorMode} = useTheme()\n\n const colorMode = className?.includes('ActionMenu__menu--split') ? 'light' : defaultColorMode\n\n return (\n <ThemeProvider colorMode={colorMode}>\n <ul ref={ref} className={clsx(className)} role=\"menu\" data-testid={testId || testIds.list} {...rest}>\n {children}\n </ul>\n </ThemeProvider>\n )\n },\n)\n\n/**\n * Use ActionMenu to display a list of actions or selections that expand through a trigger button.\n * @see https://primer.style/brand/components/ActionMenu\n */\nexport const ActionMenu = Object.assign(_ActionMenuRoot, {\n Button: ActionMenuButton,\n Item: ActionMenuItem,\n Overlay: ActionMenuOverlay,\n testIds,\n})\n"],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import e from "../node_modules/clsx/dist/clsx.js";
|
|
2
2
|
import { useId as t } from "../hooks/useId.js";
|
|
3
3
|
import { Text as n } from "../Text/Text.js";
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
4
|
+
import { Button as r } from "../Button/Button.js";
|
|
5
|
+
import { useKeyboardEscape as i } from "../hooks/useKeyboardEscape.js";
|
|
6
|
+
import { ChevronDownIcon as a, ChevronUpIcon as o } from "../node_modules/@primer/octicons-react/dist/index.esm.js";
|
|
7
|
+
import { useWindowSize as s } from "../hooks/useWindowSize.js";
|
|
8
8
|
import c from "./AnchorNav.module.js";
|
|
9
9
|
import { useExpandedMenu as l } from "./useExpandedMenu.js";
|
|
10
10
|
import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/anchor-nav/colors-with-modes-98imfMkq.css';/* empty css */
|
|
@@ -29,15 +29,15 @@ var v = {
|
|
|
29
29
|
return `${this.root}-nav-spacer`;
|
|
30
30
|
}
|
|
31
31
|
};
|
|
32
|
-
function y({ children:
|
|
33
|
-
let [T, E] = h(!1), [D, ee] = h(!1), [O, k] = h(), [A, j] = h(), [M, N] = h(), [P, F] = h(!1), [I, L] = h(0), R = m(null), z = m(null), B = m(null), V = m(null), { isLarge: H } =
|
|
32
|
+
function y({ children: r, enableDefaultBgColor: y = !1, hideUntilSticky: C = !1, ...w }) {
|
|
33
|
+
let [T, E] = h(!1), [D, ee] = h(!1), [O, k] = h(), [A, j] = h(), [M, N] = h(), [P, F] = h(!1), [I, L] = h(0), R = m(null), z = m(null), B = m(null), V = m(null), { isLarge: H } = s(), U = t(), W = d(() => E(!1), [E]), G = d(() => E(!T), [T]), K = p(() => u.Children.toArray(r).filter((e) => u.isValidElement(e) && typeof e.type != "string"), [r]);
|
|
34
34
|
f(() => {
|
|
35
35
|
M === void 0 && A && N(A.boundingClientRect.y + window.scrollY);
|
|
36
36
|
}, [M, A]);
|
|
37
37
|
let q = ([e]) => {
|
|
38
38
|
j(e);
|
|
39
39
|
};
|
|
40
|
-
|
|
40
|
+
i(W), l(T, B, V, !H, W), f(() => {
|
|
41
41
|
if (R.current) {
|
|
42
42
|
let e = R.current.offsetHeight;
|
|
43
43
|
L(e);
|
|
@@ -104,7 +104,7 @@ function y({ children: a, enableDefaultBgColor: y = !1, hideUntilSticky: C = !1,
|
|
|
104
104
|
"aria-controls": U,
|
|
105
105
|
"data-testid": v.menuButton,
|
|
106
106
|
children: [
|
|
107
|
-
g(T ?
|
|
107
|
+
g(T ? o : a, {
|
|
108
108
|
size: 16,
|
|
109
109
|
className: c["AnchorNav-menu-button-arrow"],
|
|
110
110
|
fill: "currentcolor"
|
|
@@ -145,8 +145,8 @@ function y({ children: a, enableDefaultBgColor: y = !1, hideUntilSticky: C = !1,
|
|
|
145
145
|
})]
|
|
146
146
|
});
|
|
147
147
|
}
|
|
148
|
-
function b({ alignment: t = "start", children: r, href: i, isActive: a, toggleMenuCallback:
|
|
149
|
-
let { isLarge: _ } =
|
|
148
|
+
function b({ alignment: t = "start", children: r, href: i, isActive: a, toggleMenuCallback: o, prefersReducedMotion: l, intersectionOptions: u = { rootMargin: "middle" }, updateCurrentActiveNav: p, ...m }) {
|
|
149
|
+
let { isLarge: _ } = s(), [v, y] = h(), b = /^#/.test(i), x = !!v?.isIntersecting, S = ([e]) => {
|
|
150
150
|
y(e);
|
|
151
151
|
};
|
|
152
152
|
f(() => {
|
|
@@ -170,8 +170,8 @@ function b({ alignment: t = "start", children: r, href: i, isActive: a, toggleMe
|
|
|
170
170
|
p
|
|
171
171
|
]);
|
|
172
172
|
let C = d(() => {
|
|
173
|
-
|
|
174
|
-
}, [_,
|
|
173
|
+
o && !_ && o();
|
|
174
|
+
}, [_, o]);
|
|
175
175
|
return /* @__PURE__ */ g("a", {
|
|
176
176
|
className: e(c["AnchorNav-link"], c[`AnchorNav-link--${t}`], x && c["AnchorNav-link--is-active"]),
|
|
177
177
|
href: b ? i : `#${i}`,
|
|
@@ -187,26 +187,26 @@ function b({ alignment: t = "start", children: r, href: i, isActive: a, toggleMe
|
|
|
187
187
|
})
|
|
188
188
|
});
|
|
189
189
|
}
|
|
190
|
-
function x({ children: t, href: n, variant:
|
|
191
|
-
return /* @__PURE__ */ g(
|
|
190
|
+
function x({ children: t, href: n, variant: i = "secondary", size: a = "small", ...o }) {
|
|
191
|
+
return /* @__PURE__ */ g(r, {
|
|
192
192
|
as: "a",
|
|
193
|
-
variant:
|
|
193
|
+
variant: i,
|
|
194
194
|
className: e(c["AnchorNav-action"]),
|
|
195
195
|
href: n,
|
|
196
196
|
"data-testid": v.action,
|
|
197
|
-
size:
|
|
197
|
+
size: a,
|
|
198
198
|
...o,
|
|
199
199
|
children: t
|
|
200
200
|
});
|
|
201
201
|
}
|
|
202
|
-
function S({ children: t, href: n, variant:
|
|
203
|
-
return /* @__PURE__ */ g(
|
|
202
|
+
function S({ children: t, href: n, variant: i = "secondary", size: a = "small", ...o }) {
|
|
203
|
+
return /* @__PURE__ */ g(r, {
|
|
204
204
|
as: "a",
|
|
205
|
-
variant:
|
|
205
|
+
variant: i,
|
|
206
206
|
className: e(c["AnchorNav-action"]),
|
|
207
207
|
href: n,
|
|
208
208
|
"data-testid": v.secondaryAction,
|
|
209
|
-
size:
|
|
209
|
+
size: a,
|
|
210
210
|
...o,
|
|
211
211
|
children: t
|
|
212
212
|
});
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.Primer_Brand__Avatar-module__Avatar___VP3QQ{width:var(--base-size-40);height:var(--base-size-40);display:inline-block;overflow:hidden}.Primer_Brand__Avatar-module__Avatar--shape-circle___Yz6Zj{border-radius:var(--brand-borderRadius-full)}.Primer_Brand__Avatar-module__Avatar--shape-square___f2Rrz{border-radius:var(--brand-borderRadius-medium)}.Primer_Brand__Avatar-module__Avatar__image___ImYTc{-o-object-fit:cover;object-fit:cover;width:100%;height:100%;display:block}.Primer_Brand__Avatar-module__Avatar--size-32___P1cC2{width:var(--base-size-32);height:var(--base-size-32)}.Primer_Brand__Avatar-module__Avatar--size-40___fFZWc{width:var(--base-size-40);height:var(--base-size-40)}.Primer_Brand__Avatar-module__Avatar--size-48___ZrSSm{width:var(--base-size-48);height:var(--base-size-48)}.Primer_Brand__Avatar-module__Avatar--size-64___QMrC7{width:var(--base-size-64);height:var(--base-size-64)}.Primer_Brand__Avatar-module__Avatar--size-80___1NIGx{width:var(--base-size-80);height:var(--base-size-80)}.Primer_Brand__Avatar-module__Avatar-narrow--size-32___Dl3Q7{width:var(--base-size-32);height:var(--base-size-32)}.Primer_Brand__Avatar-module__Avatar-narrow--size-40___8KQIy{width:var(--base-size-40);height:var(--base-size-40)}.Primer_Brand__Avatar-module__Avatar-narrow--size-48___gN_Ov{width:var(--base-size-48);height:var(--base-size-48)}@media screen and (width>=48rem){.Primer_Brand__Avatar-module__Avatar-regular--size-32___Keys0{width:var(--base-size-32);height:var(--base-size-32)}.Primer_Brand__Avatar-module__Avatar-regular--size-40___bajRu{width:var(--base-size-40);height:var(--base-size-40)}.Primer_Brand__Avatar-module__Avatar-regular--size-48___f2itY{width:var(--base-size-48);height:var(--base-size-48)}.Primer_Brand__Avatar-module__Avatar-regular--size-64___6_jqI{width:var(--base-size-64);height:var(--base-size-64)}.Primer_Brand__Avatar-module__Avatar-regular--size-80___q7H8m{width:var(--base-size-80);height:var(--base-size-80)}}@media screen and (width>=80rem){.Primer_Brand__Avatar-module__Avatar-wide--size-32___g7fYr{width:var(--base-size-32);height:var(--base-size-32)}.Primer_Brand__Avatar-module__Avatar-wide--size-40___48LVl{width:var(--base-size-40);height:var(--base-size-40)}.Primer_Brand__Avatar-module__Avatar-wide--size-48___cwlSk{width:var(--base-size-48);height:var(--base-size-48)}.Primer_Brand__Avatar-module__Avatar-wide--size-64___w72xb{width:var(--base-size-64);height:var(--base-size-64)}.Primer_Brand__Avatar-module__Avatar-wide--size-80___MptXL{width:var(--base-size-80);height:var(--base-size-80)}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import './Avatar.module-
|
|
1
|
+
import './Avatar.module-DUQdD7On.css';var e = {
|
|
2
2
|
Avatar: "Primer_Brand__Avatar-module__Avatar___VP3QQ",
|
|
3
3
|
"Avatar--shape-circle": "Primer_Brand__Avatar-module__Avatar--shape-circle___Yz6Zj",
|
|
4
4
|
"Avatar--shape-square": "Primer_Brand__Avatar-module__Avatar--shape-square___f2Rrz",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Avatar.module.js","names":[],"sources":["../../src/Avatar/Avatar.module.css"],"sourcesContent":[".Avatar {\n display: inline-block;\n overflow: hidden;\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Avatar--shape-circle {\n border-radius: var(--brand-borderRadius-full);\n}\n\n.Avatar--shape-square {\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Avatar__image {\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.Avatar--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n}\n\n.Avatar--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Avatar--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n}\n\n.Avatar--size-64 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n}\n\n.Avatar--size-80 {\n width: var(--base-size-80);\n height: var(--base-size-80);\n}\n\n.Avatar-narrow--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n}\n\n.Avatar-narrow--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Avatar-narrow--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n}\n\n@media screen and (min-width: 48rem) {\n .Avatar-regular--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n }\n\n .Avatar-regular--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n }\n\n .Avatar-regular--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n }\n\n .Avatar-regular--size-64 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n }\n\n .Avatar-regular--size-80 {\n width: var(--base-size-80);\n height: var(--base-size-80);\n }\n}\n\n@media screen and (min-width: 80rem) {\n .Avatar-wide--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n }\n\n .Avatar-wide--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n }\n\n .Avatar-wide--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n }\n\n .Avatar-wide--size-64 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n }\n\n .Avatar-wide--size-80 {\n width: var(--base-size-80);\n height: var(--base-size-80);\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"Avatar.module.js","names":[],"sources":["../../src/Avatar/Avatar.module.css"],"sourcesContent":[".Avatar {\n display: inline-block;\n overflow: hidden;\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Avatar--shape-circle {\n border-radius: var(--brand-borderRadius-full);\n}\n\n.Avatar--shape-square {\n border-radius: var(--brand-borderRadius-medium);\n}\n\n.Avatar__image {\n display: block;\n width: 100%;\n height: 100%;\n object-fit: cover;\n}\n\n.Avatar--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n}\n\n.Avatar--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Avatar--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n}\n\n.Avatar--size-64 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n}\n\n.Avatar--size-80 {\n width: var(--base-size-80);\n height: var(--base-size-80);\n}\n\n.Avatar-narrow--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n}\n\n.Avatar-narrow--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n}\n\n.Avatar-narrow--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n}\n\n@media screen and (min-width: 48rem) {\n .Avatar-regular--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n }\n\n .Avatar-regular--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n }\n\n .Avatar-regular--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n }\n\n .Avatar-regular--size-64 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n }\n\n .Avatar-regular--size-80 {\n width: var(--base-size-80);\n height: var(--base-size-80);\n }\n}\n\n@media screen and (min-width: 80rem) {\n .Avatar-wide--size-32 {\n width: var(--base-size-32);\n height: var(--base-size-32);\n }\n\n .Avatar-wide--size-40 {\n width: var(--base-size-40);\n height: var(--base-size-40);\n }\n\n .Avatar-wide--size-48 {\n width: var(--base-size-48);\n height: var(--base-size-48);\n }\n\n .Avatar-wide--size-64 {\n width: var(--base-size-64);\n height: var(--base-size-64);\n }\n\n .Avatar-wide--size-80 {\n width: var(--base-size-80);\n height: var(--base-size-80);\n }\n}\n"],"mappings":""}
|
package/esm/BreakoutBanner/{BreakoutBanner.module-DGBSJFNJ.css → BreakoutBanner.module-gfmzcUSU.css}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
.Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la{max-width:var(--brand-breakpoint-xlarge);border-radius:var(--brand-borderRadius-large);background-repeat:no-repeat;background-color:var(--brand-BreakoutBanner-narrow-background-color,var(--brand-BreakoutBanner-background-color));background-image:var(--brand-BreakoutBanner-narrow-background-image-src,var(--brand-BreakoutBanner-background-image-src));background-size:var(--brand-BreakoutBanner-narrow-background-image-size,var(--brand-BreakoutBanner-background-image-size));background-position:50%;background-position:var(--brand-BreakoutBanner-narrow-background-image-position,var(--brand-BreakoutBanner-background-image-position,center));width:100%;margin:0 auto;display:flex;position:relative}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-container___JC9dt{border-radius:var(--brand-borderRadius-xlarge);padding:var(--base-size-40) var(--base-size-24) var(--base-size-128);z-index:1;box-sizing:border-box;width:100%}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-content___gZsEk{flex-direction:column;align-items:flex-start;display:flex}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-container--background___Uex_J{background:var(--brand-BreakoutBanner-bgColor)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-content--center___oB7l0{text-align:center;align-items:center}.Primer_Brand__BreakoutBanner-module__BreakoutBanner__heading___9zftT{max-width:20ch}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-description___nFBHL{max-width:54ch;margin-block-start:var(--base-size-16)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-linkGroup___g_h1l{margin-block-start:var(--base-size-48)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-leadingVisual___GRbZf{margin-block-end:var(--base-size-48)}@media screen and (width>=48rem){.Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la{background-color:var(--brand-BreakoutBanner-regular-background-color,var(--brand-BreakoutBanner-background-color));background-image:var(--brand-BreakoutBanner-regular-background-image-src,var(--brand-BreakoutBanner-background-image-src));background-size:var(--brand-BreakoutBanner-regular-background-image-size,var(--brand-BreakoutBanner-background-image-size));background-position:var(--brand-BreakoutBanner-regular-background-image-position,var(--brand-BreakoutBanner-background-image-position))}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-container___JC9dt{padding:var(--base-size-48)}}@media screen and (width>=80rem){.Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la{background-color:var(--brand-BreakoutBanner-wide-background-color,var(--brand-BreakoutBanner-background-color));background-image:var(--brand-BreakoutBanner-wide-background-image-src,var(--brand-BreakoutBanner-background-image-src));background-size:var(--brand-BreakoutBanner-wide-background-image-size,var(--brand-BreakoutBanner-background-image-size));background-position:var(--brand-BreakoutBanner-wide-background-image-position,var(--brand-BreakoutBanner-background-image-position))}}
|
|
1
|
+
.Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la{max-width:var(--brand-breakpoint-xlarge);border-radius:var(--brand-borderRadius-large);background-repeat:no-repeat;background-color:var(--brand-BreakoutBanner-narrow-background-color,var(--brand-BreakoutBanner-background-color));background-image:var(--brand-BreakoutBanner-narrow-background-image-src,var(--brand-BreakoutBanner-background-image-src));background-size:var(--brand-BreakoutBanner-narrow-background-image-size,var(--brand-BreakoutBanner-background-image-size));background-position:50%;background-position:var(--brand-BreakoutBanner-narrow-background-image-position,var(--brand-BreakoutBanner-background-image-position,center));width:100%;margin:0 auto;display:flex;position:relative}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-container___JC9dt{border-radius:var(--brand-borderRadius-xlarge);padding:var(--base-size-40) var(--base-size-24) var(--base-size-128);z-index:1;box-sizing:border-box;width:100%}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-content___gZsEk{flex-direction:column;align-items:flex-start;display:flex}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-container--background___Uex_J{background:var(--brand-BreakoutBanner-bgColor)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-content--center___oB7l0{text-align:center;align-items:center}.Primer_Brand__BreakoutBanner-module__BreakoutBanner__heading___9zftT{max-width:20ch}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-description___nFBHL{max-width:54ch;margin-block-start:var(--base-size-16)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-linkGroup___g_h1l{margin-block-start:var(--base-size-48)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-leadingVisual___GRbZf{margin-block-end:var(--base-size-48)}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-leadingVisual___GRbZf img,.Primer_Brand__BreakoutBanner-module__BreakoutBanner-leadingVisual___GRbZf picture{display:block}@media screen and (width>=48rem){.Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la{background-color:var(--brand-BreakoutBanner-regular-background-color,var(--brand-BreakoutBanner-background-color));background-image:var(--brand-BreakoutBanner-regular-background-image-src,var(--brand-BreakoutBanner-background-image-src));background-size:var(--brand-BreakoutBanner-regular-background-image-size,var(--brand-BreakoutBanner-background-image-size));background-position:var(--brand-BreakoutBanner-regular-background-image-position,var(--brand-BreakoutBanner-background-image-position))}.Primer_Brand__BreakoutBanner-module__BreakoutBanner-container___JC9dt{padding:var(--base-size-48)}}@media screen and (width>=80rem){.Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la{background-color:var(--brand-BreakoutBanner-wide-background-color,var(--brand-BreakoutBanner-background-color));background-image:var(--brand-BreakoutBanner-wide-background-image-src,var(--brand-BreakoutBanner-background-image-src));background-size:var(--brand-BreakoutBanner-wide-background-image-size,var(--brand-BreakoutBanner-background-image-size));background-position:var(--brand-BreakoutBanner-wide-background-image-position,var(--brand-BreakoutBanner-background-image-position))}}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import './BreakoutBanner.module-
|
|
1
|
+
import './BreakoutBanner.module-gfmzcUSU.css';var e = {
|
|
2
2
|
BreakoutBanner: "Primer_Brand__BreakoutBanner-module__BreakoutBanner___QH5la",
|
|
3
3
|
"BreakoutBanner-container": "Primer_Brand__BreakoutBanner-module__BreakoutBanner-container___JC9dt",
|
|
4
4
|
"BreakoutBanner-content": "Primer_Brand__BreakoutBanner-module__BreakoutBanner-content___gZsEk",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BreakoutBanner.module.js","names":[],"sources":["../../src/BreakoutBanner/BreakoutBanner.module.css"],"sourcesContent":[".BreakoutBanner {\n position: relative;\n margin: 0 auto;\n display: flex;\n max-width: var(--brand-breakpoint-xlarge);\n width: 100%;\n border-radius: var(--brand-borderRadius-large);\n background-repeat: no-repeat;\n background-color: var(--brand-BreakoutBanner-narrow-background-color, var(--brand-BreakoutBanner-background-color));\n background-image: var(\n --brand-BreakoutBanner-narrow-background-image-src,\n var(--brand-BreakoutBanner-background-image-src)\n );\n background-size: var(\n --brand-BreakoutBanner-narrow-background-image-size,\n var(--brand-BreakoutBanner-background-image-size)\n );\n\n background-position: var(\n --brand-BreakoutBanner-narrow-background-image-position,\n var(--brand-BreakoutBanner-background-image-position, center)\n );\n}\n\n.BreakoutBanner-container {\n border-radius: var(--brand-borderRadius-xlarge);\n padding: var(--base-size-40) var(--base-size-24) var(--base-size-128);\n z-index: 1;\n width: 100%;\n box-sizing: border-box;\n}\n\n.BreakoutBanner-content {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.BreakoutBanner-container--background {\n background: var(--brand-BreakoutBanner-bgColor);\n}\n\n.BreakoutBanner-content--center {\n align-items: center;\n text-align: center;\n}\n\n.BreakoutBanner__heading {\n max-width: 20ch;\n}\n\n.BreakoutBanner-description {\n max-width: 54ch;\n margin-block-start: var(--base-size-16);\n}\n\n.BreakoutBanner-linkGroup {\n margin-block-start: var(--base-size-48);\n}\n\n.BreakoutBanner-leadingVisual {\n margin-block-end: var(--base-size-48);\n}\n\n/* Regular */\n@media screen and (min-width: 48rem) {\n .BreakoutBanner {\n background-color: var(\n --brand-BreakoutBanner-regular-background-color,\n var(--brand-BreakoutBanner-background-color)\n );\n background-image: var(\n --brand-BreakoutBanner-regular-background-image-src,\n var(--brand-BreakoutBanner-background-image-src)\n );\n background-size: var(\n --brand-BreakoutBanner-regular-background-image-size,\n var(--brand-BreakoutBanner-background-image-size)\n );\n background-position: var(\n --brand-BreakoutBanner-regular-background-image-position,\n var(--brand-BreakoutBanner-background-image-position)\n );\n }\n\n .BreakoutBanner-container {\n padding: var(--base-size-48);\n }\n}\n\n/* Wide */\n@media screen and (min-width: 80rem) {\n .BreakoutBanner {\n background-color: var(--brand-BreakoutBanner-wide-background-color, var(--brand-BreakoutBanner-background-color));\n background-image: var(\n --brand-BreakoutBanner-wide-background-image-src,\n var(--brand-BreakoutBanner-background-image-src)\n );\n background-size: var(\n --brand-BreakoutBanner-wide-background-image-size,\n var(--brand-BreakoutBanner-background-image-size)\n );\n\n background-position: var(\n --brand-BreakoutBanner-wide-background-image-position,\n var(--brand-BreakoutBanner-background-image-position)\n );\n }\n}\n"],"mappings":""}
|
|
1
|
+
{"version":3,"file":"BreakoutBanner.module.js","names":[],"sources":["../../src/BreakoutBanner/BreakoutBanner.module.css"],"sourcesContent":[".BreakoutBanner {\n position: relative;\n margin: 0 auto;\n display: flex;\n max-width: var(--brand-breakpoint-xlarge);\n width: 100%;\n border-radius: var(--brand-borderRadius-large);\n background-repeat: no-repeat;\n background-color: var(--brand-BreakoutBanner-narrow-background-color, var(--brand-BreakoutBanner-background-color));\n background-image: var(\n --brand-BreakoutBanner-narrow-background-image-src,\n var(--brand-BreakoutBanner-background-image-src)\n );\n background-size: var(\n --brand-BreakoutBanner-narrow-background-image-size,\n var(--brand-BreakoutBanner-background-image-size)\n );\n\n background-position: var(\n --brand-BreakoutBanner-narrow-background-image-position,\n var(--brand-BreakoutBanner-background-image-position, center)\n );\n}\n\n.BreakoutBanner-container {\n border-radius: var(--brand-borderRadius-xlarge);\n padding: var(--base-size-40) var(--base-size-24) var(--base-size-128);\n z-index: 1;\n width: 100%;\n box-sizing: border-box;\n}\n\n.BreakoutBanner-content {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n}\n\n.BreakoutBanner-container--background {\n background: var(--brand-BreakoutBanner-bgColor);\n}\n\n.BreakoutBanner-content--center {\n align-items: center;\n text-align: center;\n}\n\n.BreakoutBanner__heading {\n max-width: 20ch;\n}\n\n.BreakoutBanner-description {\n max-width: 54ch;\n margin-block-start: var(--base-size-16);\n}\n\n.BreakoutBanner-linkGroup {\n margin-block-start: var(--base-size-48);\n}\n\n.BreakoutBanner-leadingVisual {\n margin-block-end: var(--base-size-48);\n}\n\n.BreakoutBanner-leadingVisual :is(img, picture) {\n display: block;\n}\n\n/* Regular */\n@media screen and (min-width: 48rem) {\n .BreakoutBanner {\n background-color: var(\n --brand-BreakoutBanner-regular-background-color,\n var(--brand-BreakoutBanner-background-color)\n );\n background-image: var(\n --brand-BreakoutBanner-regular-background-image-src,\n var(--brand-BreakoutBanner-background-image-src)\n );\n background-size: var(\n --brand-BreakoutBanner-regular-background-image-size,\n var(--brand-BreakoutBanner-background-image-size)\n );\n background-position: var(\n --brand-BreakoutBanner-regular-background-image-position,\n var(--brand-BreakoutBanner-background-image-position)\n );\n }\n\n .BreakoutBanner-container {\n padding: var(--base-size-48);\n }\n}\n\n/* Wide */\n@media screen and (min-width: 80rem) {\n .BreakoutBanner {\n background-color: var(--brand-BreakoutBanner-wide-background-color, var(--brand-BreakoutBanner-background-color));\n background-image: var(\n --brand-BreakoutBanner-wide-background-image-src,\n var(--brand-BreakoutBanner-background-image-src)\n );\n background-size: var(\n --brand-BreakoutBanner-wide-background-image-size,\n var(--brand-BreakoutBanner-background-image-size)\n );\n\n background-position: var(\n --brand-BreakoutBanner-wide-background-image-position,\n var(--brand-BreakoutBanner-background-image-position)\n );\n }\n}\n"],"mappings":""}
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import type { BaseProps } from '../component-helpers';
|
|
3
3
|
import { ButtonProps } from '../Button';
|
|
4
|
+
import { ActionMenuProps } from '../ActionMenu';
|
|
4
5
|
export type PrimerBrandButtonType = React.ReactElement<ButtonProps<React.ElementType<'button' | 'a'>>>;
|
|
6
|
+
export type PrimerBrandActionMenuType = React.ReactElement<ActionMenuProps>;
|
|
5
7
|
export type ButtonGroupProps = BaseProps<HTMLDivElement> & {
|
|
6
|
-
children: PrimerBrandButtonType
|
|
8
|
+
children: Array<PrimerBrandButtonType | PrimerBrandActionMenuType> | PrimerBrandButtonType | PrimerBrandActionMenuType;
|
|
7
9
|
buttonSize?: ButtonProps<'button' | 'a'>['size'];
|
|
8
10
|
buttonsAs?: 'button' | 'a';
|
|
9
11
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAS,WAAW,EAAC,MAAM,WAAW,CAAA;
|
|
1
|
+
{"version":3,"file":"ButtonGroup.d.ts","sourceRoot":"","sources":["../../src/ButtonGroup/ButtonGroup.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA6B,MAAM,OAAO,CAAA;AAEjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AACnD,OAAO,EAAS,WAAW,EAAC,MAAM,WAAW,CAAA;AAC7C,OAAO,EAAa,eAAe,EAAC,MAAM,eAAe,CAAA;AAGzD,MAAM,MAAM,qBAAqB,GAAG,KAAK,CAAC,YAAY,CAAC,WAAW,CAAC,KAAK,CAAC,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,CAAC,CAAA;AACtG,MAAM,MAAM,yBAAyB,GAAG,KAAK,CAAC,YAAY,CAAC,eAAe,CAAC,CAAA;AAE3E,MAAM,MAAM,gBAAgB,GAAG,SAAS,CAAC,cAAc,CAAC,GAAG;IACzD,QAAQ,EAAE,KAAK,CAAC,qBAAqB,GAAG,yBAAyB,CAAC,GAAG,qBAAqB,GAAG,yBAAyB,CAAA;IACtH,UAAU,CAAC,EAAE,WAAW,CAAC,QAAQ,GAAG,GAAG,CAAC,CAAC,MAAM,CAAC,CAAA;IAChD,SAAS,CAAC,EAAE,QAAQ,GAAG,GAAG,CAAA;CAC3B,CAAA;AAED,eAAO,MAAM,WAAW,sGA6CvB,CAAA"}
|