@primer/react-brand 0.78.0-rc.e0204c62 → 0.79.0-rc.6f0687c1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/docs/components/FeatureComparisonTable/index.md +182 -0
- package/docs/components/SubNav/index.md +53 -8
- package/docs/components/index.md +1 -0
- package/docs/index.md +3 -2
- package/esm/FeatureComparisonTable/FeatureComparisonTable.d.ts +44 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTable.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTable.js +162 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTable.js.map +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTable.module-CGnj3YJu.css +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTable.module.js +59 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTable.module.js.map +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableContext.d.ts +33 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableContext.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableContext.js +23 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableContext.js.map +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableHelpers.d.ts +5 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableHelpers.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableHelpers.js +8 -0
- package/esm/FeatureComparisonTable/FeatureComparisonTableHelpers.js.map +1 -0
- package/esm/FeatureComparisonTable/index.d.ts +2 -0
- package/esm/FeatureComparisonTable/index.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableCell.d.ts +30 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableCell.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableCell.js +50 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableCell.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableDescription.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableDescription.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableDescription.js +20 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableDescription.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroup.d.ts +11 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroup.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroup.js +83 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroup.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroupHeading.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroupHeading.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroupHeading.js +13 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableGroupHeading.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableHeading.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableHeading.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableHeading.js +19 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableHeading.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItem.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItem.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItem.js +39 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItem.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItemHeading.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItemHeading.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItemHeading.js +16 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableItemHeading.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableLabel.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableLabel.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableLabel.js +21 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableLabel.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrice.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrice.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrice.js +23 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrice.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrimaryAction.d.ts +13 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrimaryAction.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrimaryAction.js +17 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTablePrimaryAction.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRow.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRow.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRow.js +64 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRow.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowDescription.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowDescription.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowDescription.js +21 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowDescription.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowHeading.d.ts +5 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowHeading.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowHeading.js +20 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableRowHeading.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableSecondaryAction.d.ts +3 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableSecondaryAction.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableSecondaryAction.js +16 -0
- package/esm/FeatureComparisonTable/sub-components/FeatureComparisonTableSecondaryAction.js.map +1 -0
- package/esm/FeatureComparisonTable/sub-components/index.d.ts +28 -0
- package/esm/FeatureComparisonTable/sub-components/index.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/useFeatureComparisonTableStickyHeaders.d.ts +3 -0
- package/esm/FeatureComparisonTable/useFeatureComparisonTableStickyHeaders.d.ts.map +1 -0
- package/esm/FeatureComparisonTable/useFeatureComparisonTableStickyHeaders.js +40 -0
- package/esm/FeatureComparisonTable/useFeatureComparisonTableStickyHeaders.js.map +1 -0
- package/esm/MinimalVideoPlayer/MinimalVideoPlayer.js +1 -0
- package/esm/MinimalVideoPlayer/MinimalVideoPlayer.js.map +1 -1
- package/esm/SubNav/SubNav.d.ts +19 -1
- package/esm/SubNav/SubNav.d.ts.map +1 -1
- package/esm/SubNav/SubNav.js +265 -166
- package/esm/SubNav/SubNav.js.map +1 -1
- package/esm/SubNav/SubNav.module-cyUt0N_h.css +1 -0
- package/esm/SubNav/SubNav.module.js +11 -4
- package/esm/SubNav/SubNav.module.js.map +1 -1
- package/esm/SubNav/useAnchorMenu.d.ts +5 -0
- package/esm/SubNav/useAnchorMenu.d.ts.map +1 -0
- package/esm/SubNav/useAnchorMenu.js +23 -0
- package/esm/SubNav/useAnchorMenu.js.map +1 -0
- package/esm/SubNav/useNarrowMenu.d.ts +8 -0
- package/esm/SubNav/useNarrowMenu.d.ts.map +1 -0
- package/esm/SubNav/useNarrowMenu.js +41 -0
- package/esm/SubNav/useNarrowMenu.js.map +1 -0
- package/esm/SubNav/useWideMenu.d.ts +13 -0
- package/esm/SubNav/useWideMenu.d.ts.map +1 -0
- package/esm/SubNav/useWideMenu.js +109 -0
- package/esm/SubNav/useWideMenu.js.map +1 -0
- package/esm/SubdomainNavBar/SubdomainNavBar.module-BLR1YjX-.css +1 -0
- package/esm/SubdomainNavBar/SubdomainNavBar.module.js +2 -3
- package/esm/SubdomainNavBar/SubdomainNavBar.module.js.map +1 -1
- package/esm/Tiles/Tiles.d.ts +1 -0
- package/esm/Tiles/Tiles.d.ts.map +1 -1
- package/esm/Tiles/Tiles.js +69 -39
- package/esm/Tiles/Tiles.js.map +1 -1
- package/esm/Tiles/Tiles.module-DUo9CsNB.css +1 -0
- package/esm/Tiles/Tiles.module.js +2 -2
- package/esm/Tiles/Tiles.module.js.map +1 -1
- package/esm/index.d.ts +1 -0
- package/esm/index.d.ts.map +1 -1
- package/esm/index.esm.js +32 -31
- package/esm/node_modules/@primer/octicons-react/dist/icons/InfinityIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/InfinityIcon.js.map +1 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/SyncIcon.js +20 -0
- package/esm/node_modules/@primer/octicons-react/dist/icons/SyncIcon.js.map +1 -0
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/base-44NysoUh.css +1 -0
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/colors-with-modes-Dw8AMSYp.css +1 -0
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/sub-nav/base-Dl5rLq0_.css +1 -0
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes-Bna3nyXf.css +1 -0
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/tiles/base-CX1T1tsR.css +1 -0
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.d.ts.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js +9 -5
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.js.map +1 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module-C46WY_qp.css +1 -0
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js +3 -2
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module.js.map +1 -1
- package/lib/FeatureComparisonTable/FeatureComparisonTable.d.ts +43 -0
- package/lib/FeatureComparisonTable/FeatureComparisonTableContext.d.ts +32 -0
- package/lib/FeatureComparisonTable/FeatureComparisonTableHelpers.d.ts +4 -0
- package/lib/FeatureComparisonTable/index.d.ts +1 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableCell.d.ts +29 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableDescription.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableGroup.d.ts +10 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableGroupHeading.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableHeading.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableItem.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableItemHeading.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableLabel.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTablePrice.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTablePrimaryAction.d.ts +12 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableRow.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableRowDescription.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableRowHeading.d.ts +4 -0
- package/lib/FeatureComparisonTable/sub-components/FeatureComparisonTableSecondaryAction.d.ts +2 -0
- package/lib/FeatureComparisonTable/sub-components/index.d.ts +27 -0
- package/lib/FeatureComparisonTable/useFeatureComparisonTableStickyHeaders.d.ts +2 -0
- package/lib/SubNav/SubNav.d.ts +19 -1
- package/lib/SubNav/useAnchorMenu.d.ts +4 -0
- package/lib/SubNav/useNarrowMenu.d.ts +7 -0
- package/lib/SubNav/useWideMenu.d.ts +12 -0
- package/lib/Tiles/Tiles.d.ts +1 -0
- package/lib/css/main.css +923 -284
- 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/base.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/feature-comparison-table/base.css +9 -0
- package/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/colors-with-modes.css +29 -0
- 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/icon-button/base.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/icon-button/colors-with-modes.css +1 -1
- package/lib/design-tokens/css/tokens/functional/components/icon-button/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 +6 -1
- package/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes.css +15 -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/base.css +8 -0
- 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/button/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/feature-comparison-table/base.js +17 -0
- 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/icon-button/base.js +1 -1
- package/lib/design-tokens/js/module/tokens/functional/components/icon-button/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 +10 -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/tiles/base.js +14 -0
- 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/button/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/feature-comparison-table/base.js +7 -0
- 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/icon-button/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/icon-button/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 +6 -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/tiles/base.js +6 -0
- package/lib/design-tokens/js/tokens/functional/components/timeline/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/timeline/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/token/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/tooltip/colors.js +1 -1
- package/lib/design-tokens/js/tokens/functional/components/video-player/base.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/border.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/breakpoints.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/size-coarse.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/size-fine.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/size.js +1 -1
- package/lib/design-tokens/js/tokens/functional/size/viewport.js +1 -1
- package/lib/design-tokens/js/tokens/functional/typography/typography-responsive.js +1 -1
- package/lib/design-tokens/js/tokens/functional/typography/typography.js +1 -1
- package/lib/design-tokens/json/colors.json +16 -0
- 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/button/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/feature-comparison-table/base.scss +6 -0
- 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/icon-button/base.scss +1 -1
- package/lib/design-tokens/scss/tokens/functional/components/icon-button/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 +6 -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/tiles/base.scss +5 -0
- 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/button/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/button/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/feature-comparison-table/base.d.ts +20 -0
- package/lib/design-tokens/ts/tokens/functional/components/feature-comparison-table/base.js +17 -0
- 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/icon-button/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/icon-button/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/icon-button/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/icon-button/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 +11 -2
- package/lib/design-tokens/ts/tokens/functional/components/sub-nav/base.js +10 -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/tiles/base.d.ts +17 -0
- package/lib/design-tokens/ts/tokens/functional/components/tiles/base.js +14 -0
- package/lib/design-tokens/ts/tokens/functional/components/timeline/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/timeline/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/token/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/token/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/tooltip/colors.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/video-player/base.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/components/video-player/base.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/border.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/border.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/breakpoints.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/breakpoints.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-coarse.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-coarse.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-fine.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size-fine.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/size.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/viewport.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/size/viewport.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography-responsive.js +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography.d.ts +1 -1
- package/lib/design-tokens/ts/tokens/functional/typography/typography.js +1 -1
- package/lib/index.d.ts +1 -0
- package/lib/index.js +1 -1
- package/llms.txt +3 -2
- package/package.json +1 -1
- package/esm/SubNav/SubNav.module-D-gLr0JO.css +0 -1
- package/esm/SubdomainNavBar/SubdomainNavBar.module-BE9mtBPE.css +0 -1
- package/esm/Tiles/Tiles.module-BzHaDJV8.css +0 -1
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/sub-nav/base-DIkvLW-s.css +0 -1
- package/esm/packages/design-tokens/lib/design-tokens/css/tokens/functional/components/sub-nav/colors-with-modes-5gfdihUt.css +0 -1
- package/esm/river/RiverBreakoutTabs/RiverBreakoutTabs.module-CB2SZhbE.css +0 -1
|
@@ -0,0 +1,182 @@
|
|
|
1
|
+
---
|
|
2
|
+
title: Feature comparison table
|
|
3
|
+
description: Use the feature comparison table to compare features across pricing plans.
|
|
4
|
+
keywords: ['pricing', 'plans', 'comparison', 'features']
|
|
5
|
+
ready: true
|
|
6
|
+
source: https://github.com/primer/brand/blob/main/packages/react/src/FeatureComparisonTable/FeatureComparisonTable.tsx
|
|
7
|
+
storybook: '/brand/storybook/?path=/story/components-featurecomparisontable--playground'
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
```js
|
|
11
|
+
import {FeatureComparisonTable} from '@primer/react-brand'
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
## Examples
|
|
15
|
+
|
|
16
|
+
### Default
|
|
17
|
+
|
|
18
|
+
```jsx
|
|
19
|
+
<FeatureComparisonTable>
|
|
20
|
+
<FeatureComparisonTable.Heading>Compare features</FeatureComparisonTable.Heading>
|
|
21
|
+
<FeatureComparisonTable.Item>
|
|
22
|
+
<FeatureComparisonTable.ItemHeading>Free</FeatureComparisonTable.ItemHeading>
|
|
23
|
+
<FeatureComparisonTable.Description>For individuals.</FeatureComparisonTable.Description>
|
|
24
|
+
<FeatureComparisonTable.Price>$0 per month</FeatureComparisonTable.Price>
|
|
25
|
+
<FeatureComparisonTable.PrimaryAction as="a" href="#">
|
|
26
|
+
Get started
|
|
27
|
+
</FeatureComparisonTable.PrimaryAction>
|
|
28
|
+
</FeatureComparisonTable.Item>
|
|
29
|
+
<FeatureComparisonTable.Item>
|
|
30
|
+
<FeatureComparisonTable.Label>Recommended</FeatureComparisonTable.Label>
|
|
31
|
+
<FeatureComparisonTable.ItemHeading>Team</FeatureComparisonTable.ItemHeading>
|
|
32
|
+
<FeatureComparisonTable.Description>For teams.</FeatureComparisonTable.Description>
|
|
33
|
+
<FeatureComparisonTable.Price>$4 per user / month</FeatureComparisonTable.Price>
|
|
34
|
+
<FeatureComparisonTable.PrimaryAction as="a" href="#">
|
|
35
|
+
Start a free trial
|
|
36
|
+
</FeatureComparisonTable.PrimaryAction>
|
|
37
|
+
</FeatureComparisonTable.Item>
|
|
38
|
+
|
|
39
|
+
<FeatureComparisonTable.Group>
|
|
40
|
+
<FeatureComparisonTable.GroupHeading id="core-features">Core features</FeatureComparisonTable.GroupHeading>
|
|
41
|
+
<FeatureComparisonTable.Row>
|
|
42
|
+
<FeatureComparisonTable.RowHeading>Private repositories</FeatureComparisonTable.RowHeading>
|
|
43
|
+
<FeatureComparisonTable.Cell variant="included" />
|
|
44
|
+
<FeatureComparisonTable.Cell variant="included" />
|
|
45
|
+
</FeatureComparisonTable.Row>
|
|
46
|
+
<FeatureComparisonTable.Row>
|
|
47
|
+
<FeatureComparisonTable.RowHeading>Support</FeatureComparisonTable.RowHeading>
|
|
48
|
+
<FeatureComparisonTable.Cell>Community</FeatureComparisonTable.Cell>
|
|
49
|
+
<FeatureComparisonTable.Cell>Standard</FeatureComparisonTable.Cell>
|
|
50
|
+
</FeatureComparisonTable.Row>
|
|
51
|
+
</FeatureComparisonTable.Group>
|
|
52
|
+
</FeatureComparisonTable>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### Row descriptions
|
|
56
|
+
|
|
57
|
+
Use `FeatureComparisonTable.RowDescription` to add context beneath a feature name. Descriptions can include links and emphasis.
|
|
58
|
+
|
|
59
|
+
```jsx
|
|
60
|
+
<FeatureComparisonTable>
|
|
61
|
+
<FeatureComparisonTable.Heading>Compare features</FeatureComparisonTable.Heading>
|
|
62
|
+
<FeatureComparisonTable.Item>
|
|
63
|
+
<FeatureComparisonTable.ItemHeading>Free</FeatureComparisonTable.ItemHeading>
|
|
64
|
+
</FeatureComparisonTable.Item>
|
|
65
|
+
<FeatureComparisonTable.Item>
|
|
66
|
+
<FeatureComparisonTable.ItemHeading>Team</FeatureComparisonTable.ItemHeading>
|
|
67
|
+
</FeatureComparisonTable.Item>
|
|
68
|
+
<FeatureComparisonTable.Group>
|
|
69
|
+
<FeatureComparisonTable.GroupHeading id="codespaces">Codespaces</FeatureComparisonTable.GroupHeading>
|
|
70
|
+
<FeatureComparisonTable.Row>
|
|
71
|
+
<FeatureComparisonTable.RowHeading>Codespaces</FeatureComparisonTable.RowHeading>
|
|
72
|
+
<FeatureComparisonTable.RowDescription>
|
|
73
|
+
Develop in <strong>the cloud</strong>. <InlineLink href="#codespaces">Learn more</InlineLink>
|
|
74
|
+
</FeatureComparisonTable.RowDescription>
|
|
75
|
+
<FeatureComparisonTable.Cell variant="included" />
|
|
76
|
+
<FeatureComparisonTable.Cell variant="included" />
|
|
77
|
+
</FeatureComparisonTable.Row>
|
|
78
|
+
</FeatureComparisonTable.Group>
|
|
79
|
+
</FeatureComparisonTable>
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Component props
|
|
83
|
+
|
|
84
|
+
### FeatureComparisonTable `Required`
|
|
85
|
+
|
|
86
|
+
| Name | Type | Default | required | Description |
|
|
87
|
+
| :--------- | :------------------------------------------------------------------------------------------ | :-----: | :------: | :------------------------------------- |
|
|
88
|
+
| `children` | `FeatureComparisonTable.Heading, FeatureComparisonTable.Item, FeatureComparisonTable.Group` | | `true` | Table title, plans, and feature groups |
|
|
89
|
+
|
|
90
|
+
### FeatureComparisonTable.Item `Required`
|
|
91
|
+
|
|
92
|
+
One item per pricing plan to be displayed. Supports two to four plans.
|
|
93
|
+
|
|
94
|
+
| Name | Type | Default | required | Description |
|
|
95
|
+
| :--------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :-----: | :------: | :----------- |
|
|
96
|
+
| `children` | `FeatureComparisonTable.Label, FeatureComparisonTable.ItemHeading, FeatureComparisonTable.Description, FeatureComparisonTable.Price, FeatureComparisonTable.PrimaryAction, FeatureComparisonTable.SecondaryAction` | | `true` | Plan content |
|
|
97
|
+
|
|
98
|
+
### FeatureComparisonTable.Label
|
|
99
|
+
|
|
100
|
+
| Name | Type | Default | required | Description |
|
|
101
|
+
| :--------- | :---------- | :-----: | :------: | :--------------------------------------------------------------------------- |
|
|
102
|
+
| `children` | `ReactNode` | | `true` | Label text, such as "Recommended". Adding a label highlights the plan column |
|
|
103
|
+
|
|
104
|
+
### FeatureComparisonTable.Heading `Required`
|
|
105
|
+
|
|
106
|
+
| Name | Type | Default | required | Description |
|
|
107
|
+
| :--------- | :------------ | :-----: | :------: | :------------------------------------------- |
|
|
108
|
+
| `as` | `HeadingTags` | `h2` | `false` | Heading level for the table title |
|
|
109
|
+
| `id` | `string` | | `false` | Anchor target and accessible label reference |
|
|
110
|
+
| `children` | `ReactNode` | | `true` | Table title |
|
|
111
|
+
|
|
112
|
+
### FeatureComparisonTable.ItemHeading `Required`
|
|
113
|
+
|
|
114
|
+
Plan name, shown alongside feature values on smaller screens.
|
|
115
|
+
|
|
116
|
+
| Name | Type | Default | required | Description |
|
|
117
|
+
| :--------- | :------------ | :-----: | :------: | :--------------------------------- |
|
|
118
|
+
| `as` | `HeadingTags` | `h3` | `false` | Heading level for the plan summary |
|
|
119
|
+
| `children` | `ReactNode` | | `true` | Plan name |
|
|
120
|
+
|
|
121
|
+
### FeatureComparisonTable.Description
|
|
122
|
+
|
|
123
|
+
| Name | Type | Default | required | Description |
|
|
124
|
+
| :--------- | :---------- | :-----: | :------: | :--------------- |
|
|
125
|
+
| `children` | `ReactNode` | | `true` | Plan description |
|
|
126
|
+
|
|
127
|
+
### FeatureComparisonTable.Price
|
|
128
|
+
|
|
129
|
+
| Name | Type | Default | required | Description |
|
|
130
|
+
| :--------- | :---------- | :-----: | :------: | :--------------------------------- |
|
|
131
|
+
| `children` | `ReactNode` | | `true` | Price text, such as "$4 per month" |
|
|
132
|
+
|
|
133
|
+
### FeatureComparisonTable.PrimaryAction and FeatureComparisonTable.SecondaryAction
|
|
134
|
+
|
|
135
|
+
| Name | Type | Default | required | Description |
|
|
136
|
+
| :--------- | :---------------- | :-----: | :------: | :--------------------------------------- |
|
|
137
|
+
| `as` | `'a' \| 'button'` | | `true` | Link or button element |
|
|
138
|
+
| `children` | `ReactNode` | | `true` | Action label |
|
|
139
|
+
| `href` | `string` | | `false` | Link destination. Required when `as="a"` |
|
|
140
|
+
|
|
141
|
+
### FeatureComparisonTable.Group `Required`
|
|
142
|
+
|
|
143
|
+
| Name | Type | Default | required | Description |
|
|
144
|
+
| :--------- | :---------------------------------------------------------------------- | :------------------------------------------: | :------: | :------------------------------------------------------- |
|
|
145
|
+
| `children` | `FeatureComparisonTable.GroupHeading, FeatureComparisonTable.Row` | | `true` | Group title and feature rows |
|
|
146
|
+
| `expanded` | `'boolean' \| '{narrow: boolean \| regular: boolean \| wide: boolean}'` | `{narrow: false, regular: true, wide: true}` | `false` | Initial expanded state, optionally set per viewport size |
|
|
147
|
+
|
|
148
|
+
### FeatureComparisonTable.GroupHeading `Required`
|
|
149
|
+
|
|
150
|
+
| Name | Type | Default | required | Description |
|
|
151
|
+
| :--------- | :------------ | :-----: | :------: | :---------------------------------- |
|
|
152
|
+
| `as` | `HeadingTags` | `h3` | `false` | Heading level |
|
|
153
|
+
| `id` | `string` | | `false` | Anchor target for the group heading |
|
|
154
|
+
| `children` | `ReactNode` | | `true` | Group title |
|
|
155
|
+
|
|
156
|
+
### FeatureComparisonTable.Row `Required`
|
|
157
|
+
|
|
158
|
+
| Name | Type | Default | required | Description |
|
|
159
|
+
| :--------- | :------------------------------------------------------------------------------------------------------ | :-----: | :------: | :-------------------------------------------------- |
|
|
160
|
+
| `children` | `FeatureComparisonTable.RowHeading, FeatureComparisonTable.RowDescription, FeatureComparisonTable.Cell` | | `true` | Feature name, optional description, and plan values |
|
|
161
|
+
|
|
162
|
+
### FeatureComparisonTable.RowHeading `Required`
|
|
163
|
+
|
|
164
|
+
| Name | Type | Default | required | Description |
|
|
165
|
+
| :--------- | :---------- | :-----: | :------: | :----------- |
|
|
166
|
+
| `children` | `ReactNode` | | `true` | Feature name |
|
|
167
|
+
|
|
168
|
+
### FeatureComparisonTable.RowDescription
|
|
169
|
+
|
|
170
|
+
| Name | Type | Default | required | Description |
|
|
171
|
+
| :--------- | :---------- | :-----: | :------: | :------------------ |
|
|
172
|
+
| `children` | `ReactNode` | | `true` | Feature description |
|
|
173
|
+
|
|
174
|
+
### FeatureComparisonTable.Cell `Required`
|
|
175
|
+
|
|
176
|
+
Add one cell per plan, in the same order as the items.
|
|
177
|
+
|
|
178
|
+
| Name | Type | Default | required | Description |
|
|
179
|
+
| :----------------- | :-------------------------------------------------------- | :-----: | :------: | :------------------------------------------------------------------------------------------- |
|
|
180
|
+
| `children` | `ReactNode` | | `false` | Feature value |
|
|
181
|
+
| `variant` | `'included' \| 'unavailable' \| 'unlimited' \| 'refresh'` | | `false` | Included, unavailable, unlimited, or periodically renewed |
|
|
182
|
+
| `variantAriaLabel` | `string` | | `false` | Accessible icon label. Use to translate "Included", "Unavailable", "Unlimited", or "Refresh" |
|
|
@@ -45,6 +45,37 @@ import {SubNav} from '@primer/react-brand'
|
|
|
45
45
|
</div>
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
+
### Localized menu controls
|
|
49
|
+
|
|
50
|
+
Internal `SubNav` labels such as the "More" link are rendered in `en` by default. Use `menuLabels` to customize these to different locales.
|
|
51
|
+
|
|
52
|
+
```jsx
|
|
53
|
+
<div style={{position: 'relative', height: 360, width: '100%'}}>
|
|
54
|
+
<SubNav
|
|
55
|
+
menuLabels={{
|
|
56
|
+
menuLabel: 'Menú de navegación',
|
|
57
|
+
closeLabel: 'Cerrar menú de navegación',
|
|
58
|
+
activeLabel: 'Menú de navegación. Página actual:',
|
|
59
|
+
closeActiveLabel: 'Cerrar menú de navegación. Página actual:',
|
|
60
|
+
overflowMenuLabel: 'Más',
|
|
61
|
+
}}
|
|
62
|
+
>
|
|
63
|
+
<SubNav.Heading href="#">AI</SubNav.Heading>
|
|
64
|
+
<SubNav.SubHeading href="#">GitHub Copilot</SubNav.SubHeading>
|
|
65
|
+
<SubNav.Link href="#">Aplicación de escritorio</SubNav.Link>
|
|
66
|
+
<SubNav.Link href="#" aria-current="page">
|
|
67
|
+
Copilot en VS Code
|
|
68
|
+
</SubNav.Link>
|
|
69
|
+
<SubNav.Link href="#">Agentes en GitHub</SubNav.Link>
|
|
70
|
+
<SubNav.Link href="#">Copilot CLI</SubNav.Link>
|
|
71
|
+
<SubNav.Link href="#">Revisión de código de Copilot</SubNav.Link>
|
|
72
|
+
<SubNav.Link href="#">Para empresas</SubNav.Link>
|
|
73
|
+
<SubNav.Link href="#">Tutoriales</SubNav.Link>
|
|
74
|
+
<SubNav.Link href="#">Planes y precios</SubNav.Link>
|
|
75
|
+
</SubNav>
|
|
76
|
+
</div>
|
|
77
|
+
```
|
|
78
|
+
|
|
48
79
|
### Optional CTA
|
|
49
80
|
|
|
50
81
|
```jsx
|
|
@@ -72,7 +103,7 @@ Submenus appear as a dropdown by default.
|
|
|
72
103
|
<SubNav.Heading href="#">Features</SubNav.Heading>
|
|
73
104
|
<SubNav.Link href="#" aria-current="page">
|
|
74
105
|
Actions
|
|
75
|
-
<SubNav.SubMenu>
|
|
106
|
+
<SubNav.SubMenu aria-label="Actions submenu">
|
|
76
107
|
<SubNav.Link href="#">Actions feature one</SubNav.Link>
|
|
77
108
|
<SubNav.Link href="#">Actions feature two</SubNav.Link>
|
|
78
109
|
<SubNav.Link href="#">Actions feature three</SubNav.Link>
|
|
@@ -116,9 +147,22 @@ Ensure that the text of each `SubNav.Link` within the anchor-based submenu fits
|
|
|
116
147
|
|
|
117
148
|
### SubNav `Required`
|
|
118
149
|
|
|
119
|
-
| name
|
|
120
|
-
|
|
|
121
|
-
| `fullWidth`
|
|
150
|
+
| name | type | default | required | description |
|
|
151
|
+
| ------------ | --------------------------- | -------------- | -------- | ----------------------------------------------------------------------------- |
|
|
152
|
+
| `fullWidth` | `boolean` | `false` | `false` | Allows the SubNav to be used at full width, removing default internal padding |
|
|
153
|
+
| `menuLabels` | `Partial<SubNavMenuLabels>` | English labels | `false` | Customizes the menu's accessible labels |
|
|
154
|
+
|
|
155
|
+
`SubNavMenuLabels` is exported from `@primer/react-brand`.
|
|
156
|
+
|
|
157
|
+
#### Menu labels
|
|
158
|
+
|
|
159
|
+
| Field | Type | English default | Purpose |
|
|
160
|
+
| ------------------- | -------- | -------------------------------------- | ----------------------------------------------------------------------------- |
|
|
161
|
+
| `menuLabel` | `string` | `Navigation menu` | Accessible label while the narrow menu is closed |
|
|
162
|
+
| `closeLabel` | `string` | `Close navigation menu` | Accessible label while the narrow menu is open |
|
|
163
|
+
| `activeLabel` | `string` | `Navigation menu. Current page:` | Complete prefix while the narrow menu is closed and a current page is present |
|
|
164
|
+
| `closeActiveLabel` | `string` | `Close navigation menu. Current page:` | Complete prefix while the narrow menu is open and a current page is present |
|
|
165
|
+
| `overflowMenuLabel` | `string` | `More` | Visible and accessible label for the desktop overflow menu |
|
|
122
166
|
|
|
123
167
|
### SubNav.Heading `Required`
|
|
124
168
|
|
|
@@ -150,7 +194,8 @@ Ensure that the text of each `SubNav.Link` within the anchor-based submenu fits
|
|
|
150
194
|
|
|
151
195
|
### SubNav.SubMenu
|
|
152
196
|
|
|
153
|
-
| name
|
|
154
|
-
|
|
|
155
|
-
| `children`
|
|
156
|
-
| `variant`
|
|
197
|
+
| name | type | default | required | description |
|
|
198
|
+
| ------------ | ----------------------- | ---------------------------- | -------- | ----------------------------------------------------------------------------------------------------------------- |
|
|
199
|
+
| `children` | `SubNav.Link` | | `false` | Container for submenu links |
|
|
200
|
+
| `variant` | `SubNavSubMenuVariants` | `'default'` | `false` | Alternative presentation for submenus |
|
|
201
|
+
| `aria-label` | `string` | `'Sub navigation'` (content) | `false` | Complete accessible name for the submenu toggle and content; names the navigation landmark for the anchor variant |
|
package/docs/components/index.md
CHANGED
|
@@ -19,6 +19,7 @@ description: Primer Brand UI components
|
|
|
19
19
|
- [CTA form](CTAForm/react.md): Use the CTA form component to create a form that is used to collect minimal information from users.
|
|
20
20
|
- [Eyebrow banner](EyebrowBanner/index.md): Use the eyebrow banner to highlight important information at the top of a page.
|
|
21
21
|
- [FAQ](FAQ/react.md): Use the FAQ component to display content in a Q&A format.
|
|
22
|
+
- [Feature comparison table](FeatureComparisonTable/index.md): Use the feature comparison table to compare features across pricing plans.
|
|
22
23
|
- [Footnotes](Footnotes/react.md): Use footnotes to display contextual information and cite sources in the page content.
|
|
23
24
|
- [Hero](Hero/react.md): Use the hero component to render a full-width banner at the top of a page.
|
|
24
25
|
- [Icon](Icon/index.md): Use the icon component to display Octicons with an optional background
|
package/docs/index.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
# Primer Brand docs (v0.
|
|
1
|
+
# Primer Brand docs (v0.79.0-rc.6f0687c1)
|
|
2
2
|
|
|
3
|
-
These docs are bundled with `@primer/react-brand@0.
|
|
3
|
+
These docs are bundled with `@primer/react-brand@0.79.0-rc.6f0687c1` and match your installed version.
|
|
4
4
|
|
|
5
5
|
New here? Start with [Getting started](getting-started/index.md) for installation, global
|
|
6
6
|
stylesheet and font setup. Component directories are named after their import (e.g.
|
|
@@ -53,6 +53,7 @@ stylesheet and font setup. Component directories are named after their import (e
|
|
|
53
53
|
- [CTA form](components/CTAForm/react.md): Use the CTA form component to create a form that is used to collect minimal information from users.
|
|
54
54
|
- [Eyebrow banner](components/EyebrowBanner/index.md): Use the eyebrow banner to highlight important information at the top of a page.
|
|
55
55
|
- [FAQ](components/FAQ/react.md): Use the FAQ component to display content in a Q&A format.
|
|
56
|
+
- [Feature comparison table](components/FeatureComparisonTable/index.md): Use the feature comparison table to compare features across pricing plans.
|
|
56
57
|
- [Footnotes](components/Footnotes/react.md): Use footnotes to display contextual information and cite sources in the page content.
|
|
57
58
|
- [Hero](components/Hero/react.md): Use the hero component to render a full-width banner at the top of a page.
|
|
58
59
|
- [Icon](components/Icon/index.md): Use the icon component to display Octicons with an optional background
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import React, { type PropsWithChildren } from 'react';
|
|
2
|
+
import type { BaseProps } from '../component-helpers';
|
|
3
|
+
/**
|
|
4
|
+
* Design tokens
|
|
5
|
+
*/
|
|
6
|
+
import '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/base.css';
|
|
7
|
+
import '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/colors-with-modes.css';
|
|
8
|
+
export type FeatureComparisonTableProps = PropsWithChildren<BaseProps<HTMLDivElement> & Omit<React.HTMLAttributes<HTMLDivElement>, 'aria-label' | 'aria-labelledby'> & {
|
|
9
|
+
'data-testid'?: string;
|
|
10
|
+
}>;
|
|
11
|
+
/**
|
|
12
|
+
* Feature comparison tables compare plan metadata and feature availability across two to four plans.
|
|
13
|
+
*/
|
|
14
|
+
export declare const FeatureComparisonTable: React.ForwardRefExoticComponent<Omit<FeatureComparisonTableProps, "ref"> & React.RefAttributes<HTMLDivElement>> & {
|
|
15
|
+
Item: ({ children, className }: import("./sub-components").FeatureComparisonTableItemProps) => React.JSX.Element;
|
|
16
|
+
Label: (props: import("./sub-components").FeatureComparisonTableLabelProps) => React.JSX.Element;
|
|
17
|
+
Heading: (props: import("./sub-components").FeatureComparisonTableHeadingProps) => React.JSX.Element;
|
|
18
|
+
ItemHeading: (props: import("./sub-components").FeatureComparisonTableItemHeadingProps) => React.JSX.Element;
|
|
19
|
+
Description: (props: import("./sub-components").FeatureComparisonTableDescriptionProps) => React.JSX.Element;
|
|
20
|
+
Price: (props: import("./sub-components").FeatureComparisonTablePriceProps) => React.JSX.Element;
|
|
21
|
+
PrimaryAction: (props: import("./sub-components").FeatureComparisonTableActionProps) => React.JSX.Element;
|
|
22
|
+
SecondaryAction: (props: import("./sub-components").FeatureComparisonTableActionProps) => React.JSX.Element;
|
|
23
|
+
Group: ({ children, className, expanded }: import("./sub-components").FeatureComparisonTableGroupProps) => React.JSX.Element;
|
|
24
|
+
GroupHeading: ({ children, as, size, ...rest }: import("./sub-components").FeatureComparisonTableGroupHeadingProps) => React.JSX.Element;
|
|
25
|
+
Row: ({ children, className }: import("./sub-components").FeatureComparisonTableRowProps) => React.JSX.Element;
|
|
26
|
+
RowHeading: (props: import("./sub-components").FeatureComparisonTableRowHeadingProps) => React.JSX.Element;
|
|
27
|
+
RowDescription: (props: import("./sub-components").FeatureComparisonTableRowDescriptionProps) => React.JSX.Element;
|
|
28
|
+
Cell: (props: import("./sub-components").FeatureComparisonTableCellProps) => React.JSX.Element;
|
|
29
|
+
testIds: {
|
|
30
|
+
root: string;
|
|
31
|
+
heading: string;
|
|
32
|
+
narrow: string;
|
|
33
|
+
table: string;
|
|
34
|
+
item: string;
|
|
35
|
+
label: string;
|
|
36
|
+
price: string;
|
|
37
|
+
group: string;
|
|
38
|
+
row: string;
|
|
39
|
+
rowHeading: string;
|
|
40
|
+
cell: string;
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
export type { FeatureComparisonTableHeadingProps, FeatureComparisonTableItemHeadingProps, FeatureComparisonTableLabelProps, FeatureComparisonTableDescriptionProps, FeatureComparisonTablePriceProps, FeatureComparisonTableActionProps, FeatureComparisonTableItemProps, FeatureComparisonTableRowHeadingProps, FeatureComparisonTableRowDescriptionProps, FeatureComparisonTableCellProps, FeatureComparisonTableRowProps, FeatureComparisonTableGroupHeadingProps, FeatureComparisonTableGroupProps, } from './sub-components';
|
|
44
|
+
//# sourceMappingURL=FeatureComparisonTable.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureComparisonTable.d.ts","sourceRoot":"","sources":["../../src/FeatureComparisonTable/FeatureComparisonTable.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,EAAa,KAAK,iBAAiB,EAA8B,MAAM,OAAO,CAAA;AAE5F,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,sBAAsB,CAAA;AAyBnD;;GAEG;AACH,OAAO,+GAA+G,CAAA;AACtH,OAAO,4HAA4H,CAAA;AAQnI,MAAM,MAAM,2BAA2B,GAAG,iBAAiB,CACzD,SAAS,CAAC,cAAc,CAAC,GACvB,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,cAAc,CAAC,EAAE,YAAY,GAAG,iBAAiB,CAAC,GAAG;IAC7E,aAAa,CAAC,EAAE,MAAM,CAAA;CACvB,CACJ,CAAA;AAqND;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAgBjC,CAAA;AAEF,YAAY,EACV,kCAAkC,EAClC,sCAAsC,EACtC,gCAAgC,EAChC,sCAAsC,EACtC,gCAAgC,EAChC,iCAAiC,EACjC,+BAA+B,EAC/B,qCAAqC,EACrC,yCAAyC,EACzC,+BAA+B,EAC/B,8BAA8B,EAC9B,uCAAuC,EACvC,gCAAgC,GACjC,MAAM,kBAAkB,CAAA"}
|
|
@@ -0,0 +1,162 @@
|
|
|
1
|
+
import { clsx as e } from "../node_modules/clsx/dist/clsx.js";
|
|
2
|
+
import { useId as t } from "../hooks/useId.js";
|
|
3
|
+
import { useAnimation as n } from "../animation/useAnimation.js";
|
|
4
|
+
import r from "../hooks/useIsomorphicLayoutEffect.js";
|
|
5
|
+
import i from "../component-helpers/shared.module.js";
|
|
6
|
+
import { useWindowSize as a } from "../hooks/useWindowSize.js";
|
|
7
|
+
import { TableContext as o, testIds as s } from "./FeatureComparisonTableContext.js";
|
|
8
|
+
import c from "./FeatureComparisonTable.module.js";
|
|
9
|
+
import { FeatureComparisonTableLabel as l } from "./sub-components/FeatureComparisonTableLabel.js";
|
|
10
|
+
import { getChildrenOfType as u, hasItemLabel as d } from "./FeatureComparisonTableHelpers.js";
|
|
11
|
+
import { useFeatureComparisonTableStickyHeaders as f } from "./useFeatureComparisonTableStickyHeaders.js";
|
|
12
|
+
import { FeatureComparisonTableHeading as p } from "./sub-components/FeatureComparisonTableHeading.js";
|
|
13
|
+
import { FeatureComparisonTableItemHeading as m } from "./sub-components/FeatureComparisonTableItemHeading.js";
|
|
14
|
+
import { FeatureComparisonTableDescription as h } from "./sub-components/FeatureComparisonTableDescription.js";
|
|
15
|
+
import { FeatureComparisonTablePrice as g } from "./sub-components/FeatureComparisonTablePrice.js";
|
|
16
|
+
import { FeatureComparisonTablePrimaryAction as _ } from "./sub-components/FeatureComparisonTablePrimaryAction.js";
|
|
17
|
+
import { FeatureComparisonTableSecondaryAction as v } from "./sub-components/FeatureComparisonTableSecondaryAction.js";
|
|
18
|
+
import { FeatureComparisonTableItem as y } from "./sub-components/FeatureComparisonTableItem.js";
|
|
19
|
+
import { FeatureComparisonTableRowHeading as b } from "./sub-components/FeatureComparisonTableRowHeading.js";
|
|
20
|
+
import { FeatureComparisonTableRowDescription as x } from "./sub-components/FeatureComparisonTableRowDescription.js";
|
|
21
|
+
import { FeatureComparisonTableCell as S } from "./sub-components/FeatureComparisonTableCell.js";
|
|
22
|
+
import { FeatureComparisonTableRow as C } from "./sub-components/FeatureComparisonTableRow.js";
|
|
23
|
+
import { FeatureComparisonTableGroupHeading as w } from "./sub-components/FeatureComparisonTableGroupHeading.js";
|
|
24
|
+
import { FeatureComparisonTableGroup as T } from "./sub-components/FeatureComparisonTableGroup.js";
|
|
25
|
+
import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/colors-with-modes-Dw8AMSYp.css';import '../packages/design-tokens/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/base-44NysoUh.css';/* empty css */
|
|
26
|
+
/* empty css */
|
|
27
|
+
import E, { forwardRef as D, useEffect as O, useRef as k, useState as A } from "react";
|
|
28
|
+
import { jsx as j, jsxs as M } from "react/jsx-runtime";
|
|
29
|
+
//#region src/FeatureComparisonTable/FeatureComparisonTable.tsx
|
|
30
|
+
var N = D(({ animate: l, children: m, className: h, onBlur: g, onFocus: _, style: v, "data-testid": b, ...x }, S) => {
|
|
31
|
+
let C = t(), { classes: w, styles: D } = n(l), { width: N, isMedium: P, isXLarge: F } = a(), [I, L] = A("narrow"), R = k(null), z = k({}), B = k({}), V = k(I), H = k(null), U = k(void 0), W = E.Children.toArray(m), G = u(W, p).at(-1), K = u(W, y), q = K.slice(0, 4), J = u(W, T), Y = q.some(d), X = f(R, I === "wide", q.length > 0);
|
|
32
|
+
O(() => {
|
|
33
|
+
process.env.NODE_ENV !== "production" && K.length > 4 && console.warn(`FeatureComparisonTable: supports at most 4 Item children, but received ${K.length}. Extra items are ignored.`);
|
|
34
|
+
}, [K.length]), O(() => {
|
|
35
|
+
let e = F ? "wide" : P ? "regular" : "narrow", t = V.current;
|
|
36
|
+
if (t === "wide" != (e === "wide")) {
|
|
37
|
+
let e = document.activeElement === document.body ? H.current : document.activeElement, n = t === "wide" ? B.current : z.current;
|
|
38
|
+
U.current = Object.entries(n).find(([, t]) => t !== null && t === e)?.[0];
|
|
39
|
+
}
|
|
40
|
+
H.current = null, L(e);
|
|
41
|
+
}, [
|
|
42
|
+
P,
|
|
43
|
+
F,
|
|
44
|
+
N
|
|
45
|
+
]), r(() => {
|
|
46
|
+
let e = V.current;
|
|
47
|
+
if (V.current = I, H.current = null, e === "wide" == (I === "wide")) return;
|
|
48
|
+
let t = I === "wide" ? B.current : z.current;
|
|
49
|
+
U.current &&= (t[U.current]?.focus(), void 0);
|
|
50
|
+
}, [I]);
|
|
51
|
+
let Z = (e) => {
|
|
52
|
+
let t = R.current, n = e.target;
|
|
53
|
+
if (X && I === "wide" && t?.contains(n) && !n.closest("thead") && n.closest("tbody")) {
|
|
54
|
+
let e = Array.from(t.querySelectorAll("thead th")).reduce((e, t) => {
|
|
55
|
+
let n = t.getBoundingClientRect();
|
|
56
|
+
return n.bottom > 0 && n.top < window.innerHeight ? Math.max(e, n.bottom) : e;
|
|
57
|
+
}, 0), r = n.getBoundingClientRect(), i = window.getComputedStyle(n), a = Math.max(0, (Number.parseFloat(i.outlineWidth) || 0) + (Number.parseFloat(i.outlineOffset) || 0));
|
|
58
|
+
e > 0 && r.bottom > 0 && r.top - a < e && window.scrollBy({
|
|
59
|
+
top: r.top - e - a,
|
|
60
|
+
behavior: "instant"
|
|
61
|
+
});
|
|
62
|
+
}
|
|
63
|
+
_?.(e);
|
|
64
|
+
};
|
|
65
|
+
if (q.length === 0) return null;
|
|
66
|
+
!G && process.env.NODE_ENV !== "production" && console.warn("FeatureComparisonTable: a root FeatureComparisonTable.Heading child is required.");
|
|
67
|
+
let Q = {
|
|
68
|
+
instanceId: C,
|
|
69
|
+
breakpoint: I,
|
|
70
|
+
items: q,
|
|
71
|
+
itemIndex: 0,
|
|
72
|
+
groupIndex: 0,
|
|
73
|
+
groupIdentity: "",
|
|
74
|
+
narrowGroupControlsRef: z,
|
|
75
|
+
tableGroupControlsRef: B
|
|
76
|
+
}, $ = J.map((e, t) => /* @__PURE__ */ j(o.Provider, {
|
|
77
|
+
value: {
|
|
78
|
+
...Q,
|
|
79
|
+
groupIndex: t,
|
|
80
|
+
groupIdentity: String(e.key)
|
|
81
|
+
},
|
|
82
|
+
children: e
|
|
83
|
+
}, e.key));
|
|
84
|
+
return /* @__PURE__ */ j(o.Provider, {
|
|
85
|
+
value: Q,
|
|
86
|
+
children: /* @__PURE__ */ j("div", {
|
|
87
|
+
className: e(c.FeatureComparisonTable, i.gridline, q.length > 1 && c[`FeatureComparisonTable--items${q.length}`], X && c["FeatureComparisonTable--stickyHeaders"], w, h),
|
|
88
|
+
"data-testid": b || s.root,
|
|
89
|
+
ref: S,
|
|
90
|
+
onBlur: (e) => {
|
|
91
|
+
(window.innerWidth !== N || !!F != (I === "wide")) && (H.current = e.target), g?.(e);
|
|
92
|
+
},
|
|
93
|
+
onFocus: Z,
|
|
94
|
+
style: {
|
|
95
|
+
...D,
|
|
96
|
+
...v
|
|
97
|
+
},
|
|
98
|
+
...x,
|
|
99
|
+
children: I === "wide" ? /* @__PURE__ */ M("table", {
|
|
100
|
+
"aria-labelledby": G ? G.props.id || `${C}-heading` : void 0,
|
|
101
|
+
className: c.FeatureComparisonTable__table,
|
|
102
|
+
"data-testid": s.table,
|
|
103
|
+
ref: R,
|
|
104
|
+
children: [
|
|
105
|
+
/* @__PURE__ */ M("colgroup", { children: [/* @__PURE__ */ j("col", { className: c.FeatureComparisonTable__featureColumn }), q.map((e) => /* @__PURE__ */ j("col", {}, e.key))] }),
|
|
106
|
+
/* @__PURE__ */ j("thead", {
|
|
107
|
+
className: c.FeatureComparisonTable__head,
|
|
108
|
+
children: /* @__PURE__ */ M("tr", {
|
|
109
|
+
className: e(J.length > 0 && i.gridline, c.FeatureComparisonTable__headingGrid, Y && c["FeatureComparisonTable__headingGrid--hasLabel"]),
|
|
110
|
+
children: [/* @__PURE__ */ j("th", {
|
|
111
|
+
className: e(c.FeatureComparisonTable__headerCell, Y && c["FeatureComparisonTable__headerCell--hasLabel"]),
|
|
112
|
+
scope: "col",
|
|
113
|
+
children: G ? E.cloneElement(G, { className: e(G.props.className, c.FeatureComparisonTable__tableHeading, Y && c["FeatureComparisonTable__tableHeading--hasLabel"]) }) : /* @__PURE__ */ j("span", {
|
|
114
|
+
className: "visually-hidden",
|
|
115
|
+
children: "Feature"
|
|
116
|
+
})
|
|
117
|
+
}), q.map((t, n) => /* @__PURE__ */ j("th", {
|
|
118
|
+
className: e(c.FeatureComparisonTable__headerCell, Y && c["FeatureComparisonTable__headerCell--hasLabel"], d(t) && c.FeatureComparisonTable__highlightedColumn),
|
|
119
|
+
scope: "col",
|
|
120
|
+
children: /* @__PURE__ */ j(o.Provider, {
|
|
121
|
+
value: {
|
|
122
|
+
...Q,
|
|
123
|
+
itemIndex: n + 1
|
|
124
|
+
},
|
|
125
|
+
children: t
|
|
126
|
+
})
|
|
127
|
+
}, t.key))]
|
|
128
|
+
})
|
|
129
|
+
}),
|
|
130
|
+
$
|
|
131
|
+
]
|
|
132
|
+
}) : /* @__PURE__ */ M("div", {
|
|
133
|
+
className: c.FeatureComparisonTable__narrow,
|
|
134
|
+
"data-testid": s.narrow,
|
|
135
|
+
children: [G ? /* @__PURE__ */ j("div", {
|
|
136
|
+
className: e(c.FeatureComparisonTable__narrowHeading, i.gridline),
|
|
137
|
+
children: G
|
|
138
|
+
}) : null, $]
|
|
139
|
+
})
|
|
140
|
+
})
|
|
141
|
+
});
|
|
142
|
+
}), P = Object.assign(N, {
|
|
143
|
+
Item: y,
|
|
144
|
+
Label: l,
|
|
145
|
+
Heading: p,
|
|
146
|
+
ItemHeading: m,
|
|
147
|
+
Description: h,
|
|
148
|
+
Price: g,
|
|
149
|
+
PrimaryAction: _,
|
|
150
|
+
SecondaryAction: v,
|
|
151
|
+
Group: T,
|
|
152
|
+
GroupHeading: w,
|
|
153
|
+
Row: C,
|
|
154
|
+
RowHeading: b,
|
|
155
|
+
RowDescription: x,
|
|
156
|
+
Cell: S,
|
|
157
|
+
testIds: s
|
|
158
|
+
});
|
|
159
|
+
//#endregion
|
|
160
|
+
export { P as FeatureComparisonTable };
|
|
161
|
+
|
|
162
|
+
//# sourceMappingURL=FeatureComparisonTable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"FeatureComparisonTable.js","names":[],"sources":["../../src/FeatureComparisonTable/FeatureComparisonTable.tsx"],"sourcesContent":["import React, {forwardRef, type PropsWithChildren, useEffect, useRef, useState} from 'react'\nimport {clsx} from 'clsx'\nimport type {BaseProps} from '../component-helpers'\nimport {useAnimation} from '../animation'\nimport {useId} from '../hooks/useId'\nimport {useWindowSize} from '../hooks/useWindowSize'\nimport useIsomorphicLayoutEffect from '../hooks/useIsomorphicLayoutEffect'\nimport {type BreakpointCategory, type TableContextValue, TableContext, testIds} from './FeatureComparisonTableContext'\nimport {getChildrenOfType, hasItemLabel} from './FeatureComparisonTableHelpers'\nimport {useFeatureComparisonTableStickyHeaders} from './useFeatureComparisonTableStickyHeaders'\nimport {\n FeatureComparisonTableHeading,\n FeatureComparisonTableItem,\n FeatureComparisonTableGroup,\n FeatureComparisonTableLabel,\n FeatureComparisonTableItemHeading,\n FeatureComparisonTableDescription,\n FeatureComparisonTablePrice,\n FeatureComparisonTablePrimaryAction,\n FeatureComparisonTableSecondaryAction,\n FeatureComparisonTableGroupHeading,\n FeatureComparisonTableRow,\n FeatureComparisonTableRowHeading,\n FeatureComparisonTableRowDescription,\n FeatureComparisonTableCell,\n} from './sub-components'\n\n/**\n * Design tokens\n */\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/base.css'\nimport '@primer/brand-primitives/lib/design-tokens/css/tokens/functional/components/feature-comparison-table/colors-with-modes.css'\n\n/**\n * Main stylesheet (as a CSS Module)\n */\nimport styles from './FeatureComparisonTable.module.css'\nimport gridlineStyles from '../component-helpers/shared.module.css'\n\nexport type FeatureComparisonTableProps = PropsWithChildren<\n BaseProps<HTMLDivElement> &\n Omit<React.HTMLAttributes<HTMLDivElement>, 'aria-label' | 'aria-labelledby'> & {\n 'data-testid'?: string\n }\n>\n\nconst FeatureComparisonTableRoot = forwardRef<HTMLDivElement, FeatureComparisonTableProps>(\n ({animate, children, className, onBlur, onFocus, style, 'data-testid': testId, ...rest}, ref) => {\n const instanceId = useId()\n const {classes: animationClasses, styles: animationInlineStyles} = useAnimation(animate)\n const {width, isMedium: isRegular, isXLarge: isWide} = useWindowSize()\n const [breakpoint, setBreakpoint] = useState<BreakpointCategory>('narrow')\n const tableRef = useRef<HTMLTableElement>(null)\n const narrowGroupControlsRef = useRef<Record<string, HTMLElement | null>>({})\n const tableGroupControlsRef = useRef<Record<string, HTMLButtonElement | null>>({})\n const previousBreakpointRef = useRef(breakpoint)\n const blurredElementRef = useRef<HTMLElement | null>(null)\n const focusedGroupIdentityRef = useRef<string | undefined>(undefined)\n const rootChildren = React.Children.toArray(children)\n const heading = getChildrenOfType(rootChildren, FeatureComparisonTableHeading).at(-1)\n const allItems = getChildrenOfType(rootChildren, FeatureComparisonTableItem)\n const items = allItems.slice(0, 4)\n const groups = getChildrenOfType(rootChildren, FeatureComparisonTableGroup)\n const hasLabels = items.some(hasItemLabel)\n const hasStickyHeaders = useFeatureComparisonTableStickyHeaders(tableRef, breakpoint === 'wide', items.length > 0)\n\n useEffect(() => {\n if (process.env.NODE_ENV !== 'production' && allItems.length > 4) {\n // eslint-disable-next-line no-console\n console.warn(\n `FeatureComparisonTable: supports at most 4 Item children, but received ${allItems.length}. Extra items are ignored.`,\n )\n }\n }, [allItems.length])\n\n useEffect(() => {\n const nextBreakpoint = isWide ? 'wide' : isRegular ? 'regular' : 'narrow'\n const previous = previousBreakpointRef.current\n\n if ((previous === 'wide') !== (nextBreakpoint === 'wide')) {\n // Capture focus before the previous projection unmounts and clears its refs.\n const activeElement =\n document.activeElement === document.body ? blurredElementRef.current : document.activeElement\n const previousControls = previous === 'wide' ? tableGroupControlsRef.current : narrowGroupControlsRef.current\n focusedGroupIdentityRef.current = Object.entries(previousControls).find(\n ([, control]) => control !== null && control === activeElement,\n )?.[0]\n }\n blurredElementRef.current = null\n setBreakpoint(nextBreakpoint)\n }, [isRegular, isWide, width])\n\n useIsomorphicLayoutEffect(() => {\n const previous = previousBreakpointRef.current\n previousBreakpointRef.current = breakpoint\n blurredElementRef.current = null\n if ((previous === 'wide') === (breakpoint === 'wide')) return\n const nextControls = breakpoint === 'wide' ? tableGroupControlsRef.current : narrowGroupControlsRef.current\n if (focusedGroupIdentityRef.current) {\n nextControls[focusedGroupIdentityRef.current]?.focus()\n focusedGroupIdentityRef.current = undefined\n }\n }, [breakpoint])\n\n const handleFocus = (event: React.FocusEvent<HTMLDivElement>) => {\n const table = tableRef.current\n const target = event.target\n if (hasStickyHeaders && breakpoint === 'wide' && table?.contains(target) && !target.closest('thead')) {\n if (target.closest('tbody')) {\n const stickyHeaderBottom = Array.from(table.querySelectorAll<HTMLTableCellElement>('thead th')).reduce(\n (maximumBottom, header) => {\n const rect = header.getBoundingClientRect()\n const isVisible = rect.bottom > 0 && rect.top < window.innerHeight\n return isVisible ? Math.max(maximumBottom, rect.bottom) : maximumBottom\n },\n 0,\n )\n const targetRect = target.getBoundingClientRect()\n const targetStyles = window.getComputedStyle(target)\n const focusIndicatorClearance = Math.max(\n 0,\n (Number.parseFloat(targetStyles.outlineWidth) || 0) + (Number.parseFloat(targetStyles.outlineOffset) || 0),\n )\n if (\n stickyHeaderBottom > 0 &&\n targetRect.bottom > 0 &&\n targetRect.top - focusIndicatorClearance < stickyHeaderBottom\n ) {\n window.scrollBy({top: targetRect.top - stickyHeaderBottom - focusIndicatorClearance, behavior: 'instant'})\n }\n }\n }\n onFocus?.(event)\n }\n\n if (items.length === 0) return null\n if (!heading && process.env.NODE_ENV !== 'production') {\n // eslint-disable-next-line no-console\n console.warn('FeatureComparisonTable: a root FeatureComparisonTable.Heading child is required.')\n }\n\n const tableContext: TableContextValue = {\n instanceId,\n breakpoint,\n items,\n itemIndex: 0,\n groupIndex: 0,\n groupIdentity: '',\n narrowGroupControlsRef,\n tableGroupControlsRef,\n }\n const groupElements = groups.map((group, index) => (\n <TableContext.Provider\n value={{...tableContext, groupIndex: index, groupIdentity: String(group.key)}}\n key={group.key}\n >\n {group}\n </TableContext.Provider>\n ))\n\n return (\n <TableContext.Provider value={tableContext}>\n <div\n className={clsx(\n styles.FeatureComparisonTable,\n gridlineStyles.gridline,\n items.length > 1 && styles[`FeatureComparisonTable--items${items.length}`],\n hasStickyHeaders && styles['FeatureComparisonTable--stickyHeaders'],\n animationClasses,\n className,\n )}\n data-testid={testId || testIds.root}\n ref={ref}\n onBlur={event => {\n if (window.innerWidth !== width || Boolean(isWide) !== (breakpoint === 'wide'))\n blurredElementRef.current = event.target\n onBlur?.(event)\n }}\n onFocus={handleFocus}\n style={{...animationInlineStyles, ...style}}\n {...rest}\n >\n {breakpoint !== 'wide' ? (\n <div className={styles.FeatureComparisonTable__narrow} data-testid={testIds.narrow}>\n {heading ? (\n <div className={clsx(styles.FeatureComparisonTable__narrowHeading, gridlineStyles.gridline)}>\n {heading}\n </div>\n ) : null}\n {groupElements}\n </div>\n ) : (\n <table\n aria-labelledby={heading ? heading.props.id || `${instanceId}-heading` : undefined}\n className={styles.FeatureComparisonTable__table}\n data-testid={testIds.table}\n ref={tableRef}\n >\n <colgroup>\n <col className={styles.FeatureComparisonTable__featureColumn} />\n {items.map(item => (\n <col key={item.key} />\n ))}\n </colgroup>\n <thead className={styles.FeatureComparisonTable__head}>\n <tr\n className={clsx(\n groups.length > 0 && gridlineStyles.gridline,\n styles.FeatureComparisonTable__headingGrid,\n hasLabels && styles['FeatureComparisonTable__headingGrid--hasLabel'],\n )}\n >\n <th\n className={clsx(\n styles.FeatureComparisonTable__headerCell,\n hasLabels && styles['FeatureComparisonTable__headerCell--hasLabel'],\n )}\n scope=\"col\"\n >\n {heading ? (\n React.cloneElement(heading, {\n className: clsx(\n heading.props.className,\n styles.FeatureComparisonTable__tableHeading,\n hasLabels && styles['FeatureComparisonTable__tableHeading--hasLabel'],\n ),\n })\n ) : (\n <span className=\"visually-hidden\">Feature</span>\n )}\n </th>\n {items.map((item, index) => (\n <th\n className={clsx(\n styles.FeatureComparisonTable__headerCell,\n hasLabels && styles['FeatureComparisonTable__headerCell--hasLabel'],\n hasItemLabel(item) && styles.FeatureComparisonTable__highlightedColumn,\n )}\n scope=\"col\"\n key={item.key}\n >\n <TableContext.Provider value={{...tableContext, itemIndex: index + 1}}>\n {item}\n </TableContext.Provider>\n </th>\n ))}\n </tr>\n </thead>\n {groupElements}\n </table>\n )}\n </div>\n </TableContext.Provider>\n )\n },\n)\n\n/**\n * Feature comparison tables compare plan metadata and feature availability across two to four plans.\n */\nexport const FeatureComparisonTable = Object.assign(FeatureComparisonTableRoot, {\n Item: FeatureComparisonTableItem,\n Label: FeatureComparisonTableLabel,\n Heading: FeatureComparisonTableHeading,\n ItemHeading: FeatureComparisonTableItemHeading,\n Description: FeatureComparisonTableDescription,\n Price: FeatureComparisonTablePrice,\n PrimaryAction: FeatureComparisonTablePrimaryAction,\n SecondaryAction: FeatureComparisonTableSecondaryAction,\n Group: FeatureComparisonTableGroup,\n GroupHeading: FeatureComparisonTableGroupHeading,\n Row: FeatureComparisonTableRow,\n RowHeading: FeatureComparisonTableRowHeading,\n RowDescription: FeatureComparisonTableRowDescription,\n Cell: FeatureComparisonTableCell,\n testIds,\n})\n\nexport type {\n FeatureComparisonTableHeadingProps,\n FeatureComparisonTableItemHeadingProps,\n FeatureComparisonTableLabelProps,\n FeatureComparisonTableDescriptionProps,\n FeatureComparisonTablePriceProps,\n FeatureComparisonTableActionProps,\n FeatureComparisonTableItemProps,\n FeatureComparisonTableRowHeadingProps,\n FeatureComparisonTableRowDescriptionProps,\n FeatureComparisonTableCellProps,\n FeatureComparisonTableRowProps,\n FeatureComparisonTableGroupHeadingProps,\n FeatureComparisonTableGroupProps,\n} from './sub-components'\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA8CA,IAAM,IAA6B,GAChC,EAAC,YAAS,aAAU,cAAW,WAAQ,YAAS,UAAO,eAAe,GAAQ,GAAG,KAAO,MAAQ;CAC/F,IAAM,IAAa,EAAM,GACnB,EAAC,SAAS,GAAkB,QAAQ,MAAyB,EAAa,CAAO,GACjF,EAAC,UAAO,UAAU,GAAW,UAAU,MAAU,EAAc,GAC/D,CAAC,GAAY,KAAiB,EAA6B,QAAQ,GACnE,IAAW,EAAyB,IAAI,GACxC,IAAyB,EAA2C,CAAC,CAAC,GACtE,IAAwB,EAAiD,CAAC,CAAC,GAC3E,IAAwB,EAAO,CAAU,GACzC,IAAoB,EAA2B,IAAI,GACnD,IAA0B,EAA2B,KAAA,CAAS,GAC9D,IAAe,EAAM,SAAS,QAAQ,CAAQ,GAC9C,IAAU,EAAkB,GAAc,CAA6B,CAAC,CAAC,GAAG,EAAE,GAC9E,IAAW,EAAkB,GAAc,CAA0B,GACrE,IAAQ,EAAS,MAAM,GAAG,CAAC,GAC3B,IAAS,EAAkB,GAAc,CAA2B,GACpE,IAAY,EAAM,KAAK,CAAY,GACnC,IAAmB,EAAuC,GAAU,MAAe,QAAQ,EAAM,SAAS,CAAC;CA4BjH,AA1BA,QAAgB;EACd,AAAA,QAAA,IAAA,aAA6B,gBAAgB,EAAS,SAAS,KAE7D,QAAQ,KACN,0EAA0E,EAAS,OAAO,2BAC5F;CAEJ,GAAG,CAAC,EAAS,MAAM,CAAC,GAEpB,QAAgB;EACd,IAAM,IAAiB,IAAS,SAAS,IAAY,YAAY,UAC3D,IAAW,EAAsB;EAEvC,IAAK,MAAa,WAAa,MAAmB,SAAS;GAEzD,IAAM,IACJ,SAAS,kBAAkB,SAAS,OAAO,EAAkB,UAAU,SAAS,eAC5E,IAAmB,MAAa,SAAS,EAAsB,UAAU,EAAuB;GACtG,EAAwB,UAAU,OAAO,QAAQ,CAAgB,CAAC,CAAC,MAChE,GAAG,OAAa,MAAY,QAAQ,MAAY,CACnD,CAAC,GAAG;EACN;EAEA,AADA,EAAkB,UAAU,MAC5B,EAAc,CAAc;CAC9B,GAAG;EAAC;EAAW;EAAQ;CAAK,CAAC,GAE7B,QAAgC;EAC9B,IAAM,IAAW,EAAsB;EAGvC,IAFA,EAAsB,UAAU,GAChC,EAAkB,UAAU,MACvB,MAAa,WAAa,MAAe,SAAS;EACvD,IAAM,IAAe,MAAe,SAAS,EAAsB,UAAU,EAAuB;EACpG,AAEE,EAAwB,aADxB,EAAa,EAAwB,QAAQ,EAAE,MAAM,GACnB,KAAA;CAEtC,GAAG,CAAC,CAAU,CAAC;CAEf,IAAM,KAAe,MAA4C;EAC/D,IAAM,IAAQ,EAAS,SACjB,IAAS,EAAM;EACrB,IAAI,KAAoB,MAAe,UAAU,GAAO,SAAS,CAAM,KAAK,CAAC,EAAO,QAAQ,OAAO,KAC7F,EAAO,QAAQ,OAAO,GAAG;GAC3B,IAAM,IAAqB,MAAM,KAAK,EAAM,iBAAuC,UAAU,CAAC,CAAC,CAAC,QAC7F,GAAe,MAAW;IACzB,IAAM,IAAO,EAAO,sBAAsB;IAE1C,OADkB,EAAK,SAAS,KAAK,EAAK,MAAM,OAAO,cACpC,KAAK,IAAI,GAAe,EAAK,MAAM,IAAI;GAC5D,GACA,CACF,GACM,IAAa,EAAO,sBAAsB,GAC1C,IAAe,OAAO,iBAAiB,CAAM,GAC7C,IAA0B,KAAK,IACnC,IACC,OAAO,WAAW,EAAa,YAAY,KAAK,MAAM,OAAO,WAAW,EAAa,aAAa,KAAK,EAC1G;GACA,AACE,IAAqB,KACrB,EAAW,SAAS,KACpB,EAAW,MAAM,IAA0B,KAE3C,OAAO,SAAS;IAAC,KAAK,EAAW,MAAM,IAAqB;IAAyB,UAAU;GAAS,CAAC;EAE7G;EAEF,IAAU,CAAK;CACjB;CAEA,IAAI,EAAM,WAAW,GAAG,OAAO;CAC/B,AAAI,CAAC,KAAA,QAAA,IAAA,aAAoC,gBAEvC,QAAQ,KAAK,kFAAkF;CAGjG,IAAM,IAAkC;EACtC;EACA;EACA;EACA,WAAW;EACX,YAAY;EACZ,eAAe;EACf;EACA;CACF,GACM,IAAgB,EAAO,KAAK,GAAO,MACvC,kBAAC,EAAa,UAAd;EACE,OAAO;GAAC,GAAG;GAAc,YAAY;GAAO,eAAe,OAAO,EAAM,GAAG;EAAC;YAG3E;CACoB,GAHhB,EAAM,GAGU,CACxB;CAED,OACE,kBAAC,EAAa,UAAd;EAAuB,OAAO;YAC5B,kBAAC,OAAD;GACE,WAAW,EACT,EAAO,wBACP,EAAe,UACf,EAAM,SAAS,KAAK,EAAO,gCAAgC,EAAM,WACjE,KAAoB,EAAO,0CAC3B,GACA,CACF;GACA,eAAa,KAAU,EAAQ;GAC1B;GACL,SAAQ,MAAS;IAGf,CAFI,OAAO,eAAe,KAAS,EAAQ,MAAa,MAAe,aACrE,EAAkB,UAAU,EAAM,SACpC,IAAS,CAAK;GAChB;GACA,SAAS;GACT,OAAO;IAAC,GAAG;IAAuB,GAAG;GAAK;GAC1C,GAAI;aAEH,MAAe,SAUd,kBAAC,SAAD;IACE,mBAAiB,IAAU,EAAQ,MAAM,MAAM,GAAG,EAAW,YAAY,KAAA;IACzE,WAAW,EAAO;IAClB,eAAa,EAAQ;IACrB,KAAK;cAJP;KAME,kBAAC,YAAD,EAAA,UAAA,CACE,kBAAC,OAAD,EAAK,WAAW,EAAO,sCAAwC,CAAA,GAC9D,EAAM,KAAI,MACT,kBAAC,OAAD,CAAqB,GAAX,EAAK,GAAM,CACtB,CACO,EAAA,CAAA;KACV,kBAAC,SAAD;MAAO,WAAW,EAAO;gBACvB,kBAAC,MAAD;OACE,WAAW,EACT,EAAO,SAAS,KAAK,EAAe,UACpC,EAAO,qCACP,KAAa,EAAO,gDACtB;iBALF,CAOE,kBAAC,MAAD;QACE,WAAW,EACT,EAAO,oCACP,KAAa,EAAO,+CACtB;QACA,OAAM;kBAEL,IACC,EAAM,aAAa,GAAS,EAC1B,WAAW,EACT,EAAQ,MAAM,WACd,EAAO,sCACP,KAAa,EAAO,iDACtB,EACF,CAAC,IAED,kBAAC,QAAD;SAAM,WAAU;mBAAkB;QAAa,CAAA;OAE/C,CAAA,GACH,EAAM,KAAK,GAAM,MAChB,kBAAC,MAAD;QACE,WAAW,EACT,EAAO,oCACP,KAAa,EAAO,iDACpB,EAAa,CAAI,KAAK,EAAO,yCAC/B;QACA,OAAM;kBAGN,kBAAC,EAAa,UAAd;SAAuB,OAAO;UAAC,GAAG;UAAc,WAAW,IAAQ;SAAC;mBACjE;QACoB,CAAA;OACrB,GALG,EAAK,GAKR,CACL,CACC;;KACC,CAAA;KACN;IACI;QAlEP,kBAAC,OAAD;IAAK,WAAW,EAAO;IAAgC,eAAa,EAAQ;cAA5E,CACG,IACC,kBAAC,OAAD;KAAK,WAAW,EAAK,EAAO,uCAAuC,EAAe,QAAQ;eACvF;IACE,CAAA,IACH,MACH,CACE;;EA6DJ,CAAA;CACgB,CAAA;AAE3B,CACF,GAKa,IAAyB,OAAO,OAAO,GAA4B;CAC9E,MAAM;CACN,OAAO;CACP,SAAS;CACT,aAAa;CACb,aAAa;CACb,OAAO;CACP,eAAe;CACf,iBAAiB;CACjB,OAAO;CACP,cAAc;CACd,KAAK;CACL,YAAY;CACZ,gBAAgB;CAChB,MAAM;CACN;AACF,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable___dngKP{--brand-FeatureComparisonTable-itemCount:1;--brand-FeatureComparisonTable-featureColumnWidth:var(--brand-FeatureComparisonTable-default-featureColumnWidth);width:100%;color:var(--brand-color-text-default);container-type:inline-size}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable--items2___x2QKi{--brand-FeatureComparisonTable-itemCount:2}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable--items3___PBf2a{--brand-FeatureComparisonTable-itemCount:3}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable--items4___C1tK_{--brand-FeatureComparisonTable-itemCount:4;--brand-FeatureComparisonTable-featureColumnWidth:var(--brand-FeatureComparisonTable-fourItems-featureColumnWidth)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrowHeading___olgb8{padding:var(--base-size-60) var(--base-size-20);text-align:center}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrowHeading___olgb8:before{content:none}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__table___M6UcH{border-collapse:collapse;table-layout:fixed;width:100%;display:none}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableHeading___qntyG{text-align:start}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeading___lLU9H{align-items:center;gap:var(--base-size-8);display:inline-flex}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowDescription___aPLbp{margin-block-start:var(--base-size-8)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cell___KoDID{justify-content:center;align-items:center;gap:var(--base-size-8);text-align:center;word-wrap:anywhere;max-width:100%;display:inline-flex}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon___li3MO{flex:0 0 var(--base-size-24);width:var(--base-size-24);height:var(--base-size-24);justify-content:center;align-items:center;display:inline-flex}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon--included___gb5E0,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon--unlimited___6S4_o,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon--refresh___VM2hn{border-radius:var(--brand-borderRadius-full)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon--included___gb5E0{color:var(--brand-FeatureComparisonTable-includedIndicator-fgColor);background-color:var(--brand-FeatureComparisonTable-includedIndicator-bgColor)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon--unlimited___6S4_o{color:var(--brand-FeatureComparisonTable-unlimitedIndicator-fgColor);background-color:var(--brand-FeatureComparisonTable-unlimitedIndicator-bgColor)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cellIcon--refresh___VM2hn{color:var(--brand-FeatureComparisonTable-refreshIndicator-fgColor);background-color:var(--brand-FeatureComparisonTable-refreshIndicator-bgColor)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__group___XE2zK{border-inline:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__group___XE2zK~.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__group___XE2zK{border-block-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__summary___8PpmB{justify-content:space-between;align-items:center;gap:var(--base-size-12);min-height:var(--base-size-80);padding:var(--base-size-24) var(--base-size-20) var(--base-size-4);cursor:pointer;list-style:none;display:flex}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__summary___8PpmB::-webkit-details-marker{display:none}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__chevron___FtiUb{width:var(--base-size-16);height:var(--base-size-16);margin-inline:var(--base-size-6);flex-shrink:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__chevron--expanded___3WPYL{transform:rotate(180deg)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY{border-block-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY:first-child{border-block-start:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeading___lLU9H{min-height:var(--base-size-48);padding:var(--base-size-12) var(--base-size-20);justify-content:space-between;display:flex}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeadingContent___KSfue{padding:var(--base-size-12) var(--base-size-20)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeadingContent___KSfue .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeading___lLU9H{min-height:auto;padding:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planName___DTywr{word-wrap:anywhere}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__cell___KoDID{text-align:end;justify-content:flex-end}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planValues___bZ2yv{grid-template-columns:minmax(0,1fr) minmax(0,2fr);margin:0;display:grid}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planTerm___mzmmH,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planValue___Ph_zM{min-width:0;min-height:calc(var(--base-size-28) + var(--base-size-24));padding-block:var(--base-size-12);margin:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planTerm___mzmmH{padding-inline:var(--base-size-20) var(--base-size-8)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planValue___Ph_zM{padding-inline:var(--base-size-8) var(--base-size-20);text-align:end}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item___bayqC{grid-row:1/span 4;grid-template-rows:subgrid;border-block-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);text-align:start;align-content:start;display:grid}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item--hasLabel___hvCZl{border-block-start:0;grid-row-end:span 5}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item--offset___WWEYj{grid-row-start:2}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__itemContent___xO24j{grid-row:1/span 4;grid-template-rows:subgrid;grid-template-columns:minmax(0, 1fr) fit-content(calc((100% - var(--base-size-8)) / 2));grid-column-gap:var(--base-size-8);-moz-column-gap:var(--base-size-8);column-gap:var(--base-size-8);min-width:0;padding:var(--base-size-16) var(--base-size-28);align-content:start;justify-self:stretch;display:grid}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__itemContent--hasLabel___YTcaZ{border-block-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-subtle);grid-row:2/span 4}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__labelCell___5nPTu{padding:calc(var(--base-size-16) - var(--brand-borderWidth-thin)) var(--base-size-28) var(--base-size-16);border-block-start:var(--brand-borderWidth-thin) solid var(--brand-FeatureComparisonTable-label-accentColor);grid-row:1;justify-self:stretch;align-items:center;display:flex;position:relative}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__labelCell___5nPTu:before{border-inline:var(--brand-borderWidth-thin) solid var(--brand-color-border-subtle);content:"";pointer-events:none;position:absolute;inset:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__label___WoGfw{font-family:var(--brand-fontStack-monospace);font-size:var(--brand-text-size-100);font-weight:var(--base-text-weight-medium);letter-spacing:var(--brand-text-letterSpacing-100);line-height:var(--brand-text-lineHeight-200);text-transform:uppercase;display:inline-block}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__itemHeading___6bVkq{word-wrap:anywhere;grid-row:1;align-self:start}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__description___A5hme{grid-area:2/1/auto/-1;margin-block-start:var(--base-size-12)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__price___5a2qj{text-align:end;word-wrap:anywhere;grid-area:1/2;align-self:start;margin:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__actions___LF_4R{grid-gap:var(--base-size-12);gap:var(--base-size-12);width:100%;grid-area:4/1/auto/-1;align-self:start;margin-block-start:var(--base-size-12);display:grid}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planTerm___mzmmH,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planValue___Ph_zM,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx{transition:background-color var(--brand-animation-duration-fast) var(--brand-animation-easing-default)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY:focus-within{background-color:var(--brand-FeatureComparisonTable-rowHighlight-bgColor)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY a:focus-visible,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY button:focus-visible{z-index:1;position:relative}@media (width>=48rem){.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__narrow___OkfDy{max-width:38.625rem;margin-inline:auto}}@media (width>=80rem){.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable___dngKP{padding-block-start:var(--base-size-60)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__table___M6UcH{display:table}:where(.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headerCell___Y2QpE,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupDivider___tbGNF){padding:var(--base-size-12) var(--base-size-28);border-block-end:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted);vertical-align:top}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headerCell___Y2QpE,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupDivider___tbGNF{text-align:start}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY:last-child>*,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupDivider--noVisibleRows____IfnP{border-block-end:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headingGrid___uc4oR:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupDivider___tbGNF:after{content:none}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx{text-align:center}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell--hasVariant___a9jCs{vertical-align:middle}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ>:first-child,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ>:last-child,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx:last-child,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item___bayqC{position:relative}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ>:first-child:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ>:last-child:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx:last-child:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item___bayqC:before{content:"";pointer-events:none;position:absolute;inset:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item___bayqC:before{inset-block-end:var(--brand-borderWidth-thin)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ>:first-child:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item___bayqC:before{border-inline-start:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx:last-child:before,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ>:last-child:before{border-inline-end:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__featureColumn___yPFyJ{width:var(--brand-FeatureComparisonTable-featureColumnWidth)}:where(.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable--stickyHeaders___Vg9gu) .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headerCell___Y2QpE{background-color:var(--brand-color-canvas-default)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable--stickyHeaders___Vg9gu .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headingGrid___uc4oR:after{z-index:4}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupDivider___tbGNF{padding-block:var(--base-size-48) var(--base-size-4);position:relative}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headingGrid___uc4oR{grid-template-columns:minmax(0, var(--brand-FeatureComparisonTable-featureColumnWidth)) repeat(var(--brand-FeatureComparisonTable-itemCount), minmax(0, 1fr));display:grid}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupBackground___pFWoJ{pointer-events:none;position:absolute;inset:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__groupControl___srZUw{justify-content:flex-start;align-items:center;gap:var(--base-size-12);min-height:calc(var(--base-size-28) + var(--base-size-24));color:inherit;font:inherit;text-align:inherit;cursor:pointer;background:0 0;border:0;padding:0;display:inline-flex;position:relative}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__chevron___FtiUb{margin-inline:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headingGrid___uc4oR{grid-template-rows:repeat(4,auto);width:100cqw}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headingGrid--hasLabel___z1_Pw{grid-template-rows:repeat(5,auto)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable--stickyHeaders___Vg9gu .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__head___iGAPA{z-index:2;position:sticky;inset-block-start:0}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headerCell___Y2QpE{grid-row:1/span 4;grid-template-rows:subgrid;border-block:0;padding:0;display:grid}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headerCell--hasLabel___5QsYF{grid-row-end:span 5}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableHeading___qntyG{padding:var(--base-size-28);align-self:end}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__headerCell___Y2QpE:last-child .Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__item___bayqC:before{border-inline-end:var(--brand-borderWidth-thin) solid var(--brand-color-border-muted)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableHeading--hasLabel___mUlr7{grid-row:2/-1;align-self:start;padding-block:0;position:relative;inset-block-start:var(--base-size-16)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__highlightedColumn___RwptH{background-color:var(--brand-FeatureComparisonTable-highlightedColumn-bgColor)}.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY:focus-within>*{background-color:var(--brand-FeatureComparisonTable-rowHighlight-bgColor)}}@media (hover:hover) and (pointer:fine){.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY:hover{background-color:var(--brand-FeatureComparisonTable-rowHighlight-bgColor)}}@media (hover:hover) and (pointer:fine) and (width>=80rem){.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY:hover>*{background-color:var(--brand-FeatureComparisonTable-rowHighlight-bgColor)}}@media (prefers-reduced-motion:reduce){.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__row___Gc3qY,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planTerm___mzmmH,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__planValue___Ph_zM,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__rowHeaderCell___r2pHn,.Primer_Brand__FeatureComparisonTable-module__FeatureComparisonTable__tableCell___anJpx{transition-duration:0s}}
|