From b738adebe3a1e970c383d9eb961586e2975e797b Mon Sep 17 00:00:00 2001 From: Patrik Oldsberg Date: Wed, 10 Mar 2021 12:30:24 +0100 Subject: [PATCH] duplicate packages/core to packages/componments, omitting api-wrappers Co-authored-by: Juan Lulkin Signed-off-by: Patrik Oldsberg --- packages/components/.eslintrc.js | 8 + packages/components/.npmrc | 1 + packages/components/CHANGELOG.md | 358 +++++++++++++ packages/components/README.md | 22 + packages/components/config.d.ts | 113 ++++ packages/components/package.json | 91 ++++ .../AlertDisplay/AlertDisplay.test.tsx | 65 +++ .../components/AlertDisplay/AlertDisplay.tsx | 71 +++ .../src/components/AlertDisplay/index.ts | 17 + .../src/components/Avatar/Avatar.stories.tsx | 42 ++ .../src/components/Avatar/Avatar.test.tsx | 27 + .../src/components/Avatar/Avatar.tsx | 59 +++ .../components/src/components/Avatar/index.ts | 16 + .../src/components/Avatar/util.test.ts | 37 ++ .../components/src/components/Avatar/utils.ts | 32 ++ .../src/components/Button/Button.stories.tsx | 174 +++++++ .../src/components/Button/Button.test.tsx | 42 ++ .../src/components/Button/Button.tsx | 30 ++ .../components/src/components/Button/index.ts | 17 + .../CheckboxTree/CheckboxTree.stories.tsx | 105 ++++ .../CheckboxTree/CheckboxTree.test.tsx | 60 +++ .../components/CheckboxTree/CheckboxTree.tsx | 358 +++++++++++++ .../src/components/CheckboxTree/index.tsx | 17 + .../src/components/Chip/Chip.stories.tsx | 43 ++ .../CodeSnippet/CodeSnippet.stories.tsx | 94 ++++ .../CodeSnippet/CodeSnippet.test.tsx | 74 +++ .../components/CodeSnippet/CodeSnippet.tsx | 72 +++ .../src/components/CodeSnippet/index.tsx | 17 + .../CopyTextButton/CopyTextButton.stories.tsx | 42 ++ .../CopyTextButton/CopyTextButton.test.tsx | 85 +++ .../CopyTextButton/CopyTextButton.tsx | 111 ++++ .../src/components/CopyTextButton/index.tsx | 17 + .../DependencyGraph/DefaultLabel.tsx | 35 ++ .../DependencyGraph/DefaultNode.tsx | 79 +++ .../DependencyGraph.stories.tsx | 178 +++++++ .../DependencyGraph/DependencyGraph.test.tsx | 106 ++++ .../DependencyGraph/DependencyGraph.tsx | 324 ++++++++++++ .../components/DependencyGraph/Edge.test.tsx | 100 ++++ .../src/components/DependencyGraph/Edge.tsx | 122 +++++ .../components/DependencyGraph/Node.test.tsx | 79 +++ .../src/components/DependencyGraph/Node.tsx | 76 +++ .../components/DependencyGraph/constants.ts | 21 + .../src/components/DependencyGraph/index.ts | 20 + .../src/components/DependencyGraph/types.ts | 88 ++++ .../DismissableBanner.stories.tsx | 114 +++++ .../DismissableBanner.test.tsx | 88 ++++ .../DismissableBanner/DismissableBanner.tsx | 135 +++++ .../src/components/DismissableBanner/index.ts | 17 + .../src/components/Drawer/Drawer.stories.tsx | 171 +++++++ .../EmptyState/EmptyState.stories.tsx | 78 +++ .../components/EmptyState/EmptyState.test.tsx | 39 ++ .../src/components/EmptyState/EmptyState.tsx | 68 +++ .../EmptyState/EmptyStateImage.test.tsx | 49 ++ .../components/EmptyState/EmptyStateImage.tsx | 73 +++ .../MissingAnnotationEmptyState.tsx | 86 ++++ .../EmptyState/assets/createComponent.svg | 1 + .../EmptyState/assets/missingAnnotation.svg | 1 + .../components/EmptyState/assets/noBuild.svg | 1 + .../EmptyState/assets/noInformation.svg | 1 + .../src/components/EmptyState/index.ts | 18 + .../FeatureCalloutCircular.test.tsx | 154 ++++++ .../FeatureCalloutCircular.tsx | 199 ++++++++ .../src/components/FeatureDiscovery/index.ts | 17 + .../FeatureDiscovery/lib/usePortal.ts | 99 ++++ .../FeatureDiscovery/lib/useShowCallout.ts | 58 +++ .../HeaderIconLinkRow/HeaderIconLinkRow.tsx | 43 ++ .../HeaderIconLinkRow/IconLinkVertical.tsx | 95 ++++ .../src/components/HeaderIconLinkRow/index.ts | 19 + .../HorizontalScrollGrid.stories.tsx | 37 ++ .../HorizontalScrollGrid.test.tsx | 87 ++++ .../HorizontalScrollGrid.tsx | 247 +++++++++ .../components/HorizontalScrollGrid/index.tsx | 17 + .../Lifecycle/Lifecycle.stories.tsx | 43 ++ .../components/Lifecycle/Lifecycle.test.tsx | 41 ++ .../src/components/Lifecycle/Lifecycle.tsx | 56 ++ .../src/components/Lifecycle/index.ts | 17 + .../src/components/Link/Link.stories.tsx | 92 ++++ .../src/components/Link/Link.test.tsx | 42 ++ .../components/src/components/Link/Link.tsx | 45 ++ .../components/src/components/Link/index.ts | 18 + .../MarkdownContent.stories.tsx | 120 +++++ .../MarkdownContent/MarkdownContent.test.tsx | 65 +++ .../MarkdownContent/MarkdownContent.tsx | 89 ++++ .../src/components/MarkdownContent/index.ts | 17 + .../LoginRequestListItem.tsx | 81 +++ .../OAuthRequestDialog/OAuthRequestDialog.tsx | 86 ++++ .../components/OAuthRequestDialog/index.ts | 17 + .../OverflowTooltip.stories.tsx | 48 ++ .../OverflowTooltip/OverflowTooltip.tsx | 57 +++ .../src/components/OverflowTooltip/index.ts | 16 + .../components/Progress/Progress.stories.tsx | 25 + .../src/components/Progress/Progress.test.tsx | 34 ++ .../src/components/Progress/Progress.tsx | 33 ++ .../src/components/Progress/index.ts | 17 + .../components/ProgressBars/Gauge.stories.tsx | 55 ++ .../components/ProgressBars/Gauge.test.tsx | 71 +++ .../src/components/ProgressBars/Gauge.tsx | 106 ++++ .../ProgressBars/GaugeCard.stories.tsx | 85 +++ .../ProgressBars/GaugeCard.test.tsx | 46 ++ .../src/components/ProgressBars/GaugeCard.tsx | 55 ++ .../ProgressBars/LinearGauge.stories.tsx | 43 ++ .../ProgressBars/LinearGauge.test.tsx | 37 ++ .../components/ProgressBars/LinearGauge.tsx | 53 ++ .../src/components/ProgressBars/index.ts | 19 + .../src/components/Select/Select.stories.tsx | 57 +++ .../src/components/Select/Select.test.tsx | 58 +++ .../src/components/Select/Select.tsx | 231 +++++++++ .../src/components/Select/index.tsx | 17 + .../Select/static/ClosedDropdown.tsx | 45 ++ .../Select/static/OpenedDropdown.tsx | 45 ++ .../SimpleStepper/SimpleStepper.stories.tsx | 81 +++ .../SimpleStepper/SimpleStepper.test.tsx | 148 ++++++ .../SimpleStepper/SimpleStepper.tsx | 98 ++++ .../SimpleStepper/SimpleStepperFooter.tsx | 156 ++++++ .../SimpleStepper/SimpleStepperStep.tsx | 84 +++ .../src/components/SimpleStepper/index.ts | 18 + .../src/components/Status/Status.stories.tsx | 90 ++++ .../src/components/Status/Status.test.tsx | 69 +++ .../src/components/Status/Status.tsx | 130 +++++ .../components/src/components/Status/index.ts | 24 + .../StructuredMetadataTable/MetadataTable.tsx | 109 ++++ .../StructuredMetadataTable/README.md | 62 +++ .../StructuredMetadataTable.stories.tsx | 73 +++ .../StructuredMetadataTable.test.tsx | 118 +++++ .../StructuredMetadataTable.tsx | 163 ++++++ .../StructuredMetadataTable/index.tsx | 17 + .../SupportButton/SupportButton.test.tsx | 66 +++ .../SupportButton/SupportButton.tsx | 133 +++++ .../src/components/SupportButton/index.ts | 17 + .../TabbedLayout/RoutedTabs.test.tsx | 150 ++++++ .../components/TabbedLayout/RoutedTabs.tsx | 75 +++ .../TabbedLayout/TabbedLayout.stories.tsx | 44 ++ .../TabbedLayout/TabbedLayout.test.tsx | 94 ++++ .../components/TabbedLayout/TabbedLayout.tsx | 89 ++++ .../src/components/TabbedLayout/index.ts | 16 + .../src/components/TabbedLayout/types.ts | 21 + .../src/components/Table/Filters.tsx | 157 ++++++ .../src/components/Table/SubvalueCell.tsx | 45 ++ .../src/components/Table/Table.stories.tsx | 332 ++++++++++++ .../src/components/Table/Table.test.tsx | 68 +++ .../components/src/components/Table/Table.tsx | 483 ++++++++++++++++++ .../components/src/components/Table/index.ts | 19 + .../src/components/Tabs/Tab.test.tsx | 26 + .../components/src/components/Tabs/Tab.tsx | 62 +++ .../components/src/components/Tabs/TabBar.tsx | 52 ++ .../src/components/Tabs/TabIcon.tsx | 60 +++ .../src/components/Tabs/TabPanel.tsx | 38 ++ .../src/components/Tabs/Tabs.stories.tsx | 71 +++ .../components/src/components/Tabs/Tabs.tsx | 159 ++++++ .../components/src/components/Tabs/index.ts | 17 + .../components/src/components/Tabs/utils.ts | 28 + .../TrendLine/TrendLine.stories.tsx | 141 +++++ .../components/TrendLine/TrendLine.test.tsx | 69 +++ .../src/components/TrendLine/TrendLine.tsx | 48 ++ .../src/components/TrendLine/index.ts | 17 + .../WarningPanel/WarningPanel.stories.tsx | 72 +++ .../WarningPanel/WarningPanel.test.tsx | 67 +++ .../components/WarningPanel/WarningPanel.tsx | 136 +++++ .../src/components/WarningPanel/index.ts | 16 + packages/components/src/components/index.ts | 44 ++ packages/components/src/hooks/index.ts | 23 + .../src/hooks/useQueryParamState.ts | 93 ++++ .../components/src/hooks/useSupportConfig.ts | 74 +++ packages/components/src/index.ts | 19 + .../src/layout/BottomLink/BottomLink.test.tsx | 30 ++ .../src/layout/BottomLink/BottomLink.tsx | 70 +++ .../components/src/layout/BottomLink/index.ts | 18 + .../Breadcrumbs/Breadcrumbs.stories.tsx | 137 +++++ .../layout/Breadcrumbs/Breadcrumbs.test.tsx | 54 ++ .../src/layout/Breadcrumbs/Breadcrumbs.tsx | 99 ++++ .../src/layout/Breadcrumbs/index.ts | 17 + .../components/src/layout/Content/Content.tsx | 64 +++ .../components/src/layout/Content/index.ts | 17 + .../ContentHeader/ContentHeader.test.tsx | 48 ++ .../layout/ContentHeader/ContentHeader.tsx | 111 ++++ .../src/layout/ContentHeader/index.ts | 17 + .../ErrorBoundary/ErrorBoundary.test.tsx | 71 +++ .../layout/ErrorBoundary/ErrorBoundary.tsx | 73 +++ .../src/layout/ErrorBoundary/index.ts | 17 + .../src/layout/ErrorPage/ErrorPage.test.tsx | 33 ++ .../src/layout/ErrorPage/ErrorPage.tsx | 85 +++ .../src/layout/ErrorPage/MicDrop.tsx | 46 ++ .../components/src/layout/ErrorPage/index.ts | 17 + .../src/layout/ErrorPage/mic-drop.svg | 1 + .../src/layout/Header/Header.stories.tsx | 102 ++++ .../src/layout/Header/Header.test.tsx | 67 +++ .../components/src/layout/Header/Header.tsx | 213 ++++++++ .../components/src/layout/Header/index.ts | 17 + .../HeaderActionMenu.test.tsx | 104 ++++ .../HeaderActionMenu/HeaderActionMenu.tsx | 106 ++++ .../HeaderActionMenu/VerticalMenuIcon.tsx | 25 + .../src/layout/HeaderActionMenu/index.ts | 17 + .../layout/HeaderLabel/HeaderLabel.test.tsx | 54 ++ .../src/layout/HeaderLabel/HeaderLabel.tsx | 72 +++ .../src/layout/HeaderLabel/index.ts | 17 + .../src/layout/HeaderTabs/HeaderTabs.test.tsx | 49 ++ .../src/layout/HeaderTabs/HeaderTabs.tsx | 95 ++++ .../src/layout/HeaderTabs/index.tsx | 18 + .../HomepageTimer/HomepageTimer.test.tsx | 53 ++ .../layout/HomepageTimer/HomepageTimer.tsx | 99 ++++ .../src/layout/HomepageTimer/index.ts | 17 + .../src/layout/InfoCard/InfoCard.stories.tsx | 69 +++ .../src/layout/InfoCard/InfoCard.test.tsx | 39 ++ .../src/layout/InfoCard/InfoCard.tsx | 208 ++++++++ .../components/src/layout/InfoCard/index.ts | 18 + .../src/layout/ItemCard/ItemCard.stories.tsx | 113 ++++ .../src/layout/ItemCard/ItemCard.test.tsx | 61 +++ .../src/layout/ItemCard/ItemCard.tsx | 104 ++++ .../src/layout/ItemCard/ItemCardGrid.test.tsx | 50 ++ .../src/layout/ItemCard/ItemCardGrid.tsx | 62 +++ .../layout/ItemCard/ItemCardHeader.test.tsx | 60 +++ .../src/layout/ItemCard/ItemCardHeader.tsx | 85 +++ .../components/src/layout/ItemCard/index.ts | 21 + .../src/layout/Page/Page.stories.tsx | 245 +++++++++ packages/components/src/layout/Page/Page.tsx | 48 ++ packages/components/src/layout/Page/index.ts | 17 + .../components/src/layout/Sidebar/Bar.tsx | 150 ++++++ .../components/src/layout/Sidebar/Intro.tsx | 182 +++++++ .../src/layout/Sidebar/Items.test.tsx | 75 +++ .../components/src/layout/Sidebar/Items.tsx | 295 +++++++++++ .../components/src/layout/Sidebar/Page.tsx | 74 +++ .../src/layout/Sidebar/Sidebar.stories.tsx | 56 ++ .../components/src/layout/Sidebar/config.ts | 49 ++ .../components/src/layout/Sidebar/index.ts | 33 ++ .../src/layout/Sidebar/localStorage.test.ts | 25 + .../src/layout/Sidebar/localStorage.ts | 40 ++ .../src/layout/SignInPage/SignInPage.tsx | 162 ++++++ .../src/layout/SignInPage/auth0Provider.tsx | 88 ++++ .../src/layout/SignInPage/commonProvider.tsx | 96 ++++ .../src/layout/SignInPage/customProvider.tsx | 126 +++++ .../src/layout/SignInPage/guestProvider.tsx | 61 +++ .../components/src/layout/SignInPage/index.ts | 17 + .../src/layout/SignInPage/providers.tsx | 177 +++++++ .../src/layout/SignInPage/styles.tsx | 42 ++ .../components/src/layout/SignInPage/types.ts | 49 ++ .../layout/TabbedCard/TabbedCard.stories.tsx | 113 ++++ .../src/layout/TabbedCard/TabbedCard.test.tsx | 99 ++++ .../src/layout/TabbedCard/TabbedCard.tsx | 132 +++++ .../components/src/layout/TabbedCard/index.ts | 17 + packages/components/src/layout/index.ts | 31 ++ packages/components/src/setupTests.ts | 17 + 241 files changed, 17776 insertions(+) create mode 100644 packages/components/.eslintrc.js create mode 100644 packages/components/.npmrc create mode 100644 packages/components/CHANGELOG.md create mode 100644 packages/components/README.md create mode 100644 packages/components/config.d.ts create mode 100644 packages/components/package.json create mode 100644 packages/components/src/components/AlertDisplay/AlertDisplay.test.tsx create mode 100644 packages/components/src/components/AlertDisplay/AlertDisplay.tsx create mode 100644 packages/components/src/components/AlertDisplay/index.ts create mode 100644 packages/components/src/components/Avatar/Avatar.stories.tsx create mode 100644 packages/components/src/components/Avatar/Avatar.test.tsx create mode 100644 packages/components/src/components/Avatar/Avatar.tsx create mode 100644 packages/components/src/components/Avatar/index.ts create mode 100644 packages/components/src/components/Avatar/util.test.ts create mode 100644 packages/components/src/components/Avatar/utils.ts create mode 100644 packages/components/src/components/Button/Button.stories.tsx create mode 100644 packages/components/src/components/Button/Button.test.tsx create mode 100644 packages/components/src/components/Button/Button.tsx create mode 100644 packages/components/src/components/Button/index.ts create mode 100644 packages/components/src/components/CheckboxTree/CheckboxTree.stories.tsx create mode 100644 packages/components/src/components/CheckboxTree/CheckboxTree.test.tsx create mode 100644 packages/components/src/components/CheckboxTree/CheckboxTree.tsx create mode 100644 packages/components/src/components/CheckboxTree/index.tsx create mode 100644 packages/components/src/components/Chip/Chip.stories.tsx create mode 100644 packages/components/src/components/CodeSnippet/CodeSnippet.stories.tsx create mode 100644 packages/components/src/components/CodeSnippet/CodeSnippet.test.tsx create mode 100644 packages/components/src/components/CodeSnippet/CodeSnippet.tsx create mode 100644 packages/components/src/components/CodeSnippet/index.tsx create mode 100644 packages/components/src/components/CopyTextButton/CopyTextButton.stories.tsx create mode 100644 packages/components/src/components/CopyTextButton/CopyTextButton.test.tsx create mode 100644 packages/components/src/components/CopyTextButton/CopyTextButton.tsx create mode 100644 packages/components/src/components/CopyTextButton/index.tsx create mode 100644 packages/components/src/components/DependencyGraph/DefaultLabel.tsx create mode 100644 packages/components/src/components/DependencyGraph/DefaultNode.tsx create mode 100644 packages/components/src/components/DependencyGraph/DependencyGraph.stories.tsx create mode 100644 packages/components/src/components/DependencyGraph/DependencyGraph.test.tsx create mode 100644 packages/components/src/components/DependencyGraph/DependencyGraph.tsx create mode 100644 packages/components/src/components/DependencyGraph/Edge.test.tsx create mode 100644 packages/components/src/components/DependencyGraph/Edge.tsx create mode 100644 packages/components/src/components/DependencyGraph/Node.test.tsx create mode 100644 packages/components/src/components/DependencyGraph/Node.tsx create mode 100644 packages/components/src/components/DependencyGraph/constants.ts create mode 100644 packages/components/src/components/DependencyGraph/index.ts create mode 100644 packages/components/src/components/DependencyGraph/types.ts create mode 100644 packages/components/src/components/DismissableBanner/DismissableBanner.stories.tsx create mode 100644 packages/components/src/components/DismissableBanner/DismissableBanner.test.tsx create mode 100644 packages/components/src/components/DismissableBanner/DismissableBanner.tsx create mode 100644 packages/components/src/components/DismissableBanner/index.ts create mode 100644 packages/components/src/components/Drawer/Drawer.stories.tsx create mode 100644 packages/components/src/components/EmptyState/EmptyState.stories.tsx create mode 100644 packages/components/src/components/EmptyState/EmptyState.test.tsx create mode 100644 packages/components/src/components/EmptyState/EmptyState.tsx create mode 100644 packages/components/src/components/EmptyState/EmptyStateImage.test.tsx create mode 100644 packages/components/src/components/EmptyState/EmptyStateImage.tsx create mode 100644 packages/components/src/components/EmptyState/MissingAnnotationEmptyState.tsx create mode 100644 packages/components/src/components/EmptyState/assets/createComponent.svg create mode 100644 packages/components/src/components/EmptyState/assets/missingAnnotation.svg create mode 100644 packages/components/src/components/EmptyState/assets/noBuild.svg create mode 100644 packages/components/src/components/EmptyState/assets/noInformation.svg create mode 100644 packages/components/src/components/EmptyState/index.ts create mode 100644 packages/components/src/components/FeatureDiscovery/FeatureCalloutCircular.test.tsx create mode 100644 packages/components/src/components/FeatureDiscovery/FeatureCalloutCircular.tsx create mode 100644 packages/components/src/components/FeatureDiscovery/index.ts create mode 100644 packages/components/src/components/FeatureDiscovery/lib/usePortal.ts create mode 100644 packages/components/src/components/FeatureDiscovery/lib/useShowCallout.ts create mode 100644 packages/components/src/components/HeaderIconLinkRow/HeaderIconLinkRow.tsx create mode 100644 packages/components/src/components/HeaderIconLinkRow/IconLinkVertical.tsx create mode 100644 packages/components/src/components/HeaderIconLinkRow/index.ts create mode 100644 packages/components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.stories.tsx create mode 100644 packages/components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.test.tsx create mode 100644 packages/components/src/components/HorizontalScrollGrid/HorizontalScrollGrid.tsx create mode 100644 packages/components/src/components/HorizontalScrollGrid/index.tsx create mode 100644 packages/components/src/components/Lifecycle/Lifecycle.stories.tsx create mode 100644 packages/components/src/components/Lifecycle/Lifecycle.test.tsx create mode 100644 packages/components/src/components/Lifecycle/Lifecycle.tsx create mode 100644 packages/components/src/components/Lifecycle/index.ts create mode 100644 packages/components/src/components/Link/Link.stories.tsx create mode 100644 packages/components/src/components/Link/Link.test.tsx create mode 100644 packages/components/src/components/Link/Link.tsx create mode 100644 packages/components/src/components/Link/index.ts create mode 100644 packages/components/src/components/MarkdownContent/MarkdownContent.stories.tsx create mode 100644 packages/components/src/components/MarkdownContent/MarkdownContent.test.tsx create mode 100644 packages/components/src/components/MarkdownContent/MarkdownContent.tsx create mode 100644 packages/components/src/components/MarkdownContent/index.ts create mode 100644 packages/components/src/components/OAuthRequestDialog/LoginRequestListItem.tsx create mode 100644 packages/components/src/components/OAuthRequestDialog/OAuthRequestDialog.tsx create mode 100644 packages/components/src/components/OAuthRequestDialog/index.ts create mode 100644 packages/components/src/components/OverflowTooltip/OverflowTooltip.stories.tsx create mode 100644 packages/components/src/components/OverflowTooltip/OverflowTooltip.tsx create mode 100644 packages/components/src/components/OverflowTooltip/index.ts create mode 100644 packages/components/src/components/Progress/Progress.stories.tsx create mode 100644 packages/components/src/components/Progress/Progress.test.tsx create mode 100644 packages/components/src/components/Progress/Progress.tsx create mode 100644 packages/components/src/components/Progress/index.ts create mode 100644 packages/components/src/components/ProgressBars/Gauge.stories.tsx create mode 100644 packages/components/src/components/ProgressBars/Gauge.test.tsx create mode 100644 packages/components/src/components/ProgressBars/Gauge.tsx create mode 100644 packages/components/src/components/ProgressBars/GaugeCard.stories.tsx create mode 100644 packages/components/src/components/ProgressBars/GaugeCard.test.tsx create mode 100644 packages/components/src/components/ProgressBars/GaugeCard.tsx create mode 100644 packages/components/src/components/ProgressBars/LinearGauge.stories.tsx create mode 100644 packages/components/src/components/ProgressBars/LinearGauge.test.tsx create mode 100644 packages/components/src/components/ProgressBars/LinearGauge.tsx create mode 100644 packages/components/src/components/ProgressBars/index.ts create mode 100644 packages/components/src/components/Select/Select.stories.tsx create mode 100644 packages/components/src/components/Select/Select.test.tsx create mode 100644 packages/components/src/components/Select/Select.tsx create mode 100644 packages/components/src/components/Select/index.tsx create mode 100644 packages/components/src/components/Select/static/ClosedDropdown.tsx create mode 100644 packages/components/src/components/Select/static/OpenedDropdown.tsx create mode 100644 packages/components/src/components/SimpleStepper/SimpleStepper.stories.tsx create mode 100644 packages/components/src/components/SimpleStepper/SimpleStepper.test.tsx create mode 100644 packages/components/src/components/SimpleStepper/SimpleStepper.tsx create mode 100644 packages/components/src/components/SimpleStepper/SimpleStepperFooter.tsx create mode 100644 packages/components/src/components/SimpleStepper/SimpleStepperStep.tsx create mode 100644 packages/components/src/components/SimpleStepper/index.ts create mode 100644 packages/components/src/components/Status/Status.stories.tsx create mode 100644 packages/components/src/components/Status/Status.test.tsx create mode 100644 packages/components/src/components/Status/Status.tsx create mode 100644 packages/components/src/components/Status/index.ts create mode 100644 packages/components/src/components/StructuredMetadataTable/MetadataTable.tsx create mode 100644 packages/components/src/components/StructuredMetadataTable/README.md create mode 100644 packages/components/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx create mode 100644 packages/components/src/components/StructuredMetadataTable/StructuredMetadataTable.test.tsx create mode 100644 packages/components/src/components/StructuredMetadataTable/StructuredMetadataTable.tsx create mode 100644 packages/components/src/components/StructuredMetadataTable/index.tsx create mode 100644 packages/components/src/components/SupportButton/SupportButton.test.tsx create mode 100644 packages/components/src/components/SupportButton/SupportButton.tsx create mode 100644 packages/components/src/components/SupportButton/index.ts create mode 100644 packages/components/src/components/TabbedLayout/RoutedTabs.test.tsx create mode 100644 packages/components/src/components/TabbedLayout/RoutedTabs.tsx create mode 100644 packages/components/src/components/TabbedLayout/TabbedLayout.stories.tsx create mode 100644 packages/components/src/components/TabbedLayout/TabbedLayout.test.tsx create mode 100644 packages/components/src/components/TabbedLayout/TabbedLayout.tsx create mode 100644 packages/components/src/components/TabbedLayout/index.ts create mode 100644 packages/components/src/components/TabbedLayout/types.ts create mode 100644 packages/components/src/components/Table/Filters.tsx create mode 100644 packages/components/src/components/Table/SubvalueCell.tsx create mode 100644 packages/components/src/components/Table/Table.stories.tsx create mode 100644 packages/components/src/components/Table/Table.test.tsx create mode 100644 packages/components/src/components/Table/Table.tsx create mode 100644 packages/components/src/components/Table/index.ts create mode 100644 packages/components/src/components/Tabs/Tab.test.tsx create mode 100644 packages/components/src/components/Tabs/Tab.tsx create mode 100644 packages/components/src/components/Tabs/TabBar.tsx create mode 100644 packages/components/src/components/Tabs/TabIcon.tsx create mode 100644 packages/components/src/components/Tabs/TabPanel.tsx create mode 100644 packages/components/src/components/Tabs/Tabs.stories.tsx create mode 100644 packages/components/src/components/Tabs/Tabs.tsx create mode 100644 packages/components/src/components/Tabs/index.ts create mode 100644 packages/components/src/components/Tabs/utils.ts create mode 100644 packages/components/src/components/TrendLine/TrendLine.stories.tsx create mode 100644 packages/components/src/components/TrendLine/TrendLine.test.tsx create mode 100644 packages/components/src/components/TrendLine/TrendLine.tsx create mode 100644 packages/components/src/components/TrendLine/index.ts create mode 100644 packages/components/src/components/WarningPanel/WarningPanel.stories.tsx create mode 100644 packages/components/src/components/WarningPanel/WarningPanel.test.tsx create mode 100644 packages/components/src/components/WarningPanel/WarningPanel.tsx create mode 100644 packages/components/src/components/WarningPanel/index.ts create mode 100644 packages/components/src/components/index.ts create mode 100644 packages/components/src/hooks/index.ts create mode 100644 packages/components/src/hooks/useQueryParamState.ts create mode 100644 packages/components/src/hooks/useSupportConfig.ts create mode 100644 packages/components/src/index.ts create mode 100644 packages/components/src/layout/BottomLink/BottomLink.test.tsx create mode 100644 packages/components/src/layout/BottomLink/BottomLink.tsx create mode 100644 packages/components/src/layout/BottomLink/index.ts create mode 100644 packages/components/src/layout/Breadcrumbs/Breadcrumbs.stories.tsx create mode 100644 packages/components/src/layout/Breadcrumbs/Breadcrumbs.test.tsx create mode 100644 packages/components/src/layout/Breadcrumbs/Breadcrumbs.tsx create mode 100644 packages/components/src/layout/Breadcrumbs/index.ts create mode 100644 packages/components/src/layout/Content/Content.tsx create mode 100644 packages/components/src/layout/Content/index.ts create mode 100644 packages/components/src/layout/ContentHeader/ContentHeader.test.tsx create mode 100644 packages/components/src/layout/ContentHeader/ContentHeader.tsx create mode 100644 packages/components/src/layout/ContentHeader/index.ts create mode 100644 packages/components/src/layout/ErrorBoundary/ErrorBoundary.test.tsx create mode 100644 packages/components/src/layout/ErrorBoundary/ErrorBoundary.tsx create mode 100644 packages/components/src/layout/ErrorBoundary/index.ts create mode 100644 packages/components/src/layout/ErrorPage/ErrorPage.test.tsx create mode 100644 packages/components/src/layout/ErrorPage/ErrorPage.tsx create mode 100644 packages/components/src/layout/ErrorPage/MicDrop.tsx create mode 100644 packages/components/src/layout/ErrorPage/index.ts create mode 100644 packages/components/src/layout/ErrorPage/mic-drop.svg create mode 100644 packages/components/src/layout/Header/Header.stories.tsx create mode 100644 packages/components/src/layout/Header/Header.test.tsx create mode 100644 packages/components/src/layout/Header/Header.tsx create mode 100644 packages/components/src/layout/Header/index.ts create mode 100644 packages/components/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx create mode 100644 packages/components/src/layout/HeaderActionMenu/HeaderActionMenu.tsx create mode 100644 packages/components/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx create mode 100644 packages/components/src/layout/HeaderActionMenu/index.ts create mode 100644 packages/components/src/layout/HeaderLabel/HeaderLabel.test.tsx create mode 100644 packages/components/src/layout/HeaderLabel/HeaderLabel.tsx create mode 100644 packages/components/src/layout/HeaderLabel/index.ts create mode 100644 packages/components/src/layout/HeaderTabs/HeaderTabs.test.tsx create mode 100644 packages/components/src/layout/HeaderTabs/HeaderTabs.tsx create mode 100644 packages/components/src/layout/HeaderTabs/index.tsx create mode 100644 packages/components/src/layout/HomepageTimer/HomepageTimer.test.tsx create mode 100644 packages/components/src/layout/HomepageTimer/HomepageTimer.tsx create mode 100644 packages/components/src/layout/HomepageTimer/index.ts create mode 100644 packages/components/src/layout/InfoCard/InfoCard.stories.tsx create mode 100644 packages/components/src/layout/InfoCard/InfoCard.test.tsx create mode 100644 packages/components/src/layout/InfoCard/InfoCard.tsx create mode 100644 packages/components/src/layout/InfoCard/index.ts create mode 100644 packages/components/src/layout/ItemCard/ItemCard.stories.tsx create mode 100644 packages/components/src/layout/ItemCard/ItemCard.test.tsx create mode 100644 packages/components/src/layout/ItemCard/ItemCard.tsx create mode 100644 packages/components/src/layout/ItemCard/ItemCardGrid.test.tsx create mode 100644 packages/components/src/layout/ItemCard/ItemCardGrid.tsx create mode 100644 packages/components/src/layout/ItemCard/ItemCardHeader.test.tsx create mode 100644 packages/components/src/layout/ItemCard/ItemCardHeader.tsx create mode 100644 packages/components/src/layout/ItemCard/index.ts create mode 100644 packages/components/src/layout/Page/Page.stories.tsx create mode 100644 packages/components/src/layout/Page/Page.tsx create mode 100644 packages/components/src/layout/Page/index.ts create mode 100644 packages/components/src/layout/Sidebar/Bar.tsx create mode 100644 packages/components/src/layout/Sidebar/Intro.tsx create mode 100644 packages/components/src/layout/Sidebar/Items.test.tsx create mode 100644 packages/components/src/layout/Sidebar/Items.tsx create mode 100644 packages/components/src/layout/Sidebar/Page.tsx create mode 100644 packages/components/src/layout/Sidebar/Sidebar.stories.tsx create mode 100644 packages/components/src/layout/Sidebar/config.ts create mode 100644 packages/components/src/layout/Sidebar/index.ts create mode 100644 packages/components/src/layout/Sidebar/localStorage.test.ts create mode 100644 packages/components/src/layout/Sidebar/localStorage.ts create mode 100644 packages/components/src/layout/SignInPage/SignInPage.tsx create mode 100644 packages/components/src/layout/SignInPage/auth0Provider.tsx create mode 100644 packages/components/src/layout/SignInPage/commonProvider.tsx create mode 100644 packages/components/src/layout/SignInPage/customProvider.tsx create mode 100644 packages/components/src/layout/SignInPage/guestProvider.tsx create mode 100644 packages/components/src/layout/SignInPage/index.ts create mode 100644 packages/components/src/layout/SignInPage/providers.tsx create mode 100644 packages/components/src/layout/SignInPage/styles.tsx create mode 100644 packages/components/src/layout/SignInPage/types.ts create mode 100644 packages/components/src/layout/TabbedCard/TabbedCard.stories.tsx create mode 100644 packages/components/src/layout/TabbedCard/TabbedCard.test.tsx create mode 100644 packages/components/src/layout/TabbedCard/TabbedCard.tsx create mode 100644 packages/components/src/layout/TabbedCard/index.ts create mode 100644 packages/components/src/layout/index.ts create mode 100644 packages/components/src/setupTests.ts diff --git a/packages/components/.eslintrc.js b/packages/components/.eslintrc.js new file mode 100644 index 0000000000..d592a653c8 --- /dev/null +++ b/packages/components/.eslintrc.js @@ -0,0 +1,8 @@ +module.exports = { + extends: [require.resolve('@backstage/cli/config/eslint')], + rules: { + // TODO: add prop types to JS and remove + 'react/prop-types': 0, + 'jest/expect-expect': 0, + }, +}; diff --git a/packages/components/.npmrc b/packages/components/.npmrc new file mode 100644 index 0000000000..214c29d139 --- /dev/null +++ b/packages/components/.npmrc @@ -0,0 +1 @@ +registry=https://registry.npmjs.org/ diff --git a/packages/components/CHANGELOG.md b/packages/components/CHANGELOG.md new file mode 100644 index 0000000000..fc61083340 --- /dev/null +++ b/packages/components/CHANGELOG.md @@ -0,0 +1,358 @@ +# @backstage/core + +## 0.7.0 + +### Minor Changes + +- 4c049a1a1: - Adds onClick and other props to IconLinkVertical; + + - Allows TriggerButton component to render when pager duty key is missing; + - Refactors TriggerButton and PagerDutyCard not to have shared state; + - Removes the `action` prop of the IconLinkVertical component while adding `onClick`. + + Instead of having an action including a button with onClick, now the whole component can be clickable making it easier to implement and having a better UX. + + Before: + + ```ts + const myLink: IconLinkVerticalProps = { + label: 'Click me', + action: + + + + Secondary Button: + Used for actions that cancel, skip, and in general perform negative + functions, etc. +
+
color="secondary" variant="contained"
+
+ + +
+ + + Tertiary Button: + Used commonly in a ButtonGroup and when the button function itself is + not a primary function on a page. +
+
color="default" variant="outlined"
+
+ + +
+ + ); +}; + +export const ButtonLinks = () => { + const routeRef = createRouteRef({ + path: '/hello', + title: 'Hi there!', + }); + + const handleClick = () => { + return 'Your click worked!'; + }; + + return ( + <> + + { + // TODO: Refactor to use new routing mechanisms + } + + +   has props for both Material-UI's component as well as for + react-router-dom's Route object. + + + + +   links to a statically defined route. In general, this should be + avoided. + + + + + View URL + +   links to a defined URL using Material-UI's Button. + + + + + Trigger Event + +   triggers an onClick event using Material-UI's Button. + + + + ); +}; diff --git a/packages/components/src/components/Button/Button.test.tsx b/packages/components/src/components/Button/Button.test.tsx new file mode 100644 index 0000000000..8bae5f2767 --- /dev/null +++ b/packages/components/src/components/Button/Button.test.tsx @@ -0,0 +1,42 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { render, fireEvent, act } from '@testing-library/react'; +import { wrapInTestApp } from '@backstage/test-utils'; +import { Button } from './Button'; +import { Route, Routes } from 'react-router'; + +describe(' + , + ), + ); + + expect(() => getByText(testString)).toThrow(); + await act(async () => { + fireEvent.click(getByText(buttonLabel)); + }); + expect(getByText(testString)).toBeInTheDocument(); + }); +}); diff --git a/packages/components/src/components/Button/Button.tsx b/packages/components/src/components/Button/Button.tsx new file mode 100644 index 0000000000..ca45b3da7f --- /dev/null +++ b/packages/components/src/components/Button/Button.tsx @@ -0,0 +1,30 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { ComponentProps } from 'react'; +import { Button as MaterialButton } from '@material-ui/core'; +import { Link as RouterLink } from 'react-router-dom'; + +type Props = ComponentProps & + ComponentProps; + +/** + * Thin wrapper on top of material-ui's Button component + * Makes the Button to utilise react-router + */ +export const Button = React.forwardRef((props, ref) => ( + +)); diff --git a/packages/components/src/components/Button/index.ts b/packages/components/src/components/Button/index.ts new file mode 100644 index 0000000000..7b584ed799 --- /dev/null +++ b/packages/components/src/components/Button/index.ts @@ -0,0 +1,17 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +export { Button } from './Button'; diff --git a/packages/components/src/components/CheckboxTree/CheckboxTree.stories.tsx b/packages/components/src/components/CheckboxTree/CheckboxTree.stories.tsx new file mode 100644 index 0000000000..db590e6524 --- /dev/null +++ b/packages/components/src/components/CheckboxTree/CheckboxTree.stories.tsx @@ -0,0 +1,105 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React, { useState } from 'react'; +import { CheckboxTree } from '.'; + +const CHECKBOX_TREE_ITEMS = [ + { + label: 'Genereic subcategory name 1', + options: [ + { + label: 'Option 1', + value: 1, + }, + { + label: 'Option 2', + value: 2, + }, + ], + }, + { + label: 'Genereic subcategory name 2', + options: [ + { + label: 'Option 1', + value: 1, + }, + { + label: 'Option 2', + value: 2, + }, + ], + }, + { + label: 'Genereic subcategory name 3', + options: [ + { + label: 'Option 1', + value: 1, + }, + { + label: 'Option 2', + value: 2, + }, + ], + }, +]; + +export default { + title: 'Inputs/CheckboxTree', + component: CheckboxTree, +}; + +export const Default = () => ( + {}} + label="default" + subCategories={CHECKBOX_TREE_ITEMS} + /> +); + +export const DynamicTree = () => { + function generateTree(showMore: boolean = false) { + const t = [ + { + label: 'Show more', + options: [], + }, + ]; + + if (showMore) { + t.push({ + label: 'More', + options: [], + }); + } + + return t; + } + + const [tree, setTree] = useState(generateTree()); + + return ( + { + setTree(generateTree(state.some(c => c.category === 'Show more'))); + }} + label="default" + subCategories={tree} + /> + ); +}; diff --git a/packages/components/src/components/CheckboxTree/CheckboxTree.test.tsx b/packages/components/src/components/CheckboxTree/CheckboxTree.test.tsx new file mode 100644 index 0000000000..f5eaa0e58b --- /dev/null +++ b/packages/components/src/components/CheckboxTree/CheckboxTree.test.tsx @@ -0,0 +1,60 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import React from 'react'; +import { render, fireEvent } from '@testing-library/react'; + +import { CheckboxTree } from '.'; + +const CHECKBOX_TREE_ITEMS = [ + { + label: 'Genereic subcategory name 1', + options: [ + { + label: 'Option 1', + value: 1, + }, + { + label: 'Option 2', + value: 2, + }, + ], + }, +]; + +const minProps = { + onChange: jest.fn(), + label: 'Default', + subCategories: CHECKBOX_TREE_ITEMS, +}; + +describe('', () => { + it('renders without exploding', async () => { + const { getByText, getByTestId } = render(); + + expect(getByText('Genereic subcategory name 1')).toBeInTheDocument(); + const checkbox = await getByTestId('expandable'); + + // Simulate click on expandable arrow + fireEvent.click(checkbox); + + // Simulate click on option + const option = getByText('Option 1'); + expect(getByText('Option 1')).toBeInTheDocument(); + fireEvent.click(option); + expect(minProps.onChange).toHaveBeenCalled(); + }); +}); diff --git a/packages/components/src/components/CheckboxTree/CheckboxTree.tsx b/packages/components/src/components/CheckboxTree/CheckboxTree.tsx new file mode 100644 index 0000000000..d6d3410913 --- /dev/null +++ b/packages/components/src/components/CheckboxTree/CheckboxTree.tsx @@ -0,0 +1,358 @@ +/* + * Copyright 2020 Spotify AB + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +/* eslint-disable guard-for-in */ +import { + Checkbox, + Collapse, + List, + ListItem, + ListItemIcon, + ListItemText, + Typography, +} from '@material-ui/core'; +import { createStyles, makeStyles, Theme } from '@material-ui/core/styles'; +import ExpandLess from '@material-ui/icons/ExpandLess'; +import ExpandMore from '@material-ui/icons/ExpandMore'; +import produce from 'immer'; +import { isEqual } from 'lodash'; +import React, { useEffect, useReducer } from 'react'; +import { usePrevious } from 'react-use'; + +type IndexedObject = { + [key: string]: T; +}; + +const useStyles = makeStyles((theme: Theme) => + createStyles({ + root: { + width: '100%', + minWidth: 10, + maxWidth: 360, + backgroundColor: 'transparent', + '&:hover': { + backgroundColor: 'transparent', + }, + '&:active': { + animation: 'none', + transform: 'none', + }, + }, + nested: { + paddingLeft: theme.spacing(5), + height: '32px', + '&:hover': { + backgroundColor: 'transparent', + }, + }, + listItemIcon: { + minWidth: 10, + }, + listItem: { + '&:hover': { + backgroundColor: 'transparent', + }, + }, + text: { + '& span, & svg': { + fontWeight: 'normal', + fontSize: 14, + }, + }, + }), +); + +/* SUB_CATEGORY */ + +type SubCategory = { + label: string; + isChecked?: boolean; + isOpen?: boolean; + options?: Option[]; +}; + +type SubCategoryWithIndexedOptions = { + label: string; + isChecked?: boolean; + isOpen?: boolean; + options: IndexedObject