"""
Team island prop schemas.

Auto-generated from packages/lightwave-ui/src/islands/team-registry.tsx
Generated: 2026-02-02

Islands are React components hydrated on the client. These schemas define
the props that Django passes to the React island via JSON serialization.
"""

from pydantic import ConfigDict, Field

from lightwave.schema.pydantic.core.base import LightwaveBaseSchema


class TeamMembersItem(LightwaveBaseSchema):
    """Nested item type for members."""

    name: str = None
    title: str = None
    summary: str = None
    avatar_url: str = Field(None, serialization_alias="avatarUrl")

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


class BaseTeamProps(LightwaveBaseSchema):
    """
    Base props that all team variants should support.

    Source: packages/lightwave-ui/src/islands/team-registry.tsx
    """

    label: str | None = None
    heading: str | None = None
    description: str | None = None
    primary_label: str | None = Field(None, serialization_alias="primaryLabel")
    primary_href: str | None = Field(None, serialization_alias="primaryHref")
    secondary_label: str | None = Field(None, serialization_alias="secondaryLabel")
    secondary_href: str | None = Field(None, serialization_alias="secondaryHref")
    members: list[TeamMembersItem] | None = None
    class_name: str | None = Field(None, serialization_alias="className")

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


TEAM_VARIANTS = ["image-card-01", "image-collage-01", "image-glass-01"]

__all__ = ["BaseTeamProps", "TEAM_VARIANTS"]
