"""
Checkbox component schemas.

Mirrors lightwave-ui/src/components/base/checkbox/.
"""

from typing import Literal

from pydantic import BaseModel, ConfigDict, Field


class CheckboxProps(BaseModel):
    """
    Checkbox component props.

    Matches TypeScript CheckboxProps.
    """

    # Value
    checked: bool = Field(False, description="Checked state")
    indeterminate: bool = Field(False, description="Indeterminate state")

    # Size
    size: Literal["sm", "md"] = Field("sm", description="Checkbox size")

    # State
    is_disabled: bool = Field(False, serialization_alias="isDisabled", description="Disabled state")

    # Labels
    label: str | None = Field(None, description="Checkbox label")
    description: str | None = Field(None, description="Help text below label")

    # Styling
    class_name: str | None = Field(None, serialization_alias="className", description="Additional CSS classes")

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


__all__ = [
    "CheckboxProps",
]
