Skip to main content

dioxus_ui_system/
lib.rs

1//! Dioxus UI System
2//!
3//! A pure Rust design system for Dioxus with Atomic Design principles.
4//! 
5//! ## Features
6//!
7//! - **Atomic Design Architecture**: Components organized as Atoms, Molecules, and Organisms
8//! - **Type-Safe Theming**: Comprehensive theme system with light/dark/brand modes
9//! - **Pure Rust Styling**: No CSS files - all styles generated in Rust
10//! - **Tailwind-like API**: Fluent style builder for rapid UI development
11//! - **Multi-Platform**: Works on Web (WASM), Desktop, and Mobile
12//!
13//! ## Quick Start
14//!
15//! ```rust,ignore
16//! use dioxus_ui_system::prelude::*;
17//!
18//! fn App() -> Element {
19//!     rsx! {
20//!         ThemeProvider {
21//!             Card {
22//!                 CardHeader { title: "Welcome" }
23//!                 CardContent {
24//!                     Button {
25//!                         variant: ButtonVariant::Primary,
26//!                         "Click me"
27//!                     }
28//!                 }
29//!             }
30//!         }
31//!     }
32//! }
33//! ```
34
35pub mod theme;
36pub mod styles;
37pub mod atoms;
38pub mod molecules;
39pub mod organisms;
40
41/// Prelude module for convenient imports
42pub mod prelude {
43    //! Convenient re-exports for common types
44    
45    // Theme
46    pub use crate::theme::{
47        ThemeTokens, ThemeMode, ColorScale, Color, 
48        SpacingScale, RadiusScale, TypographyScale, Typography,
49        ThemeContext, ThemeProvider, use_theme, use_style, ThemeToggle, ThemeSelector,
50    };
51    
52    // Styles
53    pub use crate::styles::Style;
54    pub use crate::{cx, style_if};
55    
56    // Atoms
57    pub use crate::atoms::{
58        Button, ButtonProps, ButtonVariant, ButtonSize, ButtonType, IconButton,
59        Input, InputProps, InputType,
60        Label, LabelProps, TextSize, TextWeight, TextColor, LabelElement, Heading, HeadingLevel, MutedText,
61        Icon, IconProps, IconSize, IconColor, IconBtn as IconButton2,
62        Checkbox, CheckboxProps,
63        Radio, RadioProps, RadioGroup, RadioGroupProps, RadioDirection,
64        Switch, SwitchProps, SwitchSize,
65        Select, SelectProps, SelectOption, MultiSelect, MultiSelectProps,
66        TextArea, TextAreaProps, AutoResizeTextArea, AutoResizeTextAreaProps,
67    };
68    
69    // Molecules
70    pub use crate::molecules::{
71        InputGroup,
72        Card, CardProps, CardVariant, CardHeader, CardHeaderProps, 
73        CardContent, CardContentProps, CardFooter, CardFooterProps, CardFooterJustify,
74        Badge, BadgeProps, BadgeVariant, BadgeSize, StatusBadge, StatusBadgeProps, StatusType,
75        Alert, AlertProps, AlertVariant,
76        Avatar, AvatarProps, AvatarSize, AvatarGroup, AvatarGroupProps,
77        Breadcrumb, BreadcrumbProps, BreadcrumbItem,
78        Dialog, DialogProps, DialogFooter, DialogFooterProps, DialogFooterAlign, AlertDialog, AlertDialogProps,
79        DropdownMenu, DropdownMenuProps, DropdownMenuItem, DropdownAlign, DropdownMenuSeparator, DropdownMenuLabel, DropdownMenuLabelProps,
80        Popover, PopoverProps, PopoverPlacement, PopoverHeader, PopoverHeaderProps, PopoverFooter, PopoverFooterProps,
81        Separator, SeparatorProps, SeparatorOrientation,
82        Skeleton, SkeletonProps, SkeletonCircle, SkeletonCircleProps, SkeletonText, SkeletonTextProps, SkeletonCard, SkeletonCardProps,
83        Tooltip, TooltipProps, TooltipPlacement, SimpleTooltip, SimpleTooltipProps,
84    };
85    
86    // Organisms
87    pub use crate::organisms::{
88        Header, HeaderProps, NavItem, HeaderNavLink, MobileMenuToggle,
89        UserMenu, UserMenuProps, UserMenuItem,
90        DataTable, DataTableProps, TableColumn, ColumnAlign, Pagination, PaginationProps,
91        Tabs, TabsProps, TabItem, TabsVariant, TabPanel, TabPanelProps, VerticalTabs, VerticalTabsProps,
92        Accordion, AccordionProps, AccordionItem, AccordionItem2, AccordionItem2Props,
93        Layout, LayoutProps, LayoutType, LayoutNavItem,
94    };
95}
96
97// Re-export at crate root for convenience
98pub use theme::*;
99pub use styles::*;