From d491a0fc66e8d690036c88d8ae03b514878258d8 Mon Sep 17 00:00:00 2001 From: Harivansh Rathi Date: Fri, 20 Mar 2026 14:05:11 -0400 Subject: [PATCH] light theme for nvim --- README.md | 3 ++ colors/cozybox-light.lua | 6 ++++ lua/cozybox.lua | 5 +-- lua/cozybox/light.lua | 56 ++++++++++++++++++++++++++++++++++ tests/cozybox/cozybox_spec.lua | 8 +++++ 5 files changed, 76 insertions(+), 2 deletions(-) create mode 100644 colors/cozybox-light.lua create mode 100644 lua/cozybox/light.lua diff --git a/README.md b/README.md index c79f65a..66897c0 100644 --- a/README.md +++ b/README.md @@ -15,6 +15,9 @@ 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 diff --git a/colors/cozybox-light.lua b/colors/cozybox-light.lua new file mode 100644 index 0000000..2e35006 --- /dev/null +++ b/colors/cozybox-light.lua @@ -0,0 +1,6 @@ +vim.o.background = "light" + +local cozybox = require("cozybox") + +cozybox.setup(require("cozybox.light")) +cozybox.load("cozybox-light") diff --git a/lua/cozybox.lua b/lua/cozybox.lua index c4c7582..9c318ec 100644 --- a/lua/cozybox.lua +++ b/lua/cozybox.lua @@ -1398,8 +1398,9 @@ Cozybox.setup = function(config) Cozybox.config = vim.tbl_deep_extend("force", Cozybox.config, config or {}) end +---@param colors_name string? --- main load function -Cozybox.load = function() +Cozybox.load = function(colors_name) if vim.version().minor < 8 then vim.notify_once("cozybox.nvim: you must use neovim 0.8 or higher") return @@ -1409,7 +1410,7 @@ Cozybox.load = function() if vim.g.colors_name then vim.cmd.hi("clear") end - vim.g.colors_name = "cozybox" + vim.g.colors_name = colors_name or "cozybox" vim.o.termguicolors = true local groups = get_groups() diff --git a/lua/cozybox/light.lua b/lua/cozybox/light.lua new file mode 100644 index 0000000..d7a75ec --- /dev/null +++ b/lua/cozybox/light.lua @@ -0,0 +1,56 @@ +local background = "#e7e7e7" +local surface = "#e1e1e1" +local selection = "#c3c7c9" + +return { + contrast = "hard", + palette_overrides = { + bright_red = "#ea6962", + neutral_red = "#ea6962", + faded_red = "#ea6962", + 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 }, + NormalFloat = { bg = background }, + SignColumn = { bg = background }, + StatusLine = { bg = background }, + StatusLineNC = { bg = background }, + GitSignsAdd = { fg = "#6fae70", bg = background }, + GitSignsChange = { fg = "#b57614", 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 }, + LineNr = { bg = background }, + CursorLineNr = { bg = background }, + CursorLine = { bg = surface }, + FoldColumn = { bg = background }, + DiffAdd = { bg = "#d9e8d2" }, + DiffChange = { bg = "#eee4c7" }, + DiffDelete = { bg = "#f1d6d2" }, + }, +} diff --git a/tests/cozybox/cozybox_spec.lua b/tests/cozybox/cozybox_spec.lua index 4462327..c0b7932 100644 --- a/tests/cozybox/cozybox_spec.lua +++ b/tests/cozybox/cozybox_spec.lua @@ -166,4 +166,12 @@ describe("tests", function() assert.are.same(cozybox.config.contrast, "hard") assert.are.same(cozybox.config.overrides.Normal.bg, "#181818") end) + + it("supports custom colorscheme names during load", function() + cozybox.setup() + vim.opt.background = "light" + cozybox.load("cozybox-light") + + assert.are.same(vim.g.colors_name, "cozybox-light") + end) end)