"""
Team section component schemas.

Mirrors lightwave-ui/src/components/marketing/team-sections/.
"""

from pydantic import BaseModel, ConfigDict, Field

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


class TeamMemberItem(BaseModel):
    """
    Team member item.

    Matches TypeScript:
        interface TeamMemberItem {
            name: string;
            title: string;
            imageUrl: string;
            bio?: string;
            socials?: SocialLink[];
        }
    """

    name: str = Field(..., description="Member name")
    title: str = Field(..., description="Job title")
    image_url: str = Field(..., serialization_alias="imageUrl", description="Photo URL")
    bio: str | None = Field(None, description="Short bio")
    socials: list[SocialLink] | None = Field(None, description="Social links")

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


class TeamSectionProps(BaseModel):
    """
    Base team 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")
    members: list[TeamMemberItem] | None = Field(None, description="List of team members")

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


class TeamSectionImageCollage01Props(TeamSectionProps):
    """
    Team section with image collage layout.
    """

    collage_images: list[str] | None = Field(
        None,
        serialization_alias="collageImages",
        description="Additional collage images",
    )


__all__ = [
    "TeamMemberItem",
    "TeamSectionProps",
    "TeamSectionImageCollage01Props",
]
