fancy-ui-svelte 0.4.1 → 0.6.0

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.
Files changed (36) hide show
  1. package/README.md +40 -7
  2. package/dist/fancy-ui/dock/index.d.ts +1 -1
  3. package/dist/fancy-ui/dock/index.js +0 -1
  4. package/dist/fancy-ui/editorial-engine/EditorialEngine.svelte +181 -0
  5. package/dist/fancy-ui/editorial-engine/EditorialEngine.svelte.d.ts +26 -0
  6. package/dist/fancy-ui/editorial-engine/README.md +56 -0
  7. package/dist/fancy-ui/editorial-engine/engine.d.ts +7 -0
  8. package/dist/fancy-ui/editorial-engine/engine.js +581 -0
  9. package/dist/fancy-ui/editorial-engine/index.d.ts +2 -0
  10. package/dist/fancy-ui/editorial-engine/index.js +1 -0
  11. package/dist/fancy-ui/fluid-cursor/FluidCursor.svelte +168 -32
  12. package/dist/fancy-ui/fluid-cursor/FluidCursor.svelte.d.ts +7 -0
  13. package/dist/fancy-ui/fluid-cursor/FluidCursor.test.js +36 -9
  14. package/dist/fancy-ui/fluid-cursor/index.d.ts +4 -1
  15. package/dist/fancy-ui/fluid-cursor/index.js +4 -1
  16. package/dist/fancy-ui/index.d.ts +4 -0
  17. package/dist/fancy-ui/index.js +4 -0
  18. package/dist/fancy-ui/line-reveal/LineReveal.svelte +168 -0
  19. package/dist/fancy-ui/line-reveal/LineReveal.svelte.d.ts +33 -0
  20. package/dist/fancy-ui/line-reveal/README.md +42 -0
  21. package/dist/fancy-ui/line-reveal/index.d.ts +2 -0
  22. package/dist/fancy-ui/line-reveal/index.js +1 -0
  23. package/dist/fancy-ui/noise-reveal/NoiseReveal.svelte +323 -0
  24. package/dist/fancy-ui/noise-reveal/NoiseReveal.svelte.d.ts +19 -0
  25. package/dist/fancy-ui/noise-reveal/NoiseReveal.test.js +123 -0
  26. package/dist/fancy-ui/noise-reveal/index.d.ts +2 -0
  27. package/dist/fancy-ui/noise-reveal/index.js +1 -0
  28. package/dist/fancy-ui/registry.js +1589 -9
  29. package/dist/fancy-ui/shimmer-button/ShimmerButton.svelte +1 -1
  30. package/dist/fancy-ui/tailwind.css +2 -2
  31. package/dist/types.d.ts +37 -0
  32. package/package.json +10 -2
  33. package/dist/fancy-ui/fluid-cursor/FluidCursorAdvanced.svelte +0 -1556
  34. package/dist/fancy-ui/fluid-cursor/FluidCursorAdvanced.svelte.d.ts +0 -33
  35. package/dist/fancy-ui/fluid-cursor/FluidCursorAdvanced.test.js +0 -86
  36. /package/dist/fancy-ui/{fluid-cursor/FluidCursorAdvanced.test.d.ts → noise-reveal/NoiseReveal.test.d.ts} +0 -0
@@ -77,6 +77,15 @@ export const registry = {
77
77
  url: "https://ui.aceternity.com/components/apple-cards-carousel",
78
78
  },
79
79
  ],
80
+ tags: ["carousel", "cards", "animation", "spring", "scroll"],
81
+ props: [
82
+ {
83
+ name: "cards",
84
+ type: "AppleCardData[]",
85
+ description: "Cards to display in the carousel",
86
+ required: true,
87
+ },
88
+ ],
80
89
  },
