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 (wcKSRD refraction, blur, vibrancy, and edge light),
5//! 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#![allow(non_snake_case)]
20
21pub mod appearance;
22pub mod dynamics;
23pub mod icons;
24pub mod material;
25pub mod motion;
26pub mod theme;
27pub mod widgets;
28
29pub use appearance::{GlassTintAmount, InvalidGlassTintAmount};
30pub use dynamics::{LiquidDynamics, LiquidPose, rememberLiquidDynamics};
31pub use material::{
32    Glass, GlassDeformation, GlassDynamics, GlassFaceResponse, GlassKeyFill, GlassMorph,
33    GlassRefraction, GlassShadow, GlassSpectrum, GlassVariant, LiquidModifierExt, LiquidShape,
34    glass_light_direction, set_glass_light_direction,
35};
36pub use motion::{LiquidMotion, liquid_press_scale};
37pub use theme::{
38    LiquidColors, LiquidTheme, LiquidThemeSpec, LiquidTypography, SchemeMode, liquid_colors,
39    liquid_glass_tint_amount, liquid_typography,
40};
41pub use widgets::*;
42
43/// Everything an app needs to build Liquid UI.
44pub mod prelude {
45    pub use crate::{
46        appearance::{GlassTintAmount, InvalidGlassTintAmount},
47        dynamics::{LiquidDynamics, LiquidPose, rememberLiquidDynamics},
48        icons,
49        material::{
50            Glass, GlassDeformation, GlassDynamics, GlassFaceResponse, GlassKeyFill, GlassMorph,
51            GlassRefraction, GlassShadow, GlassSpectrum, GlassVariant, LiquidModifierExt,
52            LiquidShape,
53        },
54        motion::{LiquidMotion, liquid_press_scale},
55        theme::{
56            LiquidColors, LiquidTheme, LiquidThemeSpec, LiquidTypography, SchemeMode,
57            liquid_colors, liquid_glass_tint_amount, liquid_typography,
58        },
59        widgets::*,
60    };
61}