reflex-reactbits 0.1.1__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.
@@ -0,0 +1,2383 @@
1
+ """React Bits - UI components.
2
+
3
+ AUTO-GENERATED by scripts/generate_wrappers.py - do not edit by hand.
4
+ """
5
+
6
+ # ruff: noqa: E501
7
+ from __future__ import annotations
8
+
9
+ from typing import Any, Literal
10
+
11
+ import reflex as rx
12
+ from reflex.event import no_args_event_spec
13
+ from reflex_base.components.component import field
14
+
15
+ from .base import ReactBitsComponent, safe
16
+
17
+ __all__ = ['AccordionGallery', 'AnimatedList', 'BorderGlow', 'BounceCards', 'BubbleMenu', 'CardNav', 'CardSwap', 'CardSwapCard', 'Carousel', 'ChromaGrid', 'CircularGallery', 'Counter', 'CurvedInput', 'DecayCard', 'DepthCarousel', 'Dock', 'DomeGallery', 'DriftWall', 'ElasticSlider', 'FlowingMenu', 'FluidGlass', 'FlyingPosters', 'Folder', 'GlassIcons', 'GlassSurface', 'GooeyNav', 'InfiniteMenu', 'InfiniteSpiral', 'Lanyard', 'LineSidebar', 'MagicBento', 'Masonry', 'ModelViewer', 'MorphSlider', 'OptionWheel', 'PillNav', 'PixelCard', 'ProfileCard', 'ReflectiveCard', 'ScrollStack', 'ScrollStackItem', 'SpecularButton', 'SpotlightCard', 'Stack', 'StaggeredMenu', 'Step', 'Stepper', 'TiltedCard', 'accordion_gallery', 'animated_list', 'border_glow', 'bounce_cards', 'bubble_menu', 'card_nav', 'card_swap', 'card_swap_card', 'carousel', 'chroma_grid', 'circular_gallery', 'counter', 'curved_input', 'decay_card', 'depth_carousel', 'dock', 'dome_gallery', 'drift_wall', 'elastic_slider', 'flowing_menu', 'fluid_glass', 'flying_posters', 'folder', 'glass_icons', 'glass_surface', 'gooey_nav', 'infinite_menu', 'infinite_spiral', 'lanyard', 'line_sidebar', 'magic_bento', 'masonry', 'model_viewer', 'morph_slider', 'option_wheel', 'pill_nav', 'pixel_card', 'profile_card', 'reflective_card', 'scroll_stack', 'scroll_stack_item', 'specular_button', 'spotlight_card', 'stack', 'staggered_menu', 'step', 'stepper', 'tilted_card']
18
+
19
+
20
+ class AccordionGallery(ReactBitsComponent):
21
+ """Panels expand on hover or focus, revealing parallax imagery and captions.
22
+
23
+ Docs: https://reactbits.dev/components/accordion-gallery
24
+ """
25
+
26
+ tag = "AccordionGallery"
27
+ alias = "ReactBitsAccordionGallery"
28
+ is_default = True
29
+ _rb_category = "Components"
30
+ _rb_name = "AccordionGallery"
31
+ _rb_files = ('AccordionGallery.css', 'AccordionGallery.jsx')
32
+ lib_dependencies: list[str] = ['gsap@3.13.0']
33
+
34
+ items: rx.Var[list[Any]] = field(
35
+ doc="The panels to render. Each needs an image, and optionally a label, link and alt text. Default: DEFAULT_ITEMS."
36
+ )
37
+ default_index: rx.Var[int | float] = field(
38
+ doc="Index of the panel that is expanded on load, so the gallery never looks dead. Default: 2."
39
+ )
40
+ accent_color: rx.Var[str] = field(
41
+ doc="Colour of the caption accent bar and the focus ring. Default: '#ffffff'."
42
+ )
43
+ overlay_color: rx.Var[str] = field(
44
+ doc="Colour used for the bottom legibility gradient and the dimming of collapsed panels. Default: '#060010'."
45
+ )
46
+ text_color: rx.Var[str] = field(
47
+ doc="Colour of the caption text. Default: '#ffffff'."
48
+ )
49
+ height: rx.Var[int | float] = field(
50
+ doc="Height of the row in pixels (width of the column when vertical). Default: 460."
51
+ )
52
+ gap: rx.Var[int | float] = field(
53
+ doc="Gap between panels in pixels. Default: 10."
54
+ )
55
+ radius: rx.Var[int | float] = field(
56
+ doc="Corner radius of each panel in pixels. Default: 16."
57
+ )
58
+ expand_ratio: rx.Var[int | float] = field(
59
+ doc="Fraction of the row the expanded panel occupies (0.2 \u2013 0.9). Default: 0.52."
60
+ )
61
+ orientation: rx.Var[Literal["horizontal", "vertical"]] = field(
62
+ doc="Lay the accordion out as a row or a column. Default: 'horizontal'."
63
+ )
64
+ duration: rx.Var[int | float] = field(
65
+ doc="Duration of the expand / collapse transition in seconds. Default: 0.6."
66
+ )
67
+ ease: rx.Var[str] = field(
68
+ doc="GSAP easing used for every transition. Default: 'power3.out'."
69
+ )
70
+ parallax: rx.Var[int | float] = field(
71
+ doc="Strength of the internal image drift as panels resize (0 disables it). Default: 0.5."
72
+ )
73
+ tilt: rx.Var[int | float] = field(
74
+ doc="Degrees of 3D rotation applied to collapsed panels, easing to flat on the open one. Default: 8."
75
+ )
76
+ stagger: rx.Var[int | float] = field(
77
+ doc="Delay between the caption bar and text reveal, in seconds. Default: 0.06."
78
+ )
79
+ trigger: rx.Var[Literal["hover", "click"]] = field(
80
+ doc="How a panel expands on pointer devices. Focus and tap always expand too. Default: 'hover'."
81
+ )
82
+ show_labels: rx.Var[bool] = field(
83
+ doc="Whether captions reveal on the expanded panel. Default: true."
84
+ )
85
+ grayscale: rx.Var[bool] = field(
86
+ doc="Desaturate collapsed panels and restore full colour on the expanded one. Default: true."
87
+ )
88
+
89
+
90
+ class AnimatedList(ReactBitsComponent):
91
+ """List items enter with staggered motion variants for polished reveals.
92
+
93
+ Docs: https://reactbits.dev/components/animated-list
94
+ """
95
+
96
+ tag = "AnimatedList"
97
+ alias = "ReactBitsAnimatedList"
98
+ is_default = True
99
+ _rb_category = "Components"
100
+ _rb_name = "AnimatedList"
101
+ _rb_files = ('AnimatedList.css', 'AnimatedList.jsx')
102
+ lib_dependencies: list[str] = ['motion@12.23.21']
103
+
104
+ items: rx.Var[list[str]] = field(
105
+ doc="An array of items to display in the scrollable list. Default: [ 'Item 1', 'Item 2', 'Item 3', 'Item 4', 'Item 5', 'Item...."
106
+ )
107
+ show_gradients: rx.Var[bool] = field(
108
+ doc="Toggle to display the top and bottom gradient overlays. Default: true."
109
+ )
110
+ enable_arrow_navigation: rx.Var[bool] = field(
111
+ doc="Toggle to enable keyboard navigation via arrow and tab keys. Default: true."
112
+ )
113
+ item_class_name: rx.Var[str] = field(
114
+ doc="Additional CSS class names for each list item."
115
+ )
116
+ display_scrollbar: rx.Var[bool] = field(
117
+ doc="Toggle to display or hide the custom scrollbar. Default: true."
118
+ )
119
+ initial_selected_index: rx.Var[int | float] = field(
120
+ doc="Initial index of the selected item. Set to -1 for no selection. Default: -1."
121
+ )
122
+ on_item_select: rx.EventHandler[lambda item, index: [safe(item), safe(index)]] = field(
123
+ doc="Callback function triggered when an item is selected. Receives the selected item and its index. Handler receives: item, index."
124
+ )
125
+
126
+
127
+ class BorderGlow(ReactBitsComponent):
128
+ """Glowing mesh-gradient border that follows cursor direction and intensifies near edges.
129
+
130
+ Docs: https://reactbits.dev/components/border-glow
131
+ """
132
+
133
+ tag = "BorderGlow"
134
+ alias = "ReactBitsBorderGlow"
135
+ is_default = True
136
+ _rb_category = "Components"
137
+ _rb_name = "BorderGlow"
138
+ _rb_files = ('BorderGlow.css', 'BorderGlow.jsx')
139
+
140
+ edge_sensitivity: rx.Var[int | float] = field(
141
+ doc="How close the pointer must be to the edge for the glow to appear (0-100). Default: 30."
142
+ )
143
+ glow_color: rx.Var[str] = field(
144
+ doc="HSL values for the glow color, as \"H S L\" (e.g. \"40 80 80\"). Default: '40 80 80'."
145
+ )
146
+ background_color: rx.Var[str] = field(
147
+ doc="Background color of the card. Default: '#120F17'."
148
+ )
149
+ border_radius: rx.Var[int | float] = field(
150
+ doc="Corner radius of the card in pixels. Default: 28."
151
+ )
152
+ glow_radius: rx.Var[int | float] = field(
153
+ doc="How far the outer glow extends beyond the card in pixels. Default: 40."
154
+ )
155
+ glow_intensity: rx.Var[int | float] = field(
156
+ doc="Multiplier for glow opacity (0.1-3.0). Default: 1.0."
157
+ )
158
+ cone_spread: rx.Var[int | float] = field(
159
+ doc="Width of the directional cone mask as a percentage (5-45). Default: 25."
160
+ )
161
+ animated: rx.Var[bool] = field(
162
+ doc="Play an intro sweep animation on mount. Default: false."
163
+ )
164
+ colors: rx.Var[list[str]] = field(
165
+ doc="Array of 3 hex colors for the mesh gradient border, distributed across positions. Default: ['#c084fc', '#f472b6', '#38bdf8']."
166
+ )
167
+ fill_opacity: rx.Var[int | float] = field(
168
+ doc="The `fillOpacity` prop. Default: 0.5."
169
+ )
170
+
171
+
172
+ class BounceCards(ReactBitsComponent):
173
+ """Cards bounce that bounce in on mount.
174
+
175
+ Docs: https://reactbits.dev/components/bounce-cards
176
+ """
177
+
178
+ tag = "BounceCards"
179
+ alias = "ReactBitsBounceCards"
180
+ is_default = True
181
+ _rb_category = "Components"
182
+ _rb_name = "BounceCards"
183
+ _rb_files = ('BounceCards.css', 'BounceCards.jsx')
184
+ lib_dependencies: list[str] = ['gsap@3.13.0']
185
+
186
+ images: rx.Var[list[str]] = field(
187
+ doc="Array of image URLs to display. Default: []."
188
+ )
189
+ container_width: rx.Var[int | float] = field(
190
+ doc="Width of the container (px). Default: 400."
191
+ )
192
+ container_height: rx.Var[int | float] = field(
193
+ doc="Height of the container (px). Default: 400."
194
+ )
195
+ animation_delay: rx.Var[int | float] = field(
196
+ doc="Delay (in seconds) before the animation starts. Default: 0.5."
197
+ )
198
+ animation_stagger: rx.Var[int | float] = field(
199
+ doc="Time (in seconds) between each card's animation. Default: 0.06."
200
+ )
201
+ ease_type: rx.Var[str] = field(
202
+ doc="Easing function for the bounce. Default: 'elastic.out(1, 0.8)'."
203
+ )
204
+ transform_styles: rx.Var[list[str]] = field(
205
+ doc="Custom transforms for each card position. Default: [ 'rotate(10deg) translate(-170px)', 'rotate(5deg) transl...."
206
+ )
207
+ enable_hover: rx.Var[bool] = field(
208
+ doc="If true, hovering pushes siblings aside and flattens the hovered card's rotation. Default: false."
209
+ )
210
+
211
+
212
+ class BubbleMenu(ReactBitsComponent):
213
+ """Floating circular expanding menu with staggered item reveal.
214
+
215
+ Docs: https://reactbits.dev/components/bubble-menu
216
+ """
217
+
218
+ tag = "BubbleMenu"
219
+ alias = "ReactBitsBubbleMenu"
220
+ is_default = True
221
+ _rb_category = "Components"
222
+ _rb_name = "BubbleMenu"
223
+ _rb_files = ('BubbleMenu.css', 'BubbleMenu.jsx')
224
+ lib_dependencies: list[str] = ['gsap@3.13.0']
225
+
226
+ logo: rx.Var[rx.Component | str] = field(
227
+ doc="Logo content shown in the central bubble (string src or JSX). Default: \u2014."
228
+ )
229
+ menu_aria_label: rx.Var[str] = field(
230
+ doc="Accessible aria-label for the toggle button. Default: 'Toggle menu'."
231
+ )
232
+ menu_bg: rx.Var[str] = field(
233
+ doc="Background color for the logo & toggle bubbles and base pill background. Default: '#fff'."
234
+ )
235
+ menu_content_color: rx.Var[str] = field(
236
+ doc="Color for the menu icon lines and default pill text. Default: '#111'."
237
+ )
238
+ use_fixed_position: rx.Var[bool] = field(
239
+ doc="If true positions the menu with fixed instead of absolute (follows viewport). Default: false."
240
+ )
241
+ items: rx.Var[list[Any]] = field(
242
+ doc="Custom menu items; each = { label, href, ariaLabel?, rotation?, hoverStyles?: { bgColor?, textColor? } }. Default: DEFAULT_ITEMS."
243
+ )
244
+ animation_ease: rx.Var[str] = field(
245
+ doc="GSAP ease string used for bubble scale-in animation. Default: 'back.out(1.5)'."
246
+ )
247
+ animation_duration: rx.Var[int | float] = field(
248
+ doc="Duration (s) for each bubble & label animation. Default: 0.5."
249
+ )
250
+ stagger_delay: rx.Var[int | float] = field(
251
+ doc="Base stagger (s) between bubble animations (with slight random variance). Default: 0.12."
252
+ )
253
+ on_menu_click: rx.EventHandler[lambda open: [safe(open)]] = field(
254
+ doc="Callback fired whenever the menu toggle changes; receives open state. Handler receives: open."
255
+ )
256
+
257
+
258
+ class CardNav(ReactBitsComponent):
259
+ """Expandable navigation bar with card panels revealing nested links.
260
+
261
+ Docs: https://reactbits.dev/components/card-nav
262
+ """
263
+
264
+ tag = "CardNav"
265
+ alias = "ReactBitsCardNav"
266
+ is_default = True
267
+ _rb_category = "Components"
268
+ _rb_name = "CardNav"
269
+ _rb_files = ('CardNav.css', 'CardNav.jsx')
270
+ lib_dependencies: list[str] = ['gsap@3.13.0', 'react-icons@5.5.0']
271
+
272
+ logo: rx.Var[str] = field(
273
+ doc="URL for the logo image. Default: -."
274
+ )
275
+ logo_alt: rx.Var[str] = field(
276
+ doc="Alt text for the logo image. Default: 'Logo'."
277
+ )
278
+ items: rx.Var[list[Any]] = field(
279
+ doc="Array of navigation items with label, bgColor, textColor, and links. Default: -."
280
+ )
281
+ ease: rx.Var[str] = field(
282
+ doc="GSAP easing function for animations. Default: 'power3.out'."
283
+ )
284
+ base_color: rx.Var[str] = field(
285
+ doc="Background color for the navigation container. Default: '#fff'."
286
+ )
287
+ menu_color: rx.Var[str] = field(
288
+ doc="Color for the hamburger menu lines."
289
+ )
290
+ button_bg_color: rx.Var[str] = field(
291
+ doc="Background color for the CTA button. Default: #111."
292
+ )
293
+ button_text_color: rx.Var[str] = field(
294
+ doc="Text color for the CTA button. Default: white."
295
+ )
296
+
297
+
298
+ class CardSwap(ReactBitsComponent):
299
+ """Cards animate position swapping with smooth layout transitions.
300
+
301
+ Docs: https://reactbits.dev/components/card-swap
302
+ """
303
+
304
+ tag = "CardSwap"
305
+ alias = "ReactBitsCardSwap"
306
+ is_default = True
307
+ _rb_category = "Components"
308
+ _rb_name = "CardSwap"
309
+ _rb_files = ('CardSwap.css', 'CardSwap.jsx')
310
+ lib_dependencies: list[str] = ['gsap@3.13.0']
311
+
312
+ width: rx.Var[int | float | str] = field(
313
+ doc="Width of the card container. Default: 500."
314
+ )
315
+ height: rx.Var[int | float | str] = field(
316
+ doc="Height of the card container. Default: 400."
317
+ )
318
+ card_distance: rx.Var[int | float] = field(
319
+ doc="X-axis spacing between cards. Default: 60."
320
+ )
321
+ vertical_distance: rx.Var[int | float] = field(
322
+ doc="Y-axis spacing between cards. Default: 70."
323
+ )
324
+ delay: rx.Var[int | float] = field(
325
+ doc="Milliseconds between card swaps. Default: 5000."
326
+ )
327
+ pause_on_hover: rx.Var[bool] = field(
328
+ doc="Whether to pause animation on hover. Default: false."
329
+ )
330
+ skew_amount: rx.Var[int | float] = field(
331
+ doc="Degree of slope for top/bottom edges. Default: 6."
332
+ )
333
+ easing: rx.Var[Literal["linear", "elastic"]] = field(
334
+ doc="Animation easing type. Default: 'elastic'."
335
+ )
336
+ on_card_click: rx.EventHandler[lambda idx: [safe(idx)]] = field(
337
+ doc="Callback function when a card is clicked Handler receives: idx."
338
+ )
339
+
340
+
341
+ class CardSwapCard(ReactBitsComponent):
342
+ """A card inside a CardSwap."""
343
+
344
+ tag = "Card"
345
+ alias = "ReactBitsCardSwapCard"
346
+ is_default = False
347
+ _rb_category = "Components"
348
+ _rb_name = "CardSwap"
349
+ _rb_files = ('CardSwap.css', 'CardSwap.jsx')
350
+ lib_dependencies: list[str] = ['gsap@3.13.0']
351
+
352
+ custom_class: rx.Var[str] = field(doc="Extra class name for the card.")
353
+
354
+
355
+ class Carousel(ReactBitsComponent):
356
+ """Responsive carousel with touch gestures, looping and transitions.
357
+
358
+ Docs: https://reactbits.dev/components/carousel
359
+ """
360
+
361
+ tag = "Carousel"
362
+ alias = "ReactBitsCarousel"
363
+ is_default = True
364
+ _rb_category = "Components"
365
+ _rb_name = "Carousel"
366
+ _rb_files = ('Carousel.css', 'Carousel.jsx')
367
+ lib_dependencies: list[str] = ['motion@12.23.21', 'react-icons@5.5.0']
368
+
369
+ items: rx.Var[list[Any]] = field(
370
+ doc="An array of carousel items. Each item must include title, description, id, and icon. Default: DEFAULT_ITEMS."
371
+ )
372
+ base_width: rx.Var[int | float] = field(
373
+ doc="Total width (in px) of the carousel container. Effective item width is baseWidth minus padding. Default: 300."
374
+ )
375
+ autoplay: rx.Var[bool] = field(
376
+ doc="Enables automatic scrolling to the next item at a fixed interval. Default: false."
377
+ )
378
+ autoplay_delay: rx.Var[int | float] = field(
379
+ doc="Delay in milliseconds between automatic scrolls when autoplay is enabled. Default: 3000."
380
+ )
381
+ pause_on_hover: rx.Var[bool] = field(
382
+ doc="Pauses the autoplay functionality when the carousel is hovered. Default: false."
383
+ )
384
+ loop: rx.Var[bool] = field(
385
+ doc="When true, the carousel loops seamlessly from the last item back to the first. Default: false."
386
+ )
387
+ round: rx.Var[bool] = field(
388
+ doc="When true, the carousel is rendered with a 1:1 aspect ratio and circular container/items. Default: false."
389
+ )
390
+
391
+
392
+ class ChromaGrid(ReactBitsComponent):
393
+ """A responsive grid of grayscale tiles. Hovering the grid reaveals their colors.
394
+
395
+ Docs: https://reactbits.dev/components/chroma-grid
396
+ """
397
+
398
+ tag = "ChromaGrid"
399
+ alias = "ReactBitsChromaGrid"
400
+ is_default = True
401
+ _rb_category = "Components"
402
+ _rb_name = "ChromaGrid"
403
+ _rb_files = ('ChromaGrid.css', 'ChromaGrid.jsx')
404
+ lib_dependencies: list[str] = ['gsap@3.13.0']
405
+
406
+ items: rx.Var[list[Any]] = field(
407
+ doc="Array of ChromaItem objects to display in the grid. Default: Demo []."
408
+ )
409
+ radius: rx.Var[int | float] = field(
410
+ doc="Size of the spotlight effect in pixels. Default: 300."
411
+ )
412
+ columns: rx.Var[int | float] = field(
413
+ doc="The `columns` prop. Default: 3."
414
+ )
415
+ rows: rx.Var[int | float] = field(
416
+ doc="The `rows` prop. Default: 2."
417
+ )
418
+ damping: rx.Var[int | float] = field(
419
+ doc="Cursor follow animation duration in seconds. Default: 0.45."
420
+ )
421
+ fade_out: rx.Var[int | float] = field(
422
+ doc="Fade-out animation duration in seconds when mouse leaves. Default: 0.6."
423
+ )
424
+ ease: rx.Var[str] = field(
425
+ doc="GSAP easing function for animations. Default: 'power3.out'."
426
+ )
427
+
428
+
429
+ class CircularGallery(ReactBitsComponent):
430
+ """Circular orbit gallery rotating images.
431
+
432
+ Docs: https://reactbits.dev/components/circular-gallery
433
+ """
434
+
435
+ tag = "CircularGallery"
436
+ alias = "ReactBitsCircularGallery"
437
+ is_default = True
438
+ _rb_category = "Components"
439
+ _rb_name = "CircularGallery"
440
+ _rb_files = ('CircularGallery.css', 'CircularGallery.jsx')
441
+ lib_dependencies: list[str] = ['ogl@1.0.11']
442
+
443
+ items: rx.Var[list[Any]] = field(
444
+ doc="List of items to display in the gallery. Each item should have an image URL and a text label."
445
+ )
446
+ bend: rx.Var[int | float] = field(
447
+ doc="Determines the curvature of the gallery layout. A negative value bends in one direction, a positive value in the opposite. Default: 3."
448
+ )
449
+ text_color: rx.Var[str] = field(
450
+ doc="Specifies the color of the text labels. Default: '#ffffff'."
451
+ )
452
+ border_radius: rx.Var[int | float] = field(
453
+ doc="Sets the border radius for the media items to achieve rounded corners. Default: 0.05."
454
+ )
455
+ font: rx.Var[str] = field(
456
+ doc="CSS font shorthand (style, weight, size, family) used for the text labels below each card. Default: 'bold 30px Figtree'."
457
+ )
458
+ font_url: rx.Var[str] = field(
459
+ doc="URL of a font to load for the labels. Accepts a stylesheet URL (e.g. a Google Fonts link) or a direct font file (.woff2, .woff, .ttf, .otf). The loaded family overrides the family in `font`."
460
+ )
461
+ scroll_speed: rx.Var[int | float] = field(
462
+ doc="Controls how much the gallery moves per scroll event. Lower values result in slower scrolling, higher values in faster scrolling. Default: 2."
463
+ )
464
+ scroll_ease: rx.Var[int | float] = field(
465
+ doc="Controls the smoothness of scroll transitions. Lower values create smoother, more fluid motion, while higher values make it more responsive. Default: 0.05."
466
+ )
467
+
468
+
469
+ class Counter(ReactBitsComponent):
470
+ """Flexible animated counter supporting increments + easing.
471
+
472
+ Docs: https://reactbits.dev/components/counter
473
+ """
474
+
475
+ tag = "Counter"
476
+ alias = "ReactBitsCounter"
477
+ is_default = True
478
+ _rb_category = "Components"
479
+ _rb_name = "Counter"
480
+ _rb_files = ('Counter.css', 'Counter.jsx')
481
+ lib_dependencies: list[str] = ['motion@12.23.21']
482
+
483
+ value: rx.Var[int | float] = field(
484
+ doc="The numeric value to display in the counter. Default: N/A (required)."
485
+ )
486
+ font_size: rx.Var[int | float] = field(
487
+ doc="The base font size used for the counter digits. Default: 100."
488
+ )
489
+ padding: rx.Var[int | float] = field(
490
+ doc="Additional padding added to the digit height. Default: 0."
491
+ )
492
+ places: rx.Var[list[int | float]] = field(
493
+ doc="Defines which digit positions to display. Include whole number and decimal place values (use \".\" for the decimal point). If omitted, place values will be detected automatically. Default: [...value.toString()].map((ch, i, a) => { ch == '.'; if (...."
494
+ )
495
+ gap: rx.Var[int | float] = field(
496
+ doc="The gap (in pixels) between each digit. Default: 8."
497
+ )
498
+ border_radius: rx.Var[int | float] = field(
499
+ doc="The border radius (in pixels) for the counter container. Default: 4."
500
+ )
501
+ horizontal_padding: rx.Var[int | float] = field(
502
+ doc="The horizontal padding (in pixels) for the counter container. Default: 8."
503
+ )
504
+ text_color: rx.Var[str] = field(
505
+ doc="The text color for the counter digits. Default: 'inherit'."
506
+ )
507
+ font_weight: rx.Var[int | float | str] = field(
508
+ doc="The font weight of the counter digits. Default: 'inherit'."
509
+ )
510
+ container_style: rx.Var[dict[str, Any]] = field(
511
+ doc="Custom inline styles for the outer container. Default: {}."
512
+ )
513
+ counter_style: rx.Var[dict[str, Any]] = field(
514
+ doc="Custom inline styles for the counter element. Default: {}."
515
+ )
516
+ digit_style: rx.Var[dict[str, Any]] = field(
517
+ doc="Custom inline styles for each digit container. Default: {}."
518
+ )
519
+ gradient_height: rx.Var[int | float] = field(
520
+ doc="The height (in pixels) of the gradient overlays. Default: 16."
521
+ )
522
+ gradient_from: rx.Var[str] = field(
523
+ doc="The starting color for the gradient overlays. Default: 'black'."
524
+ )
525
+ gradient_to: rx.Var[str] = field(
526
+ doc="The ending color for the gradient overlays. Default: 'transparent'."
527
+ )
528
+ top_gradient_style: rx.Var[dict[str, Any]] = field(
529
+ doc="Custom inline styles for the top gradient overlay."
530
+ )
531
+ bottom_gradient_style: rx.Var[dict[str, Any]] = field(
532
+ doc="Custom inline styles for the bottom gradient overlay."
533
+ )
534
+
535
+
536
+ class CurvedInput(ReactBitsComponent):
537
+ """Arc-bent input bar with text, caret and submit button all following the curve.
538
+
539
+ Docs: https://reactbits.dev/components/curved-input
540
+ """
541
+
542
+ tag = "CurvedInput"
543
+ alias = "ReactBitsCurvedInput"
544
+ is_default = True
545
+ _rb_category = "Components"
546
+ _rb_name = "CurvedInput"
547
+ _rb_files = ('CurvedInput.css', 'CurvedInput.jsx')
548
+
549
+ value: rx.Var[str] = field(
550
+ doc="Controlled value; leave undefined for uncontrolled usage."
551
+ )
552
+ default_value: rx.Var[str] = field(
553
+ doc="Initial value when the input is uncontrolled."
554
+ )
555
+ placeholder: rx.Var[str] = field(
556
+ doc="Placeholder text rendered along the curve when empty. Default: 'Enter your email'."
557
+ )
558
+ button_text: rx.Var[str] = field(
559
+ doc="Label of the curved submit button. Default: 'Get Started'."
560
+ )
561
+ type: rx.Var[str] = field(
562
+ doc="Semantic input type; email/number map to the matching mobile keyboard. Default: 'email'."
563
+ )
564
+ name: rx.Var[str] = field(
565
+ doc="Name attribute forwarded to the underlying input."
566
+ )
567
+ aria_label: rx.Var[str] = field(
568
+ doc="Accessible label; falls back to the placeholder."
569
+ )
570
+ theme: rx.Var[Literal["dark", "light"]] = field(
571
+ doc="Color preset; any explicit color prop overrides its theme value. Default: 'dark'."
572
+ )
573
+ width: rx.Var[int | float | str] = field(
574
+ doc="Width of the input bar (pixels or any CSS width value, e.g. \"100%\"). Default: 450."
575
+ )
576
+ bend: rx.Var[int | float] = field(
577
+ doc="How many pixels the center of the bar arches above its ends; negative bends downward, 0 is flat. Default: 28."
578
+ )
579
+ height: rx.Var[int | float] = field(
580
+ doc="Thickness of the input bar in pixels. Default: 64."
581
+ )
582
+ corner_radius: rx.Var[int | float] = field(
583
+ doc="Corner rounding of the bar; the button rounds proportionally. Default: 18."
584
+ )
585
+ border_width: rx.Var[int | float] = field(
586
+ doc="Outline stroke width in pixels. Default: 1.5."
587
+ )
588
+ font_size: rx.Var[int | float] = field(
589
+ doc="Font size of the curved text and button label. Default: 16."
590
+ )
591
+ background_color: rx.Var[str] = field(
592
+ doc="Fill color of the input bar; overrides the theme."
593
+ )
594
+ text_color: rx.Var[str] = field(
595
+ doc="Color of the typed text and caret; overrides the theme."
596
+ )
597
+ placeholder_color: rx.Var[str] = field(
598
+ doc="Color of the placeholder text; overrides the theme."
599
+ )
600
+ border_color: rx.Var[str] = field(
601
+ doc="Color of the outline stroke; overrides the theme."
602
+ )
603
+ button_color: rx.Var[str] = field(
604
+ doc="Fill of the submit button, the focus ring and the default icon chip; overrides the theme."
605
+ )
606
+ button_text_color: rx.Var[str] = field(
607
+ doc="Color of the button label; overrides the theme."
608
+ )
609
+ icon_color: rx.Var[str] = field(
610
+ doc="Fill of the icon chip; defaults to the button color."
611
+ )
612
+ shadow_size: rx.Var[Literal["none", "sm", "md", "lg"]] = field(
613
+ doc="Size of the soft drop shadow under the bar. Default: 'md'."
614
+ )
615
+ shadow_color: rx.Var[str] = field(
616
+ doc="Tint of the drop shadow; overrides the theme."
617
+ )
618
+ show_button: rx.Var[bool] = field(
619
+ doc="Render the curved submit button. Default: true."
620
+ )
621
+ show_icon: rx.Var[bool] = field(
622
+ doc="Render the leading icon chip. Default: true."
623
+ )
624
+ icon: rx.Var[rx.Component | str] = field(
625
+ doc="Custom SVG content for the icon, centered at the origin; replaces the default envelope chip."
626
+ )
627
+ on_change: rx.EventHandler[lambda value: [safe(value)]] = field(
628
+ doc="Called with the new value on every keystroke. Handler receives: value."
629
+ )
630
+ on_submit: rx.EventHandler[lambda value: [safe(value)]] = field(
631
+ doc="Called when the button is pressed or Enter is hit. Handler receives: value."
632
+ )
633
+
634
+
635
+ class DecayCard(ReactBitsComponent):
636
+ """Hover parallax effect that disintegrates the content of a card.
637
+
638
+ Docs: https://reactbits.dev/components/decay-card
639
+ """
640
+
641
+ tag = "DecayCard"
642
+ alias = "ReactBitsDecayCard"
643
+ is_default = True
644
+ _rb_category = "Components"
645
+ _rb_name = "DecayCard"
646
+ _rb_files = ('DecayCard.css', 'DecayCard.jsx')
647
+ lib_dependencies: list[str] = ['gsap@3.13.0']
648
+
649
+ width: rx.Var[int | float] = field(
650
+ doc="The width of the card in pixels. Default: 300."
651
+ )
652
+ height: rx.Var[int | float] = field(
653
+ doc="The height of the card in pixels. Default: 400."
654
+ )
655
+ image: rx.Var[str] = field(
656
+ doc="Allows setting the background image of the card. Default: 'https://picsum.photos/300/400?grayscale'."
657
+ )
658
+ base_frequency: rx.Var[int | float] = field(
659
+ doc="Base frequency for the turbulence filter. Lower values create larger, smoother patterns. Default: 0.015."
660
+ )
661
+ num_octaves: rx.Var[int | float] = field(
662
+ doc="Number of octaves for the turbulence filter. Higher values add finer detail. Default: 5."
663
+ )
664
+ seed: rx.Var[int | float] = field(
665
+ doc="Seed value for the turbulence random number generator. Default: 4."
666
+ )
667
+ max_displacement: rx.Var[int | float] = field(
668
+ doc="Maximum displacement scale applied when the cursor moves. Controls the intensity of the decay effect. Default: 400."
669
+ )
670
+ movement_bound: rx.Var[int | float] = field(
671
+ doc="Maximum pixel distance the card can translate from its origin when following the cursor. Default: 50."
672
+ )
673
+
674
+
675
+ class DepthCarousel(ReactBitsComponent):
676
+ """Cards recede into depth on a 3D rail, with drag, keyboard and auto-advance.
677
+
678
+ Docs: https://reactbits.dev/components/depth-carousel
679
+ """
680
+
681
+ tag = "DepthCarousel"
682
+ alias = "ReactBitsDepthCarousel"
683
+ is_default = True
684
+ _rb_category = "Components"
685
+ _rb_name = "DepthCarousel"
686
+ _rb_files = ('DepthCarousel.css', 'DepthCarousel.jsx')
687
+ lib_dependencies: list[str] = ['gsap@3.13.0']
688
+
689
+ items: rx.Var[list[Any]] = field(
690
+ doc="Slides to display. Pass image URLs or objects with an image URL and alt text. Default: DEFAULT_ITEMS."
691
+ )
692
+ card_width: rx.Var[int | float] = field(
693
+ doc="Width of each card in pixels. Default: 300."
694
+ )
695
+ card_height: rx.Var[int | float] = field(
696
+ doc="Height of each card in pixels. Default: 380."
697
+ )
698
+ radius: rx.Var[int | float] = field(
699
+ doc="Corner rounding of the cards in pixels. Default: 18."
700
+ )
701
+ tint: rx.Var[str] = field(
702
+ doc="Colour multiplied over cards as they recede, shading the depth of the stack. Default: '#05060a'."
703
+ )
704
+ depth: rx.Var[int | float] = field(
705
+ doc="Z distance in pixels between each card along the depth rail. Higher values push the stack further back. Default: 220."
706
+ )
707
+ spread: rx.Var[int | float] = field(
708
+ doc="Lateral offset in pixels applied per card so the stack fans out to one side. Default: 90."
709
+ )
710
+ tilt: rx.Var[int | float] = field(
711
+ doc="Degrees each receding card rotates around the vertical axis, revealing its edge. Default: 22."
712
+ )
713
+ tilt_direction: rx.Var[Literal["left", "right"]] = field(
714
+ doc="Which side the stack fans and tilts toward. Default: 'right'."
715
+ )
716
+ perspective: rx.Var[int | float] = field(
717
+ doc="CSS perspective in pixels. Lower values exaggerate the depth foreshortening. Default: 1400."
718
+ )
719
+ visible_cards: rx.Var[int | float] = field(
720
+ doc="How many cards deep remain visible before further ones fade out. Default: 4."
721
+ )
722
+ falloff: rx.Var[int | float] = field(
723
+ doc="How quickly brightness, tint and blur ramp up with depth. Default: 0.2."
724
+ )
725
+ blur: rx.Var[int | float] = field(
726
+ doc="Maximum blur in pixels applied to the furthest visible card. Default: 6."
727
+ )
728
+ duration: rx.Var[int | float] = field(
729
+ doc="Length of the advance transition in milliseconds. Default: 700."
730
+ )
731
+ ease: rx.Var[str] = field(
732
+ doc="GSAP easing used for navigation transitions. Default: 'power3.out'."
733
+ )
734
+ autoplay: rx.Var[bool] = field(
735
+ doc="Auto-advance the carousel, pausing on hover or focus. Default: false."
736
+ )
737
+ autoplay_delay: rx.Var[int | float] = field(
738
+ doc="Delay between auto-advances in milliseconds. Default: 3200."
739
+ )
740
+ loop: rx.Var[bool] = field(
741
+ doc="Wrap seamlessly from the last card back to the first. Default: true."
742
+ )
743
+ show_controls: rx.Var[bool] = field(
744
+ doc="Show the previous / next arrow buttons. Default: true."
745
+ )
746
+ show_indicators: rx.Var[bool] = field(
747
+ doc="Show the dot indicators. Default: true."
748
+ )
749
+ on_change: rx.EventHandler[lambda index, item: [safe(index), safe(item)]] = field(
750
+ doc="Called whenever the focused card changes. Handler receives: index, item."
751
+ )
752
+
753
+
754
+ class Dock(ReactBitsComponent):
755
+ """macOS style magnifying dock with proximity scaling of icons.
756
+
757
+ Docs: https://reactbits.dev/components/dock
758
+ """
759
+
760
+ tag = "Dock"
761
+ alias = "ReactBitsDock"
762
+ is_default = True
763
+ _rb_category = "Components"
764
+ _rb_name = "Dock"
765
+ _rb_files = ('Dock.css', 'Dock.jsx')
766
+ lib_dependencies: list[str] = ['motion@12.23.21']
767
+
768
+ items: rx.Var[list[Any]] = field(
769
+ doc="Array of dock items. Each item should include an icon, label, onClick handler, and an optional className. Default: []."
770
+ )
771
+ spring: rx.Var[dict[str, Any]] = field(
772
+ doc="Configuration options for the spring animation. Default: { mass: 0.1, stiffness: 150, damping: 12 }."
773
+ )
774
+ magnification: rx.Var[int | float] = field(
775
+ doc="The magnified size (in pixels) applied to a dock item when hovered. Default: 70."
776
+ )
777
+ distance: rx.Var[int | float] = field(
778
+ doc="Pixel distance used to calculate the magnification effect based on mouse proximity. Default: 200."
779
+ )
780
+ panel_height: rx.Var[int | float] = field(
781
+ doc="Height (in pixels) of the dock panel. Default: 68."
782
+ )
783
+ dock_height: rx.Var[int | float] = field(
784
+ doc="Maximum height (in pixels) of the dock container. Default: 256."
785
+ )
786
+ base_item_size: rx.Var[int | float] = field(
787
+ doc="The base size (in pixels) for each dock item. Default: 50."
788
+ )
789
+
790
+
791
+ class DomeGallery(ReactBitsComponent):
792
+ """Immersive 3D dome gallery projecting images on a hemispheric surface.
793
+
794
+ Docs: https://reactbits.dev/components/dome-gallery
795
+ """
796
+
797
+ tag = "DomeGallery"
798
+ alias = "ReactBitsDomeGallery"
799
+ is_default = True
800
+ _rb_category = "Components"
801
+ _rb_name = "DomeGallery"
802
+ _rb_files = ('DomeGallery.css', 'DomeGallery.jsx')
803
+ lib_dependencies: list[str] = ['@use-gesture/react@10.3.1']
804
+
805
+ images: rx.Var[list[Any]] = field(
806
+ doc="Array of image URLs (strings) or image objects with src and optional alt text. Default: DEFAULT_IMAGES."
807
+ )
808
+ fit: rx.Var[int | float] = field(
809
+ doc="Size factor for the dome radius based on container dimensions. Default: 0.5."
810
+ )
811
+ fit_basis: rx.Var[Literal["auto", "min", "max", "width", "height"]] = field(
812
+ doc="Basis for calculating the dome size. Default: 'auto'."
813
+ )
814
+ min_radius: rx.Var[int | float] = field(
815
+ doc="Minimum radius for the dome in pixels. Default: 600."
816
+ )
817
+ max_radius: rx.Var[int | float] = field(
818
+ doc="Maximum radius for the dome in pixels. Default: Infinity."
819
+ )
820
+ pad_factor: rx.Var[int | float] = field(
821
+ doc="Padding factor for the viewer area. Default: 0.25."
822
+ )
823
+ overlay_blur_color: rx.Var[str] = field(
824
+ doc="Color for the outer portion of the radial overlay blur. Default: '#120F17'."
825
+ )
826
+ max_vertical_rotation_deg: rx.Var[int | float] = field(
827
+ doc="Maximum vertical rotation angle in degrees. Default: DEFAULTS.maxVerticalRotationDeg."
828
+ )
829
+ drag_sensitivity: rx.Var[int | float] = field(
830
+ doc="Sensitivity of drag interactions. Default: DEFAULTS.dragSensitivity."
831
+ )
832
+ enlarge_transition_ms: rx.Var[int | float] = field(
833
+ doc="Duration of image enlargement transition in milliseconds. Default: DEFAULTS.enlargeTransitionMs."
834
+ )
835
+ segments: rx.Var[int | float] = field(
836
+ doc="Number of segments for both X and Y to keep the dome proportional. Default: DEFAULTS.segments."
837
+ )
838
+ drag_dampening: rx.Var[int | float] = field(
839
+ doc="Damping factor for drag inertia (0-1, higher = more damping). Default: 2."
840
+ )
841
+ opened_image_width: rx.Var[str] = field(
842
+ doc="Width of the enlarged image. Default: '400px'."
843
+ )
844
+ opened_image_height: rx.Var[str] = field(
845
+ doc="Height of the enlarged image. Default: '400px'."
846
+ )
847
+ image_border_radius: rx.Var[str] = field(
848
+ doc="Border radius for closed tile images. Default: '30px'."
849
+ )
850
+ opened_image_border_radius: rx.Var[str] = field(
851
+ doc="Border radius for opened/enlarged images. Default: '30px'."
852
+ )
853
+ grayscale: rx.Var[bool] = field(
854
+ doc="Whether to render all images in grayscale. Default: true."
855
+ )
856
+
857
+
858
+ class DriftWall(ReactBitsComponent):
859
+ """An endless perspective wall of tiles drifting past, lifting on hover.
860
+
861
+ Docs: https://reactbits.dev/components/drift-wall
862
+ """
863
+
864
+ tag = "DriftWall"
865
+ alias = "ReactBitsDriftWall"
866
+ is_default = True
867
+ _rb_category = "Components"
868
+ _rb_name = "DriftWall"
869
+ _rb_files = ('DriftWall.css', 'DriftWall.jsx')
870
+
871
+ items: rx.Var[list[Any]] = field(
872
+ doc="Tiles to display. Each item has { image, title?, href? }. Default: DEFAULT_ITEMS."
873
+ )
874
+ columns: rx.Var[int | float] = field(
875
+ doc="Number of drifting columns. Default: 5."
876
+ )
877
+ tile_width: rx.Var[int | float] = field(
878
+ doc="Width of each tile in pixels. Default: 200."
879
+ )
880
+ tile_height: rx.Var[int | float] = field(
881
+ doc="Height of each tile in pixels. Default: 132."
882
+ )
883
+ gap: rx.Var[int | float] = field(
884
+ doc="Spacing between tiles and columns in pixels. Default: 18."
885
+ )
886
+ radius: rx.Var[int | float] = field(
887
+ doc="Corner radius of each tile in pixels. Default: 14."
888
+ )
889
+ tilt: rx.Var[int | float] = field(
890
+ doc="Perspective pitch of the wall (rotateX, degrees). Default: 16."
891
+ )
892
+ turn: rx.Var[int | float] = field(
893
+ doc="Perspective yaw of the wall (rotateY, degrees). Default: -14."
894
+ )
895
+ roll: rx.Var[int | float] = field(
896
+ doc="In-plane rotation of the wall (rotateZ, degrees). Default: 0."
897
+ )
898
+ perspective: rx.Var[int | float] = field(
899
+ doc="Perspective distance in pixels \u2014 smaller is more dramatic. Default: 1200."
900
+ )
901
+ depth: rx.Var[int | float] = field(
902
+ doc="How far the wall sits back from the viewer in pixels. Default: 120."
903
+ )
904
+ speed: rx.Var[int | float] = field(
905
+ doc="Base drift speed in pixels per second. Default: 42."
906
+ )
907
+ direction: rx.Var[Literal["up", "down"]] = field(
908
+ doc="Primary drift direction; columns alternate around it. Default: 'up'."
909
+ )
910
+ variance: rx.Var[int | float] = field(
911
+ doc="How much column speeds differ from each other (0\u20131). Default: 0.45."
912
+ )
913
+ parallax: rx.Var[int | float] = field(
914
+ doc="Pointer-follow tilt strength (0 disables it). Default: 0.6."
915
+ )
916
+ pause_on_hover: rx.Var[bool] = field(
917
+ doc="Pause the whole wall while the pointer is over it. Default: false."
918
+ )
919
+ lift: rx.Var[int | float] = field(
920
+ doc="How far a hovered tile lifts toward the viewer in pixels. Default: 64."
921
+ )
922
+ fade: rx.Var[int | float] = field(
923
+ doc="Strength of the edge and depth dissolve (0\u20131). Default: 0.6."
924
+ )
925
+ dim: rx.Var[int | float] = field(
926
+ doc="Resting opacity of unhovered tiles (0\u20131). Default: 0.55."
927
+ )
928
+ grayscale: rx.Var[bool] = field(
929
+ doc="Desaturate resting tiles; hover restores colour. Default: false."
930
+ )
931
+ overlay_color: rx.Var[str] = field(
932
+ doc="Tint laid over resting tiles, cleared on hover. Default: '#060010'."
933
+ )
934
+
935
+
936
+ class ElasticSlider(ReactBitsComponent):
937
+ """Slider handle stretches elastically then snaps with spring physics.
938
+
939
+ Docs: https://reactbits.dev/components/elastic-slider
940
+ """
941
+
942
+ tag = "ElasticSlider"
943
+ alias = "ReactBitsElasticSlider"
944
+ is_default = True
945
+ _rb_category = "Components"
946
+ _rb_name = "ElasticSlider"
947
+ _rb_files = ('ElasticSlider.css', 'ElasticSlider.jsx')
948
+ lib_dependencies: list[str] = ['motion@12.23.21', 'react-icons@5.5.0']
949
+
950
+ default_value: rx.Var[int | float] = field(
951
+ doc="The initial value of the slider. It can be less than startingValue or greater than maxValue. Default: 50."
952
+ )
953
+ starting_value: rx.Var[int | float] = field(
954
+ doc="The starting point for the slider's range, e.g., startingValue=100 allows the slider to start at 100. Default: 0."
955
+ )
956
+ max_value: rx.Var[int | float] = field(
957
+ doc="The maximum value the slider can reach. Default: 100."
958
+ )
959
+ is_stepped: rx.Var[bool] = field(
960
+ doc="Enables or disables stepped increments on the slider. Default: false."
961
+ )
962
+ step_size: rx.Var[int | float] = field(
963
+ doc="The size of the increments for the slider when isStepped is enabled. Default: 1."
964
+ )
965
+ left_icon: rx.Var[rx.Component | str] = field(
966
+ doc="Custom JSX or HTML code to display on the left side of the slider. Default: <Icon as={RiVolumeDownFill} />."
967
+ )
968
+ right_icon: rx.Var[rx.Component | str] = field(
969
+ doc="Custom JSX or HTML code to display on the right side of the slider. Default: <Icon as={RiVolumeUpFill} />."
970
+ )
971
+
972
+
973
+ class FlowingMenu(ReactBitsComponent):
974
+ """Liquid flowing active indicator glides between menu items.
975
+
976
+ Docs: https://reactbits.dev/components/flowing-menu
977
+ """
978
+
979
+ tag = "FlowingMenu"
980
+ alias = "ReactBitsFlowingMenu"
981
+ is_default = True
982
+ _rb_category = "Components"
983
+ _rb_name = "FlowingMenu"
984
+ _rb_files = ('FlowingMenu.css', 'FlowingMenu.jsx')
985
+ lib_dependencies: list[str] = ['gsap@3.13.0']
986
+
987
+ items: rx.Var[list[Any]] = field(
988
+ doc="An array of objects containing: link, text, image. Default: []."
989
+ )
990
+ speed: rx.Var[int | float] = field(
991
+ doc="Duration of the marquee animation in seconds (lower = faster). Default: 15."
992
+ )
993
+ text_color: rx.Var[str] = field(
994
+ doc="Color of the static menu text. Default: '#fff'."
995
+ )
996
+ bg_color: rx.Var[str] = field(
997
+ doc="Background color of the menu container. Default: '#120F17'."
998
+ )
999
+ marquee_bg_color: rx.Var[str] = field(
1000
+ doc="Background color of the marquee overlay. Default: '#fff'."
1001
+ )
1002
+ marquee_text_color: rx.Var[str] = field(
1003
+ doc="Text color inside the marquee. Default: '#120F17'."
1004
+ )
1005
+ border_color: rx.Var[str] = field(
1006
+ doc="Color of the dividing lines between menu items. Default: '#fff'."
1007
+ )
1008
+
1009
+
1010
+ class FluidGlass(ReactBitsComponent):
1011
+ """Glassmorphism container with animated liquid distortion refraction.
1012
+
1013
+ Docs: https://reactbits.dev/components/fluid-glass
1014
+ """
1015
+
1016
+ tag = "FluidGlass"
1017
+ alias = "ReactBitsFluidGlass"
1018
+ is_default = True
1019
+ _rb_category = "Components"
1020
+ _rb_name = "FluidGlass"
1021
+ _rb_files = ('FluidGlass.jsx',)
1022
+ lib_dependencies: list[str] = ['@react-three/drei@10.7.6', '@react-three/fiber@9.3.0', 'maath@0.10.8', 'three@0.180.0']
1023
+
1024
+ mode: rx.Var[str] = field(
1025
+ doc="Display mode of the fluid glass effect. Options: 'lens', 'bar', 'cube'. Default: 'lens'."
1026
+ )
1027
+ lens_props: rx.Var[dict[str, Any]] = field(
1028
+ doc="Props specific to lens mode including material properties like ior, thickness, transmission. Default: {}."
1029
+ )
1030
+ bar_props: rx.Var[dict[str, Any]] = field(
1031
+ doc="Props specific to bar mode including navItems array and material properties. Default: {}."
1032
+ )
1033
+ cube_props: rx.Var[dict[str, Any]] = field(
1034
+ doc="Props specific to cube mode including material properties and interaction settings. Default: {}."
1035
+ )
1036
+ background_color: rx.Var[str] = field(
1037
+ doc="Background color rendered behind the glass scene. Default: '#120F17'."
1038
+ )
1039
+ text_color: rx.Var[str] = field(
1040
+ doc="Color used for the scene title and navigation labels. Default: '#ffffff'."
1041
+ )
1042
+
1043
+
1044
+ class FlyingPosters(ReactBitsComponent):
1045
+ """3D posters rotate on scroll infinitely.
1046
+
1047
+ Docs: https://reactbits.dev/components/flying-posters
1048
+ """
1049
+
1050
+ tag = "FlyingPosters"
1051
+ alias = "ReactBitsFlyingPosters"
1052
+ is_default = True
1053
+ _rb_category = "Components"
1054
+ _rb_name = "FlyingPosters"
1055
+ _rb_files = ('FlyingPosters.css', 'FlyingPosters.jsx')
1056
+ lib_dependencies: list[str] = ['ogl@1.0.11']
1057
+
1058
+ items: rx.Var[list[str]] = field(
1059
+ doc="An array of image URLs to be displayed as flying posters. Default: []."
1060
+ )
1061
+ plane_width: rx.Var[int | float] = field(
1062
+ doc="The width of each poster plane in pixels. Default: 320."
1063
+ )
1064
+ plane_height: rx.Var[int | float] = field(
1065
+ doc="The height of each poster plane in pixels. Default: 320."
1066
+ )
1067
+ distortion: rx.Var[int | float] = field(
1068
+ doc="The amount of distortion applied to the posters' movement. Default: 3."
1069
+ )
1070
+ scroll_ease: rx.Var[int | float] = field(
1071
+ doc="The easing factor for smooth scrolling interactions. Default: 0.01."
1072
+ )
1073
+ camera_fov: rx.Var[int | float] = field(
1074
+ doc="The field of view for the camera in degrees. Default: 45."
1075
+ )
1076
+ camera_z: rx.Var[int | float] = field(
1077
+ doc="The Z position of the camera, affecting zoom and perspective. Default: 20."
1078
+ )
1079
+
1080
+
1081
+ class Folder(ReactBitsComponent):
1082
+ """Interactive folder opens to reveal nested content smooth motion.
1083
+
1084
+ Docs: https://reactbits.dev/components/folder
1085
+ """
1086
+
1087
+ tag = "Folder"
1088
+ alias = "ReactBitsFolder"
1089
+ is_default = True
1090
+ _rb_category = "Components"
1091
+ _rb_name = "Folder"
1092
+ _rb_files = ('Folder.css', 'Folder.jsx')
1093
+
1094
+ color: rx.Var[str] = field(
1095
+ doc="The primary color of the folder. Default: '#5227FF'."
1096
+ )
1097
+ size: rx.Var[int | float] = field(
1098
+ doc="Scale factor for the folder size. Default: 1."
1099
+ )
1100
+ items: rx.Var[list[Any]] = field(
1101
+ doc="An array of up to 3 items rendered as papers in the folder. Default: []."
1102
+ )
1103
+
1104
+
1105
+ class GlassIcons(ReactBitsComponent):
1106
+ """Icon set styled with frosted glass blur.
1107
+
1108
+ Docs: https://reactbits.dev/components/glass-icons
1109
+ """
1110
+
1111
+ tag = "GlassIcons"
1112
+ alias = "ReactBitsGlassIcons"
1113
+ is_default = True
1114
+ _rb_category = "Components"
1115
+ _rb_name = "GlassIcons"
1116
+ _rb_files = ('GlassIcons.css', 'GlassIcons.jsx')
1117
+
1118
+ items: rx.Var[list[Any]] = field(
1119
+ doc="Array of items to render. Each item should include: an icon (React.ReactElement), a color (string), a label (string), and an optional customClass (string). Default: []."
1120
+ )
1121
+
1122
+
1123
+ class GlassSurface(ReactBitsComponent):
1124
+ """Advanced Apple-style glass surface with real-time distortion + lighting.
1125
+
1126
+ Docs: https://reactbits.dev/components/glass-surface
1127
+ """
1128
+
1129
+ tag = "GlassSurface"
1130
+ alias = "ReactBitsGlassSurface"
1131
+ is_default = True
1132
+ _rb_category = "Components"
1133
+ _rb_name = "GlassSurface"
1134
+ _rb_files = ('GlassSurface.css', 'GlassSurface.jsx')
1135
+
1136
+ width: rx.Var[int | float | str] = field(
1137
+ doc="Width of the glass surface (pixels or CSS value like '100%'). Default: 200."
1138
+ )
1139
+ height: rx.Var[int | float | str] = field(
1140
+ doc="Height of the glass surface (pixels or CSS value like '100vh'). Default: 80."
1141
+ )
1142
+ border_radius: rx.Var[int | float] = field(
1143
+ doc="Border radius in pixels. Default: 20."
1144
+ )
1145
+ border_width: rx.Var[int | float] = field(
1146
+ doc="Border width factor for displacement map. Default: 0.07."
1147
+ )
1148
+ brightness: rx.Var[int | float] = field(
1149
+ doc="Brightness percentage for displacement map. Default: 50."
1150
+ )
1151
+ opacity: rx.Var[int | float] = field(
1152
+ doc="Opacity of displacement map elements. Default: 0.93."
1153
+ )
1154
+ blur: rx.Var[int | float] = field(
1155
+ doc="Input blur amount in pixels. Default: 11."
1156
+ )
1157
+ displace: rx.Var[int | float] = field(
1158
+ doc="Output blur (stdDeviation). Default: 0."
1159
+ )
1160
+ background_opacity: rx.Var[int | float] = field(
1161
+ doc="Background frost opacity (0-1). Default: 0."
1162
+ )
1163
+ saturation: rx.Var[int | float] = field(
1164
+ doc="Backdrop filter saturation factor. Default: 1."
1165
+ )
1166
+ distortion_scale: rx.Var[int | float] = field(
1167
+ doc="Main displacement scale. Default: -180."
1168
+ )
1169
+ red_offset: rx.Var[int | float] = field(
1170
+ doc="Red channel extra displacement offset. Default: 0."
1171
+ )
1172
+ green_offset: rx.Var[int | float] = field(
1173
+ doc="Green channel extra displacement offset. Default: 10."
1174
+ )
1175
+ blue_offset: rx.Var[int | float] = field(
1176
+ doc="Blue channel extra displacement offset. Default: 20."
1177
+ )
1178
+ x_channel: rx.Var[Literal["R", "G", "B"]] = field(
1179
+ doc="X displacement channel selector. Default: 'R'."
1180
+ )
1181
+ y_channel: rx.Var[Literal["R", "G", "B"]] = field(
1182
+ doc="Y displacement channel selector. Default: 'G'."
1183
+ )
1184
+ mix_blend_mode: rx.Var[str] = field(
1185
+ doc="Mix blend mode for displacement map. Default: 'difference'."
1186
+ )
1187
+
1188
+
1189
+ class GooeyNav(ReactBitsComponent):
1190
+ """Navigation indicator morphs with gooey blob transitions between items.
1191
+
1192
+ Docs: https://reactbits.dev/components/gooey-nav
1193
+ """
1194
+
1195
+ tag = "GooeyNav"
1196
+ alias = "ReactBitsGooeyNav"
1197
+ is_default = True
1198
+ _rb_category = "Components"
1199
+ _rb_name = "GooeyNav"
1200
+ _rb_files = ('GooeyNav.css', 'GooeyNav.jsx')
1201
+
1202
+ items: rx.Var[list[Any]] = field(
1203
+ doc="Array of navigation items. Default: []."
1204
+ )
1205
+ animation_time: rx.Var[int | float] = field(
1206
+ doc="Duration (ms) of the main animation. Default: 600."
1207
+ )
1208
+ particle_count: rx.Var[int | float] = field(
1209
+ doc="Number of bubble particles per transition. Default: 15."
1210
+ )
1211
+ particle_distances: rx.Var[list[int | float]] = field(
1212
+ doc="Outer and inner distances of bubble spread. Default: [90, 10]."
1213
+ )
1214
+ particle_r: rx.Var[int | float] = field(
1215
+ doc="Radius factor influencing random particle rotation. Default: 100."
1216
+ )
1217
+ time_variance: rx.Var[int | float] = field(
1218
+ doc="Random time variance (ms) for particle animations. Default: 300."
1219
+ )
1220
+ colors: rx.Var[list[int | float]] = field(
1221
+ doc="Color indices used when creating bubble particles. Default: [1, 2, 3, 1, 2, 3, 1, 4]."
1222
+ )
1223
+ initial_active_index: rx.Var[int | float] = field(
1224
+ doc="Which item is selected on mount. Default: 0."
1225
+ )
1226
+
1227
+
1228
+ class InfiniteMenu(ReactBitsComponent):
1229
+ """Horizontally looping menu effect that scrolls endlessly with seamless wrap.
1230
+
1231
+ Docs: https://reactbits.dev/components/infinite-menu
1232
+ """
1233
+
1234
+ tag = "InfiniteMenu"
1235
+ alias = "ReactBitsInfiniteMenu"
1236
+ is_default = True
1237
+ _rb_category = "Components"
1238
+ _rb_name = "InfiniteMenu"
1239
+ _rb_files = ('InfiniteMenu.css', 'InfiniteMenu.jsx')
1240
+ lib_dependencies: list[str] = ['gl-matrix@3.4.4']
1241
+
1242
+ items: rx.Var[list[Any]] = field(
1243
+ doc="List of items containing an image, link, title, and description - or just add what you need. Default: []."
1244
+ )
1245
+ scale: rx.Var[int | float] = field(
1246
+ doc="Controls camera zoom. Default: 1.0."
1247
+ )
1248
+ background_color: rx.Var[str] = field(
1249
+ doc="Sets the canvas background and the action button outline color. Default: '#000000'."
1250
+ )
1251
+
1252
+
1253
+ class InfiniteSpiral(ReactBitsComponent):
1254
+ """An endlessly looping 3D helix of images with customizable motion, depth, spacing and interaction.
1255
+
1256
+ Docs: https://reactbits.dev/components/infinite-spiral
1257
+ """
1258
+
1259
+ tag = "InfiniteSpiral"
1260
+ alias = "ReactBitsInfiniteSpiral"
1261
+ is_default = True
1262
+ _rb_category = "Components"
1263
+ _rb_name = "InfiniteSpiral"
1264
+ _rb_files = ('InfiniteSpiral.css', 'InfiniteSpiral.jsx')
1265
+
1266
+ items: rx.Var[list[Any]] = field(
1267
+ doc="Images shown in the spiral. Objects may also include alt, href, target, label and id. Default: []."
1268
+ )
1269
+ speed: rx.Var[int | float] = field(
1270
+ doc="Automatic travel speed in cards per second and the sensitivity of scroll-controlled motion. Default: 0.55."
1271
+ )
1272
+ direction: rx.Var[Literal["up", "down"]] = field(
1273
+ doc="Vertical travel direction. Default: 'up'."
1274
+ )
1275
+ animation_mode: rx.Var[Literal["auto", "drag", "scroll", "all"]] = field(
1276
+ doc="Selects automatic motion, pointer dragging, page-scroll control or all interactions. Default: 'auto'."
1277
+ )
1278
+ radius: rx.Var[int | float] = field(
1279
+ doc="Depth radius of the helix in pixels. Default: 170."
1280
+ )
1281
+ card_width: rx.Var[int | float] = field(
1282
+ doc="Card width in pixels. Default: 100."
1283
+ )
1284
+ card_height: rx.Var[int | float] = field(
1285
+ doc="Card height in pixels. Default: 100."
1286
+ )
1287
+ vertical_spacing: rx.Var[int | float] = field(
1288
+ doc="Vertical distance between neighboring cards. Default: 60."
1289
+ )
1290
+ perspective: rx.Var[int | float] = field(
1291
+ doc="CSS perspective applied to the 3D stage. Default: 1000."
1292
+ )
1293
+ cards_per_turn: rx.Var[int | float] = field(
1294
+ doc="Number of cards used for one complete revolution. Default: 7."
1295
+ )
1296
+ rotation: rx.Var[int | float] = field(
1297
+ doc="Global angular offset in degrees. Default: 0."
1298
+ )
1299
+ card_tilt: rx.Var[int | float] = field(
1300
+ doc="Additional clockwise card tilt in degrees. Default: 0."
1301
+ )
1302
+ card_radius: rx.Var[int | float] = field(
1303
+ doc="Card corner radius in pixels. Default: 10."
1304
+ )
1305
+ center_scale: rx.Var[int | float] = field(
1306
+ doc="Scale multiplier for cards nearest the center. Default: 1.2."
1307
+ )
1308
+ edge_fade: rx.Var[int | float] = field(
1309
+ doc="Fraction of the outer travel range used for fading. Default: 0.3."
1310
+ )
1311
+ edge_blur: rx.Var[int | float] = field(
1312
+ doc="Maximum blur applied near the edges. Default: 6."
1313
+ )
1314
+ pause_on_hover: rx.Var[bool] = field(
1315
+ doc="Smoothly eases automatic motion to a stop while the gallery is hovered. Default: true."
1316
+ )
1317
+ image_fit: rx.Var[Literal["cover", "contain"]] = field(
1318
+ doc="Object fit used by every image. Default: 'cover'."
1319
+ )
1320
+ grayscale: rx.Var[int | float] = field(
1321
+ doc="Grayscale amount applied to every image, from 0 to 1. Default: 0."
1322
+ )
1323
+
1324
+
1325
+ class Lanyard(ReactBitsComponent):
1326
+ """Swinging 3D lanyard / badge card with realistic inertial motion.
1327
+
1328
+ Docs: https://reactbits.dev/components/lanyard
1329
+ """
1330
+
1331
+ tag = "Lanyard"
1332
+ alias = "ReactBitsLanyard"
1333
+ is_default = True
1334
+ _rb_category = "Components"
1335
+ _rb_name = "Lanyard"
1336
+ _rb_files = ('Lanyard.css', 'Lanyard.jsx', 'card.glb', 'lanyard.png')
1337
+ lib_dependencies: list[str] = ['@react-three/drei@10.7.6', '@react-three/fiber@9.3.0', '@react-three/rapier@2.1.0', 'meshline@3.3.1', 'three@0.180.0']
1338
+
1339
+ position: rx.Var[list[Any]] = field(
1340
+ doc="Initial camera position for the canvas. Default: [0, 0, 30]."
1341
+ )
1342
+ gravity: rx.Var[list[Any]] = field(
1343
+ doc="Gravity vector for the physics simulation. Default: [0, -40, 0]."
1344
+ )
1345
+ fov: rx.Var[int | float] = field(
1346
+ doc="Camera field of view. Default: 20."
1347
+ )
1348
+ transparent: rx.Var[bool] = field(
1349
+ doc="Enables a transparent background for the canvas. Default: true."
1350
+ )
1351
+ front_image: rx.Var[str] = field(
1352
+ doc="Custom image URL for the card's front face. Falls back to the model's built-in texture when not set."
1353
+ )
1354
+ back_image: rx.Var[str] = field(
1355
+ doc="Custom image URL for the card's back face, rendered independently from the front."
1356
+ )
1357
+ image_fit: rx.Var[Literal["cover", "contain"]] = field(
1358
+ doc="How a custom front/back image fits its face. Both preserve aspect ratio; 'cover' fills and crops, 'contain' letterboxes. Default: 'cover'."
1359
+ )
1360
+ lanyard_image: rx.Var[str] = field(
1361
+ doc="Custom image URL for the lanyard band's repeating texture. Falls back to the default band texture when not set."
1362
+ )
1363
+ lanyard_width: rx.Var[int | float] = field(
1364
+ doc="Width of the lanyard band (meshline lineWidth). Increase it to give a custom band image more room and reduce stretching. Default: 1."
1365
+ )
1366
+
1367
+
1368
+ class LineSidebar(ReactBitsComponent):
1369
+ """Static list navigation with a cursor-proximity effect that shifts and highlights nearby items.
1370
+
1371
+ Docs: https://reactbits.dev/components/line-sidebar
1372
+ """
1373
+
1374
+ tag = "LineSidebar"
1375
+ alias = "ReactBitsLineSidebar"
1376
+ is_default = True
1377
+ _rb_category = "Components"
1378
+ _rb_name = "LineSidebar"
1379
+ _rb_files = ('LineSidebar.css', 'LineSidebar.jsx')
1380
+
1381
+ items: rx.Var[list[str]] = field(
1382
+ doc="Labels rendered as the list of sidebar entries. Default: DEFAULT_ITEMS."
1383
+ )
1384
+ accent_color: rx.Var[str] = field(
1385
+ doc="Color items and markers shift toward as the cursor gets close. Default: '#A855F7'."
1386
+ )
1387
+ text_color: rx.Var[str] = field(
1388
+ doc="Resting color of the item labels. Default: '#c4c4c4'."
1389
+ )
1390
+ marker_color: rx.Var[str] = field(
1391
+ doc="Resting color of the leading marker lines. Default: '#6c6c6c'."
1392
+ )
1393
+ show_index: rx.Var[bool] = field(
1394
+ doc="Show the zero-padded index before each label. Default: true."
1395
+ )
1396
+ show_marker: rx.Var[bool] = field(
1397
+ doc="Show the marker lines (and short ticks) beside each item. Default: true."
1398
+ )
1399
+ proximity_radius: rx.Var[int | float] = field(
1400
+ doc="Vertical distance in pixels within which the cursor influences an item. Default: 100."
1401
+ )
1402
+ max_shift: rx.Var[int | float] = field(
1403
+ doc="Maximum horizontal shift in pixels the label slides at full proximity. Default: 30."
1404
+ )
1405
+ falloff: rx.Var[Literal["linear", "smooth", "sharp"]] = field(
1406
+ doc="Curve mapping cursor distance to the proximity effect. Default: 'smooth'."
1407
+ )
1408
+ marker_length: rx.Var[int | float] = field(
1409
+ doc="Length in pixels of the marker line; the in-between ticks scale from this too. Default: 60."
1410
+ )
1411
+ marker_gap: rx.Var[int | float] = field(
1412
+ doc="Gap in pixels between the labels and the markers. Default: 0."
1413
+ )
1414
+ tick_scale: rx.Var[int | float] = field(
1415
+ doc="Length of the in-between ticks as a fraction of markerLength. Default: 0.5."
1416
+ )
1417
+ scale_tick: rx.Var[bool] = field(
1418
+ doc="When true, the in-between ticks also grow with cursor proximity. Default: true."
1419
+ )
1420
+ item_gap: rx.Var[int | float] = field(
1421
+ doc="Vertical gap between items in pixels. Default: 20."
1422
+ )
1423
+ font_size: rx.Var[int | float] = field(
1424
+ doc="Font size of the labels in rem. Default: 1.1."
1425
+ )
1426
+ smoothing: rx.Var[int | float] = field(
1427
+ doc="Transition duration in milliseconds for the proximity response. Default: 100."
1428
+ )
1429
+ default_active: rx.Var[int | float] = field(
1430
+ doc="Index of the item selected on mount."
1431
+ )
1432
+ on_item_click: rx.EventHandler[lambda index, label: [safe(index), safe(label)]] = field(
1433
+ doc="Called when an item is clicked; the clicked item also becomes active. Handler receives: index, label."
1434
+ )
1435
+
1436
+
1437
+ class MagicBento(ReactBitsComponent):
1438
+ """Interactive bento grid tiles expand + animate with various options.
1439
+
1440
+ Docs: https://reactbits.dev/components/magic-bento
1441
+ """
1442
+
1443
+ tag = "MagicBento"
1444
+ alias = "ReactBitsMagicBento"
1445
+ is_default = True
1446
+ _rb_category = "Components"
1447
+ _rb_name = "MagicBento"
1448
+ _rb_files = ('MagicBento.css', 'MagicBento.jsx')
1449
+ lib_dependencies: list[str] = ['gsap@3.13.0']
1450
+
1451
+ text_auto_hide: rx.Var[bool] = field(
1452
+ doc="Whether text content should auto-hide on hover. Default: true."
1453
+ )
1454
+ enable_stars: rx.Var[bool] = field(
1455
+ doc="Enable particle star animation effect. Default: true."
1456
+ )
1457
+ enable_spotlight: rx.Var[bool] = field(
1458
+ doc="Enable spotlight cursor following effect. Default: true."
1459
+ )
1460
+ enable_border_glow: rx.Var[bool] = field(
1461
+ doc="Enable border glow effect that follows cursor. Default: true."
1462
+ )
1463
+ disable_animations: rx.Var[bool] = field(
1464
+ doc="Disable all animations (automatically enabled on mobile). Default: false."
1465
+ )
1466
+ spotlight_radius: rx.Var[int | float] = field(
1467
+ doc="Radius of the spotlight effect in pixels. Default: DEFAULT_SPOTLIGHT_RADIUS."
1468
+ )
1469
+ particle_count: rx.Var[int | float] = field(
1470
+ doc="Number of particles in the star animation. Default: DEFAULT_PARTICLE_COUNT."
1471
+ )
1472
+ enable_tilt: rx.Var[bool] = field(
1473
+ doc="Enable 3D tilt effect on card hover. Default: false."
1474
+ )
1475
+ glow_color: rx.Var[str] = field(
1476
+ doc="RGB color values for glow effects (without rgba wrapper). Default: DEFAULT_GLOW_COLOR."
1477
+ )
1478
+ click_effect: rx.Var[bool] = field(
1479
+ doc="Enable ripple effect on card click. Default: true."
1480
+ )
1481
+ enable_magnetism: rx.Var[bool] = field(
1482
+ doc="Enable subtle card attraction to cursor. Default: true."
1483
+ )
1484
+
1485
+
1486
+ class Masonry(ReactBitsComponent):
1487
+ """Responsive masonry layout with animated reflow + gaps optimization.
1488
+
1489
+ Docs: https://reactbits.dev/components/masonry
1490
+ """
1491
+
1492
+ tag = "Masonry"
1493
+ alias = "ReactBitsMasonry"
1494
+ is_default = True
1495
+ _rb_category = "Components"
1496
+ _rb_name = "Masonry"
1497
+ _rb_files = ('Masonry.css', 'Masonry.jsx')
1498
+ lib_dependencies: list[str] = ['gsap@3.13.0']
1499
+
1500
+ items: rx.Var[list[Any]] = field(
1501
+ doc="Array of items to display in the masonry layout. Each item should have id, img, url, and height properties. Default: required."
1502
+ )
1503
+ ease: rx.Var[str] = field(
1504
+ doc="GSAP easing function for animations. Default: 'power3.out'."
1505
+ )
1506
+ duration: rx.Var[int | float] = field(
1507
+ doc="Duration of the transition animations in seconds. Default: 0.6."
1508
+ )
1509
+ stagger: rx.Var[int | float] = field(
1510
+ doc="Delay between each item's animation in seconds. Default: 0.05."
1511
+ )
1512
+ animate_from: rx.Var[str] = field(
1513
+ doc="Direction from which items animate in. Options: 'top', 'bottom', 'left', 'right', 'center', 'random'. Default: 'bottom'."
1514
+ )
1515
+ scale_on_hover: rx.Var[bool] = field(
1516
+ doc="Whether items should scale on hover. Default: true."
1517
+ )
1518
+ hover_scale: rx.Var[int | float] = field(
1519
+ doc="Scale value when hovering over items (only applies if scaleOnHover is true). Default: 0.95."
1520
+ )
1521
+ blur_to_focus: rx.Var[bool] = field(
1522
+ doc="Whether items should animate from blurred to focused on initial load. Default: true."
1523
+ )
1524
+ color_shift_on_hover: rx.Var[bool] = field(
1525
+ doc="Whether to show a color overlay effect on hover. Default: false."
1526
+ )
1527
+
1528
+
1529
+ class ModelViewer(ReactBitsComponent):
1530
+ """Three.js model viewer with orbit controls and lighting presets.
1531
+
1532
+ Docs: https://reactbits.dev/components/model-viewer
1533
+ """
1534
+
1535
+ tag = "ModelViewer"
1536
+ alias = "ReactBitsModelViewer"
1537
+ is_default = True
1538
+ _rb_category = "Components"
1539
+ _rb_name = "ModelViewer"
1540
+ _rb_files = ('ModelViewer.jsx',)
1541
+ lib_dependencies: list[str] = ['@react-three/drei@10.7.6', '@react-three/fiber@9.3.0', 'three@0.180.0']
1542
+
1543
+ url: rx.Var[str] = field(
1544
+ doc="URL of the 3D model file (glb/gltf/fbx/obj). Default: -."
1545
+ )
1546
+ width: rx.Var[int | float | str] = field(
1547
+ doc="Width of the canvas container. Default: 400."
1548
+ )
1549
+ height: rx.Var[int | float | str] = field(
1550
+ doc="Height of the canvas container. Default: 400."
1551
+ )
1552
+ model_x_offset: rx.Var[int | float] = field(
1553
+ doc="Horizontal offset of the model. Default: 0."
1554
+ )
1555
+ model_y_offset: rx.Var[int | float] = field(
1556
+ doc="Vertical offset of the model. Default: 0."
1557
+ )
1558
+ default_rotation_x: rx.Var[int | float] = field(
1559
+ doc="Initial rotation on the X axis in degrees. Default: -50."
1560
+ )
1561
+ default_rotation_y: rx.Var[int | float] = field(
1562
+ doc="Initial rotation on the Y axis in degrees. Default: 20."
1563
+ )
1564
+ default_zoom: rx.Var[int | float] = field(
1565
+ doc="Initial zoom distance factor. Default: 0.5."
1566
+ )
1567
+ min_zoom_distance: rx.Var[int | float] = field(
1568
+ doc="Minimum zoom distance. Default: 0.5."
1569
+ )
1570
+ max_zoom_distance: rx.Var[int | float] = field(
1571
+ doc="Maximum zoom distance. Default: 10."
1572
+ )
1573
+ enable_mouse_parallax: rx.Var[bool] = field(
1574
+ doc="Enable mouse-based parallax effect. Default: true."
1575
+ )
1576
+ enable_manual_rotation: rx.Var[bool] = field(
1577
+ doc="Enable manual rotation via drag. Default: true."
1578
+ )
1579
+ enable_hover_rotation: rx.Var[bool] = field(
1580
+ doc="Enable rotation on hover based on cursor. Default: true."
1581
+ )
1582
+ enable_manual_zoom: rx.Var[bool] = field(
1583
+ doc="Enable manual zoom via mouse wheel or gestures. Default: true."
1584
+ )
1585
+ ambient_intensity: rx.Var[int | float] = field(
1586
+ doc="Intensity of ambient light. Default: 0.3."
1587
+ )
1588
+ key_light_intensity: rx.Var[int | float] = field(
1589
+ doc="Intensity of key light. Default: 1."
1590
+ )
1591
+ fill_light_intensity: rx.Var[int | float] = field(
1592
+ doc="Intensity of fill light. Default: 0.5."
1593
+ )
1594
+ rim_light_intensity: rx.Var[int | float] = field(
1595
+ doc="Intensity of rim light. Default: 0.8."
1596
+ )
1597
+ environment_preset: rx.Var[str] = field(
1598
+ doc="Environment preset for scene lighting. Default: 'forest'."
1599
+ )
1600
+ auto_frame: rx.Var[bool] = field(
1601
+ doc="Automatically frame the model in view. Default: false."
1602
+ )
1603
+ placeholder_src: rx.Var[str] = field(
1604
+ doc="Placeholder image source while loading. Default: -."
1605
+ )
1606
+ show_screenshot_button: rx.Var[bool] = field(
1607
+ doc="Show the screenshot button overlay. Default: true."
1608
+ )
1609
+ fade_in: rx.Var[bool] = field(
1610
+ doc="Enable fade-in transition on load. Default: false."
1611
+ )
1612
+ auto_rotate: rx.Var[bool] = field(
1613
+ doc="Enable automatic rotation animation. Default: false."
1614
+ )
1615
+ auto_rotate_speed: rx.Var[int | float] = field(
1616
+ doc="Speed of automatic rotation. Default: 0.35."
1617
+ )
1618
+ on_model_loaded: rx.EventHandler[no_args_event_spec] = field(
1619
+ doc="Callback when model finishes loading"
1620
+ )
1621
+
1622
+
1623
+ class MorphSlider(ReactBitsComponent):
1624
+ """WebGL slider that melts between images with a displacement transition.
1625
+
1626
+ Docs: https://reactbits.dev/components/morph-slider
1627
+ """
1628
+
1629
+ tag = "MorphSlider"
1630
+ alias = "ReactBitsMorphSlider"
1631
+ is_default = True
1632
+ _rb_category = "Components"
1633
+ _rb_name = "MorphSlider"
1634
+ _rb_files = ('MorphSlider.css', 'MorphSlider.jsx')
1635
+ lib_dependencies: list[str] = ['gsap@3.13.0', 'ogl@1.0.11']
1636
+
1637
+ items: rx.Var[list[Any]] = field(
1638
+ doc="Slides to morph between. Each item is an image URL with an optional caption. Default: DEFAULT_ITEMS."
1639
+ )
1640
+ start_index: rx.Var[int | float] = field(
1641
+ doc="Index of the slide shown on mount. Default: 0."
1642
+ )
1643
+ transition: rx.Var[Literal["melt", "ripple", "shear", "swirl"]] = field(
1644
+ doc="Character of the GPU displacement morph between slides. Default: 'melt'."
1645
+ )
1646
+ duration: rx.Var[int | float] = field(
1647
+ doc="Length of a full transition in seconds. Default: 1.1."
1648
+ )
1649
+ ease: rx.Var[str] = field(
1650
+ doc="GSAP easing curve used to drive the transition progress. Default: 'power2.inOut'."
1651
+ )
1652
+ intensity: rx.Var[int | float] = field(
1653
+ doc="Strength of the displacement \u2014 how far the images warp during the morph. Default: 0.55."
1654
+ )
1655
+ scale: rx.Var[int | float] = field(
1656
+ doc="Frequency of the procedural noise field (affects the Melt transition most). Default: 2.4."
1657
+ )
1658
+ aberration: rx.Var[int | float] = field(
1659
+ doc="Amount of RGB split that peaks mid-transition and resolves to zero. Default: 0.35."
1660
+ )
1661
+ drift: rx.Var[int | float] = field(
1662
+ doc="Idle drift / breathing applied to the current image so it is never fully static. Default: 0.4."
1663
+ )
1664
+ autoplay: rx.Var[bool] = field(
1665
+ doc="Advance slides automatically; pauses on hover. Default: false."
1666
+ )
1667
+ autoplay_delay: rx.Var[int | float] = field(
1668
+ doc="Seconds each slide holds before autoplay advances. Default: 4."
1669
+ )
1670
+ loop: rx.Var[bool] = field(
1671
+ doc="Wrap around from the last slide back to the first. Default: true."
1672
+ )
1673
+ radius: rx.Var[int | float] = field(
1674
+ doc="Corner radius of the slider in pixels. Default: 16."
1675
+ )
1676
+ overlay_color: rx.Var[str] = field(
1677
+ doc="Tint used for the subtle edge vignette over the images. Default: '#000000'."
1678
+ )
1679
+ show_captions: rx.Var[bool] = field(
1680
+ doc="Show slide captions that animate in with each transition. Default: true."
1681
+ )
1682
+ show_controls: rx.Var[bool] = field(
1683
+ doc="Show the previous / next arrow buttons. Default: true."
1684
+ )
1685
+ show_indicators: rx.Var[bool] = field(
1686
+ doc="Show the slide indicator dots. Default: true."
1687
+ )
1688
+
1689
+
1690
+ class OptionWheel(ReactBitsComponent):
1691
+ """Curved option picker that spins via scroll, drag, or arrow keys, fading and tilting items away from the selection.
1692
+
1693
+ Docs: https://reactbits.dev/components/option-wheel
1694
+ """
1695
+
1696
+ tag = "OptionWheel"
1697
+ alias = "ReactBitsOptionWheel"
1698
+ is_default = True
1699
+ _rb_category = "Components"
1700
+ _rb_name = "OptionWheel"
1701
+ _rb_files = ('OptionWheel.css', 'OptionWheel.jsx')
1702
+
1703
+ items: rx.Var[list[str]] = field(
1704
+ doc="Labels rendered as the wheel options. Default: DEFAULT_ITEMS."
1705
+ )
1706
+ default_selected: rx.Var[int | float] = field(
1707
+ doc="Index of the option selected on mount. Default: 3."
1708
+ )
1709
+ text_color: rx.Var[str] = field(
1710
+ doc="Resting color of the option labels. Default: '#a6a6a6'."
1711
+ )
1712
+ active_color: rx.Var[str] = field(
1713
+ doc="Color an option blends toward as it reaches the middle of the wheel. Default: '#ffffff'."
1714
+ )
1715
+ side: rx.Var[Literal["left", "right"]] = field(
1716
+ doc="Edge of the container the wheel curves around. Default: 'left'."
1717
+ )
1718
+ font_size: rx.Var[int | float] = field(
1719
+ doc="Font size of the option labels in rem. Default: 3."
1720
+ )
1721
+ spacing: rx.Var[int | float] = field(
1722
+ doc="Vertical distance between options as a multiple of the font size. Default: 1.4."
1723
+ )
1724
+ curve: rx.Var[int | float] = field(
1725
+ doc="Depth of the circular curve; 0 flattens the wheel into a straight list. Default: 1."
1726
+ )
1727
+ tilt: rx.Var[int | float] = field(
1728
+ doc="Angle in degrees between neighboring options; higher values curl the wheel tighter. Default: 6."
1729
+ )
1730
+ blur: rx.Var[int | float] = field(
1731
+ doc="Blur in pixels added per step away from the middle. Default: 2."
1732
+ )
1733
+ fade: rx.Var[int | float] = field(
1734
+ doc="Opacity lost per step away from the middle. Default: 0.25."
1735
+ )
1736
+ min_opacity: rx.Var[int | float] = field(
1737
+ doc="Opacity floor for the furthest options. Default: 0.05."
1738
+ )
1739
+ smoothing: rx.Var[int | float] = field(
1740
+ doc="Easing time constant in milliseconds; higher values feel heavier. Default: 200."
1741
+ )
1742
+ inset: rx.Var[int | float] = field(
1743
+ doc="Padding in pixels between the anchored edge and the centered option. Default: 80."
1744
+ )
1745
+ loop: rx.Var[bool] = field(
1746
+ doc="Wrap around infinitely instead of stopping at the first and last option. Default: false."
1747
+ )
1748
+ draggable: rx.Var[bool] = field(
1749
+ doc="Allow dragging the wheel with a pointer, in addition to scroll and arrow keys. Default: true."
1750
+ )
1751
+ sound_url: rx.Var[str] = field(
1752
+ doc="URL of a short tick sound played when the selection changes; empty disables it."
1753
+ )
1754
+ sound_volume: rx.Var[int | float] = field(
1755
+ doc="Playback volume of the tick sound. Default: 0.5."
1756
+ )
1757
+ on_change: rx.EventHandler[lambda index, item: [safe(index), safe(item)]] = field(
1758
+ doc="Called whenever the wheel settles on a new option. Handler receives: index, item."
1759
+ )
1760
+
1761
+
1762
+ class PillNav(ReactBitsComponent):
1763
+ """Minimal pill nav with sliding active highlight + smooth easing.
1764
+
1765
+ Docs: https://reactbits.dev/components/pill-nav
1766
+ """
1767
+
1768
+ tag = "PillNav"
1769
+ alias = "ReactBitsPillNav"
1770
+ is_default = True
1771
+ _rb_category = "Components"
1772
+ _rb_name = "PillNav"
1773
+ _rb_files = ('PillNav.css', 'PillNav.jsx')
1774
+ lib_dependencies: list[str] = ['gsap@3.13.0']
1775
+
1776
+ logo: rx.Var[str] = field(
1777
+ doc="URL for the logo image. Default: -."
1778
+ )
1779
+ logo_alt: rx.Var[str] = field(
1780
+ doc="Alt text for the logo image. Default: 'Logo'."
1781
+ )
1782
+ items: rx.Var[list[Any]] = field(
1783
+ doc="Array of navigation items with label, href, and optional ariaLabel. Default: -."
1784
+ )
1785
+ active_href: rx.Var[str] = field(
1786
+ doc="The href of the currently active navigation item."
1787
+ )
1788
+ ease: rx.Var[str] = field(
1789
+ doc="GSAP easing function for animations. Default: 'power3.easeOut'."
1790
+ )
1791
+ base_color: rx.Var[str] = field(
1792
+ doc="Base background color for the navigation. Default: '#fff'."
1793
+ )
1794
+ pill_color: rx.Var[str] = field(
1795
+ doc="Background color for navigation pills. Default: '#120F17'."
1796
+ )
1797
+ hovered_pill_text_color: rx.Var[str] = field(
1798
+ doc="Text color when hovering over pills. Default: '#120F17'."
1799
+ )
1800
+ pill_text_color: rx.Var[str] = field(
1801
+ doc="Text color for navigation pills. Default: baseColor."
1802
+ )
1803
+ initial_load_animation: rx.Var[bool] = field(
1804
+ doc="Enable initial load animation for logo scale and nav items reveal. Default: true."
1805
+ )
1806
+ on_mobile_menu_click: rx.EventHandler[no_args_event_spec] = field(
1807
+ doc="Callback function triggered when mobile menu button is clicked"
1808
+ )
1809
+
1810
+
1811
+ class PixelCard(ReactBitsComponent):
1812
+ """Card content revealed through pixel expansion transition.
1813
+
1814
+ Docs: https://reactbits.dev/components/pixel-card
1815
+ """
1816
+
1817
+ tag = "PixelCard"
1818
+ alias = "ReactBitsPixelCard"
1819
+ is_default = True
1820
+ _rb_category = "Components"
1821
+ _rb_name = "PixelCard"
1822
+ _rb_files = ('PixelCard.css', 'PixelCard.jsx')
1823
+
1824
+ variant: rx.Var[str] = field(
1825
+ doc="Defines the color scheme and animation style. Default: 'default'."
1826
+ )
1827
+ gap: rx.Var[int | float] = field(
1828
+ doc="Pixel grid gap size in pixels. Default: varies by variant."
1829
+ )
1830
+ speed: rx.Var[int | float] = field(
1831
+ doc="Animation speed modifier (lower is slower). Default: varies by variant."
1832
+ )
1833
+ colors: rx.Var[str] = field(
1834
+ doc="Comma-separated list of colors for the pixel effect. Default: \"#f8fafc,#f1f5f9,#cbd5e1\"."
1835
+ )
1836
+ no_focus: rx.Var[bool] = field(
1837
+ doc="If true, prevents animation from triggering on focus. Default: false."
1838
+ )
1839
+
1840
+
1841
+ class ProfileCard(ReactBitsComponent):
1842
+ """Animated profile card glare with 3D hover effect.
1843
+
1844
+ Docs: https://reactbits.dev/components/profile-card
1845
+ """
1846
+
1847
+ tag = "ProfileCard"
1848
+ alias = "ReactBitsProfileCard"
1849
+ is_default = True
1850
+ _rb_category = "Components"
1851
+ _rb_name = "ProfileCard"
1852
+ _rb_files = ('ProfileCard.css', 'ProfileCard.jsx')
1853
+
1854
+ avatar_url: rx.Var[str] = field(
1855
+ doc="URL for the main avatar image displayed on the card. Default: '<Placeholder for avatar URL>'."
1856
+ )
1857
+ icon_url: rx.Var[str] = field(
1858
+ doc="Optional URL for an icon pattern overlay on the card background. Default: '<Placeholder for icon URL>'."
1859
+ )
1860
+ grain_url: rx.Var[str] = field(
1861
+ doc="Optional URL for a grain texture overlay effect. Default: '<Placeholder for grain URL>'."
1862
+ )
1863
+ inner_gradient: rx.Var[str] = field(
1864
+ doc="Custom CSS gradient string for the inner card gradient."
1865
+ )
1866
+ behind_glow_enabled: rx.Var[bool] = field(
1867
+ doc="Toggle the smooth radial glow that follows the cursor behind the card. Default: true."
1868
+ )
1869
+ behind_glow_color: rx.Var[str] = field(
1870
+ doc="CSS color for the behind-the-card glow (e.g. rgba/hsla/hex). Default: \"rgba(125, 190, 255, 0.67)\"."
1871
+ )
1872
+ behind_glow_size: rx.Var[str] = field(
1873
+ doc="Size of the glow as a length/percentage stop in the radial gradient. Default: \"50%\"."
1874
+ )
1875
+ enable_tilt: rx.Var[bool] = field(
1876
+ doc="Enable or disable the 3D tilt effect on mouse hover. Default: true."
1877
+ )
1878
+ enable_mobile_tilt: rx.Var[bool] = field(
1879
+ doc="Enable or disable the 3D tilt effect on mobile devices. Default: false."
1880
+ )
1881
+ mobile_tilt_sensitivity: rx.Var[int | float] = field(
1882
+ doc="Sensitivity of the 3D tilt effect on mobile devices. Default: 5."
1883
+ )
1884
+ mini_avatar_url: rx.Var[str] = field(
1885
+ doc="Optional URL for a smaller avatar in the user info section."
1886
+ )
1887
+ name: rx.Var[str] = field(
1888
+ doc="User's display name. Default: 'Javi A. Torres'."
1889
+ )
1890
+ title: rx.Var[str] = field(
1891
+ doc="User's job title or role. Default: 'Software Engineer'."
1892
+ )
1893
+ handle: rx.Var[str] = field(
1894
+ doc="User's handle or username (displayed with @ prefix). Default: 'javicodes'."
1895
+ )
1896
+ status: rx.Var[str] = field(
1897
+ doc="User's current status. Default: 'Online'."
1898
+ )
1899
+ contact_text: rx.Var[str] = field(
1900
+ doc="Text displayed on the contact button. Default: 'Contact'."
1901
+ )
1902
+ show_user_info: rx.Var[bool] = field(
1903
+ doc="Whether to display the user information section. Default: true."
1904
+ )
1905
+ on_contact_click: rx.EventHandler[no_args_event_spec] = field(
1906
+ doc="Callback function called when the contact button is clicked"
1907
+ )
1908
+
1909
+
1910
+ class ReflectiveCard(ReactBitsComponent):
1911
+ """Card with dynamic webcam reflection and glare effects that respond to cursor movement.
1912
+
1913
+ Docs: https://reactbits.dev/components/reflective-card
1914
+ """
1915
+
1916
+ tag = "ReflectiveCard"
1917
+ alias = "ReactBitsReflectiveCard"
1918
+ is_default = True
1919
+ _rb_category = "Components"
1920
+ _rb_name = "ReflectiveCard"
1921
+ _rb_files = ('ReflectiveCard.css', 'ReflectiveCard.jsx')
1922
+ lib_dependencies: list[str] = ['lucide-react']
1923
+
1924
+ blur_strength: rx.Var[int | float] = field(
1925
+ doc="The intensity of the blur effect (0-20px). Default: 12."
1926
+ )
1927
+ color: rx.Var[str] = field(
1928
+ doc="The base text color. Default: 'white'."
1929
+ )
1930
+ metalness: rx.Var[int | float] = field(
1931
+ doc="The opacity of the metallic sheen (0-1). Default: 1."
1932
+ )
1933
+ roughness: rx.Var[int | float] = field(
1934
+ doc="The opacity of the noise texture (0-1). Default: 0.4."
1935
+ )
1936
+ overlay_color: rx.Var[str] = field(
1937
+ doc="The color of the overlay tint. Default: 'rgba(255, 255, 255, 0.1)'."
1938
+ )
1939
+ displacement_strength: rx.Var[int | float] = field(
1940
+ doc="Strength of the displacement (how much it warps). Default: 20."
1941
+ )
1942
+ noise_scale: rx.Var[int | float] = field(
1943
+ doc="Scale of the noise texture (size of the ripples). Default: 1."
1944
+ )
1945
+ specular_constant: rx.Var[int | float] = field(
1946
+ doc="Specular constant for the lighting (shininess). Default: 1.2."
1947
+ )
1948
+ grayscale: rx.Var[int | float] = field(
1949
+ doc="Grayscale intensity (0-1). Default: 1."
1950
+ )
1951
+ glass_distortion: rx.Var[int | float] = field(
1952
+ doc="Strength of the glass edge distortion. Default: 0."
1953
+ )
1954
+
1955
+
1956
+ class ScrollStack(ReactBitsComponent):
1957
+ """Overlapping card stack reveals on scroll with depth layering.
1958
+
1959
+ Docs: https://reactbits.dev/components/scroll-stack
1960
+ """
1961
+
1962
+ tag = "ScrollStack"
1963
+ alias = "ReactBitsScrollStack"
1964
+ is_default = True
1965
+ _rb_category = "Components"
1966
+ _rb_name = "ScrollStack"
1967
+ _rb_files = ('ScrollStack.css', 'ScrollStack.jsx')
1968
+ lib_dependencies: list[str] = ['lenis@1.3.13']
1969
+
1970
+ item_distance: rx.Var[int | float] = field(
1971
+ doc="Distance between stacked items in pixels. Default: 100."
1972
+ )
1973
+ item_scale: rx.Var[int | float] = field(
1974
+ doc="Scale increment for each stacked item. Default: 0.03."
1975
+ )
1976
+ item_stack_distance: rx.Var[int | float] = field(
1977
+ doc="Distance between items when they start stacking. Default: 30."
1978
+ )
1979
+ stack_position: rx.Var[str] = field(
1980
+ doc="Position where the stacking effect begins as a percentage of viewport height. Default: '20%'."
1981
+ )
1982
+ scale_end_position: rx.Var[str] = field(
1983
+ doc="Position where the scaling effect ends as a percentage of viewport height. Default: '10%'."
1984
+ )
1985
+ base_scale: rx.Var[int | float] = field(
1986
+ doc="Base scale value for the first item in the stack. Default: 0.85."
1987
+ )
1988
+ scale_duration: rx.Var[int | float] = field(
1989
+ doc="Duration of the scaling animation in seconds. Default: 0.5."
1990
+ )
1991
+ rotation_amount: rx.Var[int | float] = field(
1992
+ doc="Rotation amount for each item in degrees. Default: 0."
1993
+ )
1994
+ blur_amount: rx.Var[int | float] = field(
1995
+ doc="Blur amount for items that are further back in the stack. Default: 0."
1996
+ )
1997
+ use_window_scroll: rx.Var[bool] = field(
1998
+ doc="Whether to use window scroll for the stack. Default: false."
1999
+ )
2000
+ on_stack_complete: rx.EventHandler[no_args_event_spec] = field(
2001
+ doc="Callback function called when the stack animation is complete."
2002
+ )
2003
+
2004
+
2005
+ class ScrollStackItem(ReactBitsComponent):
2006
+ """A card inside a ScrollStack."""
2007
+
2008
+ tag = "ScrollStackItem"
2009
+ alias = "ReactBitsScrollStackItem"
2010
+ is_default = False
2011
+ _rb_category = "Components"
2012
+ _rb_name = "ScrollStack"
2013
+ _rb_files = ('ScrollStack.css', 'ScrollStack.jsx')
2014
+ lib_dependencies: list[str] = ['lenis@1.3.13']
2015
+
2016
+ item_class_name: rx.Var[str] = field(doc="Extra class name for the card.")
2017
+
2018
+
2019
+ class SpecularButton(ReactBitsComponent):
2020
+ """Glass button with a shader-driven specular rim light that sweeps around the edge and follows the cursor.
2021
+
2022
+ Docs: https://reactbits.dev/components/specular-button
2023
+ """
2024
+
2025
+ tag = "SpecularButton"
2026
+ alias = "ReactBitsSpecularButton"
2027
+ is_default = True
2028
+ _rb_category = "Components"
2029
+ _rb_name = "SpecularButton"
2030
+ _rb_files = ('SpecularButton.css', 'SpecularButton.jsx')
2031
+ lib_dependencies: list[str] = ['ogl@1.0.11']
2032
+
2033
+ size: rx.Var[Literal["sm", "md", "lg"]] = field(
2034
+ doc="Preset padding and font size of the button. Default: 'lg'."
2035
+ )
2036
+ radius: rx.Var[int | float] = field(
2037
+ doc="Corner radius in pixels; clamps to a pill automatically. Default: 18."
2038
+ )
2039
+ tint: rx.Var[str] = field(
2040
+ doc="Color of the glass background tint. Default: '#ffffff'."
2041
+ )
2042
+ tint_opacity: rx.Var[int | float] = field(
2043
+ doc="Strength of the glass tint. Default: 0."
2044
+ )
2045
+ blur: rx.Var[int | float] = field(
2046
+ doc="Backdrop blur in pixels behind the button. Default: 0."
2047
+ )
2048
+ text_color: rx.Var[str] = field(
2049
+ doc="Color of the button label. Default: '#f5f5f5'."
2050
+ )
2051
+ line_color: rx.Var[str] = field(
2052
+ doc="Color of the moving specular highlight. Default: '#ffffff'."
2053
+ )
2054
+ base_color: rx.Var[str] = field(
2055
+ doc="Color of the static edge stroke under the highlight. Default: '#525252'."
2056
+ )
2057
+ intensity: rx.Var[int | float] = field(
2058
+ doc="Brightness of the specular highlight. Default: 1."
2059
+ )
2060
+ shine_size: rx.Var[int | float] = field(
2061
+ doc="Angular size in degrees of each shine streak along the edge. Default: 10."
2062
+ )
2063
+ shine_fade: rx.Var[int | float] = field(
2064
+ doc="How gradually each streak fades out at its ends, in degrees. Default: 40."
2065
+ )
2066
+ thickness: rx.Var[int | float] = field(
2067
+ doc="Width of the highlight line in pixels. Default: 1."
2068
+ )
2069
+ speed: rx.Var[int | float] = field(
2070
+ doc="Rotation speed of the sweep when autoAnimate is on. Default: 0.35."
2071
+ )
2072
+ follow_mouse: rx.Var[bool] = field(
2073
+ doc="Point the light toward the cursor. Default: true."
2074
+ )
2075
+ proximity: rx.Var[int | float] = field(
2076
+ doc="Distance in pixels within which the shine fades in as the cursor approaches. Default: 250."
2077
+ )
2078
+ auto_animate: rx.Var[bool] = field(
2079
+ doc="Keep the shine always on with a rotating sweep, regardless of cursor distance. Default: false."
2080
+ )
2081
+ disabled: rx.Var[bool] = field(
2082
+ doc="Disable the button. Default: false."
2083
+ )
2084
+ type: rx.Var[Literal["button", "submit", "reset"]] = field(
2085
+ doc="Native button type. Default: 'button'."
2086
+ )
2087
+
2088
+
2089
+ class SpotlightCard(ReactBitsComponent):
2090
+ """Dynamic spotlight follows cursor casting gradient illumination.
2091
+
2092
+ Docs: https://reactbits.dev/components/spotlight-card
2093
+ """
2094
+
2095
+ tag = "SpotlightCard"
2096
+ alias = "ReactBitsSpotlightCard"
2097
+ is_default = True
2098
+ _rb_category = "Components"
2099
+ _rb_name = "SpotlightCard"
2100
+ _rb_files = ('SpotlightCard.css', 'SpotlightCard.jsx')
2101
+
2102
+ spotlight_color: rx.Var[str] = field(
2103
+ doc="Controls the color of the radial gradient used for the spotlight effect. Default: 'rgba(255, 255, 255, 0.25)'."
2104
+ )
2105
+
2106
+
2107
+ class Stack(ReactBitsComponent):
2108
+ """Layered stack with swipe animations, autoplay and smooth transitions.
2109
+
2110
+ Docs: https://reactbits.dev/components/stack
2111
+ """
2112
+
2113
+ tag = "Stack"
2114
+ alias = "ReactBitsStack"
2115
+ is_default = True
2116
+ _rb_category = "Components"
2117
+ _rb_name = "Stack"
2118
+ _rb_files = ('Stack.css', 'Stack.jsx')
2119
+ lib_dependencies: list[str] = ['motion@12.23.21']
2120
+
2121
+ random_rotation: rx.Var[bool] = field(
2122
+ doc="Applies a random rotation to each card for a 'messy' look. Default: false."
2123
+ )
2124
+ sensitivity: rx.Var[int | float] = field(
2125
+ doc="Drag sensitivity for sending a card to the back. Default: 200."
2126
+ )
2127
+ cards: rx.Var[list[Any]] = field(
2128
+ doc="The array of card elements to display in the stack. Default: []."
2129
+ )
2130
+ animation_config: rx.Var[dict[str, Any]] = field(
2131
+ doc="Configures the spring animation's stiffness and damping. Default: { stiffness: 260, damping: 20 }."
2132
+ )
2133
+ send_to_back_on_click: rx.Var[bool] = field(
2134
+ doc="When enabled, the stack also shifts to the next card on click. Default: false."
2135
+ )
2136
+ autoplay: rx.Var[bool] = field(
2137
+ doc="When enabled, the stack automatically cycles through cards. Default: false."
2138
+ )
2139
+ autoplay_delay: rx.Var[int | float] = field(
2140
+ doc="Delay in milliseconds between automatic card transitions. Default: 3000."
2141
+ )
2142
+ pause_on_hover: rx.Var[bool] = field(
2143
+ doc="When enabled, autoplay pauses when hovering over the stack. Default: false."
2144
+ )
2145
+ mobile_click_only: rx.Var[bool] = field(
2146
+ doc="The `mobileClickOnly` prop. Default: false."
2147
+ )
2148
+ mobile_breakpoint: rx.Var[int | float] = field(
2149
+ doc="The `mobileBreakpoint` prop. Default: 768."
2150
+ )
2151
+
2152
+
2153
+ class StaggeredMenu(ReactBitsComponent):
2154
+ """Menu with staggered item animations and smooth transitions on open/close.
2155
+
2156
+ Docs: https://reactbits.dev/components/staggered-menu
2157
+ """
2158
+
2159
+ tag = "StaggeredMenu"
2160
+ alias = "ReactBitsStaggeredMenu"
2161
+ is_default = True
2162
+ _rb_category = "Components"
2163
+ _rb_name = "StaggeredMenu"
2164
+ _rb_files = ('StaggeredMenu.css', 'StaggeredMenu.jsx')
2165
+ lib_dependencies: list[str] = ['gsap@3.13.0']
2166
+
2167
+ position: rx.Var[Literal["left", "right"]] = field(
2168
+ doc="Anchor position for the menu panel (left or right side). Default: 'right'."
2169
+ )
2170
+ colors: rx.Var[list[str]] = field(
2171
+ doc="Colors used for staggered underlay layers. Default: ['#B497CF', '#5227FF']."
2172
+ )
2173
+ items: rx.Var[list[Any]] = field(
2174
+ doc="Menu items rendered inside the panel. Default: []."
2175
+ )
2176
+ social_items: rx.Var[list[Any]] = field(
2177
+ doc="Social links displayed in the menu panel. Default: []."
2178
+ )
2179
+ display_socials: rx.Var[bool] = field(
2180
+ doc="Whether to display the social links section. Default: true."
2181
+ )
2182
+ display_item_numbering: rx.Var[bool] = field(
2183
+ doc="Whether to show numbering for menu items. Default: true."
2184
+ )
2185
+ logo_url: rx.Var[str] = field(
2186
+ doc="Path to the logo image. Default: '/src/assets/logos/reactbits-gh-white.svg'."
2187
+ )
2188
+ menu_button_color: rx.Var[str] = field(
2189
+ doc="Color of the menu toggle button when closed. Default: '#fff'."
2190
+ )
2191
+ open_menu_button_color: rx.Var[str] = field(
2192
+ doc="Color of the menu toggle button when open. Default: '#fff'."
2193
+ )
2194
+ accent_color: rx.Var[str] = field(
2195
+ doc="Hover accent color for menu items. Default: '#5227FF'."
2196
+ )
2197
+ change_menu_color_on_open: rx.Var[bool] = field(
2198
+ doc="Whether to animate the button color when opening/closing. Default: true."
2199
+ )
2200
+ is_fixed: rx.Var[bool] = field(
2201
+ doc="The `isFixed` prop. Default: false."
2202
+ )
2203
+ close_on_click_away: rx.Var[bool] = field(
2204
+ doc="Whether to close the menu when clicking outside. Default: true."
2205
+ )
2206
+ on_menu_open: rx.EventHandler[no_args_event_spec] = field(
2207
+ doc="Callback function called when menu opens."
2208
+ )
2209
+ on_menu_close: rx.EventHandler[no_args_event_spec] = field(
2210
+ doc="Callback function called when menu closes."
2211
+ )
2212
+
2213
+
2214
+ class Stepper(ReactBitsComponent):
2215
+ """Animated multi-step progress indicator with active state transitions.
2216
+
2217
+ Docs: https://reactbits.dev/components/stepper
2218
+ """
2219
+
2220
+ tag = "Stepper"
2221
+ alias = "ReactBitsStepper"
2222
+ is_default = True
2223
+ _rb_category = "Components"
2224
+ _rb_name = "Stepper"
2225
+ _rb_files = ('Stepper.css', 'Stepper.jsx')
2226
+ lib_dependencies: list[str] = ['motion@12.23.21']
2227
+
2228
+ initial_step: rx.Var[int | float] = field(
2229
+ doc="The first step to display when the stepper is initialized. Default: 1."
2230
+ )
2231
+ step_circle_container_class_name: rx.Var[str] = field(
2232
+ doc="Custom class name for the container holding the step indicators."
2233
+ )
2234
+ step_container_class_name: rx.Var[str] = field(
2235
+ doc="Custom class name for the row holding the step circles/connectors."
2236
+ )
2237
+ content_class_name: rx.Var[str] = field(
2238
+ doc="Custom class name for the step\u2019s main content container."
2239
+ )
2240
+ footer_class_name: rx.Var[str] = field(
2241
+ doc="Custom class name for the footer area containing navigation buttons."
2242
+ )
2243
+ back_button_props: rx.Var[dict[str, Any]] = field(
2244
+ doc="Extra props passed to the Back button. Default: {}."
2245
+ )
2246
+ next_button_props: rx.Var[dict[str, Any]] = field(
2247
+ doc="Extra props passed to the Next/Complete button. Default: {}."
2248
+ )
2249
+ back_button_text: rx.Var[str] = field(
2250
+ doc="Text for the Back button. Default: 'Back'."
2251
+ )
2252
+ next_button_text: rx.Var[str] = field(
2253
+ doc="Text for the Next button when not on the last step. Default: 'Continue'."
2254
+ )
2255
+ disable_step_indicators: rx.Var[bool] = field(
2256
+ doc="Disables click interaction on step indicators. Default: false."
2257
+ )
2258
+ render_step_indicator: rx.Var[dict[str, Any]] = field(
2259
+ doc="Renders a custom step indicator."
2260
+ )
2261
+ on_step_change: rx.EventHandler[lambda step: [safe(step)]] = field(
2262
+ doc="Callback fired whenever the step changes. Handler receives: step."
2263
+ )
2264
+ on_final_step_completed: rx.EventHandler[no_args_event_spec] = field(
2265
+ doc="Callback fired when the stepper completes its final step."
2266
+ )
2267
+
2268
+
2269
+ class Step(ReactBitsComponent):
2270
+ """A single step inside a Stepper; wrap the step content with it."""
2271
+
2272
+ tag = "Step"
2273
+ alias = "ReactBitsStep"
2274
+ is_default = False
2275
+ _rb_category = "Components"
2276
+ _rb_name = "Stepper"
2277
+ _rb_files = ('Stepper.css', 'Stepper.jsx')
2278
+ lib_dependencies: list[str] = ['motion@12.23.21']
2279
+
2280
+
2281
+ class TiltedCard(ReactBitsComponent):
2282
+ """3D perspective tilt card reacting to pointer.
2283
+
2284
+ Docs: https://reactbits.dev/components/tilted-card
2285
+ """
2286
+
2287
+ tag = "TiltedCard"
2288
+ alias = "ReactBitsTiltedCard"
2289
+ is_default = True
2290
+ _rb_category = "Components"
2291
+ _rb_name = "TiltedCard"
2292
+ _rb_files = ('TiltedCard.css', 'TiltedCard.jsx')
2293
+ lib_dependencies: list[str] = ['motion@12.23.21']
2294
+
2295
+ image_src: rx.Var[str] = field(
2296
+ doc="The source URL of the image. Default: N/A."
2297
+ )
2298
+ alt_text: rx.Var[str] = field(
2299
+ doc="Alternative text for the image. Default: 'Tilted card image'."
2300
+ )
2301
+ caption_text: rx.Var[str] = field(
2302
+ doc="Text for the tooltip caption."
2303
+ )
2304
+ container_height: rx.Var[str] = field(
2305
+ doc="Height of the overall card container. Default: '300px'."
2306
+ )
2307
+ container_width: rx.Var[str] = field(
2308
+ doc="Width of the overall card container. Default: '100%'."
2309
+ )
2310
+ image_height: rx.Var[str] = field(
2311
+ doc="Height of the inner image. Default: '300px'."
2312
+ )
2313
+ image_width: rx.Var[str] = field(
2314
+ doc="Width of the inner image. Default: '300px'."
2315
+ )
2316
+ scale_on_hover: rx.Var[int | float] = field(
2317
+ doc="Scaling factor applied on hover. Default: 1.1."
2318
+ )
2319
+ rotate_amplitude: rx.Var[int | float] = field(
2320
+ doc="Controls how much the card tilts with mouse movement. Default: 14."
2321
+ )
2322
+ show_mobile_warning: rx.Var[bool] = field(
2323
+ doc="Whether to show a small alert about mobile usage. Default: true."
2324
+ )
2325
+ show_tooltip: rx.Var[bool] = field(
2326
+ doc="Toggles the visibility of the tooltip (figcaption). Default: true."
2327
+ )
2328
+ overlay_content: rx.Var[rx.Component | str] = field(
2329
+ doc="A React node to display as an overlay on the card."
2330
+ )
2331
+ display_overlay_content: rx.Var[bool] = field(
2332
+ doc="Whether to display any overlayContent on top of the image. Default: false."
2333
+ )
2334
+
2335
+
2336
+ accordion_gallery = AccordionGallery.create
2337
+ animated_list = AnimatedList.create
2338
+ border_glow = BorderGlow.create
2339
+ bounce_cards = BounceCards.create
2340
+ bubble_menu = BubbleMenu.create
2341
+ card_nav = CardNav.create
2342
+ card_swap = CardSwap.create
2343
+ card_swap_card = CardSwapCard.create
2344
+ carousel = Carousel.create
2345
+ chroma_grid = ChromaGrid.create
2346
+ circular_gallery = CircularGallery.create
2347
+ counter = Counter.create
2348
+ curved_input = CurvedInput.create
2349
+ decay_card = DecayCard.create
2350
+ depth_carousel = DepthCarousel.create
2351
+ dock = Dock.create
2352
+ dome_gallery = DomeGallery.create
2353
+ drift_wall = DriftWall.create
2354
+ elastic_slider = ElasticSlider.create
2355
+ flowing_menu = FlowingMenu.create
2356
+ fluid_glass = FluidGlass.create
2357
+ flying_posters = FlyingPosters.create
2358
+ folder = Folder.create
2359
+ glass_icons = GlassIcons.create
2360
+ glass_surface = GlassSurface.create
2361
+ gooey_nav = GooeyNav.create
2362
+ infinite_menu = InfiniteMenu.create
2363
+ infinite_spiral = InfiniteSpiral.create
2364
+ lanyard = Lanyard.create
2365
+ line_sidebar = LineSidebar.create
2366
+ magic_bento = MagicBento.create
2367
+ masonry = Masonry.create
2368
+ model_viewer = ModelViewer.create
2369
+ morph_slider = MorphSlider.create
2370
+ option_wheel = OptionWheel.create
2371
+ pill_nav = PillNav.create
2372
+ pixel_card = PixelCard.create
2373
+ profile_card = ProfileCard.create
2374
+ reflective_card = ReflectiveCard.create
2375
+ scroll_stack = ScrollStack.create
2376
+ scroll_stack_item = ScrollStackItem.create
2377
+ specular_button = SpecularButton.create
2378
+ spotlight_card = SpotlightCard.create
2379
+ stack = Stack.create
2380
+ staggered_menu = StaggeredMenu.create
2381
+ stepper = Stepper.create
2382
+ step = Step.create
2383
+ tilted_card = TiltedCard.create