"""
Pydantic schema for TwofaCodeModal component.

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

from typing import Any, Literal

from pydantic import Field

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

from ._types import T


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

    title: str | None = Field(default=None, description="Modal title text")
    description: str | None = Field(default=None, description="Modal description text")
    qr_code_value: str | None = Field(default=None, alias="qrCodeValue", description="QR code URL value")
    code_label: str | None = Field(default=None, alias="codeLabel", description="Verification code input label")
    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"
    )
    icon_theme: Literal["dark", "gradient", "light", "modern", "modern-neue", "outline"] | None = Field(
        default=None, alias="iconTheme", description="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")
