/** * Icon mappings for file types and model modalities * Centralized configuration to ensure consistent icon usage across the app */ import { Eye as VisionIcon, File as FileIcon, FileText as FileTextIcon, Image as ImageIcon, Lightbulb as ReasoningIcon, Mic as AudioIcon, Video as VideoIcon } from '@lucide/svelte'; import { FileTypeCategory, ModelCapability, ModelModality } from '$lib/enums'; import type { ModelCapabilities, ModelModalities } from '$lib/types/models'; import type { Component } from 'svelte'; export const FILE_TYPE_ICONS = { [FileTypeCategory.AUDIO]: AudioIcon, [FileTypeCategory.IMAGE]: ImageIcon, [FileTypeCategory.PDF]: FileIcon, [FileTypeCategory.TEXT]: FileTextIcon, [FileTypeCategory.VIDEO]: VideoIcon } as const; export const DEFAULT_FILE_ICON = FileIcon; export const MODALITY_ICONS = { [ModelModality.AUDIO]: AudioIcon, [ModelModality.VIDEO]: VideoIcon, [ModelModality.VISION]: VisionIcon } as const; export const MODALITY_LABELS = { [ModelModality.AUDIO]: 'Audio', [ModelModality.VIDEO]: 'Video', [ModelModality.VISION]: 'Vision' } as const; /** Maps an input ModelModality to the boolean flag it drives on the ModelModalities type */ export const MODALITY_FLAG_KEYS: Record< Exclude, keyof ModelModalities > = { [ModelModality.AUDIO]: 'audio', [ModelModality.VIDEO]: 'video', [ModelModality.VISION]: 'vision' }; export const CAPABILITY_ICONS: Record = { [ModelCapability.REASONING]: ReasoningIcon } as const; export const CAPABILITY_LABELS: Record = { [ModelCapability.REASONING]: 'Reasoning' } as const; /** Maps a ModelCapability to the boolean flag it drives on the ModelCapabilities type */ export const CAPABILITY_FLAG_KEYS: Record = { [ModelCapability.REASONING]: 'reasoning' }; // Shared SVG icon strings for copy and preview buttons export const COPY_ICON_SVG = ``; export const PREVIEW_ICON_SVG = ``; export const CODE_ICON_SVG = ``;