feat: Initial release v0.1.0 - 52 Leptos ShadCN UI components

This commit is contained in:
Peter Hanssens
2025-09-02 20:52:45 +10:00
commit d90684d6dc
618 changed files with 54196 additions and 0 deletions

View File

@@ -0,0 +1,267 @@
# 📦 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**
```bash
# 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**
```toml
# In your project's Cargo.toml
[dependencies]
enhanced-lazy-loading-demo = { path = "../enhanced-lazy-loading-demo" }
```
### **Step 3: Import and Use**
```rust
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**
```bash
# 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**
```bash
cd ~/my-workspace/sample-lazy-loading-app
trunk build
trunk serve --open
```
---
## 🔧 **Option 3: Git Submodule (For Version Control)**
### **Add as Submodule**
```bash
# 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**
```toml
[dependencies]
enhanced-lazy-loading-demo = { path = "./enhanced-lazy-loading-demo" }
```
---
## 📁 **Option 4: Copy Specific Components (Minimal)**
### **Copy Only What You Need**
```bash
# 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**
```rust
// 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**
```rust
#[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**
```rust
#[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**
```rust
// 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**
```rust
// 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**
```css
/* 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 components
- **`src/bundle_analyzer.rs`** - Bundle analysis display
- **`src/dynamic_loader.rs`** - Dynamic loading management
- **`style/optimization.css`** - Complete styling system
### **Configuration Files**
- **`Cargo.toml`** - Dependencies and package info
- **`Trunk.toml`** - Build configuration (if using Trunk)
### **Documentation**
- **`README.md`** - Complete feature overview
- **`DEMO_FEATURES.md`** - Interactive feature showcase
- **`example-usage.md`** - Real-world integration examples
- **`setup-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**
1. **Choose Your Integration Method** (we recommend Option 2 with the setup script)
2. **Copy the System** to your workspace
3. **Test the Integration** with the sample project
4. **Customize** for your specific needs
5. **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?** 🚀