who likes cond

This commit is contained in:
Khaleel Al-Adhami 2025-01-17 16:21:53 -08:00
parent b11fc5a8ef
commit 392c5b5a69
2 changed files with 24 additions and 68 deletions

View File

@ -20,7 +20,7 @@ from __future__ import annotations
from typing import Dict, List, Literal, Optional, Union, get_args from typing import Dict, List, Literal, Optional, Union, get_args
from reflex.components.component import BaseComponent from reflex.components.component import BaseComponent
from reflex.components.core.cond import Cond, color_mode_cond, cond from reflex.components.core.cond import color_mode_cond, cond
from reflex.components.lucide.icon import Icon from reflex.components.lucide.icon import Icon
from reflex.components.radix.themes.components.dropdown_menu import dropdown_menu from reflex.components.radix.themes.components.dropdown_menu import dropdown_menu
from reflex.components.radix.themes.components.switch import Switch from reflex.components.radix.themes.components.switch import Switch
@ -40,28 +40,23 @@ DEFAULT_LIGHT_ICON: Icon = Icon.create(tag="sun")
DEFAULT_DARK_ICON: Icon = Icon.create(tag="moon") DEFAULT_DARK_ICON: Icon = Icon.create(tag="moon")
class ColorModeIcon(Cond): def icon(
"""Displays the current color mode as an icon.""" light_component: BaseComponent | None = None,
dark_component: BaseComponent | None = None,
):
"""Create a color mode icon component.
@classmethod Args:
def create( light_component: The component to render in light mode.
cls, dark_component: The component to render in dark mode.
light_component: BaseComponent | None = None,
dark_component: BaseComponent | None = None,
):
"""Create an icon component based on color_mode.
Args: Returns:
light_component: the component to display when color mode is default The color mode icon component.
dark_component: the component to display when color mode is dark (non-default) """
return color_mode_cond(
Returns: light=light_component or DEFAULT_LIGHT_ICON,
The conditionally rendered component dark=dark_component or DEFAULT_DARK_ICON,
""" )
return color_mode_cond(
light=light_component or DEFAULT_LIGHT_ICON,
dark=dark_component or DEFAULT_DARK_ICON,
)
LiteralPosition = Literal["top-left", "top-right", "bottom-left", "bottom-right"] LiteralPosition = Literal["top-left", "top-right", "bottom-left", "bottom-right"]
@ -150,7 +145,7 @@ class ColorModeIconButton(IconButton):
return dropdown_menu.root( return dropdown_menu.root(
dropdown_menu.trigger( dropdown_menu.trigger(
super().create( super().create(
ColorModeIcon.create(), icon(),
), ),
**props, **props,
), ),
@ -161,7 +156,7 @@ class ColorModeIconButton(IconButton):
), ),
) )
return IconButton.create( return IconButton.create(
ColorModeIcon.create(), icon(),
on_click=toggle_color_mode, on_click=toggle_color_mode,
**props, **props,
) )
@ -195,7 +190,7 @@ class ColorModeSwitch(Switch):
class ColorModeNamespace(Var): class ColorModeNamespace(Var):
"""Namespace for color mode components.""" """Namespace for color mode components."""
icon = staticmethod(ColorModeIcon.create) icon = icon
button = staticmethod(ColorModeIconButton.create) button = staticmethod(ColorModeIconButton.create)
switch = staticmethod(ColorModeSwitch.create) switch = staticmethod(ColorModeSwitch.create)

View File

@ -7,7 +7,6 @@ from typing import Any, Dict, List, Literal, Optional, Union, overload
from reflex.components.component import BaseComponent from reflex.components.component import BaseComponent
from reflex.components.core.breakpoints import Breakpoints from reflex.components.core.breakpoints import Breakpoints
from reflex.components.core.cond import Cond
from reflex.components.lucide.icon import Icon from reflex.components.lucide.icon import Icon
from reflex.components.radix.themes.components.switch import Switch from reflex.components.radix.themes.components.switch import Switch
from reflex.event import BASE_STATE, EventType from reflex.event import BASE_STATE, EventType
@ -19,48 +18,10 @@ from .components.icon_button import IconButton
DEFAULT_LIGHT_ICON: Icon DEFAULT_LIGHT_ICON: Icon
DEFAULT_DARK_ICON: Icon DEFAULT_DARK_ICON: Icon
class ColorModeIcon(Cond): def icon(
@overload light_component: BaseComponent | None = None,
@classmethod dark_component: BaseComponent | None = None,
def create( # type: ignore ): ...
cls,
*children,
cond: Optional[Union[Any, Var[Any]]] = None,
comp1: Optional[BaseComponent] = None,
comp2: Optional[BaseComponent] = None,
style: Optional[Style] = None,
key: Optional[Any] = None,
id: Optional[Any] = None,
class_name: Optional[Any] = None,
autofocus: Optional[bool] = None,
custom_attrs: Optional[Dict[str, Union[Var, Any]]] = None,
on_blur: Optional[EventType[[], BASE_STATE]] = None,
on_click: Optional[EventType[[], BASE_STATE]] = None,
on_context_menu: Optional[EventType[[], BASE_STATE]] = None,
on_double_click: Optional[EventType[[], BASE_STATE]] = None,
on_focus: Optional[EventType[[], BASE_STATE]] = None,
on_mount: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_down: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_enter: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_leave: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_move: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_out: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_over: Optional[EventType[[], BASE_STATE]] = None,
on_mouse_up: Optional[EventType[[], BASE_STATE]] = None,
on_scroll: Optional[EventType[[], BASE_STATE]] = None,
on_unmount: Optional[EventType[[], BASE_STATE]] = None,
**props,
) -> "ColorModeIcon":
"""Create an icon component based on color_mode.
Args:
light_component: the component to display when color mode is default
dark_component: the component to display when color mode is dark (non-default)
Returns:
The conditionally rendered component
"""
...
LiteralPosition = Literal["top-left", "top-right", "bottom-left", "bottom-right"] LiteralPosition = Literal["top-left", "top-right", "bottom-left", "bottom-right"]
position_values: List[str] position_values: List[str]
@ -442,7 +403,7 @@ class ColorModeSwitch(Switch):
... ...
class ColorModeNamespace(Var): class ColorModeNamespace(Var):
icon = staticmethod(ColorModeIcon.create) icon = icon
button = staticmethod(ColorModeIconButton.create) button = staticmethod(ColorModeIconButton.create)
switch = staticmethod(ColorModeSwitch.create) switch = staticmethod(ColorModeSwitch.create)