import { useState } from 'react' import type { Meta, StoryObj } from '@storybook/react-vite' import { Alert } from './Alert' import { Button } from '@/components/atoms/Button' const meta: Meta = { title: 'Molecules/Alert', component: Alert, tags: ['autodocs'], argTypes: { variant: { control: 'select', options: ['info', 'warning', 'error', 'success', 'neutral'], }, }, decorators: [ (Story) => (
), ], } export default meta type Story = StoryObj export const Default: Story = { args: { title: 'Information', children: 'Your submission has been received and is being reviewed.', }, } // --- Variants --- export const Info: Story = { args: { variant: 'info', title: 'Alert title', children: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!', }, } export const Warning: Story = { args: { variant: 'warning', title: 'Alert title', children: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!', }, } export const Error: Story = { args: { variant: 'error', title: 'Alert title', children: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!', }, } export const Success: Story = { args: { variant: 'success', title: 'Alert title', children: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!', }, } export const Neutral: Story = { args: { variant: 'neutral', title: 'Alert title', children: 'Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!', }, } // --- With close --- export const Dismissible: Story = { render: () => { const [visible, setVisible] = useState(true) if (!visible) return return ( setVisible(false)}> You can now export your synthesis results as a PDF report. ) }, } // --- With action --- export const WithAction: Story = { render: () => ( Complete now } > Your ethics application is missing required attachments. Please upload them before the deadline. ), } // --- With close and action --- export const WithCloseAndAction: Story = { render: () => ( {}} action={ } > The file could not be uploaded due to a network error. Please check your connection and try again. ), } // --- Title only --- export const TitleOnly: Story = { args: { variant: 'success', title: 'Changes saved successfully.', }, } // --- Content only --- export const ContentOnly: Story = { args: { variant: 'neutral', children: 'This project is in read-only mode. Contact the project owner to request edit access.', }, } // --- All variants --- export const AllVariants: Story = { render: () => (
{}} action={} > Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem! {}} action={} > Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem! {}} action={} > Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem! {}} action={} > Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem! {}} action={} > Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem!
), }