🎯 Overview

The Astra Vitae Component Collection features 6 carefully crafted React components, each built with performance, accessibility, and beautiful user experiences in mind. Perfect for developers who need production-ready components without the overhead of full template systems.

What Makes These Components Special

βœ“ Performance First - Lazy loading and optimization
βœ“ Accessibility Built-in - WCAG 2.1 AA compliant
βœ“ TypeScript Support - Complete type definitions
React 16.8+ TypeScript Lazy Loading Mobile First

🧩 Component Catalog

COMPLETE COLLECTION

Astra Vitae Component Collection

Astra Vitae Component Collection Preview
6
Premium Components
+ Future Updates
✨ SmartNavButtons πŸ–ΌοΈ MediaBundle Suite πŸ“Έ CommonImage 🎬 CommonVideo 🎠 ImageCarousel πŸ’¬ Testimonials
Smart Navigation

Astra Vitae SmartNavButtons

Smart intelligent page navigation system

Features:
  • β€’ Section Detection
  • β€’ Keyboard Navigation
  • β€’ Desktop/Tablet Optimized
All-In-One

Astra Vitae MediaBundle Suite

Unified media management with carousel + lightbox

Features:
  • β€’ CommonImage
  • β€’ CommonVideo
  • β€’ ImageCarousel

Astra Vitae ImageCarousel

Touch-enabled image slideshow with navigation

Features:
  • β€’ Touch Gestures
  • β€’ Auto-Advance
  • β€’ Thumbnail Strip
  • β€’ Lightbox Integration

Astra Vitae CommonVideo

Multi-source video player with advanced controls

Features:
  • β€’ YouTube Support
  • β€’ Google Drive
  • β€’ Local Files
  • β€’ Lightbox Mode

Astra Vitae CommonImage

Enhanced image display with interactive lightbox

Features:
  • β€’ Display Modes
  • β€’ Overlay System
  • β€’ Lazy Loading
  • β€’ Responsive Design

Astra Vitae TestimonialsCarousel

Professional customer testimonial showcase

Features:
  • β€’ Rating Stars
  • β€’ Auto-Cycle
  • β€’ Profile Photos
  • β€’ Company Branding

🌟 Astra Vitae SmartNavButtons - Smart Intelligent Navigation

SmartNavButtons Component Preview
SMART NAV Intelligent Page Navigation System

SmartNavButtons is a revolutionary navigation component that transforms how users interact with your pages. It's a smart intelligent navigation system that automatically detects page sections, provides context-aware navigation, and includes advanced features like scroll lock mode for presentations.

A perfect fit for navigation in desktops, laptops, and tablets. Currently not optimized for mobile devices, as swiping is the most natural way to navigate on mobile devices.

🎯

Smart Detection

Automatically identifies and navigates between page sections

πŸ”’

Scroll Lock Mode

Control navigation completely for presentations

⌨️

Keyboard Support

Full arrow key navigation with accessibility

Key Features

Smart Section Detection

  • β€’ Automatically detects current section based on scroll position
  • β€’ Intelligent boundary detection for smooth transitions
  • β€’ Dynamic section counting and navigation
  • β€’ Works with any page structure

Three Navigation Modes

  • β€’ Go Next: Smoothly navigate to next section
  • β€’ Go to Top: Quick return to page start
  • β€’ Go to Bottom: Jump to footer/end
  • β€’ Context-aware button display

Advanced Capabilities

🎭

Auto-Hide Logic

Smart visibility based on user context

✨

Pulse Animations

Visual feedback to guide interactions

🎠

Carousel Integration

Auto-hides during carousel use

πŸ“±

Mobile Optimized

Touch-friendly with proper sizing

Technical Specifications

Specification Details
React Version 16.8.0+ with hooks architecture
TypeScript Full type definitions included
Performance Intersection Observer API for optimal performance
Navigation Timing 400ms configurable smooth scroll
Bundle Size 12KB minified

