# chuk-motion/src/chuk_motion/themes/youtube_themes.py
"""
YouTube-optimized themes combining color, typography, and motion tokens.

Each theme is a complete design system ready for video production.
"""

from ..tokens.colors import COLOR_TOKENS
from ..tokens.motion import MOTION_TOKENS
from ..tokens.spacing import SPACING_TOKENS
from ..tokens.typography import TYPOGRAPHY_TOKENS
from .models import Theme, ThemeCollection, ThemeMotion, ThemeTypography

# ============================================================================
# YOUTUBE THEME COLLECTION (Pydantic Models)
# ============================================================================

YOUTUBE_THEMES = ThemeCollection(
    themes={
        "tech": Theme(
            name="Tech",
            description="Modern tech aesthetic - perfect for tech reviews, tutorials, coding",
            colors=COLOR_TOKENS.tech,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.display,
                body_font=TYPOGRAPHY_TOKENS.font_families.body,
                code_font=TYPOGRAPHY_TOKENS.font_families.mono,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["smooth"],
                default_easing=MOTION_TOKENS.easing["ease_out"],
                default_duration=MOTION_TOKENS.duration["normal"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Tech reviews",
                "Coding tutorials",
                "Software demos",
                "Tech news",
                "Product launches",
            ],
        ),
        "finance": Theme(
            name="Finance",
            description="Professional finance theme - ideal for investing, trading, business",
            colors=COLOR_TOKENS.finance,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.display,
                body_font=TYPOGRAPHY_TOKENS.font_families.body,
                code_font=TYPOGRAPHY_TOKENS.font_families.mono,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["snappy"],
                default_easing=MOTION_TOKENS.easing["ease_in_out"],
                default_duration=MOTION_TOKENS.duration["normal"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Stock market analysis",
                "Investing advice",
                "Business news",
                "Financial education",
                "Crypto analysis",
            ],
        ),
        "education": Theme(
            name="Education",
            description="Friendly education theme - great for teaching, explainers, courses",
            colors=COLOR_TOKENS.education,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.display,
                body_font=TYPOGRAPHY_TOKENS.font_families.body,
                code_font=TYPOGRAPHY_TOKENS.font_families.mono,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["bouncy"],
                default_easing=MOTION_TOKENS.easing["ease_out_back"],
                default_duration=MOTION_TOKENS.duration["medium"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Educational content",
                "Explainer videos",
                "Course content",
                "Study guides",
                "Academic lectures",
            ],
        ),
        "lifestyle": Theme(
            name="Lifestyle",
            description="Warm lifestyle theme - perfect for vlogs, lifestyle, wellness",
            colors=COLOR_TOKENS.lifestyle,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.decorative,
                body_font=TYPOGRAPHY_TOKENS.font_families.body,
                code_font=TYPOGRAPHY_TOKENS.font_families.body,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["gentle"],
                default_easing=MOTION_TOKENS.easing["ease_in_out"],
                default_duration=MOTION_TOKENS.duration["slow"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Vlogs",
                "Lifestyle content",
                "Wellness videos",
                "Travel vlogs",
                "Daily routines",
            ],
        ),
        "gaming": Theme(
            name="Gaming",
            description="High-energy gaming theme - ideal for gaming, esports, streams",
            colors=COLOR_TOKENS.gaming,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.display,
                body_font=TYPOGRAPHY_TOKENS.font_families.display,
                code_font=TYPOGRAPHY_TOKENS.font_families.mono,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["bouncy"],
                default_easing=MOTION_TOKENS.easing["ease_out_back"],
                default_duration=MOTION_TOKENS.duration["fast"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Gaming videos",
                "Esports highlights",
                "Stream overlays",
                "Gaming reviews",
                "Let's plays",
            ],
        ),
        "minimal": Theme(
            name="Minimal",
            description="Clean minimal theme - universal, professional, timeless",
            colors=COLOR_TOKENS.minimal,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.display,
                body_font=TYPOGRAPHY_TOKENS.font_families.body,
                code_font=TYPOGRAPHY_TOKENS.font_families.mono,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["smooth"],
                default_easing=MOTION_TOKENS.easing["ease_in_out"],
                default_duration=MOTION_TOKENS.duration["normal"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Professional content",
                "Corporate videos",
                "Documentaries",
                "Interviews",
                "Clean aesthetics",
            ],
        ),
        "business": Theme(
            name="Business",
            description="Professional business theme - corporate, presentations, B2B",
            colors=COLOR_TOKENS.business,
            typography=ThemeTypography(
                primary_font=TYPOGRAPHY_TOKENS.font_families.display,
                body_font=TYPOGRAPHY_TOKENS.font_families.body,
                code_font=TYPOGRAPHY_TOKENS.font_families.mono,
                default_resolution="video_1080p",
            ),
            motion=ThemeMotion(
                default_spring=MOTION_TOKENS.spring_configs["snappy"],
                default_easing=MOTION_TOKENS.easing["ease_in_out"],
                default_duration=MOTION_TOKENS.duration["normal"],
            ),
            spacing=SPACING_TOKENS,
            use_cases=[
                "Corporate videos",
                "Business presentations",
                "B2B content",
                "Company updates",
                "Professional training",
            ],
        ),
    }
)
