pub struct ListStyles {Show 17 fields
pub title_bar: Style,
pub title: Style,
pub spinner: Style,
pub filter_prompt: Style,
pub filter_cursor: Style,
pub default_filter_character_match: Style,
pub status_bar: Style,
pub status_empty: Style,
pub status_bar_active_filter: Style,
pub status_bar_filter_count: Style,
pub no_items: Style,
pub pagination_style: Style,
pub help_style: Style,
pub active_pagination_dot: Style,
pub inactive_pagination_dot: Style,
pub arabic_pagination: Style,
pub divider_dot: Style,
}Expand description
Comprehensive styling configuration for all list component UI elements.
This struct contains styling definitions for every visual element in a list component, from the title bar and items to pagination and help text. All styles use adaptive colors that automatically adjust to the terminal’s light or dark theme.
§Style Categories
The styles are organized into logical categories:
§Header and Title
title_bar: Container for the list titletitle: The list title text styling
§Filtering and Input
filter_prompt: The “Filter:” prompt textfilter_cursor: Cursor/caret in filter inputdefault_filter_character_match: Character-level match highlighting
§Status and Information
status_bar: Main status bar containerstatus_empty: Status when list is emptystatus_bar_active_filter: Active filter indicatorstatus_bar_filter_count: Filter result countno_items: “No items” message
§Pagination and Navigation
pagination_style: Pagination area containeractive_pagination_dot: Current page indicator (•)inactive_pagination_dot: Other page indicators (•)arabic_pagination: Numeric pagination (1, 2, 3…)divider_dot: Separator between elements ( • )
§Interactive Elements
spinner: Loading/processing indicatorhelp_style: Help text area
§Adaptive Color System
All default styles use AdaptiveColor which provides different colors
for light and dark terminal themes:
- Light themes: Darker text on light backgrounds
- Dark themes: Lighter text on dark backgrounds
§Examples
use bubbletea_widgets::list::style::ListStyles;
use lipgloss_extras::prelude::*;
// Start with default adaptive styles
let mut styles = ListStyles::default();
// Customize title with branded colors
styles.title = Style::new()
.background(Color::from("#7D56F4"))
.foreground(Color::from("#FFFFFF"))
.bold(true)
.padding(0, 1, 0, 1);
// Make filter prompt more prominent
styles.filter_prompt = Style::new()
.foreground(AdaptiveColor { Light: "#059669", Dark: "#10B981" })
.bold(true);
// Use subtle pagination
styles.pagination_style = Style::new()
.foreground(AdaptiveColor { Light: "#9CA3AF", Dark: "#6B7280" })
.padding_left(2);§Integration
This struct is typically used with Model to configure the entire
list appearance:
use bubbletea_widgets::list::{Model, DefaultItem, DefaultDelegate, style::ListStyles};
let items = vec![DefaultItem::new("Item 1", "Description 1")];
let delegate = DefaultDelegate::new();
let list: Model<DefaultItem> = Model::new(items, delegate, 80, 24);
// Custom styles can be created and configured
let mut custom_styles = ListStyles::default();
custom_styles.title = custom_styles.title.bold(true);
// Note: Styles would be applied through constructor or builder patternFields§
§title_bar: StyleStyle for the title bar container.
title: StyleStyle for the list title text.
spinner: StyleStyle for spinner glyphs.
filter_prompt: StyleStyle for the filter prompt label.
filter_cursor: StyleStyle for the filter cursor/caret.
default_filter_character_match: StyleStyle for default filter character highlight.
status_bar: StyleStyle for the status bar container.
status_empty: StyleStyle for the status bar when the list is empty.
status_bar_active_filter: StyleStyle for active filter text in the status bar.
status_bar_filter_count: StyleStyle for filter match count in the status bar.
no_items: StyleStyle for the “No items” message.
pagination_style: StyleStyle for pagination area.
help_style: StyleStyle for help text area.
active_pagination_dot: StyleStyle for the active pagination dot.
inactive_pagination_dot: StyleStyle for the inactive pagination dot.
arabic_pagination: StyleStyle for arabic numerals in pagination.
divider_dot: StyleStyle for the divider dot between elements.
Trait Implementations§
Source§impl Clone for ListStyles
impl Clone for ListStyles
Source§fn clone(&self) -> ListStyles
fn clone(&self) -> ListStyles
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ListStyles
impl Debug for ListStyles
Source§impl Default for ListStyles
impl Default for ListStyles
Source§fn default() -> Self
fn default() -> Self
Creates default list styles matching the Go bubbles library appearance.
The default styles provide a professional, accessible appearance with:
- Adaptive colors that automatically adjust to terminal themes
- Consistent typography with proper spacing and alignment
- High contrast for accessibility and readability
- Visual hierarchy with appropriate emphasis and subdued elements
§Color Palette
The default styles use a carefully chosen adaptive color palette:
§Primary Colors
- Title: Fixed colors (background: #3E (purple), text: #E6 (light))
- Active elements: Bright colors for focus and selection
§Adaptive Colors
- Normal text: Light: dark text, Dark: light text
- Subdued elements: Light: medium gray, Dark: dark gray
- Interactive elements: Green/yellow filter prompts, purple accents
§Accessibility
- All color combinations meet WCAG contrast requirements
- Colors are distinguishable for common color vision differences
- Text remains readable in both light and dark terminal themes
§Visual Design
The default layout follows these principles:
- Padding: Consistent 2-unit left padding for alignment
- Spacing: 1-line spacing for readability
- Borders: Minimal, used only for emphasis
- Typography: No decorative fonts, clear hierarchy
§Examples
use bubbletea_widgets::list::style::ListStyles;
// Get default styles
let styles = ListStyles::default();
// The styles will automatically adapt to your terminal theme
// In light terminals: dark text on light backgrounds
// In dark terminals: light text on dark backgrounds§Compatibility
These defaults are designed to match the visual appearance of the original Go charmbracelet/bubbles library, ensuring consistency across different implementations.
Auto Trait Implementations§
impl Freeze for ListStyles
impl !RefUnwindSafe for ListStyles
impl Send for ListStyles
impl Sync for ListStyles
impl Unpin for ListStyles
impl !UnwindSafe for ListStyles
Blanket Implementations§
Source§impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for Swhere
T: Real + Zero + Arithmetics + Clone,
Swp: WhitePoint<T>,
Dwp: WhitePoint<T>,
D: AdaptFrom<S, Swp, Dwp, T>,
Source§fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
fn adapt_into_using<M>(self, method: M) -> Dwhere
M: TransformMatrix<T>,
Source§fn adapt_into(self) -> D
fn adapt_into(self) -> D
Source§impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
impl<T, C> ArraysFrom<C> for Twhere
C: IntoArrays<T>,
Source§fn arrays_from(colors: C) -> T
fn arrays_from(colors: C) -> T
Source§impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
impl<T, C> ArraysInto<C> for Twhere
C: FromArrays<T>,
Source§fn arrays_into(self) -> C
fn arrays_into(self) -> C
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<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for Uwhere
T: FromCam16Unclamped<WpParam, U>,
Source§type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn cam16_into_unclamped(
self,
parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>,
) -> T
fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
impl<T, C> ComponentsFrom<C> for Twhere
C: IntoComponents<T>,
Source§fn components_from(colors: C) -> T
fn components_from(colors: C) -> T
Source§impl<T> FromAngle<T> for T
impl<T> FromAngle<T> for T
Source§fn from_angle(angle: T) -> T
fn from_angle(angle: T) -> T
angle.Source§impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
impl<T, U> FromStimulus<U> for Twhere
U: IntoStimulus<T>,
Source§fn from_stimulus(other: U) -> T
fn from_stimulus(other: U) -> T
other into Self, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
impl<T, U> IntoAngle<U> for Twhere
U: FromAngle<T>,
Source§fn into_angle(self) -> U
fn into_angle(self) -> U
T.Source§impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for Uwhere
T: Cam16FromUnclamped<WpParam, U>,
Source§type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar
parameters when converting.Source§fn into_cam16_unclamped(
self,
parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>,
) -> T
fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T
self into C, using the provided parameters.Source§impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
impl<T, U> IntoColor<U> for Twhere
U: FromColor<T>,
Source§fn into_color(self) -> U
fn into_color(self) -> U
Source§impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
impl<T, U> IntoColorUnclamped<U> for Twhere
U: FromColorUnclamped<T>,
Source§fn into_color_unclamped(self) -> U
fn into_color_unclamped(self) -> U
Source§impl<T> IntoStimulus<T> for T
impl<T> IntoStimulus<T> for T
Source§fn into_stimulus(self) -> T
fn into_stimulus(self) -> T
self into T, while performing the appropriate scaling,
rounding and clamping.Source§impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
impl<T, C> TryComponentsInto<C> for Twhere
C: TryFromComponents<T>,
Source§type Error = <C as TryFromComponents<T>>::Error
type Error = <C as TryFromComponents<T>>::Error
try_into_colors fails to cast.Source§fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>
Source§impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
impl<T, U> TryIntoColor<U> for Twhere
U: TryFromColor<T>,
Source§fn try_into_color(self) -> Result<U, OutOfBounds<U>>
fn try_into_color(self) -> Result<U, OutOfBounds<U>>
OutOfBounds error is returned which contains
the unclamped color. Read more