"""
Testimonials island prop schemas.

Auto-generated from packages/lightwave-ui/src/islands/testimonials-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 TestimonialsTestimonialsItem(LightwaveBaseSchema):
    """Nested item type for testimonials."""

    quote: str = None
    author: str = None
    role: str | None = None
    company: str | None = None
    avatar_url: str | None = Field(None, serialization_alias="avatarUrl")

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


class BaseTestimonialsProps(LightwaveBaseSchema):
    """
    Base props that all testimonials variants should support.

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

    headline: str | None = None
    description: str | None = None
    testimonials: list[TestimonialsTestimonialsItem] | None = None

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


TESTIMONIALS_VARIANTS = [
    "abstract-image",
    "card",
    "glassmorphic-cards-01",
    "simple-left-aligned",
    "social-cards-01",
    "social-cards-02",
]

__all__ = ["BaseTestimonialsProps", "TESTIMONIALS_VARIANTS"]
