diff --git a/nvim/.config/nvim/colors/bearded-arc-light.lua b/nvim/.config/nvim/colors/bearded-arc-light.lua new file mode 100644 index 0000000..5a2bef5 --- /dev/null +++ b/nvim/.config/nvim/colors/bearded-arc-light.lua @@ -0,0 +1,64 @@ +-- Bearded Arc (Light) colorscheme +-- Hand-tuned light variant with warm off-white bg and saturated accents + +vim.cmd("hi clear") +if vim.fn.exists("syntax_on") then + vim.cmd("syntax reset") +end + +vim.o.background = "light" +vim.g.colors_name = "bearded-arc-light" + +local base_30 = { + white = "#2a2a2a", + darker_black = "#ede6dc", + black = "#faf4ed", + black2 = "#f0e8df", + one_bg = "#e8e0d4", + one_bg2 = "#ddd5c9", + one_bg3 = "#d2cabd", + grey = "#b0a89c", + grey_fg = "#8a8278", + grey_fg2 = "#7a7268", + light_grey = "#6a6258", + red = "#d1344f", + baby_pink = "#c44a8a", + pink = "#b04a7a", + line = "#ddd5c9", + green = "#1e9b52", + vibrant_green = "#158040", + nord_blue = "#2a6a9a", + blue = "#1a7db5", + yellow = "#b8890f", + sun = "#d4a017", + purple = "#7b4fc4", + dark_purple = "#6a3eb0", + teal = "#0e8a82", + orange = "#c45a1c", + cyan = "#147a8a", + statusline_bg = "#f0e8df", + lightbg = "#e8e0d4", + pmenu_bg = "#1e9b52", + folder_bg = "#1a7db5", +} + +local base_16 = { + base00 = "#faf4ed", + base01 = "#f0e8df", + base02 = "#e8e0d4", + base03 = "#b0a89c", + base04 = "#5a5248", + base05 = "#3a3228", + base06 = "#2a2a2a", + base07 = "#0e8a82", + base08 = "#d1344f", + base09 = "#c45a1c", + base0A = "#b8890f", + base0B = "#1e9b52", + base0C = "#2a6a9a", + base0D = "#1a7db5", + base0E = "#147a8a", + base0F = "#7b4fc4", +} + +require("bearded-arc").apply(base_30, base_16) diff --git a/nvim/.config/nvim/colors/bearded-arc.lua b/nvim/.config/nvim/colors/bearded-arc.lua index 07766d4..512b2d4 100644 --- a/nvim/.config/nvim/colors/bearded-arc.lua +++ b/nvim/.config/nvim/colors/bearded-arc.lua @@ -1,5 +1,5 @@ --- Bearded Arc colorscheme --- Accurate port from NvChad base46 theme with proper highlight group mappings +-- Bearded Arc (Dark) colorscheme +-- Thin wrapper around the highlight engine vim.cmd("hi clear") if vim.fn.exists("syntax_on") then @@ -9,7 +9,6 @@ end vim.o.background = "dark" vim.g.colors_name = "bearded-arc" --- Base 30 color palette (UI colors) local base_30 = { white = "#ABB7C1", darker_black = "#19212e", @@ -43,7 +42,6 @@ local base_30 = { folder_bg = "#69C3FF", } --- Base 16 color palette (syntax colors) local base_16 = { base00 = "#1c2433", base01 = "#262e3d", @@ -63,277 +61,4 @@ local base_16 = { base0F = "#B78AFF", } --- Helper function to set highlights -local function hi(group, opts) - local cmd = "hi " .. group - if opts.fg then cmd = cmd .. " guifg=" .. opts.fg end - if opts.bg then cmd = cmd .. " guibg=" .. opts.bg end - if opts.sp then cmd = cmd .. " guisp=" .. opts.sp end - if opts.style then cmd = cmd .. " gui=" .. opts.style end - vim.cmd(cmd) -end - --- === UI ELEMENTS (from defaults.lua) === - --- Line Numbers & Sidebar (CRITICAL FIX) -hi("LineNr", { fg = base_30.grey }) -hi("CursorLineNr", { fg = base_30.white }) -hi("SignColumn", { fg = base_16.base03 }) -hi("FoldColumn", { fg = base_30.grey, bg = base_16.base00 }) -hi("Folded", { fg = base_30.light_grey, bg = base_16.base01 }) - --- Main Editor -hi("Normal", { fg = base_16.base05, bg = base_16.base00 }) -hi("NormalFloat", { bg = base_30.darker_black }) -hi("FloatBorder", { fg = base_30.blue }) -hi("FloatTitle", { fg = base_30.white, bg = base_30.grey }) - --- Cursor and Lines -hi("Cursor", { fg = base_16.base00, bg = base_16.base05 }) -hi("CursorLine", { bg = base_30.black2 }) -hi("CursorColumn", { bg = base_16.base01 }) -hi("ColorColumn", { bg = base_16.base01 }) - --- Visual Selection -hi("Visual", { bg = base_30.one_bg2 }) -hi("VisualNOS", { bg = base_30.one_bg2 }) - --- Search -hi("Search", { fg = base_16.base00, bg = base_16.base0A }) -hi("IncSearch", { fg = base_16.base01, bg = base_16.base09 }) -hi("Substitute", { fg = base_16.base01, bg = base_16.base0A }) - --- Window Separators -hi("WinSeparator", { fg = base_30.line }) -hi("WinBar", { bg = base_30.statusline_bg }) -hi("WinBarNC", { bg = base_30.statusline_bg }) - --- Completion Menu -hi("Pmenu", { bg = base_30.one_bg }) -hi("PmenuSbar", { bg = base_30.one_bg }) -hi("PmenuSel", { bg = base_30.pmenu_bg, fg = base_30.black }) -hi("PmenuThumb", { bg = base_30.grey }) - --- Statusline & Tabline -hi("StatusLine", { bg = base_30.statusline_bg }) -hi("StatusLineNC", { bg = base_30.statusline_bg }) -hi("TabLine", { fg = base_30.light_grey, bg = base_30.black2 }) -hi("TabLineSel", { fg = base_30.white, bg = base_30.black }) -hi("TabLineFill", { bg = base_30.black2 }) - --- Messages & Prompts -hi("ErrorMsg", { fg = base_16.base08, bg = base_16.base00 }) -hi("WarningMsg", { fg = base_16.base0A }) -hi("MoreMsg", { fg = base_16.base0B }) -hi("ModeMsg", { fg = base_16.base0B }) -hi("Question", { fg = base_16.base0D }) - --- Special Elements -hi("MatchParen", { bg = base_30.grey, fg = base_30.white }) -hi("NonText", { fg = base_16.base03 }) -hi("SpecialKey", { fg = base_16.base03 }) -hi("Conceal", { fg = base_16.base0D, bg = base_16.base00 }) -hi("Directory", { fg = base_16.base0D }) -hi("Title", { fg = base_16.base0D }) - --- === SYNTAX HIGHLIGHTING (from syntax.lua) === - -hi("Comment", { fg = base_30.grey_fg, style = "italic" }) - --- Constants -hi("Constant", { fg = base_16.base09 }) -hi("String", { fg = base_16.base0B }) -hi("Character", { fg = base_16.base08 }) -hi("Number", { fg = base_16.base09 }) -hi("Boolean", { fg = base_16.base09 }) -hi("Float", { fg = base_16.base09 }) - --- Identifiers -hi("Identifier", { fg = base_16.base08 }) -hi("Function", { fg = base_16.base0D }) - --- Statements -hi("Statement", { fg = base_16.base0E }) -hi("Conditional", { fg = base_16.base0E }) -hi("Repeat", { fg = base_16.base0E }) -hi("Label", { fg = base_16.base0A }) -hi("Operator", { fg = base_16.base05 }) -hi("Keyword", { fg = base_16.base0E }) -hi("Exception", { fg = base_16.base08 }) - --- PreProcessor -hi("PreProc", { fg = base_16.base0A }) -hi("Include", { fg = base_16.base0D }) -hi("Define", { fg = base_16.base0E }) -hi("Macro", { fg = base_16.base08 }) -hi("PreCondit", { fg = base_16.base0A }) - --- Types -hi("Type", { fg = base_16.base0A }) -hi("StorageClass", { fg = base_16.base0A }) -hi("Structure", { fg = base_16.base0E }) -hi("Typedef", { fg = base_16.base0A }) - --- Special -hi("Special", { fg = base_16.base0C }) -hi("SpecialChar", { fg = base_16.base0F }) -hi("Tag", { fg = base_16.base0A }) -hi("Delimiter", { fg = base_16.base0F }) -hi("SpecialComment", { fg = base_16.base0C }) -hi("Debug", { fg = base_16.base08 }) - --- Errors -hi("Error", { fg = base_16.base00, bg = base_16.base08 }) -hi("Todo", { fg = base_16.base0A, bg = base_16.base01 }) - -hi("Underlined", { fg = base_16.base0B, style = "underline" }) -hi("Ignore", { fg = base_16.base0C }) - --- === DIFF === - -hi("DiffAdd", { fg = base_16.base0B, bg = base_16.base00 }) -hi("DiffChange", { fg = base_16.base0E, bg = base_16.base00 }) -hi("DiffDelete", { fg = base_16.base08, bg = base_16.base00 }) -hi("DiffText", { fg = base_16.base0D, bg = base_16.base01 }) - -hi("Added", { fg = base_30.green }) -hi("Changed", { fg = base_30.yellow }) -hi("Removed", { fg = base_30.red }) - --- === GIT SIGNS === - -hi("GitSignsAdd", { fg = base_30.green }) -hi("GitSignsChange", { fg = base_30.yellow }) -hi("GitSignsDelete", { fg = base_30.red }) - --- === LSP DIAGNOSTICS (from lsp.lua) === - -hi("DiagnosticError", { fg = base_30.red }) -hi("DiagnosticWarn", { fg = base_30.yellow }) -hi("DiagnosticInfo", { fg = base_30.green }) -hi("DiagnosticHint", { fg = base_30.purple }) - -hi("DiagnosticUnderlineError", { sp = base_30.red, style = "underline" }) -hi("DiagnosticUnderlineWarn", { sp = base_30.yellow, style = "underline" }) -hi("DiagnosticUnderlineInfo", { sp = base_30.green, style = "underline" }) -hi("DiagnosticUnderlineHint", { sp = base_30.purple, style = "underline" }) - -hi("LspReferenceText", { bg = base_30.one_bg3 }) -hi("LspReferenceRead", { bg = base_30.one_bg3 }) -hi("LspReferenceWrite", { bg = base_30.one_bg3 }) - -hi("LspInlayHint", { fg = base_30.light_grey, bg = base_30.black2 }) -hi("LspSignatureActiveParameter", { fg = base_30.black, bg = base_30.green }) - --- === TELESCOPE (from telescope.lua) === - -hi("TelescopeBorder", { fg = base_30.grey, bg = base_30.darker_black }) -hi("TelescopePromptBorder", { fg = base_30.grey, bg = base_30.darker_black }) -hi("TelescopePromptNormal", { fg = base_16.base05, bg = base_30.darker_black }) -hi("TelescopeResultsBorder", { fg = base_30.grey, bg = base_30.darker_black }) -hi("TelescopeResultsNormal", { bg = base_30.darker_black }) -hi("TelescopePreviewBorder", { fg = base_30.grey, bg = base_30.darker_black }) -hi("TelescopePreviewNormal", { bg = base_30.darker_black }) -hi("TelescopeSelection", { bg = base_30.one_bg2, fg = base_30.white }) -hi("TelescopeSelectionCaret", { fg = base_30.cyan, bg = base_30.one_bg2 }) -hi("TelescopeMatching", { fg = base_30.blue, style = "bold" }) - --- === TREESITTER (from treesitter.lua) === - -hi("@variable", { fg = base_16.base05 }) -hi("@variable.builtin", { fg = base_16.base09 }) -hi("@variable.parameter", { fg = base_16.base08 }) -hi("@variable.member", { fg = base_16.base08 }) - -hi("@constant", { fg = base_16.base08 }) -hi("@constant.builtin", { fg = base_16.base09 }) -hi("@constant.macro", { fg = base_16.base08 }) - -hi("@string", { fg = base_16.base0B }) -hi("@string.regex", { fg = base_16.base0C }) -hi("@string.escape", { fg = base_16.base0C }) -hi("@character", { fg = base_16.base08 }) -hi("@number", { fg = base_16.base09 }) -hi("@boolean", { fg = base_16.base09 }) -hi("@float", { fg = base_16.base09 }) - -hi("@function", { fg = base_16.base0D }) -hi("@function.builtin", { fg = base_16.base0D }) -hi("@function.macro", { fg = base_16.base08 }) -hi("@function.method", { fg = base_16.base0D }) - -hi("@constructor", { fg = base_16.base0C }) -hi("@parameter", { fg = base_16.base08 }) - -hi("@keyword", { fg = base_16.base0E }) -hi("@keyword.function", { fg = base_16.base0E }) -hi("@keyword.return", { fg = base_16.base0E }) -hi("@keyword.operator", { fg = base_16.base0E }) - -hi("@conditional", { fg = base_16.base0E }) -hi("@repeat", { fg = base_16.base0E }) -hi("@label", { fg = base_16.base0A }) -hi("@operator", { fg = base_16.base05 }) -hi("@exception", { fg = base_16.base08 }) - -hi("@type", { fg = base_16.base0A }) -hi("@type.builtin", { fg = base_16.base0A }) -hi("@type.qualifier", { fg = base_16.base0E }) - -hi("@structure", { fg = base_16.base0E }) -hi("@include", { fg = base_16.base0D }) - -hi("@property", { fg = base_16.base08 }) -hi("@field", { fg = base_16.base08 }) - -hi("@punctuation.delimiter", { fg = base_16.base0F }) -hi("@punctuation.bracket", { fg = base_16.base05 }) -hi("@punctuation.special", { fg = base_16.base08 }) - -hi("@comment", { fg = base_30.grey_fg, style = "italic" }) -hi("@comment.todo", { fg = base_30.grey, bg = base_30.white }) -hi("@comment.note", { fg = base_30.white, bg = base_30.blue }) -hi("@comment.warning", { fg = base_30.black, bg = base_30.yellow }) -hi("@comment.error", { fg = base_30.white, bg = base_30.red }) - -hi("@tag", { fg = base_16.base08 }) -hi("@tag.attribute", { fg = base_16.base0A }) -hi("@tag.delimiter", { fg = base_16.base0F }) - -hi("@markup.strong", { style = "bold" }) -hi("@markup.italic", { style = "italic" }) -hi("@markup.underline", { style = "underline" }) -hi("@markup.strike", { style = "strikethrough" }) -hi("@markup.heading", { fg = base_16.base0D, style = "bold" }) -hi("@markup.link", { fg = base_16.base08, style = "underline" }) -hi("@markup.link.url", { fg = base_16.base0B, style = "underline" }) -hi("@markup.list", { fg = base_16.base08 }) - --- === NVIM-TREE === - -hi("NvimTreeNormal", { bg = base_30.darker_black }) -hi("NvimTreeNormalNC", { bg = base_30.darker_black }) -hi("NvimTreeRootFolder", { fg = base_30.red, style = "bold" }) -hi("NvimTreeGitDirty", { fg = base_30.yellow }) -hi("NvimTreeGitNew", { fg = base_30.green }) -hi("NvimTreeGitDeleted", { fg = base_30.red }) -hi("NvimTreeSpecialFile", { fg = base_30.yellow, style = "underline" }) -hi("NvimTreeIndentMarker", { fg = base_30.grey }) -hi("NvimTreeImageFile", { fg = base_30.dark_purple }) -hi("NvimTreeSymlink", { fg = base_30.cyan }) -hi("NvimTreeFolderName", { fg = base_30.blue }) -hi("NvimTreeFolderIcon", { fg = base_30.folder_bg }) -hi("NvimTreeOpenedFolderName", { fg = base_30.blue }) - --- === WHICH-KEY === - -hi("WhichKey", { fg = base_30.blue }) -hi("WhichKeyGroup", { fg = base_30.green }) -hi("WhichKeyDesc", { fg = base_16.base05 }) -hi("WhichKeySeparator", { fg = base_30.grey }) -hi("WhichKeyFloat", { bg = base_30.darker_black }) -hi("WhichKeyBorder", { fg = base_30.blue, bg = base_30.darker_black }) - --- === HEALTH CHECK === - -hi("healthSuccess", { fg = base_30.green, bg = base_30.black }) +require("bearded-arc").apply(base_30, base_16)