Skip to main content

stratum_components/
lib.rs

1//! # stratum-components
2//!
3//! Production-quality styled UI components for NexusStratum.
4//!
5//! Each component wraps a primitive from `stratum-primitives`, adding:
6//! - Variant enums (e.g., `ButtonVariant`)
7//! - Size enums (`Size`: Xs, Sm, Md, Lg, Xl)
8//! - Default Tailwind classes per variant/size
9//! - Icon slot support
10//! - Loading state support (where applicable)
11//!
12//! Components produce `RenderOutput` from `stratum-core`, which framework
13//! adapters translate into actual DOM elements.
14
15pub mod common;
16
17pub mod data_display;
18pub mod forms;
19pub mod layout;
20pub mod navigation;
21pub mod overlay;
22pub mod typography;
23pub mod utility;
24
25// ── Re-exports for convenience ──────────────────────────────────────────
26
27// Common
28pub use common::Size;
29
30// Forms
31pub use forms::button::{Button, ButtonProps, ButtonVariant};
32pub use forms::checkbox::{Checkbox, CheckboxGroup, CheckboxGroupProps, CheckboxProps};
33pub use forms::form::{
34    Form, FormError, FormErrorProps, FormField, FormFieldProps, FormHelperText,
35    FormHelperTextProps, FormLabel, FormLabelProps, FormProps,
36};
37pub use forms::input::{Input, InputGroup, InputProps, InputVariant};
38pub use forms::radio::{Radio, RadioGroup, RadioGroupProps, RadioProps};
39pub use forms::select::{Select, SelectProps};
40pub use forms::switch::{Switch, SwitchProps};
41pub use forms::textarea::{ResizeMode, Textarea, TextareaProps};
42
43// Overlay
44pub use overlay::alert_dialog::{AlertDialog, AlertDialogProps};
45pub use overlay::dialog::{Dialog, DialogOverlay, DialogOverlayProps, DialogProps};
46pub use overlay::popover::{Popover, PopoverAlign, PopoverProps, PopoverSide};
47pub use overlay::toast::{Toast, ToastProps, ToastVariant, Toaster, ToasterProps};
48pub use overlay::tooltip::{Tooltip, TooltipProps, TooltipSide};
49
50// Navigation
51pub use navigation::accordion::{
52    Accordion, AccordionContent, AccordionContentProps, AccordionItem, AccordionItemProps,
53    AccordionProps, AccordionTrigger, AccordionTriggerProps,
54};
55pub use navigation::tabs::{Tab, TabList, TabListProps, TabPanel, TabPanelProps, TabProps};
56
57// Data Display
58pub use data_display::badge::{Badge, BadgeProps, BadgeVariant};
59pub use data_display::card::{
60    Card, CardContent, CardContentProps, CardDescription, CardDescriptionProps, CardFooter,
61    CardFooterProps, CardHeader, CardHeaderProps, CardProps, CardTitle, CardTitleProps,
62};
63pub use data_display::skeleton::{Skeleton, SkeletonProps};
64pub use data_display::spinner::{Spinner, SpinnerProps};
65
66// Layout
67pub use layout::divider::{Divider, DividerProps};
68pub use layout::stack::{
69    HStack, Stack, StackAlign, StackDirection, StackJustify, StackProps, StackSpacing, VStack,
70};
71
72// Typography
73pub use typography::heading::{Heading, HeadingLevel, HeadingProps};
74pub use typography::link::{Link, LinkProps, LinkVariant};
75pub use typography::text::{FontWeight, Text, TextColor, TextProps};
76
77// Utility
78pub use utility::focus_scope::{FocusScope, FocusScopeProps};
79pub use utility::portal::{Portal, PortalProps};
80pub use utility::separator::{Separator, SeparatorProps};
81pub use utility::visually_hidden::{VisuallyHidden, VisuallyHiddenProps};