import preview from "#.storybook/preview"; import { AnimatedModal } from "../../src/ts/components/common/AnimatedModal"; import { ModalId, showModal } from "../../src/ts/states/modals"; function ModalTrigger(props: { modalId: ModalId; label: string }) { return ( ); } const meta = preview.meta({ title: "Common/AnimatedModal", component: AnimatedModal, parameters: { layout: "fullscreen", }, tags: ["autodocs"], argTypes: { mode: { control: "select", options: ["modal", "dialog"] }, animationMode: { control: "select", options: ["none", "both", "modalOnly"], }, title: { control: "text" }, modalClass: { control: "text" }, wrapperClass: { control: "text" }, }, decorators: [ (Story, context) => { // oxlint-disable-next-line typescript/no-unsafe-member-access -- storybook decorator context is untyped const modalId = context.args.id as ModalId; // oxlint-disable-next-line typescript/no-unsafe-member-access -- storybook decorator context is untyped const title = (context.args.title as string) ?? "Modal"; return (
); }, ], }); export const Default = meta.story({ args: { id: "Contact", title: "Example Modal", children: (

This is modal content.

), }, }); export const NoAnimation = meta.story({ args: { id: "Support", title: "No Animation Modal", animationMode: "none", children: (

This modal has no animation.

), }, }); export const DialogMode = meta.story({ args: { id: "DevOptions", mode: "dialog", title: "Dialog Mode", children: (

This uses dialog mode instead of modal.

), }, });