import MenuButton from "../MenuButton"; import { noop as NOOP } from "lodash-es"; import { createStoryMetaSettingsDecorator } from "../../../storybook"; import { createComponentTemplate } from "vibe-storybook-components"; import { Button, Menu, MenuItem } from "../../index"; import { DropdownChevronDown, Favorite, Moon, Sun } from "../../Icon/Icons"; import MoveArrowDown from "../../Icon/Icons/components/MoveArrowDown"; import React, { useRef } from "react"; import { Meta, StoryObj } from "@storybook/react"; type Story = StoryObj; const metaSettings = createStoryMetaSettingsDecorator({ component: MenuButton, iconPropNamesArray: ["component"], actionPropsArray: ["onMenuHide", "onMenuShow"], ignoreControlsPropNamesArray: ["children"] }); export default { title: "Buttons/MenuButton", component: MenuButton, argTypes: metaSettings.argTypes, decorators: metaSettings.decorators } satisfies Meta; const menuButtonTemplate = createComponentTemplate(MenuButton); export const Overview: Story = { render: menuButtonTemplate.bind({}), args: { children: ( ) }, parameters: { docs: { liveEdit: { isEnabled: false } } } }; export const Sizes: Story = { render: () => ( <> ), parameters: { docs: { liveEdit: { scope: { NOOP, Sun, Moon, Favorite } } } } }; export const DifferentIcon: Story = { render: () => ( ), parameters: { docs: { liveEdit: { scope: { NOOP, MoveArrowDown, Sun, Moon, Favorite } } } } }; export const WithText: Story = { render: () => (
), parameters: { docs: { liveEdit: { scope: { NOOP, Sun, Moon, Favorite } } } } }; export const WithTextAndIconAtTheEnd: Story = { render: () => (
), parameters: { docs: { liveEdit: { scope: { NOOP, DropdownChevronDown, Sun, Moon, Favorite } } } }, name: "With Text and Icon at the end" }; export const Disabled: Story = { render: () => ( ), parameters: { docs: { liveEdit: { scope: { NOOP, Sun, Moon, Favorite } } } } }; export const CustomTriggerElement: Story = { render: () => { const ref = useRef(null); return ( ( )} > ); }, parameters: { docs: { liveEdit: { scope: { NOOP, Sun, Moon, Favorite } } } } };