diff --git a/packages/docz-theme-default/src/components/ui/Container.tsx b/packages/docz-theme-default/src/components/ui/Container.tsx deleted file mode 100644 index bcad5aa61..000000000 --- a/packages/docz-theme-default/src/components/ui/Container.tsx +++ /dev/null @@ -1,6 +0,0 @@ -import styled from 'react-emotion' - -export const Container = styled('div')` - margin: 0 auto; - ${p => p.theme.styles.container}; -` diff --git a/packages/docz-theme-default/src/components/ui/H1.tsx b/packages/docz-theme-default/src/components/ui/H1.tsx index 75ebf543f..6a8b6fc76 100644 --- a/packages/docz-theme-default/src/components/ui/H1.tsx +++ b/packages/docz-theme-default/src/components/ui/H1.tsx @@ -2,14 +2,15 @@ import styled from 'react-emotion' export const H1 = styled('h1')` position: relative; + display: table; ${p => p.theme.styles.h1}; &:before { position: absolute; content: ''; - bottom: 0; + bottom: 5%; left: 0; - width: 10%; + width: 30%; height: 3px; background: ${p => p.theme.colors.primary}; } diff --git a/packages/docz-theme-default/src/components/ui/Page.tsx b/packages/docz-theme-default/src/components/ui/Page.tsx new file mode 100644 index 000000000..f44be3f88 --- /dev/null +++ b/packages/docz-theme-default/src/components/ui/Page.tsx @@ -0,0 +1,21 @@ +import * as React from 'react' +import { PageProps } from 'docz' +import { SFC } from 'react' +import styled from 'react-emotion' + +export const Container = styled('div')` + margin: 0 auto; + ${p => p.theme.styles.container}; +` + +const Wrapper = styled('div')` + flex: 1; + height: 100%; + overflow-y: auto; +` + +export const Page: SFC = ({ children, ...props }) => ( + + {children} + +) diff --git a/packages/docz-theme-default/src/components/ui/Tooltip.tsx b/packages/docz-theme-default/src/components/ui/Tooltip.tsx index 8cd0ca1ed..5f18042ec 100644 --- a/packages/docz-theme-default/src/components/ui/Tooltip.tsx +++ b/packages/docz-theme-default/src/components/ui/Tooltip.tsx @@ -10,7 +10,7 @@ interface TooltipProps { export const Tooltip: SFC = ({ text, children }) => ( - {({ config }) => ( + {config => ( {children} diff --git a/packages/docz-theme-default/src/components/ui/index.tsx b/packages/docz-theme-default/src/components/ui/index.tsx index 786bc4676..bd3c6cc73 100644 --- a/packages/docz-theme-default/src/components/ui/index.tsx +++ b/packages/docz-theme-default/src/components/ui/index.tsx @@ -1,4 +1,3 @@ -export { Container } from './Container' export { H1 } from './H1' export { H2 } from './H2' export { H3 } from './H3' @@ -6,6 +5,7 @@ export { H4 } from './H4' export { H5 } from './H5' export { H6 } from './H6' export { List } from './List' +export { Page } from './Page' export { Pre } from './Pre' export { Render } from './Render' export { Table } from './Table' diff --git a/packages/docz-theme-default/src/index.tsx b/packages/docz-theme-default/src/index.tsx index ef58ebead..6c6e759d5 100644 --- a/packages/docz-theme-default/src/index.tsx +++ b/packages/docz-theme-default/src/index.tsx @@ -1,46 +1,35 @@ import './styles/prism-theme' import * as React from 'react' -import styled from 'react-emotion' import { theme, DocPreview, ThemeConfig } from 'docz' import { ThemeProvider } from 'emotion-theming' -import * as components from './components/ui' -import { Container } from './components/ui' -import { Sidebar, Main } from './components/shared' import { config } from './config' - -const Page = styled('div')` - flex: 1; - height: 100%; - overflow-y: auto; -` +import { Sidebar, Main } from './components/shared' +import * as components from './components/ui' const Theme = () => ( - {({ config }) => ( + {config => (
- - - - - +
)} diff --git a/packages/docz/src/components/DocPreview.tsx b/packages/docz/src/components/DocPreview.tsx index 452459f37..49a8f0d6a 100644 --- a/packages/docz/src/components/DocPreview.tsx +++ b/packages/docz/src/components/DocPreview.tsx @@ -1,39 +1,67 @@ import * as React from 'react' import { SFC } from 'react' import loadable from 'loadable-components' -import { Switch, Route } from 'react-router-dom' +import { Switch, Route, RouteComponentProps } from 'react-router-dom' -import { dataContext } from '../theme' +import { RenderComponent } from './Playground' +import { dataContext, Entry } from '../theme' + +export type PageProps = RouteComponentProps & { + doc?: Entry +} export interface DocPreviewProps { components: { + page?: React.ComponentType + render?: RenderComponent + h1?: React.ComponentType + h2?: React.ComponentType + h3?: React.ComponentType + h4?: React.ComponentType + h5?: React.ComponentType + h6?: React.ComponentType + ul?: React.ComponentType + table?: React.ComponentType + pre?: React.ComponentType [key: string]: any } } -export const DocPreview: SFC = ({ components }) => ( - - {({ imports, entries }) => ( - - {Object.keys(imports).map(path => { - const entry = entries && entries[path] - const asyncComponent = loadable(async () => { - const { default: Component } = await imports[path]() - return props => - }) +export const DocPreview: SFC = ({ components }) => { + const Page = components.page - return ( - entry && ( - + return ( + + {({ imports, entries }) => ( + + {Object.keys(imports).map(path => { + const entry = entries && entries[path] + const AsyncComponent = loadable(async () => { + const { default: Component } = await imports[path]() + return props => + }) + + return ( + entry && ( + + Page ? ( + + + + ) : ( + + ) + } + /> + ) ) - ) - })} - - )} - -) + })} + + )} + + ) +} diff --git a/packages/docz/src/index.ts b/packages/docz/src/index.ts index 9225d80fc..7b9333862 100644 --- a/packages/docz/src/index.ts +++ b/packages/docz/src/index.ts @@ -1,7 +1,7 @@ export { theme, Entry } from './theme' -export { DocPreview } from './components/DocPreview' +export { DocPreview, PageProps } from './components/DocPreview' export { Docs, DocsRenderProps } from './components/Docs' export { Link } from './components/Link' export { Playground, RenderComponent } from './components/Playground' export { PropsTable } from './components/PropsTable' -export { ThemeConfig, ThemeConfigRenderProps } from './components/ThemeConfig' +export { ThemeConfig } from './components/ThemeConfig'