import React from "react"; import { useCallback, useState } from "react"; import { createComponentTemplate } from "vibe-storybook-components"; import { Add, Calendar, Check, Remove } from "../../Icon/Icons"; import { createStoryMetaSettingsDecorator } from "../../../storybook/functions/createStoryMetaSettingsDecorator"; import Button from "../Button"; import "./Button.stories.scss"; import { Meta, StoryObj } from "@storybook/react"; import Text from "../../Text/Text"; type Story = StoryObj; const metaSettings = createStoryMetaSettingsDecorator({ component: Button, enumPropNamesArray: ["kind", "size", "color", "type"], iconPropNamesArray: ["leftIcon", "rightIcon", "successIcon"], actionPropsArray: ["onClick"] }); export default { title: "Buttons/Button", component: Button, argTypes: metaSettings.argTypes, decorators: metaSettings.decorators } satisfies Meta; const buttonTemplate = createComponentTemplate(Button); export const Overview: Story = { render: buttonTemplate.bind({}), args: { children: "Button" }, parameters: { docs: { liveEdit: { isEnabled: false } } } }; export const ButtonKinds: Story = { render: () => ( <> ), name: "Button kinds" }; export const Sizes: Story = { render: () => ( <> ) }; export const Disabled: Story = { render: () => ( <> ) }; export const States: Story = { render: () => ( <> ) }; export const PositiveAndNegative: Story = { render: () => ( <> ), name: "Positive and Negative" }; export const Icons: Story = { render: () => ( <> ), parameters: { docs: { liveEdit: { scope: { Calendar } } } } }; export const LoadingState: Story = { render: () => { const [loading, setLoading] = useState(false); const onClick = useCallback(() => { setLoading(true); }, [setLoading]); return ( ); }, name: "Loading state" }; export const SuccessState: Story = { render: () => { const [success, setSuccess] = useState(false); const onClick = useCallback(() => { setSuccess(true); }, [setSuccess]); return ( ); }, parameters: { docs: { liveEdit: { scope: { Check } } } }, name: "Success state" }; export const OnColorStates: Story = { render: () => ( <>
Regular

Disabled
), name: "On color states" }; export const AdjacentButtons: Story = { render: () => (
), parameters: { docs: { liveEdit: { scope: { Remove, Add } } } }, name: "Adjacent buttons" };