119 lines
5.5 KiB
Lua
119 lines
5.5 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
|
|
|
|
-- 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
|