leptos_shadcn_ui/
lib.rs

1//! # Leptos ShadCN UI
2//! 
3//! A comprehensive collection of beautiful, accessible UI components built for [Leptos](https://leptos.dev/) v0.8+, 
4//! inspired by [shadcn/ui](https://ui.shadcn.com/).
5//! 
6//! ## Features
7//! 
8//! - **25+ Components**: Button, Input, Card, Alert, and many more
9//! - **Leptos 0.8+**: Built specifically for Leptos v0.8+ compatibility
10//! - **Accessibility First**: All components follow accessibility best practices
11//! - **Tailwind CSS**: Seamless integration with Tailwind CSS
12//! - **Type Safety**: Full Rust type safety with proper error handling
13//! 
14//! ## Usage
15//! 
16//! See the [README.md](../README.md) for complete installation and usage instructions.
17//! 
18//! **Note**: Make sure to enable the features for the components you want to use:
19//! 
20//! ```toml
21//! [dependencies]
22//! leptos-shadcn-ui = { path = "path/to/leptos-shadcn-ui/packages/leptos-shadcn-ui", features = ["button", "input", "card"] }
23//! ```
24//! 
25//! ## Components
26//! 
27//! ### Form Components
28//! - Button, Input, Label, Checkbox, Switch, Radio Group, Select, Textarea
29//! 
30//! ### Layout Components  
31//! - Card, Separator, Tabs, Accordion, Dialog, Popover, Tooltip
32//! 
33//! ### Feedback & Status
34//! - Alert, Badge, Skeleton, Progress, Toast, Table, Calendar, Date Picker, Pagination
35//! 
36//! ### Interactive Components
37//! - Slider, Toggle
38//! 
39//! ### Performance Monitoring
40//! - Performance Audit System - Comprehensive performance monitoring and optimization
41//! - Bundle Size Analysis - Component size tracking and optimization recommendations
42//! - Real-time Monitoring - Performance metrics collection and analysis
43//! - CLI Tool - Command-line interface for running audits and generating reports
44//! 
45//! ## License
46//! 
47//! MIT License - see the [LICENSE](../LICENSE) file for details.
48
49// Re-export all components (conditionally based on features)
50#[cfg(feature = "button")]
51pub use leptos_shadcn_button::default::*;
52#[cfg(feature = "input")]
53pub use leptos_shadcn_input::default::*;
54#[cfg(feature = "label")]
55pub use leptos_shadcn_label::default::*;
56#[cfg(feature = "checkbox")]
57pub use leptos_shadcn_checkbox::default::*;
58#[cfg(feature = "switch")]
59pub use leptos_shadcn_switch::default::*;
60#[cfg(feature = "radio-group")]
61pub use leptos_shadcn_radio_group::default::*;
62#[cfg(feature = "select")]
63pub use leptos_shadcn_select::default::*;
64#[cfg(feature = "textarea")]
65pub use leptos_shadcn_textarea::default::*;
66#[cfg(feature = "card")]
67pub use leptos_shadcn_card::default::*;
68#[cfg(feature = "separator")]
69pub use leptos_shadcn_separator::default::*;
70#[cfg(feature = "tabs")]
71pub use leptos_shadcn_tabs::default::*;
72#[cfg(feature = "accordion")]
73pub use leptos_shadcn_accordion::default::*;
74#[cfg(feature = "dialog")]
75pub use leptos_shadcn_dialog::default::*;
76#[cfg(feature = "popover")]
77pub use leptos_shadcn_popover::default::*;
78#[cfg(feature = "tooltip")]
79pub use leptos_shadcn_tooltip::default::*;
80#[cfg(feature = "alert")]
81pub use leptos_shadcn_alert::default::*;
82#[cfg(feature = "badge")]
83pub use leptos_shadcn_badge::default::*;
84#[cfg(feature = "skeleton")]
85pub use leptos_shadcn_skeleton::default::*;
86#[cfg(feature = "progress")]
87pub use leptos_shadcn_progress::default::*;
88#[cfg(feature = "toast")]
89pub use leptos_shadcn_toast::default::*;
90#[cfg(feature = "table")]
91pub use leptos_shadcn_table::default::*;
92#[cfg(feature = "calendar")]
93pub use leptos_shadcn_calendar::*;
94#[cfg(feature = "date-picker")]
95pub use leptos_shadcn_date_picker::*;
96#[cfg(feature = "pagination")]
97pub use leptos_shadcn_pagination::*;
98#[cfg(feature = "slider")]
99pub use leptos_shadcn_slider::default::*;
100#[cfg(feature = "toggle")]
101pub use leptos_shadcn_toggle::default::*;
102
103// Advanced components (newly fixed)
104#[cfg(feature = "form")]
105pub use leptos_shadcn_form::default::*;
106#[cfg(feature = "combobox")]
107pub use leptos_shadcn_combobox::default::*;
108#[cfg(feature = "command")]
109pub use leptos_shadcn_command::*;
110#[cfg(feature = "input-otp")]
111pub use leptos_shadcn_input_otp::*;
112#[cfg(feature = "breadcrumb")]
113pub use leptos_shadcn_breadcrumb::*;
114#[cfg(feature = "lazy-loading")]
115pub use leptos_shadcn_lazy_loading::*;
116#[cfg(feature = "error-boundary")]
117pub use leptos_shadcn_error_boundary::*;
118#[cfg(feature = "registry")]
119pub use leptos_shadcn_registry::*;
120
121// Re-export common types and utilities
122pub use tailwind_fuse::tw_merge;
123
124// Module documentation
125#[cfg(feature = "all-components")]
126pub mod prelude {
127    //! # Leptos ShadCN UI Prelude
128    //! 
129    //! This module re-exports the most commonly used components and types.
130    //! 
131    //! ```rust
132    //! use leptos_shadcn_ui::prelude::*;
133    //! ```
134    
135    // Form components
136    #[cfg(feature = "button")]
137    pub use super::{Button, ButtonVariant, ButtonSize};
138    #[cfg(feature = "input")]
139    pub use super::{Input, InputProps};
140    #[cfg(feature = "label")]
141    pub use super::{Label, LabelProps};
142    #[cfg(feature = "checkbox")]
143    pub use super::{Checkbox, CheckboxProps};
144    #[cfg(feature = "switch")]
145    pub use super::{Switch, SwitchProps};
146    #[cfg(feature = "radio-group")]
147    pub use super::{RadioGroup, RadioGroupProps};
148    #[cfg(feature = "select")]
149    pub use super::{Select, SelectProps};
150    #[cfg(feature = "textarea")]
151    pub use super::{Textarea, TextareaProps};
152    
153    // Layout components
154    #[cfg(feature = "card")]
155    pub use super::{Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter};
156    #[cfg(feature = "separator")]
157    pub use super::{Separator, SeparatorProps};
158    #[cfg(feature = "tabs")]
159    pub use super::{Tabs, TabsList, TabsTrigger, TabsContent};
160    #[cfg(feature = "accordion")]
161    pub use super::{Accordion, AccordionItem, AccordionTrigger, AccordionContent};
162    #[cfg(feature = "dialog")]
163    pub use super::{Dialog, DialogTrigger, DialogContent, DialogHeader, DialogTitle, DialogDescription, DialogFooter};
164    #[cfg(feature = "popover")]
165    pub use super::Popover;
166    #[cfg(feature = "tooltip")]
167    pub use super::{Tooltip, TooltipContent, TooltipTrigger, TooltipProvider};
168    
169    // Feedback components
170    #[cfg(feature = "alert")]
171    pub use super::{Alert, AlertTitle, AlertDescription, AlertVariant};
172    #[cfg(feature = "badge")]
173    pub use super::{Badge, BadgeProps, BadgeVariant};
174    #[cfg(feature = "skeleton")]
175    pub use super::{Skeleton, SkeletonProps};
176    #[cfg(feature = "progress")]
177    pub use super::{Progress, ProgressProps};
178    #[cfg(feature = "toast")]
179    pub use super::{Toast, ToastProps};
180    #[cfg(feature = "table")]
181    pub use super::Table;
182    #[cfg(feature = "calendar")]
183    pub use super::Calendar;
184    #[cfg(feature = "date-picker")]
185    pub use super::DatePicker;
186    #[cfg(feature = "pagination")]
187    pub use super::Pagination;
188    
189    // Interactive components
190    #[cfg(feature = "slider")]
191    pub use super::{Slider, SliderProps};
192    #[cfg(feature = "toggle")]
193    pub use super::{Toggle, ToggleProps};
194    
195    // Utilities
196    pub use super::tw_merge;
197}