local util = require("tokyonight.util") local M = {} M.default = function() return { none = "NONE", bg_dark = "#1f2335", bg = "#24283b", bg_highlight = "#292e42", terminal_black = "#414868", fg = "#c0caf5", fg_dark = "#a9b1d6", fg_gutter = "#3b4261", dark3 = "#545c7e", comment = "#565f89", dark5 = "#737aa2", blue0 = "#3d59a1", blue = "#7aa2f7", cyan = "#7dcfff", blue1 = "#2ac3de", blue2 = "#0db9d7", blue5 = "#89ddff", blue6 = "#b4f9f8", blue7 = "#394b70", magenta = "#bb9af7", magenta2 = "#ff007c", purple = "#9d7cd8", orange = "#ff9e64", yellow = "#e0af68", green = "#9ece6a", green1 = "#73daca", green2 = "#41a6b5", teal = "#1abc9c", red = "#f7768e", red1 = "#db4b4b", git = { change = "#6183bb", add = "#449dab", delete = "#914c54" }, } end M.moon = function() return { none = "NONE", bg_dark = "#1e2030", -- bg = "#222436", -- bg_highlight = "#2f334d", -- terminal_black = "#444a73", -- fg = "#c8d3f5", -- fg_dark = "#828bb8", -- fg_gutter = "#3b4261", dark3 = "#545c7e", comment = "#7a88cf", -- dark5 = "#737aa2", blue0 = "#3d59a1", blue = "#82aaff", -- cyan = "#86e1fc", -- blue1 = "#2ac3de", blue2 = "#0db9d7", blue5 = "#89ddff", blue6 = "#b4f9f8", blue7 = "#394b70", magenta = "#c099ff", -- magenta2 = "#ff007c", purple = "#c099ff", -- orange = "#ff966c", -- yellow = "#ffc777", -- green = "#c3e88d", -- green1 = "#73daca", green2 = "#41a6b5", teal = "#4fd6be", -- red = "#ff757f", -- red1 = "#db4b4b", git = { change = "#6183bb", add = "#449dab", delete = "#914c54" }, } end ---@return ColorScheme function M.setup(opts) opts = opts or {} local config = require("tokyonight.config") -- Color Palette ---@class ColorScheme local colors = M.default() if config.options.style == "moon" then colors = vim.tbl_deep_extend("force", colors, M.moon()) elseif config.options.style == "night" or config.is_day() then colors.bg = "#1a1b26" colors.bg_dark = "#16161e" end util.bg = colors.bg util.day_brightness = config.options.day_brightness colors.diff = { add = util.darken(colors.green2, 0.15), delete = util.darken(colors.red1, 0.15), change = util.darken(colors.blue7, 0.15), text = colors.blue7, } colors.gitSigns = { add = "#266d6a", change = "#536c9e", delete = "#b2555b", } colors.git.ignore = colors.dark3 colors.black = util.darken(colors.bg, 0.8, "#000000") colors.border_highlight = colors.blue0 colors.border = colors.black -- Popups and statusline always get a dark background colors.bg_popup = colors.bg_dark colors.bg_statusline = colors.bg_dark -- Sidebar and Floats are configurable colors.bg_sidebar = config.options.styles.sidebars == "transparent" and colors.none or config.options.styles.sidebars == "dark" and colors.bg_dark or colors.bg colors.bg_float = config.options.styles.floats == "transparent" and colors.none or config.options.styles.floats == "dark" and colors.bg_dark or colors.bg colors.bg_visual = util.darken(colors.blue0, 0.7) colors.bg_search = colors.blue0 colors.fg_sidebar = colors.fg_dark colors.error = colors.red1 colors.warning = colors.yellow colors.info = colors.blue2 colors.hint = colors.teal config.options.on_colors(colors) if opts.transform and config.is_day() then util.invert_colors(colors) end return colors end return M