Related libraries
Libraries that work well alongside bloom, for theming, testing, and the rest of a Bubble Tea program.
bloom covers layout, layering, input routing, and motion. These libraries cover other parts of a terminal app.
From the same author
bubbletint
bubbletint gives you hundreds of ready-made terminal color themes, such as
Dracula, Catppuccin, Nord, and Rosé Pine, as Go values, and can switch between them at runtime or follow the theme
of the terminal your program runs in. Its colors are standard color.Color values, so they work directly in Lip
Gloss styles and bloom effects:
import tint "github.com/lrstanley/bubbletint/v2"
theme := tint.TintRosePine
panel := lipgloss.NewStyle().Border(lipgloss.RoundedBorder()).BorderForeground(theme.BrightBlack)
backdrop := fx.Recolor{Fg: theme.BrightBlack, Bg: theme.Bg}
// Effects that blend toward the terminal's colors start from the theme's.
ui := bloom.New(bloom.WithColors(theme.Fg, theme.Bg))Browse the themes at lrstanley.github.io/bubbletint.
steep
steep is a test harness for Bubble Tea programs and components. It runs your program in an emulated terminal, drives it with keys, text, mouse events, and resizes, waits for output, and compares snapshots. It can also record what happened as a GIF. bloom's examples are tested with it; see Testing.
go get github.com/lrstanley/x/term/steep@latestThe Charm ecosystem
bloom builds on Charm's libraries, and works alongside the rest:
| Library | What it's for |
|---|---|
| Bubble Tea | The framework: models, messages, commands, and the program loop. |
| Lip Gloss | Styles: colors, borders, padding. bloom's Box and Text.Style take Lip Gloss styles. |
| Bubbles | Components: text inputs, viewports, lists, tables, spinners. See Using Bubbles components. |
| Ultraviolet | The cell-based screen library under Bubble Tea v2. bloom's cells, and Drawable, come from it. |
| Glamour | Markdown rendered for the terminal, which you can place in a layout as text. |
| Huh | Forms and prompts. |
Last updated on