Eldora UI Documentation

repository·main·Indexed 23 days ago

https://github.com/karthikmudunuri/eldoraui

A 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.

Tokens
46.2K
Snippets
154
Records
229
Agent score
83%

What's inside Eldora UI

  1. What is EldoraUI?

    main
    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.
  2. Overview of EldoraUI component categories

    main

    EldoraUI 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, and MultiDirectionSlideText.
    • Interactive Elements: Tactile components like AnimatedShinyButton, CardFlipHover, and AnimatedBadge.
    • 3D and Visualization: High-impact elements like the Cobe globe (interactive 3D earth with customizable markers).
    • Layout and Structure: Sophisticated layout tools like Grid (supports decorative plus icons), BentoGrid, and PhotonBeam.
    • Device Mockups: Realistic frames for showcasing products, including Safari, MacbookPro, iPad, and iPhone17Pro.
    • Background Effects: Atmospheric depth components like Particles, Meteors, Noise, and Hacker-background.
  3. Reduce React re-renders by isolating animation state

    main

    To 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>
      )
    }
  4. Configure Cobe Globe variants

    main

    The Cobe component supports several interaction and layout variants via the variant prop:

    • 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 (requires locations prop).
    • scaled: A horizontally-oriented version optimized for wide layouts and banners.
  5. Understand Cobe globe interaction variants

    main

    The Cobe component supports six distinct interaction modes via the variant prop:

    1. default: Combines continuous auto-rotation with drag interaction. Auto-rotation resumes after a user releases a drag.
    2. draggable: Pure drag interaction with no auto-rotation. The globe stays still until interacted with.
    3. auto-draggable: Auto-rotates until the user drags. After the user releases, the globe stays where they left it (no auto-rotation resumes).
    4. auto-rotation: Pure auto-rotation with no user interaction. Best for purely decorative background elements.
    5. rotate-to-location: Renders clickable location buttons. Clicking a location smoothly rotates the globe to center that specific coordinate. Requires a locations array.
    6. scaled: Renders a horizontally-oriented globe optimized for wide layouts and banners.
  6. Configure LogoTimeline animations and rows

    main

    To achieve a seamless, infinite scrolling effect, follow these best practices for configuring LogoItem properties:

    • Staggering Animations: Use negative animationDelay values (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 row property (1-based index) to group logos. Logos with the same row value 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 icon property must be a valid key from the Icons object exported from @/components/icons. Common keys include react, ts, tailwind, gitHub, discord, openai, v0, and radix.
  7. FadeText Animation Behaviors

    main

    The animation style changes significantly based on the direction prop:

    • "in": Animates each word individually with a fade-in effect. Controlled by wordDelay.
    • "up": Animates the entire text sliding up from below using a spring transition. Controlled by staggerDelay.
    • "down": Animates the entire text sliding down from above using a spring transition. Controlled by staggerDelay.
  8. Understand the EldoraUI text animation spectrum

    main

    EldoraUI 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).
  9. Install the Photon Beam component

    main

    You 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

    1. Copy the source code for components/eldoraui/photon-beam.tsx into your project.
    2. Update any import paths within the file to match your project's directory structure.
  10. Install the Testimonial Slider

    main

    You 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-slider

    Manual Installation

    1. Copy the component source code into components/eldoraui/testimonal-slider.tsx.
    2. Update the import paths within the file to match your project's directory structure.