🎯 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
🧩 Component Catalog
Astra Vitae Component Collection

Astra Vitae SmartNavButtons
Smart intelligent page navigation system (separate package)
- • Section Detection
- • Keyboard Navigation
- • Desktop/Tablet Optimized
Astra Vitae MediaBundle Suite
Unified media management with carousel + lightbox
- • CommonImage
- • CommonVideo
- • ImageCarousel
Astra Vitae ImageCarousel
Touch-enabled image slideshow with navigation
- • Touch Gestures
- • Auto-Advance
- • Thumbnail Strip
- • Lightbox Integration
Astra Vitae CommonVideo
Multi-source video player with advanced controls
- • YouTube Support
- • Google Drive
- • Local Files
- • Lightbox Mode
Astra Vitae CommonImage
Enhanced image display with interactive lightbox
- • Display Modes
- • Overlay System
- • Lazy Loading
- • Responsive Design
💎 Astra Vitae MediaBundle Suite - Flagship Component System

MediaBundle is our most popular offering - a unified media management system that handles images, videos, and carousels with a single, cohesive lightbox experience. This flagship system saves you development time, reduces bundle size, and provides a consistent user experience across all media types.
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
// 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 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 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 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 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 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 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 TestimonialsCarousel - Professional Customer Showcase
📦 Note: TestimonialsCarousel is a separate package, available individually or in the Components Collection.

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 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
// Import individual components
import SmartNavButtons from './SmartNavButtons/index.esm.js';
import './SmartNavButtons/index.css';
// Use in your React app
<SmartNavButtons />
MediaBundle Usage (Recommended)
// 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
// 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
// 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
// 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.
: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
- → Budget constraints for single component
When to Choose Bundles
- ✓ Need multiple components
- ✓ Want unified media experience
- ✓ Prefer single CSS file
- ✓ Best value with 40% savings
🚀 Live Demos
Test Every Component Live
All components are fully functional in our Premium template demo. Test them thoroughly before purchasing.
- ✓ SmartNavButtons navigation
- ✓ MediaBundle with mixed content
- ✓ Image carousels with touch
- ✓ Video players with multiple sources
- ✓ Testimonials with auto-cycle
- ✓ All interactive features
