Shared Storybook fixtures that supply realistic mock data for every chat entity-card docType in `CHAT_CARD_REGISTRY`, enabling designers to preview cards without running the chat runtime. ## Key Components ### Constants & Helpers - **`NOW` / `DAY`** — Fixed timestamp anchor (`2026-05-28`) and millisecond day unit used to compute relative dates - **`isoDaysAgo(days)`** — Utility that returns an ISO 8601 string N days before the anchor - **`SAMPLE_AUTHOR`** — Reusable author object with name, avatar, and job title ### Exported Fixtures | Export | Type | Description | |---|---|---| | `githubCommitItem` | `GitHubActivityItem` | Commit activity card fixture | | `githubPullRequestItem` | `GitHubActivityItem` | Pull request card fixture | | `githubPrReviewItem` | `GitHubActivityItem` | PR review card fixture | | `slackMessageItem` | `SlackMessageItem` | Slack channel message fixture | | `hubspotTicketItem` | `HubspotTicketItem` | High-priority HubSpot ticket fixture | | `dataRoomDocItem` | `DataRoomDocCardItem` | Investor relations document fixture | | `openframeDocsMarkdownItem` | `DataRoomDocCardItem` | Knowledge base article fixture | | `financialKpiItem` | `GenericEntityCardItem` | ARR KPI card with badge and facts | | `capTableItem` | `GenericEntityCardItem` | SAFE note cap table entry | | `profitLossItem` | `GenericEntityCardItem` | Consolidated P&L card | | `balanceSheetItem` | `GenericEntityCardItem` | Month-end balance sheet card | | `cashFlowItem` | `GenericEntityCardItem` | Operating cash flow card | | `blogPostSummary` | `BlogPostSummary` | Featured engineering blog post | | `caseStudy` | `CaseStudy` | MSP customer success story with relations | | `customerInterview` | `CustomerInterview` | Video interview with transcript fields | ## Usage Example ```typescript import { githubCommitItem, hubspotTicketItem, financialKpiItem, } from '@/stories/fixtures/chat-cards' // Use directly in a Storybook story export const HubSpotTicket: Story = { args: { item: hubspotTicketItem, href: hubspotTicketItem.url, }, } // Or compose multiple fixtures into a feed story export const MixedFeed: Story = { args: { items: [githubCommitItem, hubspotTicketItem, financialKpiItem], }, } ``` > **Note:** Server-only fields (status timestamps, AI processing flags, view counts) are populated with type-correct placeholder values. The card components do not read these at render time, but the wire types require them for TypeScript compliance.