Perfect For

🏠

Landing Pages

Guided navigation experience

πŸ“š

Documentation

Section-by-section navigation

🎯

Presentations

Controlled user flow

🎨

Portfolios

Smooth section transitions

Implementation Example

SmartNavButtons Setup
      
        // Installation
import SmartNavButtons from './SmartNavButtons/index.esm.js';
import './SmartNavButtons/index.css';

// Basic Usage
function App() {
  return (
    <div>
      {/* Your page content */}
      <SmartNavButtons />
    </div>
  );
}

// Advanced Configuration
<SmartNavButtons
  scrollLockMode={false}       // Enable/disable scroll lock
  autoHideDelay={3000}         // Auto-hide after 3 seconds
  animationDuration={400}      // Smooth scroll duration
  showPulseAnimation={true}    // Visual guidance
  keyboardNavigation={true}    // Arrow key support
  mobileOptimized={true}       // Touch-friendly sizing
/>

// TypeScript Interface
interface SmartNavButtonsProps {
  scrollLockMode?: boolean;
  autoHideDelay?: number;
  animationDuration?: number;
  showPulseAnimation?: boolean;
  keyboardNavigation?: boolean;
  mobileOptimized?: boolean;
  className?: string;
  customStyles?: React.CSSProperties;
}
      
    

πŸ’Ž Astra Vitae MediaBundle Suite - Flagship Component System

MediaBundle Suite Preview
⭐ FLAGSHIP SYSTEM 4 Components in 1 Unified System

MediaBundle is a unified media management system that handles images, videos, and carousels with a single, cohesive lightbox experience. This flagship system provides a consistent user experience across all media types with optimized bundle size and development efficiency.

πŸ–ΌοΈ

CommonImage

Advanced image display with modes

πŸ“Ή

CommonVideo

Multi-source video player

🎠

ImageCarousel

Touch-enabled slideshow

πŸ”

UnifiedLightbox

Universal media viewer

MediaBundle vs Individual Components

Feature MediaBundle Individual Components
Mixed Content Support βœ… Images + Videos together ❌ Separate usage only
CSS Files Required 1 unified stylesheet 2+ separate stylesheets
Specialized Lightboxes βœ… 3 optimized lightboxes Separate implementations
Lightbox Experience 3 Specialized Lightboxes (optimized per type) Separate lightbox implementations

Advanced Features

Media Handling

  • βœ“ Multi-Source Video: YouTube, Google Drive, local files
  • βœ“ Touch Gestures: Swipe, pinch, drag on mobile
  • βœ“ Lazy Loading: Performance optimized loading
  • βœ“ Responsive Design: Perfect on all screens

Technical Excellence

  • βœ“ Single Import: One bundle for all components
  • βœ“ Shared Code: Optimized bundle size
  • βœ“ TypeScript: Full type definitions
  • βœ“ Accessibility: ARIA labels and keyboard nav

Perfect Use Cases

🎨

Mixed Media Galleries

Images and videos in same lightbox

πŸ’Ό

Portfolio Showcases

Professional presentation systems

πŸ›οΈ

Product Catalogs

Rich media product displays

πŸ“±

Content Management

Unified media handling approach

Implementation Pattern

MediaBundle Integration
      
        // Import complete MediaBundle
import { 
  CommonImage, 
  CommonVideo, 
  ImageCarousel
} from './MediaBundle/index.esm.js';
import './MediaBundle/index.css'; // Single CSS file!

// Each component has its specialized lightbox
function App() {
  return (
    <div>
      {/* Each component uses its specialized lightbox automatically */}
      <CommonImage 
        src="/images/hero.webp"
        displayMode="inline"
        enableLightbox={true}
        {/* Uses ImageLightbox specialized for static images */}
      />
      
      <CommonVideo 
        source="youtube"
        videoId="dQw4w9WgXcQ"
        enableLightbox={true}
        {/* Uses VideoLightbox specialized for video playback */}
      />
      
      <ImageCarousel 
        images={imageArray}
        enableLightbox={true}
        autoPlay={true}
      />
    </div>
  );
}

