"""
Content section component schemas.

Mirrors lightwave-ui/src/components/marketing/content/.
"""

from pydantic import BaseModel, ConfigDict, Field

from lightwave.schema.pydantic.ui.types import CTAProps


class ContentSectionProps(BaseModel):
    """
    Base content section props.
    """

    eyebrow: str | None = Field(None, description="Small text above heading")
    headline: str | None = Field(None, description="Section headline")
    description: str | None = Field(None, description="Section description")
    content: str | None = Field(None, description="Main content (can contain HTML/markdown)")
    cta: CTAProps | None = Field(None, description="Optional CTA")

    model_config = ConfigDict(
        populate_by_name=True,
        extra="forbid",
    )


class ContentSimpleProps(ContentSectionProps):
    """
    Simple content section.
    """

    pass


class ContentSectionSimple01Props(ContentSectionProps):
    """
    Simple content section variant 01.
    """

    pass


class ContentSectionRichText01Props(ContentSectionProps):
    """
    Content section with rich text.
    """

    rich_content: str | None = Field(
        None,
        serialization_alias="richContent",
        description="Rich text content (HTML)",
    )


class ContentLargeImage01Props(ContentSectionProps):
    """
    Content section with large image.
    """

    image_url: str | None = Field(None, serialization_alias="imageUrl", description="Large image URL")
    image_alt: str | None = Field(None, serialization_alias="imageAlt", description="Image alt text")


class ContentSectionSplitImage01Props(ContentSectionProps):
    """
    Content section with split image layout.
    """

    image_url: str | None = Field(None, serialization_alias="imageUrl", description="Image URL")
    image_alt: str | None = Field(None, serialization_alias="imageAlt", description="Image alt text")
    image_position: str | None = Field(
        "right",
        serialization_alias="imagePosition",
        description="Image position (left/right)",
    )


__all__ = [
    "ContentSectionProps",
    "ContentSimpleProps",
    "ContentSectionSimple01Props",
    "ContentSectionRichText01Props",
    "ContentLargeImage01Props",
    "ContentSectionSplitImage01Props",
]
