@primer/react-brand 0.75.0-rc.c3abcc84 → 0.75.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/index.md +2 -2
- package/esm/Accordion/Accordion.d.ts +2 -2
- package/esm/Accordion/Accordion.d.ts.map +1 -1
- package/esm/Accordion/Accordion.js +2 -2
- package/esm/Accordion/Accordion.js.map +1 -1
- package/esm/Accordion/Accordion.module.js +6 -5
- package/esm/ActionMenu/ActionMenu.d.ts +2 -2
- package/esm/ActionMenu/ActionMenu.js +3 -2
- package/esm/ActionMenu/ActionMenu.js.map +1 -1
- package/esm/ActionMenu/ActionMenu.module.js +7 -6
- package/esm/AnchorNav/AnchorNav.d.ts +4 -4
- package/esm/AnchorNav/AnchorNav.d.ts.map +1 -1
- package/esm/AnchorNav/AnchorNav.js +9 -4
- package/esm/AnchorNav/AnchorNav.js.map +1 -1
- package/esm/AnchorNav/AnchorNav.module.js +5 -4
- package/esm/AnchorNav/useExpandedMenu.js.map +1 -1
- package/esm/Avatar/Avatar.js +1 -1
- package/esm/Avatar/Avatar.js.map +1 -1
- package/esm/Avatar/Avatar.module.js +5 -4
- package/esm/Bento/Bento.d.ts +4 -4
- package/esm/Bento/Bento.js +1 -1
- package/esm/Bento/Bento.js.map +1 -1
- package/esm/Bento/Bento.module.js +7 -6
- package/esm/Box/Box.d.ts +1 -1
- package/esm/Box/Box.d.ts.map +1 -1
- package/esm/Box/Box.js +1 -1
- package/esm/Box/Box.js.map +1 -1
- package/esm/Breadcrumbs/Breadcrumbs.js +1 -1
- package/esm/Breadcrumbs/Breadcrumbs.js.map +1 -1
- package/esm/Breadcrumbs/Breadcrumbs.module.js +7 -6
- package/esm/BreakoutBanner/BreakoutBanner.js +1 -1
- package/esm/BreakoutBanner/BreakoutBanner.js.map +1 -1
- package/esm/BreakoutBanner/BreakoutBanner.module.js +5 -4
- package/esm/Button/Button.js +1 -1
- package/esm/Button/Button.js.map +1 -1
- package/esm/Button/Button.module.js +5 -4
- package/esm/ButtonGroup/ButtonGroup.js +1 -1
- package/esm/ButtonGroup/ButtonGroup.js.map +1 -1
- package/esm/ButtonGroup/ButtonGroup.module.js +3 -2
- package/esm/CTABanner/CTABanner.d.ts +1 -1
- package/esm/CTABanner/CTABanner.js +2 -2
- package/esm/CTABanner/CTABanner.js.map +1 -1
- package/esm/CTABanner/CTABanner.module.js +4 -3
- package/esm/CTAForm/CTAForm.js +1 -1
- package/esm/CTAForm/CTAForm.js.map +1 -1
- package/esm/CTAForm/CTAForm.module.js +4 -3
- package/esm/Card/Card.d.ts +2 -2
- package/esm/Card/Card.d.ts.map +1 -1
- package/esm/Card/Card.js +3 -3
- package/esm/Card/Card.js.map +1 -1
- package/esm/Card/Card.module.js +18 -17
- package/esm/ComparisonTable/ComparisonTable.d.ts +3 -3
- package/esm/ComparisonTable/ComparisonTable.js +1 -1
- package/esm/ComparisonTable/ComparisonTable.js.map +1 -1
- package/esm/ComparisonTable/ComparisonTable.module.js +4 -3
- package/esm/ExpandableArrow/ExpandableArrow.d.ts +2 -1
- package/esm/ExpandableArrow/ExpandableArrow.d.ts.map +1 -1
- package/esm/ExpandableArrow/ExpandableArrow.js +1 -1
- package/esm/ExpandableArrow/ExpandableArrow.js.map +1 -1
- package/esm/ExpandableArrow/ExpandableArrow.module.js +4 -3
- package/esm/EyebrowBanner/EyebrowBanner.js +2 -2
- package/esm/EyebrowBanner/EyebrowBanner.js.map +1 -1
- package/esm/EyebrowBanner/EyebrowBanner.module.js +12 -11
- package/esm/EyebrowText/EyebrowText.js +1 -1
- package/esm/EyebrowText/EyebrowText.js.map +1 -1
- package/esm/EyebrowText/EyebrowText.module.js +4 -3
- package/esm/FAQ/FAQ.d.ts +2 -2
- package/esm/FAQ/FAQ.d.ts.map +1 -1
- package/esm/FAQ/FAQ.js +1 -1
- package/esm/FAQ/FAQ.js.map +1 -1
- package/esm/FAQ/FAQ.module.js +7 -6
- package/esm/FAQ/FAQGroup.d.ts +2 -2
- package/esm/FAQ/FAQGroup.d.ts.map +1 -1
- package/esm/FAQ/FAQGroup.js +7 -3
- package/esm/FAQ/FAQGroup.js.map +1 -1
- package/esm/FAQ/FAQGroup.module.js +8 -7
- package/esm/Footnotes/Footnotes.d.ts +2 -2
- package/esm/Footnotes/Footnotes.d.ts.map +1 -1
- package/esm/Footnotes/Footnotes.js +2 -2
- package/esm/Footnotes/Footnotes.js.map +1 -1
- package/esm/Footnotes/Footnotes.module.js +7 -6
- package/esm/FrostedGlassVFX/FrostedGlassVFX.d.ts +1 -1
- package/esm/FrostedGlassVFX/FrostedGlassVFX.d.ts.map +1 -1
- package/esm/FrostedGlassVFX/FrostedGlassVFX.js +1 -1
- package/esm/FrostedGlassVFX/FrostedGlassVFX.js.map +1 -1
- package/esm/FrostedGlassVFX/FrostedGlassVFX.module.js +4 -3
- package/esm/Grid/Grid.d.ts +2 -2
- package/esm/Grid/Grid.js +2 -2
- package/esm/Grid/Grid.js.map +1 -1
- package/esm/Grid/Grid.module.js +5 -4
- package/esm/Heading/Heading.js +1 -1
- package/esm/Heading/Heading.js.map +1 -1
- package/esm/Heading/Heading.module.js +4 -3
- package/esm/Hero/Hero.js +1 -1
- package/esm/Hero/Hero.js.map +1 -1
- package/esm/Hero/Hero.module.js +4 -3
- package/esm/Hero/HeroContext.js.map +1 -1
- package/esm/Hero/sub-components/HeroButtonGroup.js +1 -1
- package/esm/Hero/sub-components/HeroButtonGroup.js.map +1 -1
- package/esm/Hero/sub-components/HeroDescription.js +1 -1
- package/esm/Hero/sub-components/HeroDescription.js.map +1 -1
- package/esm/Hero/sub-components/HeroEyebrow.js +1 -1
- package/esm/Hero/sub-components/HeroEyebrow.js.map +1 -1
- package/esm/Hero/sub-components/HeroHeading.js +1 -1
- package/esm/Hero/sub-components/HeroHeading.js.map +1 -1
- package/esm/Hero/sub-components/HeroImage.js +1 -1
- package/esm/Hero/sub-components/HeroImage.js.map +1 -1
- package/esm/Hero/sub-components/HeroLabel.js +1 -1
- package/esm/Hero/sub-components/HeroLabel.js.map +1 -1
- package/esm/Hero/sub-components/HeroPrimaryAction.js.map +1 -1
- package/esm/Hero/sub-components/HeroSecondaryAction.js.map +1 -1
- package/esm/Hero/sub-components/HeroVideo.js +2 -2
- package/esm/Hero/sub-components/HeroVideo.js.map +1 -1
- package/esm/IDE/IDE.d.ts +1 -1
- package/esm/IDE/IDE.js +3 -2
- package/esm/IDE/IDE.js.map +1 -1
- package/esm/IDE/IDE.module.js +8 -7
- package/esm/Icon/Icon.d.ts +2 -2
- package/esm/Icon/Icon.d.ts.map +1 -1
- package/esm/Icon/Icon.js +2 -2
- package/esm/Icon/Icon.js.map +1 -1
- package/esm/Icon/Icon.module.js +4 -3
- package/esm/Image/Image.d.ts +1 -1
- package/esm/Image/Image.d.ts.map +1 -1
- package/esm/Image/Image.js +1 -1
- package/esm/Image/Image.js.map +1 -1
- package/esm/Image/Image.module.js +5 -4
- package/esm/InlineCode/InlineCode.js +1 -1
- package/esm/InlineCode/InlineCode.js.map +1 -1
- package/esm/InlineCode/InlineCode.module.js +5 -4
- package/esm/InlineLink/InlineLink.js +2 -2
- package/esm/InlineLink/InlineLink.js.map +1 -1
- package/esm/InlineLink/InlineLink.module.js +3 -2
- package/esm/Label/Label.js +1 -1
- package/esm/Label/Label.js.map +1 -1
- package/esm/Label/Label.module.js +6 -5
- package/esm/Link/Link.d.ts +1 -1
- package/esm/Link/Link.d.ts.map +1 -1
- package/esm/Link/Link.js +2 -2
- package/esm/Link/Link.js.map +1 -1
- package/esm/Link/Link.module.js +4 -3
- package/esm/LogoSuite/LogoSuite.d.ts +1 -1
- package/esm/LogoSuite/LogoSuite.js +4 -3
- package/esm/LogoSuite/LogoSuite.js.map +1 -1
- package/esm/LogoSuite/LogoSuite.module.js +11 -10
- package/esm/MediaPlaylist/MediaPlaylist.d.ts +4 -4
- package/esm/MediaPlaylist/MediaPlaylist.d.ts.map +1 -1
- package/esm/MediaPlaylist/MediaPlaylist.js +1 -1
- package/esm/MediaPlaylist/MediaPlaylist.js.map +1 -1
- package/esm/MediaPlaylist/MediaPlaylist.module.js +25 -24
- package/esm/MediaPlaylist/useMediaPlaylist.js.map +1 -1
- package/esm/MinimalFooter/MinimalFooter.d.ts +3 -3
- package/esm/MinimalFooter/MinimalFooter.d.ts.map +1 -1
- package/esm/MinimalFooter/MinimalFooter.js +4 -3
- package/esm/MinimalFooter/MinimalFooter.js.map +1 -1
- package/esm/MinimalFooter/MinimalFooter.module.js +15 -14
- package/esm/MinimalVideoPlayer/MinimalVideoPlayer.js +2 -2
- package/esm/MinimalVideoPlayer/MinimalVideoPlayer.js.map +1 -1
- package/esm/MinimalVideoPlayer/MinimalVideoPlayer.module.js +6 -5
- package/esm/MinimalVideoPlayer/useMinimalVideoPlayback.js.map +1 -1
- package/esm/NavList/NavList.js +2 -2
- package/esm/NavList/NavList.js.map +1 -1
- package/esm/NavList/NavList.module.js +18 -17
- package/esm/Pagination/Pagination.d.ts +1 -1
- package/esm/Pagination/Pagination.d.ts.map +1 -1
- package/esm/Pagination/Pagination.js +1 -1
- package/esm/Pagination/Pagination.js.map +1 -1
- package/esm/Pagination/Pagination.module.js +11 -10
- package/esm/Pagination/model.js.map +1 -1
- package/esm/Pillar/Pillar.d.ts +2 -2
- package/esm/Pillar/Pillar.d.ts.map +1 -1
- package/esm/Pillar/Pillar.js +1 -1
- package/esm/Pillar/Pillar.js.map +1 -1
- package/esm/Pillar/Pillar.module.js +9 -8
- package/esm/PricingOptions/PricingOptions.d.ts +1 -1
- package/esm/PricingOptions/PricingOptions.js +5 -3
- package/esm/PricingOptions/PricingOptions.js.map +1 -1
- package/esm/PricingOptions/PricingOptions.module.js +13 -12
- package/esm/Prose/Prose.js +1 -1
- package/esm/Prose/Prose.js.map +1 -1
- package/esm/Prose/Prose.module.js +4 -3
- package/esm/Section/Section.js +1 -1
- package/esm/Section/Section.js.map +1 -1
- package/esm/Section/Section.module.js +5 -4
- package/esm/SectionIntro/SectionIntro.js +1 -1
- package/esm/SectionIntro/SectionIntro.js.map +1 -1
- package/esm/SectionIntro/SectionIntro.module.js +4 -3
- package/esm/SectionIntroStacked/SectionIntroStacked.d.ts +3 -3
- package/esm/SectionIntroStacked/SectionIntroStacked.js +1 -1
- package/esm/SectionIntroStacked/SectionIntroStacked.js.map +1 -1
- package/esm/SectionIntroStacked/SectionIntroStacked.module.js +6 -5
- package/esm/Stack/Stack.js +1 -1
- package/esm/Stack/Stack.js.map +1 -1
- package/esm/Stack/Stack.module.js +4 -3
- package/esm/Statistic/Statistic.js +1 -1
- package/esm/Statistic/Statistic.js.map +1 -1
- package/esm/Statistic/Statistic.module.js +6 -5
- package/esm/SubNav/SubNav.d.ts +4 -4
- package/esm/SubNav/SubNav.d.ts.map +1 -1
- package/esm/SubNav/SubNav.js +6 -4
- package/esm/SubNav/SubNav.js.map +1 -1
- package/esm/SubNav/SubNav.module.js +9 -8
- package/esm/SubNav/useContainsFocus.js.map +1 -1
- package/esm/SubdomainNavBar/NavigationVisbilityObserver.js +4 -3
- package/esm/SubdomainNavBar/NavigationVisbilityObserver.js.map +1 -1
- package/esm/SubdomainNavBar/SubdomainNavBar.d.ts +3 -3
- package/esm/SubdomainNavBar/SubdomainNavBar.d.ts.map +1 -1
- package/esm/SubdomainNavBar/SubdomainNavBar.js +6 -2
- package/esm/SubdomainNavBar/SubdomainNavBar.js.map +1 -1
- package/esm/SubdomainNavBar/SubdomainNavBar.module.js +4 -3
- package/esm/SubdomainNavBar/SubdomainNavBarLinkContext.js.map +1 -1
- package/esm/SubdomainNavBar/useSearchKeyboardShortcut.js +2 -2
- package/esm/SubdomainNavBar/useSearchKeyboardShortcut.js.map +1 -1
- package/esm/SubdomainNavBar/useSearchResults.js.map +1 -1
- package/esm/SubdomainNavBar/useVisibilityObserver.js.map +1 -1
- package/esm/Tabs/Tabs.js +3 -2
- package/esm/Tabs/Tabs.js.map +1 -1
- package/esm/Tabs/Tabs.module.js +12 -11
- package/esm/Testimonial/Testimonial.d.ts +1 -1
- package/esm/Testimonial/Testimonial.d.ts.map +1 -1
- package/esm/Testimonial/Testimonial.js +1 -1
- package/esm/Testimonial/Testimonial.js.map +1 -1
- package/esm/Testimonial/Testimonial.module.js +8 -7
- package/esm/Text/Text.d.ts +1 -1
- package/esm/Text/Text.d.ts.map +1 -1
- package/esm/Text/Text.js +1 -1
- package/esm/Text/Text.js.map +1 -1
- package/esm/Text/Text.module.js +4 -3
- package/esm/TextCursorAnimation/TextCursorAnimation.d.ts +1 -1
- package/esm/TextCursorAnimation/TextCursorAnimation.d.ts.map +1 -1
- package/esm/TextCursorAnimation/TextCursorAnimation.js +1 -1
- package/esm/TextCursorAnimation/TextCursorAnimation.js.map +1 -1
- package/esm/TextCursorAnimation/TextCursorAnimation.module.js +10 -9
- package/esm/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/esm/ThemeProvider/ThemeProvider.d.ts.map +1 -1
- package/esm/ThemeProvider/ThemeProvider.js +4 -4
- package/esm/ThemeProvider/ThemeProvider.js.map +1 -1
- package/esm/ThemeProvider/useTheme.js.map +1 -1
- package/esm/Tiles/Tiles.js +2 -2
- package/esm/Tiles/Tiles.js.map +1 -1
- package/esm/Tiles/Tiles.module.js +4 -3
- package/esm/Timeline/Timeline.d.ts +3 -3
- package/esm/Timeline/Timeline.d.ts.map +1 -1
- package/esm/Timeline/Timeline.js +2 -2
- package/esm/Timeline/Timeline.js.map +1 -1
- package/esm/Timeline/Timeline.module.js +5 -4
- package/esm/Token/Token.js +1 -1
- package/esm/Token/Token.js.map +1 -1
- package/esm/Token/Token.module.js +6 -5
- package/esm/Tooltip/Tooltip.js +2 -2
- package/esm/Tooltip/Tooltip.js.map +1 -1
- package/esm/Tooltip/Tooltip.module.js +4 -3
- package/esm/VideoPlayer/VideoPlayer.d.ts +2 -2
- package/esm/VideoPlayer/VideoPlayer.js +2 -2
- package/esm/VideoPlayer/VideoPlayer.js.map +1 -1
- package/esm/VideoPlayer/VideoPlayer.module.js +29 -28
- package/esm/VideoPlayer/components/CCButton/CCButton.d.ts +2 -2
- package/esm/VideoPlayer/components/CCButton/CCButton.d.ts.map +1 -1
- package/esm/VideoPlayer/components/CCButton/CCButton.js +1 -1
- package/esm/VideoPlayer/components/CCButton/CCButton.js.map +1 -1
- package/esm/VideoPlayer/components/Captions/Captions.d.ts +2 -2
- package/esm/VideoPlayer/components/Captions/Captions.d.ts.map +1 -1
- package/esm/VideoPlayer/components/Captions/Captions.js +1 -1
- package/esm/VideoPlayer/components/Captions/Captions.js.map +1 -1
- package/esm/VideoPlayer/components/Captions/Captions.module.js +5 -4
- package/esm/VideoPlayer/components/ControlsBar/ControlsBar.d.ts +2 -2
- package/esm/VideoPlayer/components/ControlsBar/ControlsBar.d.ts.map +1 -1
- package/esm/VideoPlayer/components/ControlsBar/ControlsBar.js +1 -1
- package/esm/VideoPlayer/components/ControlsBar/ControlsBar.js.map +1 -1
- package/esm/VideoPlayer/components/FullScreenButton/FullScreenButton.d.ts +2 -2
- package/esm/VideoPlayer/components/FullScreenButton/FullScreenButton.d.ts.map +1 -1
- package/esm/VideoPlayer/components/FullScreenButton/FullScreenButton.js +2 -1
- package/esm/VideoPlayer/components/FullScreenButton/FullScreenButton.js.map +1 -1
- package/esm/VideoPlayer/components/IconControl/IconControl.d.ts +2 -2
- package/esm/VideoPlayer/components/IconControl/IconControl.d.ts.map +1 -1
- package/esm/VideoPlayer/components/IconControl/IconControl.js +1 -1
- package/esm/VideoPlayer/components/IconControl/IconControl.js.map +1 -1
- package/esm/VideoPlayer/components/MuteButton/MuteButton.d.ts +2 -2
- package/esm/VideoPlayer/components/MuteButton/MuteButton.d.ts.map +1 -1
- package/esm/VideoPlayer/components/MuteButton/MuteButton.js +2 -1
- package/esm/VideoPlayer/components/MuteButton/MuteButton.js.map +1 -1
- package/esm/VideoPlayer/components/PauseIcon/PauseIcon.d.ts +2 -2
- package/esm/VideoPlayer/components/PauseIcon/PauseIcon.d.ts.map +1 -1
- package/esm/VideoPlayer/components/PauseIcon/PauseIcon.js.map +1 -1
- package/esm/VideoPlayer/components/PlayIcon/PlayIcon.d.ts +2 -2
- package/esm/VideoPlayer/components/PlayIcon/PlayIcon.d.ts.map +1 -1
- package/esm/VideoPlayer/components/PlayIcon/PlayIcon.js.map +1 -1
- package/esm/VideoPlayer/components/PlayPauseButton/PlayPauseButton.d.ts +2 -2
- package/esm/VideoPlayer/components/PlayPauseButton/PlayPauseButton.d.ts.map +1 -1
- package/esm/VideoPlayer/components/PlayPauseButton/PlayPauseButton.js.map +1 -1
- package/esm/VideoPlayer/components/Range/Range.d.ts +1 -1
- package/esm/VideoPlayer/components/Range/Range.d.ts.map +1 -1
- package/esm/VideoPlayer/components/Range/Range.js +1 -1
- package/esm/VideoPlayer/components/Range/Range.js.map +1 -1
- package/esm/VideoPlayer/components/SeekControl/SeekControl.d.ts +2 -2
- package/esm/VideoPlayer/components/SeekControl/SeekControl.d.ts.map +1 -1
- package/esm/VideoPlayer/components/SeekControl/SeekControl.js +1 -1
- package/esm/VideoPlayer/components/SeekControl/SeekControl.js.map +1 -1
- package/esm/VideoPlayer/components/VideoTooltip/VideoTooltip.d.ts +2 -2
- package/esm/VideoPlayer/components/VideoTooltip/VideoTooltip.d.ts.map +1 -1
- package/esm/VideoPlayer/components/VideoTooltip/VideoTooltip.js +3 -2
- package/esm/VideoPlayer/components/VideoTooltip/VideoTooltip.js.map +1 -1
- package/esm/VideoPlayer/components/VolumeControl/VolumeControl.d.ts +2 -1
- package/esm/VideoPlayer/components/VolumeControl/VolumeControl.d.ts.map +1 -1
- package/esm/VideoPlayer/components/VolumeControl/VolumeControl.js.map +1 -1
- package/esm/VideoPlayer/components/VolumeControl/VolumeControl.module.js +3 -2
- package/esm/VideoPlayer/hooks/useIsElementFullScreen.js.map +1 -1
- package/esm/VideoPlayer/hooks/useVideo.js.map +1 -1
- package/esm/VideoPlayer/hooks/useVideoResizeObserver.js.map +1 -1
- package/esm/animation/Animate/Animate.d.ts +1 -1
- package/esm/animation/Animate/Animate.d.ts.map +1 -1
- package/esm/animation/Animate/Animate.js +1 -1
- package/esm/animation/Animate/Animate.js.map +1 -1
- package/esm/animation/Animation.module.js +4 -3
- package/esm/animation/AnimationProvider/AnimationProvider.d.ts +1 -1
- package/esm/animation/AnimationProvider/AnimationProvider.d.ts.map +1 -1
- package/esm/animation/AnimationProvider/AnimationProvider.js.map +1 -1
- package/esm/animation/TextRevealAnimation/TextRevealAnimation.js +1 -1
- package/esm/animation/TextRevealAnimation/TextRevealAnimation.js.map +1 -1
- package/esm/animation/TextRevealAnimation/TextRevealAnimation.module.js +5 -4
- package/esm/animation/TextRevealAnimation/useTextRevealAnimationLines.js.map +1 -1
- package/esm/animation/useAnimation.js.map +1 -1
- package/esm/component-helpers/shared.module.js +3 -2
- package/esm/component-helpers.d.ts +2 -2
- package/esm/component-helpers.d.ts.map +1 -1
- package/esm/constants.js.map +1 -1
- package/esm/css/stylesheets.js +1 -1
- package/esm/findElementInChildren.js.map +1 -1
- package/esm/forms/Checkbox/Checkbox.js +2 -2
- package/esm/forms/Checkbox/Checkbox.js.map +1 -1
- package/esm/forms/Checkbox/Checkbox.module.js +4 -3
- package/esm/forms/ControlGroup/ControlGroup.js +3 -2
- package/esm/forms/ControlGroup/ControlGroup.js.map +1 -1
- package/esm/forms/ControlGroup/ControlGroup.module.js +7 -6
- package/esm/forms/FormControl/FormControl.d.ts +5 -5
- package/esm/forms/FormControl/FormControl.d.ts.map +1 -1
- package/esm/forms/FormControl/FormControl.js +4 -3
- package/esm/forms/FormControl/FormControl.js.map +1 -1
- package/esm/forms/FormControl/FormControl.module.js +5 -4
- package/esm/forms/Radio/Radio.js +1 -1
- package/esm/forms/Radio/Radio.js.map +1 -1
- package/esm/forms/Radio/Radio.module.js +4 -3
- package/esm/forms/Select/Select.d.ts +2 -2
- package/esm/forms/Select/Select.js +1 -1
- package/esm/forms/Select/Select.js.map +1 -1
- package/esm/forms/Select/Select.module.js +4 -3
- package/esm/forms/TextInput/TextInput.js +1 -1
- package/esm/forms/TextInput/TextInput.js.map +1 -1
- package/esm/forms/TextInput/TextInput.module.js +5 -4
- package/esm/forms/Textarea/Textarea.js +1 -1
- package/esm/forms/Textarea/Textarea.js.map +1 -1
- package/esm/forms/Textarea/Textarea.module.js +4 -3
- package/esm/hooks/useAnchoredPosition.js +7 -4
- package/esm/hooks/useAnchoredPosition.js.map +1 -1
- package/esm/hooks/useCursorAnimation.js +4 -2
- package/esm/hooks/useCursorAnimation.js.map +1 -1
- package/esm/hooks/useFocusTrap.js.map +1 -1
- package/esm/hooks/useId.js.map +1 -1
- package/esm/hooks/useKeyboardEscape.js.map +1 -1
- package/esm/hooks/useOnClickOutside.js.map +1 -1
- package/esm/hooks/useReducedMotion.js +1 -1
- package/esm/hooks/useReducedMotion.js.map +1 -1
- package/esm/hooks/useRef.js.map +1 -1
- package/esm/hooks/useResizeObserver.js.map +1 -1
- package/esm/hooks/useTabs.js +1 -1
- package/esm/hooks/useTabs.js.map +1 -1
- package/esm/hooks/useWindowSize.js +7 -7
- package/esm/hooks/useWindowSize.js.map +1 -1
- package/esm/list/ListItem/ListItem.js +4 -2
- package/esm/list/ListItem/ListItem.js.map +1 -1
- package/esm/list/ListItem/ListItem.module.js +5 -4
- package/esm/list/OrderedList/OrderedList.d.ts +2 -2
- package/esm/list/OrderedList/OrderedList.d.ts.map +1 -1
- package/esm/list/OrderedList/OrderedList.js +1 -1
- package/esm/list/OrderedList/OrderedList.js.map +1 -1
- package/esm/list/OrderedList/OrderedList.module.js +3 -2
- package/esm/list/UnorderedList/UnorderedList.d.ts +2 -2
- package/esm/list/UnorderedList/UnorderedList.d.ts.map +1 -1
- package/esm/list/UnorderedList/UnorderedList.js +1 -1
- package/esm/list/UnorderedList/UnorderedList.js.map +1 -1
- package/esm/list/list-shared.module.js +3 -2
- package/esm/list/listContext.js.map +1 -1
- package/esm/node_modules/@primer/octicons-react/dist/icons/AlertFillIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/AlertFillIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ArrowUpIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ArrowUpIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ArrowUpRightIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ArrowUpRightIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/CheckCircleFillIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/CheckCircleFillIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/CheckIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/CheckIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronDownIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronDownIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronLeftIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronLeftIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronRightIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronRightIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronUpIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ChevronUpIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/CopilotIcon.js +33 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/CopilotIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/DashIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/DashIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/LinkExternalIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/LinkExternalIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/MarkGithubIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/MarkGithubIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/MuteIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/MuteIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/PaperAirplaneIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/PaperAirplaneIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/PauseIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/PauseIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/PlayIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/PlayIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ReplyIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ReplyIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ScreenFullIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ScreenFullIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ScreenNormalIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/ScreenNormalIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/SearchIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/SearchIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/TriangleDownIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/TriangleDownIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/TriangleUpIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/TriangleUpIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/UnmuteIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/UnmuteIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/XIcon.js +28 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/XIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/renderOcticon-DuMQdmQC.js +132 -0
- package/esm/node_modules/@primer/octicons-react/dist/renderOcticon-DuMQdmQC.js.map +1 -0
- package/esm/node_modules/clsx/dist/clsx.js +1 -1
- package/esm/node_modules/clsx/dist/clsx.js.map +1 -1
- package/esm/river/River/River.js +2 -2
- package/esm/river/River/River.js.map +1 -1
- package/esm/river/RiverAccordion/RiverAccordion.d.ts +4 -4
- package/esm/river/RiverAccordion/RiverAccordion.js +3 -2
- package/esm/river/RiverAccordion/RiverAccordion.js.map +1 -1
- package/esm/river/RiverAccordion/RiverAccordion.module.js +16 -15
- package/esm/river/RiverBreakout/RiverBreakout.d.ts +1 -1
- package/esm/river/RiverBreakout/RiverBreakout.js +1 -1
- package/esm/river/RiverBreakout/RiverBreakout.js.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts +5 -5
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js +2 -2
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js +31 -30
- package/esm/river/RiverStoryScroll/RiverStoryScroll.d.ts +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScroll.d.ts.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScroll.js +5 -3
- package/esm/river/RiverStoryScroll/RiverStoryScroll.js.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScroll.module.js +8 -7
- package/esm/river/RiverStoryScroll/RiverStoryScrollProvider.d.ts +2 -2
- package/esm/river/RiverStoryScroll/RiverStoryScrollProvider.d.ts.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollProvider.js.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollResponder.d.ts +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollResponder.d.ts.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollResponder.js +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollResponder.js.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollTracker.d.ts +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollTracker.d.ts.map +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollTracker.js +1 -1
- package/esm/river/RiverStoryScroll/RiverStoryScrollTracker.js.map +1 -1
- package/esm/river/river-shared.module.js +13 -12
- package/esm/utils/getTextContent.js.map +1 -1
- package/esm/utils/isFragmentElement.js.map +1 -1
- package/lib/Accordion/Accordion.d.ts +2 -2
- package/lib/ActionMenu/ActionMenu.d.ts +2 -2
- package/lib/AnchorNav/AnchorNav.d.ts +4 -4
- package/lib/Bento/Bento.d.ts +4 -4
- package/lib/Box/Box.d.ts +1 -1
- package/lib/CTABanner/CTABanner.d.ts +1 -1
- package/lib/Card/Card.d.ts +2 -2
- package/lib/ComparisonTable/ComparisonTable.d.ts +3 -3
- package/lib/ExpandableArrow/ExpandableArrow.d.ts +2 -1
- package/lib/FAQ/FAQ.d.ts +2 -2
- package/lib/FAQ/FAQGroup.d.ts +2 -2
- package/lib/Footnotes/Footnotes.d.ts +2 -2
- package/lib/FrostedGlassVFX/FrostedGlassVFX.d.ts +1 -1
- package/lib/Grid/Grid.d.ts +2 -2
- package/lib/IDE/IDE.d.ts +1 -1
- package/lib/Icon/Icon.d.ts +2 -2
- package/lib/Image/Image.d.ts +1 -1
- package/lib/Link/Link.d.ts +1 -1
- package/lib/LogoSuite/LogoSuite.d.ts +1 -1
- package/lib/MediaPlaylist/MediaPlaylist.d.ts +4 -4
- package/lib/MinimalFooter/MinimalFooter.d.ts +3 -3
- package/lib/Pagination/Pagination.d.ts +1 -1
- package/lib/Pillar/Pillar.d.ts +2 -2
- package/lib/PricingOptions/PricingOptions.d.ts +1 -1
- package/lib/SectionIntroStacked/SectionIntroStacked.d.ts +3 -3
- package/lib/SubNav/SubNav.d.ts +4 -4
- package/lib/SubdomainNavBar/SubdomainNavBar.d.ts +3 -3
- package/lib/Testimonial/Testimonial.d.ts +1 -1
- package/lib/Text/Text.d.ts +1 -1
- package/lib/TextCursorAnimation/TextCursorAnimation.d.ts +1 -1
- package/lib/ThemeProvider/ThemeProvider.d.ts +1 -1
- package/lib/Timeline/Timeline.d.ts +3 -3
- package/lib/VideoPlayer/VideoPlayer.d.ts +2 -2
- package/lib/VideoPlayer/components/CCButton/CCButton.d.ts +2 -2
- package/lib/VideoPlayer/components/Captions/Captions.d.ts +2 -2
- package/lib/VideoPlayer/components/ControlsBar/ControlsBar.d.ts +2 -2
- package/lib/VideoPlayer/components/FullScreenButton/FullScreenButton.d.ts +2 -2
- package/lib/VideoPlayer/components/IconControl/IconControl.d.ts +2 -2
- package/lib/VideoPlayer/components/MuteButton/MuteButton.d.ts +2 -2
- package/lib/VideoPlayer/components/PauseIcon/PauseIcon.d.ts +2 -2
- package/lib/VideoPlayer/components/PlayIcon/PlayIcon.d.ts +2 -2
- package/lib/VideoPlayer/components/PlayPauseButton/PlayPauseButton.d.ts +2 -2
- package/lib/VideoPlayer/components/Range/Range.d.ts +1 -1
- package/lib/VideoPlayer/components/SeekControl/SeekControl.d.ts +2 -2
- package/lib/VideoPlayer/components/VideoTooltip/VideoTooltip.d.ts +2 -2
- package/lib/VideoPlayer/components/VolumeControl/VolumeControl.d.ts +2 -1
- package/lib/animation/Animate/Animate.d.ts +1 -1
- package/lib/animation/AnimationProvider/AnimationProvider.d.ts +1 -1
- package/lib/component-helpers.d.ts +2 -2
- package/lib/css/main.css +148 -838
- 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 +1 -1
- package/lib/design-tokens/css/tokens/functional/colors/global.css +1 -1
- 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/base.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-code/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/inline-code/colors.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 +1 -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/base.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 +1 -1
- 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/base.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-code/colors.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 +1 -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/base.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 +1 -1
- 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/base.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-code/colors.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 +1 -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/base.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/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 +1 -1
- 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/base.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-code/colors.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 +1 -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/base.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 +1 -1
- 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/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/footer/base.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-code/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/inline-code/colors.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 +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/river/river.js +1 -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/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/text-cursor-animation/base.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/forms/FormControl/FormControl.d.ts +5 -5
- package/lib/forms/Select/Select.d.ts +2 -2
- package/lib/index.js +1 -1
- package/lib/list/OrderedList/OrderedList.d.ts +2 -2
- package/lib/list/UnorderedList/UnorderedList.d.ts +2 -2
- package/lib/river/RiverAccordion/RiverAccordion.d.ts +4 -4
- package/lib/river/RiverBreakout/RiverBreakout.d.ts +1 -1
- package/lib/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts +5 -5
- package/lib/river/RiverStoryScroll/RiverStoryScroll.d.ts +1 -1
- package/lib/river/RiverStoryScroll/RiverStoryScrollProvider.d.ts +2 -2
- package/lib/river/RiverStoryScroll/RiverStoryScrollResponder.d.ts +1 -1
- package/lib/river/RiverStoryScroll/RiverStoryScrollTracker.d.ts +1 -1
- package/llms.txt +2 -2
- package/package.json +24 -23
- package/esm/node_modules/@primer/octicons-react/dist/index.esm.js +0 -434
- package/esm/node_modules/@primer/octicons-react/dist/index.esm.js.map +0 -1
|
@@ -1,17 +1,18 @@
|
|
|
1
|
-
import './MinimalFooter.module-CGtOtT5r.css'
|
|
2
|
-
|
|
1
|
+
import './MinimalFooter.module-CGtOtT5r.css';//#region src/MinimalFooter/MinimalFooter.module.css
|
|
2
|
+
var e = "Primer_Brand__MinimalFooter-module__MinimalFooter___xLq65", t = "Primer_Brand__MinimalFooter-module__MinimalFooter__container___mhY_8", n = "Primer_Brand__MinimalFooter-module__MinimalFooter__terms___gwB2R", r = "Primer_Brand__MinimalFooter-module__MinimalFooter__top___UXzkJ", i = "Primer_Brand__MinimalFooter-module__MinimalFooter__links___kwBz2", a = "Primer_Brand__MinimalFooter-module__MinimalFooter__backToTop___fmxit", o = "Primer_Brand__MinimalFooter-module__MinimalFooter__logo___rFLvw", s = "Primer_Brand__MinimalFooter-module__MinimalFooter__bottom___oi9Jk", c = "Primer_Brand__MinimalFooter-module__MinimalFooter__section___W7x7a", l = "Primer_Brand__MinimalFooter-module__MinimalFooter__copyright___qQ3QR", u = "Primer_Brand__MinimalFooter-module__MinimalFooter__metaText___peNSx", d = "Primer_Brand__MinimalFooter-module__MinimalFooter__link___T4gI3", f = {
|
|
3
|
+
MinimalFooter: e,
|
|
3
4
|
"MinimalFooter--withFootnotes": "Primer_Brand__MinimalFooter-module__MinimalFooter--withFootnotes___oUvH8",
|
|
4
|
-
MinimalFooter__container:
|
|
5
|
-
MinimalFooter__terms:
|
|
5
|
+
MinimalFooter__container: t,
|
|
6
|
+
MinimalFooter__terms: n,
|
|
6
7
|
"MinimalFooter__terms-item": "Primer_Brand__MinimalFooter-module__MinimalFooter__terms-item___VB5Sx",
|
|
7
|
-
MinimalFooter__top:
|
|
8
|
+
MinimalFooter__top: r,
|
|
8
9
|
"MinimalFooter__top-row": "Primer_Brand__MinimalFooter-module__MinimalFooter__top-row____WR7L",
|
|
9
10
|
"MinimalFooter__top-actions": "Primer_Brand__MinimalFooter-module__MinimalFooter__top-actions___dz_zd",
|
|
10
|
-
MinimalFooter__links:
|
|
11
|
-
MinimalFooter__backToTop:
|
|
12
|
-
MinimalFooter__logo:
|
|
13
|
-
MinimalFooter__bottom:
|
|
14
|
-
MinimalFooter__section:
|
|
11
|
+
MinimalFooter__links: i,
|
|
12
|
+
MinimalFooter__backToTop: a,
|
|
13
|
+
MinimalFooter__logo: o,
|
|
14
|
+
MinimalFooter__bottom: s,
|
|
15
|
+
MinimalFooter__section: c,
|
|
15
16
|
"MinimalFooter__section--footnotes": "Primer_Brand__MinimalFooter-module__MinimalFooter__section--footnotes___9t40F",
|
|
16
17
|
"MinimalFooter__section--center": "Primer_Brand__MinimalFooter-module__MinimalFooter__section--center___K3_Ia",
|
|
17
18
|
"MinimalFooter__section--bottom": "Primer_Brand__MinimalFooter-module__MinimalFooter__section--bottom___HwSJJ",
|
|
@@ -19,13 +20,13 @@ import './MinimalFooter.module-CGtOtT5r.css';var e = {
|
|
|
19
20
|
"MinimalFooter__social-links": "Primer_Brand__MinimalFooter-module__MinimalFooter__social-links___0zKRs",
|
|
20
21
|
"MinimalFooter__social-link": "Primer_Brand__MinimalFooter-module__MinimalFooter__social-link___T5TF0",
|
|
21
22
|
"MinimalFooter__social-icon": "Primer_Brand__MinimalFooter-module__MinimalFooter__social-icon___N1tDK",
|
|
22
|
-
MinimalFooter__copyright:
|
|
23
|
-
MinimalFooter__metaText:
|
|
24
|
-
MinimalFooter__link:
|
|
23
|
+
MinimalFooter__copyright: l,
|
|
24
|
+
MinimalFooter__metaText: u,
|
|
25
|
+
MinimalFooter__link: d,
|
|
25
26
|
"MinimalFooter__backToTop-content": "Primer_Brand__MinimalFooter-module__MinimalFooter__backToTop-content___umaLY",
|
|
26
27
|
"MinimalFooter__backToTop-icon": "Primer_Brand__MinimalFooter-module__MinimalFooter__backToTop-icon___y85GZ"
|
|
27
28
|
};
|
|
28
29
|
//#endregion
|
|
29
|
-
export { e as default };
|
|
30
|
+
export { e as MinimalFooter, a as MinimalFooter__backToTop, s as MinimalFooter__bottom, t as MinimalFooter__container, l as MinimalFooter__copyright, d as MinimalFooter__link, i as MinimalFooter__links, o as MinimalFooter__logo, u as MinimalFooter__metaText, c as MinimalFooter__section, n as MinimalFooter__terms, r as MinimalFooter__top, f as default };
|
|
30
31
|
|
|
31
32
|
//# sourceMappingURL=MinimalFooter.module.js.map
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import e from "../node_modules/clsx/dist/clsx.js";
|
|
1
|
+
import { clsx as e } from "../node_modules/clsx/dist/clsx.js";
|
|
2
2
|
import { useReducedMotion as t } from "../hooks/useReducedMotion.js";
|
|
3
|
-
import { PauseIcon as n } from "../node_modules/@primer/octicons-react/dist/
|
|
3
|
+
import { PauseIcon as n } from "../node_modules/@primer/octicons-react/dist/icons/PauseIcon.js";
|
|
4
4
|
import { useMinimalVideoPlayback as r } from "./useMinimalVideoPlayback.js";
|
|
5
5
|
import i from "./MinimalVideoPlayer.module.js";
|
|
6
6
|
import { forwardRef as a } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MinimalVideoPlayer.js","names":[],"sources":["../../src/MinimalVideoPlayer/MinimalVideoPlayer.tsx"],"sourcesContent":["import {clsx} from 'clsx'\nimport {PauseIcon} from '@primer/octicons-react'\nimport React, {forwardRef, type ComponentPropsWithoutRef} from 'react'\n\nimport {useReducedMotion} from '../hooks/useReducedMotion'\nimport {useMinimalVideoPlayback} from './useMinimalVideoPlayback'\nimport styles from './MinimalVideoPlayer.module.css'\n\nexport type MinimalVideoPlayerProps = Omit<\n ComponentPropsWithoutRef<'video'>,\n 'autoPlay' | 'controls' | 'defaultMuted' | 'muted' | 'onVolumeChange' | 'playsInline' | 'title'\n> & {\n /**\n * Plays the video when it is visible.\n * @default true\n */\n autoPlay?: boolean\n /**\n * Provides an accessible name for the video.\n */\n title: string\n /**\n * Customizable labels for the internal play and pause control.\n */\n internalAccessibleLabels?: {\n play: string\n pause: string\n }\n ['data-testid']?: string\n}\n\nconst defaultInternalAccessibleLabels = {\n play: 'Play video',\n pause: 'Pause video',\n}\n\nconst testIds = {\n root: 'MinimalVideoPlayer',\n get video() {\n return `${this.root}-video`\n },\n get control() {\n return `${this.root}-control`\n },\n}\n\nexport const _MinimalVideoPlayer = forwardRef<HTMLVideoElement, MinimalVideoPlayerProps>(\n (\n {\n autoPlay = true,\n children,\n className,\n 'data-testid': testId,\n internalAccessibleLabels = defaultInternalAccessibleLabels,\n loop = true,\n onEnded,\n onPause,\n onPlay,\n onPlaying,\n title,\n ...rest\n },\n forwardedRef,\n ) => {\n const prefersReducedMotion = useReducedMotion()\n const {handlePlaybackEnded, handlePlaybackPaused, handlePlaybackStarted, isPlaying, togglePlayback, videoRef} =\n useMinimalVideoPlayback({\n autoPlay,\n forwardedRef,\n prefersReducedMotion,\n })\n\n return (\n <div className={styles.MinimalVideoPlayer} data-testid={testId || testIds.root}>\n <video\n {...rest}\n ref={videoRef}\n autoPlay={false}\n className={clsx(styles.MinimalVideoPlayer__video, className)}\n controls={false}\n data-testid={testIds.video}\n loop={loop}\n muted\n onEnded={event => {\n handlePlaybackEnded()\n onEnded?.(event)\n }}\n onPause={event => {\n handlePlaybackPaused()\n onPause?.(event)\n }}\n onPlay={event => {\n handlePlaybackStarted()\n onPlay?.(event)\n }}\n onPlaying={event => {\n handlePlaybackStarted()\n onPlaying?.(event)\n }}\n playsInline\n title={title}\n >\n {children}\n </video>\n <button\n aria-label={isPlaying ? internalAccessibleLabels.pause : internalAccessibleLabels.play}\n className={styles.MinimalVideoPlayer__control}\n data-testid={testIds.control}\n onClick={togglePlayback}\n type=\"button\"\n >\n {isPlaying ? (\n <PauseIcon aria-hidden=\"true\" />\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.3777 6.94756C14.2069 7.40341 14.2069 8.59489 13.3777 9.05073L5.37808 13.4483C4.57834 13.8879 3.60001 13.3093 3.60001 12.3967L3.60001 3.60161C3.60001 2.689 4.57834 2.1104 5.37808 2.55003L13.3777 6.94756Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n </div>\n )\n },\n)\n\nexport const MinimalVideoPlayer = Object.assign(_MinimalVideoPlayer, {testIds})\n"],"mappings":";;;;;;;;AA+BA,IAAM,IAAkC;CACtC,MAAM;CACN,OAAO;
|
|
1
|
+
{"version":3,"file":"MinimalVideoPlayer.js","names":[],"sources":["../../src/MinimalVideoPlayer/MinimalVideoPlayer.tsx"],"sourcesContent":["import {clsx} from 'clsx'\nimport {PauseIcon} from '@primer/octicons-react'\nimport React, {forwardRef, type ComponentPropsWithoutRef} from 'react'\n\nimport {useReducedMotion} from '../hooks/useReducedMotion'\nimport {useMinimalVideoPlayback} from './useMinimalVideoPlayback'\nimport styles from './MinimalVideoPlayer.module.css'\n\nexport type MinimalVideoPlayerProps = Omit<\n ComponentPropsWithoutRef<'video'>,\n 'autoPlay' | 'controls' | 'defaultMuted' | 'muted' | 'onVolumeChange' | 'playsInline' | 'title'\n> & {\n /**\n * Plays the video when it is visible.\n * @default true\n */\n autoPlay?: boolean\n /**\n * Provides an accessible name for the video.\n */\n title: string\n /**\n * Customizable labels for the internal play and pause control.\n */\n internalAccessibleLabels?: {\n play: string\n pause: string\n }\n ['data-testid']?: string\n}\n\nconst defaultInternalAccessibleLabels = {\n play: 'Play video',\n pause: 'Pause video',\n}\n\nconst testIds = {\n root: 'MinimalVideoPlayer',\n get video() {\n return `${this.root}-video`\n },\n get control() {\n return `${this.root}-control`\n },\n}\n\nexport const _MinimalVideoPlayer = forwardRef<HTMLVideoElement, MinimalVideoPlayerProps>(\n (\n {\n autoPlay = true,\n children,\n className,\n 'data-testid': testId,\n internalAccessibleLabels = defaultInternalAccessibleLabels,\n loop = true,\n onEnded,\n onPause,\n onPlay,\n onPlaying,\n title,\n ...rest\n },\n forwardedRef,\n ) => {\n const prefersReducedMotion = useReducedMotion()\n const {handlePlaybackEnded, handlePlaybackPaused, handlePlaybackStarted, isPlaying, togglePlayback, videoRef} =\n useMinimalVideoPlayback({\n autoPlay,\n forwardedRef,\n prefersReducedMotion,\n })\n\n return (\n <div className={styles.MinimalVideoPlayer} data-testid={testId || testIds.root}>\n <video\n {...rest}\n ref={videoRef}\n autoPlay={false}\n className={clsx(styles.MinimalVideoPlayer__video, className)}\n controls={false}\n data-testid={testIds.video}\n loop={loop}\n muted\n onEnded={event => {\n handlePlaybackEnded()\n onEnded?.(event)\n }}\n onPause={event => {\n handlePlaybackPaused()\n onPause?.(event)\n }}\n onPlay={event => {\n handlePlaybackStarted()\n onPlay?.(event)\n }}\n onPlaying={event => {\n handlePlaybackStarted()\n onPlaying?.(event)\n }}\n playsInline\n title={title}\n >\n {children}\n </video>\n <button\n aria-label={isPlaying ? internalAccessibleLabels.pause : internalAccessibleLabels.play}\n className={styles.MinimalVideoPlayer__control}\n data-testid={testIds.control}\n onClick={togglePlayback}\n type=\"button\"\n >\n {isPlaying ? (\n <PauseIcon aria-hidden=\"true\" />\n ) : (\n <svg width=\"16\" height=\"16\" viewBox=\"0 0 16 16\" fill=\"none\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n d=\"M13.3777 6.94756C14.2069 7.40341 14.2069 8.59489 13.3777 9.05073L5.37808 13.4483C4.57834 13.8879 3.60001 13.3093 3.60001 12.3967L3.60001 3.60161C3.60001 2.689 4.57834 2.1104 5.37808 2.55003L13.3777 6.94756Z\"\n fill=\"currentColor\"\n />\n </svg>\n )}\n </button>\n </div>\n )\n },\n)\n\nexport const MinimalVideoPlayer = Object.assign(_MinimalVideoPlayer, {testIds})\n"],"mappings":";;;;;;;;AA+BA,IAAM,IAAkC;CACtC,MAAM;CACN,OAAO;AACT,GAEM,IAAU;CACd,MAAM;CACN,IAAI,QAAQ;EACV,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,UAAU;EACZ,OAAO,GAAG,KAAK,KAAK;CACtB;AACF,GAEa,IAAsB,GAE/B,EACE,cAAW,IACX,aACA,cACA,eAAe,GACf,8BAA2B,GAC3B,UAAO,IACP,YACA,YACA,WACA,cACA,UACA,GAAG,KAEL,MACG;CAEH,IAAM,EAAC,wBAAqB,yBAAsB,0BAAuB,cAAW,mBAAgB,gBAClG,EAAwB;EACtB;EACA;EACA,sBALyB,EAKzB;CACF,CAAC;CAEH,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;EAAoB,eAAa,KAAU,EAAQ;YAA1E,CACE,kBAAC,SAAD;GACE,GAAI;GACJ,KAAK;GACL,UAAU;GACV,WAAW,EAAK,EAAO,2BAA2B,CAAS;GAC3D,UAAU;GACV,eAAa,EAAQ;GACf;GACN,OAAA;GACA,UAAS,MAAS;IAEhB,AADA,EAAoB,GACpB,IAAU,CAAK;GACjB;GACA,UAAS,MAAS;IAEhB,AADA,EAAqB,GACrB,IAAU,CAAK;GACjB;GACA,SAAQ,MAAS;IAEf,AADA,EAAsB,GACtB,IAAS,CAAK;GAChB;GACA,YAAW,MAAS;IAElB,AADA,EAAsB,GACtB,IAAY,CAAK;GACnB;GACA,aAAA;GACO;GAEN;EACI,CAAA,GACP,kBAAC,UAAD;GACE,cAAY,IAAY,EAAyB,QAAQ,EAAyB;GAClF,WAAW,EAAO;GAClB,eAAa,EAAQ;GACrB,SAAS;GACT,MAAK;aAEJ,IACC,kBAAC,GAAD,EAAW,eAAY,OAAQ,CAAA,IAE/B,kBAAC,OAAD;IAAK,OAAM;IAAK,QAAO;IAAK,SAAQ;IAAY,MAAK;IAAO,OAAM;cAChE,kBAAC,QAAD;KACE,GAAE;KACF,MAAK;IACN,CAAA;GACE,CAAA;EAED,CAAA,CACL;;AAET,CACF,GAEa,IAAqB,OAAO,OAAO,GAAqB,EAAC,WAAO,CAAC"}
|
|
@@ -1,9 +1,10 @@
|
|
|
1
|
-
import './MinimalVideoPlayer.module-Bcv4-Y5D.css'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import './MinimalVideoPlayer.module-Bcv4-Y5D.css';//#region src/MinimalVideoPlayer/MinimalVideoPlayer.module.css
|
|
2
|
+
var e = "Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer___s8ncI", t = "Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__video___f5cBj", n = "Primer_Brand__MinimalVideoPlayer-module__MinimalVideoPlayer__control___w7dA_", r = {
|
|
3
|
+
MinimalVideoPlayer: e,
|
|
4
|
+
MinimalVideoPlayer__video: t,
|
|
5
|
+
MinimalVideoPlayer__control: n
|
|
5
6
|
};
|
|
6
7
|
//#endregion
|
|
7
|
-
export { e as default };
|
|
8
|
+
export { e as MinimalVideoPlayer, n as MinimalVideoPlayer__control, t as MinimalVideoPlayer__video, r as default };
|
|
8
9
|
|
|
9
10
|
//# sourceMappingURL=MinimalVideoPlayer.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useMinimalVideoPlayback.js","names":[],"sources":["../../src/MinimalVideoPlayer/useMinimalVideoPlayback.ts"],"sourcesContent":["import {useCallback, useEffect, useRef, useState, type Ref} from 'react'\n\nimport {useProvidedRefOrCreate} from '../hooks/useRef'\n\ntype UseMinimalVideoPlaybackOptions = {\n autoPlay: boolean\n forwardedRef: Ref<HTMLVideoElement>\n prefersReducedMotion: boolean\n}\n\nexport function useMinimalVideoPlayback({\n autoPlay,\n forwardedRef,\n prefersReducedMotion,\n}: UseMinimalVideoPlaybackOptions) {\n const videoRef = useProvidedRefOrCreate<HTMLVideoElement | null>(forwardedRef)\n const pausedByViewportRef = useRef(false)\n const initialAutoPlayHandledRef = useRef(false)\n const [isPlaying, setIsPlaying] = useState(false)\n\n const requestPlayback = useCallback(async () => {\n const video = videoRef.current\n\n if (!video) return\n\n try {\n await video.play()\n } catch {\n if (video.paused) {\n setIsPlaying(false)\n }\n }\n }, [videoRef])\n\n const handlePlaybackStarted = useCallback(() => setIsPlaying(true), [])\n const handlePlaybackPaused = useCallback(() => setIsPlaying(false), [])\n const handlePlaybackEnded = useCallback(() => {\n pausedByViewportRef.current = false\n setIsPlaying(false)\n }, [])\n\n useEffect(() => {\n const video = videoRef.current\n\n if (!video) return\n\n const handleVisibilityChange = (isVisible: boolean) => {\n if (isVisible) {\n if (pausedByViewportRef.current) {\n pausedByViewportRef.current = false\n if (autoPlay && !prefersReducedMotion) {\n requestPlayback()\n }\n return\n }\n\n if (!initialAutoPlayHandledRef.current && prefersReducedMotion) {\n initialAutoPlayHandledRef.current = true\n return\n }\n\n if (!initialAutoPlayHandledRef.current && autoPlay) {\n initialAutoPlayHandledRef.current = true\n requestPlayback()\n }\n return\n }\n\n if (!video.paused) {\n pausedByViewportRef.current = autoPlay && !prefersReducedMotion\n video.pause()\n }\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n handleVisibilityChange(true)\n return\n }\n\n const observer = new IntersectionObserver(([entry]) => {\n handleVisibilityChange(entry.intersectionRatio > 0)\n })\n\n observer.observe(video)\n return () => observer.disconnect()\n }, [autoPlay, prefersReducedMotion, requestPlayback, videoRef])\n\n useEffect(() => {\n if (!prefersReducedMotion) return\n\n initialAutoPlayHandledRef.current = true\n pausedByViewportRef.current = false\n videoRef.current?.pause()\n }, [prefersReducedMotion, videoRef])\n\n const togglePlayback = useCallback(() => {\n const video = videoRef.current\n\n if (!video) return\n\n initialAutoPlayHandledRef.current = true\n pausedByViewportRef.current = false\n\n if (isPlaying) {\n setIsPlaying(false)\n video.pause()\n return\n }\n\n requestPlayback()\n }, [isPlaying, requestPlayback, videoRef])\n\n return {\n handlePlaybackEnded,\n handlePlaybackPaused,\n handlePlaybackStarted,\n isPlaying,\n togglePlayback,\n videoRef,\n }\n}\n"],"mappings":";;;AAUA,SAAgB,EAAwB,EACtC,aACA,iBACA,2BACiC;CACjC,IAAM,IAAW,EAAgD,
|
|
1
|
+
{"version":3,"file":"useMinimalVideoPlayback.js","names":[],"sources":["../../src/MinimalVideoPlayer/useMinimalVideoPlayback.ts"],"sourcesContent":["import {useCallback, useEffect, useRef, useState, type Ref} from 'react'\n\nimport {useProvidedRefOrCreate} from '../hooks/useRef'\n\ntype UseMinimalVideoPlaybackOptions = {\n autoPlay: boolean\n forwardedRef: Ref<HTMLVideoElement>\n prefersReducedMotion: boolean\n}\n\nexport function useMinimalVideoPlayback({\n autoPlay,\n forwardedRef,\n prefersReducedMotion,\n}: UseMinimalVideoPlaybackOptions) {\n const videoRef = useProvidedRefOrCreate<HTMLVideoElement | null>(forwardedRef)\n const pausedByViewportRef = useRef(false)\n const initialAutoPlayHandledRef = useRef(false)\n const [isPlaying, setIsPlaying] = useState(false)\n\n const requestPlayback = useCallback(async () => {\n const video = videoRef.current\n\n if (!video) return\n\n try {\n await video.play()\n } catch {\n if (video.paused) {\n setIsPlaying(false)\n }\n }\n }, [videoRef])\n\n const handlePlaybackStarted = useCallback(() => setIsPlaying(true), [])\n const handlePlaybackPaused = useCallback(() => setIsPlaying(false), [])\n const handlePlaybackEnded = useCallback(() => {\n pausedByViewportRef.current = false\n setIsPlaying(false)\n }, [])\n\n useEffect(() => {\n const video = videoRef.current\n\n if (!video) return\n\n const handleVisibilityChange = (isVisible: boolean) => {\n if (isVisible) {\n if (pausedByViewportRef.current) {\n pausedByViewportRef.current = false\n if (autoPlay && !prefersReducedMotion) {\n requestPlayback()\n }\n return\n }\n\n if (!initialAutoPlayHandledRef.current && prefersReducedMotion) {\n initialAutoPlayHandledRef.current = true\n return\n }\n\n if (!initialAutoPlayHandledRef.current && autoPlay) {\n initialAutoPlayHandledRef.current = true\n requestPlayback()\n }\n return\n }\n\n if (!video.paused) {\n pausedByViewportRef.current = autoPlay && !prefersReducedMotion\n video.pause()\n }\n }\n\n if (typeof IntersectionObserver === 'undefined') {\n handleVisibilityChange(true)\n return\n }\n\n const observer = new IntersectionObserver(([entry]) => {\n handleVisibilityChange(entry.intersectionRatio > 0)\n })\n\n observer.observe(video)\n return () => observer.disconnect()\n }, [autoPlay, prefersReducedMotion, requestPlayback, videoRef])\n\n useEffect(() => {\n if (!prefersReducedMotion) return\n\n initialAutoPlayHandledRef.current = true\n pausedByViewportRef.current = false\n videoRef.current?.pause()\n }, [prefersReducedMotion, videoRef])\n\n const togglePlayback = useCallback(() => {\n const video = videoRef.current\n\n if (!video) return\n\n initialAutoPlayHandledRef.current = true\n pausedByViewportRef.current = false\n\n if (isPlaying) {\n setIsPlaying(false)\n video.pause()\n return\n }\n\n requestPlayback()\n }, [isPlaying, requestPlayback, videoRef])\n\n return {\n handlePlaybackEnded,\n handlePlaybackPaused,\n handlePlaybackStarted,\n isPlaying,\n togglePlayback,\n videoRef,\n }\n}\n"],"mappings":";;;AAUA,SAAgB,EAAwB,EACtC,aACA,iBACA,2BACiC;CACjC,IAAM,IAAW,EAAgD,CAAY,GACvE,IAAsB,EAAO,EAAK,GAClC,IAA4B,EAAO,EAAK,GACxC,CAAC,GAAW,KAAgB,EAAS,EAAK,GAE1C,IAAkB,EAAY,YAAY;EAC9C,IAAM,IAAQ,EAAS;EAElB,OAEL,IAAI;GACF,MAAM,EAAM,KAAK;EACnB,QAAQ;GACN,AAAI,EAAM,UACR,EAAa,EAAK;EAEtB;CACF,GAAG,CAAC,CAAQ,CAAC,GAEP,IAAwB,QAAkB,EAAa,EAAI,GAAG,CAAC,CAAC,GAChE,IAAuB,QAAkB,EAAa,EAAK,GAAG,CAAC,CAAC,GAChE,IAAsB,QAAkB;EAE5C,AADA,EAAoB,UAAU,IAC9B,EAAa,EAAK;CACpB,GAAG,CAAC,CAAC;CAyEL,OAvEA,QAAgB;EACd,IAAM,IAAQ,EAAS;EAEvB,IAAI,CAAC,GAAO;EAEZ,IAAM,KAA0B,MAAuB;GACrD,IAAI,GAAW;IACb,IAAI,EAAoB,SAAS;KAE/B,AADA,EAAoB,UAAU,IAC1B,KAAY,CAAC,KACf,EAAgB;KAElB;IACF;IAEA,IAAI,CAAC,EAA0B,WAAW,GAAsB;KAC9D,EAA0B,UAAU;KACpC;IACF;IAEA,AAAI,CAAC,EAA0B,WAAW,MACxC,EAA0B,UAAU,IACpC,EAAgB;IAElB;GACF;GAEA,AAAK,EAAM,WACT,EAAoB,UAAU,KAAY,CAAC,GAC3C,EAAM,MAAM;EAEhB;EAEA,IAAI,OAAO,uBAAyB,KAAa;GAC/C,EAAuB,EAAI;GAC3B;EACF;EAEA,IAAM,IAAW,IAAI,sBAAsB,CAAC,OAAW;GACrD,EAAuB,EAAM,oBAAoB,CAAC;EACpD,CAAC;EAGD,OADA,EAAS,QAAQ,CAAK,SACT,EAAS,WAAW;CACnC,GAAG;EAAC;EAAU;EAAsB;EAAiB;CAAQ,CAAC,GAE9D,QAAgB;EACT,MAEL,EAA0B,UAAU,IACpC,EAAoB,UAAU,IAC9B,EAAS,SAAS,MAAM;CAC1B,GAAG,CAAC,GAAsB,CAAQ,CAAC,GAmB5B;EACL;EACA;EACA;EACA;EACA,gBAtBqB,QAAkB;GACvC,IAAM,IAAQ,EAAS;GAElB,OAKL;QAHA,EAA0B,UAAU,IACpC,EAAoB,UAAU,IAE1B,GAAW;KAEb,AADA,EAAa,EAAK,GAClB,EAAM,MAAM;KACZ;IACF;IAEA,EAAgB;GAFhB;EAGF,GAAG;GAAC;GAAW;GAAiB;EAAQ,CAOtC;EACA;CACF;AACF"}
|
package/esm/NavList/NavList.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import e from "../node_modules/clsx/dist/clsx.js";
|
|
1
|
+
import { clsx as e } from "../node_modules/clsx/dist/clsx.js";
|
|
2
2
|
import { useId as t } from "../hooks/useId.js";
|
|
3
|
-
import { TriangleDownIcon as n } from "../node_modules/@primer/octicons-react/dist/
|
|
3
|
+
import { TriangleDownIcon as n } from "../node_modules/@primer/octicons-react/dist/icons/TriangleDownIcon.js";
|
|
4
4
|
import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes-CGyt2t8f.css';/* empty css */
|
|
5
5
|
import r from "./NavList.module.js";
|
|
6
6
|
import i, { Children as a, createContext as o, forwardRef as s, isValidElement as c, useCallback as l, useContext as u, useEffect as d, useMemo as f, useRef as p, useState as m } from "react";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"NavList.js","names":[],"sources":["../../src/NavList/NavList.tsx"],"sourcesContent":["import React, {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type AriaAttributes,\n type MutableRefObject,\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react'\n\nimport {clsx} from 'clsx'\nimport {TriangleDownIcon, type Icon} from '@primer/octicons-react'\nimport type {BaseProps} from '../component-helpers'\nimport {useId} from '../hooks/useId'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css'\n\n/** * Main stylesheet (as a CSS Module) */\nimport styles from './NavList.module.css'\n\nconst testIds = {\n root: 'NavList',\n get list() {\n return `${this.root}-list`\n },\n get item() {\n return `${this.root}-item`\n },\n get link() {\n return `${this.root}-link`\n },\n get leadingVisual() {\n return `${this.root}-leading-visual`\n },\n get trailingVisual() {\n return `${this.root}-trailing-visual`\n },\n get subNav() {\n return `${this.root}-sub-nav`\n },\n get group() {\n return `${this.root}-group`\n },\n get groupTitle() {\n return `${this.root}-group-title`\n },\n get groupList() {\n return `${this.root}-group-list`\n },\n get toggle() {\n return `${this.root}-toggle`\n },\n}\n\nexport type NavListRootProps = {\n /**\n * Accessible label for the navigation landmark.\n */\n 'aria-label': string\n /**\n * ID of an element that labels the navigation landmark.\n */\n 'aria-labelledby'?: string\n children: ReactNode\n 'data-testid'?: string\n} & BaseProps<HTMLElement> &\n Omit<React.HTMLAttributes<HTMLElement>, 'aria-label' | 'aria-labelledby'>\n\ntype NavListLevel = 1 | 2 | 3 | 4 | 5\n\nconst MaxNavListLevel = 5\nconst NavListLevelContext = createContext<NavListLevel>(1)\nconst NavListSubNavContext = createContext<{\n expanded: boolean\n labelledBy?: string\n level: NavListLevel\n}>({\n expanded: true,\n level: 2,\n})\n\nconst NavListRoot = forwardRef<HTMLElement, NavListRootProps>(\n (\n {children, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'data-testid': testId, ...rest},\n ref,\n ) => {\n const childrenArray = useMemo(() => Children.toArray(children), [children])\n const hasTopLevelSubNav = useMemo(() => childrenArray.some(childHasDirectSubNav), [childrenArray])\n const hasTopLevelGroup = useMemo(() => childrenArray.some(childIsNavListGroupElement), [childrenArray])\n const rootLevel = hasTopLevelSubNav ? 1 : 2\n const hasFlatRootList = !hasTopLevelSubNav && !hasTopLevelGroup\n\n return (\n <nav\n ref={ref}\n className={clsx(styles.NavList, className)}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-testid={testId || testIds.root}\n {...rest}\n >\n <NavListLevelContext.Provider value={rootLevel}>\n <ul\n className={clsx(styles.NavList__list, hasFlatRootList && styles['NavList__list--flat'])}\n data-testid={testIds.list}\n >\n {children}\n </ul>\n </NavListLevelContext.Provider>\n </nav>\n )\n },\n)\n\ntype Visual = ReactElement | React.ElementType | Icon\ntype NavListItemAs = 'a' | 'button'\n\ntype NavListItemBaseProps = {\n /**\n * Leading visual rendered before the item label.\n */\n leadingVisual?: Visual\n /**\n * Trailing visual rendered after the item label.\n */\n trailingVisual?: Visual\n /**\n * Whether nested items should be expanded by default.\n */\n defaultExpanded?: boolean\n /**\n * Controls the nested item expanded state.\n */\n expanded?: boolean\n /**\n * Called when a nested item is expanded or collapsed.\n */\n onExpandedChange?: (expanded: boolean) => void\n /**\n * Marks the item as disabled. Disabled link items receive `aria-disabled`.\n */\n disabled?: boolean\n 'data-testid'?: string\n}\n\nexport type NavListItemProps<C extends NavListItemAs = 'a'> = {\n as?: C\n} & NavListItemBaseProps &\n PropsWithChildren<BaseProps<HTMLElement>> &\n Omit<React.ComponentPropsWithoutRef<C>, keyof NavListItemBaseProps | keyof BaseProps<HTMLElement> | 'as' | 'children'>\n\ntype NavListSubNavElement = ReactElement<NavListSubNavProps>\n\nconst NavListItem = forwardRef(\n (\n {\n as,\n children,\n className,\n defaultExpanded = false,\n disabled = false,\n expanded,\n leadingVisual,\n onClick,\n onExpandedChange,\n trailingVisual,\n 'aria-current': ariaCurrent,\n 'data-testid': testId,\n ...rest\n }: NavListItemProps<NavListItemAs>,\n ref: Ref<HTMLElement>,\n ) => {\n const Component = (as || 'a') as React.ElementType\n const level = useContext(NavListLevelContext)\n const subNavId = useId()\n const accordionButtonId = useId()\n const childrenArray = useMemo(() => Children.toArray(children), [children])\n const subNavChildren = useMemo(() => childrenArray.filter(isNavListSubNavElement), [childrenArray])\n const subNav = useMemo(() => childrenArray.find(isNavListSubNavElement), [childrenArray])\n const navListGroupChildren = useMemo(() => childrenArray.filter(childHasNavListGroupElement), [childrenArray])\n const labelChildren = useMemo(\n () => (subNav ? childrenArray.filter(child => child !== subNav) : childrenArray),\n [childrenArray, subNav],\n )\n const hasLabelContent = labelChildren.length > 0\n const hasSubNav = Boolean(subNav)\n const canExpand = level < MaxNavListLevel\n const isLeafItem = !hasSubNav\n const controlledSubNavId = subNav?.props.id ?? subNavId\n const hasCurrentSubNavItem = useMemo(() => hasCurrentDescendant(subNav?.props.children), [subNav?.props.children])\n const isControlled = expanded !== undefined\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState(defaultExpanded || hasCurrentSubNavItem)\n const isExpanded = Boolean(isControlled ? expanded : uncontrolledExpanded)\n const {\n href,\n id: accordionButtonIdProp,\n ...accordionButtonProps\n } = rest as React.ButtonHTMLAttributes<HTMLButtonElement> & {\n href?: string\n }\n const controlledAccordionButtonId = accordionButtonIdProp ?? accordionButtonId\n const itemOnClick = onClick as React.MouseEventHandler<HTMLElement> | undefined\n const invalidMessage = useMemo(() => {\n if (navListGroupChildren.length > 0) {\n return 'NavList.Item: NavList.Group is not supported as a child. Use NavList.SubNav for nested disclosure. NavList.Item will not be rendered.'\n }\n\n if (hasSubNav && !canExpand) {\n return 'NavList.Item: NavList supports up to 5 levels. Level 5 items cannot contain NavList.SubNav. NavList.Item will not be rendered.'\n }\n\n if (subNavChildren.length > 1) {\n return 'NavList.Item: Only one NavList.SubNav child is supported. NavList.Item will not be rendered.'\n }\n\n if (hasSubNav && !hasLabelContent) {\n return 'NavList.Item: A label is required when using NavList.SubNav. NavList.Item will not be rendered.'\n }\n\n if (hasSubNav && (href !== undefined || as !== undefined)) {\n return 'NavList.Item: `href` and `as` are not supported when using NavList.SubNav because expandable items render as buttons. NavList.Item will not be rendered.'\n }\n }, [as, canExpand, hasLabelContent, hasSubNav, href, navListGroupChildren.length, subNavChildren.length])\n\n useEffect(() => {\n if (hasCurrentSubNavItem && !isControlled) {\n setUncontrolledExpanded(true)\n }\n }, [hasCurrentSubNavItem, isControlled])\n\n const setExpanded = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledExpanded(value)\n }\n onExpandedChange?.(value)\n },\n [isControlled, onExpandedChange],\n )\n\n const toggleExpanded = useCallback(() => {\n setExpanded(!isExpanded)\n }, [isExpanded, setExpanded])\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n itemOnClick?.(event)\n },\n [disabled, itemOnClick],\n )\n\n const setAccordionButtonRef = useCallback(\n (node: HTMLButtonElement | null) => {\n assignRef(ref, node)\n },\n [ref],\n )\n\n const handleAccordionClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n itemOnClick?.(event)\n\n if (!event.defaultPrevented) {\n toggleExpanded()\n }\n },\n [disabled, itemOnClick, toggleExpanded],\n )\n\n if (invalidMessage) {\n warnNavListValidation(invalidMessage)\n return null\n }\n\n const labelArea = (\n <span className={styles.NavList__labelArea}>\n {renderVisual(leadingVisual, styles.NavList__leadingVisual, testIds.leadingVisual)}\n <span className={styles.NavList__label}>{labelChildren}</span>\n {renderVisual(trailingVisual, styles.NavList__trailingVisual, testIds.trailingVisual)}\n </span>\n )\n\n return (\n <li\n className={clsx(\n styles.NavList__item,\n styles[`NavList__item--level-${level}`],\n isLeafItem && styles['NavList__item--leaf'],\n hasSubNav && isExpanded && styles['NavList__item--expanded'],\n hasCurrentSubNavItem && styles['NavList__item--has-current-descendant'],\n )}\n data-testid={testId || testIds.item}\n >\n <div className={styles.NavList__itemContent}>\n {hasSubNav && canExpand ? (\n <button\n ref={setAccordionButtonRef}\n id={controlledAccordionButtonId}\n type=\"button\"\n className={clsx(\n styles.NavList__link,\n styles.NavList__accordionButton,\n disabled && styles['NavList__link--disabled'],\n className,\n )}\n aria-expanded={isExpanded ? 'true' : 'false'}\n aria-controls={controlledSubNavId}\n data-testid={testIds.toggle}\n {...accordionButtonProps}\n disabled={disabled}\n onClick={handleAccordionClick}\n >\n <TriangleDownIcon className={styles.NavList__toggleIcon} aria-hidden=\"true\" />\n {labelArea}\n </button>\n ) : (\n <Component\n ref={ref}\n className={clsx(styles.NavList__link, disabled && styles['NavList__link--disabled'], className)}\n aria-current={ariaCurrent}\n aria-disabled={disabled || undefined}\n data-testid={testIds.link}\n onClick={handleClick}\n {...rest}\n >\n {labelArea}\n </Component>\n )}\n </div>\n\n {subNav ? (\n <NavListSubNavContext.Provider\n value={{expanded: isExpanded, labelledBy: controlledAccordionButtonId, level: (level + 1) as NavListLevel}}\n >\n {React.cloneElement(subNav, {\n id: controlledSubNavId,\n })}\n </NavListSubNavContext.Provider>\n ) : null}\n </li>\n )\n },\n) as <C extends NavListItemAs = 'a'>(props: NavListItemProps<C> & {ref?: Ref<HTMLElement>}) => ReactElement | null\n\nexport type NavListSubNavProps = {\n children: ReactNode\n 'data-testid'?: string\n} & BaseProps<HTMLUListElement> &\n React.HTMLAttributes<HTMLUListElement>\n\nconst NavListSubNav = forwardRef<HTMLUListElement, NavListSubNavProps>(\n ({children, className, 'aria-labelledby': ariaLabelledBy, 'data-testid': testId, ...rest}, ref) => {\n const {expanded, labelledBy, level} = useContext(NavListSubNavContext)\n const subNavRef = useRef<HTMLUListElement | null>(null)\n\n const setSubNavHeight = useCallback((subNav: HTMLUListElement) => {\n subNav.style.setProperty('--brand-NavList-subNav-height', `${subNav.scrollHeight}px`)\n }, [])\n\n const setSubNavAndAncestorHeights = useCallback(() => {\n let subNav = subNavRef.current\n\n while (subNav) {\n setSubNavHeight(subNav)\n subNav = subNav.parentElement?.closest<HTMLUListElement>(`.${styles.NavList__subNav}`) ?? null\n }\n }, [setSubNavHeight])\n\n const setSubNavRef = useCallback(\n (node: HTMLUListElement | null) => {\n subNavRef.current = node\n assignRef(ref, node)\n },\n [ref],\n )\n\n useEffect(() => {\n setSubNavAndAncestorHeights()\n }, [children, expanded, setSubNavAndAncestorHeights])\n\n useEffect(() => {\n subNavRef.current?.toggleAttribute('inert', !expanded)\n }, [expanded])\n\n useEffect(() => {\n const subNav = subNavRef.current\n\n if (!subNav || typeof ResizeObserver === 'undefined') {\n return\n }\n\n const resizeObserver = new ResizeObserver(setSubNavAndAncestorHeights)\n resizeObserver.observe(subNav)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [setSubNavAndAncestorHeights])\n\n return (\n <ul\n ref={setSubNavRef}\n className={clsx(styles.NavList__subNav, expanded && styles['NavList__subNav--expanded'], className)}\n aria-labelledby={ariaLabelledBy ?? labelledBy}\n {...rest}\n aria-hidden={expanded ? undefined : 'true'}\n data-testid={testId || testIds.subNav}\n >\n <NavListLevelContext.Provider value={level}>{children}</NavListLevelContext.Provider>\n </ul>\n )\n },\n)\n\nexport type NavListGroupProps = {\n /**\n * Heading text for the group.\n */\n title?: ReactNode\n children: ReactNode\n 'data-testid'?: string\n} & BaseProps<HTMLLIElement> &\n Omit<React.LiHTMLAttributes<HTMLLIElement>, 'title'>\n\nconst NavListGroup = forwardRef<HTMLLIElement, NavListGroupProps>(\n ({title, children, className, 'data-testid': testId, ...rest}, ref) => {\n const titleId = useId()\n const validChildren = useMemo(() => {\n const getValidChildren = (childrenToValidate: ReactNode): ReactNode[] =>\n Children.toArray(childrenToValidate).flatMap(child => {\n if (isNavListItemElement(child)) {\n return [child]\n }\n\n if (isValidElement(child) && child.type === React.Fragment) {\n return getValidChildren((child as ElementWithChildren).props.children)\n }\n\n return []\n })\n\n return getValidChildren(children)\n }, [children])\n const hasInvalidChild = useMemo(() => {\n const containsInvalidChild = (childrenToValidate: ReactNode): boolean =>\n Children.toArray(childrenToValidate).some(child => {\n if (isNavListItemElement(child)) {\n return false\n }\n\n if (isValidElement(child) && child.type === React.Fragment) {\n return containsInvalidChild((child as ElementWithChildren).props.children)\n }\n\n return true\n })\n\n return containsInvalidChild(children)\n }, [children])\n\n if (hasInvalidChild) {\n warnNavListValidation(\n 'NavList.Group: Only NavList.Item children are supported. Invalid children will not be rendered. Use NavList.SubNav as a child of NavList.Item for nested disclosure.',\n )\n }\n\n return (\n <li ref={ref} className={clsx(styles.NavList__group, className)} data-testid={testId || testIds.group} {...rest}>\n {title ? (\n <h3 id={titleId} className={styles.NavList__groupTitle} data-testid={testIds.groupTitle}>\n {title}\n </h3>\n ) : null}\n <ul\n className={styles.NavList__groupList}\n aria-labelledby={title ? titleId : undefined}\n data-testid={testIds.groupList}\n >\n <NavListLevelContext.Provider value={2}>{validChildren}</NavListLevelContext.Provider>\n </ul>\n </li>\n )\n },\n)\n\n/**\n * Use NavList to render vertical navigation links with groups and expandable nested lists.\n * @see https://primer.style/brand/components/NavList\n */\nexport const NavList = Object.assign(NavListRoot, {\n Item: NavListItem,\n SubNav: NavListSubNav,\n Group: NavListGroup,\n testIds,\n})\n\ntype ElementWithChildren = ReactElement<{children?: ReactNode}>\ntype ElementWithCurrent = ReactElement<{children?: ReactNode; 'aria-current'?: AriaAttributes['aria-current']}>\n\nfunction isNavListSubNavElement(node: ReactNode): node is NavListSubNavElement {\n return isValidElement<NavListSubNavProps>(node) && node.type === NavListSubNav\n}\n\nfunction isNavListItemElement(node: ReactNode): node is ReactElement<NavListItemProps> {\n return isValidElement<NavListItemProps>(node) && node.type === NavListItem\n}\n\nfunction isNavListGroupElement(node: ReactNode): node is ReactElement<NavListGroupProps> {\n return isValidElement<NavListGroupProps>(node) && node.type === NavListGroup\n}\n\nfunction isCurrentValue(value: AriaAttributes['aria-current']) {\n return Boolean(value) && value !== 'false'\n}\n\nfunction hasCurrentDescendant(node: ReactNode): boolean {\n return Children.toArray(node).some(child => {\n if (!isValidElement(child)) return false\n\n const currentChild = child as ElementWithCurrent\n if (isCurrentValue(currentChild.props['aria-current'])) return true\n\n return hasCurrentDescendant((child as ElementWithChildren).props.children)\n })\n}\n\nfunction assignRef<T>(ref: Ref<T> | undefined, value: T | null) {\n if (!ref) return\n\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n\n ;(ref as MutableRefObject<T | null>).current = value\n}\n\nfunction childHasDirectSubNav(node: ReactNode): boolean {\n if (!isValidElement(node)) return false\n\n if (node.type === React.Fragment) {\n return Children.toArray((node as ElementWithChildren).props.children).some(childHasDirectSubNav)\n }\n\n return Children.toArray((node as ElementWithChildren).props.children).some(isNavListSubNavElement)\n}\n\nfunction childIsNavListGroupElement(node: ReactNode): boolean {\n if (!isValidElement(node)) return false\n\n if (node.type === React.Fragment) {\n return Children.toArray((node as ElementWithChildren).props.children).some(childIsNavListGroupElement)\n }\n\n return isNavListGroupElement(node)\n}\n\nfunction childHasNavListGroupElement(node: ReactNode): boolean {\n if (!isValidElement(node)) return false\n\n if (node.type === React.Fragment) {\n return Children.toArray((node as ElementWithChildren).props.children).some(childHasNavListGroupElement)\n }\n\n return isNavListGroupElement(node)\n}\n\nfunction renderVisual(visual: Visual | undefined, className: string, testId: string) {\n if (!visual) return null\n\n const visualElement = isValidElement(visual) ? visual : React.createElement(visual)\n\n if (!isValidElement<{className?: string; ['aria-hidden']?: string; focusable?: string}>(visualElement)) return null\n\n return (\n <span className={className} data-testid={testId}>\n {React.cloneElement(visualElement, {\n className: visualElement.props.className,\n 'aria-hidden': 'true',\n focusable: 'false',\n })}\n </span>\n )\n}\n\nfunction warnNavListValidation(message: string) {\n if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {\n // eslint-disable-next-line no-console\n console.warn(message)\n }\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"NavList.js","names":[],"sources":["../../src/NavList/NavList.tsx"],"sourcesContent":["import React, {\n Children,\n createContext,\n forwardRef,\n isValidElement,\n useCallback,\n useContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n type AriaAttributes,\n type MutableRefObject,\n type PropsWithChildren,\n type ReactElement,\n type ReactNode,\n type Ref,\n} from 'react'\n\nimport {clsx} from 'clsx'\nimport {TriangleDownIcon, type Icon} from '@primer/octicons-react'\nimport type {BaseProps} from '../component-helpers'\nimport {useId} from '../hooks/useId'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/nav-list/colors-with-modes.css'\n\n/** * Main stylesheet (as a CSS Module) */\nimport styles from './NavList.module.css'\n\nconst testIds = {\n root: 'NavList',\n get list() {\n return `${this.root}-list`\n },\n get item() {\n return `${this.root}-item`\n },\n get link() {\n return `${this.root}-link`\n },\n get leadingVisual() {\n return `${this.root}-leading-visual`\n },\n get trailingVisual() {\n return `${this.root}-trailing-visual`\n },\n get subNav() {\n return `${this.root}-sub-nav`\n },\n get group() {\n return `${this.root}-group`\n },\n get groupTitle() {\n return `${this.root}-group-title`\n },\n get groupList() {\n return `${this.root}-group-list`\n },\n get toggle() {\n return `${this.root}-toggle`\n },\n}\n\nexport type NavListRootProps = {\n /**\n * Accessible label for the navigation landmark.\n */\n 'aria-label': string\n /**\n * ID of an element that labels the navigation landmark.\n */\n 'aria-labelledby'?: string\n children: ReactNode\n 'data-testid'?: string\n} & BaseProps<HTMLElement> &\n Omit<React.HTMLAttributes<HTMLElement>, 'aria-label' | 'aria-labelledby'>\n\ntype NavListLevel = 1 | 2 | 3 | 4 | 5\n\nconst MaxNavListLevel = 5\nconst NavListLevelContext = createContext<NavListLevel>(1)\nconst NavListSubNavContext = createContext<{\n expanded: boolean\n labelledBy?: string\n level: NavListLevel\n}>({\n expanded: true,\n level: 2,\n})\n\nconst NavListRoot = forwardRef<HTMLElement, NavListRootProps>(\n (\n {children, className, 'aria-label': ariaLabel, 'aria-labelledby': ariaLabelledBy, 'data-testid': testId, ...rest},\n ref,\n ) => {\n const childrenArray = useMemo(() => Children.toArray(children), [children])\n const hasTopLevelSubNav = useMemo(() => childrenArray.some(childHasDirectSubNav), [childrenArray])\n const hasTopLevelGroup = useMemo(() => childrenArray.some(childIsNavListGroupElement), [childrenArray])\n const rootLevel = hasTopLevelSubNav ? 1 : 2\n const hasFlatRootList = !hasTopLevelSubNav && !hasTopLevelGroup\n\n return (\n <nav\n ref={ref}\n className={clsx(styles.NavList, className)}\n aria-label={ariaLabel}\n aria-labelledby={ariaLabelledBy}\n data-testid={testId || testIds.root}\n {...rest}\n >\n <NavListLevelContext.Provider value={rootLevel}>\n <ul\n className={clsx(styles.NavList__list, hasFlatRootList && styles['NavList__list--flat'])}\n data-testid={testIds.list}\n >\n {children}\n </ul>\n </NavListLevelContext.Provider>\n </nav>\n )\n },\n)\n\ntype Visual = ReactElement | React.ElementType | Icon\ntype NavListItemAs = 'a' | 'button'\n\ntype NavListItemBaseProps = {\n /**\n * Leading visual rendered before the item label.\n */\n leadingVisual?: Visual\n /**\n * Trailing visual rendered after the item label.\n */\n trailingVisual?: Visual\n /**\n * Whether nested items should be expanded by default.\n */\n defaultExpanded?: boolean\n /**\n * Controls the nested item expanded state.\n */\n expanded?: boolean\n /**\n * Called when a nested item is expanded or collapsed.\n */\n onExpandedChange?: (expanded: boolean) => void\n /**\n * Marks the item as disabled. Disabled link items receive `aria-disabled`.\n */\n disabled?: boolean\n 'data-testid'?: string\n}\n\nexport type NavListItemProps<C extends NavListItemAs = 'a'> = {\n as?: C\n} & NavListItemBaseProps &\n PropsWithChildren<BaseProps<HTMLElement>> &\n Omit<React.ComponentPropsWithoutRef<C>, keyof NavListItemBaseProps | keyof BaseProps<HTMLElement> | 'as' | 'children'>\n\ntype NavListSubNavElement = ReactElement<NavListSubNavProps>\n\nconst NavListItem = forwardRef(\n (\n {\n as,\n children,\n className,\n defaultExpanded = false,\n disabled = false,\n expanded,\n leadingVisual,\n onClick,\n onExpandedChange,\n trailingVisual,\n 'aria-current': ariaCurrent,\n 'data-testid': testId,\n ...rest\n }: NavListItemProps<NavListItemAs>,\n ref: Ref<HTMLElement>,\n ) => {\n const Component = (as || 'a') as React.ElementType\n const level = useContext(NavListLevelContext)\n const subNavId = useId()\n const accordionButtonId = useId()\n const childrenArray = useMemo(() => Children.toArray(children), [children])\n const subNavChildren = useMemo(() => childrenArray.filter(isNavListSubNavElement), [childrenArray])\n const subNav = useMemo(() => childrenArray.find(isNavListSubNavElement), [childrenArray])\n const navListGroupChildren = useMemo(() => childrenArray.filter(childHasNavListGroupElement), [childrenArray])\n const labelChildren = useMemo(\n () => (subNav ? childrenArray.filter(child => child !== subNav) : childrenArray),\n [childrenArray, subNav],\n )\n const hasLabelContent = labelChildren.length > 0\n const hasSubNav = Boolean(subNav)\n const canExpand = level < MaxNavListLevel\n const isLeafItem = !hasSubNav\n const controlledSubNavId = subNav?.props.id ?? subNavId\n const hasCurrentSubNavItem = useMemo(() => hasCurrentDescendant(subNav?.props.children), [subNav?.props.children])\n const isControlled = expanded !== undefined\n const [uncontrolledExpanded, setUncontrolledExpanded] = useState(defaultExpanded || hasCurrentSubNavItem)\n const isExpanded = Boolean(isControlled ? expanded : uncontrolledExpanded)\n const {\n href,\n id: accordionButtonIdProp,\n ...accordionButtonProps\n } = rest as React.ButtonHTMLAttributes<HTMLButtonElement> & {\n href?: string\n }\n const controlledAccordionButtonId = accordionButtonIdProp ?? accordionButtonId\n const itemOnClick = onClick as React.MouseEventHandler<HTMLElement> | undefined\n const invalidMessage = useMemo(() => {\n if (navListGroupChildren.length > 0) {\n return 'NavList.Item: NavList.Group is not supported as a child. Use NavList.SubNav for nested disclosure. NavList.Item will not be rendered.'\n }\n\n if (hasSubNav && !canExpand) {\n return 'NavList.Item: NavList supports up to 5 levels. Level 5 items cannot contain NavList.SubNav. NavList.Item will not be rendered.'\n }\n\n if (subNavChildren.length > 1) {\n return 'NavList.Item: Only one NavList.SubNav child is supported. NavList.Item will not be rendered.'\n }\n\n if (hasSubNav && !hasLabelContent) {\n return 'NavList.Item: A label is required when using NavList.SubNav. NavList.Item will not be rendered.'\n }\n\n if (hasSubNav && (href !== undefined || as !== undefined)) {\n return 'NavList.Item: `href` and `as` are not supported when using NavList.SubNav because expandable items render as buttons. NavList.Item will not be rendered.'\n }\n }, [as, canExpand, hasLabelContent, hasSubNav, href, navListGroupChildren.length, subNavChildren.length])\n\n useEffect(() => {\n if (hasCurrentSubNavItem && !isControlled) {\n setUncontrolledExpanded(true)\n }\n }, [hasCurrentSubNavItem, isControlled])\n\n const setExpanded = useCallback(\n (value: boolean) => {\n if (!isControlled) {\n setUncontrolledExpanded(value)\n }\n onExpandedChange?.(value)\n },\n [isControlled, onExpandedChange],\n )\n\n const toggleExpanded = useCallback(() => {\n setExpanded(!isExpanded)\n }, [isExpanded, setExpanded])\n\n const handleClick = useCallback(\n (event: React.MouseEvent<HTMLElement>) => {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n itemOnClick?.(event)\n },\n [disabled, itemOnClick],\n )\n\n const setAccordionButtonRef = useCallback(\n (node: HTMLButtonElement | null) => {\n assignRef(ref, node)\n },\n [ref],\n )\n\n const handleAccordionClick = useCallback(\n (event: React.MouseEvent<HTMLButtonElement>) => {\n if (disabled) {\n event.preventDefault()\n return\n }\n\n itemOnClick?.(event)\n\n if (!event.defaultPrevented) {\n toggleExpanded()\n }\n },\n [disabled, itemOnClick, toggleExpanded],\n )\n\n if (invalidMessage) {\n warnNavListValidation(invalidMessage)\n return null\n }\n\n const labelArea = (\n <span className={styles.NavList__labelArea}>\n {renderVisual(leadingVisual, styles.NavList__leadingVisual, testIds.leadingVisual)}\n <span className={styles.NavList__label}>{labelChildren}</span>\n {renderVisual(trailingVisual, styles.NavList__trailingVisual, testIds.trailingVisual)}\n </span>\n )\n\n return (\n <li\n className={clsx(\n styles.NavList__item,\n styles[`NavList__item--level-${level}`],\n isLeafItem && styles['NavList__item--leaf'],\n hasSubNav && isExpanded && styles['NavList__item--expanded'],\n hasCurrentSubNavItem && styles['NavList__item--has-current-descendant'],\n )}\n data-testid={testId || testIds.item}\n >\n <div className={styles.NavList__itemContent}>\n {hasSubNav && canExpand ? (\n <button\n ref={setAccordionButtonRef}\n id={controlledAccordionButtonId}\n type=\"button\"\n className={clsx(\n styles.NavList__link,\n styles.NavList__accordionButton,\n disabled && styles['NavList__link--disabled'],\n className,\n )}\n aria-expanded={isExpanded ? 'true' : 'false'}\n aria-controls={controlledSubNavId}\n data-testid={testIds.toggle}\n {...accordionButtonProps}\n disabled={disabled}\n onClick={handleAccordionClick}\n >\n <TriangleDownIcon className={styles.NavList__toggleIcon} aria-hidden=\"true\" />\n {labelArea}\n </button>\n ) : (\n <Component\n ref={ref}\n className={clsx(styles.NavList__link, disabled && styles['NavList__link--disabled'], className)}\n aria-current={ariaCurrent}\n aria-disabled={disabled || undefined}\n data-testid={testIds.link}\n onClick={handleClick}\n {...rest}\n >\n {labelArea}\n </Component>\n )}\n </div>\n\n {subNav ? (\n <NavListSubNavContext.Provider\n value={{expanded: isExpanded, labelledBy: controlledAccordionButtonId, level: (level + 1) as NavListLevel}}\n >\n {React.cloneElement(subNav, {\n id: controlledSubNavId,\n })}\n </NavListSubNavContext.Provider>\n ) : null}\n </li>\n )\n },\n) as <C extends NavListItemAs = 'a'>(props: NavListItemProps<C> & {ref?: Ref<HTMLElement>}) => ReactElement | null\n\nexport type NavListSubNavProps = {\n children: ReactNode\n 'data-testid'?: string\n} & BaseProps<HTMLUListElement> &\n React.HTMLAttributes<HTMLUListElement>\n\nconst NavListSubNav = forwardRef<HTMLUListElement, NavListSubNavProps>(\n ({children, className, 'aria-labelledby': ariaLabelledBy, 'data-testid': testId, ...rest}, ref) => {\n const {expanded, labelledBy, level} = useContext(NavListSubNavContext)\n const subNavRef = useRef<HTMLUListElement | null>(null)\n\n const setSubNavHeight = useCallback((subNav: HTMLUListElement) => {\n subNav.style.setProperty('--brand-NavList-subNav-height', `${subNav.scrollHeight}px`)\n }, [])\n\n const setSubNavAndAncestorHeights = useCallback(() => {\n let subNav = subNavRef.current\n\n while (subNav) {\n setSubNavHeight(subNav)\n subNav = subNav.parentElement?.closest<HTMLUListElement>(`.${styles.NavList__subNav}`) ?? null\n }\n }, [setSubNavHeight])\n\n const setSubNavRef = useCallback(\n (node: HTMLUListElement | null) => {\n subNavRef.current = node\n assignRef(ref, node)\n },\n [ref],\n )\n\n useEffect(() => {\n setSubNavAndAncestorHeights()\n }, [children, expanded, setSubNavAndAncestorHeights])\n\n useEffect(() => {\n subNavRef.current?.toggleAttribute('inert', !expanded)\n }, [expanded])\n\n useEffect(() => {\n const subNav = subNavRef.current\n\n if (!subNav || typeof ResizeObserver === 'undefined') {\n return\n }\n\n const resizeObserver = new ResizeObserver(setSubNavAndAncestorHeights)\n resizeObserver.observe(subNav)\n\n return () => {\n resizeObserver.disconnect()\n }\n }, [setSubNavAndAncestorHeights])\n\n return (\n <ul\n ref={setSubNavRef}\n className={clsx(styles.NavList__subNav, expanded && styles['NavList__subNav--expanded'], className)}\n aria-labelledby={ariaLabelledBy ?? labelledBy}\n {...rest}\n aria-hidden={expanded ? undefined : 'true'}\n data-testid={testId || testIds.subNav}\n >\n <NavListLevelContext.Provider value={level}>{children}</NavListLevelContext.Provider>\n </ul>\n )\n },\n)\n\nexport type NavListGroupProps = {\n /**\n * Heading text for the group.\n */\n title?: ReactNode\n children: ReactNode\n 'data-testid'?: string\n} & BaseProps<HTMLLIElement> &\n Omit<React.LiHTMLAttributes<HTMLLIElement>, 'title'>\n\nconst NavListGroup = forwardRef<HTMLLIElement, NavListGroupProps>(\n ({title, children, className, 'data-testid': testId, ...rest}, ref) => {\n const titleId = useId()\n const validChildren = useMemo(() => {\n const getValidChildren = (childrenToValidate: ReactNode): ReactNode[] =>\n Children.toArray(childrenToValidate).flatMap(child => {\n if (isNavListItemElement(child)) {\n return [child]\n }\n\n if (isValidElement(child) && child.type === React.Fragment) {\n return getValidChildren((child as ElementWithChildren).props.children)\n }\n\n return []\n })\n\n return getValidChildren(children)\n }, [children])\n const hasInvalidChild = useMemo(() => {\n const containsInvalidChild = (childrenToValidate: ReactNode): boolean =>\n Children.toArray(childrenToValidate).some(child => {\n if (isNavListItemElement(child)) {\n return false\n }\n\n if (isValidElement(child) && child.type === React.Fragment) {\n return containsInvalidChild((child as ElementWithChildren).props.children)\n }\n\n return true\n })\n\n return containsInvalidChild(children)\n }, [children])\n\n if (hasInvalidChild) {\n warnNavListValidation(\n 'NavList.Group: Only NavList.Item children are supported. Invalid children will not be rendered. Use NavList.SubNav as a child of NavList.Item for nested disclosure.',\n )\n }\n\n return (\n <li ref={ref} className={clsx(styles.NavList__group, className)} data-testid={testId || testIds.group} {...rest}>\n {title ? (\n <h3 id={titleId} className={styles.NavList__groupTitle} data-testid={testIds.groupTitle}>\n {title}\n </h3>\n ) : null}\n <ul\n className={styles.NavList__groupList}\n aria-labelledby={title ? titleId : undefined}\n data-testid={testIds.groupList}\n >\n <NavListLevelContext.Provider value={2}>{validChildren}</NavListLevelContext.Provider>\n </ul>\n </li>\n )\n },\n)\n\n/**\n * Use NavList to render vertical navigation links with groups and expandable nested lists.\n * @see https://primer.style/brand/components/NavList\n */\nexport const NavList = Object.assign(NavListRoot, {\n Item: NavListItem,\n SubNav: NavListSubNav,\n Group: NavListGroup,\n testIds,\n})\n\ntype ElementWithChildren = ReactElement<{children?: ReactNode}>\ntype ElementWithCurrent = ReactElement<{children?: ReactNode; 'aria-current'?: AriaAttributes['aria-current']}>\n\nfunction isNavListSubNavElement(node: ReactNode): node is NavListSubNavElement {\n return isValidElement<NavListSubNavProps>(node) && node.type === NavListSubNav\n}\n\nfunction isNavListItemElement(node: ReactNode): node is ReactElement<NavListItemProps> {\n return isValidElement<NavListItemProps>(node) && node.type === NavListItem\n}\n\nfunction isNavListGroupElement(node: ReactNode): node is ReactElement<NavListGroupProps> {\n return isValidElement<NavListGroupProps>(node) && node.type === NavListGroup\n}\n\nfunction isCurrentValue(value: AriaAttributes['aria-current']) {\n return Boolean(value) && value !== 'false'\n}\n\nfunction hasCurrentDescendant(node: ReactNode): boolean {\n return Children.toArray(node).some(child => {\n if (!isValidElement(child)) return false\n\n const currentChild = child as ElementWithCurrent\n if (isCurrentValue(currentChild.props['aria-current'])) return true\n\n return hasCurrentDescendant((child as ElementWithChildren).props.children)\n })\n}\n\nfunction assignRef<T>(ref: Ref<T> | undefined, value: T | null) {\n if (!ref) return\n\n if (typeof ref === 'function') {\n ref(value)\n return\n }\n\n ;(ref as MutableRefObject<T | null>).current = value\n}\n\nfunction childHasDirectSubNav(node: ReactNode): boolean {\n if (!isValidElement(node)) return false\n\n if (node.type === React.Fragment) {\n return Children.toArray((node as ElementWithChildren).props.children).some(childHasDirectSubNav)\n }\n\n return Children.toArray((node as ElementWithChildren).props.children).some(isNavListSubNavElement)\n}\n\nfunction childIsNavListGroupElement(node: ReactNode): boolean {\n if (!isValidElement(node)) return false\n\n if (node.type === React.Fragment) {\n return Children.toArray((node as ElementWithChildren).props.children).some(childIsNavListGroupElement)\n }\n\n return isNavListGroupElement(node)\n}\n\nfunction childHasNavListGroupElement(node: ReactNode): boolean {\n if (!isValidElement(node)) return false\n\n if (node.type === React.Fragment) {\n return Children.toArray((node as ElementWithChildren).props.children).some(childHasNavListGroupElement)\n }\n\n return isNavListGroupElement(node)\n}\n\nfunction renderVisual(visual: Visual | undefined, className: string, testId: string) {\n if (!visual) return null\n\n const visualElement = isValidElement(visual) ? visual : React.createElement(visual)\n\n if (!isValidElement<{className?: string; ['aria-hidden']?: string; focusable?: string}>(visualElement)) return null\n\n return (\n <span className={className} data-testid={testId}>\n {React.cloneElement(visualElement, {\n className: visualElement.props.className,\n 'aria-hidden': 'true',\n focusable: 'false',\n })}\n </span>\n )\n}\n\nfunction warnNavListValidation(message: string) {\n if (process.env.NODE_ENV === 'development' || process.env.NODE_ENV === 'test') {\n // eslint-disable-next-line no-console\n console.warn(message)\n }\n}\n"],"mappings":";;;;;;;;AA4BA,IAAM,IAAU;CACd,MAAM;CACN,IAAI,OAAO;EACT,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,OAAO;EACT,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,OAAO;EACT,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,gBAAgB;EAClB,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,iBAAiB;EACnB,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,SAAS;EACX,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,QAAQ;EACV,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,aAAa;EACf,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,YAAY;EACd,OAAO,GAAG,KAAK,KAAK;CACtB;CACA,IAAI,SAAS;EACX,OAAO,GAAG,KAAK,KAAK;CACtB;AACF,GAkBM,IAAkB,GAClB,IAAsB,EAA4B,CAAC,GACnD,IAAuB,EAI1B;CACD,UAAU;CACV,OAAO;AACT,CAAC,GAEK,IAAc,GAEhB,EAAC,aAAU,cAAW,cAAc,GAAW,mBAAmB,GAAgB,eAAe,GAAQ,GAAG,KAC5G,MACG;CACH,IAAM,IAAgB,QAAc,EAAS,QAAQ,CAAQ,GAAG,CAAC,CAAQ,CAAC,GACpE,IAAoB,QAAc,EAAc,KAAK,CAAoB,GAAG,CAAC,CAAa,CAAC,GAC3F,IAAmB,QAAc,EAAc,KAAK,CAA0B,GAAG,CAAC,CAAa,CAAC,GAChG,IAAY,IAAoB,IAAI,GACpC,IAAkB,CAAC,KAAqB,CAAC;CAE/C,OACE,kBAAC,OAAD;EACO;EACL,WAAW,EAAK,EAAO,SAAS,CAAS;EACzC,cAAY;EACZ,mBAAiB;EACjB,eAAa,KAAU,EAAQ;EAC/B,GAAI;YAEJ,kBAAC,EAAoB,UAArB;GAA8B,OAAO;aACnC,kBAAC,MAAD;IACE,WAAW,EAAK,EAAO,eAAe,KAAmB,EAAO,sBAAsB;IACtF,eAAa,EAAQ;IAEpB;GACC,CAAA;EACwB,CAAA;CAC3B,CAAA;AAET,CACF,GAyCM,IAAc,GAEhB,EACE,OACA,aACA,cACA,qBAAkB,IAClB,cAAW,IACX,aACA,kBACA,YACA,qBACA,mBACA,gBAAgB,GAChB,eAAe,GACf,GAAG,KAEL,MACG;CACH,IAAM,KAAa,KAAM,KACnB,IAAQ,EAAW,CAAmB,GACtC,KAAW,EAAM,GACjB,KAAoB,EAAM,GAC1B,IAAgB,QAAc,EAAS,QAAQ,CAAQ,GAAG,CAAC,CAAQ,CAAC,GACpE,IAAiB,QAAc,EAAc,OAAO,CAAsB,GAAG,CAAC,CAAa,CAAC,GAC5F,IAAS,QAAc,EAAc,KAAK,CAAsB,GAAG,CAAC,CAAa,CAAC,GAClF,IAAuB,QAAc,EAAc,OAAO,CAA2B,GAAG,CAAC,CAAa,CAAC,GACvG,IAAgB,QACb,IAAS,EAAc,QAAO,MAAS,MAAU,CAAM,IAAI,GAClE,CAAC,GAAe,CAAM,CACxB,GACM,IAAkB,EAAc,SAAS,GACzC,IAAY,EAAQ,GACpB,IAAY,IAAQ,GACpB,KAAa,CAAC,GACd,IAAqB,GAAQ,MAAM,MAAM,IACzC,IAAuB,QAAc,GAAqB,GAAQ,MAAM,QAAQ,GAAG,CAAC,GAAQ,MAAM,QAAQ,CAAC,GAC3G,IAAe,MAAa,KAAA,GAC5B,CAAC,IAAsB,KAA2B,EAAS,KAAmB,CAAoB,GAClG,IAAa,GAAQ,IAAe,IAAW,KAC/C,EACJ,SACA,IAAI,IACJ,GAAG,OACD,GAGE,IAA8B,MAAyB,IACvD,IAAc,GACd,KAAiB,QAAc;EACnC,IAAI,EAAqB,SAAS,GAChC,OAAO;EAGT,IAAI,KAAa,CAAC,GAChB,OAAO;EAGT,IAAI,EAAe,SAAS,GAC1B,OAAO;EAGT,IAAI,KAAa,CAAC,GAChB,OAAO;EAGT,IAAI,MAAc,MAAS,KAAA,KAAa,MAAO,KAAA,IAC7C,OAAO;CAEX,GAAG;EAAC;EAAI;EAAW;EAAiB;EAAW;EAAM,EAAqB;EAAQ,EAAe;CAAM,CAAC;CAExG,QAAgB;EACd,AAAI,KAAwB,CAAC,KAC3B,EAAwB,EAAI;CAEhC,GAAG,CAAC,GAAsB,CAAY,CAAC;CAEvC,IAAM,KAAc,GACjB,MAAmB;EAIlB,AAHK,KACH,EAAwB,CAAK,GAE/B,IAAmB,CAAK;CAC1B,GACA,CAAC,GAAc,CAAgB,CACjC,GAEM,IAAiB,QAAkB;EACvC,GAAY,CAAC,CAAU;CACzB,GAAG,CAAC,GAAY,EAAW,CAAC,GAEtB,KAAc,GACjB,MAAyC;EACxC,IAAI,GAAU;GACZ,EAAM,eAAe;GACrB;EACF;EAEA,IAAc,CAAK;CACrB,GACA,CAAC,GAAU,CAAW,CACxB,GAEM,KAAwB,GAC3B,MAAmC;EAClC,EAAU,GAAK,CAAI;CACrB,GACA,CAAC,CAAG,CACN,GAEM,KAAuB,GAC1B,MAA+C;EAC9C,IAAI,GAAU;GACZ,EAAM,eAAe;GACrB;EACF;EAIA,AAFA,IAAc,CAAK,GAEd,EAAM,oBACT,EAAe;CAEnB,GACA;EAAC;EAAU;EAAa;CAAc,CACxC;CAEA,IAAI,IAEF,OADA,EAAsB,EAAc,GAC7B;CAGT,IAAM,KACJ,kBAAC,QAAD;EAAM,WAAW,EAAO;YAAxB;GACG,EAAa,GAAe,EAAO,wBAAwB,EAAQ,aAAa;GACjF,kBAAC,QAAD;IAAM,WAAW,EAAO;cAAiB;GAAoB,CAAA;GAC5D,EAAa,GAAgB,EAAO,yBAAyB,EAAQ,cAAc;EAChF;;CAGR,OACE,kBAAC,MAAD;EACE,WAAW,EACT,EAAO,eACP,EAAO,wBAAwB,MAC/B,MAAc,EAAO,wBACrB,KAAa,KAAc,EAAO,4BAClC,KAAwB,EAAO,wCACjC;EACA,eAAa,KAAU,EAAQ;YARjC,CAUE,kBAAC,OAAD;GAAK,WAAW,EAAO;aACpB,KAAa,IACZ,kBAAC,UAAD;IACE,KAAK;IACL,IAAI;IACJ,MAAK;IACL,WAAW,EACT,EAAO,eACP,EAAO,0BACP,KAAY,EAAO,4BACnB,CACF;IACA,iBAAe,IAAa,SAAS;IACrC,iBAAe;IACf,eAAa,EAAQ;IACrB,GAAI;IACM;IACV,SAAS;cAfX,CAiBE,kBAAC,GAAD;KAAkB,WAAW,EAAO;KAAqB,eAAY;IAAQ,CAAA,GAC5E,EACK;QAER,kBAAC,IAAD;IACO;IACL,WAAW,EAAK,EAAO,eAAe,KAAY,EAAO,4BAA4B,CAAS;IAC9F,gBAAc;IACd,iBAAe,KAAY,KAAA;IAC3B,eAAa,EAAQ;IACrB,SAAS;IACT,GAAI;cAEH;GACQ,CAAA;EAEV,CAAA,GAEJ,IACC,kBAAC,EAAqB,UAAtB;GACE,OAAO;IAAC,UAAU;IAAY,YAAY;IAA6B,OAAQ,IAAQ;GAAkB;aAExG,EAAM,aAAa,GAAQ,EAC1B,IAAI,EACN,CAAC;EAC4B,CAAA,IAC7B,IACF;;AAER,CACF,GAQM,IAAgB,GACnB,EAAC,aAAU,cAAW,mBAAmB,GAAgB,eAAe,GAAQ,GAAG,KAAO,MAAQ;CACjG,IAAM,EAAC,aAAU,eAAY,aAAS,EAAW,CAAoB,GAC/D,IAAY,EAAgC,IAAI,GAEhD,IAAkB,GAAa,MAA6B;EAChE,EAAO,MAAM,YAAY,iCAAiC,GAAG,EAAO,aAAa,GAAG;CACtF,GAAG,CAAC,CAAC,GAEC,IAA8B,QAAkB;EACpD,IAAI,IAAS,EAAU;EAEvB,OAAO,IAEL,AADA,EAAgB,CAAM,GACtB,IAAS,EAAO,eAAe,QAA0B,IAAI,EAAO,iBAAiB,KAAK;CAE9F,GAAG,CAAC,CAAe,CAAC,GAEd,IAAe,GAClB,MAAkC;EAEjC,AADA,EAAU,UAAU,GACpB,EAAU,GAAK,CAAI;CACrB,GACA,CAAC,CAAG,CACN;CAyBA,OAvBA,QAAgB;EACd,EAA4B;CAC9B,GAAG;EAAC;EAAU;EAAU;CAA2B,CAAC,GAEpD,QAAgB;EACd,EAAU,SAAS,gBAAgB,SAAS,CAAC,CAAQ;CACvD,GAAG,CAAC,CAAQ,CAAC,GAEb,QAAgB;EACd,IAAM,IAAS,EAAU;EAEzB,IAAI,CAAC,KAAU,OAAO,iBAAmB,KACvC;EAGF,IAAM,IAAiB,IAAI,eAAe,CAA2B;EAGrE,OAFA,EAAe,QAAQ,CAAM,SAEhB;GACX,EAAe,WAAW;EAC5B;CACF,GAAG,CAAC,CAA2B,CAAC,GAG9B,kBAAC,MAAD;EACE,KAAK;EACL,WAAW,EAAK,EAAO,iBAAiB,KAAY,EAAO,8BAA8B,CAAS;EAClG,mBAAiB,KAAkB;EACnC,GAAI;EACJ,eAAa,IAAW,KAAA,IAAY;EACpC,eAAa,KAAU,EAAQ;YAE/B,kBAAC,EAAoB,UAArB;GAA8B,OAAO;GAAQ;EAAuC,CAAA;CAClF,CAAA;AAER,CACF,GAYM,IAAe,GAClB,EAAC,UAAO,aAAU,cAAW,eAAe,GAAQ,GAAG,KAAO,MAAQ;CACrE,IAAM,IAAU,EAAM,GAChB,IAAgB,QAAc;EAClC,IAAM,KAAoB,MACxB,EAAS,QAAQ,CAAkB,CAAC,CAAC,SAAQ,MACvC,EAAqB,CAAK,IACrB,CAAC,CAAK,IAGX,EAAe,CAAK,KAAK,EAAM,SAAS,EAAM,WACzC,EAAkB,EAA8B,MAAM,QAAQ,IAGhE,CAAC,CACT;EAEH,OAAO,EAAiB,CAAQ;CAClC,GAAG,CAAC,CAAQ,CAAC;CAwBb,OAvBwB,QAAc;EACpC,IAAM,KAAwB,MAC5B,EAAS,QAAQ,CAAkB,CAAC,CAAC,MAAK,MACpC,EAAqB,CAAK,IACrB,KAGL,EAAe,CAAK,KAAK,EAAM,SAAS,EAAM,WACzC,EAAsB,EAA8B,MAAM,QAAQ,IAGpE,EACR;EAEH,OAAO,EAAqB,CAAQ;CACtC,GAAG,CAAC,CAAQ,CAER,KACF,EACE,sKACF,GAIA,kBAAC,MAAD;EAAS;EAAK,WAAW,EAAK,EAAO,gBAAgB,CAAS;EAAG,eAAa,KAAU,EAAQ;EAAO,GAAI;YAA3G,CACG,IACC,kBAAC,MAAD;GAAI,IAAI;GAAS,WAAW,EAAO;GAAqB,eAAa,EAAQ;aAC1E;EACC,CAAA,IACF,MACJ,kBAAC,MAAD;GACE,WAAW,EAAO;GAClB,mBAAiB,IAAQ,IAAU,KAAA;GACnC,eAAa,EAAQ;aAErB,kBAAC,EAAoB,UAArB;IAA8B,OAAO;cAAI;GAA4C,CAAA;EACnF,CAAA,CACF;;AAER,CACF,GAMa,IAAU,OAAO,OAAO,GAAa;CAChD,MAAM;CACN,QAAQ;CACR,OAAO;CACP;AACF,CAAC;AAKD,SAAS,EAAuB,GAA+C;CAC7E,OAAO,EAAmC,CAAI,KAAK,EAAK,SAAS;AACnE;AAEA,SAAS,EAAqB,GAAyD;CACrF,OAAO,EAAiC,CAAI,KAAK,EAAK,SAAS;AACjE;AAEA,SAAS,EAAsB,GAA0D;CACvF,OAAO,EAAkC,CAAI,KAAK,EAAK,SAAS;AAClE;AAEA,SAAS,EAAe,GAAuC;CAC7D,OAAO,EAAQ,KAAU,MAAU;AACrC;AAEA,SAAS,GAAqB,GAA0B;CACtD,OAAO,EAAS,QAAQ,CAAI,CAAC,CAAC,MAAK,MAC5B,EAAe,CAAK,IAGrB,EAAe,EAAa,MAAM,eAAe,IAAU,KAExD,GAAsB,EAA8B,MAAM,QAAQ,IALtC,EAMpC;AACH;AAEA,SAAS,EAAa,GAAyB,GAAiB;CACzD,OAEL;MAAI,OAAO,KAAQ,YAAY;GAC7B,EAAI,CAAK;GACT;EACF;EAEC,EAAoC,UAAU;CAF/C;AAGF;AAEA,SAAS,EAAqB,GAA0B;CAOtD,OANK,EAAe,CAAI,IAEpB,EAAK,SAAS,EAAM,WACf,EAAS,QAAS,EAA6B,MAAM,QAAQ,CAAC,CAAC,KAAK,CAAoB,IAG1F,EAAS,QAAS,EAA6B,MAAM,QAAQ,CAAC,CAAC,KAAK,CAAsB,IAN/D;AAOpC;AAEA,SAAS,EAA2B,GAA0B;CAO5D,OANK,EAAe,CAAI,IAEpB,EAAK,SAAS,EAAM,WACf,EAAS,QAAS,EAA6B,MAAM,QAAQ,CAAC,CAAC,KAAK,CAA0B,IAGhG,EAAsB,CAAI,IANC;AAOpC;AAEA,SAAS,EAA4B,GAA0B;CAO7D,OANK,EAAe,CAAI,IAEpB,EAAK,SAAS,EAAM,WACf,EAAS,QAAS,EAA6B,MAAM,QAAQ,CAAC,CAAC,KAAK,CAA2B,IAGjG,EAAsB,CAAI,IANC;AAOpC;AAEA,SAAS,EAAa,GAA4B,GAAmB,GAAgB;CACnF,IAAI,CAAC,GAAQ,OAAO;CAEpB,IAAM,IAAgB,EAAe,CAAM,IAAI,IAAS,EAAM,cAAc,CAAM;CAIlF,OAFK,EAAmF,CAAa,IAGnG,kBAAC,QAAD;EAAiB;EAAW,eAAa;YACtC,EAAM,aAAa,GAAe;GACjC,WAAW,EAAc,MAAM;GAC/B,eAAe;GACf,WAAW;EACb,CAAC;CACG,CAAA,IATuG;AAWjH;AAEA,SAAS,EAAsB,GAAiB;CAC9C,CAAA,QAAA,IAAA,aAA6B,iBAAA,QAAA,IAAA,aAA0C,WAErE,QAAQ,KAAK,CAAO;AAExB"}
|
|
@@ -1,32 +1,33 @@
|
|
|
1
|
-
import './NavList.module-zvpwnkzz.css'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
1
|
+
import './NavList.module-zvpwnkzz.css';//#region src/NavList/NavList.module.css
|
|
2
|
+
var e = "Primer_Brand__NavList-module__NavList___tuR_C", t = "Primer_Brand__NavList-module__NavList__list___gwquf", n = "Primer_Brand__NavList-module__NavList__subNav___Q4xI7", r = "Primer_Brand__NavList-module__NavList__groupList___Mtk4a", i = "Primer_Brand__NavList-module__NavList__item___HTVCC", a = "Primer_Brand__NavList-module__NavList__group___Jnwkd", o = "Primer_Brand__NavList-module__NavList__groupTitle___r47_e", s = "Primer_Brand__NavList-module__NavList__itemContent___bYaVR", c = "Primer_Brand__NavList-module__NavList__link___k0zio", l = "Primer_Brand__NavList-module__NavList__accordionButton___F5tOc", u = "Primer_Brand__NavList-module__NavList__labelArea___c4ORu", d = "Primer_Brand__NavList-module__NavList__label___ogBmt", f = "Primer_Brand__NavList-module__NavList__leadingVisual___KqRaq", p = "Primer_Brand__NavList-module__NavList__trailingVisual___BrZXI", m = "Primer_Brand__NavList-module__NavList__toggleIcon___nlJbF", h = {
|
|
3
|
+
NavList: e,
|
|
4
|
+
NavList__list: t,
|
|
5
|
+
NavList__subNav: n,
|
|
6
|
+
NavList__groupList: r,
|
|
6
7
|
"NavList__list--flat": "Primer_Brand__NavList-module__NavList__list--flat___xvRQl",
|
|
7
8
|
"NavList__item--leaf": "Primer_Brand__NavList-module__NavList__item--leaf___YFNSZ",
|
|
8
|
-
NavList__item:
|
|
9
|
-
NavList__group:
|
|
10
|
-
NavList__groupTitle:
|
|
11
|
-
NavList__itemContent:
|
|
9
|
+
NavList__item: i,
|
|
10
|
+
NavList__group: a,
|
|
11
|
+
NavList__groupTitle: o,
|
|
12
|
+
NavList__itemContent: s,
|
|
12
13
|
"NavList__item--level-2": "Primer_Brand__NavList-module__NavList__item--level-2___kXyLx",
|
|
13
14
|
"NavList__item--level-3": "Primer_Brand__NavList-module__NavList__item--level-3___Z5uiQ",
|
|
14
15
|
"NavList__item--level-4": "Primer_Brand__NavList-module__NavList__item--level-4___k3h0P",
|
|
15
16
|
"NavList__item--level-5": "Primer_Brand__NavList-module__NavList__item--level-5___4mJ4N",
|
|
16
17
|
"NavList__item--level-1": "Primer_Brand__NavList-module__NavList__item--level-1___gWx1n",
|
|
17
|
-
NavList__link:
|
|
18
|
-
NavList__accordionButton:
|
|
19
|
-
NavList__labelArea:
|
|
18
|
+
NavList__link: c,
|
|
19
|
+
NavList__accordionButton: l,
|
|
20
|
+
NavList__labelArea: u,
|
|
20
21
|
"NavList__item--has-current-descendant": "Primer_Brand__NavList-module__NavList__item--has-current-descendant___JG7dQ",
|
|
21
22
|
"NavList__link--disabled": "Primer_Brand__NavList-module__NavList__link--disabled___Eg304",
|
|
22
|
-
NavList__label:
|
|
23
|
-
NavList__leadingVisual:
|
|
24
|
-
NavList__trailingVisual:
|
|
25
|
-
NavList__toggleIcon:
|
|
23
|
+
NavList__label: d,
|
|
24
|
+
NavList__leadingVisual: f,
|
|
25
|
+
NavList__trailingVisual: p,
|
|
26
|
+
NavList__toggleIcon: m,
|
|
26
27
|
"NavList__subNav--expanded": "Primer_Brand__NavList-module__NavList__subNav--expanded___ap3X8",
|
|
27
28
|
"NavList__item--expanded": "Primer_Brand__NavList-module__NavList__item--expanded___pH_PL"
|
|
28
29
|
};
|
|
29
30
|
//#endregion
|
|
30
|
-
export { e as default };
|
|
31
|
+
export { e as NavList, l as NavList__accordionButton, a as NavList__group, r as NavList__groupList, o as NavList__groupTitle, i as NavList__item, s as NavList__itemContent, d as NavList__label, u as NavList__labelArea, f as NavList__leadingVisual, c as NavList__link, t as NavList__list, n as NavList__subNav, m as NavList__toggleIcon, p as NavList__trailingVisual, h as default };
|
|
31
32
|
|
|
32
33
|
//# sourceMappingURL=NavList.module.js.map
|
|
@@ -23,5 +23,5 @@ export type PaginationProps = {
|
|
|
23
23
|
* Use Pagination to display a sequence of links that allow navigation to discrete, related pages.
|
|
24
24
|
* @see https://primer.style/brand/components/Pagination
|
|
25
25
|
*/
|
|
26
|
-
export declare const Pagination: React.MemoExoticComponent<({ id, className, pageCount, currentPage, onPageChange, hrefBuilder, pageAttributesBuilder, marginPageCount, showPages, surroundingPageCount, labels, "aria-label": ariaLabel, "data-testid": testId, ...rest }: PaginationProps) =>
|
|
26
|
+
export declare const Pagination: React.MemoExoticComponent<({ id, className, pageCount, currentPage, onPageChange, hrefBuilder, pageAttributesBuilder, marginPageCount, showPages, surroundingPageCount, labels, "aria-label": ariaLabel, "data-testid": testId, ...rest }: PaginationProps) => React.JSX.Element>;
|
|
27
27
|
//# sourceMappingURL=Pagination.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../src/Pagination/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAA;AAM9C,OAAO,EAAuB,kBAAkB,EAAC,MAAM,SAAS,CAAA;AAKhE,MAAM,MAAM,eAAe,GAAG;IAE5B,SAAS,EAAE,MAAM,CAAA;IAEjB,WAAW,EAAE,MAAM,CAAA;IAEnB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAEvD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAEnC,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,KAAK;QAAC,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAA;IAElG,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IACD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAA;AAS1D;;;GAGG;AACH,eAAO,MAAM,UAAU,6OAgBlB,eAAe,
|
|
1
|
+
{"version":3,"file":"Pagination.d.ts","sourceRoot":"","sources":["../../src/Pagination/Pagination.tsx"],"names":[],"mappings":"AAAA,OAAO,KAA0B,MAAM,OAAO,CAAA;AAM9C,OAAO,EAAuB,kBAAkB,EAAC,MAAM,SAAS,CAAA;AAKhE,MAAM,MAAM,eAAe,GAAG;IAE5B,SAAS,EAAE,MAAM,CAAA;IAEjB,WAAW,EAAE,MAAM,CAAA;IAEnB,YAAY,CAAC,EAAE,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,EAAE,CAAC,EAAE,MAAM,KAAK,IAAI,CAAA;IAEvD,WAAW,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,KAAK,MAAM,CAAA;IAEnC,qBAAqB,CAAC,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAkB,KAAK;QAAC,CAAC,aAAa,EAAE,MAAM,GAAG,MAAM,CAAA;KAAC,CAAA;IAElG,eAAe,CAAC,EAAE,MAAM,CAAA;IAExB,SAAS,CAAC,EAAE,OAAO,CAAA;IAEnB,oBAAoB,CAAC,EAAE,MAAM,CAAA;IAE7B,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,IAAI,CAAC,EAAE,MAAM,CAAA;QACb,aAAa,CAAC,EAAE,MAAM,CAAA;QACtB,aAAa,CAAC,EAAE,MAAM,CAAA;KACvB,CAAA;IACD,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,GAAG,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC,CAAA;AAS1D;;;GAGG;AACH,eAAO,MAAM,UAAU,6OAgBlB,eAAe,uBAsEnB,CAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import e from "../node_modules/clsx/dist/clsx.js";
|
|
1
|
+
import { clsx as e } from "../node_modules/clsx/dist/clsx.js";
|
|
2
2
|
import { ExpandableArrow as t } from "../ExpandableArrow/ExpandableArrow.js";
|
|
3
3
|
import { Button as n } from "../Button/Button.js";
|
|
4
4
|
import { useWindowSize as r } from "../hooks/useWindowSize.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pagination.js","names":[],"sources":["../../src/Pagination/Pagination.tsx"],"sourcesContent":["import React, {memo, useCallback} from 'react'\nimport {Button, useWindowSize} from '..'\n\nimport {clsx} from 'clsx'\n\nimport {ExpandableArrow} from '../ExpandableArrow'\nimport {buildPaginationModel, PaginationPageType} from './model'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './Pagination.module.css'\n\nexport type PaginationProps = {\n /* The total number of pages */\n pageCount: number\n /* The current page number */\n currentPage: number\n /* Callback function for when the page changes */\n onPageChange?: (e: React.MouseEvent, n: number) => void\n /* Function to build the href for each page */\n hrefBuilder?: (n: number) => string\n /* Function to forward custom attributes for each pagination item */\n pageAttributesBuilder?: (n: number, page: PaginationPageType) => {[attributeName: string]: string}\n /* Defines how many pages are to be displayed on the left and right of the component */\n marginPageCount?: number\n /* Whether to show the page numbers */\n showPages?: boolean\n /* The number of pages to show on each side of the current page */\n surroundingPageCount?: number\n /* Custom text labels for the pagination controls. Use for localization. */\n labels?: {\n prev?: string\n next?: string\n prevAriaLabel?: string\n nextAriaLabel?: string\n }\n 'data-testid'?: string\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>\n\nconst defaultPaginationLabels = {\n prev: 'Previous',\n next: 'Next',\n prevAriaLabel: 'Previous Page',\n nextAriaLabel: 'Next Page',\n}\n\n/**\n * Use Pagination to display a sequence of links that allow navigation to discrete, related pages.\n * @see https://primer.style/brand/components/Pagination\n */\nexport const Pagination = memo(\n ({\n id,\n className,\n pageCount,\n currentPage,\n onPageChange,\n hrefBuilder = defaultHrefBuilder,\n pageAttributesBuilder,\n marginPageCount = 1,\n showPages = true,\n surroundingPageCount = 2,\n labels,\n 'aria-label': ariaLabel,\n 'data-testid': testId,\n ...rest\n }: PaginationProps) => {\n // On mobile, limit the number of visible numbers\n const {width} = useWindowSize()\n if (width && width < 768) {\n marginPageCount = 1\n surroundingPageCount = 0\n }\n\n const prevLabel = labels?.prev ?? defaultPaginationLabels.prev\n const nextLabel = labels?.next ?? defaultPaginationLabels.next\n const prevAriaLabel = labels?.prevAriaLabel ?? defaultPaginationLabels.prevAriaLabel\n const nextAriaLabel = labels?.nextAriaLabel ?? defaultPaginationLabels.nextAriaLabel\n\n const navRef = React.useRef<HTMLElement>(null)\n\n const pageChange = useCallback(\n (n: number) => (e: React.MouseEvent) => {\n if (onPageChange) {\n onPageChange(e, n)\n }\n },\n [onPageChange],\n )\n\n const paginationItems = React.useMemo(() => {\n const model = buildPaginationModel(pageCount, currentPage, showPages, marginPageCount, surroundingPageCount)\n\n return model.map(page => {\n return (\n <PaginationItem\n key={`${page.type}-${page.num}`}\n page={page}\n hrefBuilder={hrefBuilder}\n pageAttributesBuilder={pageAttributesBuilder}\n prevLabel={prevLabel}\n nextLabel={nextLabel}\n prevAriaLabel={prevAriaLabel}\n nextAriaLabel={nextAriaLabel}\n onClick={pageChange(page.num)}\n />\n )\n })\n }, [\n pageCount,\n currentPage,\n showPages,\n marginPageCount,\n surroundingPageCount,\n hrefBuilder,\n pageAttributesBuilder,\n prevLabel,\n nextLabel,\n prevAriaLabel,\n nextAriaLabel,\n pageChange,\n ])\n\n return (\n <nav\n ref={navRef}\n id={id}\n className={clsx(styles.Pagination, className)}\n data-testid={testId}\n aria-label={ariaLabel || 'Pagination'}\n {...rest}\n >\n <div className={clsx(styles.Pagination__inner)}>{paginationItems}</div>\n </nav>\n )\n },\n)\n\ntype PaginationItemProps = {\n page: PaginationPageType\n hrefBuilder: (n: number) => string\n pageAttributesBuilder?: (n: number, page: PaginationPageType) => {[key: string]: string}\n prevLabel: string\n nextLabel: string\n prevAriaLabel: string\n nextAriaLabel: string\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n}\n\nconst PaginationItem = ({\n page,\n hrefBuilder,\n pageAttributesBuilder,\n prevLabel,\n nextLabel,\n prevAriaLabel,\n nextAriaLabel,\n onClick,\n}: PaginationItemProps) => {\n const [isArrowExpanded, setIsArrowExpanded] = React.useState(false)\n\n const baseProps = {\n role: 'button',\n size: 'small' as const,\n variant: 'subtle' as const,\n onClick: page.disabled ? undefined : onClick,\n }\n\n const customProps = pageAttributesBuilder?.(page.num, page)\n const {className: customClassName, ...customAttributes} = customProps ?? {}\n\n switch (page.type) {\n case 'PREV': {\n return (\n <Button\n {...baseProps}\n as=\"a\"\n rel=\"prev\"\n href={page.disabled ? undefined : hrefBuilder(page.num)}\n aria-disabled={page.disabled || undefined}\n aria-label={prevAriaLabel}\n {...customAttributes}\n className={clsx(styles.Pagination__controlItem, customClassName)}\n onMouseEnter={() => setIsArrowExpanded(true)}\n onMouseLeave={() => setIsArrowExpanded(false)}\n onFocus={() => setIsArrowExpanded(true)}\n onBlur={() => setIsArrowExpanded(false)}\n >\n <span className={styles.Pagination__controlContent}>\n <span\n className={clsx(\n styles.Pagination__controlArrowWrapper,\n styles['Pagination__controlArrowWrapper--previous'],\n )}\n >\n <ExpandableArrow\n hidden\n reverse\n expanded={!page.disabled && isArrowExpanded}\n className={styles.Pagination__controlArrow}\n />\n </span>\n <span className={styles.Pagination__controlText}>{prevLabel}</span>\n </span>\n </Button>\n )\n }\n case 'NEXT': {\n return (\n <Button\n {...baseProps}\n as=\"a\"\n rel=\"next\"\n href={page.disabled ? undefined : hrefBuilder(page.num)}\n aria-disabled={page.disabled || undefined}\n aria-label={nextAriaLabel}\n {...customAttributes}\n className={clsx(styles.Pagination__controlItem, customClassName)}\n onMouseEnter={() => setIsArrowExpanded(true)}\n onMouseLeave={() => setIsArrowExpanded(false)}\n onFocus={() => setIsArrowExpanded(true)}\n onBlur={() => setIsArrowExpanded(false)}\n >\n <span className={styles.Pagination__controlContent}>\n <span className={styles.Pagination__controlText}>{nextLabel}</span>\n <span\n className={clsx(styles.Pagination__controlArrowWrapper, styles['Pagination__controlArrowWrapper--next'])}\n >\n <ExpandableArrow\n hidden\n expanded={!page.disabled && isArrowExpanded}\n className={styles.Pagination__controlArrow}\n />\n </span>\n </span>\n </Button>\n )\n }\n case 'NUM': {\n return (\n /**\n * Append \"...\" to the aria-label for pages that precede a break because screen readers will change the\n * tone the text is read in. This is a slightly nicer experience than skipping a bunch of numbers unexpectedly.\n */\n <Button\n {...baseProps}\n as=\"a\"\n variant={page.selected ? 'primary' : 'subtle'}\n className={clsx(styles.Pagination__pageItem, customClassName)}\n href={hrefBuilder(page.num)}\n aria-label={`Page ${page.num}${page.precedesBreak ? '...' : ''}`}\n aria-current={page.selected ? 'page' : undefined}\n {...customAttributes}\n >\n {page.num}\n </Button>\n )\n }\n case 'BREAK': {\n return (\n <Button\n {...baseProps}\n as=\"a\"\n className={clsx(styles.Pagination__pageItem, customClassName)}\n variant=\"subtle\"\n role=\"presentation\"\n href={undefined}\n onClick={undefined}\n {...customAttributes}\n >\n …\n </Button>\n )\n }\n }\n}\n\nfunction defaultHrefBuilder(pageNum: number) {\n return `#${pageNum}`\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Pagination.js","names":[],"sources":["../../src/Pagination/Pagination.tsx"],"sourcesContent":["import React, {memo, useCallback} from 'react'\nimport {Button, useWindowSize} from '..'\n\nimport {clsx} from 'clsx'\n\nimport {ExpandableArrow} from '../ExpandableArrow'\nimport {buildPaginationModel, PaginationPageType} from './model'\n\n/** * Main Stylesheet (as a CSS Module) */\nimport styles from './Pagination.module.css'\n\nexport type PaginationProps = {\n /* The total number of pages */\n pageCount: number\n /* The current page number */\n currentPage: number\n /* Callback function for when the page changes */\n onPageChange?: (e: React.MouseEvent, n: number) => void\n /* Function to build the href for each page */\n hrefBuilder?: (n: number) => string\n /* Function to forward custom attributes for each pagination item */\n pageAttributesBuilder?: (n: number, page: PaginationPageType) => {[attributeName: string]: string}\n /* Defines how many pages are to be displayed on the left and right of the component */\n marginPageCount?: number\n /* Whether to show the page numbers */\n showPages?: boolean\n /* The number of pages to show on each side of the current page */\n surroundingPageCount?: number\n /* Custom text labels for the pagination controls. Use for localization. */\n labels?: {\n prev?: string\n next?: string\n prevAriaLabel?: string\n nextAriaLabel?: string\n }\n 'data-testid'?: string\n} & Omit<React.HTMLAttributes<HTMLDivElement>, 'children'>\n\nconst defaultPaginationLabels = {\n prev: 'Previous',\n next: 'Next',\n prevAriaLabel: 'Previous Page',\n nextAriaLabel: 'Next Page',\n}\n\n/**\n * Use Pagination to display a sequence of links that allow navigation to discrete, related pages.\n * @see https://primer.style/brand/components/Pagination\n */\nexport const Pagination = memo(\n ({\n id,\n className,\n pageCount,\n currentPage,\n onPageChange,\n hrefBuilder = defaultHrefBuilder,\n pageAttributesBuilder,\n marginPageCount = 1,\n showPages = true,\n surroundingPageCount = 2,\n labels,\n 'aria-label': ariaLabel,\n 'data-testid': testId,\n ...rest\n }: PaginationProps) => {\n // On mobile, limit the number of visible numbers\n const {width} = useWindowSize()\n if (width && width < 768) {\n marginPageCount = 1\n surroundingPageCount = 0\n }\n\n const prevLabel = labels?.prev ?? defaultPaginationLabels.prev\n const nextLabel = labels?.next ?? defaultPaginationLabels.next\n const prevAriaLabel = labels?.prevAriaLabel ?? defaultPaginationLabels.prevAriaLabel\n const nextAriaLabel = labels?.nextAriaLabel ?? defaultPaginationLabels.nextAriaLabel\n\n const navRef = React.useRef<HTMLElement>(null)\n\n const pageChange = useCallback(\n (n: number) => (e: React.MouseEvent) => {\n if (onPageChange) {\n onPageChange(e, n)\n }\n },\n [onPageChange],\n )\n\n const paginationItems = React.useMemo(() => {\n const model = buildPaginationModel(pageCount, currentPage, showPages, marginPageCount, surroundingPageCount)\n\n return model.map(page => {\n return (\n <PaginationItem\n key={`${page.type}-${page.num}`}\n page={page}\n hrefBuilder={hrefBuilder}\n pageAttributesBuilder={pageAttributesBuilder}\n prevLabel={prevLabel}\n nextLabel={nextLabel}\n prevAriaLabel={prevAriaLabel}\n nextAriaLabel={nextAriaLabel}\n onClick={pageChange(page.num)}\n />\n )\n })\n }, [\n pageCount,\n currentPage,\n showPages,\n marginPageCount,\n surroundingPageCount,\n hrefBuilder,\n pageAttributesBuilder,\n prevLabel,\n nextLabel,\n prevAriaLabel,\n nextAriaLabel,\n pageChange,\n ])\n\n return (\n <nav\n ref={navRef}\n id={id}\n className={clsx(styles.Pagination, className)}\n data-testid={testId}\n aria-label={ariaLabel || 'Pagination'}\n {...rest}\n >\n <div className={clsx(styles.Pagination__inner)}>{paginationItems}</div>\n </nav>\n )\n },\n)\n\ntype PaginationItemProps = {\n page: PaginationPageType\n hrefBuilder: (n: number) => string\n pageAttributesBuilder?: (n: number, page: PaginationPageType) => {[key: string]: string}\n prevLabel: string\n nextLabel: string\n prevAriaLabel: string\n nextAriaLabel: string\n onClick?: React.MouseEventHandler<HTMLAnchorElement>\n}\n\nconst PaginationItem = ({\n page,\n hrefBuilder,\n pageAttributesBuilder,\n prevLabel,\n nextLabel,\n prevAriaLabel,\n nextAriaLabel,\n onClick,\n}: PaginationItemProps) => {\n const [isArrowExpanded, setIsArrowExpanded] = React.useState(false)\n\n const baseProps = {\n role: 'button',\n size: 'small' as const,\n variant: 'subtle' as const,\n onClick: page.disabled ? undefined : onClick,\n }\n\n const customProps = pageAttributesBuilder?.(page.num, page)\n const {className: customClassName, ...customAttributes} = customProps ?? {}\n\n switch (page.type) {\n case 'PREV': {\n return (\n <Button\n {...baseProps}\n as=\"a\"\n rel=\"prev\"\n href={page.disabled ? undefined : hrefBuilder(page.num)}\n aria-disabled={page.disabled || undefined}\n aria-label={prevAriaLabel}\n {...customAttributes}\n className={clsx(styles.Pagination__controlItem, customClassName)}\n onMouseEnter={() => setIsArrowExpanded(true)}\n onMouseLeave={() => setIsArrowExpanded(false)}\n onFocus={() => setIsArrowExpanded(true)}\n onBlur={() => setIsArrowExpanded(false)}\n >\n <span className={styles.Pagination__controlContent}>\n <span\n className={clsx(\n styles.Pagination__controlArrowWrapper,\n styles['Pagination__controlArrowWrapper--previous'],\n )}\n >\n <ExpandableArrow\n hidden\n reverse\n expanded={!page.disabled && isArrowExpanded}\n className={styles.Pagination__controlArrow}\n />\n </span>\n <span className={styles.Pagination__controlText}>{prevLabel}</span>\n </span>\n </Button>\n )\n }\n case 'NEXT': {\n return (\n <Button\n {...baseProps}\n as=\"a\"\n rel=\"next\"\n href={page.disabled ? undefined : hrefBuilder(page.num)}\n aria-disabled={page.disabled || undefined}\n aria-label={nextAriaLabel}\n {...customAttributes}\n className={clsx(styles.Pagination__controlItem, customClassName)}\n onMouseEnter={() => setIsArrowExpanded(true)}\n onMouseLeave={() => setIsArrowExpanded(false)}\n onFocus={() => setIsArrowExpanded(true)}\n onBlur={() => setIsArrowExpanded(false)}\n >\n <span className={styles.Pagination__controlContent}>\n <span className={styles.Pagination__controlText}>{nextLabel}</span>\n <span\n className={clsx(styles.Pagination__controlArrowWrapper, styles['Pagination__controlArrowWrapper--next'])}\n >\n <ExpandableArrow\n hidden\n expanded={!page.disabled && isArrowExpanded}\n className={styles.Pagination__controlArrow}\n />\n </span>\n </span>\n </Button>\n )\n }\n case 'NUM': {\n return (\n /**\n * Append \"...\" to the aria-label for pages that precede a break because screen readers will change the\n * tone the text is read in. This is a slightly nicer experience than skipping a bunch of numbers unexpectedly.\n */\n <Button\n {...baseProps}\n as=\"a\"\n variant={page.selected ? 'primary' : 'subtle'}\n className={clsx(styles.Pagination__pageItem, customClassName)}\n href={hrefBuilder(page.num)}\n aria-label={`Page ${page.num}${page.precedesBreak ? '...' : ''}`}\n aria-current={page.selected ? 'page' : undefined}\n {...customAttributes}\n >\n {page.num}\n </Button>\n )\n }\n case 'BREAK': {\n return (\n <Button\n {...baseProps}\n as=\"a\"\n className={clsx(styles.Pagination__pageItem, customClassName)}\n variant=\"subtle\"\n role=\"presentation\"\n href={undefined}\n onClick={undefined}\n {...customAttributes}\n >\n …\n </Button>\n )\n }\n }\n}\n\nfunction defaultHrefBuilder(pageNum: number) {\n return `#${pageNum}`\n}\n"],"mappings":"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"}
|
|
@@ -1,16 +1,17 @@
|
|
|
1
|
-
import './Pagination.module-DmKBSq7s.css'
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
1
|
+
import './Pagination.module-DmKBSq7s.css';//#region src/Pagination/Pagination.module.css
|
|
2
|
+
var e = "Primer_Brand__Pagination-module__Pagination___kfPR3", t = "Primer_Brand__Pagination-module__Pagination__inner___uSIJu", n = "Primer_Brand__Pagination-module__Pagination__pageItem___4j6vp", r = "Primer_Brand__Pagination-module__Pagination__controlContent___VU4Qm", i = "Primer_Brand__Pagination-module__Pagination__controlArrowWrapper___0Q_Ku", a = "Primer_Brand__Pagination-module__Pagination__controlArrow___RwrzD", o = "Primer_Brand__Pagination-module__Pagination__controlItem___zNWUt", s = "Primer_Brand__Pagination-module__Pagination__controlText___S6XdE", c = {
|
|
3
|
+
Pagination: e,
|
|
4
|
+
Pagination__inner: t,
|
|
5
|
+
Pagination__pageItem: n,
|
|
6
|
+
Pagination__controlContent: r,
|
|
7
|
+
Pagination__controlArrowWrapper: i,
|
|
7
8
|
"Pagination__controlArrowWrapper--previous": "Primer_Brand__Pagination-module__Pagination__controlArrowWrapper--previous____zTeS",
|
|
8
9
|
"Pagination__controlArrowWrapper--next": "Primer_Brand__Pagination-module__Pagination__controlArrowWrapper--next___KhVzs",
|
|
9
|
-
Pagination__controlArrow:
|
|
10
|
-
Pagination__controlItem:
|
|
11
|
-
Pagination__controlText:
|
|
10
|
+
Pagination__controlArrow: a,
|
|
11
|
+
Pagination__controlItem: o,
|
|
12
|
+
Pagination__controlText: s
|
|
12
13
|
};
|
|
13
14
|
//#endregion
|
|
14
|
-
export { e as default };
|
|
15
|
+
export { e as Pagination, a as Pagination__controlArrow, i as Pagination__controlArrowWrapper, r as Pagination__controlContent, o as Pagination__controlItem, s as Pagination__controlText, t as Pagination__inner, n as Pagination__pageItem, c as default };
|
|
15
16
|
|
|
16
17
|
//# sourceMappingURL=Pagination.module.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model.js","names":[],"sources":["../../src/Pagination/model.ts"],"sourcesContent":["export type PaginationPageType = {\n type: 'PREV' | 'NEXT' | 'NUM' | 'BREAK'\n num: number\n disabled?: boolean\n selected?: boolean\n precedesBreak?: boolean\n}\n\nexport function buildPaginationModel(\n pageCount: number,\n currentPage: number,\n showPages: boolean,\n marginPageCount: number,\n surroundingPageCount: number,\n): PaginationPageType[] {\n const pages: PaginationPageType[] = []\n\n if (showPages) {\n const pageNums: Array<number> = []\n const addPage = (n: number) => {\n if (n >= 1 && n <= pageCount) {\n pageNums.push(n)\n }\n }\n\n // Start by defining the window of pages to show around the current page.\n // If the window goes off either edge, shift it until it fits.\n let extentLeft = currentPage - surroundingPageCount\n let extentRight = currentPage + surroundingPageCount\n if (extentLeft < 1 && extentRight > pageCount) {\n // Our window is larger than the entire range,\n // so simply display every page.\n extentLeft = 1\n extentRight = pageCount\n } else if (extentLeft < 1) {\n while (extentLeft < 1) {\n extentLeft++\n extentRight++\n }\n } else if (extentRight > pageCount) {\n while (extentRight > pageCount) {\n extentLeft--\n extentRight--\n }\n }\n\n // Next, include the pages in the margins.\n // If a margin page is already covered in the window,\n // extend the window to the other direction.\n for (let i = 1; i <= marginPageCount; i++) {\n const leftPage = i\n const rightPage = pageCount - (i - 1)\n if (leftPage >= extentLeft) {\n extentRight++\n } else {\n addPage(leftPage)\n }\n if (rightPage <= extentRight) {\n extentLeft--\n } else {\n addPage(rightPage)\n }\n }\n\n for (let i = extentLeft; i <= extentRight; i++) {\n addPage(i)\n }\n\n const sorted = pageNums\n .slice()\n .sort((a, b) => a - b)\n .filter((item, idx, ary) => !idx || item !== ary[idx - 1])\n for (let idx = 0; idx < sorted.length; idx++) {\n const num = sorted[idx]\n const selected = num === currentPage\n const last = sorted[idx - 1]\n const next = sorted[idx + 1]\n const lastDelta = num - last\n const nextDelta = num - next\n const precedesBreak = nextDelta !== -1\n\n if (idx === 0) {\n if (num !== 1) {\n // If the first page isn't page one,\n // we need to add a break\n pages.push({\n type: 'BREAK',\n num: 1,\n })\n }\n pages.push({\n type: 'NUM',\n num,\n selected,\n precedesBreak,\n })\n } else {\n if (lastDelta === 1) {\n pages.push({\n type: 'NUM',\n num,\n selected,\n precedesBreak,\n })\n } else {\n // We skipped some, so add a break\n pages.push({\n type: 'BREAK',\n num: num - 1,\n })\n pages.push({\n type: 'NUM',\n num,\n selected,\n precedesBreak: false,\n })\n }\n }\n }\n\n const lastPage = pages[pages.length - 1]\n if (lastPage.type === 'NUM' && lastPage.num !== pageCount) {\n // The last page we rendered wasn't the actual last page,\n // so we need an additional break\n pages.push({\n type: 'BREAK',\n num: pageCount,\n })\n }\n }\n\n const prev: PaginationPageType = {type: 'PREV', num: currentPage - 1, disabled: currentPage === 1}\n const next: PaginationPageType = {type: 'NEXT', num: currentPage + 1, disabled: currentPage === pageCount}\n return [prev, ...pages, next]\n}\n"],"mappings":";AAQA,SAAgB,EACd,GACA,GACA,GACA,GACA,GACsB;CACtB,IAAM,IAA8B,
|
|
1
|
+
{"version":3,"file":"model.js","names":[],"sources":["../../src/Pagination/model.ts"],"sourcesContent":["export type PaginationPageType = {\n type: 'PREV' | 'NEXT' | 'NUM' | 'BREAK'\n num: number\n disabled?: boolean\n selected?: boolean\n precedesBreak?: boolean\n}\n\nexport function buildPaginationModel(\n pageCount: number,\n currentPage: number,\n showPages: boolean,\n marginPageCount: number,\n surroundingPageCount: number,\n): PaginationPageType[] {\n const pages: PaginationPageType[] = []\n\n if (showPages) {\n const pageNums: Array<number> = []\n const addPage = (n: number) => {\n if (n >= 1 && n <= pageCount) {\n pageNums.push(n)\n }\n }\n\n // Start by defining the window of pages to show around the current page.\n // If the window goes off either edge, shift it until it fits.\n let extentLeft = currentPage - surroundingPageCount\n let extentRight = currentPage + surroundingPageCount\n if (extentLeft < 1 && extentRight > pageCount) {\n // Our window is larger than the entire range,\n // so simply display every page.\n extentLeft = 1\n extentRight = pageCount\n } else if (extentLeft < 1) {\n while (extentLeft < 1) {\n extentLeft++\n extentRight++\n }\n } else if (extentRight > pageCount) {\n while (extentRight > pageCount) {\n extentLeft--\n extentRight--\n }\n }\n\n // Next, include the pages in the margins.\n // If a margin page is already covered in the window,\n // extend the window to the other direction.\n for (let i = 1; i <= marginPageCount; i++) {\n const leftPage = i\n const rightPage = pageCount - (i - 1)\n if (leftPage >= extentLeft) {\n extentRight++\n } else {\n addPage(leftPage)\n }\n if (rightPage <= extentRight) {\n extentLeft--\n } else {\n addPage(rightPage)\n }\n }\n\n for (let i = extentLeft; i <= extentRight; i++) {\n addPage(i)\n }\n\n const sorted = pageNums\n .slice()\n .sort((a, b) => a - b)\n .filter((item, idx, ary) => !idx || item !== ary[idx - 1])\n for (let idx = 0; idx < sorted.length; idx++) {\n const num = sorted[idx]\n const selected = num === currentPage\n const last = sorted[idx - 1]\n const next = sorted[idx + 1]\n const lastDelta = num - last\n const nextDelta = num - next\n const precedesBreak = nextDelta !== -1\n\n if (idx === 0) {\n if (num !== 1) {\n // If the first page isn't page one,\n // we need to add a break\n pages.push({\n type: 'BREAK',\n num: 1,\n })\n }\n pages.push({\n type: 'NUM',\n num,\n selected,\n precedesBreak,\n })\n } else {\n if (lastDelta === 1) {\n pages.push({\n type: 'NUM',\n num,\n selected,\n precedesBreak,\n })\n } else {\n // We skipped some, so add a break\n pages.push({\n type: 'BREAK',\n num: num - 1,\n })\n pages.push({\n type: 'NUM',\n num,\n selected,\n precedesBreak: false,\n })\n }\n }\n }\n\n const lastPage = pages[pages.length - 1]\n if (lastPage.type === 'NUM' && lastPage.num !== pageCount) {\n // The last page we rendered wasn't the actual last page,\n // so we need an additional break\n pages.push({\n type: 'BREAK',\n num: pageCount,\n })\n }\n }\n\n const prev: PaginationPageType = {type: 'PREV', num: currentPage - 1, disabled: currentPage === 1}\n const next: PaginationPageType = {type: 'NEXT', num: currentPage + 1, disabled: currentPage === pageCount}\n return [prev, ...pages, next]\n}\n"],"mappings":";AAQA,SAAgB,EACd,GACA,GACA,GACA,GACA,GACsB;CACtB,IAAM,IAA8B,CAAC;CAErC,IAAI,GAAW;EACb,IAAM,IAA0B,CAAC,GAC3B,KAAW,MAAc;GAC7B,AAAI,KAAK,KAAK,KAAK,KACjB,EAAS,KAAK,CAAC;EAEnB,GAII,IAAa,IAAc,GAC3B,IAAc,IAAc;EAChC,IAAI,IAAa,KAAK,IAAc,GAIlC,AADA,IAAa,GACb,IAAc;OACT,IAAI,IAAa,GACtB,OAAO,IAAa,IAElB,AADA,KACA;OAEG,IAAI,IAAc,GACvB,OAAO,IAAc,IAEnB,AADA,KACA;EAOJ,KAAK,IAAI,IAAI,GAAG,KAAK,GAAiB,KAAK;GACzC,IAAM,IAAW,GACX,IAAY,KAAa,IAAI;GAMnC,AALI,KAAY,IACd,MAEA,EAAQ,CAAQ,GAEd,KAAa,IACf,MAEA,EAAQ,CAAS;EAErB;EAEA,KAAK,IAAI,IAAI,GAAY,KAAK,GAAa,KACzC,EAAQ,CAAC;EAGX,IAAM,IAAS,EACZ,MAAM,CAAC,CACP,MAAM,GAAG,MAAM,IAAI,CAAC,CAAC,CACrB,QAAQ,GAAM,GAAK,MAAQ,CAAC,KAAO,MAAS,EAAI,IAAM,EAAE;EAC3D,KAAK,IAAI,IAAM,GAAG,IAAM,EAAO,QAAQ,KAAO;GAC5C,IAAM,IAAM,EAAO,IACb,IAAW,MAAQ,GACnB,IAAO,EAAO,IAAM,IACpB,IAAO,EAAO,IAAM,IACpB,IAAY,IAAM,GAElB,IADY,IAAM,MACY;GAEpC,AAAI,MAAQ,KACN,MAAQ,KAGV,EAAM,KAAK;IACT,MAAM;IACN,KAAK;GACP,CAAC,GAEH,EAAM,KAAK;IACT,MAAM;IACN;IACA;IACA;GACF,CAAC,KAEG,MAAc,IAChB,EAAM,KAAK;IACT,MAAM;IACN;IACA;IACA;GACF,CAAC,KAGD,EAAM,KAAK;IACT,MAAM;IACN,KAAK,IAAM;GACb,CAAC,GACD,EAAM,KAAK;IACT,MAAM;IACN;IACA;IACA,eAAe;GACjB,CAAC;EAGP;EAEA,IAAM,IAAW,EAAM,EAAM,SAAS;EACtC,AAAI,EAAS,SAAS,SAAS,EAAS,QAAQ,KAG9C,EAAM,KAAK;GACT,MAAM;GACN,KAAK;EACP,CAAC;CAEL;CAEA,IAAM,IAA2B;EAAC,MAAM;EAAQ,KAAK,IAAc;EAAG,UAAU,MAAgB;CAAC,GAC3F,IAA2B;EAAC,MAAM;EAAQ,KAAK,IAAc;EAAG,UAAU,MAAgB;CAAS;CACzG,OAAO;EAAC;EAAM,GAAG;EAAO;CAAI;AAC9B"}
|
package/esm/Pillar/Pillar.d.ts
CHANGED
|
@@ -23,7 +23,7 @@ export type PillarProps<C extends keyof JSX.IntrinsicElements = 'div'> = React.H
|
|
|
23
23
|
fullWidth?: boolean;
|
|
24
24
|
} & (C extends 'article' ? PropsWithChildren<BaseProps<HTMLElement>> : PropsWithChildren<BaseProps<HTMLDivElement>>);
|
|
25
25
|
type PillarImageProps = ImageProps;
|
|
26
|
-
declare function PillarImage({ className, ...rest }: PillarImageProps):
|
|
26
|
+
declare function PillarImage({ className, ...rest }: PillarImageProps): JSX.Element;
|
|
27
27
|
type IconComponentProps = React.SVGAttributes<SVGElement> & {
|
|
28
28
|
size?: number;
|
|
29
29
|
};
|
|
@@ -32,7 +32,7 @@ type IconElement = React.ReactElement<IconComponentProps>;
|
|
|
32
32
|
export type PillarIconProps = Omit<IconProps, 'icon' | 'color'> & {
|
|
33
33
|
icon: IconElement | IconComponent;
|
|
34
34
|
};
|
|
35
|
-
declare function PillarIcon({ icon, className, hasBackground, size, ...props }: PillarIconProps):
|
|
35
|
+
declare function PillarIcon({ icon, className, hasBackground, size, ...props }: PillarIconProps): JSX.Element;
|
|
36
36
|
type PillarHeadingProps = BaseProps<HTMLHeadingElement> & {
|
|
37
37
|
children: React.ReactNode | React.ReactNode[];
|
|
38
38
|
as?: Exclude<HeadingProps['as'], 'h1'>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pillar.d.ts","sourceRoot":"","sources":["../../src/Pillar/Pillar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,iBAAiB,EAA4B,KAAK,GAAG,EAAC,MAAM,OAAO,CAAA;AAE9F,OAAO,EAAU,YAAY,EAAe,KAAK,UAAU,EAAQ,SAAS,EAAC,MAAM,IAAI,CAAA;AACvF,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAQnD,eAAO,MAAM,sBAAsB,UAAU,CAAA;AAC7C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,GAAG,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;IACjG;;OAEG;IACH,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,SAAS,CAAA;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;AAyDpH,KAAK,gBAAgB,GAAG,UAAU,CAAA;AAElC,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,GAAG,IAAI,EAAC,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"Pillar.d.ts","sourceRoot":"","sources":["../../src/Pillar/Pillar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,iBAAiB,EAA4B,KAAK,GAAG,EAAC,MAAM,OAAO,CAAA;AAE9F,OAAO,EAAU,YAAY,EAAe,KAAK,UAAU,EAAQ,SAAS,EAAC,MAAM,IAAI,CAAA;AACvF,OAAO,EAAO,KAAK,SAAS,EAAC,MAAM,SAAS,CAAA;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAQnD,eAAO,MAAM,sBAAsB,UAAU,CAAA;AAC7C,eAAO,MAAM,qBAAqB,KAAK,CAAA;AACvC,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,CAAC,iBAAiB,GAAG,KAAK,IAAI,KAAK,CAAC,cAAc,CAAC,CAAC,CAAC,GAAG;IACjG;;OAEG;IACH,EAAE,CAAC,EAAE,CAAC,GAAG,KAAK,GAAG,SAAS,CAAA;IAC1B;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,GAAG,QAAQ,CAAA;IAC1B;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;IACnB;;OAEG;IACH,SAAS,CAAC,EAAE,OAAO,CAAA;CACpB,GAAG,CAAC,CAAC,SAAS,SAAS,GAAG,iBAAiB,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC,GAAG,iBAAiB,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC,CAAC,CAAA;AAyDpH,KAAK,gBAAgB,GAAG,UAAU,CAAA;AAElC,iBAAS,WAAW,CAAC,EAAC,SAAS,EAAE,GAAG,IAAI,EAAC,EAAE,gBAAgB,eAM1D;AAED,KAAK,kBAAkB,GAAG,KAAK,CAAC,aAAa,CAAC,UAAU,CAAC,GAAG;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAC,CAAA;AAC3E,KAAK,aAAa,GAAG,KAAK,CAAC,aAAa,CAAC,kBAAkB,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAA;AACxG,KAAK,WAAW,GAAG,KAAK,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAA;AAEzD,MAAM,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG;IAChE,IAAI,EAAE,WAAW,GAAG,aAAa,CAAA;CAClC,CAAA;AAED,iBAAS,UAAU,CAAC,EAAC,IAAI,EAAE,SAAS,EAAE,aAAoB,EAAE,IAAI,EAAE,GAAG,KAAK,EAAC,EAAE,eAAe,eA6B3F;AAED,KAAK,kBAAkB,GAAG,SAAS,CAAC,kBAAkB,CAAC,GAAG;IACxD,QAAQ,EAAE,KAAK,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,EAAE,CAAA;IAC7C,EAAE,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAA;CACvC,GAAG,YAAY,CAAA;AAkBhB,KAAK,sBAAsB,GAAG,iBAAiB,CAAC,SAAS,CAAC,oBAAoB,CAAC,CAAC,CAAA;AAmBhF,KAAK,eAAe,GAAG;IACrB,IAAI,EAAE,MAAM,CAAA;CACb,GAAG,IAAI,CAAC,SAAS,EAAE,MAAM,GAAG,WAAW,CAAC,GACvC,SAAS,CAAC,iBAAiB,CAAC,CAAA;AAU9B;;;GAGG;AACH,eAAO,MAAM,MAAM;;;;;;CAMjB,CAAA"}
|
package/esm/Pillar/Pillar.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import e from "../node_modules/clsx/dist/clsx.js";
|
|
1
|
+
import { clsx as e } from "../node_modules/clsx/dist/clsx.js";
|
|
2
2
|
import { useAnimation as t } from "../animation/useAnimation.js";
|
|
3
3
|
import { Text as n } from "../Text/Text.js";
|
|
4
4
|
import { Heading as r } from "../Heading/Heading.js";
|
package/esm/Pillar/Pillar.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Pillar.js","names":[],"sources":["../../src/Pillar/Pillar.tsx"],"sourcesContent":["import React, {forwardRef, PropsWithChildren, HTMLAttributes, type Ref, type JSX} from 'react'\nimport {clsx} from 'clsx'\nimport {Heading, HeadingProps, Text, Image, type ImageProps, Link, LinkProps} from '..'\nimport {Icon, type IconProps} from '../Icon'\nimport type {BaseProps} from '../component-helpers'\nimport {useAnimation} from '../animation'\n\n/**\n * Main stylesheet (as a CSS Module)\n */\nimport styles from './Pillar.module.css'\n\nexport const defaultPillarIconColor = 'green'\nexport const defaultPillarIconSize = 32\nexport type PillarProps<C extends keyof JSX.IntrinsicElements = 'div'> = React.HTMLAttributes<C> & {\n /**\n * The HTML element used to render the Pillar.\n */\n as?: C | 'div' | 'article'\n /**\n * Aligns the pillar content\n */\n align?: 'start' | 'center'\n /**\n * Enables optional border around the pillar content\n */\n hasBorder?: boolean\n /**\n * Allows the pillar to fill the width of its parent container.\n */\n fullWidth?: boolean\n} & (C extends 'article' ? PropsWithChildren<BaseProps<HTMLElement>> : PropsWithChildren<BaseProps<HTMLDivElement>>)\n\nconst PillarRoot = forwardRef(\n (\n {\n children,\n className,\n animate,\n as = 'div',\n align = 'start',\n style,\n hasBorder = false,\n fullWidth = false,\n ...rest\n }: PropsWithChildren<PillarProps>,\n ref: Ref<HTMLDivElement>,\n ) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const filteredChildren = React.Children.toArray(children).filter(child => {\n if (React.isValidElement(child) && typeof child.type !== 'string') {\n if (\n child.type === PillarImage ||\n child.type === PillarIcon ||\n child.type === PillarHeading ||\n child.type === PillarDescription ||\n child.type === PillarLink\n ) {\n return true\n }\n }\n return false\n })\n\n const validElements = ['div', 'article']\n const Component = validElements.includes(as) ? as : 'div'\n\n return (\n <Component\n className={clsx(\n styles.Pillar,\n styles[`Pillar--align-${align}`],\n hasBorder && styles['Pillar--has-border'],\n !fullWidth && styles['Pillar--has-max-width'],\n animationClasses,\n className,\n )}\n ref={ref}\n {...(rest as HTMLAttributes<HTMLElement>)}\n style={{...animationInlineStyles, ...style}}\n >\n {filteredChildren}\n </Component>\n )\n },\n)\n\ntype PillarImageProps = ImageProps\n\nfunction PillarImage({className, ...rest}: PillarImageProps) {\n return (\n <div className={styles.Pillar__image}>\n <Image className={className} {...rest} />\n </div>\n )\n}\n\ntype IconComponentProps = React.SVGAttributes<SVGElement> & {size?: number}\ntype IconComponent = React.ComponentType<IconComponentProps> | React.ExoticComponent<IconComponentProps>\ntype IconElement = React.ReactElement<IconComponentProps>\n\nexport type PillarIconProps = Omit<IconProps, 'icon' | 'color'> & {\n icon: IconElement | IconComponent\n}\n\nfunction PillarIcon({icon, className, hasBackground = true, size, ...props}: PillarIconProps) {\n if (!hasBackground) {\n const iconWrapperProps = {\n ...(props as React.HTMLAttributes<HTMLSpanElement>),\n className: clsx(styles.Pillar__icon, className),\n }\n\n let iconWithoutBackground: React.ReactNode\n\n if (React.isValidElement<IconComponentProps>(icon)) {\n iconWithoutBackground = icon\n } else {\n const IconWithoutBackground = icon\n iconWithoutBackground = <IconWithoutBackground />\n }\n\n return <span {...iconWrapperProps}>{iconWithoutBackground}</span>\n }\n\n return (\n <Icon\n className={clsx(styles.Pillar__icon, styles['Pillar__icon--with-background'], className)}\n color={defaultPillarIconColor}\n hasBackground\n icon={icon as IconProps['icon']}\n size={size ?? defaultPillarIconSize}\n {...props}\n />\n )\n}\n\ntype PillarHeadingProps = BaseProps<HTMLHeadingElement> & {\n children: React.ReactNode | React.ReactNode[]\n as?: Exclude<HeadingProps['as'], 'h1'>\n} & HeadingProps\n\nconst PillarHeading = forwardRef<HTMLHeadingElement, PillarHeadingProps>(\n ({children, as = 'h3', size = '6', className, ...rest}, ref) => {\n return (\n <Heading\n size={size}\n className={clsx(styles.Pillar__heading, styles[`Pillar__heading--size-${size}`], className)}\n ref={ref}\n as={as}\n {...rest}\n >\n {children}\n </Heading>\n )\n },\n)\n\ntype PillarDescriptionProps = PropsWithChildren<BaseProps<HTMLParagraphElement>>\n\nconst PillarDescription = forwardRef<HTMLParagraphElement, PillarDescriptionProps>(\n ({children, className, ...rest}, ref) => {\n return (\n <Text\n variant=\"muted\"\n ref={ref}\n size=\"200\"\n as=\"p\"\n className={clsx(styles.Pillar__description, className)}\n {...rest}\n >\n {children}\n </Text>\n )\n },\n)\n\ntype PillarLinkProps = {\n href: string\n} & Omit<LinkProps, 'size' | 'direction'> &\n BaseProps<HTMLAnchorElement>\n\nconst PillarLink = forwardRef(({className, children, href, ...props}: PillarLinkProps, ref: Ref<HTMLAnchorElement>) => {\n return (\n <Link variant=\"accent\" href={href} ref={ref} className={clsx(styles.Pillar__link, className)} {...props}>\n {children}\n </Link>\n )\n})\n\n/**\n * Pillar component:\n * @see https://primer.style/brand/components/Pillar\n */\nexport const Pillar = Object.assign(PillarRoot, {\n Icon: PillarIcon,\n Image: PillarImage,\n Heading: PillarHeading,\n Description: PillarDescription,\n Link: PillarLink,\n})\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,IAAyB,SACzB,IAAwB,IAoB/B,IAAa,GAEf,EACE,aACA,cACA,YACA,QAAK,OACL,WAAQ,SACR,UACA,eAAY,IACZ,eAAY,IACZ,GAAG,KAEL,MACG;CACH,IAAM,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,
|
|
1
|
+
{"version":3,"file":"Pillar.js","names":[],"sources":["../../src/Pillar/Pillar.tsx"],"sourcesContent":["import React, {forwardRef, PropsWithChildren, HTMLAttributes, type Ref, type JSX} from 'react'\nimport {clsx} from 'clsx'\nimport {Heading, HeadingProps, Text, Image, type ImageProps, Link, LinkProps} from '..'\nimport {Icon, type IconProps} from '../Icon'\nimport type {BaseProps} from '../component-helpers'\nimport {useAnimation} from '../animation'\n\n/**\n * Main stylesheet (as a CSS Module)\n */\nimport styles from './Pillar.module.css'\n\nexport const defaultPillarIconColor = 'green'\nexport const defaultPillarIconSize = 32\nexport type PillarProps<C extends keyof JSX.IntrinsicElements = 'div'> = React.HTMLAttributes<C> & {\n /**\n * The HTML element used to render the Pillar.\n */\n as?: C | 'div' | 'article'\n /**\n * Aligns the pillar content\n */\n align?: 'start' | 'center'\n /**\n * Enables optional border around the pillar content\n */\n hasBorder?: boolean\n /**\n * Allows the pillar to fill the width of its parent container.\n */\n fullWidth?: boolean\n} & (C extends 'article' ? PropsWithChildren<BaseProps<HTMLElement>> : PropsWithChildren<BaseProps<HTMLDivElement>>)\n\nconst PillarRoot = forwardRef(\n (\n {\n children,\n className,\n animate,\n as = 'div',\n align = 'start',\n style,\n hasBorder = false,\n fullWidth = false,\n ...rest\n }: PropsWithChildren<PillarProps>,\n ref: Ref<HTMLDivElement>,\n ) => {\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n\n const filteredChildren = React.Children.toArray(children).filter(child => {\n if (React.isValidElement(child) && typeof child.type !== 'string') {\n if (\n child.type === PillarImage ||\n child.type === PillarIcon ||\n child.type === PillarHeading ||\n child.type === PillarDescription ||\n child.type === PillarLink\n ) {\n return true\n }\n }\n return false\n })\n\n const validElements = ['div', 'article']\n const Component = validElements.includes(as) ? as : 'div'\n\n return (\n <Component\n className={clsx(\n styles.Pillar,\n styles[`Pillar--align-${align}`],\n hasBorder && styles['Pillar--has-border'],\n !fullWidth && styles['Pillar--has-max-width'],\n animationClasses,\n className,\n )}\n ref={ref}\n {...(rest as HTMLAttributes<HTMLElement>)}\n style={{...animationInlineStyles, ...style}}\n >\n {filteredChildren}\n </Component>\n )\n },\n)\n\ntype PillarImageProps = ImageProps\n\nfunction PillarImage({className, ...rest}: PillarImageProps) {\n return (\n <div className={styles.Pillar__image}>\n <Image className={className} {...rest} />\n </div>\n )\n}\n\ntype IconComponentProps = React.SVGAttributes<SVGElement> & {size?: number}\ntype IconComponent = React.ComponentType<IconComponentProps> | React.ExoticComponent<IconComponentProps>\ntype IconElement = React.ReactElement<IconComponentProps>\n\nexport type PillarIconProps = Omit<IconProps, 'icon' | 'color'> & {\n icon: IconElement | IconComponent\n}\n\nfunction PillarIcon({icon, className, hasBackground = true, size, ...props}: PillarIconProps) {\n if (!hasBackground) {\n const iconWrapperProps = {\n ...(props as React.HTMLAttributes<HTMLSpanElement>),\n className: clsx(styles.Pillar__icon, className),\n }\n\n let iconWithoutBackground: React.ReactNode\n\n if (React.isValidElement<IconComponentProps>(icon)) {\n iconWithoutBackground = icon\n } else {\n const IconWithoutBackground = icon\n iconWithoutBackground = <IconWithoutBackground />\n }\n\n return <span {...iconWrapperProps}>{iconWithoutBackground}</span>\n }\n\n return (\n <Icon\n className={clsx(styles.Pillar__icon, styles['Pillar__icon--with-background'], className)}\n color={defaultPillarIconColor}\n hasBackground\n icon={icon as IconProps['icon']}\n size={size ?? defaultPillarIconSize}\n {...props}\n />\n )\n}\n\ntype PillarHeadingProps = BaseProps<HTMLHeadingElement> & {\n children: React.ReactNode | React.ReactNode[]\n as?: Exclude<HeadingProps['as'], 'h1'>\n} & HeadingProps\n\nconst PillarHeading = forwardRef<HTMLHeadingElement, PillarHeadingProps>(\n ({children, as = 'h3', size = '6', className, ...rest}, ref) => {\n return (\n <Heading\n size={size}\n className={clsx(styles.Pillar__heading, styles[`Pillar__heading--size-${size}`], className)}\n ref={ref}\n as={as}\n {...rest}\n >\n {children}\n </Heading>\n )\n },\n)\n\ntype PillarDescriptionProps = PropsWithChildren<BaseProps<HTMLParagraphElement>>\n\nconst PillarDescription = forwardRef<HTMLParagraphElement, PillarDescriptionProps>(\n ({children, className, ...rest}, ref) => {\n return (\n <Text\n variant=\"muted\"\n ref={ref}\n size=\"200\"\n as=\"p\"\n className={clsx(styles.Pillar__description, className)}\n {...rest}\n >\n {children}\n </Text>\n )\n },\n)\n\ntype PillarLinkProps = {\n href: string\n} & Omit<LinkProps, 'size' | 'direction'> &\n BaseProps<HTMLAnchorElement>\n\nconst PillarLink = forwardRef(({className, children, href, ...props}: PillarLinkProps, ref: Ref<HTMLAnchorElement>) => {\n return (\n <Link variant=\"accent\" href={href} ref={ref} className={clsx(styles.Pillar__link, className)} {...props}>\n {children}\n </Link>\n )\n})\n\n/**\n * Pillar component:\n * @see https://primer.style/brand/components/Pillar\n */\nexport const Pillar = Object.assign(PillarRoot, {\n Icon: PillarIcon,\n Image: PillarImage,\n Heading: PillarHeading,\n Description: PillarDescription,\n Link: PillarLink,\n})\n"],"mappings":";;;;;;;;;;;AAYA,IAAa,IAAyB,SACzB,IAAwB,IAoB/B,IAAa,GAEf,EACE,aACA,cACA,YACA,QAAK,OACL,WAAQ,SACR,UACA,eAAY,IACZ,eAAY,IACZ,GAAG,KAEL,MACG;CACH,IAAM,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,CAAO,GAEjF,IAAmB,EAAM,SAAS,QAAQ,CAAQ,CAAC,CAAC,QAAO,MAC/D,GAAI,EAAM,eAAe,CAAK,KAAK,OAAO,EAAM,QAAS,aAErD,EAAM,SAAS,KACf,EAAM,SAAS,KACf,EAAM,SAAS,KACf,EAAM,SAAS,KACf,EAAM,SAAS,GAMpB;CAKD,OACE,kBAHgB,CADK,OAAO,SACZ,CAAA,CAAc,SAAS,CAAE,IAAI,IAAK,OAGlD;EACE,WAAW,EACT,EAAO,QACP,EAAO,iBAAiB,MACxB,KAAa,EAAO,uBACpB,CAAC,KAAa,EAAO,0BACrB,GACA,CACF;EACK;EACL,GAAK;EACL,OAAO;GAAC,GAAG;GAAuB,GAAG;EAAK;YAEzC;CACQ,CAAA;AAEf,CACF;AAIA,SAAS,EAAY,EAAC,cAAW,GAAG,KAAyB;CAC3D,OACE,kBAAC,OAAD;EAAK,WAAW,EAAO;YACrB,kBAAC,GAAD;GAAkB;GAAW,GAAI;EAAO,CAAA;CACrC,CAAA;AAET;AAUA,SAAS,EAAW,EAAC,SAAM,cAAW,mBAAgB,IAAM,SAAM,GAAG,KAAyB;CAC5F,IAAI,CAAC,GAAe;EAClB,IAAM,IAAmB;GACvB,GAAI;GACJ,WAAW,EAAK,EAAO,cAAc,CAAS;EAChD,GAEI;EASJ,OAPA,AAIE,IAJE,EAAM,eAAmC,CAAI,IACvB,IAGA,kBAAC,GAAD,CAAwB,CAAA,GAG3C,kBAAC,QAAD;GAAM,GAAI;aAAmB;EAA4B,CAAA;CAClE;CAEA,OACE,kBAAC,GAAD;EACE,WAAW,EAAK,EAAO,cAAc,EAAO,kCAAkC,CAAS;EACvF,OAAO;EACP,eAAA;EACM;EACN,MAAM,KAAA;EACN,GAAI;CACL,CAAA;AAEL;AAOA,IAAM,IAAgB,GACnB,EAAC,aAAU,QAAK,MAAM,UAAO,KAAK,cAAW,GAAG,KAAO,MAEpD,kBAAC,GAAD;CACQ;CACN,WAAW,EAAK,EAAO,iBAAiB,EAAO,yBAAyB,MAAS,CAAS;CACrF;CACD;CACJ,GAAI;CAEH;AACM,CAAA,CAGf,GAIM,IAAoB,GACvB,EAAC,aAAU,cAAW,GAAG,KAAO,MAE7B,kBAAC,GAAD;CACE,SAAQ;CACH;CACL,MAAK;CACL,IAAG;CACH,WAAW,EAAK,EAAO,qBAAqB,CAAS;CACrD,GAAI;CAEH;AACG,CAAA,CAGZ,GAOM,IAAa,GAAY,EAAC,cAAW,aAAU,SAAM,GAAG,KAAyB,MAEnF,kBAAC,GAAD;CAAM,SAAQ;CAAe;CAAW;CAAK,WAAW,EAAK,EAAO,cAAc,CAAS;CAAG,GAAI;CAC/F;AACG,CAAA,CAET,GAMY,IAAS,OAAO,OAAO,GAAY;CAC9C,MAAM;CACN,OAAO;CACP,SAAS;CACT,aAAa;CACb,MAAM;AACR,CAAC"}
|