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 '../cirrus/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.addWithPercyOptions('Colors', { skip: true }, () => (

Source:{' '} Flame Style Guide - Colors

)); stories.addWithPercyOptions('Typography', { skip: true }, () => (

Source:{' '} Flame Style Guide - 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} /> ))} )); stories.addWithPercyOptions('Spacing', { skip: true }, () => (

Source:{' '} Flame Style Guide - Spacing

{Object.keys(scale).map(value => (
.cr-{value}
{scale[value] === 0 ? `${scale[value]}rem` : scale[value]}
{remToPxFromString(scale[value])}px
))}
)); stories.addWithPercyOptions('Shadows', { skip: true }, () => (

Source:{' '} Flame Style Guide - 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]}
))}
)); stories.addWithPercyOptions('Border Radii', { skip: true }, () => (

Source:{' '} Flame Style Guide - Border Radii

{Object.keys(radii.values).map(value => (
.cr-{value}
{radii.values[value]}
))}
)); stories.addDecorator(withReadme(Readme)).addWithPercyOptions('Transitions', { skip: true }, () => (

Durations

Hover boxes to see example.

{Object.keys(transition.durations).map(value => (
.cr-{value}
{transition.durations[value]}
))}
));