import type { Meta, StoryObj } from '@storybook/nextjs-vite'
import { GuideWelcome } from '../components/chat/guide-welcome'
import { GuideModeBanner } from '../components/chat/guide-mode-banner'
import { MingoOnboardingCard } from '../components/chat/mingo-onboarding-card'
import {
Rocket01Icon,
CompassIcon,
NewspaperIcon,
} from '../components/icons-v2-generated'
const ACTIONS = [
{ id: 'recent', label: 'Recent', onClick: () => console.log('recent') },
{ id: 'search', label: 'Search', onClick: () => console.log('search') },
{ id: 'find', label: 'Find', onClick: () => console.log('find') },
]
// Quick actions are caller-provided (GuideWelcome ships no defaults); these
// demonstrate the inline chips + the "⋯" overflow menu.
const SAMPLE_QUICK_ACTIONS = [
{ id: 'how-to-start', label: 'How to start' },
{ id: 'connect-device', label: 'Connect device' },
{ id: 'find-device', label: 'Find device' },
{ id: 'remote-connection', label: 'Remote connection' },
{ id: 'run-scripts', label: 'Run scripts' },
{ id: 'device-software', label: 'Device software' },
{ id: 'bulk-update', label: 'Bulk update' },
]
const SAMPLE_LIST = (
}
title="Product Releases"
slashCommand="/release-notes"
description="OpenFrame version releases, changelogs, and update notes"
actions={ACTIONS}
/>
}
title="Blog Posts"
slashCommand="/blogs"
description="Latest articles, guides, and announcements from the blog"
actions={ACTIONS}
/>
}
title="Onboarding Guides"
slashCommand="/getting-started"
description="Step-by-step guides to get started with OpenFrame"
actions={ACTIONS}
/>
)
const meta: Meta = {
title: 'Chat/GuideWelcome',
component: GuideWelcome,
parameters: {
layout: 'centered',
docs: {
description: {
component:
'Figma node `7532:328214`. Guide-mode chat empty state — a guide-mode banner, a centred greeting sharing one scroll region with the slash-command onboarding list, and a pinned quick-action chip row (overflowing to a "⋯" menu). Content is configurable with OpenFrame defaults.',
},
},
},
argTypes: {
title: { control: 'text' },
subtitle: { control: 'text' },
quickActions: { control: false },
onQuickAction: { control: false },
children: { control: false },
},
decorators: [
(Story) => (
// Mimic the narrow drawer panel: dark `ods-bg` surface (the guide content
// background), banner pinned at the top.
),
],
}
export default meta
type Story = StoryObj
/** Full guide-mode empty state with the slash-command list and quick actions. */
export const Default: Story = {
args: {
quickActions: SAMPLE_QUICK_ACTIONS,
onQuickAction: (a) => console.log('quick action', a.id),
children: SAMPLE_LIST,
},
}
/** No slash commands available yet — greeting + quick actions only. */
export const NoCommands: Story = {
args: {
quickActions: SAMPLE_QUICK_ACTIONS,
onQuickAction: (a) => console.log('quick action', a.id),
},
}
/** No quick actions supplied (the default) — the chip row is omitted entirely. */
export const NoQuickActions: Story = {
args: {
children: SAMPLE_LIST,
},
}
/** Custom greeting copy. */
export const CustomCopy: Story = {
args: {
title: 'Ask the Guide',
subtitle: 'A temporary session for exploring docs and tickets.',
quickActions: SAMPLE_QUICK_ACTIONS,
onQuickAction: (a) => console.log('quick action', a.id),
children: SAMPLE_LIST,
},
}