▍ humdrum codex / glint v1.1.2
license AGPL-3.0
4.8 KB raw
  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
package theme

import "github.com/charmbracelet/lipgloss"

// Flexoki by Steph Ango (https://stephango.com/flexoki). Accent hexes use the
// 400 variants on dark backgrounds and the 600 variants on light, per Flexoki's
// guidance. The role assignments follow the glint highlighting model: prose at
// base, markup muted, color reserved for headings, code, links, list markers,
// comments, and a highlight background; bold/italic use the higher-contrast
// Emphasis tone.

// FlexokiDark is the Flexoki dark variant: warm near-black paper, soft prose.
func FlexokiDark() Theme {
	link := lipgloss.Color("#3AA99F") // cyan-400
	return Theme{
		Name:         "flexoki-dark",
		GlamourStyle: "dark",
		Background:   lipgloss.Color("#100F0F"), // black
		Text:         lipgloss.Color("#CECDC3"), // base-200 — prose
		Emphasis:     lipgloss.Color("#E6E4D9"), // base-100 — brighter for bold/italic
		Muted:        lipgloss.Color("#575653"), // base-700 — markup, well faded on black
		Heading:      lipgloss.Color("#4385BE"), // blue-400
		Code:         lipgloss.Color("#879A39"), // green-400
		Link:         link,
		Wikilink:     link,                      // merged into Link
		ListMarker:   lipgloss.Color("#CE5D97"), // magenta-400
		Blockquote:   lipgloss.Color("#878580"), // base-500 — quote marker/border
		Comment:      lipgloss.Color("#DA702C"), // orange-400 — visible meta
		Accent:       lipgloss.Color("#D0A215"), // yellow-400
		Highlight:    lipgloss.Color("#3A3517"), // deep olive — ==highlight== bg
		Spell:        lipgloss.Color("#D14D41"), // red-400 — misspell undercurl

		ConflictMarker: lipgloss.Color("#8B7EC8"), // purple-400 — conflict marker lines
		ConflictOurs:   lipgloss.Color("#1A1E0C"), // green-950 — "ours" block tint
		ConflictTheirs: lipgloss.Color("#261312"), // red-950 — "theirs" block tint

		StatusFg: lipgloss.Color("#100F0F"),
		StatusBg: lipgloss.Color("#4385BE"),
		SelFg:    lipgloss.Color("#100F0F"),
		SelBg:    lipgloss.Color("#D0A215"),
		Pointer:  lipgloss.Color("#CE5D97"),
	}
}

// FlexokiLight is the Flexoki light variant: cream paper, near-black prose.
func FlexokiLight() Theme {
	link := lipgloss.Color("#24837B") // cyan-600
	return Theme{
		Name:         "flexoki-light",
		GlamourStyle: "light",
		Background:   lipgloss.Color("#FFFCF0"), // paper
		Text:         lipgloss.Color("#1C1B1A"), // base-950 — prose (leaves room below for Emphasis)
		Emphasis:     lipgloss.Color("#100F0F"), // black — darker for bold/italic
		Muted:        lipgloss.Color("#B7B5AC"), // base-300 — markup, well faded on paper
		Heading:      lipgloss.Color("#205EA6"), // blue-600
		Code:         lipgloss.Color("#66800B"), // green-600
		Link:         link,
		Wikilink:     link,                      // merged into Link
		ListMarker:   lipgloss.Color("#A02F6F"), // magenta-600
		Blockquote:   lipgloss.Color("#6F6E69"), // base-600 — quote marker/border
		Comment:      lipgloss.Color("#BC5215"), // orange-600 — visible meta
		Accent:       lipgloss.Color("#AD8301"), // yellow-600
		Highlight:    lipgloss.Color("#F0E6BE"), // pale yellow — ==highlight== bg
		Spell:        lipgloss.Color("#AF3029"), // red-600 — misspell undercurl

		ConflictMarker: lipgloss.Color("#5E409D"), // purple-600 — conflict marker lines
		ConflictOurs:   lipgloss.Color("#EDEECF"), // green-50 — "ours" block tint
		ConflictTheirs: lipgloss.Color("#FFE1D5"), // red-50 — "theirs" block tint

		StatusFg: lipgloss.Color("#FFFCF0"),
		StatusBg: lipgloss.Color("#205EA6"),
		SelFg:    lipgloss.Color("#FFFCF0"),
		SelBg:    lipgloss.Color("#AD8301"),
		Pointer:  lipgloss.Color("#A02F6F"),
	}
}

// Charm is a charm.land / charmbracelet-brand themed dark palette.
func Charm() Theme {
	link := lipgloss.Color("#5DD5FF")
	return Theme{
		Name:         "charm",
		GlamourStyle: "dark",
		Background:   lipgloss.Color("#16161E"),
		Text:         lipgloss.Color("#DDDDE6"),
		Emphasis:     lipgloss.Color("#FFFDF5"),
		Muted:        lipgloss.Color("#6C6C8A"),
		Heading:      lipgloss.Color("#FF5FAF"),
		Code:         lipgloss.Color("#00FFA3"),
		Link:         link,
		Wikilink:     link,
		ListMarker:   lipgloss.Color("#FF5FAF"),
		Blockquote:   lipgloss.Color("#6C6C8A"),
		Comment:      lipgloss.Color("#FFB454"),
		Accent:       lipgloss.Color("#FFD500"),
		Highlight:    lipgloss.Color("#3A2E4D"),
		Spell:        lipgloss.Color("#FF5F87"), // pink-red — misspell undercurl

		ConflictMarker: lipgloss.Color("#B794F6"), // soft purple — conflict marker lines
		ConflictOurs:   lipgloss.Color("#17251C"), // dark green — "ours" block tint
		ConflictTheirs: lipgloss.Color("#2A1518"), // dark red — "theirs" block tint

		StatusFg: lipgloss.Color("#16161E"),
		StatusBg: lipgloss.Color("#6B50FF"),
		SelFg:    lipgloss.Color("#16161E"),
		SelBg:    lipgloss.Color("#FF5FAF"),
		Pointer:  lipgloss.Color("#00FFA3"),
	}
}