// Mixed Media Gallery Example
const MixedGallery = () => {
  const mediaItems = [
    { type: 'image', src: '/photo1.webp', title: 'Photo 1' },
    { type: 'video', source: 'youtube', id: 'abc123' },
    { type: 'image', src: '/photo2.webp', title: 'Photo 2' },
    { type: 'video', source: 'local', src: '/video.webm' }
  ];
  
  return (
    <div className="media-gallery">
      {mediaItems.map((item, index) => (
        item.type === 'image' ? (
          <CommonImage key={index} {...item} />
        ) : (
          <CommonVideo key={index} {...item} />
        )
      ))}
      <UnifiedLightbox /> {/* Single lightbox for all! */}
    </div>
  );
};
      
    

πŸ–ΌοΈ Astra Vitae CommonImage - Premium Image Component

CommonImage Component Preview

CommonImage is a versatile image component that goes beyond basic image display. With three distinct display modes, built-in lightbox integration, and advanced overlay capabilities, it's the perfect solution for any image presentation need.

Display Modes

πŸ“

Inline Mode

Standard image display with rounded corners and hover effects

πŸ–ΌοΈ

Section Mode

Full-width hero sections with customizable height

🎨

Background Mode

Absolute positioned background images for layered designs

Advanced Features

Interactive Capabilities

  • β€’ Lightbox Integration with smooth animations
  • β€’ Title and text overlays with professional styling
  • β€’ Hover effects and transitions
  • β€’ Click-to-expand functionality

Technical Features

  • β€’ Aspect ratio control for perfect proportions
  • β€’ Object fit options (cover, contain, fill)
  • β€’ Lazy loading ready with IntersectionObserver
  • β€’ Responsive design with srcset support

Perfect For

πŸ”οΈ

Hero Images

🎨

Gallery Items

πŸ“¦

Product Displays

πŸ–ΌοΈ

Feature Showcases

Usage Examples

CommonImage Examples
      
        // CommonImage Usage Examples

// Inline Mode - Standard image display
<CommonImage
  src="/images/product.webp"
  alt="Product Image"
  displayMode="inline"
  enableLightbox={true}
  className="rounded-lg shadow-md"
/>

// Section Mode - Hero image with overlay
<CommonImage
  src="/images/hero-bg.webp"
  displayMode="section"
  height="h-96"
  overlay={{
    title: "Welcome to Our Site",
    text: "Discover amazing products",
    position: "center"
  }}
/>

// Background Mode - Layered design
<div className="relative h-screen">
  <CommonImage
    src="/images/background.webp"
    displayMode="background"
    objectFit="cover"
  />
  <div className="relative z-10">
    {/* Your content here */}
  </div>
</div>
      
    

πŸ“Ή Astra Vitae CommonVideo - Multi-Source Video Player

CommonVideo Component Preview

CommonVideo is a powerful video component that seamlessly handles multiple video sources including YouTube, Google Drive, and local files. With smart fallbacks, autoplay management, and lightbox integration, it provides a professional video experience across all devices.

Video Sources

πŸ“Ί

YouTube

Embed with privacy mode

☁️

Google Drive

Direct integration

πŸ’Ύ

Local Files

MP4, WebM, OGG

πŸ”„

Smart Fallbacks

Automatic source switching

Advanced Controls

Playback Features

  • β€’ Autoplay management with mute support
  • β€’ Thumbnail overlays with play button
  • β€’ Loop and playlist support
  • β€’ Playback speed control

Layout Flexibility

  • β€’ Inline player with responsive sizing
  • β€’ Section background video mode
  • β€’ Lightbox mode for fullscreen
  • β€’ Custom aspect ratios

