"""
Pydantic schema for VerificationCodeModal component.

AUTO-GENERATED FROM ui-manifest.json - DO NOT EDIT MANUALLY
Source: application/modals/verification-code-modal.tsx
Component Path: application/modals/verification-code-modal
"""

from typing import Any, Literal

from pydantic import Field

from lightwave.schema.pydantic.core.base import JSONFieldSchema

from ._types import T


class VerificationCodeModalProps(JSONFieldSchema):
    """Props for the VerificationCodeModal component.
    All string props support CMS-driven content with path template defaults."""

    title: str | None = Field(default=None, description="Modal title text")
    description_prefix: str | None = Field(
        default=None, alias="descriptionPrefix", description="Modal description text (before email)"
    )
    email: str | None = Field(default=None, description="Email address to display")
    code_length: int | float | None = Field(default=None, alias="codeLength", description="Number of code digits")
    resend_prefix: str | None = Field(default=None, alias="resendPrefix", description="Resend link prefix text")
    resend_label: str | None = Field(default=None, alias="resendLabel", description="Resend link text")
    resend_suffix: str | None = Field(default=None, alias="resendSuffix", description="Resend link suffix text")
    cancel_label: str | None = Field(default=None, alias="cancelLabel", description="Cancel button label")
    submit_label: str | None = Field(default=None, alias="submitLabel", description="Submit button label")
    icon: T | None = Field(default=None, description="Icon component to display")
    icon_color: Literal["brand", "error", "gray", "success", "warning"] | None = Field(
        default=None, alias="iconColor", description="Color theme for the featured icon"
    )
    is_open: bool | None = Field(default=None, alias="isOpen", description="Controlled open state")
    on_open_change: Any | None = Field(
        default=None, alias="onOpenChange", description="Callback when open state changes"
    )
    on_submit: Any | None = Field(default=None, alias="onSubmit", description="Callback when code is submitted")
    on_cancel: Any | None = Field(default=None, alias="onCancel", description="Callback when cancel button is clicked")
    on_resend: Any | None = Field(default=None, alias="onResend", description="Callback when resend is clicked")
