Merge branch 'main' into lendemor/try_nextjs_15_again

This commit is contained in:
Lendemor 2025-01-14 16:51:52 +01:00
commit 1c94312176
4 changed files with 27 additions and 5 deletions

View File

@ -56,7 +56,12 @@ class Icon(LucideIconComponent):
"\nSee full list at https://lucide.dev/icons." "\nSee full list at https://lucide.dev/icons."
) )
props["tag"] = format.to_title_case(format.to_snake_case(props["tag"])) + "Icon" if props["tag"] in LUCIDE_ICON_MAPPING_OVERRIDE:
props["tag"] = LUCIDE_ICON_MAPPING_OVERRIDE[props["tag"]]
else:
props["tag"] = (
format.to_title_case(format.to_snake_case(props["tag"])) + "Icon"
)
props["alias"] = f"Lucide{props['tag']}" props["alias"] = f"Lucide{props['tag']}"
props.setdefault("color", "var(--current-color)") props.setdefault("color", "var(--current-color)")
return super().create(*children, **props) return super().create(*children, **props)
@ -1634,3 +1639,10 @@ LUCIDE_ICON_LIST = [
"zoom_in", "zoom_in",
"zoom_out", "zoom_out",
] ]
# The default transformation of some icon names doesn't match how the
# icons are exported from Lucide. Manual overrides can go here.
LUCIDE_ICON_MAPPING_OVERRIDE = {
"grid_2x_2_check": "Grid2x2Check",
"grid_2x_2_x": "Grid2x2X",
}

View File

@ -1682,3 +1682,7 @@ LUCIDE_ICON_LIST = [
"zoom_in", "zoom_in",
"zoom_out", "zoom_out",
] ]
LUCIDE_ICON_MAPPING_OVERRIDE = {
"grid_2x_2_check": "Grid2x2Check",
"grid_2x_2_x": "Grid2x2X",
}

View File

@ -151,8 +151,8 @@ class ColorModeIconButton(IconButton):
dropdown_menu.trigger( dropdown_menu.trigger(
super().create( super().create(
ColorModeIcon.create(), ColorModeIcon.create(),
**props, ),
) **props,
), ),
dropdown_menu.content( dropdown_menu.content(
color_mode_item("light"), color_mode_item("light"),

View File

@ -1,13 +1,19 @@
import pytest import pytest
from reflex.components.lucide.icon import LUCIDE_ICON_LIST, Icon from reflex.components.lucide.icon import (
LUCIDE_ICON_LIST,
LUCIDE_ICON_MAPPING_OVERRIDE,
Icon,
)
from reflex.utils import format from reflex.utils import format
@pytest.mark.parametrize("tag", LUCIDE_ICON_LIST) @pytest.mark.parametrize("tag", LUCIDE_ICON_LIST)
def test_icon(tag): def test_icon(tag):
icon = Icon.create(tag) icon = Icon.create(tag)
assert icon.alias == f"Lucide{format.to_title_case(tag)}Icon" assert icon.alias == "Lucide" + LUCIDE_ICON_MAPPING_OVERRIDE.get(
tag, f"{format.to_title_case(tag)}Icon"
)
def test_icon_missing_tag(): def test_icon_missing_tag():