import React from 'react'
import Reset from './components/decorator-reset'
import { StoryFn, Meta } from '@storybook/react'
import { Leva, folder, useControls } from '../src'
export default {
title: 'Misc/Panel options',
decorators: [Reset],
} as Meta
const Template: StoryFn = (args) => {
const values = useControls({
number: 3,
color: 'lightblue',
folder: folder({
select: { value: 'something', options: ['else'] },
}),
})
return (
{JSON.stringify(values, null, ' ')}
)
}
export const Collapsed = Template.bind({})
Collapsed.args = { collapsed: true }
export const CollapsedControlled: StoryFn = (args, context) => {
const [collapsed, setCollapsed] = React.useState(true)
return Template(
{
collapsed: {
collapsed,
onChange: (collapsed) => {
setCollapsed(collapsed)
},
},
},
context
)
}
export const OneLineLabels = Template.bind({})
OneLineLabels.args = { oneLineLabels: true }
export const HideTitleBar = Template.bind({})
HideTitleBar.args = { titleBar: false }
export const Fill = Template.bind({})
Fill.args = { fill: true }
export const Flat = Template.bind({})
Flat.args = { flat: true }
export const HideCopyButton = Template.bind({})
HideCopyButton.args = { hideCopyButton: true }
export const Title: StoryFn = (args, context) => {
return Template({ titleBar: { title: args.title } }, context)
}
Title.args = { title: 'Custom title' }
export const Drag: StoryFn = (args, context) => {
return Template({ titleBar: { drag: args.drag } }, context)
}
Drag.args = { drag: true }
export const Filter: StoryFn = (args, context) => {
return Template({ titleBar: { filter: args.filter } }, context)
}
Filter.args = { filter: true }
export const PositionControlled: StoryFn = (args, context) => {
const [{ position }, set] = useControls(() => ({ position: { x: -50, y: 50 } }))
return Template({ titleBar: { drag: args.drag, position, onDrag: (point) => set({ position: point }) } }, context)
}
PositionControlled.args = { drag: true }
const Component = () => {
const values = useControls({ value: 3 })
return (
Component using
useControls
{JSON.stringify(values, null, ' ')}
)
}
export const NeverHide: StoryFn = () => {
const [shown, setShown] = React.useState(true)
return (
{shown && }
)
}
export const ReallyLongPanel = () => {
useControls({
...Object.fromEntries(
Array(50)
.fill(0)
.map((_, i) => [i, i])
),
})
return <>>
}