Files
n8n-colorscheme.nvim/groups.lua
2026-04-14 20:20:41 -04:00

557 lines
27 KiB
Lua

local theme = require("n8n.theme")
local M = {}
---@param opts? table
function M.setup(opts)
opts = opts or {}
local c = theme.colors()
local groups = {}
-- ============================================================
-- Core editor highlights
-- ============================================================
groups.Normal = { fg = c.fg, bg = c.bg }
groups.NormalFloat = { fg = c.fg, bg = c.bg_float }
groups.NormalSB = { fg = c.fg_sidebar, bg = c.bg_sidebar }
groups.SignColumn = { fg = c.fg_gutter, bg = c.bg }
groups.FoldColumn = { fg = c.fg_gutter, bg = c.bg }
groups.MsgArea = { fg = c.fg }
groups.MsgSeparator = { fg = c.border }
groups.SpellBad = { sp = c.error, undercurl = true }
groups.SpellCap = { sp = c.warning, undercurl = true }
groups.SpellLocal = { sp = c.info, undercurl = true }
groups.SpellRare = { sp = c.hint, undercurl = true }
-- Cursor and selections
groups.Cursor = { fg = c.bg, bg = c.fg_bright }
groups.lCursor = { link = "Cursor" }
groups.CursorIM = { link = "Cursor" }
groups.TermCursor = { fg = c.bg, bg = c.accent }
groups.TermCursorNC = { fg = c.bg, bg = c.fg_dark }
groups.CursorLine = { bg = c.bg_highlight }
groups.CursorColumn = { bg = c.bg_highlight }
groups.ColorColumn = { bg = c.bg_highlight }
groups.Visual = { bg = c.bg_visual }
groups.VisualNOS = { bg = c.bg_visual }
-- Line numbers
groups.LineNr = { fg = c.fg_gutter }
groups.CursorLineNr = { fg = c.accent, bold = true }
groups.LineNrAbove = { fg = c.fg_gutter }
groups.LineNrBelow = { fg = c.fg_gutter }
-- Search
groups.Search = { fg = c.fg_bright, bg = c.bg_search }
groups.IncSearch = { fg = c.bg, bg = c.accent }
groups.CurSearch = { link = "IncSearch" }
groups.Substitute = { fg = c.bg, bg = c.accent }
-- Popup menu
groups.Pmenu = { fg = c.fg, bg = c.bg_popup }
groups.PmenuSel = { fg = c.fg_bright, bg = c.bg_visual }
groups.PmenuSbar = { bg = c.bg_popup }
groups.PmenuThumb = { bg = c.border }
groups.PmenuKind = { fg = c.accent }
groups.PmenuKindSel = { fg = c.accent, bg = c.bg_visual }
groups.PmenuExtra = { fg = c.fg_dark }
groups.PmenuExtraSel = { fg = c.fg_dark, bg = c.bg_visual }
-- Tabline
groups.TabLine = { fg = c.fg_dark, bg = c.bg_statusline }
groups.TabLineFill = { bg = c.bg_dark }
groups.TabLineSel = { fg = c.fg_bright, bg = c.bg }
-- Statusline
groups.StatusLine = { fg = c.fg, bg = c.bg_statusline }
groups.StatusLineNC = { fg = c.fg_gutter, bg = c.bg_statusline }
-- Window separators
groups.VertSplit = { fg = c.border }
groups.WinSeparator = { fg = c.border }
groups.WinBar = { fg = c.fg, bg = c.bg }
groups.WinBarNC = { fg = c.fg_dark, bg = c.bg }
-- Folds and columns
groups.Folded = { fg = c.fg_dark, bg = c.bg_highlight }
groups.NonText = { fg = c.neutral_700 }
groups.EndOfBuffer = { fg = c.neutral_800 }
groups.Whitespace = { fg = c.neutral_800 }
groups.SpecialKey = { fg = c.neutral_700 }
-- Messages
groups.ErrorMsg = { fg = c.error }
groups.WarningMsg = { fg = c.warning }
groups.MoreMsg = { fg = c.info }
groups.Question = { fg = c.accent }
groups.Title = { fg = c.accent, bold = true }
groups.Directory = { fg = c.func }
groups.Conceal = { fg = c.fg_dark }
groups.MatchParen = { fg = c.accent, bold = true, underline = true }
groups.QuickFixLine = { bg = c.bg_visual }
-- Float border
groups.FloatBorder = { fg = c.border_highlight, bg = c.bg_float }
groups.FloatTitle = { fg = c.accent, bg = c.bg_float, bold = true }
-- ============================================================
-- Standard syntax groups (:h group-name)
-- ============================================================
groups.Comment = { fg = c.comment, italic = true }
groups.Constant = { fg = c.constant }
groups.String = { fg = c.string }
groups.Character = { fg = c.string }
groups.Number = { fg = c.number }
groups.Boolean = { fg = c.boolean }
groups.Float = { fg = c.number }
groups.Identifier = { fg = c.variable }
groups.Function = { fg = c.func }
groups.Statement = { fg = c.keyword }
groups.Conditional = { fg = c.keyword }
groups.Repeat = { fg = c.keyword }
groups.Label = { fg = c.keyword }
groups.Operator = { fg = c.operator }
groups.Keyword = { fg = c.keyword }
groups.Exception = { fg = c.keyword }
groups.PreProc = { fg = c.preproc }
groups.Include = { fg = c.keyword }
groups.Define = { fg = c.keyword }
groups.Macro = { fg = c.preproc }
groups.PreCondit = { fg = c.preproc }
groups.Type = { fg = c.type }
groups.StorageClass = { fg = c.keyword }
groups.Structure = { fg = c.type }
groups.Typedef = { fg = c.type }
groups.Special = { fg = c.special }
groups.SpecialChar = { fg = c.escape }
groups.Tag = { fg = c.tag }
groups.Delimiter = { fg = c.punctuation }
groups.SpecialComment = { fg = c.comment, bold = true }
groups.Debug = { fg = c.warning }
groups.Underlined = { underline = true }
groups.Bold = { bold = true }
groups.Italic = { italic = true }
groups.Ignore = { fg = c.bg }
groups.Error = { fg = c.error }
groups.Todo = { fg = c.bg, bg = c.accent, bold = true }
-- ============================================================
-- Treesitter highlights (@groups)
-- ============================================================
-- Identifiers
groups["@variable"] = { fg = c.variable }
groups["@variable.builtin"] = { fg = c.builtin, italic = true }
groups["@variable.parameter"] = { fg = c.parameter }
groups["@variable.parameter.builtin"] = { fg = c.parameter, italic = true }
groups["@variable.member"] = { fg = c.property }
groups["@constant"] = { fg = c.constant }
groups["@constant.builtin"] = { fg = c.constant, bold = true }
groups["@constant.macro"] = { fg = c.preproc }
groups["@module"] = { fg = c.namespace }
groups["@module.builtin"] = { fg = c.namespace, italic = true }
groups["@label"] = { fg = c.keyword }
-- Literals
groups["@string"] = { fg = c.string }
groups["@string.documentation"] = { fg = c.comment }
groups["@string.regex"] = { fg = c.regex }
groups["@string.escape"] = { fg = c.escape }
groups["@string.special"] = { fg = c.special }
groups["@string.special.symbol"] = { fg = c.special }
groups["@string.special.url"] = { fg = c.info, underline = true }
groups["@string.special.path"] = { fg = c.info }
groups["@character"] = { fg = c.string }
groups["@character.special"] = { fg = c.escape }
groups["@boolean"] = { fg = c.boolean }
groups["@number"] = { fg = c.number }
groups["@number.float"] = { fg = c.number }
-- Types
groups["@type"] = { fg = c.type }
groups["@type.builtin"] = { fg = c.type, italic = true }
groups["@type.definition"] = { fg = c.type }
groups["@type.qualifier"] = { fg = c.keyword }
groups["@attribute"] = { fg = c.attribute }
groups["@attribute.builtin"] = { fg = c.attribute, italic = true }
groups["@property"] = { fg = c.property }
-- Functions
groups["@function"] = { fg = c.func }
groups["@function.builtin"] = { fg = c.builtin }
groups["@function.call"] = { fg = c.func }
groups["@function.macro"] = { fg = c.preproc }
groups["@function.method"] = { fg = c.func }
groups["@function.method.call"] = { fg = c.func }
groups["@constructor"] = { fg = c.type }
groups["@operator"] = { fg = c.operator }
-- Keywords
groups["@keyword"] = { fg = c.keyword }
groups["@keyword.coroutine"] = { fg = c.keyword, italic = true }
groups["@keyword.function"] = { fg = c.keyword }
groups["@keyword.operator"] = { fg = c.operator }
groups["@keyword.import"] = { fg = c.keyword }
groups["@keyword.type"] = { fg = c.keyword }
groups["@keyword.modifier"] = { fg = c.keyword }
groups["@keyword.repeat"] = { fg = c.keyword }
groups["@keyword.return"] = { fg = c.keyword }
groups["@keyword.debug"] = { fg = c.warning }
groups["@keyword.exception"] = { fg = c.keyword }
groups["@keyword.conditional"] = { fg = c.keyword }
groups["@keyword.conditional.ternary"] = { fg = c.operator }
groups["@keyword.directive"] = { fg = c.preproc }
groups["@keyword.directive.define"] = { fg = c.preproc }
-- Punctuation
groups["@punctuation.delimiter"] = { fg = c.punctuation }
groups["@punctuation.bracket"] = { fg = c.punctuation }
groups["@punctuation.special"] = { fg = c.special }
-- Comments
groups["@comment"] = { fg = c.comment, italic = true }
groups["@comment.documentation"] = { fg = c.comment }
groups["@comment.error"] = { fg = c.error }
groups["@comment.warning"] = { fg = c.warning }
groups["@comment.todo"] = { fg = c.bg, bg = c.accent, bold = true }
groups["@comment.note"] = { fg = c.bg, bg = c.info, bold = true }
-- Markup (markdown, html, etc.)
groups["@markup.strong"] = { bold = true }
groups["@markup.italic"] = { italic = true }
groups["@markup.strikethrough"] = { strikethrough = true }
groups["@markup.underline"] = { underline = true }
groups["@markup.heading"] = { fg = c.accent, bold = true }
groups["@markup.heading.1"] = { fg = c.accent, bold = true }
groups["@markup.heading.2"] = { fg = c.func, bold = true }
groups["@markup.heading.3"] = { fg = c.type, bold = true }
groups["@markup.heading.4"] = { fg = c.string, bold = true }
groups["@markup.heading.5"] = { fg = c.constant, bold = true }
groups["@markup.heading.6"] = { fg = c.comment, bold = true }
groups["@markup.quote"] = { fg = c.fg_dark, italic = true }
groups["@markup.math"] = { fg = c.number }
groups["@markup.environment"] = { fg = c.preproc }
groups["@markup.link"] = { fg = c.info, underline = true }
groups["@markup.link.label"] = { fg = c.info }
groups["@markup.link.url"] = { fg = c.info, underline = true }
groups["@markup.raw"] = { fg = c.string }
groups["@markup.raw.block"] = { fg = c.fg }
groups["@markup.list"] = { fg = c.accent }
groups["@markup.list.checked"] = { fg = c.git_add }
groups["@markup.list.unchecked"] = { fg = c.fg_dark }
-- Tags (HTML, JSX, etc.)
groups["@tag"] = { fg = c.tag }
groups["@tag.builtin"] = { fg = c.tag, bold = true }
groups["@tag.attribute"] = { fg = c.attribute }
groups["@tag.delimiter"] = { fg = c.punctuation }
-- ============================================================
-- LSP Semantic Tokens
-- ============================================================
groups["@lsp.type.boolean"] = { link = "@boolean" }
groups["@lsp.type.builtinType"] = { link = "@type.builtin" }
groups["@lsp.type.comment"] = { link = "@comment" }
groups["@lsp.type.decorator"] = { link = "@attribute" }
groups["@lsp.type.deriveHelper"] = { link = "@attribute" }
groups["@lsp.type.enum"] = { link = "@type" }
groups["@lsp.type.enumMember"] = { link = "@constant" }
groups["@lsp.type.escapeSequence"] = { link = "@string.escape" }
groups["@lsp.type.formatSpecifier"] = { link = "@punctuation.special" }
groups["@lsp.type.function"] = { link = "@function" }
groups["@lsp.type.generic"] = { link = "@variable" }
groups["@lsp.type.interface"] = { fg = c.type }
groups["@lsp.type.keyword"] = { link = "@keyword" }
groups["@lsp.type.lifetime"] = { link = "@keyword.modifier" }
groups["@lsp.type.method"] = { link = "@function.method" }
groups["@lsp.type.namespace"] = { link = "@module" }
groups["@lsp.type.number"] = { link = "@number" }
groups["@lsp.type.operator"] = { link = "@operator" }
groups["@lsp.type.parameter"] = { link = "@variable.parameter" }
groups["@lsp.type.property"] = { link = "@property" }
groups["@lsp.type.selfKeyword"] = { fg = c.builtin, italic = true }
groups["@lsp.type.selfTypeKeyword"] = { link = "@type.builtin" }
groups["@lsp.type.string"] = { link = "@string" }
groups["@lsp.type.typeAlias"] = { link = "@type.definition" }
groups["@lsp.type.typeParameter"] = { fg = c.type }
groups["@lsp.type.unresolvedReference"] = { undercurl = true, sp = c.error }
groups["@lsp.type.variable"] = {} -- defer to treesitter
groups["@lsp.typemod.class.defaultLibrary"] = { link = "@type.builtin" }
groups["@lsp.typemod.enum.defaultLibrary"] = { link = "@type.builtin" }
groups["@lsp.typemod.enumMember.defaultLibrary"] = { link = "@constant.builtin" }
groups["@lsp.typemod.function.defaultLibrary"] = { link = "@function.builtin" }
groups["@lsp.typemod.keyword.async"] = { link = "@keyword.coroutine" }
groups["@lsp.typemod.keyword.injected"] = { link = "@keyword" }
groups["@lsp.typemod.macro.defaultLibrary"] = { link = "@function.builtin" }
groups["@lsp.typemod.method.defaultLibrary"] = { link = "@function.builtin" }
groups["@lsp.typemod.operator.injected"] = { link = "@operator" }
groups["@lsp.typemod.string.injected"] = { link = "@string" }
groups["@lsp.typemod.struct.defaultLibrary"] = { link = "@type.builtin" }
groups["@lsp.typemod.type.defaultLibrary"] = { link = "@type.builtin" }
groups["@lsp.typemod.typeAlias.defaultLibrary"] = { link = "@type.builtin" }
groups["@lsp.typemod.variable.callable"] = { link = "@function" }
groups["@lsp.typemod.variable.defaultLibrary"] = { link = "@variable.builtin" }
groups["@lsp.typemod.variable.injected"] = { link = "@variable" }
groups["@lsp.typemod.variable.static"] = { link = "@constant" }
-- ============================================================
-- Diagnostics
-- ============================================================
groups.DiagnosticError = { fg = c.error }
groups.DiagnosticWarn = { fg = c.warning }
groups.DiagnosticInfo = { fg = c.info }
groups.DiagnosticHint = { fg = c.hint }
groups.DiagnosticOk = { fg = c.git_add }
groups.DiagnosticUnderlineError = { undercurl = true, sp = c.error }
groups.DiagnosticUnderlineWarn = { undercurl = true, sp = c.warning }
groups.DiagnosticUnderlineInfo = { undercurl = true, sp = c.info }
groups.DiagnosticUnderlineHint = { undercurl = true, sp = c.hint }
groups.DiagnosticUnderlineOk = { undercurl = true, sp = c.git_add }
groups.DiagnosticVirtualTextError = { fg = c.error, bg = c.danger_bg }
groups.DiagnosticVirtualTextWarn = { fg = c.warning, bg = c.sticky_bg }
groups.DiagnosticVirtualTextInfo = { fg = c.info, bg = c.info_bg }
groups.DiagnosticVirtualTextHint = { fg = c.hint, bg = c.success_bg }
-- ============================================================
-- Diff
-- ============================================================
groups.DiffAdd = { bg = c.diff_add }
groups.DiffChange = { bg = c.diff_change }
groups.DiffDelete = { bg = c.diff_delete }
groups.DiffText = { bg = c.diff_text }
groups.diffAdded = { fg = c.git_add }
groups.diffRemoved = { fg = c.git_delete }
groups.diffChanged = { fg = c.git_change }
groups.diffOldFile = { fg = c.git_delete }
groups.diffNewFile = { fg = c.git_add }
groups.diffFile = { fg = c.info }
groups.diffLine = { fg = c.comment }
groups.diffIndexLine = { fg = c.comment }
-- ============================================================
-- Git Signs
-- ============================================================
groups.GitSignsAdd = { fg = c.git_add }
groups.GitSignsChange = { fg = c.git_change }
groups.GitSignsDelete = { fg = c.git_delete }
groups.GitSignsAddNr = { fg = c.git_add }
groups.GitSignsChangeNr = { fg = c.git_change }
groups.GitSignsDeleteNr = { fg = c.git_delete }
groups.GitSignsAddLn = { bg = c.diff_add }
groups.GitSignsChangeLn = { bg = c.diff_change }
groups.GitSignsDeleteLn = { bg = c.diff_delete }
groups.GitSignsCurrentLineBlame = { fg = c.fg_gutter, italic = true }
-- ============================================================
-- Telescope
-- ============================================================
groups.TelescopeNormal = { fg = c.fg, bg = c.bg_float }
groups.TelescopeBorder = { fg = c.border_highlight, bg = c.bg_float }
groups.TelescopeTitle = { fg = c.accent, bold = true }
groups.TelescopePromptNormal = { fg = c.fg_bright, bg = c.bg_popup }
groups.TelescopePromptBorder = { fg = c.accent, bg = c.bg_popup }
groups.TelescopePromptTitle = { fg = c.bg, bg = c.accent, bold = true }
groups.TelescopePromptPrefix = { fg = c.accent }
groups.TelescopePreviewTitle = { fg = c.bg, bg = c.info, bold = true }
groups.TelescopeResultsTitle = { fg = c.bg, bg = c.hint, bold = true }
groups.TelescopeSelection = { bg = c.bg_visual }
groups.TelescopeSelectionCaret = { fg = c.accent }
groups.TelescopeMatching = { fg = c.accent, bold = true }
-- ============================================================
-- NvimTree / Neo-tree
-- ============================================================
groups.NvimTreeNormal = { fg = c.fg_sidebar, bg = c.bg_sidebar }
groups.NvimTreeNormalNC = { fg = c.fg_sidebar, bg = c.bg_sidebar }
groups.NvimTreeRootFolder = { fg = c.accent, bold = true }
groups.NvimTreeFolderIcon = { fg = c.func }
groups.NvimTreeFolderName = { fg = c.func }
groups.NvimTreeOpenedFolderName = { fg = c.func, bold = true }
groups.NvimTreeGitDirty = { fg = c.git_change }
groups.NvimTreeGitNew = { fg = c.git_add }
groups.NvimTreeGitDeleted = { fg = c.git_delete }
groups.NvimTreeSpecialFile = { fg = c.special, underline = true }
groups.NvimTreeIndentMarker = { fg = c.border }
groups.NvimTreeWinSeparator = { fg = c.border, bg = c.bg_sidebar }
groups.NeoTreeNormal = { fg = c.fg_sidebar, bg = c.bg_sidebar }
groups.NeoTreeNormalNC = { fg = c.fg_sidebar, bg = c.bg_sidebar }
groups.NeoTreeDimText = { fg = c.fg_gutter }
groups.NeoTreeTitleBar = { fg = c.bg, bg = c.accent }
-- ============================================================
-- Indent Blankline
-- ============================================================
groups.IndentBlanklineChar = { fg = c.neutral_800, nocombine = true }
groups.IndentBlanklineContextChar = { fg = c.accent, nocombine = true }
groups.IblIndent = { fg = c.neutral_800, nocombine = true }
groups.IblScope = { fg = c.accent, nocombine = true }
-- ============================================================
-- Which Key
-- ============================================================
groups.WhichKey = { fg = c.accent }
groups.WhichKeyGroup = { fg = c.func }
groups.WhichKeyDesc = { fg = c.fg }
groups.WhichKeySeparator = { fg = c.comment }
groups.WhichKeyValue = { fg = c.fg_dark }
-- ============================================================
-- Dashboard / Alpha
-- ============================================================
groups.DashboardHeader = { fg = c.accent }
groups.DashboardCenter = { fg = c.func }
groups.DashboardShortCut = { fg = c.keyword }
groups.DashboardFooter = { fg = c.comment, italic = true }
-- ============================================================
-- Notify
-- ============================================================
groups.NotifyERRORBorder = { fg = c.error }
groups.NotifyERRORIcon = { fg = c.error }
groups.NotifyERRORTitle = { fg = c.error }
groups.NotifyWARNBorder = { fg = c.warning }
groups.NotifyWARNIcon = { fg = c.warning }
groups.NotifyWARNTitle = { fg = c.warning }
groups.NotifyINFOBorder = { fg = c.info }
groups.NotifyINFOIcon = { fg = c.info }
groups.NotifyINFOTitle = { fg = c.info }
groups.NotifyDEBUGBorder = { fg = c.comment }
groups.NotifyDEBUGIcon = { fg = c.comment }
groups.NotifyDEBUGTitle = { fg = c.comment }
groups.NotifyTRACEBorder = { fg = c.special }
groups.NotifyTRACEIcon = { fg = c.special }
groups.NotifyTRACETitle = { fg = c.special }
-- ============================================================
-- Noice
-- ============================================================
groups.NoiceCmdlinePopup = { fg = c.fg, bg = c.bg_float }
groups.NoiceCmdlinePopupBorder = { fg = c.accent }
groups.NoiceCmdlineIcon = { fg = c.accent }
groups.NoiceConfirm = { fg = c.fg, bg = c.bg_float }
groups.NoiceConfirmBorder = { fg = c.accent }
-- ============================================================
-- Cmp (completion)
-- ============================================================
groups.CmpItemAbbr = { fg = c.fg }
groups.CmpItemAbbrDeprecated = { fg = c.fg_dark, strikethrough = true }
groups.CmpItemAbbrMatch = { fg = c.accent, bold = true }
groups.CmpItemAbbrMatchFuzzy = { fg = c.accent, bold = true }
groups.CmpItemKind = { fg = c.func }
groups.CmpItemMenu = { fg = c.fg_dark }
groups.CmpItemKindClass = { fg = c.type }
groups.CmpItemKindColor = { fg = c.special }
groups.CmpItemKindConstant = { fg = c.constant }
groups.CmpItemKindConstructor = { fg = c.type }
groups.CmpItemKindEnum = { fg = c.type }
groups.CmpItemKindEnumMember = { fg = c.constant }
groups.CmpItemKindEvent = { fg = c.special }
groups.CmpItemKindField = { fg = c.property }
groups.CmpItemKindFile = { fg = c.fg }
groups.CmpItemKindFolder = { fg = c.func }
groups.CmpItemKindFunction = { fg = c.func }
groups.CmpItemKindInterface = { fg = c.type }
groups.CmpItemKindKeyword = { fg = c.keyword }
groups.CmpItemKindMethod = { fg = c.func }
groups.CmpItemKindModule = { fg = c.namespace }
groups.CmpItemKindOperator = { fg = c.operator }
groups.CmpItemKindProperty = { fg = c.property }
groups.CmpItemKindReference = { fg = c.constant }
groups.CmpItemKindSnippet = { fg = c.special }
groups.CmpItemKindStruct = { fg = c.type }
groups.CmpItemKindText = { fg = c.fg }
groups.CmpItemKindTypeParameter = { fg = c.type }
groups.CmpItemKindUnit = { fg = c.constant }
groups.CmpItemKindValue = { fg = c.constant }
groups.CmpItemKindVariable = { fg = c.variable }
-- ============================================================
-- Blink.cmp
-- ============================================================
groups.BlinkCmpMenu = { fg = c.fg, bg = c.bg_popup }
groups.BlinkCmpMenuBorder = { fg = c.border_highlight, bg = c.bg_popup }
groups.BlinkCmpMenuSelection = { bg = c.bg_visual }
groups.BlinkCmpLabel = { fg = c.fg }
groups.BlinkCmpLabelMatch = { fg = c.accent, bold = true }
groups.BlinkCmpKind = { fg = c.func }
-- ============================================================
-- Trouble
-- ============================================================
groups.TroubleNormal = { fg = c.fg, bg = c.bg_sidebar }
groups.TroubleNormalNC = { fg = c.fg_sidebar, bg = c.bg_sidebar }
-- ============================================================
-- Lazy
-- ============================================================
groups.LazyButton = { fg = c.fg, bg = c.bg_popup }
groups.LazyButtonActive = { fg = c.bg, bg = c.accent }
groups.LazyH1 = { fg = c.bg, bg = c.accent, bold = true }
groups.LazySpecial = { fg = c.accent }
groups.LazyProgressDone = { fg = c.accent }
groups.LazyProgressTodo = { fg = c.fg_gutter }
-- ============================================================
-- Mason
-- ============================================================
groups.MasonNormal = { fg = c.fg, bg = c.bg_float }
groups.MasonHeader = { fg = c.bg, bg = c.accent, bold = true }
groups.MasonHighlight = { fg = c.accent }
groups.MasonHighlightBlock = { fg = c.bg, bg = c.accent }
groups.MasonMutedBlock = { fg = c.fg, bg = c.bg_popup }
-- ============================================================
-- Mini plugins
-- ============================================================
groups.MiniStatuslineFilename = { fg = c.fg, bg = c.bg_statusline }
groups.MiniStatuslineDevinfo = { fg = c.fg_dark, bg = c.bg_highlight }
groups.MiniStatuslineModeNormal = { fg = c.bg, bg = c.accent, bold = true }
groups.MiniStatuslineModeInsert = { fg = c.bg, bg = c.hint, bold = true }
groups.MiniStatuslineModeVisual = { fg = c.bg, bg = c.special, bold = true }
groups.MiniStatuslineModeReplace = { fg = c.bg, bg = c.error, bold = true }
groups.MiniStatuslineModeCommand = { fg = c.bg, bg = c.warning, bold = true }
groups.MiniIndentscopeSymbol = { fg = c.accent }
groups.MiniCursorword = { bg = c.bg_visual }
groups.MiniCursorwordCurrent = { bg = c.bg_visual }
-- ============================================================
-- Bufferline
-- ============================================================
groups.BufferLineIndicatorSelected = { fg = c.accent }
groups.BufferLineFill = { bg = c.bg_dark }
-- ============================================================
-- Snacks
-- ============================================================
groups.SnacksDashboardHeader = { fg = c.accent }
groups.SnacksDashboardFooter = { fg = c.comment, italic = true }
groups.SnacksDashboardIcon = { fg = c.func }
groups.SnacksDashboardKey = { fg = c.accent }
groups.SnacksDashboardDesc = { fg = c.fg }
groups.SnacksNotifierInfo = { fg = c.info }
groups.SnacksNotifierWarn = { fg = c.warning }
groups.SnacksNotifierError = { fg = c.error }
return groups
end
return M