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        Box, BoxProps, BoxDisplay, FlexDirection, FlexWrap, JustifyContent, AlignItems,
68        SpacingSize, RadiusSize, ShadowSize, BackgroundColor, BorderWidth, Overflow, Position,
69        VStack, HStack, Center,
70    };
71    
72    // Molecules
73    pub use crate::molecules::{
74        InputGroup,
75        Card, CardProps, CardVariant, CardHeader, CardHeaderProps, 
76        CardContent, CardContentProps, CardFooter, CardFooterProps, CardFooterJustify,
77        Badge, BadgeProps, BadgeVariant, BadgeSize, StatusBadge, StatusBadgeProps, StatusType,
78        Alert, AlertProps, AlertVariant,
79        Avatar, AvatarProps, AvatarSize, AvatarGroup, AvatarGroupProps,
80        Breadcrumb, BreadcrumbProps, BreadcrumbItem,
81        Dialog, DialogProps, DialogFooter, DialogFooterProps, DialogFooterAlign, AlertDialog, AlertDialogProps,
82        DropdownMenu, DropdownMenuProps, DropdownMenuItem, DropdownAlign, DropdownMenuSeparator, DropdownMenuLabel, DropdownMenuLabelProps,
83        Popover, PopoverProps, PopoverPlacement, PopoverHeader, PopoverHeaderProps, PopoverFooter, PopoverFooterProps,
84        Separator, SeparatorProps, SeparatorOrientation,
85        Skeleton, SkeletonProps, SkeletonCircle, SkeletonCircleProps, SkeletonText, SkeletonTextProps, SkeletonCard, SkeletonCardProps,
86        Tooltip, TooltipProps, TooltipPlacement, SimpleTooltip, SimpleTooltipProps,
87    };
88    
89    // Organisms
90    pub use crate::organisms::{
91        Header, HeaderProps, NavItem, HeaderNavLink, MobileMenuToggle,
92        UserMenu, UserMenuProps, UserMenuItem,
93        DataTable, DataTableProps, TableColumn, ColumnAlign, Pagination, PaginationProps,
94        Tabs, TabsProps, TabItem, TabsVariant, TabPanel, TabPanelProps, VerticalTabs, VerticalTabsProps,
95        Accordion, AccordionProps, AccordionItem, AccordionItem2, AccordionItem2Props,
96        Layout, LayoutProps, LayoutType, LayoutNavItem,
97    };
98    
99    // Charts
100    pub use crate::organisms::charts::{
101        BarChart, BarChartProps, BarChartVariant,
102        LineChart, LineChartProps, LineChartVariant,
103        PieChart, PieChartProps, PieChartVariant, DonutChart, GaugeChart,
104        Sparkline, SparklineProps, SparklineVariant, TrendIndicator,
105        ChartDataPoint, ChartSeries, ChartMargin, ChartAxis, 
106        LegendPosition, ChartTooltip, ChartAnimation, AnimationEasing,
107        calculate_nice_ticks, format_compact_number, format_currency, format_percentage,
108        palettes, utils,
109    };
110}
111
112// Re-export at crate root for convenience
113pub use theme::*;
114pub use styles::*;