Loading state skeleton components for the chat sidebar, rendering animated placeholder UI while conversation data is being fetched.
## Key Components
### `DialogListItemSkeleton`
A single row skeleton mimicking a chat conversation list item. Renders animated pulse placeholders for the title, timestamp, and chevron icon using `animate-pulse` on `bg-ods-border` elements.
**Props:**
| Prop | Type | Description |
|------|------|-------------|
| `className` | `string?` | Additional CSS classes |
### `ChatSidebarSkeleton`
Full sidebar skeleton wrapping multiple `DialogListItemSkeleton` rows with an optional disabled "Start New Chat" button header.
**Props:**
| Prop | Type | Default | Description |
|------|------|---------|-------------|
| `className` | `string?` | — | Additional CSS classes |
| `dialogCount` | `number` | `8` | Number of skeleton rows to render |
| `showNewChatButton` | `boolean` | `true` | Whether to render the disabled new chat button |
## Usage Example
```typescript
import { ChatSidebarSkeleton, DialogListItemSkeleton } from "./chat-sidebar-skeleton"
// Full sidebar skeleton during initial load
function ChatLayout() {
const { data, isLoading } = useConversations()
if (isLoading) {
return