Eldora UI Documentation
repository·main·Indexed 23 days ago
https://github.com/karthikmudunuri/eldorauiA UI library designed for Design Engineers and supported by the Vercel OSS program. Eldora UI follows a copy-paste model similar to shadcn/ui, providing full ownership of component code. It features a variety of animated components including BlurIn, FadeText, WordPullUpText, AnimatedShinyButton, and interactive 3D WebGL elements like the Cobe globe, as well as layout tools like BentoGrid and BentoCard.
What's inside Eldora UI
- EldoraUI is a collection of beautiful, reusable components designed for web applications. It provides components, blocks, and templates specifically crafted for building high-quality landing pages and user-facing marketing materials. The library follows a 'copy and paste' philosophy, allowing developers to integrate high-quality UI directly into their projects.
Overview of EldoraUI component categories
mainEldoraUI is a collection of over 40 animated React components designed for Next.js (App Router) applications. They are categorized as follows:
- Text Animations: Reveal text using methods like
WordPullUpText,LetterPullUpText,BlurIn,FadeText,GradualSpacingText,WavyText,SeparateAwayText, andMultiDirectionSlideText. - Interactive Elements: Tactile components like
AnimatedShinyButton,CardFlipHover, andAnimatedBadge. - 3D and Visualization: High-impact elements like the
Cobeglobe (interactive 3D earth with customizable markers). - Layout and Structure: Sophisticated layout tools like
Grid(supports decorative plus icons),BentoGrid, andPhotonBeam. - Device Mockups: Realistic frames for showcasing products, including
Safari,MacbookPro,iPad, andiPhone17Pro. - Background Effects: Atmospheric depth components like
Particles,Meteors,Noise, andHacker-background.
- Text Animations: Reveal text using methods like
Reduce React re-renders by isolating animation state
mainTo prevent unnecessary re-renders of your entire component tree, keep animation state (like scroll progress or timer values) isolated within a dedicated component. If the state is held in a parent component, every update will trigger a re-render of all its children, causing animation jank.
// Good: Isolated animation component function Page() { return ( <div> <ScrollProgress /> {/* Self-contained, no parent re-renders */} <ExpensiveContent /> </div> ) }Configure Cobe Globe variants
mainThe
Cobecomponent supports several interaction and layout variants via thevariantprop:default: Interactive globe with both drag functionality and continuous auto-rotation.draggable: Pure drag interaction; no auto-rotation.auto-draggable: Auto-rotates by default, but pauses rotation when the user drags it.auto-rotation: Pure auto-rotation; no user interaction allowed.rotate-to-location: Interactive globe with clickable location buttons for navigation (requireslocationsprop).scaled: A horizontally-oriented version optimized for wide layouts and banners.
Best practices for using multiple Cobe Globes
mainAvoid rendering more than one Cobe globe on a single page. Each instance creates its own WebGL context and animation loop, which significantly increases GPU workload. If multiple views are required, use a tabbed interface or similar pattern to ensure only one globe is rendered at a time.Understand Animated List animation phases
mainThe
AnimatedListcomponent operates in a continuous loop through four distinct animation phases:- Idle: Items are stacked with scale and opacity effects.
- Forming Column: Items animate to form a vertical column.
- Scrolling Down: The entire list scrolls downward.
- Resetting: Items return to their initial stacked position.
Understand Cobe globe interaction variants
mainThe
Cobecomponent supports six distinct interaction modes via thevariantprop:default: Combines continuous auto-rotation with drag interaction. Auto-rotation resumes after a user releases a drag.draggable: Pure drag interaction with no auto-rotation. The globe stays still until interacted with.auto-draggable: Auto-rotates until the user drags. After the user releases, the globe stays where they left it (no auto-rotation resumes).auto-rotation: Pure auto-rotation with no user interaction. Best for purely decorative background elements.rotate-to-location: Renders clickable location buttons. Clicking a location smoothly rotates the globe to center that specific coordinate. Requires alocationsarray.scaled: Renders a horizontally-oriented globe optimized for wide layouts and banners.
Configure LogoTimeline animations and rows
mainTo achieve a seamless, infinite scrolling effect, follow these best practices for configuring
LogoItemproperties:- Staggering Animations: Use negative
animationDelayvalues (e.g.,-23) to stagger logo animations. This prevents all logos from moving in perfect unison and creates a more natural flow. - Row Organization: Use the
rowproperty (1-based index) to group logos. Logos with the samerowvalue will appear on the same horizontal line. - Synchronized Movement: For logos on the same row, use the same
animationDuration(typically between 30-65 seconds) to ensure they move together smoothly. - Icon Selection: The
iconproperty must be a valid key from theIconsobject exported from@/components/icons. Common keys includereact,ts,tailwind,gitHub,discord,openai,v0, andradix.
- Staggering Animations: Use negative
FadeText Animation Behaviors
mainThe animation style changes significantly based on the
directionprop:"in": Animates each word individually with a fade-in effect. Controlled bywordDelay."up": Animates the entire text sliding up from below using a spring transition. Controlled bystaggerDelay."down": Animates the entire text sliding down from above using a spring transition. Controlled bystaggerDelay.
Understand the EldoraUI text animation spectrum
mainEldoraUI text animations can be categorized into four motion styles to help you choose the right tone for your interface:
- Subtle: Gentle reveals that don't distract from content (e.g.,
BlurIn,FadeText). - Rhythmic: Sequential animations that create a cadence (e.g.,
WordPullUpText,LetterPullUpText,GradualSpacingText). - Dramatic: Bold movements that demand attention (e.g.,
SeparateAwayText,MultiDirectionSlideText). - Playful: Interactive or looping animations that add personality (e.g.,
WavyText,ScaleLetterText,DockText).
- Subtle: Gentle reveals that don't distract from content (e.g.,
Install the Photon Beam component
mainYou can install the Photon Beam component using the shadcn CLI or by manual installation.
Via CLI
Run the following command to add the component directly to your project:
npx shadcn@latest add "https://eldoraui.site/r/photon-beam"Manual Installation
- Copy the source code for
components/eldoraui/photon-beam.tsxinto your project. - Update any import paths within the file to match your project's directory structure.
- Copy the source code for
Install the Testimonial Slider
mainYou can install the Testimonial Slider component using the shadcn CLI or by manual installation.
Using CLI
Run the following command to add the component to your project:
npx shadcn@latest add @eldoraui/testimonal-sliderManual Installation
- Copy the component source code into
components/eldoraui/testimonal-slider.tsx. - Update the import paths within the file to match your project's directory structure.
- Copy the component source code into