import { Story, Meta } from '@storybook/web-components'; import { html } from 'lit'; import { DisplayMode, Environment, OnChatBotClient } from './bot-client'; import bg from '../../.storybook/assets/bg.png'; import './bot-client'; const DEFAULT_TEST_CLIENT_ID = '201faad7-83b0-478d-ba19-019b5bfdd9ea'; // Florence bot export default { title: 'Bot client', argTypes: { chatCloseImageUrl: { control: 'text' }, chatOpenImageUrl: { control: 'text' }, clientId: { control: 'text' }, debug: { control: 'boolean' }, displayMode: { control: { type: 'select', options: [ DisplayMode.FULL_SCREEN, DisplayMode.WIDGET, DisplayMode.WIDGET_WITHOUT_BUTTON, ], }, }, env: { control: { type: 'select', options: [ Environment.LOCAL, Environment.STAGING, Environment.PRODUCTION, ], }, }, initialPrompt: { control: 'text' }, persistMessagesAcrossSessions: { control: 'boolean' }, shouldAutoOpen: { control: 'boolean' }, shouldAutoOpenMobile: { control: 'boolean' }, }, } as Meta; const Template: Story> = ({ chatCloseImageUrl, chatOpenImageUrl, clientId, debug, displayMode, env, initialPrompt, persistMessagesAcrossSessions, shouldAutoOpen, shouldAutoOpenMobile, }) => html` `; const TemplateWithCustomOpenButton: Story> = ( { chatCloseImageUrl, chatOpenImageUrl, clientId, displayMode, env, initialPrompt, persistMessagesAcrossSessions, shouldAutoOpen, shouldAutoOpenMobile, }, context ) => html` ${Template( { chatCloseImageUrl, chatOpenImageUrl, clientId, displayMode, env, initialPrompt, persistMessagesAcrossSessions, shouldAutoOpen, shouldAutoOpenMobile, }, context )} `; export const Default = Template.bind({}); Default.args = { clientId: DEFAULT_TEST_CLIENT_ID, debug: false, displayMode: DisplayMode.FULL_SCREEN, env: Environment.PRODUCTION, persistMessagesAcrossSessions: false, shouldAutoOpen: false, shouldAutoOpenMobile: false, }; export const DisplayAsWidget = Template.bind({}); DisplayAsWidget.args = { ...Default.args, displayMode: DisplayMode.WIDGET, }; export const DisplayAsWidgetWithoutButton = TemplateWithCustomOpenButton.bind( {} ); DisplayAsWidgetWithoutButton.args = { ...Default.args, displayMode: DisplayMode.WIDGET_WITHOUT_BUTTON, }; export const CustomWidgetButton = Template.bind({}); CustomWidgetButton.args = { ...Default.args, displayMode: DisplayMode.WIDGET, chatCloseImageUrl: 'https://d1hud7do04ixcl.cloudfront.net/favicon.ico', chatOpenImageUrl: 'https://t4.ftcdn.net/jpg/00/30/86/41/360_F_30864182_LUH70G3Ij6Z96ezS1zQreu3SbMvQDEiP.jpg', }; export const AnimatedWidgetButton = Template.bind({}); AnimatedWidgetButton.args = { ...Default.args, displayMode: DisplayMode.WIDGET, chatCloseImageUrl: 'https://d1hud7do04ixcl.cloudfront.net/favicon.ico', chatOpenImageUrl: 'https://lottie.host/af8a8ecd-93b3-4d08-ac86-b053d185f310/pgO70HRgG1.json', }; export const DisplayAsSurface = Template.bind({}); DisplayAsSurface.args = { ...Default.args, displayMode: DisplayMode.SURFACE, }; DisplayAsSurface.parameters = { layout: 'fullscreen' }; DisplayAsSurface.decorators = [ (story) => html` ${story()} `, ]; export const InitialPrompt = Template.bind({}); InitialPrompt.args = { ...Default.args, initialPrompt: 'news', }; export const PersistMessagesAcrossSessions = Template.bind({}); PersistMessagesAcrossSessions.args = { ...Default.args, persistMessagesAcrossSessions: true, }; export const AutoOpenWidget = Template.bind({}); AutoOpenWidget.args = { ...Default.args, displayMode: DisplayMode.WIDGET, shouldAutoOpen: true, shouldAutoOpenMobile: true, };