diff --git a/packages/core/src/api/createApp.tsx b/packages/core/src/api/createApp.tsx index d0deed667a..03adc41ec6 100644 --- a/packages/core/src/api/createApp.tsx +++ b/packages/core/src/api/createApp.tsx @@ -21,7 +21,7 @@ import privateExports, { defaultSystemIcons, } from '@backstage/core-api'; -import ErrorPage from '../layout/ErrorPage'; +import { ErrorPage } from '../layout/ErrorPage'; import { lightTheme, darkTheme } from '@backstage/theme'; const { PrivateAppImpl } = privateExports; diff --git a/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx b/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx index 801836bd48..f7c9ba836d 100644 --- a/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx +++ b/packages/core/src/components/CodeSnippet/CodeSnippet.stories.tsx @@ -16,7 +16,7 @@ import React from 'react'; import CodeSnippet from './CodeSnippet'; -import InfoCard from '../../layout/InfoCard'; +import { InfoCard } from '../../layout/InfoCard'; export default { title: 'CodeSnippet', diff --git a/packages/core/src/components/ProgressBars/ProgressCard.tsx b/packages/core/src/components/ProgressBars/ProgressCard.tsx index 66dda771c3..9e70469091 100644 --- a/packages/core/src/components/ProgressBars/ProgressCard.tsx +++ b/packages/core/src/components/ProgressBars/ProgressCard.tsx @@ -16,8 +16,8 @@ import React, { FC } from 'react'; import { makeStyles } from '@material-ui/core'; -import InfoCard from '../../layout/InfoCard'; -import { Props as BottomLinkProps } from '../../layout/BottomLink'; +import { InfoCard } from '../../layout/InfoCard'; +import { BottomLinkProps } from '../../layout/BottomLink'; import CircleProgress from './CircleProgress'; type Props = { @@ -36,7 +36,7 @@ const useStyles = makeStyles({ }, }); -const ProgressCard: FC = (props) => { +const ProgressCard: FC = props => { const classes = useStyles(props); const { title, subheader, progress, deepLink, variant } = props; diff --git a/packages/core/src/components/Status/Status.stories.tsx b/packages/core/src/components/Status/Status.stories.tsx index 140b2e6b3f..c0c579b217 100644 --- a/packages/core/src/components/Status/Status.stories.tsx +++ b/packages/core/src/components/Status/Status.stories.tsx @@ -24,7 +24,7 @@ import { StatusWarning, } from './Status'; import Table from '../Table'; -import InfoCard from '../../layout/InfoCard'; +import { InfoCard } from '../../layout/InfoCard'; export default { title: 'Status', diff --git a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx index 334219c881..47908cba79 100644 --- a/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx +++ b/packages/core/src/components/StructuredMetadataTable/StructuredMetadataTable.stories.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React, { FC } from 'react'; -import InfoCard from '../../layout/InfoCard'; +import { InfoCard } from '../../layout/InfoCard'; import { Grid } from '@material-ui/core'; import StructuredMetadataTable from '.'; diff --git a/packages/core/src/components/TrendLine/TrendLine.stories.tsx b/packages/core/src/components/TrendLine/TrendLine.stories.tsx index 506fc4e387..4a0c6ead00 100644 --- a/packages/core/src/components/TrendLine/TrendLine.stories.tsx +++ b/packages/core/src/components/TrendLine/TrendLine.stories.tsx @@ -17,7 +17,7 @@ import React from 'react'; import TrendLine from '.'; import Table from '../Table'; -import InfoCard from '../../layout/InfoCard'; +import { InfoCard } from '../../layout/InfoCard'; export default { title: 'TrendLine', diff --git a/packages/core/src/index.ts b/packages/core/src/index.ts index be9cdc432d..37f01eb3f4 100644 --- a/packages/core/src/index.ts +++ b/packages/core/src/index.ts @@ -17,21 +17,10 @@ export * from '@backstage/core-api'; export * from './api'; -export { default as Page } from './layout/Page'; -export { gradients, pageTheme } from './layout/Page'; -export type { PageTheme } from './layout/Page'; +export * from './layout'; + export { default as CodeSnippet } from './components/CodeSnippet'; -export { default as Content } from './layout/Content/Content'; -export { default as ContentHeader } from './layout/ContentHeader/ContentHeader'; export { default as DismissableBanner } from './components/DismissableBanner'; -export { default as Header } from './layout/Header/Header'; -export { default as HeaderLabel } from './layout/HeaderLabel'; -export { default as HomepageTimer } from './layout/HomepageTimer'; -export { default as InfoCard } from './layout/InfoCard'; -export { CardTab, TabbedCard } from './layout/TabbedCard'; -export { default as ErrorBoundary } from './layout/ErrorBoundary'; -export * from './layout/Sidebar'; -export * from './layout/LoginPage'; export { AlertDisplay } from './components/AlertDisplay'; export { default as HorizontalScrollGrid } from './components/HorizontalScrollGrid'; export { default as ProgressCard } from './components/ProgressBars/ProgressCard'; diff --git a/packages/core/src/layout/BottomLink/BottomLink.test.tsx b/packages/core/src/layout/BottomLink/BottomLink.test.tsx index f301de1c84..9871e18ebb 100644 --- a/packages/core/src/layout/BottomLink/BottomLink.test.tsx +++ b/packages/core/src/layout/BottomLink/BottomLink.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { wrapInTestApp } from '@backstage/test-utils'; -import BottomLink from './BottomLink'; +import { BottomLink } from './BottomLink'; const minProps = { title: 'A deepLink title', diff --git a/packages/core/src/layout/BottomLink/BottomLink.tsx b/packages/core/src/layout/BottomLink/BottomLink.tsx index 88c723fd08..b3f7b4aa11 100644 --- a/packages/core/src/layout/BottomLink/BottomLink.tsx +++ b/packages/core/src/layout/BottomLink/BottomLink.tsx @@ -41,13 +41,13 @@ const useStyles = makeStyles(theme => ({ }, })); -export type Props = { +export type BottomLinkProps = { link: string; title: string; onClick?: (event: React.MouseEvent) => void; }; -const BottomLink: FC = ({ link, title, onClick }) => { +export const BottomLink: FC = ({ link, title, onClick }) => { const classes = useStyles(); return ( @@ -68,5 +68,3 @@ const BottomLink: FC = ({ link, title, onClick }) => { ); }; - -export default BottomLink; diff --git a/packages/core/src/layout/BottomLink/index.ts b/packages/core/src/layout/BottomLink/index.ts index 6f2055f4f7..18befcc9bf 100644 --- a/packages/core/src/layout/BottomLink/index.ts +++ b/packages/core/src/layout/BottomLink/index.ts @@ -14,5 +14,5 @@ * limitations under the License. */ -export { default } from './BottomLink'; -export type { Props } from './BottomLink'; +export { BottomLink } from './BottomLink'; +export type { BottomLinkProps } from './BottomLink'; diff --git a/packages/core/src/layout/Content/Content.tsx b/packages/core/src/layout/Content/Content.tsx index 38db7c88f7..6a5b2c241a 100644 --- a/packages/core/src/layout/Content/Content.tsx +++ b/packages/core/src/layout/Content/Content.tsx @@ -42,7 +42,7 @@ type Props = { className?: string; }; -const Content: FC = ({ +export const Content: FC = ({ className, stretch, noPadding, @@ -62,5 +62,3 @@ const Content: FC = ({ ); }; - -export default Content; diff --git a/packages/core/src/layout/Content/index.ts b/packages/core/src/layout/Content/index.ts new file mode 100644 index 0000000000..d05ae0e787 --- /dev/null +++ b/packages/core/src/layout/Content/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 { Content } from './Content'; diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx index 703c27e32c..2f40511f35 100644 --- a/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx +++ b/packages/core/src/layout/ContentHeader/ContentHeader.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import ContentHeader from './ContentHeader'; +import { ContentHeader } from './ContentHeader'; import { wrapInThemedTestApp } from '@backstage/test-utils'; jest.mock('react-helmet', () => { diff --git a/packages/core/src/layout/ContentHeader/ContentHeader.tsx b/packages/core/src/layout/ContentHeader/ContentHeader.tsx index 1a51d5d19b..691c7d11f7 100644 --- a/packages/core/src/layout/ContentHeader/ContentHeader.tsx +++ b/packages/core/src/layout/ContentHeader/ContentHeader.tsx @@ -75,7 +75,7 @@ type ContentHeaderProps = { description?: string; }; -const ContentHeader: FC = ({ +export const ContentHeader: FC = ({ description, title, titleComponent: TitleComponent = undefined, @@ -105,5 +105,3 @@ const ContentHeader: FC = ({ ); }; - -export default ContentHeader; diff --git a/packages/core/src/layout/ContentHeader/index.ts b/packages/core/src/layout/ContentHeader/index.ts new file mode 100644 index 0000000000..18d03228a3 --- /dev/null +++ b/packages/core/src/layout/ContentHeader/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 { ContentHeader } from './ContentHeader'; diff --git a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx index 88ae99c3c9..fd267777a0 100644 --- a/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx +++ b/packages/core/src/layout/ErrorBoundary/ErrorBoundary.tsx @@ -26,7 +26,7 @@ type State = { errorInfo?: ErrorInfo; }; -const ErrorBoundary: ComponentClass< +export const ErrorBoundary: ComponentClass< Props, State > = class ErrorBoundary extends Component { @@ -57,8 +57,6 @@ const ErrorBoundary: ComponentClass< } }; -export default ErrorBoundary; - type EProps = { error?: Error; slackChannel?: string; diff --git a/packages/core/src/layout/ErrorBoundary/index.ts b/packages/core/src/layout/ErrorBoundary/index.ts index e126359bf3..607634e89a 100644 --- a/packages/core/src/layout/ErrorBoundary/index.ts +++ b/packages/core/src/layout/ErrorBoundary/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { default } from './ErrorBoundary'; +export { ErrorBoundary } from './ErrorBoundary'; diff --git a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx index 06c12041b9..d383c3fbf0 100644 --- a/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx +++ b/packages/core/src/layout/ErrorPage/ErrorPage.test.tsx @@ -16,7 +16,7 @@ import React from 'react'; import { render } from '@testing-library/react'; -import ErrorPage from './ErrorPage'; +import { ErrorPage } from './ErrorPage'; import { wrapInThemedTestApp } from '@backstage/test-utils'; describe('', () => { diff --git a/packages/core/src/layout/ErrorPage/ErrorPage.tsx b/packages/core/src/layout/ErrorPage/ErrorPage.tsx index 747f2f6036..b94c7409fc 100644 --- a/packages/core/src/layout/ErrorPage/ErrorPage.tsx +++ b/packages/core/src/layout/ErrorPage/ErrorPage.tsx @@ -18,7 +18,7 @@ import React from 'react'; import { Typography, Link, Grid } from '@material-ui/core'; import { makeStyles } from '@material-ui/core/styles'; import { BackstageTheme } from '@backstage/theme'; -import MicDrop from './MicDrop'; +import { MicDrop } from './MicDrop'; import { useHistory } from 'react-router'; interface IErrorPageProps { @@ -38,7 +38,7 @@ const useStyles = makeStyles(theme => ({ }, })); -const ErrorPage = ({ status, statusMessage }: IErrorPageProps) => { +export const ErrorPage = ({ status, statusMessage }: IErrorPageProps) => { const classes = useStyles(); const history = useHistory(); @@ -63,5 +63,3 @@ const ErrorPage = ({ status, statusMessage }: IErrorPageProps) => { ); }; - -export default ErrorPage; diff --git a/packages/core/src/layout/ErrorPage/MicDrop.jsx b/packages/core/src/layout/ErrorPage/MicDrop.jsx index f951830574..4c4098f486 100644 --- a/packages/core/src/layout/ErrorPage/MicDrop.jsx +++ b/packages/core/src/layout/ErrorPage/MicDrop.jsx @@ -26,7 +26,7 @@ const useStyles = makeStyles({ }, }); -const MicDrop = () => { +export const MicDrop = () => { const classes = useStyles(); return ( { ); }; - -export default MicDrop; diff --git a/packages/core/src/layout/ErrorPage/index.ts b/packages/core/src/layout/ErrorPage/index.ts index 872e5cce2d..506ed1f815 100644 --- a/packages/core/src/layout/ErrorPage/index.ts +++ b/packages/core/src/layout/ErrorPage/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { default } from './ErrorPage'; +export { ErrorPage } from './ErrorPage'; diff --git a/packages/core/src/layout/Header/Header.stories.tsx b/packages/core/src/layout/Header/Header.stories.tsx index e1198d7b65..700120906f 100644 --- a/packages/core/src/layout/Header/Header.stories.tsx +++ b/packages/core/src/layout/Header/Header.stories.tsx @@ -14,9 +14,9 @@ * limitations under the License. */ import React from 'react'; -import Header from '.'; -import HeaderLabel from '../HeaderLabel'; -import Page, { pageTheme } from '../Page'; +import { Header } from '.'; +import { HeaderLabel } from '../HeaderLabel'; +import { Page, pageTheme } from '../Page'; export default { title: 'Header', diff --git a/packages/core/src/layout/Header/Header.test.tsx b/packages/core/src/layout/Header/Header.test.tsx index afedf2ad35..c1f9be6cf6 100644 --- a/packages/core/src/layout/Header/Header.test.tsx +++ b/packages/core/src/layout/Header/Header.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { wrapInThemedTestApp } from '@backstage/test-utils'; -import Header from './Header'; +import { Header } from './Header'; jest.mock('react-helmet', () => { return { diff --git a/packages/core/src/layout/Header/Header.tsx b/packages/core/src/layout/Header/Header.tsx index 47fcc324a7..ce50a2680f 100644 --- a/packages/core/src/layout/Header/Header.tsx +++ b/packages/core/src/layout/Header/Header.tsx @@ -20,7 +20,7 @@ import { Typography, Tooltip, makeStyles } from '@material-ui/core'; import { BackstageTheme } from '@backstage/theme'; import { Theme } from '../Page/Page'; -import Waves from './Waves'; +import { Waves } from './Waves'; const useStyles = makeStyles(theme => ({ header: { @@ -193,5 +193,3 @@ export const Header: FC = ({ ); }; - -export default Header; diff --git a/packages/core/src/layout/Header/Waves.test.tsx b/packages/core/src/layout/Header/Waves.test.tsx index 2c7d463052..76bf5e913e 100644 --- a/packages/core/src/layout/Header/Waves.test.tsx +++ b/packages/core/src/layout/Header/Waves.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { pageTheme } from '../Page/PageThemeProvider'; -import Waves from './Waves'; +import { Waves } from './Waves'; describe('', () => { it('should render svg', () => { diff --git a/packages/core/src/layout/Header/Waves.tsx b/packages/core/src/layout/Header/Waves.tsx index f37ecf7b12..a43ef14062 100644 --- a/packages/core/src/layout/Header/Waves.tsx +++ b/packages/core/src/layout/Header/Waves.tsx @@ -35,7 +35,7 @@ type Props = { theme: PageTheme; }; -const Waves: FC = ({ theme }) => { +export const Waves: FC = ({ theme }) => { const classes = useStyles(); const [color1, color2] = theme.gradient.colors; @@ -139,5 +139,3 @@ const Waves: FC = ({ theme }) => { ); }; - -export default Waves; diff --git a/packages/core/src/layout/Header/index.ts b/packages/core/src/layout/Header/index.ts index ad1f322bd7..e0860413c9 100644 --- a/packages/core/src/layout/Header/index.ts +++ b/packages/core/src/layout/Header/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { default } from './Header'; +export { Header } from './Header'; diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx index 17822228e8..a1b5740f88 100644 --- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx +++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render, fireEvent } from '@testing-library/react'; import { wrapInThemedTestApp, Keyboard } from '@backstage/test-utils'; -import HeaderActionMenu from './HeaderActionMenu'; +import { HeaderActionMenu } from './HeaderActionMenu'; describe('', () => { it('renders without any items and without exploding', () => { diff --git a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx index 4799654cee..a1a4eb6566 100644 --- a/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx +++ b/packages/core/src/layout/HeaderActionMenu/HeaderActionMenu.tsx @@ -24,7 +24,7 @@ import { Popover, ListItemTextProps, } from '@material-ui/core'; -import { default as KebabMenuIcon } from './MenuVertical'; +import { VerticalMenuIcon } from './VerticalMenuIcon'; type ActionItemProps = { label?: ListItemTextProps['primary']; @@ -66,7 +66,9 @@ export type HeaderActionMenuProps = { actionItems: ActionItemProps[]; }; -const HeaderActionMenu: FC = ({ actionItems }) => { +export const HeaderActionMenu: FC = ({ + actionItems, +}) => { const [open, setOpen] = React.useState(false); const anchorElRef = React.useRef(null); @@ -84,7 +86,7 @@ const HeaderActionMenu: FC = ({ actionItems }) => { padding: 0, }} > - + = ({ actionItems }) => { ); }; - -export default HeaderActionMenu; diff --git a/packages/core/src/layout/HeaderActionMenu/MenuVertical.tsx b/packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx similarity index 92% rename from packages/core/src/layout/HeaderActionMenu/MenuVertical.tsx rename to packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx index 426c70fb21..c9fde8cea2 100644 --- a/packages/core/src/layout/HeaderActionMenu/MenuVertical.tsx +++ b/packages/core/src/layout/HeaderActionMenu/VerticalMenuIcon.tsx @@ -17,11 +17,9 @@ import React from 'react'; import SvgIcon, { SvgIconProps } from '@material-ui/core/SvgIcon'; -const SvgMenuVertical = (props: SvgIconProps) => +export const VerticalMenuIcon = (props: SvgIconProps) => React.createElement( SvgIcon, props, , ); - -export default SvgMenuVertical; diff --git a/packages/core/src/layout/HeaderActionMenu/index.ts b/packages/core/src/layout/HeaderActionMenu/index.ts new file mode 100644 index 0000000000..bb7fa80d59 --- /dev/null +++ b/packages/core/src/layout/HeaderActionMenu/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 { HeaderActionMenu } from './HeaderActionMenu'; diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx index cbdfb3da80..11a22f9b5d 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { wrapInThemedTestApp } from '@backstage/test-utils'; -import HeaderLabel from './HeaderLabel'; +import { HeaderLabel } from './HeaderLabel'; describe('', () => { it('should have a label', () => { diff --git a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx index e2fd11ff15..d4457a6fba 100644 --- a/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx +++ b/packages/core/src/layout/HeaderLabel/HeaderLabel.tsx @@ -56,7 +56,7 @@ type HeaderLabelProps = { url?: string; }; -const HeaderLabel: FC = ({ label, value, url }) => { +export const HeaderLabel: FC = ({ label, value, url }) => { const classes = useStyles(); const content = ( = ({ label, value, url }) => { ); }; - -export default HeaderLabel; diff --git a/packages/core/src/layout/HeaderLabel/index.ts b/packages/core/src/layout/HeaderLabel/index.ts index 8e0b7a0c10..683ec59784 100644 --- a/packages/core/src/layout/HeaderLabel/index.ts +++ b/packages/core/src/layout/HeaderLabel/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { default } from './HeaderLabel'; +export { HeaderLabel } from './HeaderLabel'; diff --git a/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx b/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx index 9fe0aaa344..7ea4dd508f 100644 --- a/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx +++ b/packages/core/src/layout/HomepageTimer/HomepageTimer.tsx @@ -15,7 +15,7 @@ */ import React, { FC } from 'react'; -import HeaderLabel from '../HeaderLabel'; +import { HeaderLabel } from '../HeaderLabel'; const timeFormat = { hour: '2-digit', minute: '2-digit' }; const utcOptions = { timeZone: 'UTC', ...timeFormat }; @@ -44,7 +44,7 @@ function getTimes() { return { timeNY, timeUTC, timeTYO, timeSTO }; } -const HomePageTimer: FC<{}> = () => { +export const HomepageTimer: FC<{}> = () => { const [{ timeNY, timeUTC, timeTYO, timeSTO }, setTimes] = React.useState( defaultTimes, ); @@ -70,5 +70,3 @@ const HomePageTimer: FC<{}> = () => { ); }; - -export default HomePageTimer; diff --git a/packages/core/src/layout/HomepageTimer/index.ts b/packages/core/src/layout/HomepageTimer/index.ts index be260e5b88..facee1e982 100644 --- a/packages/core/src/layout/HomepageTimer/index.ts +++ b/packages/core/src/layout/HomepageTimer/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { default } from './HomepageTimer'; +export { HomepageTimer } from './HomepageTimer'; diff --git a/packages/core/src/layout/InfoCard/InfoCard.stories.tsx b/packages/core/src/layout/InfoCard/InfoCard.stories.tsx index e9fa831b40..7d888f5486 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.stories.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.stories.tsx @@ -14,7 +14,7 @@ * limitations under the License. */ import React, { FC } from 'react'; -import InfoCard from '.'; +import { InfoCard } from '.'; import { Grid } from '@material-ui/core'; const cardContentStyle = { height: 200, width: 500 }; diff --git a/packages/core/src/layout/InfoCard/InfoCard.test.tsx b/packages/core/src/layout/InfoCard/InfoCard.test.tsx index 4d8221d5b8..d58fdb2ccb 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.test.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.test.tsx @@ -17,7 +17,7 @@ import React from 'react'; import { render } from '@testing-library/react'; import { wrapInTestApp } from '@backstage/test-utils'; -import InfoCard from './InfoCard'; +import { InfoCard } from './InfoCard'; const minProps = { title: 'Some title', diff --git a/packages/core/src/layout/InfoCard/InfoCard.tsx b/packages/core/src/layout/InfoCard/InfoCard.tsx index 9be29b5a6b..04736b64cd 100644 --- a/packages/core/src/layout/InfoCard/InfoCard.tsx +++ b/packages/core/src/layout/InfoCard/InfoCard.tsx @@ -25,8 +25,8 @@ import { makeStyles, } from '@material-ui/core'; import classNames from 'classnames'; -import ErrorBoundary from '../ErrorBoundary'; -import BottomLink, { Props as BottomLinkProps } from '../BottomLink'; +import { ErrorBoundary } from '../ErrorBoundary'; +import { BottomLink, BottomLinkProps } from '../BottomLink'; const useStyles = makeStyles(theme => ({ header: { @@ -137,7 +137,7 @@ type Props = { noPadding?: boolean; }; -const InfoCard: FC = ({ +export const InfoCard: FC = ({ title, subheader, divider, @@ -214,5 +214,3 @@ const InfoCard: FC = ({ ); }; - -export default InfoCard; diff --git a/packages/core/src/layout/InfoCard/index.ts b/packages/core/src/layout/InfoCard/index.ts index 6b715f996f..d77fcf93c4 100644 --- a/packages/core/src/layout/InfoCard/index.ts +++ b/packages/core/src/layout/InfoCard/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export { default } from './InfoCard'; +export { InfoCard } from './InfoCard'; diff --git a/packages/core/src/layout/LoginPage/LoginPage.tsx b/packages/core/src/layout/LoginPage/LoginPage.tsx index e7c83d563c..7bf14dba01 100644 --- a/packages/core/src/layout/LoginPage/LoginPage.tsx +++ b/packages/core/src/layout/LoginPage/LoginPage.tsx @@ -16,10 +16,11 @@ import React, { FC, useState } from 'react'; import GitHubIcon from '@material-ui/icons/GitHub'; -import Page from '../Page'; -import Header from '../Header'; -import Content from '../Content/Content'; -import ContentHeader from '../ContentHeader/ContentHeader'; +import { Page } from '../Page'; +import { Header } from '../Header'; +import { Content } from '../Content'; +import { ContentHeader } from '../ContentHeader'; +import { InfoCard } from '../InfoCard/InfoCard'; import { Grid, Typography, @@ -29,7 +30,6 @@ import { ListItem, Link, } from '@material-ui/core'; -import InfoCard from '../InfoCard/InfoCard'; enum AuthType { GitHub, diff --git a/packages/core/src/layout/Page/Page.tsx b/packages/core/src/layout/Page/Page.tsx index 23c2a14dbe..bc4175fb6c 100644 --- a/packages/core/src/layout/Page/Page.tsx +++ b/packages/core/src/layout/Page/Page.tsx @@ -35,7 +35,7 @@ type Props = { theme?: PageTheme; }; -const Page: FC = ({ theme = pageTheme.home, children }) => { +export const Page: FC = ({ theme = pageTheme.home, children }) => { const classes = useStyles(); return ( @@ -43,5 +43,3 @@ const Page: FC = ({ theme = pageTheme.home, children }) => { ); }; - -export default Page; diff --git a/packages/core/src/layout/Page/index.ts b/packages/core/src/layout/Page/index.ts index 50899fa036..f8fa7dc668 100644 --- a/packages/core/src/layout/Page/index.ts +++ b/packages/core/src/layout/Page/index.ts @@ -14,6 +14,6 @@ * limitations under the License. */ -export { default } from './Page'; +export { Page } from './Page'; export { gradients, pageTheme } from './PageThemeProvider'; export type { PageTheme } from './PageThemeProvider'; diff --git a/packages/core/src/layout/Sidebar/index.ts b/packages/core/src/layout/Sidebar/index.ts index 731d117ce3..baefc3d0e8 100644 --- a/packages/core/src/layout/Sidebar/index.ts +++ b/packages/core/src/layout/Sidebar/index.ts @@ -14,10 +14,22 @@ * limitations under the License. */ -export * from './Bar'; -export * from './Page'; -export * from './Items'; -export * from './Intro'; -export * from './UserBadge'; -export * from './config'; +export { Sidebar } from './Bar'; +export { SidebarPage, SidebarPinStateContext } from './Page'; +export type { SidebarPinStateContextType } from './Page'; +export { + SidebarDivider, + SidebarItem, + SidebarSearchField, + SidebarSpace, + SidebarSpacer, +} from './Items'; +export { IntroCard, SidebarIntro } from './Intro'; +export { SidebarUserBadge } from './UserBadge'; +export { + SIDEBAR_INTRO_LOCAL_STORAGE, + SidebarContext, + sidebarConfig, +} from './config'; +export type { SidebarContextType } from './config'; export { SidebarThemeToggle } from './SidebarThemeToggle'; diff --git a/packages/core/src/layout/TabbedCard/TabbedCard.tsx b/packages/core/src/layout/TabbedCard/TabbedCard.tsx index 4dd1399fb0..e1967b8533 100644 --- a/packages/core/src/layout/TabbedCard/TabbedCard.tsx +++ b/packages/core/src/layout/TabbedCard/TabbedCard.tsx @@ -26,8 +26,8 @@ import { Tab, TabProps, } from '@material-ui/core'; -import BottomLink, { Props as BottomLinkProps } from '../BottomLink'; -import ErrorBoundary from '../ErrorBoundary/ErrorBoundary'; +import { BottomLink, BottomLinkProps } from '../BottomLink'; +import { ErrorBoundary } from '../ErrorBoundary'; const useTabsStyles = makeStyles(theme => ({ root: { diff --git a/packages/core/src/layout/TabbedCard/index.ts b/packages/core/src/layout/TabbedCard/index.ts index f5019f2451..88d7782d55 100644 --- a/packages/core/src/layout/TabbedCard/index.ts +++ b/packages/core/src/layout/TabbedCard/index.ts @@ -14,4 +14,4 @@ * limitations under the License. */ -export * from './TabbedCard'; +export { CardTab, TabbedCard } from './TabbedCard'; diff --git a/packages/core/src/layout/index.ts b/packages/core/src/layout/index.ts new file mode 100644 index 0000000000..c9dbae9ca2 --- /dev/null +++ b/packages/core/src/layout/index.ts @@ -0,0 +1,27 @@ +/* + * 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 * from './Content'; +export * from './ContentHeader'; +export * from './ErrorBoundary'; +export * from './Header'; +export * from './HeaderLabel'; +export * from './HomepageTimer'; +export * from './InfoCard'; +export * from './LoginPage'; +export * from './Page'; +export * from './Sidebar'; +export * from './TabbedCard';