@primer/components 31.0.0 → 31.0.2-rc.c7dafefb
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 +31 -0
- package/.github/workflows/deploy_preview.yml +47 -0
- package/.github/workflows/deploy_production.yml +70 -0
- package/.github/workflows/release.yml +35 -0
- package/.github/workflows/release_canary.yml +70 -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 +11 -0
- package/.storybook/preview.js +113 -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 +14 -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 +46 -43
- package/dist/browser.esm.js.map +1 -1
- package/dist/browser.umd.js +45 -42
- 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/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 +35 -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 +97 -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 +249 -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 +23 -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 +56 -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.d.ts +6 -0
- package/lib/ActionList/Item.js +5 -1
- package/lib/TextInputWithTokens.js +42 -22
- package/lib/Token/Token.js +13 -2
- package/lib/Token/TokenBase.js +0 -4
- package/lib/Token/_RemoveTokenButton.js +15 -2
- package/lib/__tests__/ActionList.test.d.ts +1 -0
- package/lib/__tests__/ActionList.test.js +69 -0
- package/lib/__tests__/ActionList.types.test.d.ts +6 -0
- package/lib/__tests__/ActionList.types.test.js +69 -0
- package/lib/__tests__/ActionMenu.test.d.ts +1 -0
- package/lib/__tests__/ActionMenu.test.js +151 -0
- package/lib/__tests__/AnchoredOverlay.test.d.ts +1 -0
- package/lib/__tests__/AnchoredOverlay.test.js +160 -0
- package/lib/__tests__/Autocomplete.test.d.ts +1 -0
- package/lib/__tests__/Autocomplete.test.js +528 -0
- package/lib/__tests__/Avatar.test.d.ts +1 -0
- package/lib/__tests__/Avatar.test.js +67 -0
- package/lib/__tests__/AvatarStack.test.d.ts +1 -0
- package/lib/__tests__/AvatarStack.test.js +71 -0
- package/lib/__tests__/BorderBox.test.d.ts +1 -0
- package/lib/__tests__/BorderBox.test.js +58 -0
- package/lib/__tests__/Box.test.d.ts +1 -0
- package/lib/__tests__/Box.test.js +78 -0
- package/lib/__tests__/BranchName.test.d.ts +1 -0
- package/lib/__tests__/BranchName.test.js +36 -0
- package/lib/__tests__/Breadcrumbs.test.d.ts +1 -0
- package/lib/__tests__/Breadcrumbs.test.js +37 -0
- package/lib/__tests__/BreadcrumbsItem.test.d.ts +1 -0
- package/lib/__tests__/BreadcrumbsItem.test.js +49 -0
- package/lib/__tests__/Button.test.d.ts +1 -0
- package/lib/__tests__/Button.test.js +143 -0
- package/lib/__tests__/Caret.test.d.ts +1 -0
- package/lib/__tests__/Caret.test.js +52 -0
- package/lib/__tests__/CircleBadge.test.d.ts +1 -0
- package/lib/__tests__/CircleBadge.test.js +83 -0
- package/lib/__tests__/CircleOcticon.test.d.ts +1 -0
- package/lib/__tests__/CircleOcticon.test.js +71 -0
- package/lib/__tests__/ConfirmationDialog.test.d.ts +1 -0
- package/lib/__tests__/ConfirmationDialog.test.js +134 -0
- package/lib/__tests__/CounterLabel.test.d.ts +1 -0
- package/lib/__tests__/CounterLabel.test.js +58 -0
- package/lib/__tests__/Details.test.d.ts +1 -0
- package/lib/__tests__/Details.test.js +117 -0
- package/lib/__tests__/Dialog.test.d.ts +1 -0
- package/lib/__tests__/Dialog.test.js +184 -0
- package/lib/__tests__/Dropdown.test.d.ts +1 -0
- package/lib/__tests__/Dropdown.test.js +63 -0
- package/lib/__tests__/DropdownMenu.test.d.ts +1 -0
- package/lib/__tests__/DropdownMenu.test.js +150 -0
- package/lib/__tests__/FilterList.test.d.ts +1 -0
- package/lib/__tests__/FilterList.test.js +36 -0
- package/lib/__tests__/FilterListItem.test.d.ts +1 -0
- package/lib/__tests__/FilterListItem.test.js +46 -0
- package/lib/__tests__/FilteredSearch.test.d.ts +1 -0
- package/lib/__tests__/FilteredSearch.test.js +36 -0
- package/lib/__tests__/Flash.test.d.ts +1 -0
- package/lib/__tests__/Flash.test.js +62 -0
- package/lib/__tests__/Flex.test.d.ts +1 -0
- package/lib/__tests__/Flex.test.js +74 -0
- package/lib/__tests__/FormGroup.test.d.ts +1 -0
- package/lib/__tests__/FormGroup.test.js +54 -0
- package/lib/__tests__/Grid.test.d.ts +1 -0
- package/lib/__tests__/Grid.test.js +104 -0
- package/lib/__tests__/Header.test.d.ts +1 -0
- package/lib/__tests__/Header.test.js +58 -0
- package/lib/__tests__/Heading.test.d.ts +1 -0
- package/lib/__tests__/Heading.test.js +109 -0
- package/lib/__tests__/Label.test.d.ts +1 -0
- package/lib/__tests__/Label.test.js +46 -0
- package/lib/__tests__/LabelGroup.test.d.ts +1 -0
- package/lib/__tests__/LabelGroup.test.js +38 -0
- package/lib/__tests__/Link.test.d.ts +1 -0
- package/lib/__tests__/Link.test.js +70 -0
- package/lib/__tests__/Merge.types.test.d.ts +30 -0
- package/lib/__tests__/Merge.types.test.js +27 -0
- package/lib/__tests__/Overlay.test.d.ts +1 -0
- package/lib/__tests__/Overlay.test.js +145 -0
- package/lib/__tests__/Pagehead.test.d.ts +1 -0
- package/lib/__tests__/Pagehead.test.js +37 -0
- package/lib/__tests__/Pagination/Pagination.test.d.ts +1 -0
- package/lib/__tests__/Pagination/Pagination.test.js +47 -0
- package/lib/__tests__/Pagination/PaginationModel.test.d.ts +1 -0
- package/lib/__tests__/Pagination/PaginationModel.test.js +186 -0
- package/lib/__tests__/PointerBox.test.d.ts +1 -0
- package/lib/__tests__/PointerBox.test.js +46 -0
- package/lib/__tests__/Popover.test.d.ts +1 -0
- package/lib/__tests__/Popover.test.js +66 -0
- package/lib/__tests__/Portal.test.d.ts +1 -0
- package/lib/__tests__/Portal.test.js +124 -0
- package/lib/__tests__/Position.test.d.ts +1 -0
- package/lib/__tests__/Position.test.js +143 -0
- package/lib/__tests__/ProgressBar.test.d.ts +1 -0
- package/lib/__tests__/ProgressBar.test.js +68 -0
- package/lib/__tests__/SelectMenu.test.d.ts +1 -0
- package/lib/__tests__/SelectMenu.test.js +155 -0
- package/lib/__tests__/SelectPanel.test.d.ts +1 -0
- package/lib/__tests__/SelectPanel.test.js +80 -0
- package/lib/__tests__/SideNav.test.d.ts +1 -0
- package/lib/__tests__/SideNav.test.js +71 -0
- package/lib/__tests__/Spinner.test.d.ts +1 -0
- package/lib/__tests__/Spinner.test.js +53 -0
- package/lib/__tests__/StateLabel.test.d.ts +1 -0
- package/lib/__tests__/StateLabel.test.js +71 -0
- package/lib/__tests__/StyledOcticon.test.d.ts +1 -0
- package/lib/__tests__/StyledOcticon.test.js +40 -0
- package/lib/__tests__/SubNav.test.d.ts +1 -0
- package/lib/__tests__/SubNav.test.js +62 -0
- package/lib/__tests__/SubNavLink.test.d.ts +1 -0
- package/lib/__tests__/SubNavLink.test.js +49 -0
- package/lib/__tests__/TabNav.test.d.ts +1 -0
- package/lib/__tests__/TabNav.test.js +49 -0
- package/lib/__tests__/Text.test.d.ts +1 -0
- package/lib/__tests__/Text.test.js +105 -0
- package/lib/__tests__/TextInput.test.d.ts +1 -0
- package/lib/__tests__/TextInput.test.js +78 -0
- package/lib/__tests__/TextInputWithTokens.test.d.ts +1 -0
- package/lib/__tests__/TextInputWithTokens.test.js +441 -0
- package/lib/__tests__/ThemeProvider.test.d.ts +1 -0
- package/lib/__tests__/ThemeProvider.test.js +444 -0
- package/lib/__tests__/Timeline.test.d.ts +1 -0
- package/lib/__tests__/Timeline.test.js +75 -0
- package/lib/__tests__/Token.test.d.ts +1 -0
- package/lib/__tests__/Token.test.js +180 -0
- package/lib/__tests__/Tooltip.test.d.ts +1 -0
- package/lib/__tests__/Tooltip.test.js +69 -0
- package/lib/__tests__/Truncate.test.d.ts +1 -0
- package/lib/__tests__/Truncate.test.js +63 -0
- package/lib/__tests__/UnderlineNav.test.d.ts +1 -0
- package/lib/__tests__/UnderlineNav.test.js +72 -0
- package/lib/__tests__/UnderlineNavLink.test.d.ts +1 -0
- package/lib/__tests__/UnderlineNavLink.test.js +51 -0
- package/lib/__tests__/behaviors/anchoredPosition.test.d.ts +1 -0
- package/lib/__tests__/behaviors/anchoredPosition.test.js +390 -0
- package/lib/__tests__/behaviors/focusTrap.test.d.ts +1 -0
- package/lib/__tests__/behaviors/focusTrap.test.js +234 -0
- package/lib/__tests__/behaviors/focusZone.test.d.ts +1 -0
- package/lib/__tests__/behaviors/focusZone.test.js +570 -0
- package/lib/__tests__/behaviors/iterateFocusableElements.test.d.ts +1 -0
- package/lib/__tests__/behaviors/iterateFocusableElements.test.js +55 -0
- package/lib/__tests__/behaviors/scrollIntoViewingArea.test.d.ts +1 -0
- package/lib/__tests__/behaviors/scrollIntoViewingArea.test.js +226 -0
- package/lib/__tests__/filterObject.test.d.ts +1 -0
- package/lib/__tests__/filterObject.test.js +30 -0
- package/lib/__tests__/hooks/useAnchoredPosition.test.d.ts +1 -0
- package/lib/__tests__/hooks/useAnchoredPosition.test.js +54 -0
- package/lib/__tests__/hooks/useOnEscapePress.test.d.ts +1 -0
- package/lib/__tests__/hooks/useOnEscapePress.test.js +32 -0
- package/lib/__tests__/hooks/useOnOutsideClick.test.d.ts +1 -0
- package/lib/__tests__/hooks/useOnOutsideClick.test.js +87 -0
- package/lib/__tests__/hooks/useOpenAndCloseFocus.test.d.ts +1 -0
- package/lib/__tests__/hooks/useOpenAndCloseFocus.test.js +60 -0
- package/lib/__tests__/hooks/useProvidedStateOrCreate.test.d.ts +1 -0
- package/lib/__tests__/hooks/useProvidedStateOrCreate.test.js +45 -0
- package/lib/__tests__/theme.test.d.ts +1 -0
- package/lib/__tests__/theme.test.js +36 -0
- package/lib/__tests__/themeGet.test.d.ts +1 -0
- package/lib/__tests__/themeGet.test.js +25 -0
- package/lib/__tests__/useSafeTimeout.test.d.ts +1 -0
- package/lib/__tests__/useSafeTimeout.test.js +45 -0
- package/lib/stories/ActionList.stories.js +454 -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/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/TextInputWithTokens.stories.js +235 -0
- package/lib/stories/ThemeProvider.stories.js +102 -0
- package/lib/stories/Token.stories.js +159 -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.d.ts +6 -0
- package/lib-esm/ActionList/Item.js +5 -1
- package/lib-esm/TextInputWithTokens.js +42 -23
- package/lib-esm/Token/Token.js +13 -2
- package/lib-esm/Token/TokenBase.js +0 -4
- package/lib-esm/Token/_RemoveTokenButton.js +11 -2
- 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__/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 +134 -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__/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__/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 +387 -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/stories/ActionList.stories.js +395 -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/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/TextInputWithTokens.stories.js +196 -0
- package/lib-esm/stories/ThemeProvider.stories.js +83 -0
- package/lib-esm/stories/Token.stories.js +133 -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 +28456 -0
- package/package.json +6 -6
- package/rollup.config.js +36 -0
- package/script/build +19 -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 +496 -0
- package/src/ActionList/List.tsx +258 -0
- package/src/ActionList/index.ts +21 -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 +432 -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/Overlay.tsx +197 -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 +96 -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 +102 -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 +295 -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 +105 -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__/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__/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__/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 +300 -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__/ActionMenu.test.tsx.snap +80 -0
- package/src/__tests__/__snapshots__/AnchoredOverlay.test.tsx.snap +332 -0
- package/src/__tests__/__snapshots__/Autocomplete.test.tsx.snap +3414 -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 +141 -0
- package/src/__tests__/__snapshots__/CircleOcticon.test.tsx.snap +64 -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 +200 -0
- package/src/__tests__/__snapshots__/Dropdown.test.tsx.snap +249 -0
- package/src/__tests__/__snapshots__/DropdownMenu.test.tsx.snap +106 -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__/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 +469 -0
- package/src/__tests__/__snapshots__/SelectPanel.test.tsx.snap +123 -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 +388 -0
- package/src/__tests__/__snapshots__/StyledOcticon.test.tsx.snap +25 -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 +440 -0
- package/src/__tests__/__snapshots__/TextInputWithTokens.test.tsx.snap +5516 -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 +3794 -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/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/hooks/index.ts +11 -0
- package/src/hooks/useAnchoredPosition.ts +53 -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 +170 -0
- package/src/polyfills/eventListenerSignal.ts +66 -0
- package/src/stories/ActionList.stories.tsx +436 -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/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/TextInputWithTokens.stories.tsx +146 -0
- package/src/stories/ThemeProvider.stories.tsx +104 -0
- package/src/stories/Token.stories.tsx +126 -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 +9 -0
- package/src/theme-preval.js +79 -0
- package/src/theme.ts +3 -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/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/userAgent.ts +7 -0
- package/stats.html +3279 -0
- package/tsconfig.build.json +7 -0
- package/tsconfig.json +20 -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,35 @@
|
|
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
|
+
</>
|
18
|
+
```
|
19
|
+
|
20
|
+
## System props
|
21
|
+
|
22
|
+
<Note variant="warning">
|
23
|
+
|
24
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
25
|
+
|
26
|
+
</Note>
|
27
|
+
|
28
|
+
StateLabel components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
29
|
+
|
30
|
+
## Component props
|
31
|
+
|
32
|
+
| Name | Type | Default | Description |
|
33
|
+
| :------ | :----- | :------: | :------------------------------------------------------------------------------------------------ |
|
34
|
+
| variant | String | 'normal' | a value of `small` or `normal` results in a smaller or larger version of the StateLabel. |
|
35
|
+
| status | String | | Can be one of `issueOpened`, `issueClosed`, `pullOpened`, `pullClosed`, `pullMerged`, or `draft`. |
|
@@ -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,97 @@
|
|
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
|
+
|
52
|
+
## Adding and removing tokens
|
53
|
+
|
54
|
+
The array passed to the `tokens` prop needs to be manually updated to add and remove tokens.
|
55
|
+
|
56
|
+
The function passed to the `onRemoveToken` prop is called when:
|
57
|
+
|
58
|
+
- Clicking the remove button in the token
|
59
|
+
- Pressing the `Backspace` key when the input is empty
|
60
|
+
- Selecting a token using the arrow keys or by clicking on a token and then pressing the `Backspace` key
|
61
|
+
|
62
|
+
There is no function that gets called to "add" a token, so the user needs to be provided with a UI to select tokens.
|
63
|
+
|
64
|
+
## Custom token rendering
|
65
|
+
|
66
|
+
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
|
67
|
+
|
68
|
+
Example: a `TextInputWithTokens` that renders tokens as `IssueLabelToken`:
|
69
|
+
|
70
|
+
```javascript live noinline
|
71
|
+
const UsingIssueLabelTokens = () => {
|
72
|
+
const [tokens, setTokens] = React.useState([
|
73
|
+
{text: 'enhancement', id: 1, fillColor: '#a2eeef'},
|
74
|
+
{text: 'bug', id: 2, fillColor: '#d73a4a'},
|
75
|
+
{text: 'good first issue', id: 3, fillColor: '#0cf478'}
|
76
|
+
])
|
77
|
+
const onTokenRemove = tokenId => {
|
78
|
+
setTokens(tokens.filter(token => token.id !== tokenId))
|
79
|
+
}
|
80
|
+
|
81
|
+
return (
|
82
|
+
<>
|
83
|
+
<Box as="label" display="block" htmlFor="inputWithTokens-issueLabels">
|
84
|
+
Issue labels
|
85
|
+
</Box>
|
86
|
+
<TextInputWithTokens
|
87
|
+
tokenComponent={IssueLabelToken}
|
88
|
+
tokens={tokens}
|
89
|
+
onTokenRemove={onTokenRemove}
|
90
|
+
id="inputWithTokens-issueLabels"
|
91
|
+
/>
|
92
|
+
</>
|
93
|
+
)
|
94
|
+
}
|
95
|
+
|
96
|
+
render(<UsingIssueLabelTokens />)
|
97
|
+
```
|
@@ -0,0 +1,138 @@
|
|
1
|
+
---
|
2
|
+
title: Timeline
|
3
|
+
---
|
4
|
+
|
5
|
+
The Timeline.Item component is used to display items on a vertical timeline, connected by Timeline.Badge elements.
|
6
|
+
|
7
|
+
## Example with in-line links
|
8
|
+
|
9
|
+
```jsx live
|
10
|
+
<Timeline>
|
11
|
+
<Timeline.Item>
|
12
|
+
<Timeline.Badge>
|
13
|
+
<StyledOcticon icon={FlameIcon} />
|
14
|
+
</Timeline.Badge>
|
15
|
+
<Timeline.Body>
|
16
|
+
<Link href="#" sx={{fontWeight: 'bold', color: "fg.default", mr: 1}} muted>
|
17
|
+
Monalisa
|
18
|
+
</Link>
|
19
|
+
created one <Link href="#" sx={{fontWeight: 'bold', color: "fg.default", mr: 1}} muted>
|
20
|
+
hot potato
|
21
|
+
</Link>
|
22
|
+
<Link href="#" color="fg.muted" muted>
|
23
|
+
Just now
|
24
|
+
</Link>
|
25
|
+
</Timeline.Body>
|
26
|
+
</Timeline.Item>
|
27
|
+
</Timeline>
|
28
|
+
```
|
29
|
+
|
30
|
+
## Default Color example
|
31
|
+
|
32
|
+
The default Timeline.Badge color is dark text on a light grey background.
|
33
|
+
|
34
|
+
```jsx live
|
35
|
+
<Timeline>
|
36
|
+
<Timeline.Item>
|
37
|
+
<Timeline.Badge>
|
38
|
+
<StyledOcticon icon={FlameIcon} />
|
39
|
+
</Timeline.Badge>
|
40
|
+
<Timeline.Body>Default badge color</Timeline.Body>
|
41
|
+
</Timeline.Item>
|
42
|
+
</Timeline>
|
43
|
+
```
|
44
|
+
|
45
|
+
## Adding color to a Badge
|
46
|
+
|
47
|
+
To have color variants, use the `bg` prop on the `Timeline.Badge`. If an icon is being used, set the `color` prop
|
48
|
+
of the child `StyledOcticon` if necessary.
|
49
|
+
|
50
|
+
```jsx live
|
51
|
+
<Timeline>
|
52
|
+
<Timeline.Item>
|
53
|
+
<Timeline.Badge sx={{bg: "danger.emphasis"}}>
|
54
|
+
<StyledOcticon icon={FlameIcon} sx={{color: "fg.onEmphasis"}} />
|
55
|
+
</Timeline.Badge>
|
56
|
+
<Timeline.Body>Background used when closed events occur</Timeline.Body>
|
57
|
+
</Timeline.Item>
|
58
|
+
<Timeline.Item>
|
59
|
+
<Timeline.Badge sx={{bg: "danger.emphasis"}}>
|
60
|
+
<StyledOcticon icon={FlameIcon} color="fg.onEmphasis" />
|
61
|
+
</Timeline.Badge>
|
62
|
+
<Timeline.Body>Background when opened or passed events occur</Timeline.Body>
|
63
|
+
</Timeline.Item>
|
64
|
+
<Timeline.Item>
|
65
|
+
<Timeline.Badge sx={{bg: "danger.emphasis"}}>
|
66
|
+
<StyledOcticon icon={FlameIcon} sx={{color: "fg.onEmphasis"}} />
|
67
|
+
</Timeline.Badge>
|
68
|
+
<Timeline.Body>Background used when pull requests are merged</Timeline.Body>
|
69
|
+
</Timeline.Item>
|
70
|
+
</Timeline>
|
71
|
+
```
|
72
|
+
|
73
|
+
## Condensed items
|
74
|
+
|
75
|
+
Timeline has a condensed prop that will reduce the vertical padding and remove the background from the badge item. These are most commonly used in commits. To condense a single item, remove the top or bottom padding with the `pt={0}` or `pb={0}` prop.
|
76
|
+
|
77
|
+
```jsx live
|
78
|
+
<Timeline>
|
79
|
+
<Timeline.Item condensed>
|
80
|
+
<Timeline.Badge>
|
81
|
+
<StyledOcticon icon={GitCommitIcon} />
|
82
|
+
</Timeline.Badge>
|
83
|
+
<Timeline.Body>This is the message of a condensed TimelineItem</Timeline.Body>
|
84
|
+
</Timeline.Item>
|
85
|
+
<Timeline.Item condensed>
|
86
|
+
<Timeline.Badge>
|
87
|
+
<StyledOcticon icon={GitCommitIcon} />
|
88
|
+
</Timeline.Badge>
|
89
|
+
<Timeline.Body>This is the message of a condensed TimelineItem</Timeline.Body>
|
90
|
+
</Timeline.Item>
|
91
|
+
</Timeline>
|
92
|
+
```
|
93
|
+
|
94
|
+
## Timeline Break
|
95
|
+
|
96
|
+
To create a visual break in the timeline, use Timeline.Break. This adds a horizontal bar across the timeline to show that something has disrupted it. Usually this happens when a close or merged event occurs.
|
97
|
+
|
98
|
+
```jsx live
|
99
|
+
<Timeline>
|
100
|
+
<Timeline.Item>
|
101
|
+
<Timeline.Badge sx={{bg: "danger.emphasis"}}>
|
102
|
+
<StyledOcticon icon={FlameIcon} color="fg.onEmphasis" />
|
103
|
+
</Timeline.Badge>
|
104
|
+
<Timeline.Body>Background used when closed events occur</Timeline.Body>
|
105
|
+
</Timeline.Item>
|
106
|
+
<Timeline.Break />
|
107
|
+
<Timeline.Item>
|
108
|
+
<Timeline.Badge sx={{bg: "success.emphasis"}}>
|
109
|
+
<StyledOcticon icon={FlameIcon} sx={{color: "fg.onEmphasis"}} />
|
110
|
+
</Timeline.Badge>
|
111
|
+
<Timeline.Body>Background when opened or passed events occur</Timeline.Body>
|
112
|
+
</Timeline.Item>
|
113
|
+
</Timeline>
|
114
|
+
```
|
115
|
+
|
116
|
+
## System props
|
117
|
+
|
118
|
+
<Note variant="warning">
|
119
|
+
|
120
|
+
System props are deprecated in all components except [Box](/Box). Please use the [`sx` prop](/overriding-styles) instead.
|
121
|
+
|
122
|
+
</Note>
|
123
|
+
|
124
|
+
Timeline and Timeline.Item components get `COMMON` system props. Read our [System Props](/system-props) doc page for a full list of available props.
|
125
|
+
|
126
|
+
## Component props
|
127
|
+
|
128
|
+
### Timeline
|
129
|
+
|
130
|
+
| Prop name | Type | Description |
|
131
|
+
| :---------- | :------ | :-------------------------------------------------------------------------------- |
|
132
|
+
| clipSidebar | Boolean | Hides the sidebar above the first Timeline.Item and below the last Timeline.Item. |
|
133
|
+
|
134
|
+
### Timeline.Item
|
135
|
+
|
136
|
+
| Prop name | Type | Description |
|
137
|
+
| :-------- | :------ | :-------------------------------------------------------------------- |
|
138
|
+
| condensed | Boolean | Reduces vertical padding and removes background from an item's badge. |
|