light accents

This commit is contained in:
Harivansh Rathi 2026-03-20 16:47:25 -04:00
parent 0003b8c754
commit 40366d99e9
4 changed files with 98 additions and 60 deletions

View file

@ -1,6 +1,6 @@
# cozybox.nvim
Cozybox is a warm, dark Neovim theme with nix-tuned blue and green accents, darker editor surfaces, and syntax overrides baked in.
Cozybox is a neo style darker gruvbox with havy blue and green accents, a nicer red, and a clean light mode (for outside).
## Install
@ -15,21 +15,8 @@ Neovim `0.8+`.
```vim
set background=dark " or light if you want light mode
colorscheme cozybox
" explicit light entrypoint with the same cozybox accent palette
colorscheme cozybox-light
```
## Override
## Config
```lua
require("cozybox").setup({
transparent_mode = false,
palette_overrides = {},
overrides = {},
})
vim.cmd("colorscheme cozybox")
```
The theme already defaults to the custom blue/green palette, hard contrast, darker editor surfaces, and syntax highlight tweaks from your nix config.
See `:h cozybox.nvim` or `lua/cozybox.lua` for the full option surface.

View file

@ -217,31 +217,32 @@ local function get_colors()
fg2 = p.dark2,
fg3 = p.dark3,
fg4 = p.dark4,
red = p.faded_red,
green = p.faded_green,
yellow = p.faded_yellow,
blue = p.faded_blue,
purple = p.faded_purple,
aqua = p.faded_aqua,
orange = p.faded_orange,
red = p.bright_red,
green = p.bright_green,
yellow = p.bright_yellow,
blue = p.bright_blue,
purple = p.bright_purple,
aqua = p.bright_aqua,
orange = p.bright_orange,
neutral_red = p.neutral_red,
neutral_green = p.neutral_green,
neutral_yellow = p.neutral_yellow,
neutral_blue = p.neutral_blue,
neutral_purple = p.neutral_purple,
neutral_aqua = p.neutral_aqua,
dark_red = p.light_red,
dark_green = p.light_green,
dark_aqua = p.light_aqua,
dark_red = p.dark_red,
dark_green = p.dark_green,
dark_aqua = p.dark_aqua,
gray = p.gray,
},
}
if contrast ~= nil and contrast ~= "" then
color_groups[bg].bg0 = p[bg .. "0_" .. contrast]
color_groups[bg].dark_red = p[bg .. "_red_" .. contrast]
color_groups[bg].dark_green = p[bg .. "_green_" .. contrast]
color_groups[bg].dark_aqua = p[bg .. "_aqua_" .. contrast]
local overlay_bg = bg == "light" and "dark" or bg
color_groups[bg].dark_red = p[overlay_bg .. "_red_" .. contrast]
color_groups[bg].dark_green = p[overlay_bg .. "_green_" .. contrast]
color_groups[bg].dark_aqua = p[overlay_bg .. "_aqua_" .. contrast]
end
return color_groups[bg]

View file

