"""
Features island prop schemas.

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

    title: str = None
    description: str | None = None
    icon: str | None = None
    href: str | None = None
    key: str = None

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


class BaseFeaturesProps(LightwaveBaseSchema):
    """
    Base props that all features variants should support.

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

    eyebrow: str | None = None
    headline: str | None = None
    description: str | None = None
    features: list[FeaturesFeaturesItem] | None = None

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


FEATURES_VARIANTS = ["simple-icons-01", "simple-icons-02", "icon-cards-01", "alternating-layout-01"]

__all__ = ["BaseFeaturesProps", "FEATURES_VARIANTS"]
