import React, { useState } from 'react'; import type { ComponentMeta } from '@storybook/react'; import type { DropdownMenuAlignment, DropdownMenuSize } from '@tih/ui'; import { DropdownMenu } from '@tih/ui'; const DropdownMenuAlignments: ReadonlyArray = [ 'start', 'end', ]; const DropdownMenuSizes: ReadonlyArray = ['sm', 'md', 'lg']; export default { argTypes: { align: { control: { type: 'select' }, options: DropdownMenuAlignments, }, label: { control: 'text', }, size: { control: { type: 'select' }, options: DropdownMenuSizes, }, }, component: DropdownMenu, parameters: { docs: { iframeHeight: 300, inlineStories: false, }, }, title: 'DropdownMenu', } as ComponentMeta; export function Basic({ align, label, size, }: Pick< React.ComponentProps, 'align' | 'label' | 'size' >) { const menuItems = [ { label: 'Profile', value: 'profile', }, { label: 'Settings', value: 'settings', }, { label: 'Sign Out', value: 'sign-out', }, ]; const [selectedValue, setSelectedValue] = useState('apple'); return ( {menuItems.map(({ label: itemLabel, value }) => ( { setSelectedValue(value); }} /> ))} ); } Basic.args = { align: 'start', label: 'More actions', size: 'md', }; export function Align() { const menuItems = [ { label: 'Profile', value: 'profile', }, { label: 'Settings', value: 'settings', }, { label: 'Sign Out', value: 'sign-out', }, ]; const [selectedValue, setSelectedValue] = useState('apple'); return (
{menuItems.map(({ label, value }) => ( { setSelectedValue(value); }} /> ))} {menuItems.map(({ label, value }) => ( { setSelectedValue(value); }} /> ))}
); }