"""
SocialProof island prop schemas.

Auto-generated from packages/lightwave-ui/src/islands/social-proof-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

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


class SocialProofLogosItem(LightwaveBaseSchema):
    """Nested item type for logos."""

    src: str = None
    alt: str = None
    href: str | None = None

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


class BaseSocialProofProps(LightwaveBaseSchema):
    """
    Base props that all socialproof variants should support.

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

    headline: str | None = None
    description: str | None = None
    logos: list[SocialProofLogosItem] | None = None

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


SOCIALPROOF_VARIANTS = ["card", "card-brand", "full-width", "full-width-masked", "press-mentions"]

__all__ = ["BaseSocialProofProps", "SOCIALPROOF_VARIANTS"]
