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)