Performance Features

⚑

Lazy Loading

Load on viewport entry

πŸ–ΌοΈ

Poster Images

Preview before load

πŸ“Š

Bandwidth Optimization

Adaptive quality

Implementation Examples

CommonVideo Examples
      
        // CommonVideo Multi-Source Examples

// YouTube Video
<CommonVideo
  source="youtube"
  videoId="dQw4w9WgXcQ"
  autoplay={true}
  muted={true}
  thumbnail="/thumbnails/video.webp"
  enableLightbox={true}
/>

// Google Drive Video
<CommonVideo
  source="googledrive"
  videoId="1BxZlEb3K5mN8QPRo9TYZ"
  aspectRatio="16:9"
  controls={true}
/>

// Local Video with Fallbacks
<CommonVideo
  source="local"
  src="/videos/intro.webm"
  fallbackSrc="/videos/intro.webm"
  poster="/images/video-poster.webp"
  loop={true}
  playbackRate={1.0}
/>

// Background Video Mode
<CommonVideo
  source="local"
  src="/videos/background.webm"
  displayMode="background"
  autoplay={true}
  muted={true}
  loop={true}
  className="absolute inset-0"
/>
      
    

🎠 Astra Vitae ImageCarousel - Touch-Enabled Slideshow

ImageCarousel Component Preview

ImageCarousel delivers a premium slideshow experience with touch gestures, keyboard navigation, and smooth transitions. Perfect for showcasing multiple images with professional presentation.

Navigation Features

πŸ‘†

Touch Gestures

⬅️

Arrow Controls

⚫

Indicator Dots

πŸ–ΌοΈ

Thumbnails

⌨️

Keyboard Nav

Functionality

Core Features

  • β€’ Auto-advance with configurable timing
  • β€’ Lightbox integration for full view
  • β€’ Lazy loading for performance
  • β€’ Multiple transition effects

Customization Options

  • β€’ Autoplay control with pause on hover
  • β€’ Visual indicators customization
  • β€’ Transition types and duration
  • β€’ Image captions and metadata

Use Cases

πŸ›οΈ

Product Galleries

πŸ“Έ

Portfolio Displays

πŸ“–

Image Stories

πŸ”„

Before/After

Implementation Examples

ImageCarousel Examples
      
        // ImageCarousel Implementation

const images = [
  { src: '/img1.webp', alt: 'Image 1', caption: 'Beautiful sunset' },
  { src: '/img2.webp', alt: 'Image 2', caption: 'Mountain view' },
  { src: '/img3.webp', alt: 'Image 3', caption: 'Ocean waves' }
];

// Full-Featured Carousel
<ImageCarousel
  images={images}
  autoPlay={true}
  autoPlayInterval={5000}
  showThumbnails={true}
  showIndicators={true}
  enableLightbox={true}
  transitionType="fade"
  transitionDuration={500}
  pauseOnHover={true}
  infiniteLoop={true}
  showArrows={true}
  swipeable={true}
  keyboardNavigation={true}
  lazyLoad={true}
  className="rounded-lg overflow-hidden"
/>

// Minimal Carousel
<ImageCarousel
  images={images}
  showIndicators={true}
  swipeable={true}
/>

// Gallery Mode with Thumbnails
<ImageCarousel
  images={images}
  showThumbnails={true}
  thumbnailPosition="bottom"
  thumbnailWidth={80}
  enableLightbox={true}
/>
      
    

πŸ’¬ Astra Vitae Testimonials - Professional Customer Showcase

Testimonials Component Preview

TestimonialsCarousel provides a polished way to display customer feedback with rating stars, profile photos, and company branding. Build trust and credibility with professionally presented social proof.

Display Features

⭐

Rating Stars

1-5 star ratings

πŸ‘€

Profile Photos

Customer avatars

🏒

Company Info

Role and company

🎠

Auto-Cycle

Automatic rotation

