"""
Banner component schemas.

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

from pydantic import BaseModel, ConfigDict, Field

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


class BannerSectionProps(BaseModel):
    """
    Base banner props.
    """

    text: str | None = Field(None, description="Banner text")
    cta: CTAProps | None = Field(None, description="Primary CTA")
    secondary_cta: CTAProps | None = Field(None, serialization_alias="secondaryCta", description="Secondary CTA")
    dismissible: bool | None = Field(False, description="Whether banner can be dismissed")
    icon: str | None = Field(None, description="Banner icon")

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


class BannerSlimDefaultProps(BannerSectionProps):
    """
    Slim default banner.
    """

    pass


class BannerSlimBrandFullWidthProps(BannerSectionProps):
    """
    Slim brand banner, full width.
    """

    background_color: str | None = Field(None, serialization_alias="backgroundColor", description="Background color")


class BannerSingleActionBrandProps(BannerSectionProps):
    """
    Brand banner with single action.
    """

    pass


class BannerSingleActionBrandFullWidthProps(BannerSectionProps):
    """
    Full width brand banner with single action.
    """

    pass


class BannerDualActionBrandFullWidthProps(BannerSectionProps):
    """
    Full width brand banner with dual actions.
    """

    pass


__all__ = [
    "BannerSectionProps",
    "BannerSlimDefaultProps",
    "BannerSlimBrandFullWidthProps",
    "BannerSingleActionBrandProps",
    "BannerSingleActionBrandFullWidthProps",
    "BannerDualActionBrandFullWidthProps",
]
