mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-22 22:00:00 +00:00
7.4 KiB
7.4 KiB
📦 Distribution Guide - Enhanced Lazy Loading System
🎯 How to Use This System in Your Own Projects
Since you don't manage the main repository, here are multiple ways to integrate this enhanced lazy loading system into your web app repositories!
🚀 Option 1: Local Copy (Recommended for Development)
Step 1: Copy the System
# Copy the entire enhanced-lazy-loading-demo folder to your workspace
cp -r /path/to/enhanced-lazy-loading-demo ~/my-workspace/
# Or use our setup script for automatic setup
./setup-for-other-projects.sh ~/my-workspace
Step 2: Add as Path Dependency
# In your project's Cargo.toml
[dependencies]
enhanced-lazy-loading-demo = { path = "../enhanced-lazy-loading-demo" }
Step 3: Import and Use
use enhanced_lazy_loading_demo::lazy_loading::LazyComponentWrapper;
use enhanced_lazy_loading_demo::bundle_analyzer::BundleAnalysisDisplay;
#[component]
pub fn MyApp() -> impl IntoView {
view! {
<div>
<BundleAnalysisDisplay />
<LazyComponentWrapper name="Alert".to_string() />
</div>
}
}
🎯 Option 2: Use Our Setup Script (Easiest)
Automatic Setup with Sample Project
# This creates everything you need automatically
./setup-for-other-projects.sh --sample ~/my-workspace
# What you get:
# 📁 enhanced-lazy-loading-demo/ # The main system
# 🎯 sample-lazy-loading-app/ # Working example project
# 📝 INTEGRATION_GUIDE.md # Quick setup guide
Test the Integration
cd ~/my-workspace/sample-lazy-loading-app
trunk build
trunk serve --open
🔧 Option 3: Git Submodule (For Version Control)
Add as Submodule
# In your project directory
git submodule add https://github.com/your-username/enhanced-lazy-loading-demo.git
git submodule update --init --recursive
Use in Your Project
[dependencies]
enhanced-lazy-loading-demo = { path = "./enhanced-lazy-loading-demo" }
📁 Option 4: Copy Specific Components (Minimal)
Copy Only What You Need
# Copy just the components you want
mkdir -p my-project/src/lazy_loading
cp enhanced-lazy-loading-demo/src/lazy_loading.rs my-project/src/lazy_loading/
cp enhanced-lazy-loading-demo/style/optimization.css my-project/styles/
Integrate into Your Code
// Copy the LazyComponentWrapper code directly into your project
mod lazy_loading;
use lazy_loading::LazyComponentWrapper;
🎨 What You Get with Each Option
✅ Complete System (Options 1-3)
- 39 pre-built components with metadata
- Advanced search and filtering system
- Professional UI with responsive design
- Favorites system for user preferences
- Bundle analysis and optimization tools
- Complete CSS styling system
- Comprehensive documentation
✅ Minimal Integration (Option 4)
- Core lazy loading functionality
- Basic component structure
- Essential styling for components
- Customizable for your needs
🚀 Quick Start Examples
Example 1: Dashboard Integration
#[component]
pub fn Dashboard() -> impl IntoView {
view! {
<div class="dashboard">
<nav class="sidebar">
<BundleAnalysisDisplay />
</nav>
<main class="content">
<h1>"My Dashboard"</h1>
<div class="widgets">
<LazyComponentWrapper name="DataTable".to_string() />
<LazyComponentWrapper name="Chart".to_string() />
<LazyComponentWrapper name="Metrics".to_string() />
</div>
</main>
</div>
}
}
Example 2: Component Library
#[component]
pub fn ComponentLibrary() -> impl IntoView {
view! {
<div class="component-library">
<header>
<h1>"My Component Library"</h1>
<BundleStatusDisplay />
</header>
<div class="component-categories">
<div class="category">
<h3>"Form Components"</h3>
<div class="component-grid">
<LazyComponentWrapper name="Input".to_string() />
<LazyComponentWrapper name="Select".to_string() />
<LazyComponentWrapper name="Checkbox".to_string() />
</div>
</div>
</div>
</div>
}
}
🎯 Customization Options
Add Your Own Components
// In the component_info closure, add new components:
"CustomButton" => ComponentInfo {
name: "CustomButton".to_string(),
category: "Custom Components".to_string(),
estimated_size: "18KB".to_string(),
dependencies: vec!["my-custom-lib".to_string()],
description: "A custom button for my app".to_string(),
},
Custom Categories
// Add new category sections:
<div class="category" data-category="custom">
<h4>"🛠️ Custom Components"</h4>
<div class="lazy-grid">
<LazyComponentWrapper name="CustomButton".to_string() />
<LazyComponentWrapper name="CustomModal".to_string() />
</div>
</div>
Custom Styling
/* Override or extend the default styles */
.my-theme .lazy-component-wrapper {
border-color: #8b5cf6;
background: linear-gradient(135deg, #f3e8ff 0%, #e9d5ff 100%);
}
📦 Distribution Files Overview
Core Files
src/lazy_loading.rs- Main lazy loading componentssrc/bundle_analyzer.rs- Bundle analysis displaysrc/dynamic_loader.rs- Dynamic loading managementstyle/optimization.css- Complete styling system
Configuration Files
Cargo.toml- Dependencies and package infoTrunk.toml- Build configuration (if using Trunk)
Documentation
README.md- Complete feature overviewDEMO_FEATURES.md- Interactive feature showcaseexample-usage.md- Real-world integration examplessetup-for-other-projects.sh- Automated setup script
🎉 Benefits of This Approach
✅ Full Control: Modify and customize as needed
✅ No External Dependencies: Everything runs locally
✅ Easy Testing: Test in your actual project environment
✅ Professional Quality: Use the enhanced UI system
✅ Scalable: Easy to add more components
✅ Well Documented: Comprehensive guides and examples
✅ Production Ready: Professional-grade implementation
🚀 Next Steps
- Choose Your Integration Method (we recommend Option 2 with the setup script)
- Copy the System to your workspace
- Test the Integration with the sample project
- Customize for your specific needs
- Deploy in your web applications
💡 Pro Tips
- Start with the sample project to understand how everything works
- Use the setup script for automatic configuration
- Customize gradually - start with the basics and add features
- Test thoroughly before deploying to production
- Keep a backup of the original system for reference
You now have everything you need to use this professional-grade lazy loading system in your own projects! 🎉✨
Ready to transform your web apps with advanced lazy loading? 🚀