pub struct SurfaceArgs {
pub color: Color,
pub hover_color: Option<Color>,
pub shape: Shape,
pub shadow: Option<ShadowProps>,
pub padding: Dp,
pub width: Option<DimensionValue>,
pub height: Option<DimensionValue>,
pub border_width: f32,
pub border_color: Option<Color>,
pub on_click: Option<Arc<dyn Fn() + Send + Sync>>,
pub ripple_color: Color,
pub block_input: bool,
}
Expand description
Arguments for the surface
component.
This struct defines the configurable properties for the surface
container,
which provides a background, optional shadow, border, shape, and interactive
ripple effect. The surface is commonly used to wrap content and visually
separate it from the background or other UI elements.
§Fields
color
: The fill color of the surface (RGBA). Defaults to a blue-gray.hover_color
: The color displayed when the surface is hovered. IfNone
, no hover effect is applied.shape
: The geometric shape of the surface (e.g., rounded rectangle, ellipse).shadow
: Optional shadow properties for elevation effects.padding
: Padding inside the surface, applied to all sides.width
: Optional explicit width constraint. IfNone
, wraps content.height
: Optional explicit height constraint. IfNone
, wraps content.border_width
: Width of the border. If greater than 0, an outline is drawn.border_color
: Optional color for the border. IfNone
andborder_width > 0
, usescolor
.on_click
: Optional callback for click events. If set, the surface becomes interactive and shows a ripple effect.ripple_color
: The color of the ripple effect for interactive surfaces.
§Example
use std::sync::Arc;
use tessera_ui::{Color, Dp};
use tessera_ui_basic_components::{
pipelines::ShadowProps,
ripple_state::RippleState,
surface::{surface, SurfaceArgs},
};
let ripple_state = Arc::new(RippleState::new());
surface(
SurfaceArgs {
color: Color::from_rgb(0.95, 0.95, 1.0),
shadow: Some(ShadowProps::default()),
padding: Dp(16.0),
border_width: 1.0,
border_color: Some(Color::from_rgb(0.7, 0.7, 0.9)),
..Default::default()
},
Some(ripple_state.clone()),
|| {},
);
Fields§
§color: Color
The fill color of the surface (RGBA).
hover_color: Option<Color>
The hover color of the surface (RGBA). If None, no hover effect is applied.
shape: Shape
The shape of the surface (e.g., rounded rectangle, ellipse).
shadow: Option<ShadowProps>
The shadow properties of the surface.
padding: Dp
The padding inside the surface.
width: Option<DimensionValue>
Optional explicit width behavior for the surface. Defaults to Wrap {min: None, max: None} if None.
height: Option<DimensionValue>
Optional explicit height behavior for the surface. Defaults to Wrap {min: None, max: None} if None.
border_width: f32
Width of the border. If > 0, an outline will be drawn.
border_color: Option<Color>
Optional color for the border (RGBA). If None and border_width > 0, color
will be used.
on_click: Option<Arc<dyn Fn() + Send + Sync>>
Optional click callback function. If provided, surface becomes interactive with ripple effect.
ripple_color: Color
The ripple color (RGB) for interactive surfaces.
block_input: bool
Whether the surface should block all input events.
Trait Implementations§
Source§impl Clone for SurfaceArgs
impl Clone for SurfaceArgs
Source§fn clone(&self) -> SurfaceArgs
fn clone(&self) -> SurfaceArgs
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreAuto Trait Implementations§
impl Freeze for SurfaceArgs
impl !RefUnwindSafe for SurfaceArgs
impl Send for SurfaceArgs
impl Sync for SurfaceArgs
impl Unpin for SurfaceArgs
impl !UnwindSafe for SurfaceArgs
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait>
(where Trait: Downcast
) to Box<dyn Any>
. Box<dyn Any>
can
then be further downcast
into Box<ConcreteType>
where ConcreteType
implements Trait
.§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait>
(where Trait: Downcast
) to Rc<Any>
. Rc<Any>
can then be
further downcast
into Rc<ConcreteType>
where ConcreteType
implements Trait
.§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &Any
’s vtable from &Trait
’s.§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait
(where Trait: Downcast
) to &Any
. This is needed since Rust cannot
generate &mut Any
’s vtable from &mut Trait
’s.§impl<T> DowncastSync for T
impl<T> DowncastSync for T
§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<R, P> ReadPrimitive<R> for P
impl<R, P> ReadPrimitive<R> for P
Source§fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
fn read_from_little_endian(read: &mut R) -> Result<Self, Error>
ReadEndian::read_from_little_endian()
.