<!-- source-hash: 0b0425ffde370482e2a418e941619761 -->
TypeScript type definitions for the announcement system, providing comprehensive interfaces for managing platform-wide announcements with rich customization options including icons, call-to-action buttons, and asset management.

## Key Components

### Core Database Models
- **`Announcement`** - Main announcement entity with title, description, platform targeting, and visual customization
- **`AnnouncementAsset`** - File attachments linked to announcements (images, documents, etc.)

### API Types
- **`CreateAnnouncementData`** / **`UpdateAnnouncementData`** - Request payloads for CRUD operations
- **`AnnouncementListResponse`** / **`AnnouncementResponse`** - Standardized API response formats with pagination
- **`GetAnnouncementsOptions`** - Query parameters for filtering and sorting announcements

### Form & UI Types
- **`AnnouncementFormData`** - Form-specific data structure with file uploads and JSON string fields
- **`AnnouncementBarProps`** / **`AnnouncementFormProps`** / **`AnnouncementListProps`** - React component prop interfaces

### Configuration Types
- **`AvailableSvgIcon`** / **`SvgIcon`** - Icon management for announcement branding
- **`AVAILABLE_SVG_ICONS`** - Predefined icon library including OpenFrame, OpenMSP, Flamingo logos and Lucide icons

## Usage Example

```typescript
// Creating a new announcement
const newAnnouncement: CreateAnnouncementData = {
  title: "New Feature Release",
  description: "Check out our latest OpenFrame capabilities",
  background_color: "#FFC008",
  icon_type: "svg",
  icon_svg_name: "rocket",
  platform_id: "openframe-platform-id",
  is_active: true,
  cta_enabled: true,
  cta_text: "Learn More",
  cta_url: "https://openframe.ai/features",
  cta_target: "_blank",
  created_by: "admin-user-id"
};

// Querying announcements with filters
const options: GetAnnouncementsOptions = {
  platform: "openframe",
  is_active: true,
  page: 1,
  pageSize: 10,
  sortBy: "created_at",
  sortOrder: "desc"
};
```