소스 검색

Individually Import Chakra Packages (#2405)

* Base lib switch

Co-authored-by: Alek Petuskey <alekpetuskey@aleks-mbp.lan>
Alek Petuskey 1 년 전
부모
커밋
00a8054850
93개의 변경된 파일2657개의 추가작업 그리고 324개의 파일을 삭제
  1. 0 1
      .github/workflows/integration_tests.yml
  2. 2 0
      reflex/components/chakra/datadisplay/badge.py
  3. 2 0
      reflex/components/chakra/datadisplay/code.py
  4. 2 0
      reflex/components/chakra/datadisplay/divider.py
  5. 2 0
      reflex/components/chakra/datadisplay/keyboard_key.py
  6. 8 2
      reflex/components/chakra/datadisplay/list.py
  7. 81 2
      reflex/components/chakra/datadisplay/list.pyi
  8. 12 6
      reflex/components/chakra/datadisplay/stat.py
  9. 85 6
      reflex/components/chakra/datadisplay/stat.pyi
  10. 15 9
      reflex/components/chakra/datadisplay/table.py
  11. 88 9
      reflex/components/chakra/datadisplay/table.pyi
  12. 11 5
      reflex/components/chakra/datadisplay/tag.py
  13. 84 5
      reflex/components/chakra/datadisplay/tag.pyi
  14. 11 5
      reflex/components/chakra/disclosure/accordion.py
  15. 84 5
      reflex/components/chakra/disclosure/accordion.pyi
  16. 11 5
      reflex/components/chakra/disclosure/tabs.py
  17. 84 5
      reflex/components/chakra/disclosure/tabs.pyi
  18. 12 6
      reflex/components/chakra/disclosure/transition.py
  19. 85 26
      reflex/components/chakra/disclosure/transition.pyi
  20. 2 0
      reflex/components/chakra/disclosure/visuallyhidden.py
  21. 10 4
      reflex/components/chakra/feedback/alert.py
  22. 83 4
      reflex/components/chakra/feedback/alert.pyi
  23. 8 2
      reflex/components/chakra/feedback/circularprogress.py
  24. 81 2
      reflex/components/chakra/feedback/circularprogress.pyi
  25. 2 0
      reflex/components/chakra/feedback/progress.py
  26. 9 3
      reflex/components/chakra/feedback/skeleton.py
  27. 82 3
      reflex/components/chakra/feedback/skeleton.pyi
  28. 2 0
      reflex/components/chakra/feedback/spinner.py
  29. 8 2
      reflex/components/chakra/forms/button.py
  30. 81 2
      reflex/components/chakra/forms/button.pyi
  31. 8 2
      reflex/components/chakra/forms/checkbox.py
  32. 81 2
      reflex/components/chakra/forms/checkbox.pyi
  33. 10 4
      reflex/components/chakra/forms/editable.py
  34. 83 4
      reflex/components/chakra/forms/editable.pyi
  35. 2 1
      reflex/components/chakra/forms/form.py
  36. 2 1
      reflex/components/chakra/forms/form.pyi
  37. 12 6
      reflex/components/chakra/forms/input.py
  38. 85 6
      reflex/components/chakra/forms/input.pyi
  39. 11 5
      reflex/components/chakra/forms/numberinput.py
  40. 84 5
      reflex/components/chakra/forms/numberinput.pyi
  41. 8 2
      reflex/components/chakra/forms/pininput.py
  42. 81 2
      reflex/components/chakra/forms/pininput.pyi
  43. 4 0
      reflex/components/chakra/forms/radio.py
  44. 10 4
      reflex/components/chakra/forms/rangeslider.py
  45. 83 4
      reflex/components/chakra/forms/rangeslider.pyi
  46. 2 0
      reflex/components/chakra/forms/select.py
  47. 11 5
      reflex/components/chakra/forms/slider.py
  48. 84 5
      reflex/components/chakra/forms/slider.pyi
  49. 2 0
      reflex/components/chakra/forms/switch.py
  50. 2 0
      reflex/components/chakra/forms/textarea.py
  51. 2 2
      reflex/components/chakra/layout/aspect_ratio.py
  52. 2 2
      reflex/components/chakra/layout/aspect_ratio.pyi
  53. 9 0
      reflex/components/chakra/layout/base.py
  54. 89 0
      reflex/components/chakra/layout/base.pyi
  55. 3 2
      reflex/components/chakra/layout/box.py
  56. 2 2
      reflex/components/chakra/layout/box.pyi
  57. 10 4
      reflex/components/chakra/layout/card.py
  58. 83 4
      reflex/components/chakra/layout/card.pyi
  59. 4 4
      reflex/components/chakra/layout/center.py
  60. 4 4
      reflex/components/chakra/layout/center.pyi
  61. 3 2
      reflex/components/chakra/layout/container.py
  62. 2 2
      reflex/components/chakra/layout/container.pyi
  63. 2 2
      reflex/components/chakra/layout/flex.py
  64. 2 2
      reflex/components/chakra/layout/flex.pyi
  65. 4 4
      reflex/components/chakra/layout/grid.py
  66. 4 4
      reflex/components/chakra/layout/grid.pyi
  67. 3 2
      reflex/components/chakra/layout/spacer.py
  68. 2 2
      reflex/components/chakra/layout/spacer.pyi
  69. 3 2
      reflex/components/chakra/layout/stack.py
  70. 3 2
      reflex/components/chakra/layout/stack.pyi
  71. 3 3
      reflex/components/chakra/layout/wrap.py
  72. 3 3
      reflex/components/chakra/layout/wrap.pyi
  73. 9 3
      reflex/components/chakra/media/avatar.py
  74. 82 3
      reflex/components/chakra/media/avatar.pyi
  75. 3 0
      reflex/components/chakra/media/image.py
  76. 11 3
      reflex/components/chakra/navigation/breadcrumb.py
  77. 82 3
      reflex/components/chakra/navigation/breadcrumb.pyi
  78. 15 9
      reflex/components/chakra/navigation/stepper.py
  79. 88 9
      reflex/components/chakra/navigation/stepper.pyi
  80. 13 7
      reflex/components/chakra/overlay/alertdialog.py
  81. 86 7
      reflex/components/chakra/overlay/alertdialog.pyi
  82. 14 8
      reflex/components/chakra/overlay/menu.py
  83. 87 8
      reflex/components/chakra/overlay/menu.pyi
  84. 13 7
      reflex/components/chakra/overlay/modal.py
  85. 86 7
      reflex/components/chakra/overlay/modal.pyi
  86. 15 9
      reflex/components/chakra/overlay/popover.py
  87. 88 9
      reflex/components/chakra/overlay/popover.pyi
  88. 2 0
      reflex/components/chakra/overlay/tooltip.py
  89. 2 0
      reflex/components/chakra/typography/heading.py
  90. 2 0
      reflex/components/chakra/typography/highlight.py
  91. 2 0
      reflex/components/chakra/typography/span.py
  92. 2 0
      reflex/components/chakra/typography/text.py
  93. 1 1
      tests/test_app.py

+ 0 - 1
.github/workflows/integration_tests.yml

@@ -101,7 +101,6 @@ jobs:
     strategy:
     strategy:
       fail-fast: false
       fail-fast: false
       matrix:
       matrix:
-        # Show OS combos first in GUI
         os: [ ubuntu-latest, windows-latest, macos-latest ]
         os: [ ubuntu-latest, windows-latest, macos-latest ]
         python-version: [ "3.10.10", "3.11.4" ]
         python-version: [ "3.10.10", "3.11.4" ]
         node-version: [ "16.x" ]
         node-version: [ "16.x" ]

+ 2 - 0
reflex/components/chakra/datadisplay/badge.py

@@ -7,6 +7,8 @@ from reflex.vars import Var
 class Badge(ChakraComponent):
 class Badge(ChakraComponent):
     """A badge component."""
     """A badge component."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Badge"
     tag = "Badge"
 
 
     # Variant of the badge ("solid" | "subtle" | "outline")
     # Variant of the badge ("solid" | "subtle" | "outline")

+ 2 - 0
reflex/components/chakra/datadisplay/code.py

@@ -518,4 +518,6 @@ class CodeBlock(Component):
 class Code(ChakraComponent):
 class Code(ChakraComponent):
     """Used to display inline code."""
     """Used to display inline code."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Code"
     tag = "Code"

+ 2 - 0
reflex/components/chakra/datadisplay/divider.py

@@ -10,6 +10,8 @@ LiteralLayout = Literal["horizontal", "vertical"]
 class Divider(ChakraComponent):
 class Divider(ChakraComponent):
     """Dividers are used to visually separate content in a list or group."""
     """Dividers are used to visually separate content in a list or group."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Divider"
     tag = "Divider"
 
 
     # Pass the orientation prop and set it to either horizontal or vertical. If the vertical orientation is used, make sure that the parent element is assigned a height.
     # Pass the orientation prop and set it to either horizontal or vertical. If the vertical orientation is used, make sure that the parent element is assigned a height.

+ 2 - 0
reflex/components/chakra/datadisplay/keyboard_key.py

@@ -6,4 +6,6 @@ from reflex.components.chakra import ChakraComponent
 class KeyboardKey(ChakraComponent):
 class KeyboardKey(ChakraComponent):
     """Display a keyboard key text."""
     """Display a keyboard key text."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Kbd"
     tag = "Kbd"

+ 8 - 2
reflex/components/chakra/datadisplay/list.py

@@ -8,7 +8,13 @@ from reflex.components.core.foreach import Foreach
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class List(ChakraComponent):
+class BaseList(ChakraComponent):
+    """The base class for all Chakra list components."""
+
+    library = "@chakra-ui/layout@2.3.1"
+
+
+class List(BaseList):
     """Display a list of items."""
     """Display a list of items."""
 
 
     tag = "List"
     tag = "List"
@@ -44,7 +50,7 @@ class List(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class ListItem(ChakraComponent):
+class ListItem(BaseList):
     """A single list item."""
     """A single list item."""
 
 
     tag = "ListItem"
     tag = "ListItem"

+ 81 - 2
reflex/components/chakra/datadisplay/list.pyi

@@ -12,7 +12,86 @@ from reflex.components.component import Component
 from reflex.components.core.foreach import Foreach
 from reflex.components.core.foreach import Foreach
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class List(ChakraComponent):
+class BaseList(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseList":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class List(BaseList):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -96,7 +175,7 @@ class List(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ListItem(ChakraComponent):
+class ListItem(BaseList):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 12 - 6
reflex/components/chakra/datadisplay/stat.py

@@ -5,7 +5,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Stat(ChakraComponent):
+class BaseStat(ChakraComponent):
+    """The base class for all stat components."""
+
+    library = "@chakra-ui/stat@2.1.0"
+
+
+class Stat(BaseStat):
     """The Stat component is used to display some statistics. It can take in a label, a number and a help text."""
     """The Stat component is used to display some statistics. It can take in a label, a number and a help text."""
 
 
     tag = "Stat"
     tag = "Stat"
@@ -47,25 +53,25 @@ class Stat(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class StatLabel(ChakraComponent):
+class StatLabel(BaseStat):
     """A stat label component."""
     """A stat label component."""
 
 
     tag = "StatLabel"
     tag = "StatLabel"
 
 
 
 
-class StatNumber(ChakraComponent):
+class StatNumber(BaseStat):
     """The stat to display."""
     """The stat to display."""
 
 
     tag = "StatNumber"
     tag = "StatNumber"
 
 
 
 
-class StatHelpText(ChakraComponent):
+class StatHelpText(BaseStat):
     """A helper text to display under the stat."""
     """A helper text to display under the stat."""
 
 
     tag = "StatHelpText"
     tag = "StatHelpText"
 
 
 
 
-class StatArrow(ChakraComponent):
+class StatArrow(BaseStat):
     """A stat arrow component indicating the direction of change."""
     """A stat arrow component indicating the direction of change."""
 
 
     tag = "StatArrow"
     tag = "StatArrow"
@@ -74,7 +80,7 @@ class StatArrow(ChakraComponent):
     type_: Var[str]
     type_: Var[str]
 
 
 
 
-class StatGroup(ChakraComponent):
+class StatGroup(BaseStat):
     """A stat group component to evenly space out the stats."""
     """A stat group component to evenly space out the stats."""
 
 
     tag = "StatGroup"
     tag = "StatGroup"

+ 85 - 6
reflex/components/chakra/datadisplay/stat.pyi

@@ -11,7 +11,86 @@ from reflex.components.chakra import ChakraComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Stat(ChakraComponent):
+class BaseStat(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseStat":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Stat(BaseStat):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -95,7 +174,7 @@ class Stat(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StatLabel(ChakraComponent):
+class StatLabel(BaseStat):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -174,7 +253,7 @@ class StatLabel(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StatNumber(ChakraComponent):
+class StatNumber(BaseStat):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -253,7 +332,7 @@ class StatNumber(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StatHelpText(ChakraComponent):
+class StatHelpText(BaseStat):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -332,7 +411,7 @@ class StatHelpText(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StatArrow(ChakraComponent):
+class StatArrow(BaseStat):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -413,7 +492,7 @@ class StatArrow(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StatGroup(ChakraComponent):
+class StatGroup(BaseStat):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 15 - 9
reflex/components/chakra/datadisplay/table.py

@@ -8,7 +8,13 @@ from reflex.utils import types
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Table(ChakraComponent):
+class BaseTable(ChakraComponent):
+    """The base class for all Chakra table components."""
+
+    library = "@chakra-ui/table@2.1.0"
+
+
+class Table(BaseTable):
     """A table component."""
     """A table component."""
 
 
     tag = "Table"
     tag = "Table"
@@ -59,7 +65,7 @@ class Table(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class Thead(ChakraComponent):
+class Thead(BaseTable):
     """A table header component."""
     """A table header component."""
 
 
     tag = "Thead"
     tag = "Thead"
@@ -111,7 +117,7 @@ class Thead(ChakraComponent):
             raise TypeError("table headers should be a list or tuple")
             raise TypeError("table headers should be a list or tuple")
 
 
 
 
-class Tbody(ChakraComponent):
+class Tbody(BaseTable):
     """A table body component."""
     """A table body component."""
 
 
     tag = "Tbody"
     tag = "Tbody"
@@ -185,7 +191,7 @@ class Tbody(ChakraComponent):
             )
             )
 
 
 
 
-class Tfoot(ChakraComponent):
+class Tfoot(BaseTable):
     """A table footer component."""
     """A table footer component."""
 
 
     tag = "Tfoot"
     tag = "Tfoot"
@@ -234,7 +240,7 @@ class Tfoot(ChakraComponent):
             raise TypeError("table headers should be a list or tuple")
             raise TypeError("table headers should be a list or tuple")
 
 
 
 
-class Tr(ChakraComponent):
+class Tr(BaseTable):
     """A table row component."""
     """A table row component."""
 
 
     tag = "Tr"
     tag = "Tr"
@@ -265,7 +271,7 @@ class Tr(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class Th(ChakraComponent):
+class Th(BaseTable):
     """A table header cell component."""
     """A table header cell component."""
 
 
     tag = "Th"
     tag = "Th"
@@ -277,7 +283,7 @@ class Th(ChakraComponent):
     is_numeric: Var[bool]
     is_numeric: Var[bool]
 
 
 
 
-class Td(ChakraComponent):
+class Td(BaseTable):
     """A table data cell component."""
     """A table data cell component."""
 
 
     tag = "Td"
     tag = "Td"
@@ -289,7 +295,7 @@ class Td(ChakraComponent):
     is_numeric: Var[bool]
     is_numeric: Var[bool]
 
 
 
 
-class TableCaption(ChakraComponent):
+class TableCaption(BaseTable):
     """A table caption component."""
     """A table caption component."""
 
 
     tag = "TableCaption"
     tag = "TableCaption"
@@ -298,7 +304,7 @@ class TableCaption(ChakraComponent):
     placement: Var[str]
     placement: Var[str]
 
 
 
 
-class TableContainer(ChakraComponent):
+class TableContainer(BaseTable):
     """The table container component renders a div that wraps the table component."""
     """The table container component renders a div that wraps the table component."""
 
 
     tag = "TableContainer"
     tag = "TableContainer"

+ 88 - 9
reflex/components/chakra/datadisplay/table.pyi

@@ -14,7 +14,86 @@ from reflex.components.core.foreach import Foreach
 from reflex.utils import types
 from reflex.utils import types
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Table(ChakraComponent):
+class BaseTable(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseTable":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Table(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -106,7 +185,7 @@ class Table(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Thead(ChakraComponent):
+class Thead(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -187,7 +266,7 @@ class Thead(ChakraComponent):
     @staticmethod
     @staticmethod
     def validate_headers(headers): ...
     def validate_headers(headers): ...
 
 
-class Tbody(ChakraComponent):
+class Tbody(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -267,7 +346,7 @@ class Tbody(ChakraComponent):
     @staticmethod
     @staticmethod
     def validate_rows(rows): ...
     def validate_rows(rows): ...
 
 
-class Tfoot(ChakraComponent):
+class Tfoot(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -347,7 +426,7 @@ class Tfoot(ChakraComponent):
     @staticmethod
     @staticmethod
     def validate_footers(footers): ...
     def validate_footers(footers): ...
 
 
-class Tr(ChakraComponent):
+class Tr(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -427,7 +506,7 @@ class Tr(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Th(ChakraComponent):
+class Th(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -508,7 +587,7 @@ class Th(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Td(ChakraComponent):
+class Td(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -589,7 +668,7 @@ class Td(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TableCaption(ChakraComponent):
+class TableCaption(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -670,7 +749,7 @@ class TableCaption(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TableContainer(ChakraComponent):
+class TableContainer(BaseTable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 11 - 5
reflex/components/chakra/datadisplay/tag.py

@@ -11,31 +11,37 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class TagLabel(ChakraComponent):
+class BaseTag(ChakraComponent):
+    """The base tag component."""
+
+    library = "@chakra-ui/tag@3.1.1"
+
+
+class TagLabel(BaseTag):
     """The label of the tag."""
     """The label of the tag."""
 
 
     tag = "TagLabel"
     tag = "TagLabel"
 
 
 
 
-class TagLeftIcon(ChakraComponent):
+class TagLeftIcon(BaseTag):
     """The left icon of the tag."""
     """The left icon of the tag."""
 
 
     tag = "TagLeftIcon"
     tag = "TagLeftIcon"
 
 
 
 
-class TagRightIcon(ChakraComponent):
+class TagRightIcon(BaseTag):
     """The right icon of the tag."""
     """The right icon of the tag."""
 
 
     tag = "TagRightIcon"
     tag = "TagRightIcon"
 
 
 
 
-class TagCloseButton(ChakraComponent):
+class TagCloseButton(BaseTag):
     """The close button of the tag."""
     """The close button of the tag."""
 
 
     tag = "TagCloseButton"
     tag = "TagCloseButton"
 
 
 
 
-class Tag(ChakraComponent):
+class Tag(BaseTag):
     """The parent wrapper that provides context for its children."""
     """The parent wrapper that provides context for its children."""
 
 
     tag = "Tag"
     tag = "Tag"

+ 84 - 5
reflex/components/chakra/datadisplay/tag.pyi

@@ -17,7 +17,86 @@ from reflex.components.chakra import (
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class TagLabel(ChakraComponent):
+class BaseTag(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseTag":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class TagLabel(BaseTag):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -96,7 +175,7 @@ class TagLabel(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TagLeftIcon(ChakraComponent):
+class TagLeftIcon(BaseTag):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -175,7 +254,7 @@ class TagLeftIcon(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TagRightIcon(ChakraComponent):
+class TagRightIcon(BaseTag):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -254,7 +333,7 @@ class TagRightIcon(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TagCloseButton(ChakraComponent):
+class TagCloseButton(BaseTag):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -333,7 +412,7 @@ class TagCloseButton(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Tag(ChakraComponent):
+class Tag(BaseTag):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 11 - 5
reflex/components/chakra/disclosure/accordion.py

@@ -7,7 +7,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Accordion(ChakraComponent):
+class BaseAccordion(ChakraComponent):
+    """The base accordion component."""
+
+    library = "@chakra-ui/accordion@2.3.1"
+
+
+class Accordion(BaseAccordion):
     """The wrapper that uses cloneElement to pass props to AccordionItem children."""
     """The wrapper that uses cloneElement to pass props to AccordionItem children."""
 
 
     tag = "Accordion"
     tag = "Accordion"
@@ -77,7 +83,7 @@ class Accordion(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class AccordionItem(ChakraComponent):
+class AccordionItem(BaseAccordion):
     """A single accordion item."""
     """A single accordion item."""
 
 
     tag = "AccordionItem"
     tag = "AccordionItem"
@@ -92,19 +98,19 @@ class AccordionItem(ChakraComponent):
     is_focusable: Var[bool]
     is_focusable: Var[bool]
 
 
 
 
-class AccordionButton(ChakraComponent):
+class AccordionButton(BaseAccordion):
     """The button that toggles the expand/collapse state of the accordion item. This button must be wrapped in an element with role heading."""
     """The button that toggles the expand/collapse state of the accordion item. This button must be wrapped in an element with role heading."""
 
 
     tag = "AccordionButton"
     tag = "AccordionButton"
 
 
 
 
-class AccordionPanel(ChakraComponent):
+class AccordionPanel(BaseAccordion):
     """The container for the details to be revealed."""
     """The container for the details to be revealed."""
 
 
     tag = "AccordionPanel"
     tag = "AccordionPanel"
 
 
 
 
-class AccordionIcon(ChakraComponent):
+class AccordionIcon(BaseAccordion):
     """A chevron-down icon that rotates based on the expanded/collapsed state."""
     """A chevron-down icon that rotates based on the expanded/collapsed state."""
 
 
     tag = "AccordionIcon"
     tag = "AccordionIcon"

+ 84 - 5
reflex/components/chakra/disclosure/accordion.pyi

@@ -12,7 +12,86 @@ from reflex.components.chakra import ChakraComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Accordion(ChakraComponent):
+class BaseAccordion(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseAccordion":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Accordion(BaseAccordion):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -106,7 +185,7 @@ class Accordion(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AccordionItem(ChakraComponent):
+class AccordionItem(BaseAccordion):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -191,7 +270,7 @@ class AccordionItem(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AccordionButton(ChakraComponent):
+class AccordionButton(BaseAccordion):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -270,7 +349,7 @@ class AccordionButton(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AccordionPanel(ChakraComponent):
+class AccordionPanel(BaseAccordion):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -349,7 +428,7 @@ class AccordionPanel(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AccordionIcon(ChakraComponent):
+class AccordionIcon(BaseAccordion):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 11 - 5
reflex/components/chakra/disclosure/tabs.py

@@ -12,7 +12,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Tabs(ChakraComponent):
+class BaseTabs(ChakraComponent):
+    """The base tabs component."""
+
+    library = "@chakra-ui/tabs@3.0.0"
+
+
+class Tabs(BaseTabs):
     """An accessible tabs component that provides keyboard interactions and ARIA attributes described in the WAI-ARIA Tabs Design Pattern. Tabs, provides context and state for all components."""
     """An accessible tabs component that provides keyboard interactions and ARIA attributes described in the WAI-ARIA Tabs Design Pattern. Tabs, provides context and state for all components."""
 
 
     tag = "Tabs"
     tag = "Tabs"
@@ -73,7 +79,7 @@ class Tabs(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class Tab(ChakraComponent):
+class Tab(BaseTabs):
     """An element that serves as a label for one of the tab panels and can be activated to display that panel.."""
     """An element that serves as a label for one of the tab panels and can be activated to display that panel.."""
 
 
     tag = "Tab"
     tag = "Tab"
@@ -91,19 +97,19 @@ class Tab(ChakraComponent):
     panel_id: Var[str]
     panel_id: Var[str]
 
 
 
 
-class TabList(ChakraComponent):
+class TabList(BaseTabs):
     """Wrapper for the Tab components."""
     """Wrapper for the Tab components."""
 
 
     tag = "TabList"
     tag = "TabList"
 
 
 
 
-class TabPanels(ChakraComponent):
+class TabPanels(BaseTabs):
     """Wrapper for the Tab components."""
     """Wrapper for the Tab components."""
 
 
     tag = "TabPanels"
     tag = "TabPanels"
 
 
 
 
-class TabPanel(ChakraComponent):
+class TabPanel(BaseTabs):
     """An element that contains the content associated with a tab."""
     """An element that contains the content associated with a tab."""
 
 
     tag = "TabPanel"
     tag = "TabPanel"

+ 84 - 5
reflex/components/chakra/disclosure/tabs.pyi

@@ -17,7 +17,86 @@ from reflex.components.chakra import (
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Tabs(ChakraComponent):
+class BaseTabs(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseTabs":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Tabs(BaseTabs):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -188,7 +267,7 @@ class Tabs(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Tab(ChakraComponent):
+class Tab(BaseTabs):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -275,7 +354,7 @@ class Tab(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TabList(ChakraComponent):
+class TabList(BaseTabs):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -354,7 +433,7 @@ class TabList(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TabPanels(ChakraComponent):
+class TabPanels(BaseTabs):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -433,7 +512,7 @@ class TabPanels(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class TabPanel(ChakraComponent):
+class TabPanel(BaseTabs):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 12 - 6
reflex/components/chakra/disclosure/transition.py

@@ -5,7 +5,13 @@ from reflex.components.chakra import ChakraComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Transition(ChakraComponent):
+class BaseTransition(ChakraComponent):
+    """Base componemt of all chakra transitions."""
+
+    library = "@chakra-ui/transition@2.1.0"
+
+
+class Transition(BaseTransition):
     """Base componemt of all transitions."""
     """Base componemt of all transitions."""
 
 
     # Show the component; triggers when enter or exit states
     # Show the component; triggers when enter or exit states
@@ -15,13 +21,13 @@ class Transition(ChakraComponent):
     unmount_on_exit: Var[bool]
     unmount_on_exit: Var[bool]
 
 
 
 
-class Fade(Transition):
+class Fade(BaseTransition):
     """Fade component cab be used show and hide content of your app."""
     """Fade component cab be used show and hide content of your app."""
 
 
     tag = "Fade"
     tag = "Fade"
 
 
 
 
-class ScaleFade(Transition):
+class ScaleFade(BaseTransition):
     """Fade component can be scaled and reverse your app."""
     """Fade component can be scaled and reverse your app."""
 
 
     tag = "ScaleFade"
     tag = "ScaleFade"
@@ -33,7 +39,7 @@ class ScaleFade(Transition):
     reverse: Var[bool]
     reverse: Var[bool]
 
 
 
 
-class Slide(Transition):
+class Slide(BaseTransition):
     """Side can be used show content below your app."""
     """Side can be used show content below your app."""
 
 
     tag = "Slide"
     tag = "Slide"
@@ -42,7 +48,7 @@ class Slide(Transition):
     direction: Var[str]
     direction: Var[str]
 
 
 
 
-class SlideFade(Transition):
+class SlideFade(BaseTransition):
     """SlideFade component."""
     """SlideFade component."""
 
 
     tag = "SlideFade"
     tag = "SlideFade"
@@ -57,7 +63,7 @@ class SlideFade(Transition):
     reverse: Var[bool]
     reverse: Var[bool]
 
 
 
 
-class Collapse(Transition):
+class Collapse(BaseTransition):
     """Collapse component can collapse some content."""
     """Collapse component can collapse some content."""
 
 
     tag = "Collapse"
     tag = "Collapse"

+ 85 - 26
reflex/components/chakra/disclosure/transition.pyi

@@ -11,7 +11,86 @@ from typing import Union
 from reflex.components.chakra import ChakraComponent
 from reflex.components.chakra import ChakraComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Transition(ChakraComponent):
+class BaseTransition(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseTransition":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Transition(BaseTransition):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -94,14 +173,12 @@ class Transition(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Fade(Transition):
+class Fade(BaseTransition):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
         cls,
         cls,
         *children,
         *children,
-        in_: Optional[Union[Var[bool], bool]] = None,
-        unmount_on_exit: Optional[Union[Var[bool], bool]] = None,
         style: Optional[Style] = None,
         style: Optional[Style] = None,
         key: Optional[Any] = None,
         key: Optional[Any] = None,
         id: Optional[Any] = None,
         id: Optional[Any] = None,
@@ -159,8 +236,6 @@ class Fade(Transition):
 
 
         Args:
         Args:
             *children: The children of the component.
             *children: The children of the component.
-            in_: Show the component; triggers when enter or exit states
-            unmount_on_exit: If true, the element will unmount when `in={false}` and animation is done
             style: The style of the component.
             style: The style of the component.
             key: A unique key for the component.
             key: A unique key for the component.
             id: The id for the component.
             id: The id for the component.
@@ -177,7 +252,7 @@ class Fade(Transition):
         """
         """
         ...
         ...
 
 
-class ScaleFade(Transition):
+class ScaleFade(BaseTransition):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -185,8 +260,6 @@ class ScaleFade(Transition):
         *children,
         *children,
         initial_scale: Optional[Union[Var[float], float]] = None,
         initial_scale: Optional[Union[Var[float], float]] = None,
         reverse: Optional[Union[Var[bool], bool]] = None,
         reverse: Optional[Union[Var[bool], bool]] = None,
-        in_: Optional[Union[Var[bool], bool]] = None,
-        unmount_on_exit: Optional[Union[Var[bool], bool]] = None,
         style: Optional[Style] = None,
         style: Optional[Style] = None,
         key: Optional[Any] = None,
         key: Optional[Any] = None,
         id: Optional[Any] = None,
         id: Optional[Any] = None,
@@ -246,8 +319,6 @@ class ScaleFade(Transition):
             *children: The children of the component.
             *children: The children of the component.
             initial_scale: The initial scale of the element
             initial_scale: The initial scale of the element
             reverse: If true, the element will transition back to exit state
             reverse: If true, the element will transition back to exit state
-            in_: Show the component; triggers when enter or exit states
-            unmount_on_exit: If true, the element will unmount when `in={false}` and animation is done
             style: The style of the component.
             style: The style of the component.
             key: A unique key for the component.
             key: A unique key for the component.
             id: The id for the component.
             id: The id for the component.
@@ -264,15 +335,13 @@ class ScaleFade(Transition):
         """
         """
         ...
         ...
 
 
-class Slide(Transition):
+class Slide(BaseTransition):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
         cls,
         cls,
         *children,
         *children,
         direction: Optional[Union[Var[str], str]] = None,
         direction: Optional[Union[Var[str], str]] = None,
-        in_: Optional[Union[Var[bool], bool]] = None,
-        unmount_on_exit: Optional[Union[Var[bool], bool]] = None,
         style: Optional[Style] = None,
         style: Optional[Style] = None,
         key: Optional[Any] = None,
         key: Optional[Any] = None,
         id: Optional[Any] = None,
         id: Optional[Any] = None,
@@ -331,8 +400,6 @@ class Slide(Transition):
         Args:
         Args:
             *children: The children of the component.
             *children: The children of the component.
             direction: The direction to slide from
             direction: The direction to slide from
-            in_: Show the component; triggers when enter or exit states
-            unmount_on_exit: If true, the element will unmount when `in={false}` and animation is done
             style: The style of the component.
             style: The style of the component.
             key: A unique key for the component.
             key: A unique key for the component.
             id: The id for the component.
             id: The id for the component.
@@ -349,7 +416,7 @@ class Slide(Transition):
         """
         """
         ...
         ...
 
 
-class SlideFade(Transition):
+class SlideFade(BaseTransition):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -358,8 +425,6 @@ class SlideFade(Transition):
         offsetX: Optional[Union[Var[Union[str, int]], Union[str, int]]] = None,
         offsetX: Optional[Union[Var[Union[str, int]], Union[str, int]]] = None,
         offsetY: Optional[Union[Var[Union[str, int]], Union[str, int]]] = None,
         offsetY: Optional[Union[Var[Union[str, int]], Union[str, int]]] = None,
         reverse: Optional[Union[Var[bool], bool]] = None,
         reverse: Optional[Union[Var[bool], bool]] = None,
-        in_: Optional[Union[Var[bool], bool]] = None,
-        unmount_on_exit: Optional[Union[Var[bool], bool]] = None,
         style: Optional[Style] = None,
         style: Optional[Style] = None,
         key: Optional[Any] = None,
         key: Optional[Any] = None,
         id: Optional[Any] = None,
         id: Optional[Any] = None,
@@ -420,8 +485,6 @@ class SlideFade(Transition):
             offsetX: The offset on the horizontal or x axis
             offsetX: The offset on the horizontal or x axis
             offsetY: The offset on the vertical or y axis
             offsetY: The offset on the vertical or y axis
             reverse: If true, the element will be transitioned back to the offset when it leaves. Otherwise, it'll only fade out
             reverse: If true, the element will be transitioned back to the offset when it leaves. Otherwise, it'll only fade out
-            in_: Show the component; triggers when enter or exit states
-            unmount_on_exit: If true, the element will unmount when `in={false}` and animation is done
             style: The style of the component.
             style: The style of the component.
             key: A unique key for the component.
             key: A unique key for the component.
             id: The id for the component.
             id: The id for the component.
@@ -438,7 +501,7 @@ class SlideFade(Transition):
         """
         """
         ...
         ...
 
 
-class Collapse(Transition):
+class Collapse(BaseTransition):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -447,8 +510,6 @@ class Collapse(Transition):
         animateOpacity: Optional[Union[Var[bool], bool]] = None,
         animateOpacity: Optional[Union[Var[bool], bool]] = None,
         endingHeight: Optional[Union[Var[str], str]] = None,
         endingHeight: Optional[Union[Var[str], str]] = None,
         startingHeight: Optional[Union[Var[Union[str, int]], Union[str, int]]] = None,
         startingHeight: Optional[Union[Var[Union[str, int]], Union[str, int]]] = None,
-        in_: Optional[Union[Var[bool], bool]] = None,
-        unmount_on_exit: Optional[Union[Var[bool], bool]] = None,
         style: Optional[Style] = None,
         style: Optional[Style] = None,
         key: Optional[Any] = None,
         key: Optional[Any] = None,
         id: Optional[Any] = None,
         id: Optional[Any] = None,
@@ -509,8 +570,6 @@ class Collapse(Transition):
             animateOpacity: If true, the opacity of the content will be animated
             animateOpacity: If true, the opacity of the content will be animated
             endingHeight: The height you want the content in its expanded state.
             endingHeight: The height you want the content in its expanded state.
             startingHeight: The height you want the content in its collapsed state.
             startingHeight: The height you want the content in its collapsed state.
-            in_: Show the component; triggers when enter or exit states
-            unmount_on_exit: If true, the element will unmount when `in={false}` and animation is done
             style: The style of the component.
             style: The style of the component.
             key: A unique key for the component.
             key: A unique key for the component.
             id: The id for the component.
             id: The id for the component.

+ 2 - 0
reflex/components/chakra/disclosure/visuallyhidden.py

@@ -6,4 +6,6 @@ from reflex.components.chakra import ChakraComponent
 class VisuallyHidden(ChakraComponent):
 class VisuallyHidden(ChakraComponent):
     """A component that visually hides content while still allowing it to be read by screen readers."""
     """A component that visually hides content while still allowing it to be read by screen readers."""
 
 
+    library = "@chakra-ui/visually-hidden@2.2.0"
+
     tag = "VisuallyHidden"
     tag = "VisuallyHidden"

+ 10 - 4
reflex/components/chakra/feedback/alert.py

@@ -9,7 +9,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Alert(ChakraComponent):
+class BaseAlert(ChakraComponent):
+    """The base class for all alert components."""
+
+    library = "@chakra-ui/alert@2.2.2"
+
+
+class Alert(BaseAlert):
     """An alert feedback box."""
     """An alert feedback box."""
 
 
     tag = "Alert"
     tag = "Alert"
@@ -50,19 +56,19 @@ class Alert(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class AlertIcon(ChakraComponent):
+class AlertIcon(BaseAlert):
     """An icon displayed in the alert."""
     """An icon displayed in the alert."""
 
 
     tag = "AlertIcon"
     tag = "AlertIcon"
 
 
 
 
-class AlertTitle(ChakraComponent):
+class AlertTitle(BaseAlert):
     """The title of the alert."""
     """The title of the alert."""
 
 
     tag = "AlertTitle"
     tag = "AlertTitle"
 
 
 
 
-class AlertDescription(ChakraComponent):
+class AlertDescription(BaseAlert):
     """AlertDescription composes the Box component."""
     """AlertDescription composes the Box component."""
 
 
     tag = "AlertDescription"
     tag = "AlertDescription"

+ 83 - 4
reflex/components/chakra/feedback/alert.pyi

@@ -11,7 +11,86 @@ from reflex.components.chakra import ChakraComponent, LiteralAlertVariant, Liter
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Alert(ChakraComponent):
+class BaseAlert(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseAlert":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Alert(BaseAlert):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -107,7 +186,7 @@ class Alert(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertIcon(ChakraComponent):
+class AlertIcon(BaseAlert):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -186,7 +265,7 @@ class AlertIcon(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertTitle(ChakraComponent):
+class AlertTitle(BaseAlert):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -265,7 +344,7 @@ class AlertTitle(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDescription(ChakraComponent):
+class AlertDescription(BaseAlert):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 8 - 2
reflex/components/chakra/feedback/circularprogress.py

@@ -6,7 +6,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class CircularProgress(ChakraComponent):
+class BaseCircularProgress(ChakraComponent):
+    """The base circular progress component."""
+
+    library = "@chakra-ui/progress@2.2.0"
+
+
+class CircularProgress(BaseCircularProgress):
     """The CircularProgress component is used to indicate the progress for determinate and indeterminate processes."""
     """The CircularProgress component is used to indicate the progress for determinate and indeterminate processes."""
 
 
     tag = "CircularProgress"
     tag = "CircularProgress"
@@ -61,7 +67,7 @@ class CircularProgress(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class CircularProgressLabel(ChakraComponent):
+class CircularProgressLabel(BaseCircularProgress):
     """Label of CircularProcess."""
     """Label of CircularProcess."""
 
 
     tag = "CircularProgressLabel"
     tag = "CircularProgressLabel"

+ 81 - 2
reflex/components/chakra/feedback/circularprogress.pyi

@@ -12,7 +12,86 @@ from reflex.components.chakra import ChakraComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class CircularProgress(ChakraComponent):
+class BaseCircularProgress(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseCircularProgress":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class CircularProgress(BaseCircularProgress):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -110,7 +189,7 @@ class CircularProgress(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class CircularProgressLabel(ChakraComponent):
+class CircularProgressLabel(BaseCircularProgress):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 2 - 0
reflex/components/chakra/feedback/progress.py

@@ -9,6 +9,8 @@ from reflex.vars import Var
 class Progress(ChakraComponent):
 class Progress(ChakraComponent):
     """A bar to display progress."""
     """A bar to display progress."""
 
 
+    library = "@chakra-ui/progress@2.2.0"
+
     tag = "Progress"
     tag = "Progress"
 
 
     # If true, the progress bar will show stripe
     # If true, the progress bar will show stripe

+ 9 - 3
reflex/components/chakra/feedback/skeleton.py

@@ -4,7 +4,13 @@ from reflex.components.chakra import ChakraComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Skeleton(ChakraComponent):
+class BaseSkeleton(ChakraComponent):
+    """The base skeleton component."""
+
+    library = "@chakra-ui/skeleton@2.1.0"
+
+
+class Skeleton(BaseSkeleton):
     """Skeleton is used to display the loading state of some components. You can use it as a standalone component. Or to wrap another component to take the same height and width."""
     """Skeleton is used to display the loading state of some components. You can use it as a standalone component. Or to wrap another component to take the same height and width."""
 
 
     tag = "Skeleton"
     tag = "Skeleton"
@@ -25,7 +31,7 @@ class Skeleton(ChakraComponent):
     start_color: Var[str]
     start_color: Var[str]
 
 
 
 
-class SkeletonCircle(ChakraComponent):
+class SkeletonCircle(BaseSkeleton):
     """SkeletonCircle is used to display the loading state of some components."""
     """SkeletonCircle is used to display the loading state of some components."""
 
 
     tag = "SkeletonCircle"
     tag = "SkeletonCircle"
@@ -46,7 +52,7 @@ class SkeletonCircle(ChakraComponent):
     start_color: Var[str]
     start_color: Var[str]
 
 
 
 
-class SkeletonText(ChakraComponent):
+class SkeletonText(BaseSkeleton):
     """SkeletonText is used to display the loading state of some components."""
     """SkeletonText is used to display the loading state of some components."""
 
 
     tag = "SkeletonText"
     tag = "SkeletonText"

+ 82 - 3
reflex/components/chakra/feedback/skeleton.pyi

@@ -10,7 +10,86 @@ from reflex.style import Style
 from reflex.components.chakra import ChakraComponent
 from reflex.components.chakra import ChakraComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Skeleton(ChakraComponent):
+class BaseSkeleton(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseSkeleton":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Skeleton(BaseSkeleton):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -99,7 +178,7 @@ class Skeleton(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class SkeletonCircle(ChakraComponent):
+class SkeletonCircle(BaseSkeleton):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -188,7 +267,7 @@ class SkeletonCircle(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class SkeletonText(ChakraComponent):
+class SkeletonText(BaseSkeleton):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 2 - 0
reflex/components/chakra/feedback/spinner.py

@@ -7,6 +7,8 @@ from reflex.vars import Var
 class Spinner(ChakraComponent):
 class Spinner(ChakraComponent):
     """The component that spins."""
     """The component that spins."""
 
 
+    library = "@chakra-ui/spinner@2.1.0"
+
     tag = "Spinner"
     tag = "Spinner"
 
 
     # The color of the empty area in the spinner
     # The color of the empty area in the spinner

+ 8 - 2
reflex/components/chakra/forms/button.py

@@ -11,7 +11,13 @@ from reflex.components.chakra import (
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Button(ChakraComponent):
+class BaseButton(ChakraComponent):
+    """Base class for all button components."""
+
+    library = "@chakra-ui/button@2.1.0"
+
+
+class Button(BaseButton):
     """The Button component is used to trigger an event or event, such as submitting a form, opening a dialog, canceling an event, or performing a delete operation."""
     """The Button component is used to trigger an event or event, such as submitting a form, opening a dialog, canceling an event, or performing a delete operation."""
 
 
     tag = "Button"
     tag = "Button"
@@ -61,7 +67,7 @@ class Button(ChakraComponent):
     name: Var[str]
     name: Var[str]
 
 
 
 
-class ButtonGroup(ChakraComponent):
+class ButtonGroup(BaseButton):
     """A group of buttons."""
     """A group of buttons."""
 
 
     tag = "ButtonGroup"
     tag = "ButtonGroup"

+ 81 - 2
reflex/components/chakra/forms/button.pyi

@@ -17,7 +17,86 @@ from reflex.components.chakra import (
 )
 )
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Button(ChakraComponent):
+class BaseButton(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseButton":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Button(BaseButton):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -176,7 +255,7 @@ class Button(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ButtonGroup(ChakraComponent):
+class ButtonGroup(BaseButton):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 8 - 2
reflex/components/chakra/forms/checkbox.py

@@ -12,7 +12,13 @@ from reflex.constants import EventTriggers
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Checkbox(ChakraComponent):
+class BaseCheckbox(ChakraComponent):
+    """The base class for all checkbox components."""
+
+    library = "@chakra-ui/checkbox@2.3.2"
+
+
+class Checkbox(BaseCheckbox):
     """The Checkbox component is used in forms when a user needs to select multiple values from several options."""
     """The Checkbox component is used in forms when a user needs to select multiple values from several options."""
 
 
     tag = "Checkbox"
     tag = "Checkbox"
@@ -68,7 +74,7 @@ class Checkbox(ChakraComponent):
         }
         }
 
 
 
 
-class CheckboxGroup(ChakraComponent):
+class CheckboxGroup(BaseCheckbox):
     """A group of checkboxes."""
     """A group of checkboxes."""
 
 
     tag = "CheckboxGroup"
     tag = "CheckboxGroup"

+ 81 - 2
reflex/components/chakra/forms/checkbox.pyi

@@ -12,7 +12,86 @@ from reflex.components.chakra import ChakraComponent, LiteralColorScheme, Litera
 from reflex.constants import EventTriggers
 from reflex.constants import EventTriggers
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Checkbox(ChakraComponent):
+class BaseCheckbox(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseCheckbox":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Checkbox(BaseCheckbox):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -168,7 +247,7 @@ class Checkbox(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class CheckboxGroup(ChakraComponent):
+class CheckboxGroup(BaseCheckbox):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 10 - 4
reflex/components/chakra/forms/editable.py

@@ -8,7 +8,13 @@ from reflex.constants import EventTriggers
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Editable(ChakraComponent):
+class BaseEditable(ChakraComponent):
+    """The base class for all Chakra editable components."""
+
+    library = "@chakra-ui/editable@3.1.0"
+
+
+class Editable(BaseEditable):
     """The wrapper component that provides context value."""
     """The wrapper component that provides context value."""
 
 
     tag = "Editable"
     tag = "Editable"
@@ -52,19 +58,19 @@ class Editable(ChakraComponent):
         }
         }
 
 
 
 
-class EditableInput(ChakraComponent):
+class EditableInput(BaseEditable):
     """The edit view of the component. It shows when you click or focus on the text."""
     """The edit view of the component. It shows when you click or focus on the text."""
 
 
     tag = "EditableInput"
     tag = "EditableInput"
 
 
 
 
-class EditableTextarea(ChakraComponent):
+class EditableTextarea(BaseEditable):
     """Use the textarea element to handle multi line text input in an editable context."""
     """Use the textarea element to handle multi line text input in an editable context."""
 
 
     tag = "EditableTextarea"
     tag = "EditableTextarea"
 
 
 
 
-class EditablePreview(ChakraComponent):
+class EditablePreview(BaseEditable):
     """The read-only view of the component."""
     """The read-only view of the component."""
 
 
     tag = "EditablePreview"
     tag = "EditablePreview"

+ 83 - 4
reflex/components/chakra/forms/editable.pyi

@@ -12,7 +12,86 @@ from reflex.components.chakra import ChakraComponent
 from reflex.constants import EventTriggers
 from reflex.constants import EventTriggers
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Editable(ChakraComponent):
+class BaseEditable(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseEditable":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Editable(BaseEditable):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -120,7 +199,7 @@ class Editable(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class EditableInput(ChakraComponent):
+class EditableInput(BaseEditable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -199,7 +278,7 @@ class EditableInput(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class EditableTextarea(ChakraComponent):
+class EditableTextarea(BaseEditable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -278,7 +357,7 @@ class EditableTextarea(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class EditablePreview(ChakraComponent):
+class EditablePreview(BaseEditable):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 2 - 1
reflex/components/chakra/forms/form.py

@@ -7,6 +7,7 @@ from typing import Any, Dict, Iterator
 from jinja2 import Environment
 from jinja2 import Environment
 
 
 from reflex.components.chakra import ChakraComponent
 from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.components.tags import Tag
 from reflex.components.tags import Tag
 from reflex.constants import Dirs, EventTriggers
 from reflex.constants import Dirs, EventTriggers
@@ -33,7 +34,7 @@ HANDLE_SUBMIT_JS_JINJA2 = Environment().from_string(
 )
 )
 
 
 
 
-class Form(ChakraComponent):
+class Form(ChakraLayoutComponent):
     """A form component."""
     """A form component."""
 
 
     tag = "Box"
     tag = "Box"

+ 2 - 1
reflex/components/chakra/forms/form.pyi

@@ -11,6 +11,7 @@ from hashlib import md5
 from typing import Any, Dict, Iterator
 from typing import Any, Dict, Iterator
 from jinja2 import Environment
 from jinja2 import Environment
 from reflex.components.chakra import ChakraComponent
 from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.components.tags import Tag
 from reflex.components.tags import Tag
 from reflex.constants import Dirs, EventTriggers
 from reflex.constants import Dirs, EventTriggers
@@ -24,7 +25,7 @@ HANDLE_SUBMIT_JS_JINJA2 = Environment().from_string(
     "\n    const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {\n        const $form = ev.target\n        ev.preventDefault()\n        const {{ form_data }} = {...Object.fromEntries(new FormData($form).entries()), ...{{ field_ref_mapping }}}\n\n        {{ on_submit_event_chain }}\n\n        if ({{ reset_on_submit }}) {\n            $form.reset()\n        }\n    })\n    "
     "\n    const handleSubmit_{{ handle_submit_unique_name }} = useCallback((ev) => {\n        const $form = ev.target\n        ev.preventDefault()\n        const {{ form_data }} = {...Object.fromEntries(new FormData($form).entries()), ...{{ field_ref_mapping }}}\n\n        {{ on_submit_event_chain }}\n\n        if ({{ reset_on_submit }}) {\n            $form.reset()\n        }\n    })\n    "
 )
 )
 
 
-class Form(ChakraComponent):
+class Form(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 12 - 6
reflex/components/chakra/forms/input.py

@@ -15,7 +15,13 @@ from reflex.utils import imports
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Input(ChakraComponent):
+class BaseInput(ChakraComponent):
+    """The base class for all Chakra input components."""
+
+    library = "@chakra-ui/input@2.1.2"
+
+
+class Input(BaseInput):
     """The Input component is a component that is used to get user input in a text field."""
     """The Input component is a component that is used to get user input in a text field."""
 
 
     tag = "Input"
     tag = "Input"
@@ -103,7 +109,7 @@ class Input(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class InputGroup(ChakraComponent):
+class InputGroup(BaseInput):
     """The InputGroup component is a component that is used to group a set of inputs."""
     """The InputGroup component is a component that is used to group a set of inputs."""
 
 
     tag = "InputGroup"
     tag = "InputGroup"
@@ -111,25 +117,25 @@ class InputGroup(ChakraComponent):
     _memoization_mode = MemoizationMode(recursive=False)
     _memoization_mode = MemoizationMode(recursive=False)
 
 
 
 
-class InputLeftAddon(ChakraComponent):
+class InputLeftAddon(BaseInput):
     """The InputLeftAddon component is a component that is used to add an addon to the left of an input."""
     """The InputLeftAddon component is a component that is used to add an addon to the left of an input."""
 
 
     tag = "InputLeftAddon"
     tag = "InputLeftAddon"
 
 
 
 
-class InputRightAddon(ChakraComponent):
+class InputRightAddon(BaseInput):
     """The InputRightAddon component is a component that is used to add an addon to the right of an input."""
     """The InputRightAddon component is a component that is used to add an addon to the right of an input."""
 
 
     tag = "InputRightAddon"
     tag = "InputRightAddon"
 
 
 
 
-class InputLeftElement(ChakraComponent):
+class InputLeftElement(BaseInput):
     """The InputLeftElement component is a component that is used to add an element to the left of an input."""
     """The InputLeftElement component is a component that is used to add an element to the left of an input."""
 
 
     tag = "InputLeftElement"
     tag = "InputLeftElement"
 
 
 
 
-class InputRightElement(ChakraComponent):
+class InputRightElement(BaseInput):
     """The InputRightElement component is a component that is used to add an element to the right of an input."""
     """The InputRightElement component is a component that is used to add an element to the right of an input."""
 
 
     tag = "InputRightElement"
     tag = "InputRightElement"

+ 85 - 6
reflex/components/chakra/forms/input.pyi

@@ -20,7 +20,86 @@ from reflex.constants import EventTriggers, MemoizationMode
 from reflex.utils import imports
 from reflex.utils import imports
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Input(ChakraComponent):
+class BaseInput(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseInput":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Input(BaseInput):
     def get_event_triggers(self) -> Dict[str, Any]: ...
     def get_event_triggers(self) -> Dict[str, Any]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -192,7 +271,7 @@ class Input(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class InputGroup(ChakraComponent):
+class InputGroup(BaseInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -271,7 +350,7 @@ class InputGroup(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class InputLeftAddon(ChakraComponent):
+class InputLeftAddon(BaseInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -350,7 +429,7 @@ class InputLeftAddon(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class InputRightAddon(ChakraComponent):
+class InputRightAddon(BaseInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -429,7 +508,7 @@ class InputRightAddon(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class InputLeftElement(ChakraComponent):
+class InputLeftElement(BaseInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -508,7 +587,7 @@ class InputLeftElement(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class InputRightElement(ChakraComponent):
+class InputRightElement(BaseInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 11 - 5
reflex/components/chakra/forms/numberinput.py

@@ -13,7 +13,13 @@ from reflex.constants import EventTriggers
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class NumberInput(ChakraComponent):
+class BaseNumberInput(ChakraComponent):
+    """Base number input component."""
+
+    library = "@chakra-ui/number-input@2.1.2"
+
+
+class NumberInput(BaseNumberInput):
     """The wrapper that provides context and logic to the components."""
     """The wrapper that provides context and logic to the components."""
 
 
     tag = "NumberInput"
     tag = "NumberInput"
@@ -113,25 +119,25 @@ class NumberInput(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class NumberInputField(ChakraComponent):
+class NumberInputField(BaseNumberInput):
     """The input field itself."""
     """The input field itself."""
 
 
     tag = "NumberInputField"
     tag = "NumberInputField"
 
 
 
 
-class NumberInputStepper(ChakraComponent):
+class NumberInputStepper(BaseNumberInput):
     """The wrapper for the input's stepper buttons."""
     """The wrapper for the input's stepper buttons."""
 
 
     tag = "NumberInputStepper"
     tag = "NumberInputStepper"
 
 
 
 
-class NumberIncrementStepper(ChakraComponent):
+class NumberIncrementStepper(BaseNumberInput):
     """The button to increment the value of the input."""
     """The button to increment the value of the input."""
 
 
     tag = "NumberIncrementStepper"
     tag = "NumberIncrementStepper"
 
 
 
 
-class NumberDecrementStepper(ChakraComponent):
+class NumberDecrementStepper(BaseNumberInput):
     """The button to decrement the value of the input."""
     """The button to decrement the value of the input."""
 
 
     tag = "NumberDecrementStepper"
     tag = "NumberDecrementStepper"

+ 84 - 5
reflex/components/chakra/forms/numberinput.pyi

@@ -18,7 +18,86 @@ from reflex.components.component import Component
 from reflex.constants import EventTriggers
 from reflex.constants import EventTriggers
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class NumberInput(ChakraComponent):
+class BaseNumberInput(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseNumberInput":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class NumberInput(BaseNumberInput):
     def get_event_triggers(self) -> Dict[str, Any]: ...
     def get_event_triggers(self) -> Dict[str, Any]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -143,7 +222,7 @@ class NumberInput(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class NumberInputField(ChakraComponent):
+class NumberInputField(BaseNumberInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -222,7 +301,7 @@ class NumberInputField(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class NumberInputStepper(ChakraComponent):
+class NumberInputStepper(BaseNumberInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -301,7 +380,7 @@ class NumberInputStepper(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class NumberIncrementStepper(ChakraComponent):
+class NumberIncrementStepper(BaseNumberInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -380,7 +459,7 @@ class NumberIncrementStepper(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class NumberDecrementStepper(ChakraComponent):
+class NumberDecrementStepper(BaseNumberInput):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 8 - 2
reflex/components/chakra/forms/pininput.py

@@ -12,7 +12,13 @@ from reflex.utils.imports import ImportDict, merge_imports
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class PinInput(ChakraComponent):
+class BasePinInput(ChakraComponent):
+    """The base chakra pin input component."""
+
+    library = "@chakra-ui/pin-input@2.1.0"
+
+
+class PinInput(BasePinInput):
     """The component that provides context to all the pin-input fields."""
     """The component that provides context to all the pin-input fields."""
 
 
     tag = "PinInput"
     tag = "PinInput"
@@ -161,7 +167,7 @@ class PinInput(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class PinInputField(ChakraComponent):
+class PinInputField(BasePinInput):
     """The text field that user types in - must be a direct child of PinInput."""
     """The text field that user types in - must be a direct child of PinInput."""
 
 
     tag = "PinInputField"
     tag = "PinInputField"

+ 81 - 2
reflex/components/chakra/forms/pininput.pyi

@@ -16,7 +16,86 @@ from reflex.utils import format
 from reflex.utils.imports import ImportDict, merge_imports
 from reflex.utils.imports import ImportDict, merge_imports
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class PinInput(ChakraComponent):
+class BasePinInput(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BasePinInput":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class PinInput(BasePinInput):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_ref(self) -> str | None: ...
     def get_ref(self) -> str | None: ...
     @overload
     @overload
@@ -138,7 +217,7 @@ class PinInput(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PinInputField(ChakraComponent):
+class PinInputField(BasePinInput):
     @classmethod
     @classmethod
     def for_length(cls, length: Var | int, **props) -> Var: ...
     def for_length(cls, length: Var | int, **props) -> Var: ...
     def get_ref(self): ...
     def get_ref(self): ...

+ 4 - 0
reflex/components/chakra/forms/radio.py

@@ -15,6 +15,8 @@ from reflex.vars import Var
 class RadioGroup(ChakraComponent):
 class RadioGroup(ChakraComponent):
     """A grouping of individual radio options."""
     """A grouping of individual radio options."""
 
 
+    library = "@chakra-ui/radio@2.1.2"
+
     tag = "RadioGroup"
     tag = "RadioGroup"
 
 
     # State var to bind the the input.
     # State var to bind the the input.
@@ -62,6 +64,8 @@ class RadioGroup(ChakraComponent):
 class Radio(Text):
 class Radio(Text):
     """Radios are used when only one choice may be selected in a series of options."""
     """Radios are used when only one choice may be selected in a series of options."""
 
 
+    library = "@chakra-ui/radio@2.1.2"
+
     tag = "Radio"
     tag = "Radio"
 
 
     # Value of radio.
     # Value of radio.

+ 10 - 4
reflex/components/chakra/forms/rangeslider.py

@@ -10,7 +10,13 @@ from reflex.utils import format
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class RangeSlider(ChakraComponent):
+class BaseRangeSlider(ChakraComponent):
+    """Base componemt of all chakra range sliders."""
+
+    library = "@chakra-ui/slider@2.1.0"
+
+
+class RangeSlider(BaseRangeSlider):
     """The RangeSlider is a multi thumb slider used to select a range of related values. A common use-case of this component is a price range picker that allows a user to set the minimum and maximum price."""
     """The RangeSlider is a multi thumb slider used to select a range of related values. A common use-case of this component is a price range picker that allows a user to set the minimum and maximum price."""
 
 
     tag = "RangeSlider"
     tag = "RangeSlider"
@@ -118,19 +124,19 @@ class RangeSlider(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class RangeSliderTrack(ChakraComponent):
+class RangeSliderTrack(BaseRangeSlider):
     """A range slider track."""
     """A range slider track."""
 
 
     tag = "RangeSliderTrack"
     tag = "RangeSliderTrack"
 
 
 
 
-class RangeSliderFilledTrack(ChakraComponent):
+class RangeSliderFilledTrack(BaseRangeSlider):
     """A filled range slider track."""
     """A filled range slider track."""
 
 
     tag = "RangeSliderFilledTrack"
     tag = "RangeSliderFilledTrack"
 
 
 
 
-class RangeSliderThumb(ChakraComponent):
+class RangeSliderThumb(BaseRangeSlider):
     """A range slider thumb."""
     """A range slider thumb."""
 
 
     tag = "RangeSliderThumb"
     tag = "RangeSliderThumb"

+ 83 - 4
reflex/components/chakra/forms/rangeslider.pyi

@@ -14,7 +14,86 @@ from reflex.constants import EventTriggers
 from reflex.utils import format
 from reflex.utils import format
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class RangeSlider(ChakraComponent):
+class BaseRangeSlider(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseRangeSlider":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class RangeSlider(BaseRangeSlider):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_ref(self): ...
     def get_ref(self): ...
     @overload
     @overload
@@ -127,7 +206,7 @@ class RangeSlider(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class RangeSliderTrack(ChakraComponent):
+class RangeSliderTrack(BaseRangeSlider):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -206,7 +285,7 @@ class RangeSliderTrack(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class RangeSliderFilledTrack(ChakraComponent):
+class RangeSliderFilledTrack(BaseRangeSlider):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -285,7 +364,7 @@ class RangeSliderFilledTrack(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class RangeSliderThumb(ChakraComponent):
+class RangeSliderThumb(BaseRangeSlider):
     def get_ref(self): ...
     def get_ref(self): ...
     @overload
     @overload
     @classmethod
     @classmethod

+ 2 - 0
reflex/components/chakra/forms/select.py

@@ -14,6 +14,8 @@ from reflex.vars import Var
 class Select(ChakraComponent):
 class Select(ChakraComponent):
     """Select component is a component that allows users pick a value from predefined options. Ideally, it should be used when there are more than 5 options, otherwise you might consider using a radio group instead."""
     """Select component is a component that allows users pick a value from predefined options. Ideally, it should be used when there are more than 5 options, otherwise you might consider using a radio group instead."""
 
 
+    library = "@chakra-ui/select@2.1.2"
+
     tag = "Select"
     tag = "Select"
 
 
     # State var to bind the select.
     # State var to bind the select.

+ 11 - 5
reflex/components/chakra/forms/slider.py

@@ -11,7 +11,13 @@ from reflex.vars import Var
 LiteralLayout = Literal["horizontal", "vertical"]
 LiteralLayout = Literal["horizontal", "vertical"]
 
 
 
 
-class Slider(ChakraComponent):
+class BaseSlider(ChakraComponent):
+    """Base componemt of all chakra sliders."""
+
+    library = "@chakra-ui/slider@2.1.0"
+
+
+class Slider(BaseSlider):
     """The wrapper that provides context and functionality for all children."""
     """The wrapper that provides context and functionality for all children."""
 
 
     tag = "Slider"
     tag = "Slider"
@@ -106,19 +112,19 @@ class Slider(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class SliderTrack(ChakraComponent):
+class SliderTrack(BaseSlider):
     """The empty part of the slider that shows the track."""
     """The empty part of the slider that shows the track."""
 
 
     tag = "SliderTrack"
     tag = "SliderTrack"
 
 
 
 
-class SliderFilledTrack(ChakraComponent):
+class SliderFilledTrack(BaseSlider):
     """The filled part of the slider."""
     """The filled part of the slider."""
 
 
     tag = "SliderFilledTrack"
     tag = "SliderFilledTrack"
 
 
 
 
-class SliderThumb(ChakraComponent):
+class SliderThumb(BaseSlider):
     """The handle that's used to change the slider value."""
     """The handle that's used to change the slider value."""
 
 
     tag = "SliderThumb"
     tag = "SliderThumb"
@@ -127,7 +133,7 @@ class SliderThumb(ChakraComponent):
     box_size: Var[str]
     box_size: Var[str]
 
 
 
 
-class SliderMark(ChakraComponent):
+class SliderMark(BaseSlider):
     """The label or mark that shows names for specific slider values."""
     """The label or mark that shows names for specific slider values."""
 
 
     tag = "SliderMark"
     tag = "SliderMark"

+ 84 - 5
reflex/components/chakra/forms/slider.pyi

@@ -15,7 +15,86 @@ from reflex.vars import Var
 
 
 LiteralLayout = Literal["horizontal", "vertical"]
 LiteralLayout = Literal["horizontal", "vertical"]
 
 
-class Slider(ChakraComponent):
+class BaseSlider(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseSlider":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Slider(BaseSlider):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -146,7 +225,7 @@ class Slider(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class SliderTrack(ChakraComponent):
+class SliderTrack(BaseSlider):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -225,7 +304,7 @@ class SliderTrack(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class SliderFilledTrack(ChakraComponent):
+class SliderFilledTrack(BaseSlider):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -304,7 +383,7 @@ class SliderFilledTrack(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class SliderThumb(ChakraComponent):
+class SliderThumb(BaseSlider):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -385,7 +464,7 @@ class SliderThumb(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class SliderMark(ChakraComponent):
+class SliderMark(BaseSlider):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 2 - 0
reflex/components/chakra/forms/switch.py

@@ -11,6 +11,8 @@ from reflex.vars import Var
 class Switch(ChakraComponent):
 class Switch(ChakraComponent):
     """Toggleable switch component."""
     """Toggleable switch component."""
 
 
+    library = "@chakra-ui/switch@2.1.2"
+
     tag = "Switch"
     tag = "Switch"
 
 
     # If true, the switch will be checked. You'll need to set an on_change event handler to update its value (since it is now controlled)
     # If true, the switch will be checked. You'll need to set an on_change event handler to update its value (since it is now controlled)

+ 2 - 0
reflex/components/chakra/forms/textarea.py

@@ -13,6 +13,8 @@ from reflex.vars import Var
 class TextArea(ChakraComponent):
 class TextArea(ChakraComponent):
     """A text area component."""
     """A text area component."""
 
 
+    library = "@chakra-ui/textarea@2.1.2"
+
     tag = "Textarea"
     tag = "Textarea"
 
 
     # State var to bind the input.
     # State var to bind the input.

+ 2 - 2
reflex/components/chakra/layout/aspect_ratio.py

@@ -1,10 +1,10 @@
 """A AspectRatio component."""
 """A AspectRatio component."""
 
 
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class AspectRatio(ChakraComponent):
+class AspectRatio(ChakraLayoutComponent):
     """AspectRatio component is used to embed responsive videos and maps, etc."""
     """AspectRatio component is used to embed responsive videos and maps, etc."""
 
 
     tag = "AspectRatio"
     tag = "AspectRatio"

+ 2 - 2
reflex/components/chakra/layout/aspect_ratio.pyi

@@ -7,10 +7,10 @@ from typing import Any, Dict, Literal, Optional, Union, overload
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class AspectRatio(ChakraComponent):
+class AspectRatio(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 9 - 0
reflex/components/chakra/layout/base.py

@@ -0,0 +1,9 @@
+"""The base class for all Chakra layout components."""
+
+from reflex.components.chakra import ChakraComponent
+
+
+class ChakraLayoutComponent(ChakraComponent):
+    """A component that wraps a Chakra component."""
+
+    library = "@chakra-ui/layout@2.3.1"

+ 89 - 0
reflex/components/chakra/layout/base.pyi

@@ -0,0 +1,89 @@
+"""Stub file for reflex/components/chakra/layout/base.py"""
+# ------------------- DO NOT EDIT ----------------------
+# This file was generated by `scripts/pyi_generator.py`!
+# ------------------------------------------------------
+
+from typing import Any, Dict, Literal, Optional, Union, overload
+from reflex.vars import Var, BaseVar, ComputedVar
+from reflex.event import EventChain, EventHandler, EventSpec
+from reflex.style import Style
+from reflex.components.chakra import ChakraComponent
+
+class ChakraLayoutComponent(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "ChakraLayoutComponent":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...

+ 3 - 2
reflex/components/chakra/layout/box.py

@@ -1,11 +1,12 @@
 """A box component that can contain other components."""
 """A box component that can contain other components."""
 
 
-from reflex.components.chakra import ChakraComponent
+
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.components.tags import Tag
 from reflex.components.tags import Tag
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Box(ChakraComponent):
+class Box(ChakraLayoutComponent):
     """A generic container component that can contain other components."""
     """A generic container component that can contain other components."""
 
 
     tag = "Box"
     tag = "Box"

+ 2 - 2
reflex/components/chakra/layout/box.pyi

@@ -7,11 +7,11 @@ from typing import Any, Dict, Literal, Optional, Union, overload
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.components.tags import Tag
 from reflex.components.tags import Tag
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Box(ChakraComponent):
+class Box(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 10 - 4
reflex/components/chakra/layout/card.py

@@ -12,25 +12,31 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class CardHeader(ChakraComponent):
+class BaseCard(ChakraComponent):
+    """The base class for all Chakra Card components."""
+
+    library = "@chakra-ui/card@2.2.0"
+
+
+class CardHeader(BaseCard):
     """The wrapper that contains a card's header."""
     """The wrapper that contains a card's header."""
 
 
     tag = "CardHeader"
     tag = "CardHeader"
 
 
 
 
-class CardBody(ChakraComponent):
+class CardBody(BaseCard):
     """The wrapper that houses the card's main content."""
     """The wrapper that houses the card's main content."""
 
 
     tag = "CardBody"
     tag = "CardBody"
 
 
 
 
-class CardFooter(ChakraComponent):
+class CardFooter(BaseCard):
     """The footer that houses the card actions."""
     """The footer that houses the card actions."""
 
 
     tag = "CardFooter"
     tag = "CardFooter"
 
 
 
 
-class Card(ChakraComponent):
+class Card(BaseCard):
     """The parent wrapper that provides context for its children."""
     """The parent wrapper that provides context for its children."""
 
 
     tag = "Card"
     tag = "Card"

+ 83 - 4
reflex/components/chakra/layout/card.pyi

@@ -17,7 +17,86 @@ from reflex.components.chakra import (
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class CardHeader(ChakraComponent):
+class BaseCard(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseCard":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class CardHeader(BaseCard):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -96,7 +175,7 @@ class CardHeader(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class CardBody(ChakraComponent):
+class CardBody(BaseCard):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -175,7 +254,7 @@ class CardBody(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class CardFooter(ChakraComponent):
+class CardFooter(BaseCard):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -254,7 +333,7 @@ class CardFooter(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Card(ChakraComponent):
+class Card(BaseCard):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 4 - 4
reflex/components/chakra/layout/center.py

@@ -1,21 +1,21 @@
 """A box that centers its contents."""
 """A box that centers its contents."""
 
 
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 
 
 
 
-class Center(ChakraComponent):
+class Center(ChakraLayoutComponent):
     """A box that centers its contents."""
     """A box that centers its contents."""
 
 
     tag = "Center"
     tag = "Center"
 
 
 
 
-class Square(ChakraComponent):
+class Square(ChakraLayoutComponent):
     """A centered square container."""
     """A centered square container."""
 
 
     tag = "Square"
     tag = "Square"
 
 
 
 
-class Circle(ChakraComponent):
+class Circle(ChakraLayoutComponent):
     """A square container with round border-radius."""
     """A square container with round border-radius."""
 
 
     tag = "Circle"
     tag = "Circle"

+ 4 - 4
reflex/components/chakra/layout/center.pyi

@@ -7,9 +7,9 @@ from typing import Any, Dict, Literal, Optional, Union, overload
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 
 
-class Center(ChakraComponent):
+class Center(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -88,7 +88,7 @@ class Center(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Square(ChakraComponent):
+class Square(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -167,7 +167,7 @@ class Square(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Circle(ChakraComponent):
+class Circle(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 3 - 2
reflex/components/chakra/layout/container.py

@@ -1,10 +1,11 @@
 """A flexbox container."""
 """A flexbox container."""
 
 
-from reflex.components.chakra import ChakraComponent
+
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Container(ChakraComponent):
+class Container(ChakraLayoutComponent):
     """A flexbox container that centers its children and sets a max width."""
     """A flexbox container that centers its children and sets a max width."""
 
 
     tag = "Container"
     tag = "Container"

+ 2 - 2
reflex/components/chakra/layout/container.pyi

@@ -7,10 +7,10 @@ from typing import Any, Dict, Literal, Optional, Union, overload
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Container(ChakraComponent):
+class Container(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 2 - 2
reflex/components/chakra/layout/flex.py

@@ -2,11 +2,11 @@
 
 
 from typing import List, Union
 from typing import List, Union
 
 
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Flex(ChakraComponent):
+class Flex(ChakraLayoutComponent):
     """A reflexive container component."""
     """A reflexive container component."""
 
 
     tag = "Flex"
     tag = "Flex"

+ 2 - 2
reflex/components/chakra/layout/flex.pyi

@@ -8,10 +8,10 @@ from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
 from typing import List, Union
 from typing import List, Union
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Flex(ChakraComponent):
+class Flex(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 4 - 4
reflex/components/chakra/layout/grid.py

@@ -2,11 +2,11 @@
 
 
 from typing import List
 from typing import List
 
 
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Grid(ChakraComponent):
+class Grid(ChakraLayoutComponent):
     """A grid component."""
     """A grid component."""
 
 
     tag = "Grid"
     tag = "Grid"
@@ -41,7 +41,7 @@ class Grid(ChakraComponent):
     template_rows: Var[str]
     template_rows: Var[str]
 
 
 
 
-class GridItem(ChakraComponent):
+class GridItem(ChakraLayoutComponent):
     """Used as a child of Grid to control the span, and start positions within the grid."""
     """Used as a child of Grid to control the span, and start positions within the grid."""
 
 
     tag = "GridItem"
     tag = "GridItem"
@@ -71,7 +71,7 @@ class GridItem(ChakraComponent):
     row_span: Var[int]
     row_span: Var[int]
 
 
 
 
-class ResponsiveGrid(ChakraComponent):
+class ResponsiveGrid(ChakraLayoutComponent):
     """A responsive grid component."""
     """A responsive grid component."""
 
 
     tag = "SimpleGrid"
     tag = "SimpleGrid"

+ 4 - 4
reflex/components/chakra/layout/grid.pyi

@@ -8,10 +8,10 @@ from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
 from typing import List
 from typing import List
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Grid(ChakraComponent):
+class Grid(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -104,7 +104,7 @@ class Grid(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class GridItem(ChakraComponent):
+class GridItem(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -197,7 +197,7 @@ class GridItem(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ResponsiveGrid(ChakraComponent):
+class ResponsiveGrid(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 3 - 2
reflex/components/chakra/layout/spacer.py

@@ -1,9 +1,10 @@
 """A flexible space component."""
 """A flexible space component."""
 
 
-from reflex.components.chakra import ChakraComponent
 
 
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 
 
-class Spacer(ChakraComponent):
+
+class Spacer(ChakraLayoutComponent):
     """A flexible space component."""
     """A flexible space component."""
 
 
     tag = "Spacer"
     tag = "Spacer"

+ 2 - 2
reflex/components/chakra/layout/spacer.pyi

@@ -7,9 +7,9 @@ from typing import Any, Dict, Literal, Optional, Union, overload
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 
 
-class Spacer(ChakraComponent):
+class Spacer(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 3 - 2
reflex/components/chakra/layout/stack.py

@@ -2,11 +2,12 @@
 
 
 from typing import List, Union
 from typing import List, Union
 
 
-from reflex.components.chakra import ChakraComponent, LiteralStackDirection
+from reflex.components.chakra import LiteralStackDirection
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Stack(ChakraComponent):
+class Stack(ChakraLayoutComponent):
     """Container to stack elements with spacing."""
     """Container to stack elements with spacing."""
 
 
     tag = "Stack"
     tag = "Stack"

+ 3 - 2
reflex/components/chakra/layout/stack.pyi

@@ -8,10 +8,11 @@ from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
 from typing import List, Union
 from typing import List, Union
-from reflex.components.chakra import ChakraComponent, LiteralStackDirection
+from reflex.components.chakra import LiteralStackDirection
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Stack(ChakraComponent):
+class Stack(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 3 - 3
reflex/components/chakra/layout/wrap.py

@@ -1,11 +1,11 @@
 """Container to stack elements with spacing."""
 """Container to stack elements with spacing."""
 
 
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Wrap(ChakraComponent):
+class Wrap(ChakraLayoutComponent):
     """Layout component used to add space between elements and wrap automatically if there isn't enough space."""
     """Layout component used to add space between elements and wrap automatically if there isn't enough space."""
 
 
     tag = "Wrap"
     tag = "Wrap"
@@ -51,7 +51,7 @@ class Wrap(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class WrapItem(ChakraComponent):
+class WrapItem(ChakraLayoutComponent):
     """Item of the Wrap component."""
     """Item of the Wrap component."""
 
 
     tag = "WrapItem"
     tag = "WrapItem"

+ 3 - 3
reflex/components/chakra/layout/wrap.pyi

@@ -7,11 +7,11 @@ from typing import Any, Dict, Literal, Optional, Union, overload
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.vars import Var, BaseVar, ComputedVar
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.event import EventChain, EventHandler, EventSpec
 from reflex.style import Style
 from reflex.style import Style
-from reflex.components.chakra import ChakraComponent
+from reflex.components.chakra.layout.base import ChakraLayoutComponent
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Wrap(ChakraComponent):
+class Wrap(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -103,7 +103,7 @@ class Wrap(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class WrapItem(ChakraComponent):
+class WrapItem(ChakraLayoutComponent):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 9 - 3
reflex/components/chakra/media/avatar.py

@@ -7,7 +7,13 @@ from reflex.components.chakra import ChakraComponent, LiteralAvatarSize
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Avatar(ChakraComponent):
+class BaseAvatar(ChakraComponent):
+    """Base avatar component."""
+
+    library = "@chakra-ui/avatar@2.1.0"
+
+
+class Avatar(BaseAvatar):
     """The image that represents the user."""
     """The image that represents the user."""
 
 
     tag = "Avatar"
     tag = "Avatar"
@@ -48,13 +54,13 @@ class Avatar(ChakraComponent):
         }
         }
 
 
 
 
-class AvatarBadge(ChakraComponent):
+class AvatarBadge(BaseAvatar):
     """A wrapper that displays its content on the right corner of the avatar."""
     """A wrapper that displays its content on the right corner of the avatar."""
 
 
     tag = "AvatarBadge"
     tag = "AvatarBadge"
 
 
 
 
-class AvatarGroup(ChakraComponent):
+class AvatarGroup(BaseAvatar):
     """A wrapper to stack multiple Avatars together."""
     """A wrapper to stack multiple Avatars together."""
 
 
     tag = "AvatarGroup"
     tag = "AvatarGroup"

+ 82 - 3
reflex/components/chakra/media/avatar.pyi

@@ -11,7 +11,86 @@ from typing import Any, Union
 from reflex.components.chakra import ChakraComponent, LiteralAvatarSize
 from reflex.components.chakra import ChakraComponent, LiteralAvatarSize
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Avatar(ChakraComponent):
+class BaseAvatar(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseAvatar":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Avatar(BaseAvatar):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -115,7 +194,7 @@ class Avatar(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AvatarBadge(ChakraComponent):
+class AvatarBadge(BaseAvatar):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -194,7 +273,7 @@ class AvatarBadge(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AvatarGroup(ChakraComponent):
+class AvatarGroup(BaseAvatar):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 3 - 0
reflex/components/chakra/media/image.py

@@ -11,7 +11,10 @@ from reflex.vars import Var
 class Image(ChakraComponent):
 class Image(ChakraComponent):
     """Display an image."""
     """Display an image."""
 
 
+    library = "@chakra-ui/image@2.1.0"
+
     tag = "Image"
     tag = "Image"
+
     alias = "ChakraImage"
     alias = "ChakraImage"
     # How to align the image within its bounds. It maps to css `object-position` property.
     # How to align the image within its bounds. It maps to css `object-position` property.
     align: Var[str]
     align: Var[str]

+ 11 - 3
reflex/components/chakra/navigation/breadcrumb.py

@@ -7,7 +7,13 @@ from reflex.components.core.foreach import Foreach
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Breadcrumb(ChakraComponent):
+class BaseBreadcrumb(ChakraComponent):
+    """The base class for all Chakra breadcrumb components."""
+
+    library = "@chakra-ui/breadcrumb@2.2.0"
+
+
+class Breadcrumb(BaseBreadcrumb):
     """The parent container for breadcrumbs."""
     """The parent container for breadcrumbs."""
 
 
     tag = "Breadcrumb"
     tag = "Breadcrumb"
@@ -48,7 +54,7 @@ class Breadcrumb(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class BreadcrumbItem(ChakraComponent):
+class BreadcrumbItem(BaseBreadcrumb):
     """Individual breadcrumb element containing a link and a divider."""
     """Individual breadcrumb element containing a link and a divider."""
 
 
     tag = "BreadcrumbItem"
     tag = "BreadcrumbItem"
@@ -83,7 +89,7 @@ class BreadcrumbItem(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class BreadcrumbSeparator(ChakraComponent):
+class BreadcrumbSeparator(BaseBreadcrumb):
     """The visual separator between each breadcrumb."""
     """The visual separator between each breadcrumb."""
 
 
     tag = "BreadcrumbSeparator"
     tag = "BreadcrumbSeparator"
@@ -94,5 +100,7 @@ class BreadcrumbLink(Link):
 
 
     tag = "BreadcrumbLink"
     tag = "BreadcrumbLink"
 
 
+    library = "@chakra-ui/breadcrumb@2.2.0"
+
     # Is the current page of the breadcrumb.
     # Is the current page of the breadcrumb.
     is_current_page: Var[bool]
     is_current_page: Var[bool]

+ 82 - 3
reflex/components/chakra/navigation/breadcrumb.pyi

@@ -13,7 +13,86 @@ from reflex.components.component import Component
 from reflex.components.core.foreach import Foreach
 from reflex.components.core.foreach import Foreach
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Breadcrumb(ChakraComponent):
+class BaseBreadcrumb(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseBreadcrumb":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Breadcrumb(BaseBreadcrumb):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -97,7 +176,7 @@ class Breadcrumb(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class BreadcrumbItem(ChakraComponent):
+class BreadcrumbItem(BaseBreadcrumb):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -185,7 +264,7 @@ class BreadcrumbItem(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class BreadcrumbSeparator(ChakraComponent):
+class BreadcrumbSeparator(BaseBreadcrumb):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 15 - 9
reflex/components/chakra/navigation/stepper.py

@@ -7,7 +7,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Stepper(ChakraComponent):
+class BaseStepper(ChakraComponent):
+    """The base class for all Chakra stepper components."""
+
+    library = "@chakra-ui/stepper@2.3.1"
+
+
+class Stepper(BaseStepper):
     """The parent container for a stepper."""
     """The parent container for a stepper."""
 
 
     tag = "Stepper"
     tag = "Stepper"
@@ -55,43 +61,43 @@ class Stepper(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class Step(ChakraComponent):
+class Step(BaseStepper):
     """A component for an individual step in the stepper."""
     """A component for an individual step in the stepper."""
 
 
     tag = "Step"
     tag = "Step"
 
 
 
 
-class StepDescription(ChakraComponent):
+class StepDescription(BaseStepper):
     """The description text for a step component."""
     """The description text for a step component."""
 
 
     tag = "StepDescription"
     tag = "StepDescription"
 
 
 
 
-class StepIcon(ChakraComponent):
+class StepIcon(BaseStepper):
     """The icon displayed in a step indicator component."""
     """The icon displayed in a step indicator component."""
 
 
     tag = "StepIcon"
     tag = "StepIcon"
 
 
 
 
-class StepIndicator(ChakraComponent):
+class StepIndicator(BaseStepper):
     """The component displaying the status of a step."""
     """The component displaying the status of a step."""
 
 
     tag = "StepIndicator"
     tag = "StepIndicator"
 
 
 
 
-class StepNumber(ChakraComponent):
+class StepNumber(BaseStepper):
     """The number of a step displayed in a step indicator component."""
     """The number of a step displayed in a step indicator component."""
 
 
     tag = "StepNumber"
     tag = "StepNumber"
 
 
 
 
-class StepSeparator(ChakraComponent):
+class StepSeparator(BaseStepper):
     """The component separting steps."""
     """The component separting steps."""
 
 
     tag = "StepSeparator"
     tag = "StepSeparator"
 
 
 
 
-class StepStatus(ChakraComponent):
+class StepStatus(BaseStepper):
     """A component that displays a number or icon based on the status of a step."""
     """A component that displays a number or icon based on the status of a step."""
 
 
     # [not working yet]
     # [not working yet]
@@ -107,7 +113,7 @@ class StepStatus(ChakraComponent):
     tag = "StepStatus"
     tag = "StepStatus"
 
 
 
 
-class StepTitle(ChakraComponent):
+class StepTitle(BaseStepper):
     """The title text for a step component."""
     """The title text for a step component."""
 
 
     tag = "StepTitle"
     tag = "StepTitle"

+ 88 - 9
reflex/components/chakra/navigation/stepper.pyi

@@ -12,7 +12,86 @@ from reflex.components.chakra import ChakraComponent, LiteralColorScheme
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Stepper(ChakraComponent):
+class BaseStepper(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseStepper":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Stepper(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -151,7 +230,7 @@ class Stepper(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class Step(ChakraComponent):
+class Step(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -230,7 +309,7 @@ class Step(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepDescription(ChakraComponent):
+class StepDescription(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -309,7 +388,7 @@ class StepDescription(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepIcon(ChakraComponent):
+class StepIcon(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -388,7 +467,7 @@ class StepIcon(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepIndicator(ChakraComponent):
+class StepIndicator(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -467,7 +546,7 @@ class StepIndicator(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepNumber(ChakraComponent):
+class StepNumber(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -546,7 +625,7 @@ class StepNumber(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepSeparator(ChakraComponent):
+class StepSeparator(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -625,7 +704,7 @@ class StepSeparator(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepStatus(ChakraComponent):
+class StepStatus(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -708,7 +787,7 @@ class StepStatus(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class StepTitle(ChakraComponent):
+class StepTitle(BaseStepper):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 13 - 7
reflex/components/chakra/overlay/alertdialog.py

@@ -9,7 +9,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class AlertDialog(ChakraComponent):
+class BaseAlertDialog(ChakraComponent):
+    """The base class for all alert dialog components."""
+
+    library = "@chakra-ui/modal@2.3.1"
+
+
+class AlertDialog(BaseAlertDialog):
     """Provides context and state for the dialog."""
     """Provides context and state for the dialog."""
 
 
     tag = "AlertDialog"
     tag = "AlertDialog"
@@ -119,37 +125,37 @@ class AlertDialog(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class AlertDialogBody(ChakraComponent):
+class AlertDialogBody(BaseAlertDialog):
     """Should contain the description announced by screen readers."""
     """Should contain the description announced by screen readers."""
 
 
     tag = "AlertDialogBody"
     tag = "AlertDialogBody"
 
 
 
 
-class AlertDialogHeader(ChakraComponent):
+class AlertDialogHeader(BaseAlertDialog):
     """Should contain the title announced by screen readers."""
     """Should contain the title announced by screen readers."""
 
 
     tag = "AlertDialogHeader"
     tag = "AlertDialogHeader"
 
 
 
 
-class AlertDialogFooter(ChakraComponent):
+class AlertDialogFooter(BaseAlertDialog):
     """Should contain the events of the dialog."""
     """Should contain the events of the dialog."""
 
 
     tag = "AlertDialogFooter"
     tag = "AlertDialogFooter"
 
 
 
 
-class AlertDialogContent(ChakraComponent):
+class AlertDialogContent(BaseAlertDialog):
     """The wrapper for the alert dialog's content."""
     """The wrapper for the alert dialog's content."""
 
 
     tag = "AlertDialogContent"
     tag = "AlertDialogContent"
 
 
 
 
-class AlertDialogOverlay(ChakraComponent):
+class AlertDialogOverlay(BaseAlertDialog):
     """The dimmed overlay behind the dialog."""
     """The dimmed overlay behind the dialog."""
 
 
     tag = "AlertDialogOverlay"
     tag = "AlertDialogOverlay"
 
 
 
 
-class AlertDialogCloseButton(ChakraComponent):
+class AlertDialogCloseButton(BaseAlertDialog):
     """The button that closes the dialog."""
     """The button that closes the dialog."""
 
 
     tag = "AlertDialogCloseButton"
     tag = "AlertDialogCloseButton"

+ 86 - 7
reflex/components/chakra/overlay/alertdialog.pyi

@@ -13,7 +13,86 @@ from reflex.components.chakra.media.icon import Icon
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class AlertDialog(ChakraComponent):
+class BaseAlertDialog(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseAlertDialog":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class AlertDialog(BaseAlertDialog):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -159,7 +238,7 @@ class AlertDialog(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDialogBody(ChakraComponent):
+class AlertDialogBody(BaseAlertDialog):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -238,7 +317,7 @@ class AlertDialogBody(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDialogHeader(ChakraComponent):
+class AlertDialogHeader(BaseAlertDialog):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -317,7 +396,7 @@ class AlertDialogHeader(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDialogFooter(ChakraComponent):
+class AlertDialogFooter(BaseAlertDialog):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -396,7 +475,7 @@ class AlertDialogFooter(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDialogContent(ChakraComponent):
+class AlertDialogContent(BaseAlertDialog):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -475,7 +554,7 @@ class AlertDialogContent(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDialogOverlay(ChakraComponent):
+class AlertDialogOverlay(BaseAlertDialog):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -554,7 +633,7 @@ class AlertDialogOverlay(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class AlertDialogCloseButton(ChakraComponent):
+class AlertDialogCloseButton(BaseAlertDialog):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 14 - 8
reflex/components/chakra/overlay/menu.py

@@ -14,7 +14,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Menu(ChakraComponent):
+class BaseMenu(ChakraComponent):
+    """The base class for all Chakra menu components."""
+
+    library = "@chakra-ui/menu@2.2.1"
+
+
+class Menu(BaseMenu):
     """The wrapper component provides context, state, and focus management."""
     """The wrapper component provides context, state, and focus management."""
 
 
     tag = "Menu"
     tag = "Menu"
@@ -112,7 +118,7 @@ class Menu(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class MenuButton(ChakraComponent):
+class MenuButton(BaseMenu):
     """The trigger for the menu list. Must be a direct child of Menu."""
     """The trigger for the menu list. Must be a direct child of Menu."""
 
 
     tag = "MenuButton"
     tag = "MenuButton"
@@ -127,7 +133,7 @@ class MenuButton(ChakraComponent):
     as_: Var[str]
     as_: Var[str]
 
 
 
 
-class MenuList(ChakraComponent):
+class MenuList(BaseMenu):
     """The wrapper for the menu items. Must be a direct child of Menu."""
     """The wrapper for the menu items. Must be a direct child of Menu."""
 
 
     tag = "MenuList"
     tag = "MenuList"
@@ -154,7 +160,7 @@ class MenuList(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class MenuItem(ChakraComponent):
+class MenuItem(BaseMenu):
     """The trigger that handles menu selection. Must be a direct child of a MenuList."""
     """The trigger that handles menu selection. Must be a direct child of a MenuList."""
 
 
     tag = "MenuItem"
     tag = "MenuItem"
@@ -175,7 +181,7 @@ class MenuItem(ChakraComponent):
     is_focusable: Var[bool]
     is_focusable: Var[bool]
 
 
 
 
-class MenuItemOption(ChakraComponent):
+class MenuItemOption(BaseMenu):
     """The checkable menu item, to be used with MenuOptionGroup."""
     """The checkable menu item, to be used with MenuOptionGroup."""
 
 
     tag = "MenuItemOption"
     tag = "MenuItemOption"
@@ -205,13 +211,13 @@ class MenuItemOption(ChakraComponent):
     value: Var[str]
     value: Var[str]
 
 
 
 
-class MenuGroup(ChakraComponent):
+class MenuGroup(BaseMenu):
     """A wrapper to group related menu items."""
     """A wrapper to group related menu items."""
 
 
     tag = "MenuGroup"
     tag = "MenuGroup"
 
 
 
 
-class MenuOptionGroup(ChakraComponent):
+class MenuOptionGroup(BaseMenu):
     """A wrapper for checkable menu items (radio and checkbox)."""
     """A wrapper for checkable menu items (radio and checkbox)."""
 
 
     tag = "MenuOptionGroup"
     tag = "MenuOptionGroup"
@@ -223,7 +229,7 @@ class MenuOptionGroup(ChakraComponent):
     value: Var[str]
     value: Var[str]
 
 
 
 
-class MenuDivider(ChakraComponent):
+class MenuDivider(BaseMenu):
     """A visual separator for menu items and groups."""
     """A visual separator for menu items and groups."""
 
 
     tag = "MenuDivider"
     tag = "MenuDivider"

+ 87 - 8
reflex/components/chakra/overlay/menu.pyi

@@ -18,7 +18,86 @@ from reflex.components.chakra.forms.button import Button
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Menu(ChakraComponent):
+class BaseMenu(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseMenu":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Menu(BaseMenu):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -141,7 +220,7 @@ class Menu(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuButton(ChakraComponent):
+class MenuButton(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -224,7 +303,7 @@ class MenuButton(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuList(ChakraComponent):
+class MenuList(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -302,7 +381,7 @@ class MenuList(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuItem(ChakraComponent):
+class MenuItem(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -391,7 +470,7 @@ class MenuItem(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuItemOption(ChakraComponent):
+class MenuItemOption(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -488,7 +567,7 @@ class MenuItemOption(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuGroup(ChakraComponent):
+class MenuGroup(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -567,7 +646,7 @@ class MenuGroup(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuOptionGroup(ChakraComponent):
+class MenuOptionGroup(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -652,7 +731,7 @@ class MenuOptionGroup(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class MenuDivider(ChakraComponent):
+class MenuDivider(BaseMenu):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 13 - 7
reflex/components/chakra/overlay/modal.py

@@ -11,7 +11,13 @@ from reflex.vars import Var
 ModalSizes = Literal["xs", "sm", "md", "lg", "xl", "full"]
 ModalSizes = Literal["xs", "sm", "md", "lg", "xl", "full"]
 
 
 
 
-class Modal(ChakraComponent):
+class BaseModal(ChakraComponent):
+    """The base class for all Chakra modal components."""
+
+    library = "@chakra-ui/modal@2.3.1"
+
+
+class Modal(BaseModal):
     """The wrapper that provides context for its children."""
     """The wrapper that provides context for its children."""
 
 
     tag = "Modal"
     tag = "Modal"
@@ -130,37 +136,37 @@ class Modal(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class ModalOverlay(ChakraComponent):
+class ModalOverlay(BaseModal):
     """The dimmed overlay behind the modal dialog."""
     """The dimmed overlay behind the modal dialog."""
 
 
     tag = "ModalOverlay"
     tag = "ModalOverlay"
 
 
 
 
-class ModalHeader(ChakraComponent):
+class ModalHeader(BaseModal):
     """The header that labels the modal dialog."""
     """The header that labels the modal dialog."""
 
 
     tag = "ModalHeader"
     tag = "ModalHeader"
 
 
 
 
-class ModalFooter(ChakraComponent):
+class ModalFooter(BaseModal):
     """The footer that houses the modal events."""
     """The footer that houses the modal events."""
 
 
     tag = "ModalFooter"
     tag = "ModalFooter"
 
 
 
 
-class ModalContent(ChakraComponent):
+class ModalContent(BaseModal):
     """The container for the modal dialog's content."""
     """The container for the modal dialog's content."""
 
 
     tag = "ModalContent"
     tag = "ModalContent"
 
 
 
 
-class ModalBody(ChakraComponent):
+class ModalBody(BaseModal):
     """The wrapper that houses the modal's main content."""
     """The wrapper that houses the modal's main content."""
 
 
     tag = "ModalBody"
     tag = "ModalBody"
 
 
 
 
-class ModalCloseButton(ChakraComponent):
+class ModalCloseButton(BaseModal):
     """The button that closes the modal."""
     """The button that closes the modal."""
 
 
     tag = "ModalCloseButton"
     tag = "ModalCloseButton"

+ 86 - 7
reflex/components/chakra/overlay/modal.pyi

@@ -15,7 +15,86 @@ from reflex.vars import Var
 
 
 ModalSizes = Literal["xs", "sm", "md", "lg", "xl", "full"]
 ModalSizes = Literal["xs", "sm", "md", "lg", "xl", "full"]
 
 
-class Modal(ChakraComponent):
+class BaseModal(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BaseModal":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Modal(BaseModal):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -146,7 +225,7 @@ class Modal(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ModalOverlay(ChakraComponent):
+class ModalOverlay(BaseModal):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -225,7 +304,7 @@ class ModalOverlay(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ModalHeader(ChakraComponent):
+class ModalHeader(BaseModal):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -304,7 +383,7 @@ class ModalHeader(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ModalFooter(ChakraComponent):
+class ModalFooter(BaseModal):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -383,7 +462,7 @@ class ModalFooter(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ModalContent(ChakraComponent):
+class ModalContent(BaseModal):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -462,7 +541,7 @@ class ModalContent(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ModalBody(ChakraComponent):
+class ModalBody(BaseModal):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -541,7 +620,7 @@ class ModalBody(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class ModalCloseButton(ChakraComponent):
+class ModalCloseButton(BaseModal):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 15 - 9
reflex/components/chakra/overlay/popover.py

@@ -13,7 +13,13 @@ from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
 
 
-class Popover(ChakraComponent):
+class BasePopover(ChakraComponent):
+    """The base class for all Chakra popover components."""
+
+    library = "@chakra-ui/popover@2.2.1"
+
+
+class Popover(BasePopover):
     """The wrapper that provides props, state, and context to its children."""
     """The wrapper that provides props, state, and context to its children."""
 
 
     tag = "Popover"
     tag = "Popover"
@@ -141,49 +147,49 @@ class Popover(ChakraComponent):
         return super().create(*children, **props)
         return super().create(*children, **props)
 
 
 
 
-class PopoverContent(ChakraComponent):
+class PopoverContent(BasePopover):
     """The popover itself."""
     """The popover itself."""
 
 
     tag = "PopoverContent"
     tag = "PopoverContent"
 
 
 
 
-class PopoverHeader(ChakraComponent):
+class PopoverHeader(BasePopover):
     """The header of the popover."""
     """The header of the popover."""
 
 
     tag = "PopoverHeader"
     tag = "PopoverHeader"
 
 
 
 
-class PopoverFooter(ChakraComponent):
+class PopoverFooter(BasePopover):
     """Display a popover footer."""
     """Display a popover footer."""
 
 
     tag = "PopoverFooter"
     tag = "PopoverFooter"
 
 
 
 
-class PopoverBody(ChakraComponent):
+class PopoverBody(BasePopover):
     """The body of the popover."""
     """The body of the popover."""
 
 
     tag = "PopoverBody"
     tag = "PopoverBody"
 
 
 
 
-class PopoverArrow(ChakraComponent):
+class PopoverArrow(BasePopover):
     """A visual arrow that points to the reference (or trigger)."""
     """A visual arrow that points to the reference (or trigger)."""
 
 
     tag = "PopoverArrow"
     tag = "PopoverArrow"
 
 
 
 
-class PopoverCloseButton(ChakraComponent):
+class PopoverCloseButton(BasePopover):
     """A button to close the popover."""
     """A button to close the popover."""
 
 
     tag = "PopoverCloseButton"
     tag = "PopoverCloseButton"
 
 
 
 
-class PopoverAnchor(ChakraComponent):
+class PopoverAnchor(BasePopover):
     """Used to wrap the position-reference element."""
     """Used to wrap the position-reference element."""
 
 
     tag = "PopoverAnchor"
     tag = "PopoverAnchor"
 
 
 
 
-class PopoverTrigger(ChakraComponent):
+class PopoverTrigger(BasePopover):
     """Used to wrap the reference (or trigger) element."""
     """Used to wrap the reference (or trigger) element."""
 
 
     tag = "PopoverTrigger"
     tag = "PopoverTrigger"

+ 88 - 9
reflex/components/chakra/overlay/popover.pyi

@@ -17,7 +17,86 @@ from reflex.components.chakra import (
 from reflex.components.component import Component
 from reflex.components.component import Component
 from reflex.vars import Var
 from reflex.vars import Var
 
 
-class Popover(ChakraComponent):
+class BasePopover(ChakraComponent):
+    @overload
+    @classmethod
+    def create(  # type: ignore
+        cls,
+        *children,
+        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, str]]] = None,
+        on_blur: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_context_menu: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_double_click: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_focus: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_down: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_enter: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_leave: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_move: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_out: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_over: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_mouse_up: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_scroll: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        on_unmount: Optional[
+            Union[EventHandler, EventSpec, list, function, BaseVar]
+        ] = None,
+        **props
+    ) -> "BasePopover":
+        """Create the component.
+
+        Args:
+            *children: The children of the component.
+            style: The style of the component.
+            key: A unique key for the component.
+            id: The id for the component.
+            class_name: The class name for the component.
+            autofocus: Whether the component should take the focus once the page is loaded
+            custom_attrs: custom attribute
+            **props: The props of the component.
+
+        Returns:
+            The component.
+
+        Raises:
+            TypeError: If an invalid child is passed.
+        """
+        ...
+
+class Popover(BasePopover):
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     def get_event_triggers(self) -> dict[str, Union[Var, Any]]: ...
     @overload
     @overload
     @classmethod
     @classmethod
@@ -154,7 +233,7 @@ class Popover(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverContent(ChakraComponent):
+class PopoverContent(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -233,7 +312,7 @@ class PopoverContent(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverHeader(ChakraComponent):
+class PopoverHeader(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -312,7 +391,7 @@ class PopoverHeader(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverFooter(ChakraComponent):
+class PopoverFooter(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -391,7 +470,7 @@ class PopoverFooter(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverBody(ChakraComponent):
+class PopoverBody(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -470,7 +549,7 @@ class PopoverBody(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverArrow(ChakraComponent):
+class PopoverArrow(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -549,7 +628,7 @@ class PopoverArrow(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverCloseButton(ChakraComponent):
+class PopoverCloseButton(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -628,7 +707,7 @@ class PopoverCloseButton(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverAnchor(ChakraComponent):
+class PopoverAnchor(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore
@@ -707,7 +786,7 @@ class PopoverAnchor(ChakraComponent):
         """
         """
         ...
         ...
 
 
-class PopoverTrigger(ChakraComponent):
+class PopoverTrigger(BasePopover):
     @overload
     @overload
     @classmethod
     @classmethod
     def create(  # type: ignore
     def create(  # type: ignore

+ 2 - 0
reflex/components/chakra/overlay/tooltip.py

@@ -10,6 +10,8 @@ from reflex.vars import Var
 class Tooltip(ChakraComponent):
 class Tooltip(ChakraComponent):
     """A tooltip message to appear."""
     """A tooltip message to appear."""
 
 
+    library = "@chakra-ui/tooltip@2.3.1"
+
     tag = "Tooltip"
     tag = "Tooltip"
 
 
     # The padding required to prevent the arrow from reaching the very edge of the popper.
     # The padding required to prevent the arrow from reaching the very edge of the popper.

+ 2 - 0
reflex/components/chakra/typography/heading.py

@@ -8,6 +8,8 @@ from reflex.vars import Var
 class Heading(ChakraComponent):
 class Heading(ChakraComponent):
     """A page heading."""
     """A page heading."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Heading"
     tag = "Heading"
 
 
     # Override the tag. The default tag is `<h2>`.
     # Override the tag. The default tag is `<h2>`.

+ 2 - 0
reflex/components/chakra/typography/highlight.py

@@ -10,6 +10,8 @@ from reflex.vars import Var
 class Highlight(ChakraComponent):
 class Highlight(ChakraComponent):
     """Highlights a specific part of a string."""
     """Highlights a specific part of a string."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Highlight"
     tag = "Highlight"
 
 
     # A query for the text to highlight. Can be a string or a list of strings.
     # A query for the text to highlight. Can be a string or a list of strings.

+ 2 - 0
reflex/components/chakra/typography/span.py

@@ -8,6 +8,8 @@ from reflex.vars import Var
 class Span(ChakraComponent):
 class Span(ChakraComponent):
     """Render an inline span of text."""
     """Render an inline span of text."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Text"
     tag = "Text"
 
 
     # Override the tag. The default tag is `<span>`.
     # Override the tag. The default tag is `<span>`.

+ 2 - 0
reflex/components/chakra/typography/text.py

@@ -8,6 +8,8 @@ from reflex.vars import Var
 class Text(ChakraComponent):
 class Text(ChakraComponent):
     """Render a paragraph of text."""
     """Render a paragraph of text."""
 
 
+    library = "@chakra-ui/layout@2.3.1"
+
     tag = "Text"
     tag = "Text"
 
 
     # Override the tag. The default tag is `<p>`.
     # Override the tag. The default tag is `<p>`.

+ 1 - 1
tests/test_app.py

@@ -1251,7 +1251,7 @@ def test_app_wrap_priority(compilable_app):
         tag = "Fragment2"
         tag = "Fragment2"
 
 
         def _get_app_wrap_components(self) -> dict[tuple[int, str], Component]:
         def _get_app_wrap_components(self) -> dict[tuple[int, str], Component]:
-            return {(50, "Text"): Text.create()}
+            return {(45, "Text"): Text.create()}
 
 
     class Fragment3(Component):
     class Fragment3(Component):
         tag = "Fragment3"
         tag = "Fragment3"