ListStyles

Struct ListStyles 

Source
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 title
  • title: The list title text styling

§Filtering and Input

  • filter_prompt: The “Filter:” prompt text
  • filter_cursor: Cursor/caret in filter input
  • default_filter_character_match: Character-level match highlighting

§Status and Information

  • status_bar: Main status bar container
  • status_empty: Status when list is empty
  • status_bar_active_filter: Active filter indicator
  • status_bar_filter_count: Filter result count
  • no_items: “No items” message

§Pagination and Navigation

  • pagination_style: Pagination area container
  • active_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 indicator
  • help_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 pattern

Fields§

§title_bar: Style

Style for the title bar container.

§title: Style

Style for the list title text.

§spinner: Style

Style for spinner glyphs.

§filter_prompt: Style

Style for the filter prompt label.

§filter_cursor: Style

Style for the filter cursor/caret.

§default_filter_character_match: Style

Style for default filter character highlight.

§status_bar: Style

Style for the status bar container.

§status_empty: Style

Style for the status bar when the list is empty.

§status_bar_active_filter: Style

Style for active filter text in the status bar.

§status_bar_filter_count: Style

Style for filter match count in the status bar.

§no_items: Style

Style for the “No items” message.

§pagination_style: Style

Style for pagination area.

§help_style: Style

Style for help text area.

§active_pagination_dot: Style

Style for the active pagination dot.

§inactive_pagination_dot: Style

Style for the inactive pagination dot.

§arabic_pagination: Style

Style for arabic numerals in pagination.

§divider_dot: Style

Style for the divider dot between elements.

Trait Implementations§

Source§

impl Clone for ListStyles

Source§

fn clone(&self) -> ListStyles

Returns a duplicate of the value. Read more
1.0.0 · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Debug for ListStyles

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for ListStyles

Source§

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§

Blanket Implementations§

Source§

impl<S, D, Swp, Dwp, T> AdaptInto<D, Swp, Dwp, T> for S
where 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) -> D
where M: TransformMatrix<T>,

Convert the source color to the destination color using the specified method.
Source§

fn adapt_into(self) -> D

Convert the source color to the destination color using the bradford method by default.
Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T, C> ArraysFrom<C> for T
where C: IntoArrays<T>,

Source§

fn arrays_from(colors: C) -> T

Cast a collection of colors into a collection of arrays.
Source§

impl<T, C> ArraysInto<C> for T
where C: FromArrays<T>,

Source§

fn arrays_into(self) -> C

Cast this collection of arrays into a collection of colors.
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<WpParam, T, U> Cam16IntoUnclamped<WpParam, T> for U
where T: FromCam16Unclamped<WpParam, U>,

Source§

type Scalar = <T as FromCam16Unclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn cam16_into_unclamped( self, parameters: BakedParameters<WpParam, <U as Cam16IntoUnclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T, C> ComponentsFrom<C> for T
where C: IntoComponents<T>,

Source§

fn components_from(colors: C) -> T

Cast a collection of colors into a collection of color components.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromAngle<T> for T

Source§

fn from_angle(angle: T) -> T

Performs a conversion from angle.
Source§

impl<T, U> FromStimulus<U> for T
where U: IntoStimulus<T>,

Source§

fn from_stimulus(other: U) -> T

Converts other into Self, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> IntoAngle<U> for T
where U: FromAngle<T>,

Source§

fn into_angle(self) -> U

Performs a conversion into T.
Source§

impl<WpParam, T, U> IntoCam16Unclamped<WpParam, T> for U
where T: Cam16FromUnclamped<WpParam, U>,

Source§

type Scalar = <T as Cam16FromUnclamped<WpParam, U>>::Scalar

The number type that’s used in parameters when converting.
Source§

fn into_cam16_unclamped( self, parameters: BakedParameters<WpParam, <U as IntoCam16Unclamped<WpParam, T>>::Scalar>, ) -> T

Converts self into C, using the provided parameters.
Source§

impl<T, U> IntoColor<U> for T
where U: FromColor<T>,

Source§

fn into_color(self) -> U

Convert into T with values clamped to the color defined bounds Read more
Source§

impl<T, U> IntoColorUnclamped<U> for T
where U: FromColorUnclamped<T>,

Source§

fn into_color_unclamped(self) -> U

Convert into T. The resulting color might be invalid in its color space Read more
Source§

impl<T> IntoStimulus<T> for T

Source§

fn into_stimulus(self) -> T

Converts self into T, while performing the appropriate scaling, rounding and clamping.
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

impl<T, C> TryComponentsInto<C> for T
where C: TryFromComponents<T>,

Source§

type Error = <C as TryFromComponents<T>>::Error

The error for when try_into_colors fails to cast.
Source§

fn try_components_into(self) -> Result<C, <T as TryComponentsInto<C>>::Error>

Try to cast this collection of color components into a collection of colors. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T, U> TryIntoColor<U> for T
where U: TryFromColor<T>,

Source§

fn try_into_color(self) -> Result<U, OutOfBounds<U>>

Convert into T, returning ok if the color is inside of its defined range, otherwise an OutOfBounds error is returned which contains the unclamped color. Read more
Source§

impl<C, U> UintsFrom<C> for U
where C: IntoUints<U>,

Source§

fn uints_from(colors: C) -> U

Cast a collection of colors into a collection of unsigned integers.
Source§

impl<C, U> UintsInto<C> for U
where C: FromUints<U>,

Source§

fn uints_into(self) -> C

Cast this collection of unsigned integers into a collection of colors.