local colors = require("astrobox.colors") return function(config) local vimbg = vim.o.background local dark = vimbg == "dark" local vimbg_reversed = dark and "light" or "dark" -- Build base colors local base = { none = "", fg = colors.grayscale[vimbg_reversed][1], bg = colors.bg[vimbg][config.contrast], harder_bg = colors.bg.harder[vimbg][config.contrast], softer_bg = colors.bg.softer[vimbg][config.contrast], bg_gradiant = colors.grayscale[vimbg], fg_gradiant = colors.grayscale[vimbg_reversed], colored_backgrounds = colors.colored_backgrounds[vimbg][config.contrast], gray = colors.gray, -- TODO Rémy Only for comments? Won't look good in light mode } -- Append colors local palette = vim.tbl_extend("error", base, colors.colors[vimbg]) palette.ui = { fg = palette.fg, bg = palette.bg_gradiant[1], bg_hard = palette.harder_bg, fg_inactive = palette.fg_gradiant[4], bg_inactive = palette.bg_gradiant[2], float = { title = palette.green, title2 = palette.aqua, border = palette.fg_gradiant[3], text = palette.fg_gradiant[2], scroll = palette.blue, }, winbar = { fg = palette.fg_gradiant[1], bg = palette.harder_bg, fg_inactive = palette.bg_gradiant[3], bg_inactive = palette.harder_bg, }, selection = { fg = palette.fg, bg = palette.colored_backgrounds.blue, }, win = { separator = palette.fg_gradiant[4], }, } palette.other = { conceal = palette.bg_gradiant[3], hard_bg = palette.harder_bg, bg_active = palette.softer_bg, -- Special HL group to find what a group maps to error_hl = { fg = "#000000", bg = "#FF00FF" }, } palette.term_colors = { palette.bg, colors.term_colors.red, colors.term_colors.green, colors.term_colors.yellow, colors.term_colors.blue, colors.term_colors.purple, colors.term_colors.aqua, palette.fg_gradiant[4], palette.gray, colors.colors.red, colors.colors.green, colors.colors.yellow, colors.colors.blue, colors.colors.purple, colors.colors.aqua, palette.fg, } return palette end