"""
Pricing island prop schemas.

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

    name: str | None = None
    title: str | None = None
    price: str | None = None
    subtitle: str | None = None
    period: str | None = None
    features: str | None = None
    cta_text: str | None = Field(None, serialization_alias="ctaText")
    cta_href: str | None = Field(None, serialization_alias="ctaHref")
    featured: bool | None = None
    icon: str | None = None
    key: str = None

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


class BasePricingProps(LightwaveBaseSchema):
    """
    Base props that all pricing variants should support.

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

    eyebrow: str | None = None
    headline: str | None = None
    description: str | None = None
    plans: list[PricingPlansItem] | None = None

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


PRICING_VARIANTS = [
    "abstract-angles",
    "dual-action",
    "gray-badge",
    "large-table-01",
    "large-table-02",
    "primary-card-icon",
    "primary-card-simple",
    "primary-dark-badge",
    "section-featured-cards-01",
    "section-featured-cards-02",
    "section-featured-cards-03",
    "section-featured-cards-04",
    "section-simple-cards-01",
    "section-simple-cards-02",
    "section-simple-cards-03",
    "section-simple-cards-04",
    "simple-accent-line",
    "simple-banner",
    "simple-call-out",
    "simple-dual-check-item",
    "simple-icon",
    "simple-icon-offset",
]

__all__ = ["BasePricingProps", "PRICING_VARIANTS"]
