# bevy_mod_stylebuilder This crate provides a set of low-level utilities for configuring `bevy_ui` styles using a fluent API. A `StyleBuilder` is an object that understands how to insert, remove, and modify Bevy style components such as `Style`, `BackgroundColor` and so on, as well as the `Pickable` component used by `bevy_mod_picking`. `StyleBuilder` is extensible by implementing additional traits. In fact, all of the fluent methods are trait methods. ```rust use bevy_mod_stylebuilder::prelude::*; fn style_button(ss: &mut StyleBuilder) { ss.border(1) .display(ui::Display::Flex) .flex_direction(ui::FlexDirection::Row) .justify_content(ui::JustifyContent::Center) .align_items(ui::AlignItems::Center) .align_content(ui::AlignContent::Center) .padding((12, 0)) .border(0) .color(colors::FOREGROUND) .cursor(CursorIcon::Pointer); } ``` In most cases, you won't need to instantiate a `StyleBuilder` object yourself, the UI framework will pass one to you as a callback parameter. For framework authors, however, here are the steps needed to create a new `StyleBuilder`: ```rust /// Construct a new StyleBuilder instance with the entity and `Styles` component. let mut sb = StyleBuilder::new(&mut target, style); /// Apply one or more style functions. self.styles.apply(&mut sb); /// Call `.finish()` to write out the changes. sb.finish(); ``` Most style components such as `BackgroundColor` are modified immediately, however `Style` is treated as a special case because it has so many properties: it's cached in the `StyleBuilder` instance and then flushed out at the end via `finish()`.