import { storiesOf } from '@storybook/html'; import { action } from '@storybook/addon-actions'; import { array, boolean, button, color, date, select, withKnobs, text, number, } from '@storybook/addon-knobs/html'; storiesOf('Addons|Knobs', module) .addDecorator(withKnobs) .add('Simple', () => { const name = text('Name', 'John Doe'); const age = number('Age', 44); const content = `I am ${name} and I'm ${age} years old.`; return `
${content}
`; }) .add('All knobs', () => { const name = text('Name', 'Jane'); const stock = number('Stock', 20, { range: true, min: 0, max: 30, step: 5, }); const fruits = { apples: 'Apple', bananas: 'Banana', cherries: 'Cherry', }; const fruit = select('Fruit', fruits, 'apple'); const price = number('Price', 2.25); const colour = color('Border', 'deeppink'); const today = date('Today', new Date('Jan 20 2017 GMT+0')); const items = array('Items', ['Laptop', 'Book', 'Whiskey']); const nice = boolean('Nice', true); const stockMessage = stock ? `I have a stock of ${stock} ${fruit}, costing $${price} each.` : `I'm out of ${fruit}${nice ? ', Sorry!' : '.'}`; const salutation = nice ? 'Nice to meet you!' : 'Leave me alone!'; const dateOptions = { year: 'numeric', month: 'long', day: 'numeric', timeZone: 'UTC' }; button('Arbitrary action', action('You clicked it!')); const style = `border: 2px dotted ${colour}; padding: 8px 22px; border-radius: 8px`; return `

My name is ${name},

today is ${new Date(today).toLocaleDateString('en-US', dateOptions)}

${stockMessage}

Also, I have:

${salutation}

`; });