81
90
  "animated-beam": {
82
91
  name: "AnimatedBeam",
@@ -85,6 +94,95 @@ export const registry = {
85
94
  category: "effects",
86
95
  status: "done",
87
96
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/animated-beam" }],
97
+ tags: ["animation", "svg", "beam", "gradient", "connection"],
98
+ props: [
99
+ {
100
+ name: "containerRef",
101
+ type: "HTMLElement",
102
+ description: "Reference to the container element that holds both endpoints",
103
+ required: true,
104
+ },
105
+ {
106
+ name: "fromRef",
107
+ type: "HTMLElement",
108
+ description: "Reference to the source element",
109
+ required: true,
110
+ },
111
+ {
112
+ name: "toRef",
113
+ type: "HTMLElement",
114
+ description: "Reference to the destination element",
115
+ required: true,
116
+ },
117
+ {
118
+ name: "curvature",
119
+ type: "number",
120
+ default: "0",
121
+ description: "Vertical curvature of the beam path",
122
+ },
123
+ {
124
+ name: "reverse",
125
+ type: "boolean",
126
+ default: "false",
127
+ description: "Reverse the animation direction",
128
+ },
129
+ {
130
+ name: "pathColor",
131
+ type: "string",
132
+ default: '"gray"',
133
+ description: "Color of the static background path",
134
+ },
135
+ { name: "pathWidth", type: "number", default: "2", description: "Stroke width of the path" },
136
+ {
137
+ name: "pathOpacity",
138
+ type: "number",
139
+ default: "0.2",
140
+ description: "Opacity of the background path",
141
+ },
142
+ {
143
+ name: "gradientStartColor",
144
+ type: "string",
145
+ default: '"#FFAA40"',
146
+ description: "Start color of the animated gradient",
147
+ },
148
+ {
149
+ name: "gradientStopColor",
150
+ type: "string",
151
+ default: '"#9C40FF"',
152
+ description: "End color of the animated gradient",
153
+ },
154
+ { name: "delay", type: "number", default: "0", description: "Animation delay in seconds" },
155
+ {
156
+ name: "duration",
157
+ type: "number",
158
+ default: "random 4-7",
159
+ description: "Animation duration in seconds",
160
+ },
161
+ {
162
+ name: "startXOffset",
163
+ type: "number",
164
+ default: "0",
165
+ description: "Horizontal offset for the start point",
166
+ },
167
+ {
168
+ name: "startYOffset",
169
+ type: "number",
170
+ default: "0",
171
+ description: "Vertical offset for the start point",
172
+ },
173
+ {
174
+ name: "endXOffset",
175
+ type: "number",
176
+ default: "0",
177
+ description: "Horizontal offset for the end point",
178
+ },
179
+ {
180
+ name: "endYOffset",
181
+ type: "number",
182
+ default: "0",
183
+ description: "Vertical offset for the end point",
184
+ },
185
+ ],
88
186
  },
89
187
  "animated-testimonials": {
90
188
  name: "AnimatedTestimonials",
@@ -92,6 +190,27 @@ export const registry = {
92
190
  description: "Testimonial carousel with smooth slide animations and optional autoplay",
93
191
  category: "data-display",
94
192
  status: "done",
193
+ tags: ["testimonials", "carousel", "animation", "social-proof"],
194
+ props: [
195
+ {
196
+ name: "testimonials",
197
+ type: "Testimonial[]",
198
+ description: "Array of testimonials to display",
199
+ required: true,
200
+ },
201
+ {
202
+ name: "autoplay",
203
+ type: "boolean",
204
+ default: "false",
205
+ description: "Auto-advance testimonials",
206
+ },
207
+ {
208
+ name: "interval",
209
+ type: "number",
210
+ default: "5000",
211
+ description: "Interval between auto-advances in ms",
212
+ },
213
+ ],
95
214
  },
96
215
  "bg-falling-stars": {
97
216
  name: "FallingStarsBg",
@@ -99,6 +218,11 @@ export const registry = {
99
218
  description: "Canvas-based 3D starfield with perspective projection, motion trails, and glow",
100
219
  category: "backgrounds",
101
220
  status: "done",
221
+ tags: ["background", "stars", "canvas", "animation", "3d", "space"],
222
+ props: [
223
+ { name: "color", type: "string", default: '"#FFF"', description: "Star color as hex string" },
224
+ { name: "count", type: "number", default: "200", description: "Number of stars" },
225
+ ],
102
226
  },
103
227
  "animated-tooltip": {
104
228
  name: "AnimatedTooltip",
@@ -109,6 +233,15 @@ export const registry = {
109
233
  credits: [
110
234
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/animated-tooltip" },
111
235
  ],
236
+ tags: ["tooltip", "avatar", "animation", "hover", "team"],
237
+ props: [
238
+ {
239
+ name: "items",
240
+ type: "TooltipItem[]",
241
+ description: "Array of items with id, name, designation, and image URL",
242
+ required: true,
243
+ },
244
+ ],
112
245
  },
113
246
  "blur-reveal": {
114
247
  name: "BlurReveal",
@@ -117,6 +250,36 @@ export const registry = {
117
250
  category: "text",
118
251
  status: "done",
119
252
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/blur-fade" }],
253
+ tags: ["animation", "reveal", "blur", "scroll", "stagger"],
254
+ props: [
255
+ {
256
+ name: "duration",
257
+ type: "number",
258
+ default: "1",
259
+ description: "Animation duration in seconds",
260
+ },
261
+ {
262
+ name: "delay",
263
+ type: "number",
264
+ default: "0.2",
265
+ description: "Stagger delay between children in seconds",
266
+ },
267
+ {
268
+ name: "blur",
269
+ type: "string",
270
+ default: '"20px"',
271
+ description: "Initial blur amount (CSS value)",
272
+ },
273
+ {
274
+ name: "yOffset",
275
+ type: "number",
276
+ default: "20",
277
+ description: "Initial vertical offset in pixels",
278
+ },
279
+ ],
280
+ slots: [
281
+ { name: "children", description: "Content elements to reveal with staggered animation" },
282
+ ],
120
283
  },
121
284
  "border-beam": {
122
285
  name: "BorderBeam",
@@ -125,6 +288,31 @@ export const registry = {
125
288
  category: "effects",
126
289
  status: "done",
127
290
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/border-beam" }],
291
+ tags: ["animation", "border", "gradient", "beam"],
292
+ props: [
293
+ { name: "size", type: "number", default: "200", description: "Size of the beam in pixels" },
294
+ {
295
+ name: "duration",
296
+ type: "number",
297
+ default: "15",
298
+ description: "Animation duration in seconds",
299
+ },
300
+ {
301
+ name: "borderWidth",
302
+ type: "number",
303
+ default: "1.5",
304
+ description: "Border width in pixels",
305
+ },
306
+ { name: "anchor", type: "number", default: "90", description: "Anchor position (0-100)" },
307
+ {
308
+ name: "colorFrom",
309
+ type: "string",
310
+ default: '"#ffaa40"',
311
+ description: "Gradient start color",
312
+ },
313
+ { name: "colorTo", type: "string", default: '"#9c40ff"', description: "Gradient end color" },
314
+ { name: "delay", type: "number", default: "0", description: "Animation delay in seconds" },
315
+ ],
128
316
  },
129
317
  compare: {
130
318
  name: "Compare",
@@ -133,6 +321,86 @@ export const registry = {
133
321
  category: "media",
134
322
  status: "done",
135
323
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/compare" }],
324
+ tags: ["media", "image", "slider", "comparison", "before-after", "interactive"],
325
+ props: [
326
+ {
327
+ name: "firstImage",
328
+ type: "string",
329
+ default: '""',
330
+ description: "URL of the first (left) image",
331
+ },
332
+ {
333
+ name: "secondImage",
334
+ type: "string",
335
+ default: '""',
336
+ description: "URL of the second (right) image",
337
+ },
338
+ {
339
+ name: "firstImageAlt",
340
+ type: "string",
341
+ default: '"First image"',
342
+ description: "Alt text for the first image",
343
+ },
344
+ {
345
+ name: "secondImageAlt",
346
+ type: "string",
347
+ default: '"Second image"',
348
+ description: "Alt text for the second image",
349
+ },
350
+ {
351
+ name: "firstContentClass",
352
+ type: "string",
353
+ default: '""',
354
+ description: "CSS classes for the first content container",
355
+ },
356
+ {
357
+ name: "secondContentClass",
358
+ type: "string",
359
+ default: '""',
360
+ description: "CSS classes for the second content container",
361
+ },
362
+ {
363
+ name: "initialSliderPercentage",
364
+ type: "number",
365
+ default: "50",
366
+ description: "Initial slider position (0-100)",
367
+ },
368
+ {
369
+ name: "slideMode",
370
+ type: '"hover" | "drag"',
371
+ default: '"hover"',
372
+ description: "How the slider is controlled",
373
+ },
374
+ {
375
+ name: "showHandlebar",
376
+ type: "boolean",
377
+ default: "true",
378
+ description: "Show the drag handle bar",
379
+ },
380
+ {
381
+ name: "autoplay",
382
+ type: "boolean",
383
+ default: "false",
384
+ description: "Automatically animate the slider back and forth",
385
+ },
386
+ {
387
+ name: "autoplayDuration",
388
+ type: "number",
389
+ default: "5000",
390
+ description: "Duration of one autoplay cycle in ms",
391
+ },
392
+ ],
393
+ slots: [
394
+ {
395
+ name: "firstContent",
396
+ description: "Custom content to render in the first (left) panel instead of an image",
397
+ },
398
+ {
399
+ name: "secondContent",
400
+ description: "Custom content to render in the second (right) panel instead of an image",
401
+ },
402
+ { name: "handle", description: "Custom drag handle element" },
403
+ ],
136
404
  },
137
405
  "image-trail-cursor": {
138
406
  name: "ImageTrailCursor",
@@ -140,6 +408,21 @@ export const registry = {
140
408
  description: "Cursor-following image trail with 8 animation variants",
141
409
  category: "effects",
142
410
  status: "done",
411
+ tags: ["cursor", "animation", "images", "trail", "interactive"],
412
+ props: [
413
+ {
414
+ name: "images",
415
+ type: "string[]",
416
+ default: "[]",
417
+ description: "Array of image URLs to show in the trail",
418
+ },
419
+ {
420
+ name: "variant",
421
+ type: '"type1" | "type2" | ... | "type8"',
422
+ default: '"type1"',
423
+ description: "Animation variant controlling how images appear and move",
424
+ },
425
+ ],
143
426
  },
144
427
  "interactive-grid-pattern": {
145
428
  name: "InteractiveGridPattern",
@@ -153,6 +436,32 @@ export const registry = {
153
436
  url: "https://magicui.design/docs/components/interactive-grid-pattern",
154
437
  },
155
438
  ],
439
+ tags: ["grid", "pattern", "interactive", "hover", "svg", "background"],
440
+ props: [
441
+ {
442
+ name: "squaresClassName",
443
+ type: "string",
444
+ description: "Additional CSS classes for individual squares",
445
+ },
446
+ {
447
+ name: "width",
448
+ type: "number",
449
+ default: "40",
450
+ description: "Width of each square in pixels",
451
+ },
452
+ {
453
+ name: "height",
454
+ type: "number",
455
+ default: "40",
456
+ description: "Height of each square in pixels",
457
+ },
458
+ {
459
+ name: "squares",
460
+ type: "[number, number]",
461
+ default: "[24, 24]",
462
+ description: "Grid dimensions as [columns, rows]",
463
+ },
464
+ ],
156
465
  },
157
466
  "line-hover-link": {
158
467
  name: "LineHoverLink",
@@ -161,6 +470,102 @@ export const registry = {
161
470
  category: "navigation",
162
471
  status: "done",
163
472
  credits: [{ source: "VengenceUI", url: "https://www.vengence-ui.com/docs/line-hover-link" }],
473
+ tags: ["link", "navigation", "hover", "animation", "underline", "css"],
474
+ props: [
475
+ {
476
+ name: "variant",
477
+ type: '"slide" | "double" | "grow" | "strike" | "fade" | "pulse" | "swap" | "sweep" | "bounce" | "arc" | "scribble"',
478
+ default: '"slide"',
479
+ description: "The animation variant",
480
+ },
481
+ { name: "href", type: "string", default: '"#"', description: "Link href" },
482
+ { name: "target", type: "string", description: "Link target attribute" },
483
+ { name: "rel", type: "string", description: "Link rel attribute" },
484
+ { name: "aria-label", type: "string", description: "Accessible label" },
485
+ ],
486
+ slots: [{ name: "children", description: "Link text content" }],
487
+ },
488
+ "line-reveal": {
489
+ name: "LineReveal",
490
+ slug: "line-reveal",
491
+ description: "Staggered line-by-line text reveal with lines computed by pretext instead of DOM splitting",
492
+ category: "text",
493
+ status: "done",
494
+ credits: [{ source: "pretext", url: "https://github.com/chenglou/pretext" }],
495
+ tags: ["text", "animation", "reveal", "stagger", "pretext", "typography"],
496
+ props: [
497
+ { name: "text", type: "string", description: "Text to reveal", required: true },
498
+ {
499
+ name: "font",
500
+ type: "string",
501
+ default: "'600 32px \"Helvetica Neue\", Helvetica, Arial, sans-serif'",
502
+ description: "CSS font shorthand used for both measurement and rendering",
503
+ },
504
+ {
505
+ name: "lineHeight",
506
+ type: "number",
507
+ default: "1.2 × font size",
508
+ description: "Line height in pixels",
509
+ },
510
+ {
511
+ name: "stagger",
512
+ type: "number",
513
+ default: "0.08",
514
+ description: "Delay between lines in seconds",
515
+ },
516
+ {
517
+ name: "duration",
518
+ type: "number",
519
+ default: "0.7",
520
+ description: "Animation duration per line in seconds",
521
+ },
522
+ { name: "delay", type: "number", default: "0", description: "Initial delay in seconds" },
523
+ {
524
+ name: "once",
525
+ type: "boolean",
526
+ default: "true",
527
+ description: "Animate only on first viewport entry",
528
+ },
529
+ { name: "class", type: "string", description: "Additional CSS classes" },
530
+ ],
531
+ },
532
+ "editorial-engine": {
533
+ name: "EditorialEngine",
534
+ slug: "editorial-engine",
535
+ description: "Live magazine layout: multi-column text flowing around draggable orbs with zero DOM reads, powered by pretext",
536
+ category: "text",
537
+ status: "done",
538
+ credits: [
539
+ { source: "pretext editorial engine", url: "https://chenglou.me/pretext/editorial-engine/" },
540
+ ],
541
+ tags: ["text", "layout", "magazine", "columns", "pretext", "interactive", "typography"],
542
+ props: [
543
+ {
544
+ name: "headline",
545
+ type: "string",
546
+ default: "built-in copy",
547
+ description: "Auto-sized headline (largest font size that breaks no word)",
548
+ },
549
+ {
550
+ name: "body",
551
+ type: "string",
552
+ default: "built-in copy",
553
+ description: "Body text, paragraphs separated by blank lines",
554
+ },
555
+ {
556
+ name: "pullquotes",
557
+ type: "string[]",
558
+ default: "built-in quotes",
559
+ description: "Up to two pullquotes embedded in the columns",
560
+ },
561
+ {
562
+ name: "fontFamily",
563
+ type: "string",
564
+ default: "Palatino serif stack",
565
+ description: "Font family stack used for all text",
566
+ },
567
+ { name: "class", type: "string", description: "Additional CSS classes for the stage" },
568
+ ],
164
569
  },
165
570
  "logo-cloud": {
166
571
  name: "LogoCloud",
@@ -169,6 +574,16 @@ export const registry = {
169
574
  category: "data-display",
170
575
  status: "done",
171
576
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/marquee" }],
577
+ tags: ["logos", "marquee", "brands", "animation", "scrolling"],
578
+ props: [
579
+ { name: "title", type: "string", description: "Optional title displayed above the logos" },
580
+ {
581
+ name: "logos",
582
+ type: "Logo[]",
583
+ default: "[]",
584
+ description: "Array of logos with name and image path",
585
+ },
586
+ ],
172
587
  },
173
588
  "direction-aware-hover": {
174
589
  name: "DirectionAwareHover",
@@ -182,6 +597,34 @@ export const registry = {
182
597
  url: "https://ui.aceternity.com/components/direction-aware-hover",
183
598
  },
184
599
  ],
600
+ tags: ["card", "hover", "image", "animation", "direction", "interactive"],
601
+ props: [
602
+ {
603
+ name: "imageUrl",
604
+ type: "string",
605
+ description: "URL of the background image",
606
+ required: true,
607
+ },
608
+ {
609
+ name: "imageAlt",
610
+ type: "string",
611
+ default: '"image"',
612
+ description: "Alt text for the image",
613
+ },
614
+ {
615
+ name: "childrenClass",
616
+ type: "string",
617
+ default: '""',
618
+ description: "CSS classes for the overlay content wrapper",
619
+ },
620
+ {
621
+ name: "imageClass",
622
+ type: "string",
623
+ default: '""',
624
+ description: "CSS classes for the image element",
625
+ },
626
+ ],
627
+ slots: [{ name: "children", description: "Content shown in the overlay when hovered" }],
185
628
  },
186
629
  "rainbow-button": {
187
630
  name: "RainbowButton",
@@ -190,6 +633,12 @@ export const registry = {
190
633
  category: "buttons",
191
634
  status: "done",
192
635
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/rainbow-button" }],
636
+ tags: ["button", "animation", "rainbow", "gradient", "cta"],
637
+ props: [
638
+ { name: "speed", type: "number", default: "2", description: "Animation speed in seconds" },
639
+ { name: "href", type: "string", description: "Render as anchor element when provided" },
640
+ ],
641
+ slots: [{ name: "children", description: "Button label content" }],
193
642
  },
194
643
  "ripple-button": {
195
644
  name: "RippleButton",
@@ -198,6 +647,22 @@ export const registry = {
198
647
  category: "buttons",
199
648
  status: "done",
200
649
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/ripple-button" }],
650
+ tags: ["button", "ripple", "click", "animation", "material"],
651
+ props: [
652
+ {
653
+ name: "rippleColor",
654
+ type: "string",
655
+ default: '"#ADD8E6"',
656
+ description: "Color of the ripple effect",
657
+ },
658
+ {
659
+ name: "duration",
660
+ type: "number",
661
+ default: "600",
662
+ description: "Animation duration in milliseconds",
663
+ },
664
+ ],
665
+ slots: [{ name: "children", description: "Button content" }],
201
666
  },
202
667
  "shimmer-button": {
203
668
  name: "ShimmerButton",
@@ -206,6 +671,40 @@ export const registry = {
206
671
  category: "buttons",
207
672
  status: "done",
208
673
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/shimmer-button" }],
674
+ tags: ["button", "shimmer", "gradient", "animation", "cta"],
675
+ props: [
676
+ {
677
+ name: "shimmerColor",
678
+ type: "string",
679
+ default: '"#ffffff"',
680
+ description: "Shimmer highlight color",
681
+ },
682
+ {
683
+ name: "shimmerSize",
684
+ type: "string",
685
+ default: '"0.05em"',
686
+ description: "Thickness of the shimmer border",
687
+ },
688
+ {
689
+ name: "borderRadius",
690
+ type: "string",
691
+ default: '"100px"',
692
+ description: "Button border radius",
693
+ },
694
+ {
695
+ name: "shimmerDuration",
696
+ type: "string",
697
+ default: '"3s"',
698
+ description: "Duration of the shimmer animation cycle",
699
+ },
700
+ {
701
+ name: "background",
702
+ type: "string",
703
+ default: '"rgba(0, 0, 0, 1)"',
704
+ description: "Button background color",
705
+ },
706
+ ],
707
+ slots: [{ name: "children", description: "Button content" }],
209
708
  },
210
709
  timeline: {
211
710
  name: "Timeline",
@@ -214,6 +713,23 @@ export const registry = {
214
713
  category: "navigation",
215
714
  status: "done",
216
715
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/timeline" }],
716
+ tags: ["timeline", "scroll", "navigation", "progress", "vertical"],
717
+ props: [
718
+ {
719
+ name: "items",
720
+ type: "TimelineItem[]",
721
+ default: "[]",
722
+ description: "Timeline entries with id and label",
723
+ },
724
+ { name: "title", type: "string", description: "Heading text" },
725
+ { name: "description", type: "string", description: "Subheading text" },
726
+ ],
727
+ slots: [
728
+ {
729
+ name: "content",
730
+ description: "Content snippet called for each timeline item, receives the item as argument",
731
+ },
732
+ ],
217
733
  },
218
734
  "bg-stars": {
219
735
  name: "StarsBackground",
@@ -224,6 +740,35 @@ export const registry = {
224
740
  credits: [
225
741
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/stars-background" },
226
742
  ],
743
+ tags: ["background", "stars", "parallax", "animation", "space", "mouse"],
744
+ props: [
745
+ {
746
+ name: "factor",
747
+ type: "number",
748
+ default: "0.05",
749
+ description: "Parallax factor for mouse movement",
750
+ },
751
+ {
752
+ name: "speed",
753
+ type: "number",
754
+ default: "50",
755
+ description: "Base animation speed in seconds",
756
+ },
757
+ {
758
+ name: "stiffness",
759
+ type: "number",
760
+ default: "50",
761
+ description: "Spring stiffness for parallax",
762
+ },
763
+ {
764
+ name: "damping",
765
+ type: "number",
766
+ default: "20",
767
+ description: "Spring damping for parallax",
768
+ },
769
+ { name: "starColor", type: "string", default: '"#fff"', description: "Color of the stars" },
770
+ ],
771
+ slots: [{ name: "children", description: "Child content to render over the stars" }],
227
772
  },
228
773
  dock: {
229
774
  name: "Dock",
@@ -232,6 +777,34 @@ export const registry = {
232
777
  category: "navigation",
233
778
  status: "done",
234
779
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/dock" }],
780
+ tags: ["dock", "navigation", "macos", "magnification", "hover"],
781
+ props: [
782
+ {
783
+ name: "magnification",
784
+ type: "number",
785
+ default: "60",
786
+ description: "Maximum icon size in pixels when magnified",
787
+ },
788
+ {
789
+ name: "distance",
790
+ type: "number",
791
+ default: "140",
792
+ description: "Distance in pixels over which magnification takes effect",
793
+ },
794
+ {
795
+ name: "direction",
796
+ type: '"top" | "middle" | "bottom"',
797
+ default: '"middle"',
798
+ description: "Vertical alignment of icons relative to the dock bar",
799
+ },
800
+ {
801
+ name: "orientation",
802
+ type: '"horizontal" | "vertical"',
803
+ default: '"horizontal"',
804
+ description: "Dock orientation",
805
+ },
806
+ ],
807
+ slots: [{ name: "children", description: "DockIcon and DockSeparator elements" }],
235
808
  },
236
809
  "fluid-cursor": {
237
810
  name: "FluidCursor",
@@ -242,15 +815,126 @@ export const registry = {
242
815
  credits: [
243
816
  { source: "Inspira UI", url: "https://inspira-ui.com/components/cursor/fluid-cursor" },
244
817
  ],
245
- },
246
- "fluid-cursor-advanced": {
247
- name: "FluidCursorAdvanced",
248
- slug: "fluid-cursor-advanced",
249
- description: "WebGL fluid simulation confined to a parent container element",
250
- category: "effects",
251
- status: "done",
252
- credits: [
253
- { source: "Inspira UI", url: "https://inspira-ui.com/components/cursor/fluid-cursor" },
818
+ tags: ["cursor", "webgl", "fluid", "simulation", "interactive"],
819
+ props: [
820
+ {
821
+ name: "simResolution",
822
+ type: "number",
823
+ default: "128",
824
+ description: "Simulation grid resolution",
825
+ },
826
+ {
827
+ name: "dyeResolution",
828
+ type: "number",
829
+ default: "1440",
830
+ description: "Dye/color buffer resolution",
831
+ },
832
+ {
833
+ name: "captureResolution",
834
+ type: "number",
835
+ default: "512",
836
+ description: "Capture buffer resolution",
837
+ },
838
+ {
839
+ name: "densityDissipation",
840
+ type: "number",
841
+ default: "3.5",
842
+ description: "Rate at which density fades",
843
+ },
844
+ {
845
+ name: "velocityDissipation",
846
+ type: "number",
847
+ default: "2",
848
+ description: "Rate at which velocity fades",
849
+ },
850
+ { name: "pressure", type: "number", default: "0.1", description: "Pressure solver strength" },
851
+ {
852
+ name: "pressureIterations",
853
+ type: "number",
854
+ default: "20",
855
+ description: "Number of pressure solver iterations",
856
+ },
857
+ { name: "curl", type: "number", default: "3", description: "Amount of curl/vorticity" },
858
+ {
859
+ name: "splatRadius",
860
+ type: "number",
861
+ default: "0.2",
862
+ description: "Radius of fluid splats",
863
+ },
864
+ { name: "splatForce", type: "number", default: "6000", description: "Force of fluid splats" },
865
+ { name: "shading", type: "boolean", default: "true", description: "Enable fluid shading" },
866
+ {
867
+ name: "colorUpdateSpeed",
868
+ type: "number",
869
+ default: "10",
870
+ description: "Speed of color changes",
871
+ },
872
+ {
873
+ name: "backColor",
874
+ type: "ColorRGB | string",
875
+ default: "{ r: 0.5, g: 0, b: 0 }",
876
+ description: "Background color",
877
+ },
878
+ {
879
+ name: "transparent",
880
+ type: "boolean",
881
+ default: "true",
882
+ description: "Transparent background",
883
+ },
884
+ { name: "fluidColor", type: "string", description: "Override all fluid with a single color" },
885
+ {
886
+ name: "fluidColors",
887
+ type: "string[]",
888
+ description: "Array of colors to cycle through for fluid splats",
889
+ },
890
+ {
891
+ name: "colorIntensity",
892
+ type: "number",
893
+ default: "0.15",
894
+ description: "Intensity of color mixing",
895
+ },
896
+ {
897
+ name: "autoSplat",
898
+ type: "boolean",
899
+ default: "false",
900
+ description: "Automatically create random splats",
901
+ },
902
+ {
903
+ name: "autoSplatInterval",
904
+ type: "number",
905
+ default: "1500",
906
+ description: "Interval between auto-splats in ms",
907
+ },
908
+ {
909
+ name: "interactive",
910
+ type: "boolean",
911
+ default: "true",
912
+ description: "React to mouse/touch input",
913
+ },
914
+ {
915
+ name: "pauseWhenHidden",
916
+ type: "boolean",
917
+ default: "true",
918
+ description: "Pause simulation when tab is hidden",
919
+ },
920
+ {
921
+ name: "splatOnMount",
922
+ type: "boolean",
923
+ default: "false",
924
+ description: "Create a splat on mount",
925
+ },
926
+ {
927
+ name: "allowMultiple",
928
+ type: "boolean",
929
+ default: "false",
930
+ description: "Allow multiple instances simultaneously",
931
+ },
932
+ {
933
+ name: "contained",
934
+ type: "boolean",
935
+ default: "true",
936
+ description: "Confine simulation to parent container",
937
+ },
254
938
  ],
255
939
  },
256
940
  "glow-border": {
@@ -262,6 +946,28 @@ export const registry = {
262
946
  credits: [
263
947
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/background-gradient" },
264
948
  ],
949
+ tags: ["border", "glow", "animation", "gradient", "decoration"],
950
+ props: [
951
+ {
952
+ name: "borderRadius",
953
+ type: "number",
954
+ default: "10",
955
+ description: "Border radius in pixels",
956
+ },
957
+ {
958
+ name: "color",
959
+ type: "string | string[]",
960
+ default: '"#FFF"',
961
+ description: "Glow color or array of colors for gradient",
962
+ },
963
+ { name: "borderWidth", type: "number", default: "2", description: "Border width in pixels" },
964
+ {
965
+ name: "duration",
966
+ type: "number",
967
+ default: "10",
968
+ description: "Animation duration in seconds",
969
+ },
970
+ ],
265
971
  },
266
972
  "gradient-button": {
267
973
  name: "GradientButton",
@@ -272,6 +978,41 @@ export const registry = {
272
978
  credits: [
273
979
  { source: "Inspira UI", url: "https://inspira-ui.com/components/buttons/gradient-button" },
274
980
  ],
981
+ tags: ["button", "gradient", "animation", "rainbow", "border", "cta"],
982
+ props: [
983
+ {
984
+ name: "colors",
985
+ type: "string[]",
986
+ default: '["#FF0000","#FFA500","#FFFF00","#008000","#0000FF","#4B0082","#EE82EE","#FF0000"]',
987
+ description: "Gradient colors for the conic-gradient border",
988
+ },
989
+ {
990
+ name: "duration",
991
+ type: "number",
992
+ default: "2500",
993
+ description: "Animation duration in milliseconds",
994
+ },
995
+ { name: "borderWidth", type: "number", default: "2", description: "Border width in pixels" },
996
+ {
997
+ name: "borderRadius",
998
+ type: "number",
999
+ default: "8",
1000
+ description: "Border radius in pixels",
1001
+ },
1002
+ {
1003
+ name: "blur",
1004
+ type: "number",
1005
+ default: "4",
1006
+ description: "Blur amount for the gradient in pixels",
1007
+ },
1008
+ {
1009
+ name: "bgColor",
1010
+ type: "string",
1011
+ default: '"#000"',
1012
+ description: "Background color of the button content area",
1013
+ },
1014
+ ],
1015
+ slots: [{ name: "children", description: "Button content" }],
275
1016
  },
276
1017
  "interactive-hover-button": {
277
1018
  name: "InteractiveHoverButton",
@@ -285,6 +1026,16 @@ export const registry = {
285
1026
  url: "https://magicui.design/docs/components/interactive-hover-button",
286
1027
  },
287
1028
  ],
1029
+ tags: ["button", "hover", "animation", "interactive", "reveal"],
1030
+ props: [
1031
+ {
1032
+ name: "text",
1033
+ type: "string",
1034
+ default: '"Button"',
1035
+ description: "Button label text (used when children slot is not provided)",
1036
+ },
1037
+ ],
1038
+ slots: [{ name: "children", description: "Button content (overrides text prop)" }],
288
1039
  },
289
1040
  marquee: {
290
1041
  name: "Marquee",
@@ -293,6 +1044,34 @@ export const registry = {
293
1044
  category: "layout",
294
1045
  status: "done",
295
1046
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/marquee" }],
1047
+ tags: ["marquee", "scrolling", "animation", "layout", "infinite"],
1048
+ props: [
1049
+ {
1050
+ name: "reverse",
1051
+ type: "boolean",
1052
+ default: "false",
1053
+ description: "Reverse the scroll direction",
1054
+ },
1055
+ {
1056
+ name: "pauseOnHover",
1057
+ type: "boolean",
1058
+ default: "false",
1059
+ description: "Pause animation on hover",
1060
+ },
1061
+ {
1062
+ name: "vertical",
1063
+ type: "boolean",
1064
+ default: "false",
1065
+ description: "Scroll vertically instead of horizontally",
1066
+ },
1067
+ {
1068
+ name: "repeat",
1069
+ type: "number",
1070
+ default: "4",
1071
+ description: "Number of times to repeat children for seamless loop",
1072
+ },
1073
+ ],
1074
+ slots: [{ name: "children", description: "Content to repeat and scroll" }],
296
1075
  },
297
1076
  meteors: {
298
1077
  name: "Meteors",
@@ -301,6 +1080,10 @@ export const registry = {
301
1080
  category: "effects",
302
1081
  status: "done",
303
1082
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/meteors" }],
1083
+ tags: ["animation", "meteors", "particles", "decoration", "space"],
1084
+ props: [
1085
+ { name: "count", type: "number", default: "20", description: "Number of meteors to render" },
1086
+ ],
304
1087
  },
305
1088
  "flickering-grid": {
306
1089
  name: "FlickeringGrid",
@@ -311,6 +1094,49 @@ export const registry = {
311
1094
  credits: [
312
1095
  { source: "Magic UI", url: "https://magicui.design/docs/components/flickering-grid" },
313
1096
  ],
1097
+ tags: ["background", "grid", "canvas", "animation", "pattern"],
1098
+ props: [
1099
+ {
1100
+ name: "squareSize",
1101
+ type: "number",
1102
+ default: "4",
1103
+ description: "Size of each grid square in pixels",
1104
+ },
1105
+ {
1106
+ name: "gridGap",
1107
+ type: "number",
1108
+ default: "6",
1109
+ description: "Gap between squares in pixels",
1110
+ },
1111
+ {
1112
+ name: "flickerChance",
1113
+ type: "number",
1114
+ default: "0.3",
1115
+ description: "Probability of a square changing opacity each second (0-1)",
1116
+ },
1117
+ {
1118
+ name: "color",
1119
+ type: "string",
1120
+ default: '"#000000"',
1121
+ description: "Color of the squares (hex format)",
1122
+ },
1123
+ {
1124
+ name: "maxOpacity",
1125
+ type: "number",
1126
+ default: "0.3",
1127
+ description: "Maximum opacity of squares (0-1)",
1128
+ },
1129
+ {
1130
+ name: "width",
1131
+ type: "number",
1132
+ description: "Fixed width in pixels (defaults to container width)",
1133
+ },
1134
+ {
1135
+ name: "height",
1136
+ type: "number",
1137
+ description: "Fixed height in pixels (defaults to container height)",
1138
+ },
1139
+ ],
314
1140
  },
315
1141
  "neon-border": {
316
1142
  name: "NeonBorder",
@@ -321,6 +1147,26 @@ export const registry = {
321
1147
  credits: [
322
1148
  { source: "Magic UI", url: "https://magicui.design/docs/components/neon-gradient-card" },
323
1149
  ],
1150
+ tags: ["border", "neon", "glow", "animation", "gradient", "decoration"],
1151
+ props: [
1152
+ { name: "color1", type: "string", default: '"#0496ff"', description: "First neon color" },
1153
+ { name: "color2", type: "string", default: '"#ff0a54"', description: "Second neon color" },
1154
+ {
1155
+ name: "animationType",
1156
+ type: '"none" | "half" | "full"',
1157
+ default: '"half"',
1158
+ description: "Animation type: none (static), half (50% coverage), full (100% coverage)",
1159
+ },
1160
+ {
1161
+ name: "duration",
1162
+ type: "number",
1163
+ default: "6",
1164
+ description: "Animation duration in seconds",
1165
+ },
1166
+ ],
1167
+ slots: [
1168
+ { name: "children", description: "Content to display inside the neon border container" },
1169
+ ],
324
1170
  },
325
1171
  "colourful-text": {
326
1172
  name: "ColourfulText",
@@ -331,6 +1177,28 @@ export const registry = {
331
1177
  credits: [
332
1178
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/colourful-text" },
333
1179
  ],
1180
+ tags: ["text", "animation", "color", "gradient", "typography"],
1181
+ props: [
1182
+ { name: "text", type: "string", description: "Text to animate", required: true },
1183
+ {
1184
+ name: "colors",
1185
+ type: "string[]",
1186
+ default: "[10 preset colors]",
1187
+ description: "Array of colors to cycle through",
1188
+ },
1189
+ {
1190
+ name: "startColor",
1191
+ type: "string",
1192
+ default: '"rgb(255, 255, 255)"',
1193
+ description: "Initial color before animation",
1194
+ },
1195
+ {
1196
+ name: "duration",
1197
+ type: "number",
1198
+ default: "0.5",
1199
+ description: "Transition duration in seconds for each character",
1200
+ },
1201
+ ],
334
1202
  },
335
1203
  "flip-words": {
336
1204
  name: "FlipWords",
@@ -339,6 +1207,21 @@ export const registry = {
339
1207
  category: "text",
340
1208
  status: "done",
341
1209
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/flip-words" }],
1210
+ tags: ["text", "animation", "words", "cycling", "typography", "blur"],
1211
+ props: [
1212
+ {
1213
+ name: "words",
1214
+ type: "string[]",
1215
+ description: "Array of words to cycle through",
1216
+ required: true,
1217
+ },
1218
+ {
1219
+ name: "duration",
1220
+ type: "number",
1221
+ default: "3000",
1222
+ description: "Time each word stays visible in ms",
1223
+ },
1224
+ ],
342
1225
  },
343
1226
  "hyper-text": {
344
1227
  name: "HyperText",
@@ -347,6 +1230,22 @@ export const registry = {
347
1230
  category: "text",
348
1231
  status: "done",
349
1232
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/hyper-text" }],
1233
+ tags: ["text", "animation", "scramble", "hover", "glitch", "typography"],
1234
+ props: [
1235
+ { name: "text", type: "string", description: "Text to display and scramble", required: true },
1236
+ {
1237
+ name: "duration",
1238
+ type: "number",
1239
+ default: "800",
1240
+ description: "Total animation duration in ms",
1241
+ },
1242
+ {
1243
+ name: "animateOnLoad",
1244
+ type: "boolean",
1245
+ default: "false",
1246
+ description: "Whether to animate on initial load",
1247
+ },
1248
+ ],
350
1249
  },
351
1250
  "letter-pullup": {
352
1251
  name: "LetterPullup",
@@ -355,6 +1254,21 @@ export const registry = {
355
1254
  category: "text",
356
1255
  status: "done",
357
1256
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/letter-pullup" }],
1257
+ tags: ["text", "animation", "letters", "stagger", "entrance", "typography"],
1258
+ props: [
1259
+ {
1260
+ name: "words",
1261
+ type: "string",
1262
+ description: "Text to animate (each character gets its own animation)",
1263
+ required: true,
1264
+ },
1265
+ {
1266
+ name: "delay",
1267
+ type: "number",
1268
+ default: "0.05",
1269
+ description: "Delay between each letter animation in seconds",
1270
+ },
1271
+ ],
358
1272
  },
359
1273
  "number-ticker": {
360
1274
  name: "NumberTicker",
@@ -363,6 +1277,34 @@ export const registry = {
363
1277
  category: "text",
364
1278
  status: "done",
365
1279
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/number-ticker" }],
1280
+ tags: ["text", "counter", "animation", "number", "scroll", "statistics"],
1281
+ props: [
1282
+ { name: "value", type: "number", default: "0", description: "Target number to animate to" },
1283
+ {
1284
+ name: "direction",
1285
+ type: '"up" | "down"',
1286
+ default: '"up"',
1287
+ description: 'Animation direction: "up" counts 0→value, "down" counts value→0',
1288
+ },
1289
+ {
1290
+ name: "duration",
1291
+ type: "number",
1292
+ default: "1000",
1293
+ description: "Animation duration in ms",
1294
+ },
1295
+ {
1296
+ name: "delay",
1297
+ type: "number",
1298
+ default: "0",
1299
+ description: "Delay before animation starts in ms",
1300
+ },
1301
+ {
1302
+ name: "decimalPlaces",
1303
+ type: "number",
1304
+ default: "0",
1305
+ description: "Number of decimal places to display",
1306
+ },
1307
+ ],
366
1308
  },
367
1309
  "sparkles-text": {
368
1310
  name: "SparklesText",
@@ -371,6 +1313,22 @@ export const registry = {
371
1313
  category: "text",
372
1314
  status: "done",
373
1315
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/sparkles" }],
1316
+ tags: ["text", "sparkles", "animation", "stars", "decoration", "typography"],
1317
+ props: [
1318
+ { name: "text", type: "string", description: "Text to display", required: true },
1319
+ {
1320
+ name: "sparklesCount",
1321
+ type: "number",
1322
+ default: "10",
1323
+ description: "Number of sparkle stars",
1324
+ },
1325
+ {
1326
+ name: "colors",
1327
+ type: "{ first: string; second: string }",
1328
+ default: '{ first: "#9E7AFF", second: "#FE8BBB" }',
1329
+ description: "Two colors for sparkle stars",
1330
+ },
1331
+ ],
374
1332
  },
375
1333
  "box-reveal": {
376
1334
  name: "BoxReveal",
@@ -379,6 +1337,28 @@ export const registry = {
379
1337
  category: "text",
380
1338
  status: "done",
381
1339
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/box-reveal" }],
1340
+ tags: ["text", "animation", "reveal", "scroll", "entrance"],
1341
+ props: [
1342
+ {
1343
+ name: "color",
1344
+ type: "string",
1345
+ default: '"#5046e6"',
1346
+ description: "Color of the reveal box",
1347
+ },
1348
+ {
1349
+ name: "duration",
1350
+ type: "number",
1351
+ default: "0.5",
1352
+ description: "Animation duration in seconds",
1353
+ },
1354
+ {
1355
+ name: "delay",
1356
+ type: "number",
1357
+ default: "0.25",
1358
+ description: "Delay before animation starts in seconds",
1359
+ },
1360
+ ],
1361
+ slots: [{ name: "children", description: "Content to reveal" }],
382
1362
  },
383
1363
  "card-3d": {
384
1364
  name: "Card3D",
@@ -389,6 +1369,16 @@ export const registry = {
389
1369
  credits: [
390
1370
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/3d-card-effect" },
391
1371
  ],
1372
+ tags: ["card", "3d", "perspective", "hover", "animation", "interactive"],
1373
+ props: [
1374
+ {
1375
+ name: "containerClass",
1376
+ type: "string",
1377
+ default: '""',
1378
+ description: "CSS classes for the outer perspective wrapper",
1379
+ },
1380
+ ],
1381
+ slots: [{ name: "children", description: "CardBody and CardItem elements" }],
392
1382
  },
393
1383
  "card-spotlight": {
394
1384
  name: "CardSpotlight",
@@ -399,6 +1389,34 @@ export const registry = {
399
1389
  credits: [
400
1390
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/card-spotlight" },
401
1391
  ],
1392
+ tags: ["card", "spotlight", "mouse", "gradient", "interactive", "hover"],
1393
+ props: [
1394
+ {
1395
+ name: "slotClass",
1396
+ type: "string",
1397
+ default: '""',
1398
+ description: "CSS classes for the inner content wrapper",
1399
+ },
1400
+ {
1401
+ name: "gradientSize",
1402
+ type: "number",
1403
+ default: "200",
1404
+ description: "Size of the spotlight gradient in pixels",
1405
+ },
1406
+ {
1407
+ name: "gradientColor",
1408
+ type: "string",
1409
+ default: '"#262626"',
1410
+ description: "Color of the spotlight gradient",
1411
+ },
1412
+ {
1413
+ name: "gradientOpacity",
1414
+ type: "number",
1415
+ default: "0.8",
1416
+ description: "Opacity of the spotlight gradient",
1417
+ },
1418
+ ],
1419
+ slots: [{ name: "children", description: "Card content" }],
402
1420
  },
403
1421
  "bento-grid": {
404
1422
  name: "BentoGrid",
@@ -407,6 +1425,8 @@ export const registry = {
407
1425
  category: "cards",
408
1426
  status: "done",
409
1427
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/bento-grid" }],
1428
+ tags: ["grid", "layout", "bento", "cards", "dashboard"],
1429
+ slots: [{ name: "children", description: "BentoGridItem components to arrange in the grid" }],
410
1430
  },
411
1431
  "flip-card": {
412
1432
  name: "FlipCard",
@@ -414,6 +1434,19 @@ export const registry = {
414
1434
  description: "Card that flips to reveal back content on hover using CSS 3D transforms",
415
1435
  category: "cards",
416
1436
  status: "done",
1437
+ tags: ["card", "flip", "3d", "hover", "animation", "interactive"],
1438
+ props: [
1439
+ {
1440
+ name: "rotate",
1441
+ type: '"x" | "y"',
1442
+ default: '"y"',
1443
+ description: "Axis of rotation for the flip effect",
1444
+ },
1445
+ ],
1446
+ slots: [
1447
+ { name: "children", description: "Front face content" },
1448
+ { name: "back", description: "Back face content revealed on hover" },
1449
+ ],
417
1450
  },
418
1451
  book: {
419
1452
  name: "Book",
@@ -422,6 +1455,36 @@ export const registry = {
422
1455
  category: "cards",
423
1456
  status: "done",
424
1457
  credits: [{ source: "Inspira UI", url: "https://inspira-ui.com/components/cards/book" }],
1458
+ tags: ["card", "book", "3d", "hover", "animation"],
1459
+ props: [
1460
+ {
1461
+ name: "duration",
1462
+ type: "number",
1463
+ default: "1000",
1464
+ description: "Hover animation duration in ms",
1465
+ },
1466
+ {
1467
+ name: "color",
1468
+ type: "BookColor",
1469
+ default: '"zinc"',
1470
+ description: "Color theme for the book cover gradient",
1471
+ },
1472
+ {
1473
+ name: "isStatic",
1474
+ type: "boolean",
1475
+ default: "false",
1476
+ description: "Show book in open position without hover animation",
1477
+ },
1478
+ { name: "size", type: "BookSize", default: '"md"', description: "Size variant of the book" },
1479
+ { name: "radius", type: "BookRadius", default: '"md"', description: "Border radius variant" },
1480
+ {
1481
+ name: "shadowSize",
1482
+ type: "BookShadowSize",
1483
+ default: '"lg"',
1484
+ description: "Drop shadow size variant",
1485
+ },
1486
+ ],
1487
+ slots: [{ name: "children", description: "Content rendered on the book cover (front face)" }],
425
1488
  },
426
1489
  "glare-card": {
427
1490
  name: "GlareCard",
@@ -430,6 +1493,10 @@ export const registry = {
430
1493
  category: "cards",
431
1494
  status: "done",
432
1495
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/glare-card" }],
1496
+ tags: ["card", "glare", "holographic", "mouse", "3d", "foil", "interactive"],
1497
+ slots: [
1498
+ { name: "children", description: "Card content rendered inside the holographic surface" },
1499
+ ],
433
1500
  },
434
1501
  "text-reveal-card": {
435
1502
  name: "TextRevealCard",
@@ -440,6 +1507,26 @@ export const registry = {
440
1507
  credits: [
441
1508
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/text-reveal-card" },
442
1509
  ],
1510
+ tags: ["card", "text", "reveal", "drag", "interactive", "particles"],
1511
+ props: [
1512
+ {
1513
+ name: "starsCount",
1514
+ type: "number",
1515
+ default: "130",
1516
+ description: "Number of star particles in the background",
1517
+ },
1518
+ {
1519
+ name: "starsClass",
1520
+ type: "string",
1521
+ default: '""',
1522
+ description: "CSS classes for the stars container",
1523
+ },
1524
+ ],
1525
+ slots: [
1526
+ { name: "children", description: "Content rendered above the reveal area (e.g., title)" },
1527
+ { name: "text", description: "Text shown in the revealed layer (dragged to reveal)" },
1528
+ { name: "revealText", description: "Text visible in the background star layer" },
1529
+ ],
443
1530
  },
444
1531
  "container-scroll": {
445
1532
  name: "ContainerScroll",
@@ -453,6 +1540,17 @@ export const registry = {
453
1540
  url: "https://ui.aceternity.com/components/container-scroll-animation",
454
1541
  },
455
1542
  ],
1543
+ tags: ["layout", "scroll", "animation", "3d", "perspective"],
1544
+ slots: [
1545
+ {
1546
+ name: "titleContent",
1547
+ description: "Header/title content that translates upward on scroll",
1548
+ },
1549
+ {
1550
+ name: "cardContent",
1551
+ description: "Content inside the animated card that tilts flat on scroll",
1552
+ },
1553
+ ],
456
1554
  },
457
1555
  "container-text-flip": {
458
1556
  name: "ContainerTextFlip",
@@ -461,6 +1559,33 @@ export const registry = {
461
1559
  category: "text",
462
1560
  status: "done",
463
1561
  credits: [{ source: "Inspira UI", url: "https://inspira-ui.com/components/text/text-flip" }],
1562
+ tags: ["text", "animation", "words", "cycling", "blur", "typography"],
1563
+ props: [
1564
+ {
1565
+ name: "words",
1566
+ type: "string[]",
1567
+ default: '["better","modern","beautiful","awesome"]',
1568
+ description: "Array of words to cycle through",
1569
+ },
1570
+ {
1571
+ name: "interval",
1572
+ type: "number",
1573
+ default: "3000",
1574
+ description: "Time between word changes in ms",
1575
+ },
1576
+ {
1577
+ name: "animationDuration",
1578
+ type: "number",
1579
+ default: "700",
1580
+ description: "Per-character animation duration in ms",
1581
+ },
1582
+ {
1583
+ name: "textClass",
1584
+ type: "string",
1585
+ default: '""',
1586
+ description: "CSS classes for the text content span",
1587
+ },
1588
+ ],
464
1589
  },
465
1590
  focus: {
466
1591
  name: "Focus",
@@ -469,6 +1594,45 @@ export const registry = {
469
1594
  category: "text",
470
1595
  status: "done",
471
1596
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/focus-cards" }],
1597
+ tags: ["text", "animation", "focus", "blur", "words", "typography"],
1598
+ props: [
1599
+ {
1600
+ name: "sentence",
1601
+ type: "string",
1602
+ default: '"Fancy Focus"',
1603
+ description: "Space-separated words to cycle focus through",
1604
+ },
1605
+ {
1606
+ name: "manualMode",
1607
+ type: "boolean",
1608
+ default: "false",
1609
+ description: "Enable manual control via mouse hover instead of auto-cycling",
1610
+ },
1611
+ {
1612
+ name: "blurAmount",
1613
+ type: "number",
1614
+ default: "5",
1615
+ description: "Blur amount in pixels for unfocused words",
1616
+ },
1617
+ {
1618
+ name: "borderColor",
1619
+ type: "string",
1620
+ default: '"green"',
1621
+ description: "Color of the corner frame border",
1622
+ },
1623
+ {
1624
+ name: "animationDuration",
1625
+ type: "number",
1626
+ default: "0.5",
1627
+ description: "Transition duration in seconds",
1628
+ },
1629
+ {
1630
+ name: "pauseBetweenAnimations",
1631
+ type: "number",
1632
+ default: "1",
1633
+ description: "Pause between word cycles in seconds",
1634
+ },
1635
+ ],
472
1636
  },
473
1637
  "liquid-glass": {
474
1638
  name: "LiquidGlass",
@@ -482,6 +1646,79 @@ export const registry = {
482
1646
  url: "https://inspira-ui.com/components/special-effects/liquid-glass",
483
1647
  },
484
1648
  ],
1649
+ tags: ["glass", "effect", "svg", "filter", "chromatic", "displacement", "blur"],
1650
+ props: [
1651
+ { name: "radius", type: "number", default: "16", description: "Border radius in pixels" },
1652
+ {
1653
+ name: "border",
1654
+ type: "number",
1655
+ default: "0.07",
1656
+ description: "Border thickness as fraction of min dimension",
1657
+ },
1658
+ {
1659
+ name: "lightness",
1660
+ type: "number",
1661
+ default: "50",
1662
+ description: "Background lightness percentage",
1663
+ },
1664
+ {
1665
+ name: "displace",
1666
+ type: "number",
1667
+ description: "Optional Gaussian blur on the displacement output",
1668
+ },
1669
+ {
1670
+ name: "blend",
1671
+ type: "string",
1672
+ default: '"difference"',
1673
+ description: "SVG blend mode for the displacement channels",
1674
+ },
1675
+ {
1676
+ name: "xChannel",
1677
+ type: '"R" | "G" | "B"',
1678
+ default: '"R"',
1679
+ description: "X displacement channel selector",
1680
+ },
1681
+ {
1682
+ name: "yChannel",
1683
+ type: '"R" | "G" | "B"',
1684
+ default: '"B"',
1685
+ description: "Y displacement channel selector",
1686
+ },
1687
+ { name: "alpha", type: "number", default: "0.93", description: "Background fill alpha" },
1688
+ {
1689
+ name: "blur",
1690
+ type: "number",
1691
+ default: "11",
1692
+ description: "Blur applied to the background fill layer",
1693
+ },
1694
+ {
1695
+ name: "rOffset",
1696
+ type: "number",
1697
+ default: "0",
1698
+ description: "Red channel displacement offset",
1699
+ },
1700
+ {
1701
+ name: "gOffset",
1702
+ type: "number",
1703
+ default: "10",
1704
+ description: "Green channel displacement offset",
1705
+ },
1706
+ {
1707
+ name: "bOffset",
1708
+ type: "number",
1709
+ default: "20",
1710
+ description: "Blue channel displacement offset",
1711
+ },
1712
+ { name: "scale", type: "number", default: "-180", description: "Displacement scale" },
1713
+ { name: "frost", type: "number", default: "0.05", description: "Frosted glass opacity" },
1714
+ {
1715
+ name: "containerClass",
1716
+ type: "string",
1717
+ default: '""',
1718
+ description: "CSS classes for the outer container",
1719
+ },
1720
+ ],
1721
+ slots: [{ name: "children", description: "Content rendered inside the glass effect" }],
485
1722
  },
486
1723
  "smooth-cursor": {
487
1724
  name: "SmoothCursor",
@@ -492,6 +1729,16 @@ export const registry = {
492
1729
  credits: [
493
1730
  { source: "Inspira UI", url: "https://inspira-ui.com/components/cursor/smooth-cursor" },
494
1731
  ],
1732
+ tags: ["cursor", "animation", "spring", "physics", "interactive"],
1733
+ props: [
1734
+ {
1735
+ name: "springConfig",
1736
+ type: "SpringConfig",
1737
+ default: "{}",
1738
+ description: "Spring physics configuration with damping, stiffness, and mass",
1739
+ },
1740
+ ],
1741
+ slots: [{ name: "cursor", description: "Custom cursor element (defaults to arrow SVG)" }],
495
1742
  },
496
1743
  "glowing-effect": {
497
1744
  name: "GlowingEffect",
@@ -500,6 +1747,58 @@ export const registry = {
500
1747
  category: "effects",
501
1748
  status: "done",
502
1749
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/glowing-effect" }],
1750
+ tags: ["border", "glow", "mouse", "gradient", "conic", "animation"],
1751
+ props: [
1752
+ {
1753
+ name: "blur",
1754
+ type: "number",
1755
+ default: "0",
1756
+ description: "Blur amount applied to the glow layer",
1757
+ },
1758
+ {
1759
+ name: "inactiveZone",
1760
+ type: "number",
1761
+ default: "0.7",
1762
+ description: "Fraction of element radius where glow is inactive",
1763
+ },
1764
+ {
1765
+ name: "proximity",
1766
+ type: "number",
1767
+ default: "0",
1768
+ description: "Extra pixel range outside element bounds where glow activates",
1769
+ },
1770
+ {
1771
+ name: "spread",
1772
+ type: "number",
1773
+ default: "20",
1774
+ description: "Angular spread of the conic gradient in degrees",
1775
+ },
1776
+ {
1777
+ name: "variant",
1778
+ type: '"default" | "white"',
1779
+ default: '"default"',
1780
+ description: "Color variant of the glow",
1781
+ },
1782
+ {
1783
+ name: "glow",
1784
+ type: "boolean",
1785
+ default: "false",
1786
+ description: "Always show glow regardless of mouse position",
1787
+ },
1788
+ {
1789
+ name: "disabled",
1790
+ type: "boolean",
1791
+ default: "true",
1792
+ description: "Disable the glowing effect",
1793
+ },
1794
+ {
1795
+ name: "movementDuration",
1796
+ type: "number",
1797
+ default: "2",
1798
+ description: "Duration of the angle lerp animation",
1799
+ },
1800
+ { name: "borderWidth", type: "number", default: "1", description: "Border width in pixels" },
1801
+ ],
503
1802
  },
504
1803
  sparkles: {
505
1804
  name: "Sparkles",
@@ -508,6 +1807,40 @@ export const registry = {
508
1807
  category: "backgrounds",
509
1808
  status: "done",
510
1809
  credits: [{ source: "Aceternity UI", url: "https://ui.aceternity.com/components/sparkles" }],
1810
+ tags: ["background", "particles", "canvas", "animation", "sparkles"],
1811
+ props: [
1812
+ {
1813
+ name: "background",
1814
+ type: "string",
1815
+ default: '"#0d47a1"',
1816
+ description: "Background color of the canvas container",
1817
+ },
1818
+ {
1819
+ name: "particleColor",
1820
+ type: "string",
1821
+ default: '"#ffffff"',
1822
+ description: "Color of the particles",
1823
+ },
1824
+ {
1825
+ name: "minSize",
1826
+ type: "number",
1827
+ default: "1",
1828
+ description: "Minimum particle radius in pixels",
1829
+ },
1830
+ {
1831
+ name: "maxSize",
1832
+ type: "number",
1833
+ default: "3",
1834
+ description: "Maximum particle radius in pixels",
1835
+ },
1836
+ { name: "speed", type: "number", default: "4", description: "Particle speed multiplier" },
1837
+ {
1838
+ name: "particleDensity",
1839
+ type: "number",
1840
+ default: "120",
1841
+ description: "Number of particles",
1842
+ },
1843
+ ],
511
1844
  },
512
1845
  confetti: {
513
1846
  name: "Confetti",
@@ -516,6 +1849,28 @@ export const registry = {
516
1849
  category: "effects",
517
1850
  status: "done",
518
1851
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/confetti" }],
1852
+ tags: ["confetti", "celebration", "animation", "canvas", "particles"],
1853
+ props: [
1854
+ {
1855
+ name: "options",
1856
+ type: "ConfettiOptions",
1857
+ default: "{}",
1858
+ description: "canvas-confetti options passed to each fire() call",
1859
+ },
1860
+ {
1861
+ name: "globalOptions",
1862
+ type: "ConfettiGlobalOptions",
1863
+ default: "{}",
1864
+ description: "Global canvas-confetti initialization options",
1865
+ },
1866
+ {
1867
+ name: "manualStart",
1868
+ type: "boolean",
1869
+ default: "false",
1870
+ description: "Prevent auto-firing on mount; call fire() manually",
1871
+ },
1872
+ ],
1873
+ slots: [{ name: "children", description: "ConfettiButton or other trigger elements" }],
519
1874
  },
520
1875
  ripple: {
521
1876
  name: "Ripple",
@@ -524,6 +1879,51 @@ export const registry = {
524
1879
  category: "effects",
525
1880
  status: "done",
526
1881
  credits: [{ source: "Magic UI", url: "https://magicui.design/docs/components/ripple" }],
1882
+ tags: ["animation", "ripple", "circles", "decoration", "pulse"],
1883
+ props: [
1884
+ {
1885
+ name: "baseCircleSize",
1886
+ type: "number",
1887
+ default: "210",
1888
+ description: "Diameter of the smallest (innermost) circle in pixels",
1889
+ },
1890
+ {
1891
+ name: "baseCircleOpacity",
1892
+ type: "number",
1893
+ default: "0.24",
1894
+ description: "Opacity of the innermost circle",
1895
+ },
1896
+ {
1897
+ name: "spaceBetweenCircle",
1898
+ type: "number",
1899
+ default: "70",
1900
+ description: "Extra pixels added to each successive circle",
1901
+ },
1902
+ {
1903
+ name: "circleOpacityDowngradeRatio",
1904
+ type: "number",
1905
+ default: "0.03",
1906
+ description: "Opacity reduction per circle outward",
1907
+ },
1908
+ {
1909
+ name: "circleClass",
1910
+ type: "string",
1911
+ default: '""',
1912
+ description: "Additional CSS classes applied to each circle",
1913
+ },
1914
+ {
1915
+ name: "waveSpeed",
1916
+ type: "number",
1917
+ default: "80",
1918
+ description: "Animation delay between circles in ms",
1919
+ },
1920
+ {
1921
+ name: "numberOfCircles",
1922
+ type: "number",
1923
+ default: "7",
1924
+ description: "Total number of concentric circles",
1925
+ },
1926
+ ],
527
1927
  },
528
1928
  "text-generate-effect": {
529
1929
  name: "TextGenerateEffect",
@@ -534,6 +1934,34 @@ export const registry = {
534
1934
  credits: [
535
1935
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/text-generate-effect" },
536
1936
  ],
1937
+ tags: ["text", "animation", "typewriter", "reveal", "blur", "typography"],
1938
+ props: [
1939
+ { name: "words", type: "string", description: "Text to reveal word by word", required: true },
1940
+ {
1941
+ name: "filter",
1942
+ type: "boolean",
1943
+ default: "true",
1944
+ description: "Apply blur filter during reveal animation",
1945
+ },
1946
+ {
1947
+ name: "duration",
1948
+ type: "number",
1949
+ default: "0.7",
1950
+ description: "Fade-in duration per word in seconds",
1951
+ },
1952
+ {
1953
+ name: "delay",
1954
+ type: "number",
1955
+ default: "0",
1956
+ description: "Initial delay before animation starts in ms",
1957
+ },
1958
+ {
1959
+ name: "stagger",
1960
+ type: "number",
1961
+ default: "200",
1962
+ description: "Delay between each word in ms",
1963
+ },
1964
+ ],
537
1965
  },
538
1966
  "line-shadow-text": {
539
1967
  name: "LineShadowText",
@@ -544,6 +1972,22 @@ export const registry = {
544
1972
  credits: [
545
1973
  { source: "Magic UI", url: "https://magicui.design/docs/components/line-shadow-text" },
546
1974
  ],
1975
+ tags: ["text", "animation", "shadow", "pattern", "typography", "decoration"],
1976
+ props: [
1977
+ { name: "text", type: "string", description: "Text content to display", required: true },
1978
+ {
1979
+ name: "shadowColor",
1980
+ type: "string",
1981
+ default: '"black"',
1982
+ description: "Color of the diagonal line shadow",
1983
+ },
1984
+ {
1985
+ name: "as",
1986
+ type: '"span" | "h1" | "h2" | "h3" | "h4" | "h5" | "h6" | "p" | "div"',
1987
+ default: '"span"',
1988
+ description: "HTML element to render as",
1989
+ },
1990
+ ],
547
1991
  },
548
1992
  "tracing-beam": {
549
1993
  name: "TracingBeam",
@@ -554,6 +1998,10 @@ export const registry = {
554
1998
  credits: [
555
1999
  { source: "Aceternity UI", url: "https://ui.aceternity.com/components/tracing-beam" },
556
2000
  ],
2001
+ tags: ["scroll", "animation", "svg", "beam", "progress", "sidebar"],
2002
+ slots: [
2003
+ { name: "children", description: "Long-form content rendered alongside the tracing beam" },
2004
+ ],
557
2005
  },
558
2006
  "displacement-text": {
559
2007
  name: "DisplacementText",
@@ -562,6 +2010,25 @@ export const registry = {
562
2010
  category: "text",
563
2011
  status: "done",
564
2012
  credits: [{ source: "VengenceUI", url: "https://vengenceui.com/docs/liquid-text" }],
2013
+ tags: ["text", "webgl", "3d", "displacement", "cursor", "shader", "threejs"],
2014
+ props: [
2015
+ { name: "text", type: "string", default: '"Hover Me"', description: "Text to display" },
2016
+ { name: "fontSize", type: "number", default: "200", description: "Font size in pixels" },
2017
+ { name: "font", type: "string", default: '"Inter, sans-serif"', description: "Font family" },
2018
+ { name: "color", type: "string", description: "Fixed text color (overrides theme colors)" },
2019
+ {
2020
+ name: "lightColor",
2021
+ type: "string",
2022
+ default: '"#000000"',
2023
+ description: "Text color in light mode",
2024
+ },
2025
+ {
2026
+ name: "darkColor",
2027
+ type: "string",
2028
+ default: '"#ffffff"',
2029
+ description: "Text color in dark mode",
2030
+ },
2031
+ ],
565
2032
  },
566
2033
  "matrix-rain": {
567
2034
  name: "MatrixRain",
@@ -569,6 +2036,34 @@ export const registry = {
569
2036
  description: "Canvas-based Matrix-style falling glyph rain with configurable color, speed, and density",
570
2037
  category: "backgrounds",
571
2038
  status: "done",
2039
+ tags: ["background", "matrix", "canvas", "animation", "glyphs", "cyberpunk"],
2040
+ props: [
2041
+ {
2042
+ name: "color",
2043
+ type: "string",
2044
+ default: '"#00ff41"',
2045
+ description: "Glyph color (the classic Matrix green)",
2046
+ },
2047
+ {
2048
+ name: "speed",
2049
+ type: "number",
2050
+ default: "1.0",
2051
+ description: "Fall speed multiplier (< 1 slower, > 1 faster)",
2052
+ },
2053
+ { name: "density", type: "number", default: "1.0", description: "Column density multiplier" },
2054
+ {
2055
+ name: "glyphSize",
2056
+ type: "number",
2057
+ default: "16",
2058
+ description: "Font size of each glyph in pixels",
2059
+ },
2060
+ {
2061
+ name: "fadeOpacity",
2062
+ type: "number",
2063
+ default: "0.05",
2064
+ description: "Opacity of the black overlay used to create trailing fade effect",
2065
+ },
2066
+ ],
572
2067
  },
573
2068
  "terminal-text": {
574
2069
  name: "TerminalText",
@@ -576,6 +2071,91 @@ export const registry = {
576
2071
  description: "Terminal-style text streamer with per-character animation, blinking cursor, and glitch effect",
577
2072
  category: "text",
578
2073
  status: "done",
2074
+ tags: ["text", "terminal", "animation", "typewriter", "glitch", "code"],
2075
+ props: [
2076
+ {
2077
+ name: "lines",
2078
+ type: "string[]",
2079
+ description: "Array of lines to stream character by character",
2080
+ required: true,
2081
+ },
2082
+ {
2083
+ name: "speed",
2084
+ type: "number",
2085
+ default: "40",
2086
+ description: "Delay between each character in ms",
2087
+ },
2088
+ {
2089
+ name: "delay",
2090
+ type: "number",
2091
+ default: "0",
2092
+ description: "Initial delay before streaming starts in ms",
2093
+ },
2094
+ { name: "cursor", type: "boolean", default: "true", description: "Show blinking cursor" },
2095
+ {
2096
+ name: "cursorChar",
2097
+ type: "string",
2098
+ default: '"█"',
2099
+ description: "Character used as the cursor",
2100
+ },
2101
+ {
2102
+ name: "glitch",
2103
+ type: "boolean",
2104
+ default: "false",
2105
+ description: "Enable random character glitch effect after streaming",
2106
+ },
2107
+ {
2108
+ name: "onComplete",
2109
+ type: "() => void",
2110
+ description: "Callback fired when all lines finish streaming",
2111
+ },
2112
+ ],
2113
+ },
2114
+ "noise-reveal": {
2115
+ name: "NoiseReveal",
2116
+ slug: "noise-reveal",
2117
+ description: "WebGL image reveal with a Perlin-noise dissolve mask, contracting radial gradient, and wave displacement, inspired by a Codrops shader effect",
2118
+ category: "media",
2119
+ status: "done",
2120
+ credits: [
2121
+ {
2122
+ source: "Codrops",
2123
+ url: "https://tympanus.net/codrops/2024/12/02/how-to-code-a-shader-based-reveal-effect-with-react-three-fiber-glsl/",
2124
+ },
2125
+ {
2126
+ source: "colindmg/r3f-image-reveal-effect",
2127
+ url: "https://github.com/colindmg/r3f-image-reveal-effect",
2128
+ },
2129
+ ],
2130
+ tags: ["media", "image", "reveal", "webgl", "shader", "threejs", "noise"],
2131
+ props: [
2132
+ { name: "src", type: "string", description: "Image URL", required: true },
2133
+ { name: "alt", type: "string", description: "Accessible label for the image" },
2134
+ {
2135
+ name: "trigger",
2136
+ type: '"view" | "manual"',
2137
+ default: '"view"',
2138
+ description: 'Reveal trigger: "view" = on viewport entry, "manual" = via revealed prop',
2139
+ },
2140
+ {
2141
+ name: "revealed",
2142
+ type: "boolean",
2143
+ default: "false",
2144
+ description: 'Manual reveal state (used with trigger="manual"; also allows re-hiding)',
2145
+ },
2146
+ {
2147
+ name: "duration",
2148
+ type: "number",
2149
+ default: "1.5",
2150
+ description: "Reveal animation duration in seconds",
2151
+ },
2152
+ {
2153
+ name: "delay",
2154
+ type: "number",
2155
+ default: "0",
2156
+ description: 'Delay before reveal in seconds (trigger="view")',
2157
+ },
2158
+ ],
579
2159
  },
580
2160
  };
581
2161
  // =============================================================================