@primer/components 31.2.0 → 31.2.1-rc.0e01900c
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/.changeset/README.md +8 -0
- package/.changeset/config.json +10 -0
- package/.devcontainer/devcontainer.json +8 -0
- package/.eslintrc.json +137 -0
- package/.github/ISSUE_TEMPLATE/bug_report.md +38 -0
- package/.github/ISSUE_TEMPLATE/new_component_proposal_template.md +41 -0
- package/.github/dependabot.yml +18 -0
- package/.github/pull_request_template.md +18 -0
- package/.github/workflows/check_for_changeset.yml +25 -0
- package/.github/workflows/ci.yml +34 -0
- package/.github/workflows/deploy_preview.yml +47 -0
- package/.github/workflows/deploy_production.yml +70 -0
- package/.github/workflows/release.yml +36 -0
- package/.github/workflows/release_canary.yml +71 -0
- package/.github/workflows/release_candidate.yml +60 -0
- package/.github/workflows/size.yml +13 -0
- package/.github/workflows/stale.yml +26 -0
- package/.gitignore +10 -0
- package/.npmrc +4 -0
- package/.nvmrc +1 -0
- package/.storybook/main.js +9 -0
- package/.storybook/preview.js +117 -0
- package/.vscode/launch.json +21 -0
- package/.vscode/settings.json +13 -0
- package/@types/@styled-system/index.d.ts +0 -0
- package/@types/@styled-system/prop-types/index.d.ts +1 -0
- package/@types/@styled-system/props/index.d.ts +1 -0
- package/@types/jest-styled-components/index.d.ts +1 -0
- package/CHANGELOG.md +8 -0
- package/CODEOWNERS +2 -0
- package/babel-defines.js +13 -0
- package/babel.config.js +39 -0
- package/contributor-docs/CODE_OF_CONDUCT.md +76 -0
- package/contributor-docs/CONTRIBUTING.md +274 -0
- package/contributor-docs/adrs/adr-001-typescript.md +23 -0
- package/contributor-docs/adrs/adr-002-behavior-isolation.md +108 -0
- package/contributor-docs/adrs/adr-003-prop-norms.md +72 -0
- package/contributor-docs/behaviors.md +132 -0
- package/contributor-docs/component-contents-api-patterns.md +316 -0
- package/contributor-docs/principles.md +39 -0
- package/dist/browser.esm.js +32 -21
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +35 -24
- package/dist/browser.umd.js.map +1 -1
- package/docs/.eslintrc +0 -0
- package/docs/.gitignore +91 -0
- package/docs/components/PropsList.js +5 -0
- package/docs/components/State.js +9 -0
- package/docs/components/constants.js +34 -0
- package/docs/components/index.js +2 -0
- package/docs/content/ActionList.mdx +99 -0
- package/docs/content/ActionList2.mdx +358 -0
- package/docs/content/ActionMenu.mdx +80 -0
- package/docs/content/AnchoredOverlay.mdx +37 -0
- package/docs/content/Autocomplete.mdx +657 -0
- package/docs/content/Avatar.mdx +33 -0
- package/docs/content/AvatarStack.mdx +37 -0
- package/docs/content/BorderBox.md +46 -0
- package/docs/content/Box.md +74 -0
- package/docs/content/BranchName.md +18 -0
- package/docs/content/Breadcrumbs.md +52 -0
- package/docs/content/Buttons.md +56 -0
- package/docs/content/CircleBadge.md +45 -0
- package/docs/content/CircleOcticon.md +18 -0
- package/docs/content/CounterLabel.md +32 -0
- package/docs/content/Details.md +105 -0
- package/docs/content/Dialog.md +108 -0
- package/docs/content/Dialog2.mdx +179 -0
- package/docs/content/Dropdown.md +72 -0
- package/docs/content/DropdownMenu.mdx +49 -0
- package/docs/content/FilterList.md +44 -0
- package/docs/content/FilteredSearch.md +39 -0
- package/docs/content/Flash.md +44 -0
- package/docs/content/Flex.md +58 -0
- package/docs/content/FormGroup.md +46 -0
- package/docs/content/Grid.md +59 -0
- package/docs/content/Header.md +79 -0
- package/docs/content/Heading.md +22 -0
- package/docs/content/Label.md +42 -0
- package/docs/content/LabelGroup.md +31 -0
- package/docs/content/Link.md +37 -0
- package/docs/content/Overlay.mdx +94 -0
- package/docs/content/Pagehead.md +27 -0
- package/docs/content/Pagination.md +187 -0
- package/docs/content/PointerBox.md +81 -0
- package/docs/content/Popover.md +137 -0
- package/docs/content/Portal.mdx +78 -0
- package/docs/content/Position.md +100 -0
- package/docs/content/ProgressBar.mdx +29 -0
- package/docs/content/SelectMenu.md +435 -0
- package/docs/content/SelectPanel.mdx +67 -0
- package/docs/content/SideNav.md +179 -0
- package/docs/content/Spinner.mdx +32 -0
- package/docs/content/StateLabel.md +36 -0
- package/docs/content/StyledOcticon.md +36 -0
- package/docs/content/SubNav.md +102 -0
- package/docs/content/TabNav.md +50 -0
- package/docs/content/Text.md +31 -0
- package/docs/content/TextInput.md +34 -0
- package/docs/content/TextInputTokens.mdx +89 -0
- package/docs/content/TextInputWithTokens.mdx +211 -0
- package/docs/content/Timeline.md +138 -0
- package/docs/content/Token.mdx +381 -0
- package/docs/content/Tooltip.md +41 -0
- package/docs/content/Truncate.md +64 -0
- package/docs/content/UnderlineNav.md +53 -0
- package/docs/content/anchoredPosition.mdx +163 -0
- package/docs/content/core-concepts.md +70 -0
- package/docs/content/focusTrap.mdx +103 -0
- package/docs/content/focusZone.mdx +145 -0
- package/docs/content/getting-started.md +138 -0
- package/docs/content/index.md +33 -0
- package/docs/content/linting.md +35 -0
- package/docs/content/overriding-styles.mdx +82 -0
- package/docs/content/philosophy.md +23 -0
- package/docs/content/primer-theme.md +89 -0
- package/docs/content/ssr.mdx +43 -0
- package/docs/content/system-props.mdx +37 -0
- package/docs/content/theme-reference.md +16 -0
- package/docs/content/theming.md +272 -0
- package/docs/content/useOnEscapePress.mdx +56 -0
- package/docs/content/useOnOutsideClick.mdx +57 -0
- package/docs/content/useOpenAndCloseFocus.mdx +49 -0
- package/docs/content/useOverlay.mdx +62 -0
- package/docs/content/useSafeTimeout.mdx +32 -0
- package/docs/gatsby-config.js +30 -0
- package/docs/gatsby-node.js +101 -0
- package/docs/package-lock.json +20756 -0
- package/docs/package.json +36 -0
- package/docs/src/@primer/gatsby-theme-doctocat/components/hero.js +21 -0
- package/docs/src/@primer/gatsby-theme-doctocat/components/live-preview-wrapper.js +41 -0
- package/docs/src/@primer/gatsby-theme-doctocat/live-code-scope.js +73 -0
- package/docs/src/@primer/gatsby-theme-doctocat/nav.yml +133 -0
- package/docs/src/@primer/gatsby-theme-doctocat/primer-components-hero.svg +1411 -0
- package/docs/src/props.js +77 -0
- package/jest.config.js +13 -0
- package/lib/ActionList/Item.js +28 -19
- package/lib/ActionList/Item.jsx +21 -11
- package/lib/ActionList2/Description.js +8 -4
- package/lib/ActionList2/Description.jsx +2 -3
- package/lib/ActionList2/Item.js +7 -9
- package/lib/ActionList2/Item.jsx +6 -6
- package/lib/ActionList2/Selection.d.ts +1 -1
- package/lib/ActionList2/Selection.js +29 -15
- package/lib/ActionList2/Selection.jsx +19 -5
- package/lib/NewButton/button.js +6 -6
- package/lib/NewButton/button.jsx +4 -4
- package/lib/__tests__/ActionList.test.d.ts +1 -0
- package/lib/__tests__/ActionList.test.js +69 -0
- package/lib/__tests__/ActionList.test.jsx +49 -0
- package/lib/__tests__/ActionList.types.test.d.ts +6 -0
- package/lib/__tests__/ActionList.types.test.js +69 -0
- package/lib/__tests__/ActionList.types.test.jsx +45 -0
- package/lib/__tests__/ActionList2.test.d.ts +1 -0
- package/lib/__tests__/ActionList2.test.js +53 -0
- package/lib/__tests__/ActionList2.test.jsx +46 -0
- package/lib/__tests__/ActionMenu.test.d.ts +1 -0
- package/lib/__tests__/ActionMenu.test.js +151 -0
- package/lib/__tests__/ActionMenu.test.jsx +124 -0
- package/lib/__tests__/AnchoredOverlay.test.d.ts +1 -0
- package/lib/__tests__/AnchoredOverlay.test.js +162 -0
- package/lib/__tests__/AnchoredOverlay.test.jsx +121 -0
- package/lib/__tests__/Autocomplete.test.d.ts +1 -0
- package/lib/__tests__/Autocomplete.test.js +528 -0
- package/lib/__tests__/Autocomplete.test.jsx +299 -0
- package/lib/__tests__/Avatar.test.d.ts +1 -0
- package/lib/__tests__/Avatar.test.js +67 -0
- package/lib/__tests__/Avatar.test.jsx +42 -0
- package/lib/__tests__/AvatarStack.test.d.ts +1 -0
- package/lib/__tests__/AvatarStack.test.js +71 -0
- package/lib/__tests__/AvatarStack.test.jsx +43 -0
- package/lib/__tests__/BorderBox.test.d.ts +1 -0
- package/lib/__tests__/BorderBox.test.js +58 -0
- package/lib/__tests__/BorderBox.test.jsx +36 -0
- package/lib/__tests__/Box.test.d.ts +1 -0
- package/lib/__tests__/Box.test.js +78 -0
- package/lib/__tests__/Box.test.jsx +41 -0
- package/lib/__tests__/BranchName.test.d.ts +1 -0
- package/lib/__tests__/BranchName.test.js +36 -0
- package/lib/__tests__/BranchName.test.jsx +27 -0
- package/lib/__tests__/Breadcrumbs.test.d.ts +1 -0
- package/lib/__tests__/Breadcrumbs.test.js +37 -0
- package/lib/__tests__/Breadcrumbs.test.jsx +28 -0
- package/lib/__tests__/BreadcrumbsItem.test.d.ts +1 -0
- package/lib/__tests__/BreadcrumbsItem.test.js +49 -0
- package/lib/__tests__/BreadcrumbsItem.test.jsx +31 -0
- package/lib/__tests__/Button.test.d.ts +1 -0
- package/lib/__tests__/Button.test.js +143 -0
- package/lib/__tests__/Button.test.jsx +100 -0
- package/lib/__tests__/Caret.test.d.ts +1 -0
- package/lib/__tests__/Caret.test.js +52 -0
- package/lib/__tests__/Caret.test.jsx +37 -0
- package/lib/__tests__/CircleBadge.test.d.ts +1 -0
- package/lib/__tests__/CircleBadge.test.js +83 -0
- package/lib/__tests__/CircleBadge.test.jsx +55 -0
- package/lib/__tests__/CircleOcticon.test.d.ts +1 -0
- package/lib/__tests__/CircleOcticon.test.js +71 -0
- package/lib/__tests__/CircleOcticon.test.jsx +45 -0
- package/lib/__tests__/ConfirmationDialog.test.d.ts +1 -0
- package/lib/__tests__/ConfirmationDialog.test.js +134 -0
- package/lib/__tests__/ConfirmationDialog.test.jsx +119 -0
- package/lib/__tests__/CounterLabel.test.d.ts +1 -0
- package/lib/__tests__/CounterLabel.test.js +58 -0
- package/lib/__tests__/CounterLabel.test.jsx +36 -0
- package/lib/__tests__/Details.test.d.ts +1 -0
- package/lib/__tests__/Details.test.js +117 -0
- package/lib/__tests__/Details.test.jsx +85 -0
- package/lib/__tests__/Dialog.test.d.ts +1 -0
- package/lib/__tests__/Dialog.test.js +184 -0
- package/lib/__tests__/Dialog.test.jsx +139 -0
- package/lib/__tests__/Dropdown.test.d.ts +1 -0
- package/lib/__tests__/Dropdown.test.js +63 -0
- package/lib/__tests__/Dropdown.test.jsx +49 -0
- package/lib/__tests__/DropdownMenu.test.d.ts +1 -0
- package/lib/__tests__/DropdownMenu.test.js +150 -0
- package/lib/__tests__/DropdownMenu.test.jsx +119 -0
- package/lib/__tests__/FilterList.test.d.ts +1 -0
- package/lib/__tests__/FilterList.test.js +36 -0
- package/lib/__tests__/FilterList.test.jsx +27 -0
- package/lib/__tests__/FilterListItem.test.d.ts +1 -0
- package/lib/__tests__/FilterListItem.test.js +46 -0
- package/lib/__tests__/FilterListItem.test.jsx +31 -0
- package/lib/__tests__/FilteredSearch.test.d.ts +1 -0
- package/lib/__tests__/FilteredSearch.test.js +36 -0
- package/lib/__tests__/FilteredSearch.test.jsx +27 -0
- package/lib/__tests__/Flash.test.d.ts +1 -0
- package/lib/__tests__/Flash.test.js +62 -0
- package/lib/__tests__/Flash.test.jsx +36 -0
- package/lib/__tests__/Flex.test.d.ts +1 -0
- package/lib/__tests__/Flex.test.js +74 -0
- package/lib/__tests__/Flex.test.jsx +51 -0
- package/lib/__tests__/FormGroup.test.d.ts +1 -0
- package/lib/__tests__/FormGroup.test.js +54 -0
- package/lib/__tests__/FormGroup.test.jsx +36 -0
- package/lib/__tests__/Grid.test.d.ts +1 -0
- package/lib/__tests__/Grid.test.js +104 -0
- package/lib/__tests__/Grid.test.jsx +69 -0
- package/lib/__tests__/Header.test.d.ts +1 -0
- package/lib/__tests__/Header.test.js +58 -0
- package/lib/__tests__/Header.test.jsx +45 -0
- package/lib/__tests__/Heading.test.d.ts +1 -0
- package/lib/__tests__/Heading.test.js +109 -0
- package/lib/__tests__/Heading.test.jsx +71 -0
- package/lib/__tests__/KeyPaths.types.test.d.ts +11 -0
- package/lib/__tests__/KeyPaths.types.test.js +7 -0
- package/lib/__tests__/Label.test.d.ts +1 -0
- package/lib/__tests__/Label.test.js +46 -0
- package/lib/__tests__/Label.test.jsx +33 -0
- package/lib/__tests__/LabelGroup.test.d.ts +1 -0
- package/lib/__tests__/LabelGroup.test.js +38 -0
- package/lib/__tests__/LabelGroup.test.jsx +29 -0
- package/lib/__tests__/Link.test.d.ts +1 -0
- package/lib/__tests__/Link.test.js +70 -0
- package/lib/__tests__/Link.test.jsx +43 -0
- package/lib/__tests__/Merge.types.test.d.ts +30 -0
- package/lib/__tests__/Merge.types.test.js +21 -0
- package/lib/__tests__/NewButton.test.d.ts +1 -0
- package/lib/__tests__/NewButton.test.js +95 -0
- package/lib/__tests__/NewButton.test.jsx +61 -0
- package/lib/__tests__/Overlay.test.d.ts +1 -0
- package/lib/__tests__/Overlay.test.js +145 -0
- package/lib/__tests__/Overlay.test.jsx +105 -0
- package/lib/__tests__/Pagehead.test.d.ts +1 -0
- package/lib/__tests__/Pagehead.test.js +37 -0
- package/lib/__tests__/Pagehead.test.jsx +25 -0
- package/lib/__tests__/Pagination/Pagination.test.d.ts +1 -0
- package/lib/__tests__/Pagination/Pagination.test.js +47 -0
- package/lib/__tests__/Pagination/Pagination.test.jsx +32 -0
- package/lib/__tests__/Pagination/PaginationModel.test.d.ts +1 -0
- package/lib/__tests__/Pagination/PaginationModel.test.js +186 -0
- package/lib/__tests__/Pagination/PaginationModel.test.jsx +118 -0
- package/lib/__tests__/PointerBox.test.d.ts +1 -0
- package/lib/__tests__/PointerBox.test.js +46 -0
- package/lib/__tests__/PointerBox.test.jsx +33 -0
- package/lib/__tests__/Popover.test.d.ts +1 -0
- package/lib/__tests__/Popover.test.js +66 -0
- package/lib/__tests__/Popover.test.jsx +58 -0
- package/lib/__tests__/Portal.test.d.ts +1 -0
- package/lib/__tests__/Portal.test.js +124 -0
- package/lib/__tests__/Portal.test.jsx +102 -0
- package/lib/__tests__/Position.test.d.ts +1 -0
- package/lib/__tests__/Position.test.js +143 -0
- package/lib/__tests__/Position.test.jsx +96 -0
- package/lib/__tests__/ProgressBar.test.d.ts +1 -0
- package/lib/__tests__/ProgressBar.test.js +68 -0
- package/lib/__tests__/ProgressBar.test.jsx +38 -0
- package/lib/__tests__/SelectMenu.test.d.ts +1 -0
- package/lib/__tests__/SelectMenu.test.js +155 -0
- package/lib/__tests__/SelectMenu.test.jsx +120 -0
- package/lib/__tests__/SelectPanel.test.d.ts +1 -0
- package/lib/__tests__/SelectPanel.test.js +80 -0
- package/lib/__tests__/SelectPanel.test.jsx +48 -0
- package/lib/__tests__/SideNav.test.d.ts +1 -0
- package/lib/__tests__/SideNav.test.js +71 -0
- package/lib/__tests__/SideNav.test.jsx +55 -0
- package/lib/__tests__/Spinner.test.d.ts +1 -0
- package/lib/__tests__/Spinner.test.js +53 -0
- package/lib/__tests__/Spinner.test.jsx +41 -0
- package/lib/__tests__/StateLabel.test.d.ts +1 -0
- package/lib/__tests__/StateLabel.test.js +71 -0
- package/lib/__tests__/StateLabel.test.jsx +46 -0
- package/lib/__tests__/StyledOcticon.test.d.ts +1 -0
- package/lib/__tests__/StyledOcticon.test.js +40 -0
- package/lib/__tests__/StyledOcticon.test.jsx +28 -0
- package/lib/__tests__/SubNav.test.d.ts +1 -0
- package/lib/__tests__/SubNav.test.js +62 -0
- package/lib/__tests__/SubNav.test.jsx +47 -0
- package/lib/__tests__/SubNavLink.test.d.ts +1 -0
- package/lib/__tests__/SubNavLink.test.js +49 -0
- package/lib/__tests__/SubNavLink.test.jsx +31 -0
- package/lib/__tests__/TabNav.test.d.ts +1 -0
- package/lib/__tests__/TabNav.test.js +49 -0
- package/lib/__tests__/TabNav.test.jsx +32 -0
- package/lib/__tests__/Text.test.d.ts +1 -0
- package/lib/__tests__/Text.test.js +105 -0
- package/lib/__tests__/Text.test.jsx +71 -0
- package/lib/__tests__/TextInput.test.d.ts +1 -0
- package/lib/__tests__/TextInput.test.js +78 -0
- package/lib/__tests__/TextInput.test.jsx +45 -0
- package/lib/__tests__/TextInputWithTokens.test.d.ts +1 -0
- package/lib/__tests__/TextInputWithTokens.test.js +572 -0
- package/lib/__tests__/TextInputWithTokens.test.jsx +302 -0
- package/lib/__tests__/ThemeProvider.test.d.ts +1 -0
- package/lib/__tests__/ThemeProvider.test.js +444 -0
- package/lib/__tests__/ThemeProvider.test.jsx +314 -0
- package/lib/__tests__/Timeline.test.d.ts +1 -0
- package/lib/__tests__/Timeline.test.js +75 -0
- package/lib/__tests__/Timeline.test.jsx +51 -0
- package/lib/__tests__/Token.test.d.ts +1 -0
- package/lib/__tests__/Token.test.js +180 -0
- package/lib/__tests__/Token.test.jsx +93 -0
- package/lib/__tests__/Tooltip.test.d.ts +1 -0
- package/lib/__tests__/Tooltip.test.js +69 -0
- package/lib/__tests__/Tooltip.test.jsx +46 -0
- package/lib/__tests__/Truncate.test.d.ts +1 -0
- package/lib/__tests__/Truncate.test.js +63 -0
- package/lib/__tests__/Truncate.test.jsx +41 -0
- package/lib/__tests__/UnderlineNav.test.d.ts +1 -0
- package/lib/__tests__/UnderlineNav.test.js +72 -0
- package/lib/__tests__/UnderlineNav.test.jsx +53 -0
- package/lib/__tests__/UnderlineNavLink.test.d.ts +1 -0
- package/lib/__tests__/UnderlineNavLink.test.js +51 -0
- package/lib/__tests__/UnderlineNavLink.test.jsx +31 -0
- package/lib/__tests__/behaviors/anchoredPosition.test.d.ts +1 -0
- package/lib/__tests__/behaviors/anchoredPosition.test.js +243 -0
- package/lib/__tests__/behaviors/focusTrap.test.d.ts +1 -0
- package/lib/__tests__/behaviors/focusTrap.test.js +234 -0
- package/lib/__tests__/behaviors/focusTrap.test.jsx +184 -0
- package/lib/__tests__/behaviors/focusZone.test.d.ts +1 -0
- package/lib/__tests__/behaviors/focusZone.test.js +570 -0
- package/lib/__tests__/behaviors/focusZone.test.jsx +406 -0
- package/lib/__tests__/behaviors/iterateFocusableElements.test.d.ts +1 -0
- package/lib/__tests__/behaviors/iterateFocusableElements.test.js +55 -0
- package/lib/__tests__/behaviors/iterateFocusableElements.test.jsx +58 -0
- package/lib/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
- package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +155 -0
- package/lib/__tests__/filterObject.test.d.ts +1 -0
- package/lib/__tests__/filterObject.test.js +51 -0
- package/lib/__tests__/hooks/useAnchoredPosition.test.d.ts +1 -0
- package/lib/__tests__/hooks/useAnchoredPosition.test.js +54 -0
- package/lib/__tests__/hooks/useAnchoredPosition.test.jsx +29 -0
- package/lib/__tests__/hooks/useOnEscapePress.test.d.ts +1 -0
- package/lib/__tests__/hooks/useOnEscapePress.test.js +32 -0
- package/lib/__tests__/hooks/useOnEscapePress.test.jsx +19 -0
- package/lib/__tests__/hooks/useOnOutsideClick.test.d.ts +1 -0
- package/lib/__tests__/hooks/useOnOutsideClick.test.js +87 -0
- package/lib/__tests__/hooks/useOnOutsideClick.test.jsx +63 -0
- package/lib/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +1 -0
- package/lib/__tests__/hooks/useOpenAndCloseFocus.test.js +60 -0
- package/lib/__tests__/hooks/useOpenAndCloseFocus.test.jsx +61 -0
- package/lib/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +1 -0
- package/lib/__tests__/hooks/useProvidedStateOrCreate.test.js +45 -0
- package/lib/__tests__/hooks/useProvidedStateOrCreate.test.jsx +56 -0
- package/lib/__tests__/theme.test.d.ts +1 -0
- package/lib/__tests__/theme.test.js +35 -0
- package/lib/__tests__/themeGet.test.d.ts +1 -0
- package/lib/__tests__/themeGet.test.js +14 -0
- package/lib/__tests__/useSafeTimeout.test.d.ts +1 -0
- package/lib/__tests__/useSafeTimeout.test.js +45 -0
- package/lib/__tests__/useSafeTimeout.test.jsx +36 -0
- package/lib/__tests__/utils/createSlots.test.d.ts +1 -0
- package/lib/__tests__/utils/createSlots.test.js +75 -0
- package/lib/__tests__/utils/createSlots.test.jsx +57 -0
- package/lib/stories/ActionList.stories.js +454 -0
- package/lib/stories/ActionList2.stories.js +908 -0
- package/lib/stories/ActionMenu.stories.js +350 -0
- package/lib/stories/AnchoredOverlay.stories.js +127 -0
- package/lib/stories/Autocomplete.stories.js +619 -0
- package/lib/stories/AvatarStack.stories.js +49 -0
- package/lib/stories/Button.stories.js +125 -0
- package/lib/stories/ConfirmationDialog.stories.js +111 -0
- package/lib/stories/Dialog.stories.js +265 -0
- package/lib/stories/DropdownMenu.stories.js +122 -0
- package/lib/stories/IssueLabelToken.stories.js +165 -0
- package/lib/stories/NewButton.stories.js +230 -0
- package/lib/stories/Overlay.stories.js +204 -0
- package/lib/stories/Portal.stories.js +104 -0
- package/lib/stories/ProfileToken.stories.js +162 -0
- package/lib/stories/SelectPanel.stories.js +399 -0
- package/lib/stories/TextInput.stories.js +144 -0
- package/lib/stories/TextInputWithTokens.stories.js +252 -0
- package/lib/stories/ThemeProvider.stories.js +102 -0
- package/lib/stories/Token.stories.js +176 -0
- package/lib/stories/useAnchoredPosition.stories.js +351 -0
- package/lib/stories/useFocusTrap.stories.js +356 -0
- package/lib/stories/useFocusZone.stories.js +599 -0
- package/lib-esm/ActionList/Item.js +28 -19
- package/lib-esm/ActionList2/Description.js +8 -4
- package/lib-esm/ActionList2/Item.js +7 -9
- package/lib-esm/ActionList2/Selection.d.ts +1 -1
- package/lib-esm/ActionList2/Selection.js +29 -15
- package/lib-esm/NewButton/button.js +6 -6
- package/lib-esm/__tests__/ActionList.test.d.ts +1 -0
- package/lib-esm/__tests__/ActionList.test.js +57 -0
- package/lib-esm/__tests__/ActionList.types.test.d.ts +6 -0
- package/lib-esm/__tests__/ActionList.types.test.js +45 -0
- package/lib-esm/__tests__/ActionList2.test.d.ts +1 -0
- package/lib-esm/__tests__/ActionList2.test.js +41 -0
- package/lib-esm/__tests__/ActionMenu.test.d.ts +1 -0
- package/lib-esm/__tests__/ActionMenu.test.js +139 -0
- package/lib-esm/__tests__/AnchoredOverlay.test.d.ts +1 -0
- package/lib-esm/__tests__/AnchoredOverlay.test.js +136 -0
- package/lib-esm/__tests__/Autocomplete.test.d.ts +1 -0
- package/lib-esm/__tests__/Autocomplete.test.js +494 -0
- package/lib-esm/__tests__/Avatar.test.d.ts +1 -0
- package/lib-esm/__tests__/Avatar.test.js +56 -0
- package/lib-esm/__tests__/AvatarStack.test.d.ts +1 -0
- package/lib-esm/__tests__/AvatarStack.test.js +58 -0
- package/lib-esm/__tests__/BorderBox.test.d.ts +1 -0
- package/lib-esm/__tests__/BorderBox.test.js +47 -0
- package/lib-esm/__tests__/Box.test.d.ts +1 -0
- package/lib-esm/__tests__/Box.test.js +67 -0
- package/lib-esm/__tests__/BranchName.test.d.ts +1 -0
- package/lib-esm/__tests__/BranchName.test.js +26 -0
- package/lib-esm/__tests__/Breadcrumbs.test.d.ts +1 -0
- package/lib-esm/__tests__/Breadcrumbs.test.js +27 -0
- package/lib-esm/__tests__/BreadcrumbsItem.test.d.ts +1 -0
- package/lib-esm/__tests__/BreadcrumbsItem.test.js +39 -0
- package/lib-esm/__tests__/Button.test.d.ts +1 -0
- package/lib-esm/__tests__/Button.test.js +133 -0
- package/lib-esm/__tests__/Caret.test.d.ts +1 -0
- package/lib-esm/__tests__/Caret.test.js +42 -0
- package/lib-esm/__tests__/CircleBadge.test.d.ts +1 -0
- package/lib-esm/__tests__/CircleBadge.test.js +70 -0
- package/lib-esm/__tests__/CircleOcticon.test.d.ts +1 -0
- package/lib-esm/__tests__/CircleOcticon.test.js +59 -0
- package/lib-esm/__tests__/ConfirmationDialog.test.d.ts +1 -0
- package/lib-esm/__tests__/ConfirmationDialog.test.js +113 -0
- package/lib-esm/__tests__/CounterLabel.test.d.ts +1 -0
- package/lib-esm/__tests__/CounterLabel.test.js +47 -0
- package/lib-esm/__tests__/Details.test.d.ts +1 -0
- package/lib-esm/__tests__/Details.test.js +107 -0
- package/lib-esm/__tests__/Dialog.test.d.ts +1 -0
- package/lib-esm/__tests__/Dialog.test.js +171 -0
- package/lib-esm/__tests__/Dropdown.test.d.ts +1 -0
- package/lib-esm/__tests__/Dropdown.test.js +53 -0
- package/lib-esm/__tests__/DropdownMenu.test.d.ts +1 -0
- package/lib-esm/__tests__/DropdownMenu.test.js +137 -0
- package/lib-esm/__tests__/FilterList.test.d.ts +1 -0
- package/lib-esm/__tests__/FilterList.test.js +26 -0
- package/lib-esm/__tests__/FilterListItem.test.d.ts +1 -0
- package/lib-esm/__tests__/FilterListItem.test.js +36 -0
- package/lib-esm/__tests__/FilteredSearch.test.d.ts +1 -0
- package/lib-esm/__tests__/FilteredSearch.test.js +26 -0
- package/lib-esm/__tests__/Flash.test.d.ts +1 -0
- package/lib-esm/__tests__/Flash.test.js +51 -0
- package/lib-esm/__tests__/Flex.test.d.ts +1 -0
- package/lib-esm/__tests__/Flex.test.js +64 -0
- package/lib-esm/__tests__/FormGroup.test.d.ts +1 -0
- package/lib-esm/__tests__/FormGroup.test.js +44 -0
- package/lib-esm/__tests__/Grid.test.d.ts +1 -0
- package/lib-esm/__tests__/Grid.test.js +94 -0
- package/lib-esm/__tests__/Header.test.d.ts +1 -0
- package/lib-esm/__tests__/Header.test.js +48 -0
- package/lib-esm/__tests__/Heading.test.d.ts +1 -0
- package/lib-esm/__tests__/Heading.test.js +99 -0
- package/lib-esm/__tests__/KeyPaths.types.test.d.ts +11 -0
- package/lib-esm/__tests__/KeyPaths.types.test.js +3 -0
- package/lib-esm/__tests__/Label.test.d.ts +1 -0
- package/lib-esm/__tests__/Label.test.js +36 -0
- package/lib-esm/__tests__/LabelGroup.test.d.ts +1 -0
- package/lib-esm/__tests__/LabelGroup.test.js +26 -0
- package/lib-esm/__tests__/Link.test.d.ts +1 -0
- package/lib-esm/__tests__/Link.test.js +60 -0
- package/lib-esm/__tests__/Merge.types.test.d.ts +30 -0
- package/lib-esm/__tests__/Merge.types.test.js +14 -0
- package/lib-esm/__tests__/NewButton.test.d.ts +1 -0
- package/lib-esm/__tests__/NewButton.test.js +84 -0
- package/lib-esm/__tests__/Overlay.test.d.ts +1 -0
- package/lib-esm/__tests__/Overlay.test.js +123 -0
- package/lib-esm/__tests__/Pagehead.test.d.ts +1 -0
- package/lib-esm/__tests__/Pagehead.test.js +26 -0
- package/lib-esm/__tests__/Pagination/Pagination.test.d.ts +1 -0
- package/lib-esm/__tests__/Pagination/Pagination.test.js +35 -0
- package/lib-esm/__tests__/Pagination/PaginationModel.test.d.ts +1 -0
- package/lib-esm/__tests__/Pagination/PaginationModel.test.js +182 -0
- package/lib-esm/__tests__/PointerBox.test.d.ts +1 -0
- package/lib-esm/__tests__/PointerBox.test.js +36 -0
- package/lib-esm/__tests__/Popover.test.d.ts +1 -0
- package/lib-esm/__tests__/Popover.test.js +53 -0
- package/lib-esm/__tests__/Portal.test.d.ts +1 -0
- package/lib-esm/__tests__/Portal.test.js +104 -0
- package/lib-esm/__tests__/Position.test.d.ts +1 -0
- package/lib-esm/__tests__/Position.test.js +133 -0
- package/lib-esm/__tests__/ProgressBar.test.d.ts +1 -0
- package/lib-esm/__tests__/ProgressBar.test.js +58 -0
- package/lib-esm/__tests__/SelectMenu.test.d.ts +1 -0
- package/lib-esm/__tests__/SelectMenu.test.js +145 -0
- package/lib-esm/__tests__/SelectPanel.test.d.ts +1 -0
- package/lib-esm/__tests__/SelectPanel.test.js +65 -0
- package/lib-esm/__tests__/SideNav.test.d.ts +1 -0
- package/lib-esm/__tests__/SideNav.test.js +60 -0
- package/lib-esm/__tests__/Spinner.test.d.ts +1 -0
- package/lib-esm/__tests__/Spinner.test.js +43 -0
- package/lib-esm/__tests__/StateLabel.test.d.ts +1 -0
- package/lib-esm/__tests__/StateLabel.test.js +61 -0
- package/lib-esm/__tests__/StyledOcticon.test.d.ts +1 -0
- package/lib-esm/__tests__/StyledOcticon.test.js +29 -0
- package/lib-esm/__tests__/SubNav.test.d.ts +1 -0
- package/lib-esm/__tests__/SubNav.test.js +50 -0
- package/lib-esm/__tests__/SubNavLink.test.d.ts +1 -0
- package/lib-esm/__tests__/SubNavLink.test.js +39 -0
- package/lib-esm/__tests__/TabNav.test.d.ts +1 -0
- package/lib-esm/__tests__/TabNav.test.js +39 -0
- package/lib-esm/__tests__/Text.test.d.ts +1 -0
- package/lib-esm/__tests__/Text.test.js +93 -0
- package/lib-esm/__tests__/TextInput.test.d.ts +1 -0
- package/lib-esm/__tests__/TextInput.test.js +68 -0
- package/lib-esm/__tests__/TextInputWithTokens.test.d.ts +1 -0
- package/lib-esm/__tests__/TextInputWithTokens.test.js +511 -0
- package/lib-esm/__tests__/ThemeProvider.test.d.ts +1 -0
- package/lib-esm/__tests__/ThemeProvider.test.js +408 -0
- package/lib-esm/__tests__/Timeline.test.d.ts +1 -0
- package/lib-esm/__tests__/Timeline.test.js +65 -0
- package/lib-esm/__tests__/Token.test.d.ts +1 -0
- package/lib-esm/__tests__/Token.test.js +166 -0
- package/lib-esm/__tests__/Tooltip.test.d.ts +1 -0
- package/lib-esm/__tests__/Tooltip.test.js +59 -0
- package/lib-esm/__tests__/Truncate.test.d.ts +1 -0
- package/lib-esm/__tests__/Truncate.test.js +53 -0
- package/lib-esm/__tests__/UnderlineNav.test.d.ts +1 -0
- package/lib-esm/__tests__/UnderlineNav.test.js +60 -0
- package/lib-esm/__tests__/UnderlineNavLink.test.d.ts +1 -0
- package/lib-esm/__tests__/UnderlineNavLink.test.js +41 -0
- package/lib-esm/__tests__/behaviors/anchoredPosition.test.d.ts +1 -0
- package/lib-esm/__tests__/behaviors/anchoredPosition.test.js +388 -0
- package/lib-esm/__tests__/behaviors/focusTrap.test.d.ts +1 -0
- package/lib-esm/__tests__/behaviors/focusTrap.test.js +227 -0
- package/lib-esm/__tests__/behaviors/focusZone.test.d.ts +1 -0
- package/lib-esm/__tests__/behaviors/focusZone.test.js +487 -0
- package/lib-esm/__tests__/behaviors/iterateFocusableElements.test.d.ts +1 -0
- package/lib-esm/__tests__/behaviors/iterateFocusableElements.test.js +48 -0
- package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
- package/lib-esm/__tests__/behaviors/scrollIntoViewingArea.test.js +224 -0
- package/lib-esm/__tests__/filterObject.test.d.ts +1 -0
- package/lib-esm/__tests__/filterObject.test.js +27 -0
- package/lib-esm/__tests__/hooks/useAnchoredPosition.test.d.ts +1 -0
- package/lib-esm/__tests__/hooks/useAnchoredPosition.test.js +46 -0
- package/lib-esm/__tests__/hooks/useOnEscapePress.test.d.ts +1 -0
- package/lib-esm/__tests__/hooks/useOnEscapePress.test.js +23 -0
- package/lib-esm/__tests__/hooks/useOnOutsideClick.test.d.ts +1 -0
- package/lib-esm/__tests__/hooks/useOnOutsideClick.test.js +68 -0
- package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +1 -0
- package/lib-esm/__tests__/hooks/useOpenAndCloseFocus.test.js +52 -0
- package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +1 -0
- package/lib-esm/__tests__/hooks/useProvidedStateOrCreate.test.js +36 -0
- package/lib-esm/__tests__/theme.test.d.ts +1 -0
- package/lib-esm/__tests__/theme.test.js +33 -0
- package/lib-esm/__tests__/themeGet.test.d.ts +1 -0
- package/lib-esm/__tests__/themeGet.test.js +22 -0
- package/lib-esm/__tests__/useSafeTimeout.test.d.ts +1 -0
- package/lib-esm/__tests__/useSafeTimeout.test.js +39 -0
- package/lib-esm/__tests__/utils/createSlots.test.d.ts +1 -0
- package/lib-esm/__tests__/utils/createSlots.test.js +67 -0
- package/lib-esm/stories/ActionList.stories.js +395 -0
- package/lib-esm/stories/ActionList2.stories.js +796 -0
- package/lib-esm/stories/ActionMenu.stories.js +305 -0
- package/lib-esm/stories/AnchoredOverlay.stories.js +101 -0
- package/lib-esm/stories/Autocomplete.stories.js +560 -0
- package/lib-esm/stories/AvatarStack.stories.js +32 -0
- package/lib-esm/stories/Button.stories.js +86 -0
- package/lib-esm/stories/ConfirmationDialog.stories.js +86 -0
- package/lib-esm/stories/Dialog.stories.js +240 -0
- package/lib-esm/stories/DropdownMenu.stories.js +94 -0
- package/lib-esm/stories/IssueLabelToken.stories.js +139 -0
- package/lib-esm/stories/NewButton.stories.js +178 -0
- package/lib-esm/stories/Overlay.stories.js +173 -0
- package/lib-esm/stories/Portal.stories.js +68 -0
- package/lib-esm/stories/ProfileToken.stories.js +136 -0
- package/lib-esm/stories/SelectPanel.stories.js +334 -0
- package/lib-esm/stories/TextInput.stories.js +117 -0
- package/lib-esm/stories/TextInputWithTokens.stories.js +210 -0
- package/lib-esm/stories/ThemeProvider.stories.js +83 -0
- package/lib-esm/stories/Token.stories.js +146 -0
- package/lib-esm/stories/useAnchoredPosition.stories.js +313 -0
- package/lib-esm/stories/useFocusTrap.stories.js +309 -0
- package/lib-esm/stories/useFocusZone.stories.js +554 -0
- package/migrating.md +250 -0
- package/now.json +17 -0
- package/package-lock.json +66509 -0
- package/package.json +1 -1
- package/rollup.config.js +36 -0
- package/script/build +21 -0
- package/script/build-storybook +10 -0
- package/script/setup +12 -0
- package/src/ActionList/Divider.tsx +25 -0
- package/src/ActionList/Group.tsx +45 -0
- package/src/ActionList/Header.tsx +74 -0
- package/src/ActionList/Item.tsx +509 -0
- package/src/ActionList/List.tsx +258 -0
- package/src/ActionList/index.ts +21 -0
- package/src/ActionList2/Description.tsx +52 -0
- package/src/ActionList2/Divider.tsx +24 -0
- package/src/ActionList2/Group.tsx +34 -0
- package/src/ActionList2/Header.tsx +58 -0
- package/src/ActionList2/Item.tsx +246 -0
- package/src/ActionList2/LinkItem.tsx +49 -0
- package/src/ActionList2/List.tsx +55 -0
- package/src/ActionList2/Selection.tsx +60 -0
- package/src/ActionList2/Visuals.tsx +76 -0
- package/src/ActionList2/index.ts +39 -0
- package/src/ActionMenu.tsx +106 -0
- package/src/AnchoredOverlay/AnchoredOverlay.tsx +191 -0
- package/src/AnchoredOverlay/index.ts +2 -0
- package/src/Autocomplete/Autocomplete.tsx +103 -0
- package/src/Autocomplete/AutocompleteContext.tsx +19 -0
- package/src/Autocomplete/AutocompleteInput.tsx +179 -0
- package/src/Autocomplete/AutocompleteMenu.tsx +341 -0
- package/src/Autocomplete/AutocompleteOverlay.tsx +68 -0
- package/src/Autocomplete/index.ts +2 -0
- package/src/Avatar.tsx +46 -0
- package/src/AvatarPair.tsx +35 -0
- package/src/AvatarStack.tsx +159 -0
- package/src/BaseStyles.tsx +53 -0
- package/src/BorderBox.tsx +18 -0
- package/src/Box.tsx +54 -0
- package/src/BranchName.tsx +19 -0
- package/src/Breadcrumbs.tsx +101 -0
- package/src/Button/Button.tsx +40 -0
- package/src/Button/ButtonBase.tsx +43 -0
- package/src/Button/ButtonClose.tsx +40 -0
- package/src/Button/ButtonDanger.tsx +43 -0
- package/src/Button/ButtonGroup.tsx +55 -0
- package/src/Button/ButtonInvisible.tsx +32 -0
- package/src/Button/ButtonOutline.tsx +43 -0
- package/src/Button/ButtonPrimary.tsx +41 -0
- package/src/Button/ButtonStyles.tsx +36 -0
- package/src/Button/ButtonTableList.tsx +58 -0
- package/src/Button/index.ts +16 -0
- package/src/Caret.tsx +133 -0
- package/src/CircleBadge.tsx +55 -0
- package/src/CircleOcticon.tsx +37 -0
- package/src/CounterLabel.tsx +52 -0
- package/src/Details.tsx +23 -0
- package/src/Dialog/ConfirmationDialog.tsx +184 -0
- package/src/Dialog/Dialog.tsx +433 -0
- package/src/Dialog.tsx +149 -0
- package/src/Dropdown.tsx +158 -0
- package/src/DropdownMenu/DropdownButton.tsx +15 -0
- package/src/DropdownMenu/DropdownMenu.tsx +115 -0
- package/src/DropdownMenu/index.ts +4 -0
- package/src/DropdownStyles.ts +128 -0
- package/src/FilterList.tsx +81 -0
- package/src/FilteredActionList/FilteredActionList.tsx +142 -0
- package/src/FilteredActionList/index.ts +2 -0
- package/src/FilteredSearch.tsx +28 -0
- package/src/Flash.tsx +77 -0
- package/src/Flex.tsx +15 -0
- package/src/FormGroup.tsx +27 -0
- package/src/Grid.tsx +15 -0
- package/src/Header.tsx +84 -0
- package/src/Heading.tsx +21 -0
- package/src/Label.tsx +75 -0
- package/src/LabelGroup.tsx +18 -0
- package/src/Link.tsx +46 -0
- package/src/NewButton/button-counter.tsx +15 -0
- package/src/NewButton/button.tsx +279 -0
- package/src/NewButton/index.ts +10 -0
- package/src/NewButton/types.ts +36 -0
- package/src/Overlay.tsx +198 -0
- package/src/Pagehead.tsx +17 -0
- package/src/Pagination/Pagination.tsx +214 -0
- package/src/Pagination/index.ts +4 -0
- package/src/Pagination/model.tsx +187 -0
- package/src/PointerBox.tsx +31 -0
- package/src/Popover.tsx +236 -0
- package/src/Portal/Portal.tsx +97 -0
- package/src/Portal/index.ts +5 -0
- package/src/Position.tsx +63 -0
- package/src/ProgressBar.tsx +52 -0
- package/src/SelectMenu/SelectMenu.tsx +125 -0
- package/src/SelectMenu/SelectMenuContext.tsx +9 -0
- package/src/SelectMenu/SelectMenuDivider.tsx +25 -0
- package/src/SelectMenu/SelectMenuFilter.tsx +51 -0
- package/src/SelectMenu/SelectMenuFooter.tsx +28 -0
- package/src/SelectMenu/SelectMenuHeader.tsx +50 -0
- package/src/SelectMenu/SelectMenuItem.tsx +137 -0
- package/src/SelectMenu/SelectMenuList.tsx +42 -0
- package/src/SelectMenu/SelectMenuLoadingAnimation.tsx +24 -0
- package/src/SelectMenu/SelectMenuModal.tsx +121 -0
- package/src/SelectMenu/SelectMenuTab.tsx +88 -0
- package/src/SelectMenu/SelectMenuTabPanel.tsx +30 -0
- package/src/SelectMenu/SelectMenuTabs.tsx +44 -0
- package/src/SelectMenu/hooks/useKeyboardNav.js +90 -0
- package/src/SelectMenu/index.ts +15 -0
- package/src/SelectPanel/SelectPanel.tsx +173 -0
- package/src/SelectPanel/index.ts +2 -0
- package/src/SideNav.tsx +193 -0
- package/src/Spinner.tsx +59 -0
- package/src/StateLabel.tsx +114 -0
- package/src/StyledOcticon.tsx +24 -0
- package/src/SubNav.tsx +129 -0
- package/src/TabNav.tsx +77 -0
- package/src/Text.tsx +13 -0
- package/src/TextInput.tsx +68 -0
- package/src/TextInputWithTokens.tsx +351 -0
- package/src/ThemeProvider.tsx +176 -0
- package/src/Timeline.tsx +141 -0
- package/src/Token/AvatarToken.tsx +54 -0
- package/src/Token/IssueLabelToken.tsx +150 -0
- package/src/Token/Token.tsx +126 -0
- package/src/Token/TokenBase.tsx +129 -0
- package/src/Token/_RemoveTokenButton.tsx +111 -0
- package/src/Token/_TokenTextContainer.tsx +47 -0
- package/src/Token/index.ts +3 -0
- package/src/Tooltip.tsx +263 -0
- package/src/Truncate.tsx +36 -0
- package/src/UnderlineNav.tsx +110 -0
- package/src/_TextInputWrapper.tsx +113 -0
- package/src/_UnstyledTextInput.tsx +19 -0
- package/src/__tests__/.eslintrc.json +11 -0
- package/src/__tests__/ActionList.test.tsx +53 -0
- package/src/__tests__/ActionList.types.test.tsx +51 -0
- package/src/__tests__/ActionList2.test.tsx +47 -0
- package/src/__tests__/ActionMenu.test.tsx +136 -0
- package/src/__tests__/AnchoredOverlay.test.tsx +150 -0
- package/src/__tests__/Autocomplete.test.tsx +444 -0
- package/src/__tests__/Avatar.test.tsx +44 -0
- package/src/__tests__/AvatarStack.test.tsx +48 -0
- package/src/__tests__/BorderBox.test.tsx +43 -0
- package/src/__tests__/Box.test.tsx +42 -0
- package/src/__tests__/BranchName.test.tsx +26 -0
- package/src/__tests__/Breadcrumbs.test.tsx +27 -0
- package/src/__tests__/BreadcrumbsItem.test.tsx +31 -0
- package/src/__tests__/Button.test.tsx +128 -0
- package/src/__tests__/Caret.test.tsx +36 -0
- package/src/__tests__/CircleBadge.test.tsx +66 -0
- package/src/__tests__/CircleOcticon.test.tsx +50 -0
- package/src/__tests__/ConfirmationDialog.test.tsx +120 -0
- package/src/__tests__/CounterLabel.test.tsx +50 -0
- package/src/__tests__/Details.test.tsx +115 -0
- package/src/__tests__/Dialog.test.tsx +155 -0
- package/src/__tests__/Dropdown.test.tsx +53 -0
- package/src/__tests__/DropdownMenu.test.tsx +136 -0
- package/src/__tests__/FilterList.test.tsx +26 -0
- package/src/__tests__/FilterListItem.test.tsx +31 -0
- package/src/__tests__/FilteredSearch.test.tsx +26 -0
- package/src/__tests__/Flash.test.tsx +45 -0
- package/src/__tests__/Flex.test.tsx +58 -0
- package/src/__tests__/FormGroup.test.tsx +38 -0
- package/src/__tests__/Grid.test.tsx +82 -0
- package/src/__tests__/Header.test.tsx +49 -0
- package/src/__tests__/Heading.test.tsx +91 -0
- package/src/__tests__/KeyPaths.types.test.ts +14 -0
- package/src/__tests__/Label.test.tsx +34 -0
- package/src/__tests__/LabelGroup.test.tsx +30 -0
- package/src/__tests__/Link.test.tsx +47 -0
- package/src/__tests__/Merge.types.test.ts +39 -0
- package/src/__tests__/NewButton.test.tsx +70 -0
- package/src/__tests__/Overlay.test.tsx +103 -0
- package/src/__tests__/Pagehead.test.tsx +23 -0
- package/src/__tests__/Pagination/Pagination.test.tsx +30 -0
- package/src/__tests__/Pagination/PaginationModel.test.tsx +133 -0
- package/src/__tests__/Pagination/__snapshots__/Pagination.test.tsx.snap +184 -0
- package/src/__tests__/PointerBox.test.tsx +34 -0
- package/src/__tests__/Popover.test.tsx +68 -0
- package/src/__tests__/Portal.test.tsx +103 -0
- package/src/__tests__/Position.test.tsx +117 -0
- package/src/__tests__/ProgressBar.test.tsx +40 -0
- package/src/__tests__/SelectMenu.test.tsx +142 -0
- package/src/__tests__/SelectPanel.test.tsx +63 -0
- package/src/__tests__/SideNav.test.tsx +62 -0
- package/src/__tests__/Spinner.test.tsx +42 -0
- package/src/__tests__/StateLabel.test.tsx +48 -0
- package/src/__tests__/StyledOcticon.test.tsx +26 -0
- package/src/__tests__/SubNav.test.tsx +50 -0
- package/src/__tests__/SubNavLink.test.tsx +31 -0
- package/src/__tests__/TabNav.test.tsx +32 -0
- package/src/__tests__/Text.test.tsx +78 -0
- package/src/__tests__/TextInput.test.tsx +49 -0
- package/src/__tests__/TextInputWithTokens.test.tsx +422 -0
- package/src/__tests__/ThemeProvider.test.tsx +441 -0
- package/src/__tests__/Timeline.test.tsx +58 -0
- package/src/__tests__/Token.test.tsx +118 -0
- package/src/__tests__/Tooltip.test.tsx +52 -0
- package/src/__tests__/Truncate.test.tsx +43 -0
- package/src/__tests__/UnderlineNav.test.tsx +58 -0
- package/src/__tests__/UnderlineNavLink.test.tsx +31 -0
- package/src/__tests__/__snapshots__/ActionList.test.tsx.snap +223 -0
- package/src/__tests__/__snapshots__/ActionList2.test.tsx.snap +14 -0
- package/src/__tests__/__snapshots__/ActionMenu.test.tsx.snap +80 -0
- package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +232 -0
- package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +3888 -0
- package/src/__tests__/__snapshots__/Avatar.test.tsx.snap +19 -0
- package/src/__tests__/__snapshots__/AvatarStack.test.tsx.snap +377 -0
- package/src/__tests__/__snapshots__/BorderBox.test.tsx.snap +14 -0
- package/src/__tests__/__snapshots__/Box.test.tsx.snap +201 -0
- package/src/__tests__/__snapshots__/BranchName.test.tsx.snap +17 -0
- package/src/__tests__/__snapshots__/Breadcrumbs.test.tsx.snap +29 -0
- package/src/__tests__/__snapshots__/BreadcrumbsItem.test.tsx.snap +79 -0
- package/src/__tests__/__snapshots__/Button.test.tsx.snap +840 -0
- package/src/__tests__/__snapshots__/Caret.test.tsx.snap +373 -0
- package/src/__tests__/__snapshots__/CircleBadge.test.tsx.snap +142 -0
- package/src/__tests__/__snapshots__/CircleOcticon.test.tsx.snap +65 -0
- package/src/__tests__/__snapshots__/ConfirmationDialog.test.tsx.snap +89 -0
- package/src/__tests__/__snapshots__/CounterLabel.test.tsx.snap +22 -0
- package/src/__tests__/__snapshots__/Details.test.tsx.snap +15 -0
- package/src/__tests__/__snapshots__/Dialog.test.tsx.snap +201 -0
- package/src/__tests__/__snapshots__/Dropdown.test.tsx.snap +249 -0
- package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +107 -0
- package/src/__tests__/__snapshots__/FilterList.test.tsx.snap +13 -0
- package/src/__tests__/__snapshots__/FilterListItem.test.tsx.snap +80 -0
- package/src/__tests__/__snapshots__/FilteredSearch.test.tsx.snap +32 -0
- package/src/__tests__/__snapshots__/Flash.test.tsx.snap +32 -0
- package/src/__tests__/__snapshots__/Flex.test.tsx.snap +130 -0
- package/src/__tests__/__snapshots__/FormGroup.test.tsx.snap +25 -0
- package/src/__tests__/__snapshots__/Grid.test.tsx.snap +178 -0
- package/src/__tests__/__snapshots__/Header.test.tsx.snap +79 -0
- package/src/__tests__/__snapshots__/Heading.test.tsx.snap +13 -0
- package/src/__tests__/__snapshots__/Label.test.tsx.snap +74 -0
- package/src/__tests__/__snapshots__/LabelGroup.test.tsx.snap +15 -0
- package/src/__tests__/__snapshots__/Link.test.tsx.snap +213 -0
- package/src/__tests__/__snapshots__/NewButton.test.tsx.snap +300 -0
- package/src/__tests__/__snapshots__/Pagehead.test.tsx.snap +15 -0
- package/src/__tests__/__snapshots__/PointerBox.test.tsx.snap +174 -0
- package/src/__tests__/__snapshots__/Popover.test.tsx.snap +4687 -0
- package/src/__tests__/__snapshots__/Position.test.tsx.snap +44 -0
- package/src/__tests__/__snapshots__/ProgressBar.test.tsx.snap +53 -0
- package/src/__tests__/__snapshots__/SelectMenu.test.tsx.snap +473 -0
- package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +124 -0
- package/src/__tests__/__snapshots__/SideNav.test.tsx.snap +143 -0
- package/src/__tests__/__snapshots__/Spinner.test.tsx.snap +33 -0
- package/src/__tests__/__snapshots__/StateLabel.test.tsx.snap +395 -0
- package/src/__tests__/__snapshots__/StyledOcticon.test.tsx.snap +26 -0
- package/src/__tests__/__snapshots__/SubNav.test.tsx.snap +44 -0
- package/src/__tests__/__snapshots__/SubNavLink.test.tsx.snap +199 -0
- package/src/__tests__/__snapshots__/TabNav.test.tsx.snap +58 -0
- package/src/__tests__/__snapshots__/Text.test.tsx.snap +7 -0
- package/src/__tests__/__snapshots__/TextInput.test.tsx.snap +446 -0
- package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +6045 -0
- package/src/__tests__/__snapshots__/ThemeProvider.test.tsx.snap +15 -0
- package/src/__tests__/__snapshots__/Timeline.test.tsx.snap +159 -0
- package/src/__tests__/__snapshots__/Token.test.tsx.snap +3811 -0
- package/src/__tests__/__snapshots__/Tooltip.test.tsx.snap +227 -0
- package/src/__tests__/__snapshots__/Truncate.test.tsx.snap +17 -0
- package/src/__tests__/__snapshots__/UnderlineNav.test.tsx.snap +59 -0
- package/src/__tests__/__snapshots__/UnderlineNavLink.test.tsx.snap +130 -0
- package/src/__tests__/behaviors/anchoredPosition.test.ts +295 -0
- package/src/__tests__/behaviors/focusTrap.test.tsx +236 -0
- package/src/__tests__/behaviors/focusZone.test.tsx +549 -0
- package/src/__tests__/behaviors/iterateFocusableElements.test.tsx +61 -0
- package/src/__tests__/behaviors/scrollIntoViewingArea.test.ts +195 -0
- package/src/__tests__/filterObject.test.ts +54 -0
- package/src/__tests__/hooks/useAnchoredPosition.test.tsx +31 -0
- package/src/__tests__/hooks/useOnEscapePress.test.tsx +16 -0
- package/src/__tests__/hooks/useOnOutsideClick.test.tsx +48 -0
- package/src/__tests__/hooks/useOpenAndCloseFocus.test.tsx +48 -0
- package/src/__tests__/hooks/useProvidedStateOrCreate.test.tsx +39 -0
- package/src/__tests__/theme.test.ts +41 -0
- package/src/__tests__/themeGet.test.ts +15 -0
- package/src/__tests__/useSafeTimeout.test.tsx +36 -0
- package/src/__tests__/utils/__snapshots__/createSlots.test.tsx.snap +55 -0
- package/src/__tests__/utils/createSlots.test.tsx +74 -0
- package/src/behaviors/anchoredPosition.ts +442 -0
- package/src/behaviors/focusTrap.ts +184 -0
- package/src/behaviors/focusZone.ts +713 -0
- package/src/behaviors/scrollIntoViewingArea.ts +27 -0
- package/src/constants.ts +62 -0
- package/src/drafts.ts +10 -0
- package/src/hooks/index.ts +11 -0
- package/src/hooks/useAnchoredPosition.ts +54 -0
- package/src/hooks/useCombinedRefs.ts +40 -0
- package/src/hooks/useDetails.tsx +54 -0
- package/src/hooks/useDialog.ts +121 -0
- package/src/hooks/useFocusTrap.ts +80 -0
- package/src/hooks/useFocusZone.ts +64 -0
- package/src/hooks/useOnEscapePress.ts +63 -0
- package/src/hooks/useOnOutsideClick.tsx +82 -0
- package/src/hooks/useOpenAndCloseFocus.ts +32 -0
- package/src/hooks/useOverlay.tsx +34 -0
- package/src/hooks/useProvidedRefOrCreate.ts +14 -0
- package/src/hooks/useProvidedStateOrCreate.ts +27 -0
- package/src/hooks/useRenderForcingRef.ts +22 -0
- package/src/hooks/useResizeObserver.ts +11 -0
- package/src/hooks/useSafeTimeout.ts +38 -0
- package/src/hooks/useScrollFlash.ts +21 -0
- package/src/index.ts +172 -0
- package/src/polyfills/eventListenerSignal.ts +66 -0
- package/src/stories/ActionList.stories.tsx +436 -0
- package/src/stories/ActionList2.stories.tsx +1291 -0
- package/src/stories/ActionMenu.stories.tsx +334 -0
- package/src/stories/AnchoredOverlay.stories.tsx +117 -0
- package/src/stories/Autocomplete.stories.tsx +655 -0
- package/src/stories/AvatarStack.stories.tsx +37 -0
- package/src/stories/Button.stories.tsx +92 -0
- package/src/stories/ConfirmationDialog.stories.tsx +105 -0
- package/src/stories/Dialog.stories.tsx +240 -0
- package/src/stories/DropdownMenu.stories.tsx +84 -0
- package/src/stories/IssueLabelToken.stories.tsx +138 -0
- package/src/stories/NewButton.stories.tsx +201 -0
- package/src/stories/Overlay.stories.tsx +213 -0
- package/src/stories/Portal.stories.tsx +109 -0
- package/src/stories/ProfileToken.stories.tsx +129 -0
- package/src/stories/SelectPanel.stories.tsx +353 -0
- package/src/stories/TextInput.stories.tsx +113 -0
- package/src/stories/TextInputWithTokens.stories.tsx +155 -0
- package/src/stories/ThemeProvider.stories.tsx +104 -0
- package/src/stories/Token.stories.tsx +137 -0
- package/src/stories/useAnchoredPosition.stories.tsx +332 -0
- package/src/stories/useFocusTrap.stories.tsx +400 -0
- package/src/stories/useFocusZone.stories.tsx +663 -0
- package/src/sx.ts +24 -0
- package/src/theme-preval.js +80 -0
- package/src/theme.ts +89 -0
- package/src/utils/create-slots.tsx +96 -0
- package/src/utils/deprecate.tsx +73 -0
- package/src/utils/isNumeric.tsx +4 -0
- package/src/utils/iterateFocusableElements.ts +121 -0
- package/src/utils/ssr.tsx +1 -0
- package/src/utils/test-deprecations.tsx +19 -0
- package/src/utils/test-helpers.tsx +7 -0
- package/src/utils/test-matchers.tsx +109 -0
- package/src/utils/testing.tsx +242 -0
- package/src/utils/theme.js +64 -0
- package/src/utils/types/AriaRole.ts +71 -0
- package/src/utils/types/ComponentProps.ts +13 -0
- package/src/utils/types/Flatten.ts +4 -0
- package/src/utils/types/KeyPaths.ts +10 -0
- package/src/utils/types/MandateProps.ts +19 -0
- package/src/utils/types/Merge.ts +20 -0
- package/src/utils/types/index.ts +5 -0
- package/src/utils/uniqueId.ts +6 -0
- package/src/utils/use-force-update.ts +7 -0
- package/src/utils/useIsomorphicLayoutEffect.ts +10 -0
- package/src/utils/userAgent.ts +7 -0
- package/stats.html +3279 -0
- package/tsconfig.base.json +20 -0
- package/tsconfig.build.json +7 -0
- package/tsconfig.json +7 -0
@@ -0,0 +1,32 @@
|
|
1
|
+
---
|
2
|
+
title: Spinner
|
3
|
+
status: Alpha
|
4
|
+
description: Use spinners to let users know that content is being loaded.
|
5
|
+
componentId: spinner
|
6
|
+
source: https://github.com/primer/components/blob/main/src/Spinner.tsx
|
7
|
+
---
|
8
|
+
|
9
|
+
import {Props} from '../src/props'
|
10
|
+
import {Spinner} from '@primer/components'
|
11
|
+
|
12
|
+
```jsx live
|
13
|
+
<Spinner />
|
14
|
+
```
|
15
|
+
|
16
|
+
## Props
|
17
|
+
|
18
|
+
<Props of={Spinner} />
|
19
|
+
|
20
|
+
## Examples
|
21
|
+
|
22
|
+
### Small
|
23
|
+
|
24
|
+
```jsx live
|
25
|
+
<Spinner size="small" />
|
26
|
+
```
|
27
|
+
|
28
|
+
### Large
|
29
|
+
|
30
|
+
```jsx live
|
31
|
+
<Spinner size="large" />
|
32
|
+
```
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
title: StateLabel
|
3
|
+
---
|
4
|
+
|
5
|
+
Use StateLabel components to show the status of an issue or pull request.
|
6
|
+
|
7
|
+
## Default example
|
8
|
+
|
9
|
+
```jsx live
|
10
|
+
<>
|
11
|
+
<StateLabel status="issueOpened">Open</StateLabel>
|
12
|
+
<StateLabel status="issueClosed">Closed</StateLabel>
|
13
|
+
<StateLabel status="pullOpened">Open</StateLabel>
|
14
|
+
<StateLabel status="pullClosed">Closed</StateLabel>
|
15
|
+
<StateLabel status="pullMerged">Merged</StateLabel>
|
16
|
+
<StateLabel status="draft">Draft</StateLabel>
|
17
|
+
<StateLabel status="issueDraft">Draft</StateLabel>
|
18
|
+
</>
|
19
|
+
```
|
20
|
+
|
21
|
+
## System props
|
22
|
+
|
23
|
+
<Note variant="warning">
|
24
|
+
|
25
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
26
|
+
|
27
|
+
</Note>
|
28
|
+
|
29
|
+
StateLabel components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
30
|
+
|
31
|
+
## Component props
|
32
|
+
|
33
|
+
| Name | Type | Default | Description |
|
34
|
+
| :------ | :----- | :------: | :------------------------------------------------------------------------------------------------------------- |
|
35
|
+
| variant | String | 'normal' | a value of `small` or `normal` results in a smaller or larger version of the StateLabel. |
|
36
|
+
| status | String | | Can be one of `issueOpened`, `issueClosed`, `pullOpened`, `pullClosed`, `pullMerged`, `draft` or `issueDraft`. |
|
@@ -0,0 +1,36 @@
|
|
1
|
+
---
|
2
|
+
title: StyledOcticon
|
3
|
+
tags: icon
|
4
|
+
---
|
5
|
+
|
6
|
+
StyledOcticon renders an [Octicon](https://octicons.github.com) with common system props, including `color`, margin, and padding.
|
7
|
+
|
8
|
+
## Default example
|
9
|
+
|
10
|
+
```jsx live
|
11
|
+
<>
|
12
|
+
<StyledOcticon icon={CheckIcon} size={32} color="success.fg" mr={2} />
|
13
|
+
<StyledOcticon icon={XIcon} size={32} color="danger.fg" />
|
14
|
+
</>
|
15
|
+
```
|
16
|
+
|
17
|
+
## System props
|
18
|
+
|
19
|
+
<Note variant="warning">
|
20
|
+
|
21
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
22
|
+
|
23
|
+
</Note>
|
24
|
+
|
25
|
+
StyledOcticon components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
26
|
+
|
27
|
+
## Component props
|
28
|
+
|
29
|
+
StyledOcticon passes all of its props except the common system props down to the [Octicon component](https://github.com/primer/octicons/tree/master/lib/octicons_react#usage), including:
|
30
|
+
|
31
|
+
| Name | Type | Default | Description |
|
32
|
+
| :------------ | :-------- | :-----------: | :----------------------------------------------------------------------------------------------------------- |
|
33
|
+
| ariaLabel | String | | Specifies the `aria-label` attribute, which is read verbatim by screen readers |
|
34
|
+
| icon | Component | | [Octicon component](https://github.com/primer/octicons/tree/master/lib/octicons_react) used in the component |
|
35
|
+
| size | Number | 16 | Sets the uniform `width` and `height` of the SVG element |
|
36
|
+
| verticalAlign | String | `text-bottom` | Sets the `vertical-align` CSS property |
|
@@ -0,0 +1,102 @@
|
|
1
|
+
---
|
2
|
+
title: SubNav
|
3
|
+
---
|
4
|
+
|
5
|
+
Use the SubNav component for navigation on a dashboard-type interface with another set of navigation components above it. This helps distinguish navigation hierarchy.
|
6
|
+
|
7
|
+
To use SubNav with [react-router](https://github.com/ReactTraining/react-router) or
|
8
|
+
[react-router-dom](https://www.npmjs.com/package/react-router-dom), pass
|
9
|
+
`as={NavLink}` and omit the `selected` prop.
|
10
|
+
This ensures that the NavLink gets `activeClassName='selected'`
|
11
|
+
|
12
|
+
**Attention:** Make sure to properly label your `SubNav` with an `aria-label` to provide context about the type of navigation contained in `SubNav`.
|
13
|
+
|
14
|
+
## Default example
|
15
|
+
|
16
|
+
```jsx live
|
17
|
+
<SubNav aria-label="Main">
|
18
|
+
<SubNav.Links>
|
19
|
+
<SubNav.Link href="#home" selected>
|
20
|
+
Home
|
21
|
+
</SubNav.Link>
|
22
|
+
<SubNav.Link href="#documentation">Documentation</SubNav.Link>
|
23
|
+
<SubNav.Link href="#support">Support</SubNav.Link>
|
24
|
+
</SubNav.Links>
|
25
|
+
</SubNav>
|
26
|
+
```
|
27
|
+
|
28
|
+
## SubNav with search example
|
29
|
+
|
30
|
+
```jsx live
|
31
|
+
<SubNav aria-label="Main">
|
32
|
+
<SubNav.Links>
|
33
|
+
<SubNav.Link href="#home" selected>
|
34
|
+
Home
|
35
|
+
</SubNav.Link>
|
36
|
+
<SubNav.Link href="#documentation">Documentation</SubNav.Link>
|
37
|
+
<SubNav.Link href="#support">Support</SubNav.Link>
|
38
|
+
</SubNav.Links>
|
39
|
+
|
40
|
+
<TextInput type="search" icon={SearchIcon} sx={{width: 320}} />
|
41
|
+
</SubNav>
|
42
|
+
```
|
43
|
+
|
44
|
+
## SubNav with filtered search example
|
45
|
+
|
46
|
+
```jsx live
|
47
|
+
<SubNav aria-label="Main">
|
48
|
+
<FilteredSearch>
|
49
|
+
<Dropdown>
|
50
|
+
<Dropdown.Button>Filter</Dropdown.Button>
|
51
|
+
<Dropdown.Menu direction="sw">
|
52
|
+
<Dropdown.Item>
|
53
|
+
<a href="#">Item 1</a>
|
54
|
+
</Dropdown.Item>
|
55
|
+
<Dropdown.Item>
|
56
|
+
<a href="#">Item 2</a>
|
57
|
+
</Dropdown.Item>
|
58
|
+
<Dropdown.Item>
|
59
|
+
<a href="#">Item 3</a>
|
60
|
+
</Dropdown.Item>
|
61
|
+
</Dropdown.Menu>
|
62
|
+
</Dropdown>
|
63
|
+
<TextInput type="search" icon={SearchIcon} width={320} />
|
64
|
+
</FilteredSearch>
|
65
|
+
<SubNav.Links>
|
66
|
+
<SubNav.Link href="#home" selected>
|
67
|
+
Home
|
68
|
+
</SubNav.Link>
|
69
|
+
<SubNav.Link href="#documentation">Documentation</SubNav.Link>
|
70
|
+
<SubNav.Link href="#support">Support</SubNav.Link>
|
71
|
+
</SubNav.Links>
|
72
|
+
</SubNav>
|
73
|
+
```
|
74
|
+
|
75
|
+
## System props
|
76
|
+
|
77
|
+
<Note variant="warning">
|
78
|
+
|
79
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
80
|
+
|
81
|
+
</Note>
|
82
|
+
|
83
|
+
SubNav and SubNav.Link components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
84
|
+
|
85
|
+
## Component props
|
86
|
+
|
87
|
+
### SubNav
|
88
|
+
|
89
|
+
| Prop name | Type | Description |
|
90
|
+
| :--------- | :------ | :------------------------------------------------------------------------------------- |
|
91
|
+
| actions | Node | Place another element, such as a button, to the opposite side of the navigation items. |
|
92
|
+
| align | String | Use `right` to have navigation items aligned right. |
|
93
|
+
| full | Boolean | Used to make navigation fill the width of the container. |
|
94
|
+
| aria-label | String | Used to set the `aria-label` on the top level `<nav>` element. |
|
95
|
+
|
96
|
+
### SubNav.Link
|
97
|
+
|
98
|
+
| Prop name | Type | Description |
|
99
|
+
| :-------- | :------ | :----------------------------------------------- |
|
100
|
+
| as | String | sets the HTML tag for the component |
|
101
|
+
| href | String | URL to be used for the Link |
|
102
|
+
| selected | Boolean | Used to style the link as selected or unselected |
|
@@ -0,0 +1,50 @@
|
|
1
|
+
---
|
2
|
+
title: TabNav
|
3
|
+
---
|
4
|
+
|
5
|
+
Use the TabNav component to style navigation with a tab-based selected state, typically used for navigation placed at the top of the page.
|
6
|
+
|
7
|
+
To use TabNav with [react-router](https://github.com/ReactTraining/react-router) or
|
8
|
+
[react-router-dom](https://www.npmjs.com/package/react-router-dom), pass
|
9
|
+
`as={NavLink}` and omit the `selected` prop.
|
10
|
+
This ensures that the NavLink gets `activeClassName='selected'`
|
11
|
+
|
12
|
+
**Attention:** Make sure to properly label your `TabNav` with an `aria-label` to provide context about the type of navigation contained in `TabNav`.
|
13
|
+
|
14
|
+
## Default example
|
15
|
+
|
16
|
+
```jsx live
|
17
|
+
<TabNav aria-label="Main">
|
18
|
+
<TabNav.Link href="#home" selected>
|
19
|
+
Home
|
20
|
+
</TabNav.Link>
|
21
|
+
<TabNav.Link href="#documentation">Documentation</TabNav.Link>
|
22
|
+
<TabNav.Link href="#support">Support</TabNav.Link>
|
23
|
+
</TabNav>
|
24
|
+
```
|
25
|
+
|
26
|
+
## System props
|
27
|
+
|
28
|
+
<Note variant="warning">
|
29
|
+
|
30
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
31
|
+
|
32
|
+
</Note>
|
33
|
+
|
34
|
+
TabNav and TabNav.Link components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
35
|
+
|
36
|
+
## Component props
|
37
|
+
|
38
|
+
### TabNav
|
39
|
+
|
40
|
+
| Prop name | Type | Description |
|
41
|
+
| :--------- | :----- | :------------------------------------------------------------- |
|
42
|
+
| aria-label | String | Used to set the `aria-label` on the top level `<nav>` element. |
|
43
|
+
|
44
|
+
### TabNav.Link
|
45
|
+
|
46
|
+
| Prop name | Type | Description |
|
47
|
+
| :-------- | :------ | :----------------------------------------------- |
|
48
|
+
| as | String | sets the HTML tag for the component |
|
49
|
+
| href | String | URL to be used for the Link |
|
50
|
+
| selected | Boolean | Used to style the link as selected or unselected |
|
@@ -0,0 +1,31 @@
|
|
1
|
+
---
|
2
|
+
title: Text
|
3
|
+
---
|
4
|
+
|
5
|
+
The Text component is a wrapper component that will apply typography styles to the text inside.
|
6
|
+
|
7
|
+
## Default example
|
8
|
+
|
9
|
+
```jsx live
|
10
|
+
<>
|
11
|
+
<Text as='p' fontWeight="bold">bold</Text>
|
12
|
+
<Text as='p' color="danger.fg">danger color</Text>
|
13
|
+
<Text as='p' color="fg.onEmphasis" bg="neutral.emphasis" p={2}>inverse colors</Text>
|
14
|
+
</>
|
15
|
+
```
|
16
|
+
|
17
|
+
## System props
|
18
|
+
|
19
|
+
<Note variant="warning">
|
20
|
+
|
21
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
22
|
+
|
23
|
+
</Note>
|
24
|
+
|
25
|
+
Text components get `TYPOGRAPHY` and `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
26
|
+
|
27
|
+
## Component props
|
28
|
+
|
29
|
+
| Name | Type | Default | Description |
|
30
|
+
| :--- | :----- | :-----: | :---------------------------------- |
|
31
|
+
| as | String | `span` | Sets the HTML tag for the component |
|
@@ -0,0 +1,34 @@
|
|
1
|
+
---
|
2
|
+
title: TextInput
|
3
|
+
---
|
4
|
+
|
5
|
+
TextInput is a form component to add default styling to the native text input.
|
6
|
+
|
7
|
+
**Note:** Don't forget to set `aria-label` to make the TextInput accessible to screen reader users.
|
8
|
+
|
9
|
+
## Default example
|
10
|
+
|
11
|
+
```jsx live
|
12
|
+
<>
|
13
|
+
<TextInput aria-label="Zipcode" name="zipcode" placeholder="Zipcode" autoComplete="postal-code" />
|
14
|
+
|
15
|
+
<TextInput sx={{ml: 4}} aria-label="City" name="city" placeholder="City" contrast />
|
16
|
+
|
17
|
+
<TextInput sx={{ml: 4}} icon={SearchIcon} aria-label="Zipcode" name="zipcode" placeholder="Find user" autoComplete="postal-code" />
|
18
|
+
</>
|
19
|
+
```
|
20
|
+
|
21
|
+
## Component props
|
22
|
+
|
23
|
+
Native `<input>` attributes are forwarded to the underlying React `input` component and are not listed below.
|
24
|
+
|
25
|
+
| Name | Type | Default | Description |
|
26
|
+
| :--------- | :------------------------------------------------------------------------ | :-----: | :------------------------------------------------------------------------------------ |
|
27
|
+
| aria-label | String | | Required. Allows input to be accessible. |
|
28
|
+
| block | Boolean | | Adds `display: block` to element |
|
29
|
+
| contrast | Boolean | | Changes background color to a higher contrast color |
|
30
|
+
| variant | String | | Can be either `small` or `large`. Creates a smaller or larger input than the default. |
|
31
|
+
| width | String or Number | | Set the width of the input |
|
32
|
+
| maxWidth | String or Number or [Array](https://styled-system.com/guides/array-props) | | Set the maximum width of the input |
|
33
|
+
| minWidth | String or Number or [Array](https://styled-system.com/guides/array-props) | | Set the minimum width of the input |
|
34
|
+
| icon | Node (pass Octicon react component) | | Icon to be used inside of input. Positioned on the left edge. |
|
@@ -0,0 +1,89 @@
|
|
1
|
+
---
|
2
|
+
title: TextInputWithTokens
|
3
|
+
status: Alpha
|
4
|
+
source: https://github.com/primer/react/tree/main/src/TextInputWithTokens.tsx
|
5
|
+
---
|
6
|
+
|
7
|
+
import {Props} from '../src/props'
|
8
|
+
import {TextInputWithTokens} from '@primer/components'
|
9
|
+
|
10
|
+
A `TextInputWithTokens` component is used to show multiple values in one field.
|
11
|
+
|
12
|
+
It supports all of the features of a [TextInput](/TextInput) component, but it can render a list of [Tokens](/Token) next to the area a user types in.
|
13
|
+
|
14
|
+
## Basic Example
|
15
|
+
|
16
|
+
```javascript live noinline
|
17
|
+
const BasicExample = () => {
|
18
|
+
const [tokens, setTokens] = React.useState([
|
19
|
+
{text: 'zero', id: 0},
|
20
|
+
{text: 'one', id: 1},
|
21
|
+
{text: 'two', id: 2}
|
22
|
+
])
|
23
|
+
const onTokenRemove = tokenId => {
|
24
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
25
|
+
}
|
26
|
+
|
27
|
+
return (
|
28
|
+
<>
|
29
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-basic">
|
30
|
+
Basic example tokens
|
31
|
+
</Box>
|
32
|
+
<TextInputWithTokens tokens={tokens} onTokenRemove={onTokenRemove} id="inputWithTokens-basic" />
|
33
|
+
</>
|
34
|
+
)
|
35
|
+
}
|
36
|
+
|
37
|
+
render(BasicExample)
|
38
|
+
```
|
39
|
+
|
40
|
+
## Component Props
|
41
|
+
|
42
|
+
<Props of={TextInputWithTokens} />
|
43
|
+
|
44
|
+
## Adding and removing tokens
|
45
|
+
|
46
|
+
The array passed to the `tokens` prop needs to be manually updated to add and remove tokens.
|
47
|
+
|
48
|
+
The function passed to the `onRemoveToken` prop is called when:
|
49
|
+
|
50
|
+
- Clicking the remove button in the token
|
51
|
+
- Pressing the `Backspace` key when the input is empty
|
52
|
+
- Selecting a token using the arrow keys or by clicking on a token and then pressing the `Backspace` key
|
53
|
+
|
54
|
+
There is no function that gets called to "add" a token, so the user needs to be provided with a UI to select tokens.
|
55
|
+
|
56
|
+
## Custom token rendering
|
57
|
+
|
58
|
+
By default, the `Token` component is used to render the tokens in the input. If this component does not make sense for the kinds of tokens you're rendering, you can pass a component to the `tokenComponent` prop
|
59
|
+
|
60
|
+
Example: a `TextInputWithTokens` that renders tokens as `IssueLabelToken`:
|
61
|
+
|
62
|
+
```javascript live noinline
|
63
|
+
const UsingIssueLabelTokens = () => {
|
64
|
+
const [tokens, setTokens] = React.useState([
|
65
|
+
{text: 'enhancement', id: 1, fillColor: '#a2eeef'},
|
66
|
+
{text: 'bug', id: 2, fillColor: '#d73a4a'},
|
67
|
+
{text: 'good first issue', id: 3, fillColor: '#0cf478'}
|
68
|
+
])
|
69
|
+
const onTokenRemove = tokenId => {
|
70
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
71
|
+
}
|
72
|
+
|
73
|
+
return (
|
74
|
+
<>
|
75
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-issueLabels">
|
76
|
+
Issue labels
|
77
|
+
</Box>
|
78
|
+
<TextInputWithTokens
|
79
|
+
tokenComponent={IssueLabelToken}
|
80
|
+
tokens={tokens}
|
81
|
+
onTokenRemove={onTokenRemove}
|
82
|
+
id="inputWithTokens-issueLabels"
|
83
|
+
/>
|
84
|
+
</>
|
85
|
+
)
|
86
|
+
}
|
87
|
+
|
88
|
+
render(<UsingIssueLabelTokens />)
|
89
|
+
```
|
@@ -0,0 +1,211 @@
|
|
1
|
+
---
|
2
|
+
title: TextInputWithTokens
|
3
|
+
status: Alpha
|
4
|
+
source: https://github.com/primer/react/tree/main/src/TextInputWithTokens.tsx
|
5
|
+
---
|
6
|
+
|
7
|
+
import {Props} from '../src/props'
|
8
|
+
import {TextInputWithTokens} from '@primer/components'
|
9
|
+
|
10
|
+
A `TextInputWithTokens` component is used to show multiple values in one field.
|
11
|
+
|
12
|
+
It supports all of the features of a [TextInput](/TextInput) component, but it can render a list of [Tokens](/Token) next to the area a user types in.
|
13
|
+
|
14
|
+
## Basic Example
|
15
|
+
|
16
|
+
```javascript live noinline
|
17
|
+
const BasicExample = () => {
|
18
|
+
const [tokens, setTokens] = React.useState([
|
19
|
+
{text: 'zero', id: 0},
|
20
|
+
{text: 'one', id: 1},
|
21
|
+
{text: 'two', id: 2}
|
22
|
+
])
|
23
|
+
const onTokenRemove = tokenId => {
|
24
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
25
|
+
}
|
26
|
+
|
27
|
+
return (
|
28
|
+
<>
|
29
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-basic">
|
30
|
+
Basic example tokens
|
31
|
+
</Box>
|
32
|
+
<TextInputWithTokens tokens={tokens} onTokenRemove={onTokenRemove} id="inputWithTokens-basic" />
|
33
|
+
</>
|
34
|
+
)
|
35
|
+
}
|
36
|
+
|
37
|
+
render(BasicExample)
|
38
|
+
```
|
39
|
+
|
40
|
+
## Component Props
|
41
|
+
|
42
|
+
| Name | Type | Default | Description |
|
43
|
+
| :--------------------- | :------------------------------------ | :----------: | :------------------------------------------------------------------------------------------------------------------------ |
|
44
|
+
| tokens | `TokenProps[]` | `undefined` | Required. The array of tokens to render |
|
45
|
+
| onTokenRemove | `(tokenId: string \| number) => void` | `undefined` | Required. The function that gets called when a token is removed |
|
46
|
+
| tokenComponent | `React.ComponentType<any>` | `Token` | Optional. The component used to render each token |
|
47
|
+
| maxHeight | `React.CSSProperties['maxHeight']` | `undefined` | Optional. The maximum height of the component. If the content in the input exceeds this height, it will scroll vertically |
|
48
|
+
| preventTokenWrapping | `boolean` | `false` | Optional. Whether tokens should render inline horizontally. By default, tokens wrap to new lines. |
|
49
|
+
| size | `TokenSizeKeys` | `extralarge` | Optional. The size of the tokens |
|
50
|
+
| hideTokenRemoveButtons | `boolean` | `false` | Optional. Whether the remove buttons should be rendered in the tokens |
|
51
|
+
| visibleTokenCount | `number` | `undefined` | Optional. The number of tokens to display before truncating |
|
52
|
+
|
53
|
+
## Adding and removing tokens
|
54
|
+
|
55
|
+
The array passed to the `tokens` prop needs to be manually updated to add and remove tokens.
|
56
|
+
|
57
|
+
The function passed to the `onRemoveToken` prop is called when:
|
58
|
+
|
59
|
+
- Clicking the remove button in the token
|
60
|
+
- Pressing the `Backspace` key when the input is empty
|
61
|
+
- Selecting a token using the arrow keys or by clicking on a token and then pressing the `Backspace` key
|
62
|
+
|
63
|
+
There is no function that gets called to "add" a token, so the user needs to be provided with a UI to select tokens.
|
64
|
+
|
65
|
+
## Custom token rendering
|
66
|
+
|
67
|
+
By default, the `Token` component is used to render the tokens in the input. If this component does not make sense for the kinds of tokens you're rendering, you can pass a component to the `tokenComponent` prop
|
68
|
+
|
69
|
+
Example: a `TextInputWithTokens` that renders tokens as `IssueLabelToken`:
|
70
|
+
|
71
|
+
```javascript live noinline
|
72
|
+
const UsingIssueLabelTokens = () => {
|
73
|
+
const [tokens, setTokens] = React.useState([
|
74
|
+
{text: 'enhancement', id: 1, fillColor: '#a2eeef'},
|
75
|
+
{text: 'bug', id: 2, fillColor: '#d73a4a'},
|
76
|
+
{text: 'good first issue', id: 3, fillColor: '#0cf478'}
|
77
|
+
])
|
78
|
+
const onTokenRemove = tokenId => {
|
79
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
80
|
+
}
|
81
|
+
|
82
|
+
return (
|
83
|
+
<>
|
84
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-issueLabels">
|
85
|
+
Issue labels
|
86
|
+
</Box>
|
87
|
+
<TextInputWithTokens
|
88
|
+
tokenComponent={IssueLabelToken}
|
89
|
+
tokens={tokens}
|
90
|
+
onTokenRemove={onTokenRemove}
|
91
|
+
id="inputWithTokens-issueLabels"
|
92
|
+
/>
|
93
|
+
</>
|
94
|
+
)
|
95
|
+
}
|
96
|
+
|
97
|
+
render(<UsingIssueLabelTokens />)
|
98
|
+
```
|
99
|
+
|
100
|
+
## Dealing with long lists of tokens
|
101
|
+
|
102
|
+
By default, all tokens will be visible when the component is rendered.
|
103
|
+
|
104
|
+
If the component is being used in an area where it's height needs to be constrained, there are options to limit the height of the input.
|
105
|
+
|
106
|
+
### Hide and show tokens
|
107
|
+
|
108
|
+
```javascript live noinline
|
109
|
+
const VisibleTokenCountExample = () => {
|
110
|
+
const [tokens, setTokens] = React.useState([
|
111
|
+
{text: 'zero', id: 0},
|
112
|
+
{text: 'one', id: 1},
|
113
|
+
{text: 'two', id: 2},
|
114
|
+
{text: 'three', id: 3}
|
115
|
+
])
|
116
|
+
const onTokenRemove = tokenId => {
|
117
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
118
|
+
}
|
119
|
+
|
120
|
+
return (
|
121
|
+
<Box maxWidth="500px">
|
122
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-basic">
|
123
|
+
Tokens truncated after 2
|
124
|
+
</Box>
|
125
|
+
<TextInputWithTokens
|
126
|
+
visibleTokenCount={2}
|
127
|
+
block
|
128
|
+
tokens={tokens}
|
129
|
+
onTokenRemove={onTokenRemove}
|
130
|
+
id="inputWithTokens-basic"
|
131
|
+
/>
|
132
|
+
</Box>
|
133
|
+
)
|
134
|
+
}
|
135
|
+
|
136
|
+
render(VisibleTokenCountExample)
|
137
|
+
```
|
138
|
+
|
139
|
+
### Render tokens on a single line
|
140
|
+
|
141
|
+
```javascript live noinline
|
142
|
+
const PreventTokenWrappingExample = () => {
|
143
|
+
const [tokens, setTokens] = React.useState([
|
144
|
+
{text: 'zero', id: 0},
|
145
|
+
{text: 'one', id: 1},
|
146
|
+
{text: 'two', id: 2},
|
147
|
+
{text: 'three', id: 3},
|
148
|
+
{text: 'four', id: 4},
|
149
|
+
{text: 'five', id: 5},
|
150
|
+
{text: 'six', id: 6},
|
151
|
+
{text: 'seven', id: 7}
|
152
|
+
])
|
153
|
+
const onTokenRemove = tokenId => {
|
154
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
155
|
+
}
|
156
|
+
|
157
|
+
return (
|
158
|
+
<Box maxWidth="500px">
|
159
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-basic">
|
160
|
+
Tokens on one line
|
161
|
+
</Box>
|
162
|
+
<TextInputWithTokens
|
163
|
+
preventTokenWrapping
|
164
|
+
block
|
165
|
+
tokens={tokens}
|
166
|
+
onTokenRemove={onTokenRemove}
|
167
|
+
id="inputWithTokens-basic"
|
168
|
+
/>
|
169
|
+
</Box>
|
170
|
+
)
|
171
|
+
}
|
172
|
+
|
173
|
+
render(PreventTokenWrappingExample)
|
174
|
+
```
|
175
|
+
|
176
|
+
### Set a maximum height for the input
|
177
|
+
|
178
|
+
```javascript live noinline
|
179
|
+
const MaxHeightExample = () => {
|
180
|
+
const [tokens, setTokens] = React.useState([
|
181
|
+
{text: 'zero', id: 0},
|
182
|
+
{text: 'one', id: 1},
|
183
|
+
{text: 'two', id: 2},
|
184
|
+
{text: 'three', id: 3},
|
185
|
+
{text: 'four', id: 4},
|
186
|
+
{text: 'five', id: 5},
|
187
|
+
{text: 'six', id: 6},
|
188
|
+
{text: 'seven', id: 7}
|
189
|
+
])
|
190
|
+
const onTokenRemove = tokenId => {
|
191
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
192
|
+
}
|
193
|
+
|
194
|
+
return (
|
195
|
+
<Box maxWidth="500px">
|
196
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-basic">
|
197
|
+
Tokens restricted to a max height
|
198
|
+
</Box>
|
199
|
+
<TextInputWithTokens
|
200
|
+
maxHeight="50px"
|
201
|
+
block
|
202
|
+
tokens={tokens}
|
203
|
+
onTokenRemove={onTokenRemove}
|
204
|
+
id="inputWithTokens-basic"
|
205
|
+
/>
|
206
|
+
</Box>
|
207
|
+
)
|
208
|
+
}
|
209
|
+
|
210
|
+
render(MaxHeightExample)
|
211
|
+
```
|