"""
Pydantic schema for PasswordPromptModal component.

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

from typing import Any, Literal

from pydantic import Field

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

from ._types import T


class PasswordPromptModalProps(JSONFieldSchema):
    """Props for the PasswordPromptModal 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")
    email_label: str | None = Field(default=None, alias="emailLabel", description="Email input label")
    email_placeholder: str | None = Field(default=None, alias="emailPlaceholder", description="Email input placeholder")
    default_email: str | None = Field(default=None, alias="defaultEmail", description="Default email value")
    password_label: str | None = Field(default=None, alias="passwordLabel", description="Password input label")
    password_placeholder: str | None = Field(
        default=None, alias="passwordPlaceholder", description="Password input placeholder"
    )
    default_password: str | None = Field(default=None, alias="defaultPassword", description="Default password value")
    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 form is submitted")
    on_cancel: Any | None = Field(default=None, alias="onCancel", description="Callback when cancel button is clicked")
