// ─── Content Creation Studio Types ─── export type StudioChannel = 'youtube' | 'instagram' | 'naver_blog' | 'tiktok' | 'facebook'; export type ContentFormat = | 'shorts' | 'long_form' // YouTube | 'reels' | 'carousel' | 'feed_image' | 'stories' // Instagram | 'seo_post' | 'faq_post' // Naver Blog | 'short_video' // TikTok | 'ad_creative' | 'retarget_content'; // Facebook export interface ChannelFormatOption { channel: StudioChannel; label: string; icon: string; formats: { key: ContentFormat; label: string; aspectRatio: '16:9' | '9:16' | '1:1' | '4:5' }[]; } export type ContentPillarId = string; export type AssetSourceType = 'collected' | 'my_assets' | 'ai_generated'; export type MusicGenre = 'calm' | 'upbeat' | 'cinematic' | 'corporate' | 'none'; export interface MusicTrack { id: string; name: string; genre: MusicGenre; duration: string; } export type NarrationLanguage = 'ko' | 'en' | 'ja' | 'zh'; export type NarrationVoice = 'male' | 'female'; export interface SoundSettings { genre: MusicGenre; trackId: string | null; narrationEnabled: boolean; narrationLanguage: NarrationLanguage; narrationVoice: NarrationVoice; subtitleEnabled: boolean; } export type GenerateOutputType = 'image' | 'video'; export interface StudioState { channel: StudioChannel | null; format: ContentFormat | null; pillarId: ContentPillarId | null; assetSources: AssetSourceType[]; sound: SoundSettings; outputType: GenerateOutputType; } export const DEFAULT_SOUND: SoundSettings = { genre: 'calm', trackId: null, narrationEnabled: false, narrationLanguage: 'ko', narrationVoice: 'female', subtitleEnabled: true, }; export const CHANNEL_OPTIONS: ChannelFormatOption[] = [ { channel: 'youtube', label: 'YouTube', icon: 'youtube', formats: [ { key: 'shorts', label: 'Shorts', aspectRatio: '9:16' }, { key: 'long_form', label: 'Long-form', aspectRatio: '16:9' }, ], }, { channel: 'instagram', label: 'Instagram', icon: 'instagram', formats: [ { key: 'reels', label: 'Reels', aspectRatio: '9:16' }, { key: 'carousel', label: 'Carousel', aspectRatio: '1:1' }, { key: 'feed_image', label: 'Feed Image', aspectRatio: '1:1' }, { key: 'stories', label: 'Stories', aspectRatio: '9:16' }, ], }, { channel: 'naver_blog', label: 'Naver Blog', icon: 'globe', formats: [ { key: 'seo_post', label: 'SEO Post', aspectRatio: '16:9' }, { key: 'faq_post', label: 'FAQ Post', aspectRatio: '16:9' }, ], }, { channel: 'tiktok', label: 'TikTok', icon: 'tiktok', formats: [ { key: 'short_video', label: 'Short Video', aspectRatio: '9:16' }, ], }, { channel: 'facebook', label: 'Facebook', icon: 'facebook', formats: [ { key: 'ad_creative', label: 'Ad Creative', aspectRatio: '1:1' }, { key: 'retarget_content', label: 'Retarget Content', aspectRatio: '16:9' }, ], }, ]; export const MUSIC_TRACKS: MusicTrack[] = [ { id: 'calm-1', name: 'Gentle Morning', genre: 'calm', duration: '2:30' }, { id: 'calm-2', name: 'Soft Healing', genre: 'calm', duration: '3:15' }, { id: 'calm-3', name: 'Peaceful Flow', genre: 'calm', duration: '2:45' }, { id: 'upbeat-1', name: 'Fresh Start', genre: 'upbeat', duration: '2:20' }, { id: 'upbeat-2', name: 'Bright Day', genre: 'upbeat', duration: '2:50' }, { id: 'upbeat-3', name: 'Energy Boost', genre: 'upbeat', duration: '3:00' }, { id: 'cinematic-1', name: 'Grand Reveal', genre: 'cinematic', duration: '3:30' }, { id: 'cinematic-2', name: 'Transformation', genre: 'cinematic', duration: '4:00' }, { id: 'cinematic-3', name: 'Before & After', genre: 'cinematic', duration: '2:55' }, { id: 'corp-1', name: 'Professional Trust', genre: 'corporate', duration: '2:40' }, { id: 'corp-2', name: 'Clean & Modern', genre: 'corporate', duration: '3:10' }, { id: 'corp-3', name: 'Confidence', genre: 'corporate', duration: '2:35' }, ];