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 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 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 StatusFg: lipgloss.Color("#16161E"), StatusBg: lipgloss.Color("#6B50FF"), SelFg: lipgloss.Color("#16161E"), SelBg: lipgloss.Color("#FF5FAF"), Pointer: lipgloss.Color("#00FFA3"), } }