reflex 0.6.2.post1__py3-none-any.whl → 0.6.3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of reflex might be problematic. Click here for more details.

Files changed (178) hide show
  1. reflex/__init__.py +3 -2
  2. reflex/__init__.pyi +3 -1
  3. reflex/components/base/app_wrap.pyi +17 -37
  4. reflex/components/base/body.pyi +17 -37
  5. reflex/components/base/document.pyi +77 -177
  6. reflex/components/base/error_boundary.pyi +18 -38
  7. reflex/components/base/fragment.pyi +17 -37
  8. reflex/components/base/head.pyi +32 -72
  9. reflex/components/base/link.pyi +32 -72
  10. reflex/components/base/meta.pyi +62 -142
  11. reflex/components/base/script.py +4 -4
  12. reflex/components/base/script.pyi +20 -40
  13. reflex/components/component.py +30 -19
  14. reflex/components/core/banner.pyi +77 -177
  15. reflex/components/core/client_side_routing.pyi +32 -72
  16. reflex/components/core/clipboard.py +3 -3
  17. reflex/components/core/clipboard.pyi +18 -38
  18. reflex/components/core/debounce.py +2 -2
  19. reflex/components/core/debounce.pyi +18 -38
  20. reflex/components/core/html.pyi +17 -37
  21. reflex/components/core/upload.py +4 -5
  22. reflex/components/core/upload.pyi +65 -145
  23. reflex/components/datadisplay/code.pyi +32 -72
  24. reflex/components/datadisplay/dataeditor.py +13 -13
  25. reflex/components/datadisplay/dataeditor.pyi +33 -83
  26. reflex/components/dynamic.py +6 -7
  27. reflex/components/el/__init__.pyi +1 -0
  28. reflex/components/el/element.pyi +17 -37
  29. reflex/components/el/elements/base.pyi +17 -37
  30. reflex/components/el/elements/forms.py +29 -14
  31. reflex/components/el/elements/forms.pyi +222 -504
  32. reflex/components/el/elements/inline.pyi +422 -982
  33. reflex/components/el/elements/media.pyi +377 -877
  34. reflex/components/el/elements/metadata.pyi +92 -212
  35. reflex/components/el/elements/other.pyi +107 -247
  36. reflex/components/el/elements/scripts.pyi +47 -107
  37. reflex/components/el/elements/sectioning.pyi +227 -527
  38. reflex/components/el/elements/tables.pyi +152 -352
  39. reflex/components/el/elements/typography.pyi +227 -527
  40. reflex/components/gridjs/datatable.py +2 -2
  41. reflex/components/gridjs/datatable.pyi +32 -72
  42. reflex/components/lucide/icon.pyi +32 -72
  43. reflex/components/markdown/markdown.pyi +16 -36
  44. reflex/components/moment/moment.py +2 -2
  45. reflex/components/moment/moment.pyi +18 -38
  46. reflex/components/next/base.pyi +17 -37
  47. reflex/components/next/image.py +3 -3
  48. reflex/components/next/image.pyi +19 -39
  49. reflex/components/next/link.pyi +17 -37
  50. reflex/components/next/video.pyi +17 -37
  51. reflex/components/plotly/plotly.py +1 -1
  52. reflex/components/plotly/plotly.pyi +35 -87
  53. reflex/components/radix/primitives/accordion.py +14 -2
  54. reflex/components/radix/primitives/accordion.pyi +110 -250
  55. reflex/components/radix/primitives/base.pyi +32 -72
  56. reflex/components/radix/primitives/drawer.py +30 -12
  57. reflex/components/radix/primitives/drawer.pyi +159 -373
  58. reflex/components/radix/primitives/form.py +3 -3
  59. reflex/components/radix/primitives/form.pyi +158 -364
  60. reflex/components/radix/primitives/progress.pyi +77 -177
  61. reflex/components/radix/primitives/slider.py +17 -3
  62. reflex/components/radix/primitives/slider.pyi +81 -183
  63. reflex/components/radix/themes/base.pyi +107 -247
  64. reflex/components/radix/themes/color_mode.pyi +48 -117
  65. reflex/components/radix/themes/components/alert_dialog.py +5 -5
  66. reflex/components/radix/themes/components/alert_dialog.pyi +111 -259
  67. reflex/components/radix/themes/components/aspect_ratio.pyi +17 -37
  68. reflex/components/radix/themes/components/avatar.pyi +17 -37
  69. reflex/components/radix/themes/components/badge.pyi +17 -37
  70. reflex/components/radix/themes/components/button.pyi +17 -37
  71. reflex/components/radix/themes/components/callout.pyi +77 -177
  72. reflex/components/radix/themes/components/card.pyi +17 -37
  73. reflex/components/radix/themes/components/checkbox.py +3 -3
  74. reflex/components/radix/themes/components/checkbox.pyi +50 -110
  75. reflex/components/radix/themes/components/checkbox_cards.pyi +32 -72
  76. reflex/components/radix/themes/components/checkbox_group.pyi +32 -72
  77. reflex/components/radix/themes/components/context_menu.py +11 -11
  78. reflex/components/radix/themes/components/context_menu.pyi +132 -312
  79. reflex/components/radix/themes/components/data_list.pyi +62 -142
  80. reflex/components/radix/themes/components/dialog.py +7 -7
  81. reflex/components/radix/themes/components/dialog.pyi +114 -268
  82. reflex/components/radix/themes/components/dropdown_menu.py +13 -13
  83. reflex/components/radix/themes/components/dropdown_menu.pyi +134 -316
  84. reflex/components/radix/themes/components/hover_card.py +2 -2
  85. reflex/components/radix/themes/components/hover_card.pyi +64 -148
  86. reflex/components/radix/themes/components/icon_button.pyi +17 -37
  87. reflex/components/radix/themes/components/inset.pyi +17 -37
  88. reflex/components/radix/themes/components/popover.py +8 -8
  89. reflex/components/radix/themes/components/popover.pyi +69 -163
  90. reflex/components/radix/themes/components/progress.pyi +17 -37
  91. reflex/components/radix/themes/components/radio.pyi +17 -37
  92. reflex/components/radix/themes/components/radio_cards.py +2 -2
  93. reflex/components/radix/themes/components/radio_cards.pyi +33 -75
  94. reflex/components/radix/themes/components/radio_group.py +4 -4
  95. reflex/components/radix/themes/components/radio_group.pyi +63 -143
  96. reflex/components/radix/themes/components/scroll_area.pyi +17 -37
  97. reflex/components/radix/themes/components/segmented_control.py +14 -2
  98. reflex/components/radix/themes/components/segmented_control.pyi +35 -73
  99. reflex/components/radix/themes/components/select.py +6 -5
  100. reflex/components/radix/themes/components/select.pyi +146 -338
  101. reflex/components/radix/themes/components/separator.pyi +17 -37
  102. reflex/components/radix/themes/components/skeleton.pyi +17 -37
  103. reflex/components/radix/themes/components/slider.py +19 -3
  104. reflex/components/radix/themes/components/slider.pyi +23 -41
  105. reflex/components/radix/themes/components/spinner.pyi +17 -37
  106. reflex/components/radix/themes/components/switch.py +2 -2
  107. reflex/components/radix/themes/components/switch.pyi +18 -38
  108. reflex/components/radix/themes/components/table.pyi +107 -247
  109. reflex/components/radix/themes/components/tabs.py +2 -2
  110. reflex/components/radix/themes/components/tabs.pyi +79 -179
  111. reflex/components/radix/themes/components/text_area.py +0 -16
  112. reflex/components/radix/themes/components/text_area.pyi +20 -42
  113. reflex/components/radix/themes/components/text_field.py +6 -6
  114. reflex/components/radix/themes/components/text_field.pyi +53 -117
  115. reflex/components/radix/themes/components/tooltip.py +4 -4
  116. reflex/components/radix/themes/components/tooltip.pyi +20 -46
  117. reflex/components/radix/themes/layout/base.pyi +17 -37
  118. reflex/components/radix/themes/layout/box.pyi +17 -37
  119. reflex/components/radix/themes/layout/center.pyi +17 -37
  120. reflex/components/radix/themes/layout/container.pyi +17 -37
  121. reflex/components/radix/themes/layout/flex.pyi +17 -37
  122. reflex/components/radix/themes/layout/grid.pyi +17 -37
  123. reflex/components/radix/themes/layout/list.pyi +77 -177
  124. reflex/components/radix/themes/layout/section.pyi +17 -37
  125. reflex/components/radix/themes/layout/spacer.pyi +17 -37
  126. reflex/components/radix/themes/layout/stack.pyi +47 -107
  127. reflex/components/radix/themes/typography/blockquote.pyi +17 -37
  128. reflex/components/radix/themes/typography/code.pyi +17 -37
  129. reflex/components/radix/themes/typography/heading.pyi +17 -37
  130. reflex/components/radix/themes/typography/link.pyi +17 -37
  131. reflex/components/radix/themes/typography/text.pyi +107 -247
  132. reflex/components/react_player/audio.pyi +33 -69
  133. reflex/components/react_player/react_player.py +17 -17
  134. reflex/components/react_player/react_player.pyi +33 -69
  135. reflex/components/react_player/video.pyi +33 -69
  136. reflex/components/recharts/cartesian.py +216 -186
  137. reflex/components/recharts/cartesian.pyi +623 -832
  138. reflex/components/recharts/charts.py +68 -65
  139. reflex/components/recharts/charts.pyi +213 -433
  140. reflex/components/recharts/general.py +27 -21
  141. reflex/components/recharts/general.pyi +94 -189
  142. reflex/components/recharts/polar.py +135 -97
  143. reflex/components/recharts/polar.pyi +219 -229
  144. reflex/components/recharts/recharts.py +5 -1
  145. reflex/components/recharts/recharts.pyi +37 -73
  146. reflex/components/sonner/toast.py +1 -1
  147. reflex/components/sonner/toast.pyi +17 -37
  148. reflex/components/suneditor/editor.pyi +26 -52
  149. reflex/components/tags/iter_tag.py +2 -2
  150. reflex/config.py +16 -0
  151. reflex/constants/__init__.py +2 -0
  152. reflex/constants/compiler.py +25 -0
  153. reflex/constants/installer.py +17 -16
  154. reflex/constants/state.py +11 -0
  155. reflex/constants/style.py +1 -1
  156. reflex/event.py +337 -84
  157. reflex/experimental/layout.pyi +78 -180
  158. reflex/istate/dynamic.py +3 -0
  159. reflex/state.py +197 -118
  160. reflex/style.py +5 -0
  161. reflex/testing.py +8 -5
  162. reflex/utils/compat.py +1 -3
  163. reflex/utils/exceptions.py +8 -0
  164. reflex/utils/path_ops.py +2 -2
  165. reflex/utils/prerequisites.py +2 -2
  166. reflex/utils/pyi_generator.py +44 -4
  167. reflex/utils/registry.py +17 -3
  168. reflex/utils/telemetry.py +1 -3
  169. reflex/utils/types.py +60 -16
  170. reflex/vars/__init__.py +2 -0
  171. reflex/vars/base.py +127 -72
  172. reflex/vars/object.py +5 -1
  173. reflex/vars/sequence.py +15 -3
  174. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/METADATA +3 -3
  175. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/RECORD +178 -176
  176. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/LICENSE +0 -0
  177. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/WHEEL +0 -0
  178. {reflex-0.6.2.post1.dist-info → reflex-0.6.3.dist-info}/entry_points.txt +0 -0
