ui

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Mar 20, 2026 License: MIT Imports: 10 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// Colors
	Cyan    = lipgloss.Color("6")
	Green   = lipgloss.Color("2")
	Yellow  = lipgloss.Color("3")
	Red     = lipgloss.Color("1")
	Gray    = lipgloss.Color("8")
	White   = lipgloss.Color("15")
	DimGray = lipgloss.Color("240")

	// Status colors
	StatusColors = map[string]lipgloss.Color{
		"active":    Cyan,
		"done":      Green,
		"idea":      Yellow,
		"paused":    Gray,
		"abandoned": DimGray,
	}

	StatusIcons = map[string]string{
		"active":    "●",
		"done":      "✓",
		"idea":      "○",
		"paused":    "◇",
		"abandoned": "✗",
	}

	// Base styles
	Bold     = lipgloss.NewStyle().Bold(true)
	Dim      = lipgloss.NewStyle().Foreground(DimGray)
	Accent   = lipgloss.NewStyle().Foreground(Cyan)
	AccentB  = lipgloss.NewStyle().Foreground(Cyan).Bold(true)
	GreenS   = lipgloss.NewStyle().Foreground(Green)
	YellowS  = lipgloss.NewStyle().Foreground(Yellow)
	RedS     = lipgloss.NewStyle().Foreground(Red)
	GrayS    = lipgloss.NewStyle().Foreground(Gray)
	DimGrayS = lipgloss.NewStyle().Foreground(DimGray)

	// Selected row
	SelectedRow = lipgloss.NewStyle().
				Background(lipgloss.Color("237")).
				Foreground(White).
				Bold(true)

	// Selected row when panel is dimmed
	DimSelectedRow = lipgloss.NewStyle().
					Background(lipgloss.Color("236")).
					Foreground(DimGray)

	// Active cursor in detail
	ActiveItem = lipgloss.NewStyle().
				Foreground(Cyan).
				Bold(true)

	// Panel borders
	ListBorderActive = lipgloss.NewStyle().
						Border(lipgloss.RoundedBorder()).
						BorderForeground(Cyan)

	ListBorderDim = lipgloss.NewStyle().
					Border(lipgloss.RoundedBorder()).
					BorderForeground(DimGray)

	DetailBorderActive = lipgloss.NewStyle().
						Border(lipgloss.RoundedBorder()).
						BorderForeground(Cyan)

	DetailBorderDim = lipgloss.NewStyle().
					Border(lipgloss.RoundedBorder()).
					BorderForeground(DimGray)

	// Header
	HeaderStyle = lipgloss.NewStyle().
				Foreground(Cyan).
				Bold(true)

	// Footer / help
	HelpKey   = lipgloss.NewStyle().Foreground(Cyan).Bold(true)
	HelpLabel = lipgloss.NewStyle().Foreground(DimGray)

	// Tags
	TagStyle = lipgloss.NewStyle().Foreground(Cyan)

	// Flash message
	FlashStyle = lipgloss.NewStyle().Foreground(Green)
)
View Source
var SectionLabels = []string{"info", "goals", "notes"}
View Source
var SortLabels = []string{"recent", "progress", "name", "status"}
View Source
var Themes = []ColorScheme{
	{
		Name:          "cyan",
		Accent:        lipgloss.Color("6"),
		Green:         lipgloss.Color("2"),
		Yellow:        lipgloss.Color("3"),
		Red:           lipgloss.Color("1"),
		Gray:          lipgloss.Color("8"),
		DimGray:       lipgloss.Color("240"),
		White:         lipgloss.Color("15"),
		SelectedBg:    lipgloss.Color("237"),
		DimSelectedBg: lipgloss.Color("236"),
	},
	{
		Name:          "claude",
		Accent:        lipgloss.Color("173"),
		Green:         lipgloss.Color("108"),
		Yellow:        lipgloss.Color("179"),
		Red:           lipgloss.Color("167"),
		Gray:          lipgloss.Color("245"),
		DimGray:       lipgloss.Color("240"),
		White:         lipgloss.Color("253"),
		SelectedBg:    lipgloss.Color("237"),
		DimSelectedBg: lipgloss.Color("236"),
	},
	{
		Name:          "green",
		Accent:        lipgloss.Color("34"),
		Green:         lipgloss.Color("10"),
		Yellow:        lipgloss.Color("142"),
		Red:           lipgloss.Color("1"),
		Gray:          lipgloss.Color("8"),
		DimGray:       lipgloss.Color("240"),
		White:         lipgloss.Color("15"),
		SelectedBg:    lipgloss.Color("237"),
		DimSelectedBg: lipgloss.Color("236"),
	},
	{
		Name:          "purple",
		Accent:        lipgloss.Color("135"),
		Green:         lipgloss.Color("2"),
		Yellow:        lipgloss.Color("3"),
		Red:           lipgloss.Color("168"),
		Gray:          lipgloss.Color("8"),
		DimGray:       lipgloss.Color("240"),
		White:         lipgloss.Color("15"),
		SelectedBg:    lipgloss.Color("237"),
		DimSelectedBg: lipgloss.Color("236"),
	},
	{
		Name:          "mono",
		Accent:        lipgloss.Color("252"),
		Green:         lipgloss.Color("250"),
		Yellow:        lipgloss.Color("248"),
		Red:           lipgloss.Color("245"),
		Gray:          lipgloss.Color("243"),
		DimGray:       lipgloss.Color("238"),
		White:         lipgloss.Color("255"),
		SelectedBg:    lipgloss.Color("237"),
		DimSelectedBg: lipgloss.Color("236"),
	},
}

Functions

func ApplyTheme added in v0.1.1

func ApplyTheme(t ColorScheme)

ApplyTheme updates all style variables to match the given color scheme.

func Clamp

func Clamp(v, lo, hi int) int

func FlashCmd

func FlashCmd() tea.Cmd

func PadRight

func PadRight(s string, width int) string

func TimeSince

func TimeSince(iso string) string

func Truncate

func Truncate(s string, max int) string

Types

type ColorScheme added in v0.1.1

type ColorScheme struct {
	Name          string
	Accent        lipgloss.Color
	Green         lipgloss.Color
	Yellow        lipgloss.Color
	Red           lipgloss.Color
	Gray          lipgloss.Color
	DimGray       lipgloss.Color
	White         lipgloss.Color
	SelectedBg    lipgloss.Color
	DimSelectedBg lipgloss.Color
}

type DetailSection

type DetailSection int
const (
	SectionInfo DetailSection = iota
	SectionGoals
	SectionNotes
)

type Focus

type Focus int
const (
	FocusList Focus = iota
	FocusDetail
	FocusHelp // ? overlay
)

type InputMode

type InputMode int
const (
	InputNone InputMode = iota
	InputNote
	InputGoal
	InputDesc
	InputFilter // / filter in list
	InputJump   // : jump to project
)

type ListViewMode

type ListViewMode int
const (
	ViewFlat ListViewMode = iota
	ViewTree
)

type Model

type Model struct {
	// contains filtered or unexported fields
}

func NewModel

func NewModel(version string) Model

func (Model) Init

func (m Model) Init() tea.Cmd

func (Model) Update

func (m Model) Update(msg tea.Msg) (tea.Model, tea.Cmd)

func (Model) View

func (m Model) View() string

type SortMode

type SortMode int
const (
	SortActivity SortMode = iota
	SortProgress
	SortName
	SortStatus
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL