import type { Meta, StoryObj } from '@storybook/nextjs-vite' import { ProgramCard } from '../components/chat/entity-cards' import { DEFAULT_PROGRAM_CONFIGS } from '../components/chat/entity-cards/program-card-defaults' import { ChatColumnDecorator } from './__fixtures__/chat-card-decorator' import { podcastItem, webinarItem, eventItem, } from './__fixtures__/chat-cards' const meta: Meta = { title: 'Chat/EntityCards/ProgramCard', component: ProgramCard, parameters: { layout: 'fullscreen', docs: { description: { component: 'Generic card for the `podcast`, `webinar` and `event` doc types. Behavior is driven by the `config` prop (`DEFAULT_PROGRAM_CONFIGS[type]` ships safe minimum config for compact chat rendering; embedders can override per type with full catalog config). `sm` size is what the chat dispatch uses.', }, }, }, decorators: [(Story) => ], } export default meta type Story = StoryObj export const PodcastSm: Story = { args: { config: DEFAULT_PROGRAM_CONFIGS.podcast, item: podcastItem, size: 'sm', href: '/podcasts/' + podcastItem.id, target: '_blank', rel: 'noopener noreferrer', }, } export const WebinarSm: Story = { args: { config: DEFAULT_PROGRAM_CONFIGS.webinar, item: webinarItem, size: 'sm', href: '/webinars/' + webinarItem.id, target: '_blank', rel: 'noopener noreferrer', }, } export const EventSm: Story = { args: { config: DEFAULT_PROGRAM_CONFIGS.event, item: eventItem, size: 'sm', href: '/events/' + eventItem.id, target: '_blank', rel: 'noopener noreferrer', }, } export const PodcastDefault: Story = { args: { config: DEFAULT_PROGRAM_CONFIGS.podcast, item: podcastItem, size: 'default', href: '/podcasts/' + podcastItem.id, target: '_blank', rel: 'noopener noreferrer', }, parameters: { docs: { description: { story: 'Full default density. Not used inline in chat but rendered on the podcast catalog page.', }, }, }, }