//
// Copyright 2022 DXOS.org
//
import '@dxos-theme';
import React, { type ReactNode, useState } from 'react';
import { Toast } from './Toast';
import { withTheme } from '../../testing';
import { Button } from '../Buttons';
type ActionTriggerProps = { altText: string; trigger: ReactNode };
type StorybookToastProps = Partial<{
title: string;
description: string;
actionTriggers: ActionTriggerProps[];
openTrigger: string;
closeTrigger: ReactNode;
}>;
const DefaultStory = ({ title, description, actionTriggers, openTrigger, closeTrigger }: StorybookToastProps) => {
const [open, setOpen] = useState(true);
return (
{title}
{description}
{closeTrigger}
{(actionTriggers || []).map(({ altText, trigger }: ActionTriggerProps, index: number) => (
{trigger}
))}
);
};
export default {
title: 'ui/react-ui-core/Toast',
component: Toast,
render: DefaultStory,
decorators: [withTheme],
parameters: { chromatic: { disableSnapshot: false } },
};
export const Default = {
args: {
openTrigger: 'Open toast',
title: 'This is a toast',
description: 'This goes away on its own with a timer.',
actionTriggers: [
{
altText: 'Press F5 to reload the page',
trigger: ,
},
],
closeTrigger: ,
},
parameters: {
chromatic: { delay: 800 },
},
};