@ -4,26 +4,6 @@ local selection = "#c3c7c9"
return {
contrast = "hard",
palette_overrides = {
bright_green = "#8ec97c",
neutral_green = "#8ec97c",
faded_green = "#8ec97c",
bright_yellow = "#d8a657",
neutral_yellow = "#d8a657",
faded_yellow = "#d8a657",
bright_blue = "#5b84de",
neutral_blue = "#5b84de",
faded_blue = "#5b84de",
bright_purple = "#d3869b",
neutral_purple = "#d3869b",
faded_purple = "#d3869b",
bright_aqua = "#8ec07c",
neutral_aqua = "#8ec07c",
faded_aqua = "#8ec07c",
bright_orange = "#e78a4e",
neutral_orange = "#e78a4e",
faded_orange = "#e78a4e",
},
overrides = {
MatchParen = { bold = true, underline = true, fg = "#d8a657", bg = selection },
Normal = { bg = background },
@ -31,23 +11,23 @@ return {
SignColumn = { bg = background },
StatusLine = { bg = background },
StatusLineNC = { bg = background },
GitSignsAdd = { fg = "#6fae70", bg = background },
GitSignsChange = { fg = "#b57614", bg = background },
GitSignsAdd = { fg = "#a9b665", bg = background },
GitSignsChange = { fg = "#d8a657", bg = background },
GitSignsDelete = { fg = "#ea6962", bg = background },
GitSignsTopdelete = { fg = "#ea6962", bg = background },
GitSignsChangedelete = { fg = "#b57614", bg = background },
GitSignsUntracked = { fg = "#5b84de", bg = background },
GitSignsStagedAdd = { fg = "#5f8b50", bg = background },
GitSignsStagedChange = { fg = "#9d6b0f", bg = background },
GitSignsStagedDelete = { fg = "#b85751", bg = background },
GitSignsStagedTopdelete = { fg = "#b85751", bg = background },
GitSignsStagedChangedelete = { fg = "#9d6b0f", bg = background },
GitSignsChangedelete = { fg = "#d8a657", bg = background },
GitSignsUntracked = { fg = "#7daea3", bg = background },
GitSignsStagedAdd = { fg = "#6c7842", bg = background },
GitSignsStagedChange = { fg = "#8a6d39", bg = background },
GitSignsStagedDelete = { fg = "#94433f", bg = background },
GitSignsStagedTopdelete = { fg = "#94433f", bg = background },
GitSignsStagedChangedelete = { fg = "#8a6d39", bg = background },
LineNr = { bg = background },
CursorLineNr = { bg = background },
CursorLine = { bg = surface },
FoldColumn = { bg = background },
DiffAdd = { bg = "#d9e8d2" },
DiffChange = { bg = "#eee4c7" },
DiffDelete = { bg = "#f1d6d2" },
DiffAdd = { bg = "#1e2718" },
DiffChange = { bg = "#1e1e18" },
DiffDelete = { bg = "#2a1818" },
},
}

View file

@ -8,6 +8,11 @@ local function clear_term_colors()
end
end
local function highlight_attr(name, attr)
local group_id = vim.api.nvim_get_hl_id_by_name(name)
return vim.fn.synIDattr(group_id, attr, "gui")
end
describe("tests", function()
it("works with default values", function()
cozybox.setup()
@ -174,4 +179,69 @@ describe("tests", function()
assert.are.same(vim.g.colors_name, "cozybox-light")
end)
it("keeps accent highlights consistent across dark and light themes", function()
cozybox.setup()
vim.opt.background = "dark"
cozybox.load()
local dark = {
red = highlight_attr("CozyboxRed", "fg"),
green = highlight_attr("CozyboxGreen", "fg"),
yellow = highlight_attr("CozyboxYellow", "fg"),
blue = highlight_attr("CozyboxBlue", "fg"),
purple = highlight_attr("CozyboxPurple", "fg"),
aqua = highlight_attr("CozyboxAqua", "fg"),
orange = highlight_attr("CozyboxOrange", "fg"),
string = highlight_attr("String", "fg"),
git_add = highlight_attr("GitSignsAdd", "fg"),
git_change = highlight_attr("GitSignsChange", "fg"),
git_delete = highlight_attr("GitSignsDelete", "fg"),
git_untracked = highlight_attr("GitSignsUntracked", "fg"),
diff_add = highlight_attr("DiffAdd", "bg"),
diff_change = highlight_attr("DiffChange", "bg"),
diff_delete = highlight_attr("DiffDelete", "bg"),
}
cozybox.setup(require("cozybox.light"))
vim.opt.background = "light"
cozybox.load("cozybox-light")
local light = {
red = highlight_attr("CozyboxRed", "fg"),
green = highlight_attr("CozyboxGreen", "fg"),
yellow = highlight_attr("CozyboxYellow", "fg"),
blue = highlight_attr("CozyboxBlue", "fg"),
purple = highlight_attr("CozyboxPurple", "fg"),
aqua = highlight_attr("CozyboxAqua", "fg"),
orange = highlight_attr("CozyboxOrange", "fg"),
string = highlight_attr("String", "fg"),
git_add = highlight_attr("GitSignsAdd", "fg"),
git_change = highlight_attr("GitSignsChange", "fg"),
git_delete = highlight_attr("GitSignsDelete", "fg"),
git_untracked = highlight_attr("GitSignsUntracked", "fg"),
diff_add = highlight_attr("DiffAdd", "bg"),
diff_change = highlight_attr("DiffChange", "bg"),
diff_delete = highlight_attr("DiffDelete", "bg"),
normal_bg = highlight_attr("Normal", "bg"),
}
assert.are.same(dark.red, light.red)
assert.are.same(dark.green, light.green)
assert.are.same(dark.yellow, light.yellow)
assert.are.same(dark.blue, light.blue)
assert.are.same(dark.purple, light.purple)
assert.are.same(dark.aqua, light.aqua)
assert.are.same(dark.orange, light.orange)
assert.are.same(dark.string, light.string)
assert.are.same(dark.git_add, light.git_add)
assert.are.same(dark.git_change, light.git_change)
assert.are.same(dark.git_delete, light.git_delete)
assert.are.same(dark.git_untracked, light.git_untracked)
assert.are.same(dark.diff_add, light.diff_add)
assert.are.same(dark.diff_change, light.diff_change)
assert.are.same(dark.diff_delete, light.diff_delete)
assert.are.same(light.normal_bg, "#e7e7e7")
assert.are.same(vim.g.colors_name, "cozybox-light")
end)
end)