import * as React from 'react'; import { Tabs, TabPage, styled, Headline, distance, TabChangeEvent } from '../../src'; // @ts-ignore import Pathline from 'react-styleguidist/lib/rsg-components/Pathline'; interface ReactComponentRendererProps { name: string; heading: React.ReactNode; filepath: string; pathLine: string; tabButtons: React.ReactNode; tabBody: React.ReactNode; description: React.ReactNode; docs: React.ReactNode; examples: React.ReactNode; isolated: boolean; } const ComponentName = styled.header` margin-bottom: ${distance.large}; `; const ComponentTabPage = styled(TabPage)` padding-top: ${distance.medium}; `; const Block = styled.div` margin: ${distance.medium} 0; `; const Content = styled.div` margin-top: ${distance.large}; `; interface SingleReactComponentState { index: number; } class SingleReactComponent extends React.Component { constructor(props: ReactComponentRendererProps) { super(props); this.state = { index: +(localStorage.getItem('selectedIndex') || 0), }; } private changeTab = (e: TabChangeEvent) => { localStorage.setItem('selectedIndex', e.selectedIndex.toString()); this.setState({ index: e.selectedIndex, }); }; render() { const { heading, pathLine, description, docs, tabBody, examples } = this.props; const { index } = this.state; return (
{heading} {pathLine && {pathLine}} Usage Examples {examples} {description && ( Description {description} {docs} )} {tabBody && ( Properties & Methods {tabBody} )}
); } } const ReactComponentRenderer: React.SFC = props => { return ; }; export default ReactComponentRenderer;