Storybook stories for the `HubspotTicketCard` chat entity card, covering all three doc type variants (`hubspot_ticket`, `hubspot_ticket_anon`, `hubspot_ticket_self`) and both layout modes. ## Key Components | Export | Description | |---|---| | `Full` | Standard ticket card with all fields populated and a clickable anchor | | `Anon` | Anonymous variant with `customerCompany` and `url` nulled out server-side, rendering as a non-clickable shell | | `SelfTicket` | Ticket owned by the chatting user; admin URL stripped, status set to `NEW` | | `ClosedTicket` | Ticket in `CLOSED`/`LOW` priority state with anchor | | `RowVariant` | Same full data rendered in `row` layout instead of `compact` | ## Usage Example ```typescript import { HubspotTicketCard } from '../components/chat/entity-cards' import { hubspotTicketItem } from './__fixtures__/chat-cards' import { makeAnchorProps } from './__fixtures__/chat-card-decorator' // Compact (default) — full ticket with link // Anon variant — server redacts sensitive fields before sending ``` ## Notes - The single `HubspotTicketCard` component handles all three doc types; field redaction (`customerCompany`, `url`) is performed server-side before the item reaches the card. - Status and priority badges drive the visual treatment — stories cover `NEW`, `CLOSED`, `MEDIUM`, and `LOW` combinations. - All stories are wrapped in `ChatColumnDecorator` to simulate the chat column layout. **Source:** [`HubspotTicketCard.stories.tsx`](https://github.com/flamingo-stack/openframe-oss-lib/blob/main/HubspotTicketCard.stories.tsx)