Skip to main content

dui/
lib.rs

1//! # DUI
2//!
3//! A production-ready Leptos 0.7 component library with 29 accessible,
4//! signal-driven components and a dark-first design system.
5//!
6//! ## Features
7//!
8//! - **29 components**: Form controls, data display, navigation, overlays, feedback, layout
9//! - **Accessible**: ARIA roles, keyboard navigation, focus management, screen reader support
10//! - **Dark-first with light mode**: Complete CSS custom property theming system
11//! - **Signal-driven**: Built on Leptos reactive primitives (`Signal`, `RwSignal`)
12//! - **Zero JS**: Pure Rust/WASM, no JavaScript dependencies
13//!
14//! ## Quick Start
15//!
16//! ```toml
17//! [dependencies]
18//! DUI = "0.2"
19//! ```
20//!
21//! ```rust,ignore
22//! use dui::prelude::*;
23//!
24//! #[component]
25//! fn MyApp() -> impl IntoView {
26//!     provide_toast();
27//!     view! {
28//!         <Button variant=ButtonVariant::Primary on_click=Box::new(|_| {})>
29//!             "Click me"
30//!         </Button>
31//!         <ToastContainer />
32//!     }
33//! }
34//! ```
35//!
36//! ## CSS Setup
37//!
38//! Link `DUI.css` in your HTML. For light mode, add `data-theme="light"`
39//! to your `<html>` element, or let it auto-detect via `prefers-color-scheme`.
40//!
41//! ## Components
42//!
43//! | Category | Components |
44//! |----------|-----------|
45//! | **Form** | Button, Input, Textarea, Select, Checkbox, Radio, Switch |
46//! | **Data** | Badge, Card, Table, Avatar, StatsCard, StatusBadge, ProgressBar, Skeleton |
47//! | **Nav** | Sidebar, Tabs, Breadcrumb |
48//! | **Overlay** | Modal, Tooltip, Dropdown, Sheet, CommandPalette |
49//! | **Feedback** | Toast, AlertBanner, EmptyState |
50//! | **Layout** | Divider, Accordion, Kbd |
51
52pub mod accordion;
53pub mod alert_banner;
54pub mod avatar;
55pub mod badge;
56pub mod breadcrumb;
57pub mod button;
58pub mod card;
59pub mod checkbox;
60pub mod command;
61pub mod divider;
62pub mod dropdown;
63pub mod empty_state;
64pub mod input;
65pub mod kbd;
66pub mod modal;
67pub mod progress_bar;
68pub mod radio;
69pub mod select;
70pub mod sheet;
71pub mod sidebar;
72pub mod skeleton;
73pub mod stats_card;
74pub mod status_badge;
75pub mod switch;
76pub mod table;
77pub mod tabs;
78pub mod textarea;
79pub mod toast;
80pub mod tooltip;
81
82/// Re-export all components at crate root for convenience.
83pub mod prelude {
84    pub use crate::accordion::*;
85    pub use crate::alert_banner::*;
86    pub use crate::avatar::*;
87    pub use crate::badge::*;
88    pub use crate::breadcrumb::*;
89    pub use crate::button::*;
90    pub use crate::card::*;
91    pub use crate::checkbox::*;
92    pub use crate::command::*;
93    pub use crate::divider::*;
94    pub use crate::dropdown::*;
95    pub use crate::empty_state::*;
96    pub use crate::input::*;
97    pub use crate::kbd::*;
98    pub use crate::modal::*;
99    pub use crate::progress_bar::*;
100    pub use crate::radio::*;
101    pub use crate::select::*;
102    pub use crate::sheet::*;
103    pub use crate::sidebar::*;
104    pub use crate::skeleton::*;
105    pub use crate::stats_card::*;
106    pub use crate::status_badge::*;
107    pub use crate::switch::*;
108    pub use crate::table::*;
109    pub use crate::tabs::*;
110    pub use crate::textarea::*;
111    pub use crate::toast::*;
112    pub use crate::tooltip::*;
113}