import React from 'react'
import { StoryFn, Meta } from '@storybook/react'
import Reset from '../components/decorator-reset'
import { useControls } from '../../src'
type Color = { r: number; g: number; b: number; a?: number }
export default {
title: 'Inputs/Color',
decorators: [Reset],
} as Meta
const Template: StoryFn = (args: Color) => {
const values = useControls({ color: args })
const _color = React.useMemo(() => {
if (typeof values.color !== 'string') {
let c = values.color as Color
if ('a' in c) return `rgb(${c.r}, ${c.g}, ${c.b}, ${c.a})`
return `rgb(${c.r}, ${c.g}, ${c.b})`
}
return values.color
}, [values.color])
return (
{JSON.stringify(values, null, ' ')}
)
}
export const Hexadecimal = Template.bind({})
Hexadecimal.args = {
value: '#ff005b',
}
export const Hex8 = Template.bind({})
Hex8.args = {
value: '#ff005b88',
}
export const RGBObject = Template.bind({})
RGBObject.args = {
value: { r: 248, g: 214, b: 40 },
}
export const RGBAObject = Template.bind({})
RGBAObject.args = {
value: { r: 248, g: 214, b: 40, a: 1 },
}
export const String = Template.bind({})
String.args = {
value: 'royalblue',
}
export const AllTheColors = () => {
const values = useControls({
Name: 'royalblue',
Hex: '#9442ff',
Hex8: '#8b33ffaa',
RgbString: 'rgb(255, 47, 162)',
RgbaString: 'rgba(233, 30, 99, 0.9)',
Rgb: { r: 0, g: 150, b: 136 },
Rgba: { r: 139, g: 195, b: 74, a: 0.5 },
Hsl: { h: 4, s: 90, l: 58 },
Hsla: { h: 36, s: 100, l: 50, a: 1 },
HslString: 'hsl(199,98%,48%)',
HslaString: 'hsla(187,1%,42%,0.9)',
Hsv: { h: 238, s: 100, v: 70 },
Hsva: { h: 58, s: 92, v: 100, a: 0.3 },
})
return (
{JSON.stringify(values, null, ' ')}
)
}