@@ -3,10 +3,10 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
- from typing import Any, Callable, Dict, Optional, Union, overload
6
+ from typing import Any, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.component import NoSSRComponent
9
- from reflex.event import EventHandler, EventSpec
9
+ from reflex.event import EventType
10
10
  from reflex.style import Style
11
11
  from reflex.vars.base import Var
12
12
 
@@ -31,73 +31,37 @@ class ReactPlayer(NoSSRComponent):
31
31
  class_name: Optional[Any] = None,
32
32
  autofocus: Optional[bool] = None,
33
33
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
34
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
35
- on_buffer: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
36
- on_buffer_end: Optional[
37
- Union[EventHandler, EventSpec, list, Callable, Var]
38
- ] = None,
39
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
40
- on_click_preview: Optional[
41
- Union[EventHandler, EventSpec, list, Callable, Var]
42
- ] = None,
43
- on_context_menu: Optional[
44
- Union[EventHandler, EventSpec, list, Callable, Var]
45
- ] = None,
46
- on_disable_pip: Optional[
47
- Union[EventHandler, EventSpec, list, Callable, Var]
48
- ] = None,
49
- on_double_click: Optional[
50
- Union[EventHandler, EventSpec, list, Callable, Var]
51
- ] = None,
52
- on_duration: Optional[
53
- Union[EventHandler, EventSpec, list, Callable, Var]
54
- ] = None,
55
- on_enable_pip: Optional[
56
- Union[EventHandler, EventSpec, list, Callable, Var]
57
- ] = None,
58
- on_ended: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
59
- on_error: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
60
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
61
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
62
- on_mouse_down: Optional[
63
- Union[EventHandler, EventSpec, list, Callable, Var]
64
- ] = None,
65
- on_mouse_enter: Optional[
66
- Union[EventHandler, EventSpec, list, Callable, Var]
67
- ] = None,
68
- on_mouse_leave: Optional[
69
- Union[EventHandler, EventSpec, list, Callable, Var]
70
- ] = None,
71
- on_mouse_move: Optional[
72
- Union[EventHandler, EventSpec, list, Callable, Var]
73
- ] = None,
74
- on_mouse_out: Optional[
75
- Union[EventHandler, EventSpec, list, Callable, Var]
76
- ] = None,
77
- on_mouse_over: Optional[
78
- Union[EventHandler, EventSpec, list, Callable, Var]
79
- ] = None,
80
- on_mouse_up: Optional[
81
- Union[EventHandler, EventSpec, list, Callable, Var]
82
- ] = None,
83
- on_pause: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
84
- on_play: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
85
- on_playback_quality_change: Optional[
86
- Union[EventHandler, EventSpec, list, Callable, Var]
87
- ] = None,
88
- on_playback_rate_change: Optional[
89
- Union[EventHandler, EventSpec, list, Callable, Var]
90
- ] = None,
91
- on_progress: Optional[
92
- Union[EventHandler, EventSpec, list, Callable, Var]
93
- ] = None,
94
- on_ready: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
95
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
96
- on_seek: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
97
- on_start: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
98
- on_unmount: Optional[
99
- Union[EventHandler, EventSpec, list, Callable, Var]
100
- ] = None,
34
+ on_blur: Optional[EventType[[]]] = None,
35
+ on_buffer: Optional[EventType[[]]] = None,
36
+ on_buffer_end: Optional[EventType[[]]] = None,
37
+ on_click: Optional[EventType[[]]] = None,
38
+ on_click_preview: Optional[EventType[[]]] = None,
39
+ on_context_menu: Optional[EventType[[]]] = None,
40
+ on_disable_pip: Optional[EventType[[]]] = None,
41
+ on_double_click: Optional[EventType[[]]] = None,
42
+ on_duration: Optional[EventType] = None,
43
+ on_enable_pip: Optional[EventType[[]]] = None,
44
+ on_ended: Optional[EventType[[]]] = None,
45
+ on_error: Optional[EventType[[]]] = None,
46
+ on_focus: Optional[EventType[[]]] = None,
47
+ on_mount: Optional[EventType[[]]] = None,
48
+ on_mouse_down: Optional[EventType[[]]] = None,
49
+ on_mouse_enter: Optional[EventType[[]]] = None,
50
+ on_mouse_leave: Optional[EventType[[]]] = None,
51
+ on_mouse_move: Optional[EventType[[]]] = None,
52
+ on_mouse_out: Optional[EventType[[]]] = None,
53
+ on_mouse_over: Optional[EventType[[]]] = None,
54
+ on_mouse_up: Optional[EventType[[]]] = None,
55
+ on_pause: Optional[EventType[[]]] = None,
56
+ on_play: Optional[EventType[[]]] = None,
57
+ on_playback_quality_change: Optional[EventType[[]]] = None,
58
+ on_playback_rate_change: Optional[EventType[[]]] = None,
59
+ on_progress: Optional[EventType] = None,
60
+ on_ready: Optional[EventType[[]]] = None,
61
+ on_scroll: Optional[EventType[[]]] = None,
62
+ on_seek: Optional[EventType] = None,
63
+ on_start: Optional[EventType[[]]] = None,
64
+ on_unmount: Optional[EventType[[]]] = None,
101
65
  **props,