Content Management

Display Options

  • β€’ Structured data with schema markup
  • β€’ Rich text support for testimonials
  • β€’ Date attribution and timestamps
  • β€’ Verified badge for authenticity

Advanced Features

  • β€’ Autoplay with pause on hover
  • β€’ Navigation dots and arrows
  • β€’ Responsive card layouts
  • β€’ Smooth transition effects

Implementation Examples

Testimonials Examples
      
        // Testimonials Implementation

const testimonials = [
  {
    id: 1,
    name: "Sarah Johnson",
    role: "CEO",
    company: "TechCorp",
    avatar: "/avatars/sarah.webp",
    rating: 5,
    text: "Outstanding component quality! The MediaBundle has transformed our product galleries.",
    verified: true,
    date: "2024-01-15"
  },
  {
    id: 2,
    name: "Mike Chen",
    role: "Lead Developer",
    company: "StartupXYZ",
    avatar: "/avatars/mike.webp",
    rating: 5,
    text: "SmartNavButtons is a game-changer. Our users love the intuitive navigation.",
    verified: true,
    date: "2024-01-20"
  }
];

// Full-Featured Testimonials
<TestimonialsCarousel
  testimonials={testimonials}
  autoPlay={true}
  interval={6000}
  showNavigation={true}
  showIndicators={true}
  displayMode="carousel"
  cardsPerView={1}
  showRatings={true}
  showVerifiedBadge={true}
  showCompanyInfo={true}
  animationType="fade"
  pauseOnHover={true}
/>

// Grid Layout Mode
<TestimonialsCarousel
  testimonials={testimonials}
  displayMode="grid"
  columns={3}
  showRatings={true}
  className="gap-6"
/>
      
    

πŸš€ Implementation

Quick Start

Individual Component Usage

Individual Import
      
        // Import individual components
import SmartNavButtons from './SmartNavButtons/index.esm.js';
import './SmartNavButtons/index.css';

// Use in your React app
<SmartNavButtons />
      
    

MediaBundle Usage (Recommended)

MediaBundle Import
      
        // Use complete MediaBundle for mixed content
import { 
  CommonImage, 
  CommonVideo, 
  ImageCarousel
} from './MediaBundle/index.esm.js';
import './MediaBundle/index.css';

// Each component has its specialized lightbox built-in
// ImageLightbox, VideoLightbox, CarouselLightbox included
      
    

Installation Methods

NPM Package

npm install @scl/components

Yarn Package

yarn add @scl/components

Manual Installation

Copy to src/components/

Complete Setup Guide

⭐ ⭐ SmartNavButtons Implementation

SmartNavButtons Complete Setup
      
        // Step 1: Install and Import
import SmartNavButtons from '@scl/components/SmartNavButtons';
import '@scl/components/SmartNavButtons/styles.css';

// Step 2: Add to your layout
function Layout({ children }) {
  return (
    <div className="app-layout">
      {children}
      <SmartNavButtons 
        scrollLockMode={false}
        autoHideDelay={3000}
      />
    </div>
  );
}

// Step 3: Define your page sections
<main>
  <section id="hero" className="min-h-screen">
    {/* Hero content */}
  </section>
  <section id="features" className="min-h-screen">
    {/* Features content */}
  </section>
  <section id="pricing" className="min-h-screen">
    {/* Pricing content */}
  </section>
</main>

// SmartNavButtons will automatically detect and navigate between sections!
      
    

πŸ’Ž πŸ’Ž MediaBundle Integration Pattern

MediaBundle Complete Integration
      
        // Complete MediaBundle Setup

// Step 1: Import all components
import {
  CommonImage,
  CommonVideo,
  ImageCarousel,
  UnifiedLightbox,
  MediaBundleProvider
} from '@scl/components/MediaBundle';
import '@scl/components/MediaBundle/styles.css';

