from android.view import View as View
from dataclasses import dataclass
from typing import Any, Callable

@dataclass
class Switch:
    key: str
    text: str
    default: bool
    subtext: str = ...
    icon: str = ...
    on_change: Callable[[bool], None] = ...
    type: str = ...
    def __init__(
        self, key, text, default, subtext=..., icon=..., on_change=...
    ) -> None: ...

@dataclass
class Selector:
    key: str
    text: str
    default: int
    items: list[str]
    icon: str = ...
    on_change: Callable[[int], None] = ...
    type: str = ...
    def __init__(self, key, text, default, items, icon=..., on_change=...) -> None: ...

@dataclass
class Input:
    key: str
    text: str
    default: str = ...
    subtext: str = ...
    icon: str = ...
    on_change: Callable[[str], None] = ...
    type: str = ...
    def __init__(
        self, key, text, default=..., subtext=..., icon=..., on_change=...
    ) -> None: ...

@dataclass
class Text:
    text: str
    icon: str = ...
    accent: bool = ...
    red: bool = ...
    on_click: Callable[[View], None] = ...
    create_sub_fragment: Callable[[], list[Any]] = ...
    type: str = ...
    def __init__(
        self, text, icon=..., accent=..., red=..., on_click=..., create_sub_fragment=...
    ) -> None: ...

@dataclass
class Header:
    text: str
    type: str = ...
    def __init__(self, text) -> None: ...

@dataclass
class Divider:
    text: str = ...
    type: str = ...
    def __init__(self, text=...) -> None: ...
