mirror of
https://github.com/cloud-shuttle/leptos-shadcn-ui.git
synced 2025-12-22 22:00:00 +00:00
4.0 KiB
4.0 KiB
🚀 Enhanced Lazy Loading System
⚠️ AI-Generated Code: This system was developed with AI assistance and has been thoroughly tested and verified by human review. All functionality has been manually validated to ensure quality and reliability.
A professional-grade component library showcase built with Rust and Leptos, featuring advanced search, filtering, favorites, and realistic loading simulation.
✨ Features
- 🔍 Advanced Search & Discovery: Real-time search with instant filtering
- 🎨 Professional UI: Modern card-based design with hover effects
- ⚡ Enhanced Lazy Loading: Realistic loading simulation with progress bars
- ⭐ Favorites System: Global and individual component favorites
- 📱 Responsive Design: Works perfectly on all device sizes
- 🎭 Interactive States: Placeholder → Loading → Success transitions
🚀 Quick Start
1. Add to Your Project
[dependencies]
enhanced-lazy-loading-demo = { path = "../path/to/enhanced-lazy-loading-demo" }
2. Import and Use
use enhanced_lazy_loading_demo::lazy_loading::LazyComponentWrapper;
use enhanced_lazy_loading_demo::bundle_analyzer::BundleAnalysisDisplay;
use enhanced_lazy_loading_demo::dynamic_loader::BundleStatusDisplay;
#[component]
pub fn MyApp() -> impl IntoView {
view! {
<div>
<BundleAnalysisDisplay />
<BundleStatusDisplay />
<div class="component-showcase">
<LazyComponentWrapper name="Alert".to_string() />
<LazyComponentWrapper name="Button".to_string() />
<LazyComponentWrapper name="Card".to_string() />
</div>
</div>
}
}
3. Include CSS
<link rel="stylesheet" href="../path/to/enhanced-lazy-loading-demo/style/optimization.css">
🎯 Component Categories
📝 Form & Input (12 components)
- Alert, Badge, Checkbox, Combobox, Form, Input OTP
- Radio Group, Select, Slider, Switch, Textarea, Toggle
🧭 Layout & Navigation (10 components)
- Accordion, Breadcrumb, Collapsible, Command, Navigation Menu
- Pagination, Scroll Area, Skeleton, Tabs
🪟 Overlay & Feedback (10 components)
- Alert Dialog, Dialog, Drawer, Dropdown Menu, Hover Card
- Menubar, Popover, Sheet, Toast, Tooltip
📊 Data & Media (7 components)
- Aspect Ratio, Calendar, Carousel, Context Menu
- Date Picker, Progress, Table
🔧 Customization
Adding New Components
// In component_info closure, add new match arms:
"NewComponent" => ComponentInfo {
name: "NewComponent".to_string(),
category: "Custom Category".to_string(),
estimated_size: "25KB".to_string(),
dependencies: vec!["custom-dependency".to_string()],
description: "Description of your new component".to_string(),
},
Customizing Categories
// Modify the category sections in app.rs
<div class="category" data-category="custom">
<h4>"Custom Category"</h4>
<div class="lazy-grid">
<LazyComponentWrapper name="CustomComponent".to_string() />
</div>
</div>
🎨 Styling
The system includes a comprehensive CSS file with:
- Modern Design System: Consistent spacing, typography, and colors
- Interactive States: Hover effects, transitions, and animations
- Responsive Breakpoints: Mobile-first responsive design
- Theme Support: Easy customization of colors and styles
📦 Bundle Information
- WASM Bundle: ~4.5MB (includes all features and metadata)
- JavaScript Bundle: ~28KB (minimal overhead)
- CSS Bundle: Comprehensive styling system
🔮 Future Enhancements
- Real dynamic imports (replace simulation)
- Bundle size monitoring
- Performance metrics
- Component playground
- Advanced search algorithms
- User preference persistence
📄 License
MIT License - feel free to use in your projects!
🤝 Contributing
This is a demonstration project showcasing advanced lazy loading techniques. Feel free to adapt and extend for your own needs!
Built with ❤️ using Rust and Leptos