/* eslint-disable import/extensions */
import { action } from '@storybook/addon-actions';
import { html } from 'lit-html';
import '../demo-wc-card.js';
import {
array,
boolean,
button,
color,
date,
select,
withKnobs,
text,
number,
} from '@storybook/addon-knobs';
export default {
title: 'Addons/Knobs',
decorators: [withKnobs],
};
export const Simple = () => {
const header = text('header', 'Power Ranger');
const age = number('Age', 44);
return html`
I am ${text('Name', 'John Doe')} and I'm ${age} years old.
`;
};
export const Story3 = () => {
const header = text('header', 'Power Ranger');
const textColor = color('Text color', 'orangered');
return html`
I am ${text('Name', 'John Doe')} and I'm 30 years old.
`;
};
Story3.storyName = 'Color Selection';
export const Story4 = () => {
const name = text('Name', 'Jane');
const stock = number('Stock', 20, {
range: true,
min: 0,
max: 30,
step: 5,
});
const fruits = {
Apple: 'apples',
Banana: 'bananas',
Cherry: 'cherries',
};
const fruit = select('Fruit', fruits, 'apples');
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 html`
My name is ${name},
today is ${new Date(today).toLocaleDateString('en-US', dateOptions)}
${stockMessage}
Also, I have:
${items.map((item) => html` - ${item}
`)}
${salutation}
`;
};
Story4.storyName = 'All knobs';
export const XssSafety = () => {
const content = text('content', '
');
return html`
Code text works :)
Xss insert? ${content}
`;
};