@hypothesis/frontend-shared
Version:
Shared components, styles and utilities for Hypothesis projects
232 lines (228 loc) • 6.43 kB
JavaScript
import LibraryHome from './components/LibraryHome';
import ColorFoundations from './components/patterns/ColorFoundations';
import LayoutFoundations from './components/patterns/LayoutFoundations';
import UtilityFoundations from './components/patterns/UtilityFoundations';
import FormPatterns from './components/patterns/FormPatterns';
import ContainerPatterns from './components/patterns/ContainerPatterns';
import TablePatterns from './components/patterns/TablePatterns';
import ThumbnailPatterns from './components/patterns/ThumbnailPatterns';
import ButtonComponents from './components/patterns/ButtonComponents';
import ContainerComponents from './components/patterns/ContainerComponents';
import DialogComponents from './components/patterns/DialogComponents';
import FormComponents from './components/patterns/FormComponents';
import IconComponents from './components/patterns/IconComponents';
import LinkComponents from './components/patterns/LinkComponents';
import PanelComponents from './components/patterns/PanelComponents';
import SpinnerComponents from './components/patterns/SpinnerComponents';
import TableComponents from './components/patterns/TableComponents';
import ThumbnailComponents from './components/patterns/ThumbnailComponents';
import GettingStartedPage from './components/patterns/GettingStarted';
import CustomizingComponentsPage from './components/patterns/CustomizingComponents';
import UsingComponentsPage from './components/patterns/UsingComponents';
import IconsPage from './components/patterns/data/IconsPage';
import ScrollPage from './components/patterns/data/ScrollPage';
import ScrollBoxPage from './components/patterns/data/ScrollBoxPage';
import SpinnerPage from './components/patterns/feedback/SpinnerPage';
import ButtonsPage from './components/patterns/input/ButtonPage';
import IconButtonPage from './components/patterns/input/IconButtonPage';
import CardPage from './components/patterns/layout/CardPage';
import PanelPage from './components/patterns/layout/PanelPage';
import LinkPage from './components/patterns/navigation/LinkPage';
export const componentGroups = {
data: 'Data Display',
feedback: 'Feedback',
input: 'Input',
layout: 'Layout',
navigation: 'Navigation'
};
/**
* @typedef {keyof componentGroups|'home'|'foundations'|'patterns'|'components'} PlaygroundRouteGroup
*
* @typedef PlaygroundRoute - Route "handler" that provides a component (function)
* that should be rendered for the indicated route
* @prop {RegExp|string} [route] - Pattern or string path relative to
* `baseURL`, e.g. '/my-patterns'
* @prop {string} title
* @prop {import("preact").FunctionComponent<{}>} [component]
* @prop {PlaygroundRouteGroup} group
*/
/** @type {PlaygroundRoute[]} */
const routes = [{
route: /^\/?$/,
title: 'Home',
component: LibraryHome,
group: 'home'
}, {
title: 'Getting started',
group: 'foundations',
component: GettingStartedPage,
route: '/getting-started'
}, {
title: 'Using components',
group: 'foundations',
component: UsingComponentsPage,
route: '/using-components'
}, {
route: '/foundations-colors',
title: 'Colors',
component: ColorFoundations,
group: 'foundations'
}, {
route: '/foundations-util',
title: 'Utilities',
component: UtilityFoundations,
group: 'foundations'
}, {
title: 'Customizing components',
group: 'foundations',
component: CustomizingComponentsPage,
route: '/customizing-components'
}, {
route: '/foundations-layout',
title: 'Layout',
component: LayoutFoundations,
group: 'patterns'
}, {
route: '/patterns-containers',
title: 'Containers',
component: ContainerPatterns,
group: 'patterns'
}, {
route: '/patterns-forms',
title: 'Forms',
component: FormPatterns,
group: 'patterns'
}, {
route: '/patterns-tables',
title: 'Tables',
component: TablePatterns,
group: 'patterns'
}, {
route: '/patterns-thumbnails',
title: 'Thumbnails',
component: ThumbnailPatterns,
group: 'patterns'
}, {
route: '/components-buttons',
title: 'Buttons',
component: ButtonComponents,
group: 'components'
}, {
route: '/components-containers',
title: 'Containers',
component: ContainerComponents,
group: 'components'
}, {
route: '/components-dialogs',
title: 'Dialogs',
component: DialogComponents,
group: 'components'
}, {
route: '/components-forms',
title: 'Forms',
component: FormComponents,
group: 'components'
}, {
route: '/foundations-icons',
title: 'Icons',
component: IconComponents,
group: 'components'
}, {
route: '/components-links',
title: 'Links',
component: LinkComponents,
group: 'components'
}, {
route: '/components-panel',
title: 'Panel',
component: PanelComponents,
group: 'components'
}, {
route: '/components-spinner',
title: 'Spinner',
component: SpinnerComponents,
group: 'components'
}, {
route: '/components-table',
title: 'Table',
component: TableComponents,
group: 'components'
}, {
route: '/components-thumbnail',
title: 'Thumbnail',
component: ThumbnailComponents,
group: 'components'
}, {
title: 'ScrollBox',
group: 'data',
component: ScrollBoxPage,
route: '/data-scrollbox'
}, {
title: 'Scroll',
group: 'data',
component: ScrollPage,
route: '/data-scroll'
}, {
title: 'Icons',
group: 'data',
component: IconsPage,
route: '/data-icons'
}, {
title: 'Table',
group: 'data'
}, {
title: 'Dialog',
group: 'feedback'
}, {
title: 'Spinner',
group: 'feedback',
component: SpinnerPage,
route: '/feedback-spinner'
}, {
title: 'Button',
group: 'input',
component: ButtonsPage,
route: '/input-button'
}, {
title: 'Checkbox',
group: 'input'
}, {
title: 'IconButton',
group: 'input',
component: IconButtonPage,
route: '/input-iconbutton'
}, {
title: 'LinkButton',
group: 'input'
}, {
title: 'TextField',
group: 'input'
}, {
title: 'Panel',
group: 'layout',
component: PanelPage,
route: '/layout-panel'
}, {
title: 'Card',
group: 'layout',
component: CardPage,
route: '/layout-card'
}, {
title: 'Link',
group: 'navigation',
route: '/navigation-link',
component: LinkPage
}];
/**
* Retrieve all routes or the subset in group `group`.
*
* @param {PlaygroundRouteGroup} [group]
* @returns {PlaygroundRoute[]}
*/
export function getRoutes(group) {
if (group) {
return routes.filter(route => route.group === group);
}
return routes;
}
//# sourceMappingURL=routes.js.map