"""
Pydantic schema for Header component.

AUTO-GENERATED FROM ui-manifest.json - DO NOT EDIT MANUALLY
Source: marketing/header-navigation/header.tsx
Component Path: marketing/header-navigation/header
"""

from typing import Any

from pydantic import Field

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

from ._types import AuthMenuItem, HeaderNavItem, NavItem, T


class MobileFooterProps(JSONFieldSchema):
    """Props for MobileFooter component."""

    footer_items: list[NavItem] = Field(alias="footerItems")
    auth_state: Any | None = Field(default=None, alias="authState")
    auth_config: Any = Field(alias="authConfig")
    auth_menu_items: list[AuthMenuItem] | None = Field(default=None, alias="authMenuItems")


class HeaderProps(JSONFieldSchema):
    """Props for Header component."""

    is_full_width: bool | None = Field(default=None, alias="isFullWidth")
    is_floating: bool | None = Field(default=None, alias="isFloating")
    class_name: str | None = Field(default=None, alias="className")
    logo: T | None = Field(default=None, alias="Logo", description="Component slot for custom/animated logos")
    logo_minimal: T | None = Field(
        default=None, alias="LogoMinimal", description="Component slot for minimal logo variant"
    )
    logo_url: str | None = Field(
        default=None, alias="logoUrl", description="URL to logo image (from CDN/config) - used if Logo not provided"
    )
    logo_minimal_url: str | None = Field(
        default=None, alias="logoMinimalUrl", description="URL to minimal logo image - used if LogoMinimal not provided"
    )
    brand_name: str | None = Field(
        default=None, alias="brandName", description="Brand name for alt text and text display"
    )
    home_url: str | None = Field(default=None, alias="homeUrl", description='Home URL for logo link (default: "/")')
    items: list[HeaderNavItem] | None = Field(default=None)
    footer_items: list[NavItem] | None = Field(default=None, alias="footerItems")
    auth_state: Any | None = Field(default=None, alias="authState")
    auth_config: Any | None = Field(default=None, alias="authConfig")
    auth_menu_items: list[AuthMenuItem] | None = Field(default=None, alias="authMenuItems")
