import * as React from 'react'; import { storiesOf } from '@storybook/react'; import { withReadme } from 'storybook-readme'; import cn from 'classnames'; import { withTheme } from 'emotion-theming'; import Readme from './README.md'; import { typography, spacing, shadows, radii, transition } from './src'; import { Box } from '../flame/src/Core'; import styles from '../../stories/styles/stories.scss'; import { hex2rgba } from '../../stories/helpers/color'; import { remToPxFromString } from '../../stories/helpers/unit'; import { Grid } from '../../stories/components/grid'; const stories = storiesOf('tokens', module).addDecorator(withReadme(Readme)); const { typeface, weights, fontSizes, letterSpacings } = typography; const { scale } = spacing; const { outer, inner, border, innerN } = shadows; interface ExampleWithValuesProps { title: React.ReactNode; values: any[]; paddingTop: any; } const ExampleWithValues: React.FC = ({ title, values = [], paddingTop, children, }) => (
{title}
{values.map(val => ( {val} ))}
{children ?
{children}
: null}
); interface ColorRendererProps { theme: { colors: Record; }; } const ColorRenderer: React.FC = ({ theme }) => { const colors = theme.colors; return ( {Object.keys(colors).map(value => (
.cr-{value}
{colors[value]} {hex2rgba(colors[value])}
))}
); }; const ThemeColorRenderer = withTheme(ColorRenderer); stories.add( 'Colors', () => (
), { percy: { skip: true } }, ); stories.add( 'Typography', () => (

Typefaces

{Object.keys(typeface).map((className, index) => ( The quick brown fox jumps over the lazy dog
} values={[`.cr-${className}`]} paddingTop={index > 0} > font-family: {typeface[className]} ))}

Weights

{Object.keys(weights).map((className, index) => ( The quick brown fox jumps over the lazy dog } values={[`.cr-${className}`, `weight: ${weights[className]}`]} paddingTop={index > 0} /> ))}

Font Sizes

{Object.keys(fontSizes).map((className, index) => ( Text ({className})
} values={[ `.cr-${className}`, fontSizes[className], `${remToPxFromString(fontSizes[className])}px`, ]} paddingTop={index > 0} /> ))}

Letter Spacing

{Object.keys(letterSpacings).map((className, index) => ( Text ({className})
} values={[ `.cr-${className}`, letterSpacings[className], `${remToPxFromString(letterSpacings[className])}px`, ]} paddingTop={index > 0} /> ))} ), { percy: { skip: true } }, ); stories.add( 'Spacing', () => (
{Object.keys(scale).map(value => (
.cr-{value}
{scale[value] === 0 ? `${scale[value]}rem` : scale[value]}
{remToPxFromString(scale[value])}px
))}
), { percy: { skip: true } }, ); stories.add( 'Shadows', () => (
{Object.keys(outer).map(value => (
.cr-{value}
{outer[value]}
))}

Inner

{Object.keys(inner).map(value => (
.cr-{value}
{inner[value]}
))} {Object.keys(innerN).map(value => (
.cr-{value}
{innerN[value]}
))}

Border

{Object.keys(border).map(value => (
.cr-{value}
{border[value]}
))}
), { percy: { skip: true } }, ); stories.add( 'Border Radii', () => (
{Object.keys(radii.values).map(value => (
.cr-{value}
{radii.values[value]}
))}
), { percy: { skip: true } }, ); stories.add( 'Transitions', () => (

Durations

Hover boxes to see example.

{Object.keys(transition.durations).map(value => (
.cr-{value}
{transition.durations[value]}
))}
), { percy: { skip: true } }, );