Skip to main content

stratum_leptos/
lib.rs

1//! # stratum-leptos
2//!
3//! Leptos framework adapter for NexusStratum.
4//!
5//! Provides idiomatic Leptos component APIs wrapping the headless
6//! primitives from `stratum-primitives` with styled defaults from
7//! `stratum-components`.
8//!
9//! ## What the adapter does
10//!
11//! - Converts `stratum-primitives` state to Leptos signals
12//! - Bridges `ComponentEvent` to Leptos event handlers
13//! - Generates Leptos `view!` macro output from `RenderOutput`
14//! - Provides Leptos-specific context providers (ThemeProvider, ToasterProvider)
15//!
16//! ## Usage
17//!
18//! ```ignore
19//! use stratum_leptos::*;
20//!
21//! #[component]
22//! fn App() -> impl IntoView {
23//!     view! {
24//!         <ThemeProvider theme=Theme::default()>
25//!             <Button variant=ButtonVariant::Primary>"Click me"</Button>
26//!         </ThemeProvider>
27//!     }
28//! }
29//! ```
30
31pub mod adapter;
32pub mod provider;
33
34// Re-export all styled component types for convenience
35pub use stratum_components::common::Size;
36pub use stratum_components::data_display::badge::{Badge, BadgeProps, BadgeVariant};
37pub use stratum_components::data_display::card::{Card, CardProps};
38pub use stratum_components::data_display::skeleton::{Skeleton, SkeletonProps};
39pub use stratum_components::data_display::spinner::{Spinner, SpinnerProps};
40pub use stratum_components::forms::button::{Button, ButtonProps, ButtonVariant};
41pub use stratum_components::forms::checkbox::{Checkbox, CheckboxProps};
42pub use stratum_components::forms::form::{Form, FormField, FormFieldProps, FormProps};
43pub use stratum_components::forms::input::{Input, InputProps};
44pub use stratum_components::forms::radio::{Radio, RadioProps};
45pub use stratum_components::forms::select::{Select, SelectProps};
46pub use stratum_components::forms::switch::{Switch, SwitchProps};
47pub use stratum_components::forms::textarea::{Textarea, TextareaProps};
48pub use stratum_components::layout::divider::{Divider, DividerProps};
49pub use stratum_components::layout::stack::{Stack, StackProps};
50pub use stratum_components::navigation::accordion::{Accordion, AccordionProps};
51pub use stratum_components::navigation::tabs::{Tab, TabList, TabPanel, TabProps};
52pub use stratum_components::overlay::alert_dialog::{AlertDialog, AlertDialogProps};
53pub use stratum_components::overlay::dialog::{Dialog, DialogProps};
54pub use stratum_components::overlay::popover::{Popover, PopoverProps};
55pub use stratum_components::overlay::toast::{Toast, ToastProps, ToastVariant};
56pub use stratum_components::overlay::tooltip::{Tooltip, TooltipProps};
57pub use stratum_components::typography::heading::{Heading, HeadingProps};
58pub use stratum_components::typography::link::{Link, LinkProps};
59pub use stratum_components::typography::text::{Text, TextProps};
60pub use stratum_components::utility::focus_scope::{FocusScope, FocusScopeProps};
61pub use stratum_components::utility::portal::Portal;
62pub use stratum_components::utility::separator::{Separator, SeparatorProps};
63pub use stratum_components::utility::visually_hidden::VisuallyHidden;
64
65// Re-export theme types
66pub use stratum_theme::Theme;
67
68// Re-export adapter
69pub use adapter::StratumAdapter;
70pub use provider::ThemeContext;