102
66
  ) -> "ReactPlayer":
103
67
  """Create the component.
@@ -3,10 +3,10 @@
3
3
  # ------------------- DO NOT EDIT ----------------------
4
4
  # This file was generated by `reflex/utils/pyi_generator.py`!
5
5
  # ------------------------------------------------------
6
- from typing import Any, Callable, Dict, Optional, Union, overload
6
+ from typing import Any, Dict, Optional, Union, overload
7
7
 
8
8
  from reflex.components.react_player.react_player import ReactPlayer
9
- from reflex.event import EventHandler, EventSpec
9
+ from reflex.event import EventType
10
10
  from reflex.style import Style
11
11
  from reflex.vars.base import Var
12
12
 
@@ -33,73 +33,37 @@ class Video(ReactPlayer):
33
33
  class_name: Optional[Any] = None,
34
34
  autofocus: Optional[bool] = None,
35
35
  custom_attrs: Optional[Dict[str, Union[Var, str]]] = None,
36
- on_blur: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
37
- on_buffer: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
38
- on_buffer_end: Optional[
39
- Union[EventHandler, EventSpec, list, Callable, Var]
40
- ] = None,
41
- on_click: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
42
- on_click_preview: Optional[
43
- Union[EventHandler, EventSpec, list, Callable, Var]
44
- ] = None,
45
- on_context_menu: Optional[
46
- Union[EventHandler, EventSpec, list, Callable, Var]
47
- ] = None,
48
- on_disable_pip: Optional[
49
- Union[EventHandler, EventSpec, list, Callable, Var]
50
- ] = None,
51
- on_double_click: Optional[
52
- Union[EventHandler, EventSpec, list, Callable, Var]
53
- ] = None,
54
- on_duration: Optional[
55
- Union[EventHandler, EventSpec, list, Callable, Var]
56
- ] = None,
57
- on_enable_pip: Optional[
58
- Union[EventHandler, EventSpec, list, Callable, Var]
59
- ] = None,
60
- on_ended: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
61
- on_error: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
62
- on_focus: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
63
- on_mount: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
64
- on_mouse_down: Optional[
65
- Union[EventHandler, EventSpec, list, Callable, Var]
66
- ] = None,
67
- on_mouse_enter: Optional[
68
- Union[EventHandler, EventSpec, list, Callable, Var]
69
- ] = None,
70
- on_mouse_leave: Optional[
71
- Union[EventHandler, EventSpec, list, Callable, Var]
72
- ] = None,
73
- on_mouse_move: Optional[
74
- Union[EventHandler, EventSpec, list, Callable, Var]
75
- ] = None,
76
- on_mouse_out: Optional[
77
- Union[EventHandler, EventSpec, list, Callable, Var]
78
- ] = None,
79
- on_mouse_over: Optional[
80
- Union[EventHandler, EventSpec, list, Callable, Var]
81
- ] = None,
82
- on_mouse_up: Optional[
83
- Union[EventHandler, EventSpec, list, Callable, Var]
84
- ] = None,
85
- on_pause: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
86
- on_play: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
87
- on_playback_quality_change: Optional[
88
- Union[EventHandler, EventSpec, list, Callable, Var]
89
- ] = None,
90
- on_playback_rate_change: Optional[
91
- Union[EventHandler, EventSpec, list, Callable, Var]
92
- ] = None,
93
- on_progress: Optional[
94
- Union[EventHandler, EventSpec, list, Callable, Var]
95
- ] = None,
96
- on_ready: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
97
- on_scroll: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
98
- on_seek: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
99
- on_start: Optional[Union[EventHandler, EventSpec, list, Callable, Var]] = None,
100
- on_unmount: Optional[
101
- Union[EventHandler, EventSpec, list, Callable, Var]
102
- ] = None,
36
+ on_blur: Optional[EventType[[]]] = None,
37
+ on_buffer: Optional[EventType[[]]] = None,
38
+ on_buffer_end: Optional[EventType[[]]] = None,
39
+ on_click: Optional[EventType[[]]] = None,
40
+ on_click_preview: Optional[EventType[[]]] = None,
41
+ on_context_menu: Optional[EventType[[]]] = None,
42
+ on_disable_pip: Optional[EventType[[]]] = None,
43
+ on_double_click: Optional[EventType[[]]] = None,
44
+ on_duration: Optional[EventType] = None,
45
+ on_enable_pip: Optional[EventType[[]]] = None,
46
+ on_ended: Optional[EventType[[]]] = None,
47
+ on_error: Optional[EventType[[]]] = None,
48
+ on_focus: Optional[EventType[[]]] = None,
49
+ on_mount: Optional[EventType[[]]] = None,
50
+ on_mouse_down: Optional[EventType[[]]] = None,
51
+ on_mouse_enter: Optional[EventType[[]]] = None,
52
+ on_mouse_leave: Optional[EventType[[]]] = None,
53
+ on_mouse_move: Optional[EventType[[]]] = None,
54
+ on_mouse_out: Optional[EventType[[]]] = None,
55
+ on_mouse_over: Optional[EventType[[]]] = None,
56
+ on_mouse_up: Optional[EventType[[]]] = None,
57
+ on_pause: Optional[EventType[[]]] = None,
58
+ on_play: Optional[EventType[[]]] = None,
59
+ on_playback_quality_change: Optional[EventType[[]]] = None,
60
+ on_playback_rate_change: Optional[EventType[[]]] = None,
61
+ on_progress: Optional[EventType] = None,
62
+ on_ready: Optional[EventType[[]]] = None,
63
+ on_scroll: Optional[EventType[[]]] = None,
64
+ on_seek: Optional[EventType] = None,
65
+ on_start: Optional[EventType[[]]] = None,
66
+ on_unmount: Optional[EventType[[]]] = None,
103
67
  **props,
104
68
  ) -> "Video":
105
69
  """Create the component.