Files
n8n-colorscheme.nvim/lua/n8n/theme.lua
2026-04-15 11:46:47 -04:00

123 lines
5.7 KiB
Lua

local palette = require("n8n.palette")
---@class N8nTheme
local M = {}
function M.colors()
return {
-- Editor backgrounds (mirroring n8n's layered dark surfaces)
bg = palette.neutral_950, -- #171717 canvas background
bg_dark = palette.neutral_black, -- #000000 deepest bg
bg_float = palette.neutral_900, -- #212121 floating panels
bg_popup = palette.neutral_850, -- #2b2b2b popup menus
bg_sidebar = palette.neutral_900, -- #212121 sidebar/tree
bg_statusline = palette.neutral_900, -- #212121 statusline
bg_visual = palette.neutral_750, -- #424242 visual selection
bg_highlight = palette.neutral_850, -- #2b2b2b cursorline
bg_search = palette.yellow_900, -- #332700 search highlight bg
-- Foregrounds
fg = palette.neutral_200, -- #e0e0e0 primary text
fg_bright = palette.neutral_white, -- #ffffff bright text
fg_dark = palette.neutral_400, -- #949494 muted text
fg_gutter = palette.neutral_600, -- #757575 gutter/line numbers
fg_sidebar = palette.neutral_300, -- #adadad sidebar text
-- Borders (n8n uses white alpha overlays on dark)
border = palette.neutral_700, -- #4d4d4d default border
border_highlight = palette.neutral_600, -- #757575 active border
-- Brand accent (n8n orange in dark mode)
accent = palette.orange_300, -- #ff6f5c brand accent
accent_hover = palette.orange_400, -- #ff4b33 hover state
accent_active = palette.orange_500, -- #ff1e00 active/pressed
-- Syntax colors (derived from n8n's code editor + JSON viewer)
keyword = palette.orange_300, -- #ff6f5c keywords (brand color)
string = palette.purple_400, -- #a098dc strings
func = palette.blue_300, -- #7fb3e6 functions
variable = palette.neutral_200, -- #e0e0e0 variables
constant = palette.gold_400, -- #e6a23d constants
number = palette.green_600, -- #29a360 numbers
boolean = palette.green_600, -- #29a360 booleans
type = palette.purple_300, -- #c3bee9 types
operator = palette.orange_250, -- #ff9c8f operators
property = palette.blue_400, -- #4891db properties/fields
parameter = palette.gold_300, -- #efc381 parameters
comment = palette.neutral_500, -- #828282 comments
punctuation = palette.neutral_400, -- #949494 punctuation
tag = palette.orange_300, -- #ff6f5c HTML/XML tags
attribute = palette.purple_400, -- #a098dc attributes
namespace = palette.slate_300, -- #adabba namespaces
preproc = palette.brand_pink, -- #EA4B71 preprocessor
special = palette.highlight_2, -- #a977f0 special symbols
regex = palette.mint_500, -- #16e975 regex
escape = palette.mint_600, -- #13cd67 escape sequences
builtin = palette.blue_300, -- #7fb3e6 built-in functions
-- JSON viewer colors (directly from n8n's JSON display)
json_key = palette.neutral_125, -- #f5f5f5 JSON keys
json_string = palette.purple_400, -- #a098dc JSON string values
json_number = palette.green_600, -- #29a360 JSON numbers
json_boolean = palette.green_600, -- #29a360 JSON booleans
json_null = palette.red_400, -- #f16a75 JSON null
json_bracket = palette.neutral_700, -- #4d4d4d brackets
-- Diagnostics
error = palette.red_600, -- #ea1f30
warning = palette.yellow_500, -- #ffc400
info = palette.blue_500, -- #2878c8
hint = palette.green_500, -- #33cc78
-- Diff
diff_add = palette.green_950, -- #0a291a
diff_change = palette.blue_900, -- #081a2b
diff_delete = palette.red_950, -- #4f070d
diff_text = palette.blue_800, -- #13385e
-- Git signs
git_add = palette.green_500, -- #33cc78
git_change = palette.blue_400, -- #4891db
git_delete = palette.red_500, -- #ee4452
-- Raw neutrals (used in groups for subtle UI elements)
neutral_700 = palette.neutral_700, -- #4d4d4d
neutral_800 = palette.neutral_800, -- #3d3d3d
-- n8n-specific semantic colors
node_bg = palette.neutral_850, -- node card background
node_border = palette.purple_500, -- pinned node border
sticky_bg = palette.yellow_900, -- sticky note background
sticky_border = palette.yellow_800, -- sticky note border
sticky_text = palette.neutral_125, -- sticky note text
success_bg = palette.green_950, -- success state bg
success_fg = palette.green_50, -- success state text
danger_bg = palette.red_950, -- danger state bg
danger_fg = palette.red_50, -- danger state text
info_bg = palette.blue_900, -- info state bg
info_fg = palette.blue_50, -- info state text
-- Terminal colors
terminal = {
black = palette.neutral_950,
red = palette.red_500,
green = palette.green_500,
yellow = palette.yellow_500,
blue = palette.blue_400,
magenta = palette.purple_500,
cyan = palette.mint_500,
white = palette.neutral_200,
bright_black = palette.neutral_600,
bright_red = palette.red_400,
bright_green = palette.green_400,
bright_yellow = palette.yellow_300,
bright_blue = palette.blue_300,
bright_magenta = palette.purple_400,
bright_cyan = palette.mint_600,
bright_white = palette.neutral_white,
},
}
end
return M