一键导入
lipgloss-theme-foundations
Establish a reusable Lip Gloss theme anchored by Charmtone colors and expose helper styles for Bubble Tea components.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Establish a reusable Lip Gloss theme anchored by Charmtone colors and expose helper styles for Bubble Tea components.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
Use when you need to look up an nn command, flag, or usage pattern. Load with `nn skills get nn-guide`.
Use when after nn new or nn update to discover notes that should be linked to the modified note. Load with `nn skills get nn-link-suggester`.
Use when cleaning up a specific note or before promoting it — runs atomicity, link, and title checks. Load with `nn skills get nn-refine`.
Use when ending a session to consolidate captures, assess promotion eligibility, and update the daily page. For weekly review use --weekly; for daily page only use --daily; for lightweight mid-session capture use --partial. Load with `nn skills get nn-session-debrief`.
Use when asked to organise, capture, or link notes in the Zettelkasten. Load with `nn skills get nn-workflow`.
Use when about to take any action that introduces new information not already in the conversation. Load with `nn skills get nn-capture-discipline`.
| name | lipgloss-theme-foundations |
| description | Establish a reusable Lip Gloss theme anchored by Charmtone colors and expose helper styles for Bubble Tea components. |
Seed palette with Charmtone (optional but recommended)
import (
"charm.land/lipgloss/v2" // v2 import path
"charm.land/lipgloss/v2/compat" // for AdaptiveColor (dark/light adaptive colors)
"github.com/charmbracelet/x/exp/charmtone"
)
type Theme struct {
Primary lipgloss.Color
Secondary lipgloss.Color
Background lipgloss.Color
Text lipgloss.Color
Subtle lipgloss.Color
AccentWarn lipgloss.Color
// add other semantic slots as needed
}
func NewTheme() Theme {
return Theme{
Primary: lipgloss.Color(charmtone.Charple.Hex()),
Secondary: lipgloss.Color(charmtone.Dolly.Hex()),
Background: lipgloss.Color(charmtone.Pepper.Hex()),
Text: lipgloss.Color(charmtone.Ash.Hex()),
Subtle: lipgloss.Color(charmtone.Squid.Hex()),
AccentWarn: lipgloss.Color(charmtone.Zest.Hex()),
}
}
Expose ready-made styles
Create methods that return configured lipgloss.Style instances (e.g., base text, muted text, selected rows, border styles). This keeps all components pulling from the same source.
type Styles struct {
Base lipgloss.Style
Muted lipgloss.Style
Title lipgloss.Style
SelectedRow lipgloss.Style
}
func (t Theme) Styles() Styles {
base := lipgloss.NewStyle().Foreground(t.Text)
return Styles{
Base: base,
Muted: base.Foreground(t.Subtle),
Title: base.Foreground(t.Primary).Bold(true),
SelectedRow: base.Foreground(t.Background).Background(t.Primary),
}
}
Add gradient helpers when needed
Use lipgloss.Color gradients for headers or logo treatments.
Share the theme
Provide a global accessor (e.g. via a package-level var Default Theme) or inject through your Bubble Tea models.
Success, Warning, etc.) so changing palettes later is painless.charm.land/lipgloss/v2 (vanity domain; replaces github.com/charmbracelet/lipgloss)AdaptiveColor: moved to charm.land/lipgloss/v2/compat as compat.AdaptiveColor{Light: "...", Dark: "..."}..Copy(): lipgloss.Style is a value type in v2 — assignment already copies. Remove all .Copy() calls.github.com/charmbracelet/x/ansi.Strip() before string comparisons in test code.lipgloss/table, lipgloss/list, lipgloss/tree subpackages: use charm.land/lipgloss/v2/table etc.github.com/charmbracelet/glamour (not yet on charm.land v2).