// Step 2: Wrap your app with MediaBundleProvider
function App() {
  return (
    <MediaBundleProvider>
      <Routes />
      <UnifiedLightbox /> {/* Single lightbox for all media */}
    </MediaBundleProvider>
  );
}

// Step 3: Use components anywhere
function Gallery() {
  const mediaItems = [
    { type: 'image', src: '/photo1.webp', title: 'Sunset' },
    { type: 'video', source: 'youtube', id: 'abc123' },
    { type: 'carousel', images: [...] }
  ];
  
  return (
    <div className="gallery-grid">
      {mediaItems.map((item) => {
        switch(item.type) {
          case 'image':
            return <CommonImage {...item} enableLightbox />;
          case 'video':
            return <CommonVideo {...item} enableLightbox />;
          case 'carousel':
            return <ImageCarousel {...item} enableLightbox />;
        }
      })}
    </div>
  );
}
      
    

TypeScript Configuration

TypeScript Setup
      
        // tsconfig.json
{
  "compilerOptions": {
    "types": ["@scl/components"]
  }
}

// Type Definitions
import type {
  SmartNavButtonsProps,
  CommonImageProps,
  CommonVideoProps,
  ImageCarouselProps,
  UnifiedLightboxProps,
  MediaItem,
  VideoSource,
  DisplayMode,
  TransitionType
} from '@scl/components';

// Strongly typed usage
const imageProps: CommonImageProps = {
  src: '/image.webp',
  alt: 'Description',
  displayMode: 'inline',
  enableLightbox: true,
  lazy: true,
  aspectRatio: '16:9'
};

const videoProps: CommonVideoProps = {
  source: 'youtube',
  videoId: 'dQw4w9WgXcQ',
  autoplay: false,
  controls: true,
  thumbnail: '/thumb.webp'
};
      
    

🎨 Customization

Theme Variables

All components use CSS custom properties for easy theming. Simply override these variables in your global CSS to match your brand.

Theme Customization
      
        :root {
  /* Primary Colors */
  --media-primary-purple: #e6b3ff;
  --media-primary-gold: #d4af37;
  
  /* Effects */
  --media-glow-purple: 0 0 3px #e6b3ff;
  --media-glow-gold: 0 0 8px #d4af37;
  
  /* Animations */
  --media-duration-fast: 150ms;
  --media-duration-normal: 300ms;
}
      
    

Component Classes

  • β€’ Container Classes for wrapper styling
  • β€’ Element Classes for individual parts
  • β€’ State Classes for interactions
  • β€’ Responsive Classes for breakpoints

Advanced Options

  • β€’ Custom animation timing
  • β€’ Brand color integration
  • β€’ Dark mode support
  • β€’ RTL language support

⚑ Performance & Optimization

Built-in Performance Features

Loading Optimization

  • β€’ Lazy loading for all media
  • β€’ Code splitting support
  • β€’ Tree shaking compatible
  • β€’ Minimal runtime overhead

Runtime Performance

  • β€’ Intersection Observer API
  • β€’ RequestAnimationFrame
  • β€’ Passive event listeners
  • β€’ Debounced interactions

πŸ”„ Bundle vs Individual Comparison

When to Choose Individual Components

  • β†’ You only need one specific component
  • β†’ Minimal bundle size is critical
  • β†’ No need for unified media handling
  • β†’ Targeted functionality for specific use case

When to Choose Bundles

  • βœ“ Need multiple components
  • βœ“ Want unified media experience
  • βœ“ Prefer single CSS file
  • βœ“ Complete solution with all components

πŸš€ Live Demos

Test Every Component Live

All components are fully functional in our Premium template demo. Explore them to see all features in action.

  • βœ“ SmartNavButtons navigation
  • βœ“ MediaBundle with mixed content
  • βœ“ Image carousels with touch
  • βœ“ Video players with multiple sources
  • βœ“ Testimonials with auto-cycle
  • βœ“ All interactive features