Skip to main content

cranpose_liquid/
lib.rs

1//! Liquid UI — cranpose's first-party component library.
2//!
3//! An iOS-26-style "Liquid Glass" design system: translucent lens materials
4//! over live backdrop (refraction, blur, vibrancy, chromatic aberration,
5//! specular rims), semantic theming with automatic light/dark, and
6//! spring-physics motion. Pure UI code — no platform dependencies; runs on
7//! every cranpose target.
8//!
9//! ```ignore
10//! use cranpose::liquid::prelude::*;
11//!
12//! LiquidTheme(LiquidThemeSpec::default(), || {
13//!     GlassButton(Modifier::empty(), GlassButtonSpec::prominent(), on_click, || {
14//!         GlassButtonLabel("Add");
15//!     });
16//! });
17//! ```
18
19#![deny(unsafe_code)]
20#![allow(non_snake_case)]
21
22pub mod dynamics;
23pub mod icons;
24pub mod material;
25pub mod motion;
26pub mod theme;
27pub mod widgets;
28
29pub use cranpose_ui_graphics::{
30    GlassProfileCurve, GlassProfileError, GlassProfileKnot, GlassSurfaceProfile,
31    MAX_GLASS_PROFILE_KNOTS,
32};
33pub use dynamics::{remember_liquid_dynamics, LiquidDynamics, LiquidPose};
34pub use material::{
35    Glass, GlassDeformation, GlassDynamics, GlassShadow, GlassVariant, LiquidModifierExt,
36    LiquidShape,
37};
38pub use motion::{liquid_press_scale, LiquidMotion};
39pub use theme::{
40    liquid_colors, liquid_typography, LiquidColors, LiquidTheme, LiquidThemeSpec, LiquidTypography,
41    SchemeMode,
42};
43pub use widgets::*;
44
45/// Everything an app needs to build Liquid UI.
46pub mod prelude {
47    pub use crate::dynamics::{remember_liquid_dynamics, LiquidDynamics, LiquidPose};
48    pub use crate::icons;
49    pub use crate::material::{
50        Glass, GlassDeformation, GlassDynamics, GlassShadow, GlassVariant, LiquidModifierExt,
51        LiquidShape,
52    };
53    pub use crate::motion::{liquid_press_scale, LiquidMotion};
54    pub use crate::theme::{
55        liquid_colors, liquid_typography, LiquidColors, LiquidTheme, LiquidThemeSpec,
56        LiquidTypography, SchemeMode,
57    };
58    pub use crate::widgets::*;
59    pub use cranpose_ui_graphics::{
60        GlassProfileCurve, GlassProfileError, GlassProfileKnot, GlassSurfaceProfile,
61        MAX_GLASS_PROFILE_KNOTS,
62    };
63}