"""
Contact section component schemas.

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

from pydantic import BaseModel, ConfigDict, Field

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


class ContactLink(BaseModel):
    """
    Contact method link.
    """

    label: str = Field(..., description="Contact method label")
    value: str = Field(..., description="Contact value (email, phone, etc.)")
    href: str = Field(..., description="Contact link")
    icon: str | None = Field(None, description="Icon name")

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


class ContactSectionProps(BaseModel):
    """
    Base contact 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")
    contacts: list[ContactLink] | None = Field(None, description="List of contact methods")
    cta: CTAProps | None = Field(None, description="Optional CTA")

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


class ContactSimpleLinks01Props(ContactSectionProps):
    """
    Contact with simple links layout.
    """

    pass


class ContactCenteredMapProps(ContactSectionProps):
    """
    Contact with centered map.
    """

    map_embed_url: str | None = Field(None, serialization_alias="mapEmbedUrl", description="Google Maps embed URL")
    address: str | None = Field(None, description="Physical address")


__all__ = [
    "ContactLink",
    "ContactSectionProps",
    "ContactSimpleLinks01Props",
    "ContactCenteredMapProps",
]
