"""
Skeleton/loading component schemas.

Mirrors lightwave-ui/src/components/skeletons/.

These are loading placeholder components.

Usage:
    from lightwave.schema.pydantic.ui.components.skeletons import (
        SkeletonProps,
    )
"""

from typing import Literal

from pydantic import BaseModel, ConfigDict, Field


class SkeletonProps(BaseModel):
    """
    Skeleton loading component props.
    """

    variant: Literal["text", "circular", "rectangular"] = Field("text", description="Skeleton shape")
    width: str | int | None = Field(None, description="Width (CSS value or pixels)")
    height: str | int | None = Field(None, description="Height (CSS value or pixels)")
    animation: Literal["pulse", "wave", "none"] = Field("pulse", description="Animation type")

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


__all__ = [
    "SkeletonProps",
]
