From 4e2317da2b50a30fb64024d7d59f94881e27a609 Mon Sep 17 00:00:00 2001
From: aktersnurra <gustaf.rydholm@gmail.com>
Date: Fri, 29 Jul 2022 17:51:29 +0200
Subject: Update configuration api (#5)

* Refactor

* Fix opts

* Fix plugin typos

* Update readme

BREAKING CHANGE: Configuration api updated.
---
 lua/no-clown-fiesta/Alpha.lua      |   6 --
 lua/no-clown-fiesta/Git.lua        |  10 --
 lua/no-clown-fiesta/Hop.lua        |   8 --
 lua/no-clown-fiesta/LSP.lua        |  42 --------
 lua/no-clown-fiesta/Lir.lua        |   8 --
 lua/no-clown-fiesta/Neogit.lua     |  14 ---
 lua/no-clown-fiesta/NvimCmp.lua    |  10 --
 lua/no-clown-fiesta/NvimTree.lua   |  34 ------
 lua/no-clown-fiesta/StatusLine.lua |   9 --
 lua/no-clown-fiesta/Telescope.lua  |   8 --
 lua/no-clown-fiesta/Treesitter.lua |  56 ----------
 lua/no-clown-fiesta/Whichkey.lua   |   9 --
 lua/no-clown-fiesta/alpha.lua      |  10 ++
 lua/no-clown-fiesta/config.lua     |  24 -----
 lua/no-clown-fiesta/git.lua        |  14 +++
 lua/no-clown-fiesta/highlights.lua | 208 +++++++++++++++++++------------------
 lua/no-clown-fiesta/hop.lua        |  12 +++
 lua/no-clown-fiesta/init.lua       |  94 +++++++++--------
 lua/no-clown-fiesta/lir.lua        |  12 +++
 lua/no-clown-fiesta/lsp.lua        |  46 ++++++++
 lua/no-clown-fiesta/markdown.lua   |  56 +++++-----
 lua/no-clown-fiesta/neogit.lua     |  24 +++++
 lua/no-clown-fiesta/nvim-cmp.lua   |  14 +++
 lua/no-clown-fiesta/nvim-tree.lua  |  38 +++++++
 lua/no-clown-fiesta/settings.lua   |  17 +++
 lua/no-clown-fiesta/statusline.lua |  13 +++
 lua/no-clown-fiesta/telescope.lua  |  12 +++
 lua/no-clown-fiesta/treesitter.lua |  60 +++++++++++
 lua/no-clown-fiesta/whichkey.lua   |  13 +++
 29 files changed, 475 insertions(+), 406 deletions(-)
 delete mode 100644 lua/no-clown-fiesta/Alpha.lua
 delete mode 100644 lua/no-clown-fiesta/Git.lua
 delete mode 100644 lua/no-clown-fiesta/Hop.lua
 delete mode 100644 lua/no-clown-fiesta/LSP.lua
 delete mode 100644 lua/no-clown-fiesta/Lir.lua
 delete mode 100644 lua/no-clown-fiesta/Neogit.lua
 delete mode 100644 lua/no-clown-fiesta/NvimCmp.lua
 delete mode 100644 lua/no-clown-fiesta/NvimTree.lua
 delete mode 100644 lua/no-clown-fiesta/StatusLine.lua
 delete mode 100644 lua/no-clown-fiesta/Telescope.lua
 delete mode 100644 lua/no-clown-fiesta/Treesitter.lua
 delete mode 100644 lua/no-clown-fiesta/Whichkey.lua
 create mode 100644 lua/no-clown-fiesta/alpha.lua
 delete mode 100644 lua/no-clown-fiesta/config.lua
 create mode 100644 lua/no-clown-fiesta/git.lua
 create mode 100644 lua/no-clown-fiesta/hop.lua
 create mode 100644 lua/no-clown-fiesta/lir.lua
 create mode 100644 lua/no-clown-fiesta/lsp.lua
 create mode 100644 lua/no-clown-fiesta/neogit.lua
 create mode 100644 lua/no-clown-fiesta/nvim-cmp.lua
 create mode 100644 lua/no-clown-fiesta/nvim-tree.lua
 create mode 100644 lua/no-clown-fiesta/settings.lua
 create mode 100644 lua/no-clown-fiesta/statusline.lua
 create mode 100644 lua/no-clown-fiesta/telescope.lua
 create mode 100644 lua/no-clown-fiesta/treesitter.lua
 create mode 100644 lua/no-clown-fiesta/whichkey.lua

(limited to 'lua')

diff --git a/lua/no-clown-fiesta/Alpha.lua b/lua/no-clown-fiesta/Alpha.lua
deleted file mode 100644
index 920c62b..0000000
--- a/lua/no-clown-fiesta/Alpha.lua
+++ /dev/null
@@ -1,6 +0,0 @@
-local Alpha = {
-  AlphaHeader = { fg = C.gray_blue },
-  AlphaButtons = { fg = C.medium_gray },
-}
-
-return Alpha
diff --git a/lua/no-clown-fiesta/Git.lua b/lua/no-clown-fiesta/Git.lua
deleted file mode 100644
index b47ccf2..0000000
--- a/lua/no-clown-fiesta/Git.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-local Git = {
-  SignAdd = { fg = C.sign_add },
-  SignChange = { fg = C.sign_change },
-  SignDelete = { fg = C.sign_delete },
-  GitSignsAdd = { fg = C.sign_add },
-  GitSignsChange = { fg = C.sign_change },
-  GitSignsDelete = { fg = C.sign_delete },
-}
-
-return Git
diff --git a/lua/no-clown-fiesta/Hop.lua b/lua/no-clown-fiesta/Hop.lua
deleted file mode 100644
index 1e8d8cd..0000000
--- a/lua/no-clown-fiesta/Hop.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-local Hop = {
-  HopNextKey = { fg = C.cyan, style = "bold" },
-  HopNextKey1 = { fg = C.red, style = "bold" },
-  HopNextKey2 = { fg = C.gray_blue },
-  HopUnmatched = { fg = C.gray },
-}
-
-return Hop
diff --git a/lua/no-clown-fiesta/LSP.lua b/lua/no-clown-fiesta/LSP.lua
deleted file mode 100644
index 6ba9d91..0000000
--- a/lua/no-clown-fiesta/LSP.lua
+++ /dev/null
@@ -1,42 +0,0 @@
-local LSP = {
-  LspDiagnosticsDefaultError = { fg = C.error_red },
-  LspDiagnosticsDefaultWarning = { fg = C.warning_orange },
-  LspDiagnosticsDefaultInformation = { fg = C.info_yellow },
-  LspDiagnosticsDefaultInfo = { fg = C.info_yellow },
-  LspDiagnosticsDefaultHint = { fg = C.hint_blue },
-  LspDiagnosticsVirtualTextError = { fg = C.error_red },
-  LspDiagnosticsVirtualTextWarning = { fg = C.warning_orange },
-  LspDiagnosticsVirtualTextInformation = { fg = C.info_yellow },
-  LspDiagnosticsVirtualTextInfo = { fg = C.info_yellow },
-  LspDiagnosticsVirtualTextHint = { fg = C.hint_blue },
-  LspDiagnosticsFloatingError = { fg = C.error_red },
-  LspDiagnosticsFloatingWarning = { fg = C.warning_orange },
-  LspDiagnosticsFloatingInformation = { fg = C.info_yellow },
-  LspDiagnosticsFloatingInfo = { fg = C.info_yellow },
-  LspDiagnosticsFloatingHint = { fg = C.hint_blue },
-  DiagnosticSignError = { fg = C.error_red },
-  DiagnosticSignWarning = { fg = C.warning_orange },
-  DiagnosticSignInformation = { fg = C.info_yellow },
-  DiagnosticSignInfo = { fg = C.info_yellow },
-  DiagnosticSignHint = { fg = C.hint_blue },
-  LspDiagnosticsSignError = { fg = C.error_red },
-  LspDiagnosticsSignWarning = { fg = C.warning_orange },
-  LspDiagnosticsSignInformation = { fg = C.info_yellow },
-  LspDiagnosticsSignInfo = { fg = C.info_yellow },
-  LspDiagnosticsSignHint = { fg = C.hint_blue },
-  LspDiagnosticsError = { fg = C.error_red },
-  LspDiagnosticsWarning = { fg = C.warning_orange },
-  LspDiagnosticsInformation = { fg = C.info_yellow },
-  LspDiagnosticsInfo = { fg = C.info_yellow },
-  LspDiagnosticsHint = { fg = C.hint_blue },
-  LspDiagnosticsUnderlineError = { style = "underline" },
-  LspDiagnosticsUnderlineWarning = { style = "underline" },
-  LspDiagnosticsUnderlineInformation = { style = "underline" },
-  LspDiagnosticsUnderlineInfo = { style = "underline" },
-  LspDiagnosticsUnderlineHint = { style = "underline" },
-  LspReferenceRead = { bg = "#36383F" },
-  LspReferenceText = { bg = "#36383F" },
-  LspReferenceWrite = { bg = "#36383f" },
-}
-
-return LSP
diff --git a/lua/no-clown-fiesta/Lir.lua b/lua/no-clown-fiesta/Lir.lua
deleted file mode 100644
index 375f4f4..0000000
--- a/lua/no-clown-fiesta/Lir.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-local Lir = {
-  LirFloatNormal = { fg = C.fg, bg = C.alt_bg },
-  LirDir = { fg = C.white },
-  LirSymLink = { fg = C.cyan },
-  LirEmptyDirText = { fg = C.medium_gray },
-}
-
-return Lir
diff --git a/lua/no-clown-fiesta/Neogit.lua b/lua/no-clown-fiesta/Neogit.lua
deleted file mode 100644
index e5da9d1..0000000
--- a/lua/no-clown-fiesta/Neogit.lua
+++ /dev/null
@@ -1,14 +0,0 @@
-local Neogit = {
-  NeogitNotificationInfo = { fg = C.sign_add },
-  NeogitNotificationWarning = { fg = C.warning_orange },
-  NeogitNotificationError = { fg = C.sign_delete },
-  NeogitDiffAddHighlight = { fg = C.sign_add, bg = C.neogit_light_green },
-  NeogitDiffDeleteHighlight = { fg = C.sign_delete, bg = C.neogit_light_red },
-  NeogitDiffContextHighlight = { fg = C.fg, bg = C.accent },
-  NeogitHunkHeader = { fg = C.fg, bg = C.alt_bg },
-  NeogitHunkHeaderHighlight = { fg = C.fg, bg = C.gray },
-  NeogitDiffAdd = { fg = C.sign_add, bg = C.neogit_green },
-  NeogitDiffDelete = { fg = C.sign_delete, bg = C.neogit_red },
-}
-
-return Neogit
diff --git a/lua/no-clown-fiesta/NvimCmp.lua b/lua/no-clown-fiesta/NvimCmp.lua
deleted file mode 100644
index 9a0752c..0000000
--- a/lua/no-clown-fiesta/NvimCmp.lua
+++ /dev/null
@@ -1,10 +0,0 @@
-local NvimCmp = {
-  CmpItemAbbr = { fg = C.fg },
-  CmpItemAbbrDeprecated = { fg = C.orange },
-  CmpItemAbbrMatch = { fg = C.info_yellow },
-  CmpItemAbbrMatchFuzzy = { fg = C.info_yellow },
-  CmpItemMenu = { fg = C.medium_gray },
-  CmpItemKind = { fg = C.light_gray },
-}
-
-return NvimCmp
diff --git a/lua/no-clown-fiesta/NvimTree.lua b/lua/no-clown-fiesta/NvimTree.lua
deleted file mode 100644
index 7094dc5..0000000
--- a/lua/no-clown-fiesta/NvimTree.lua
+++ /dev/null
@@ -1,34 +0,0 @@
-local NvimTree = {
-  NvimTreeFolderIcon = { fg = C.white },
-  NvimTreeIndentMarker = { fg = C.alt_bg },
-  NvimTreeNormal = { fg = C.light_gray, bg = C.alt_bg },
-  NvimTreeVertSplit = { fg = C.alt_bg, bg = C.alt_bg },
-  NvimTreeFolderName = { fg = C.white },
-  NvimTreeOpenedFolderName = { fg = C.white, style = "bold,italic" },
-  NvimTreeEmptyFolderName = { fg = C.medium_gray, style = "italic" },
-  NvimTreeGitIgnored = { fg = C.medium_gray, style = "italic" },
-  NvimTreeImageFile = { fg = C.light_gray },
-  NvimTreeSpecialFile = { fg = C.orange },
-  NvimTreeEndOfBuffer = { fg = C.alt_bg },
-  NvimTreeCursorLine = { bg = C.accent },
-  NvimTreeGitignoreIcon = { fg = C.red },
-  NvimTreeGitStaged = { fg = C.cyan },
-  NvimTreeGitNew = { fg = C.cyan },
-  NvimTreeGitRenamed = { fg = C.cyan },
-  NvimTreeGitDeleted = { fg = C.sign_delete },
-  NvimTreeGitMerge = { fg = C.info_yellow },
-  NvimTreeGitDirty = { fg = C.info_yellow },
-  NvimTreeSymlink = { fg = C.cyan },
-  NvimTreeRootFolder = { fg = C.fg, style = "bold" },
-  NvimTreeExecFile = { fg = C.green },
-  NvimTreeStatusLine = { fg = C.alt_bg, bg = C.alt_bg },
-  NvimTreeStatusLineNC = { fg = C.alt_bg, bg = C.alt_bg },
-  NvimTreeStatusNC = { fg = C.alt_bg, bg = C.alt_bg },
-  NvimTreeLspDiagnosticsErr = { fg = C.error_red },
-  NvimTreeLspDiagnosticsError = { fg = C.error_red },
-  NvimTreeLspDiagnosticsHint = { fg = C.hint_blue },
-  NvimTreeLspDiagnosticsInformation = { fg = C.info_yellow },
-  NvimTreeLspDiagnosticsWarning = { fg = C.warning_orange },
-}
-
-return NvimTree
diff --git a/lua/no-clown-fiesta/StatusLine.lua b/lua/no-clown-fiesta/StatusLine.lua
deleted file mode 100644
index 07d96ef..0000000
--- a/lua/no-clown-fiesta/StatusLine.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-local StatusLine = {
-  StatusLine = { fg = C.bg, bg = C.gray },
-  StatusLineNC = { fg = C.bg, bg = C.gray },
-  StatusLineSeparator = { fg = C.bg },
-  StatusLineTerm = { fg = C.bg },
-  StatusLineTermNC = { fg = C.bg },
-}
-
-return StatusLine
diff --git a/lua/no-clown-fiesta/Telescope.lua b/lua/no-clown-fiesta/Telescope.lua
deleted file mode 100644
index 97e2925..0000000
--- a/lua/no-clown-fiesta/Telescope.lua
+++ /dev/null
@@ -1,8 +0,0 @@
-local Telescope = {
-  TelescopeNormal = { fg = C.fg, bg = C.bg },
-  TelescopeSelection = { fg = C.fg, bg = C.accent },
-  TelescopeMatching = { fg = C.info_yellow, style = "bold" },
-  TelescopeBorder = { fg = C.medium_gray, bg = C.bg },
-}
-
-return Telescope
diff --git a/lua/no-clown-fiesta/Treesitter.lua b/lua/no-clown-fiesta/Treesitter.lua
deleted file mode 100644
index f2b70e4..0000000
--- a/lua/no-clown-fiesta/Treesitter.lua
+++ /dev/null
@@ -1,56 +0,0 @@
-local Treesitter = {
-  TSComment = { fg = C.medium_gray, style = Config.italic_comments },
-  TSAnnotation = { fg = C.white },
-  TSAttribute = { fg = C.white },
-  TSConstructor = { fg = C.white },
-  TSType = { fg = C.white, style = Config.bold_type },
-  TSTypeBuiltin = { fg = C.white },
-  TSConditional = { fg = C.gray_blue },
-  TSException = { fg = C.red },
-  TSInclude = { fg = C.red },
-  TSKeyword = { fg = C.gray_blue, style = Config.italic_keywords },
-  TSKeywordFunction = { fg = C.gray_blue, style = Config.italic_keywords },
-  TSLabel = { fg = C.white },
-  TSNamespace = { fg = C.white },
-  TSRepeat = { fg = C.gray_blue },
-  TSConstant = { fg = C.white },
-  TSConstBuiltin = { fg = C.red },
-  TSFloat = { fg = C.red },
-  TSNumber = { fg = C.red },
-  TSBoolean = { fg = C.red },
-  TSCharacter = { fg = C.light_green },
-  TSError = { fg = C.error_red },
-  TSFunction = { fg = C.cyan, style = Config.italic_functions },
-  TSFuncBuiltin = { fg = C.cyan },
-  TSMethod = { fg = C.cyan },
-  TSConstMacro = { fg = C.cyan },
-  TSFuncMacro = { fg = C.cyan },
-  TSVariable = { fg = C.white, style = Config.italic_variables },
-  TSVariableBuiltin = { fg = C.white },
-  TSProperty = { fg = C.white },
-  TSOperator = { fg = C.white },
-  TSField = { fg = C.white },
-  TSParameter = { fg = C.white },
-  TSParameterReference = { fg = C.white },
-  TSSymbol = { fg = C.medium_gray },
-  TSText = { fg = C.fg },
-  TSPunctDelimiter = { fg = C.white },
-  TSTagDelimiter = { fg = C.white },
-  TSPunctBracket = { fg = C.white },
-  TSPunctSpecial = { fg = C.medium_gray },
-  TSString = { fg = C.medium_gray_blue },
-  TSStringRegex = { fg = C.medium_gray_blue },
-  TSStringEscape = { fg = C.medium_gray_blue },
-  TSTag = { fg = C.pale_purple },
-  TSEmphasis = { style = "italic" },
-  TSUnderline = { style = "underline" },
-  TSTitle = { fg = C.medium_gray },
-  TSLiteral = { fg = C.medium_gray },
-  TSURI = { fg = C.cyan, style = "underline" },
-  TSKeywordOperator = { fg = C.gray_blue },
-  TSStructure = { fg = C.purple_test },
-  TSStrong = { fg = C.medium_gray },
-  TSQueryLinterError = { fg = C.warning_orange },
-}
-
-return Treesitter
diff --git a/lua/no-clown-fiesta/Whichkey.lua b/lua/no-clown-fiesta/Whichkey.lua
deleted file mode 100644
index 4e41a21..0000000
--- a/lua/no-clown-fiesta/Whichkey.lua
+++ /dev/null
@@ -1,9 +0,0 @@
-local Whichkey = {
-  WhichKey = { fg = C.light_gray },
-  WhichKeySeperator = { fg = C.gray },
-  WhichKeyGroup = { fg = C.red },
-  WhichKeyDesc = { fg = C.light_gray },
-  WhichKeyFloat = { bg = C.bg },
-}
-
-return Whichkey
diff --git a/lua/no-clown-fiesta/alpha.lua b/lua/no-clown-fiesta/alpha.lua
new file mode 100644
index 0000000..167019a
--- /dev/null
+++ b/lua/no-clown-fiesta/alpha.lua
@@ -0,0 +1,10 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    AlphaHeader = { fg = palette.gray_blue },
+    AlphaButtons = { fg = palette.medium_gray },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/config.lua b/lua/no-clown-fiesta/config.lua
deleted file mode 100644
index 3f51bce..0000000
--- a/lua/no-clown-fiesta/config.lua
+++ /dev/null
@@ -1,24 +0,0 @@
-local config
-
-vim = vim or { g = {}, o = {} }
-
-local function opt(key, default)
-  if vim.g[key] == nil then
-    return default
-  end
-  if vim.g[key] == 0 then
-    return false
-  end
-  return vim.g[key]
-end
-
-config = {
-  transparent_background = opt("transparent_background", false) and "NONE" or C.bg,
-  italic_comments = opt("italic_comments", true) and "italic" or "NONE",
-  italic_keywords = opt("italic_keywords", false) and "italic" or "NONE",
-  italic_functions = opt("italic_functions", false) and "italic" or "NONE",
-  italic_variables = opt("italic_variables", false) and "italic" or "NONE",
-  bold_type = opt("bold_type", false) and "bold" or "NONE",
-}
-
-return config
diff --git a/lua/no-clown-fiesta/git.lua b/lua/no-clown-fiesta/git.lua
new file mode 100644
index 0000000..4c71de3
--- /dev/null
+++ b/lua/no-clown-fiesta/git.lua
@@ -0,0 +1,14 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    SignAdd = { fg = palette.sign_add },
+    SignChange = { fg = palette.sign_change },
+    SignDelete = { fg = palette.sign_delete },
+    GitSignsAdd = { fg = palette.sign_add },
+    GitSignsChange = { fg = palette.sign_change },
+    GitSignsDelete = { fg = palette.sign_delete },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/highlights.lua b/lua/no-clown-fiesta/highlights.lua
index a2cdd00..0085abc 100644
--- a/lua/no-clown-fiesta/highlights.lua
+++ b/lua/no-clown-fiesta/highlights.lua
@@ -1,101 +1,109 @@
-local highlights = {
-  Normal = { fg = C.fg, bg = Config.transparent_background },
-  SignColumn = { bg = C.bg },
-  MsgArea = { fg = C.fg, bg = C.bg },
-  ModeMsg = { fg = C.fg, bg = C.bg },
-  MsgSeparator = { fg = C.fg, bg = C.bg },
-  SpellBad = { fg = C.error_red, style = "underline" },
-  SpellCap = { fg = C.yellow, style = "underline" },
-  SpellLocal = { fg = C.green, style = "underline" },
-  SpellRare = { fg = C.purple, style = "underline" },
-  NormalNC = { fg = C.fg, bg = C.bg },
-  Pmenu = { fg = C.light_gray, bg = C.accent },
-  PmenuSel = { fg = C.blue, bg = C.alt_bg },
-  WildMenu = { fg = C.blue, bg = C.alt_bg },
-  CursorLineNr = { fg = C.light_gray, style = "bold" },
-  Comment = { fg = C.medium_gray, style = Config.italic_comments },
-  Folded = { fg = C.light_gray, bg = C.alt_bg },
-  FoldColumn = { fg = C.light_gray, bg = C.alt_bg },
-  LineNr = { fg = C.gray },
-  FloatBoder = { fg = C.gray, bg = C.alt_bg },
-  Whitespace = { fg = C.gray },
-  VertSplit = { fg = C.bg, bg = C.accent },
-  CursorLine = { bg = C.alt_bg },
-  CursorColumn = { bg = C.alt_bg },
-  ColorColumn = { bg = C.alt_bg },
-  NormalFloat = { bg = C.alt_bg },
-  Visual = { bg = C.gray },
-  VisualNOS = { bg = C.alt_bg },
-  WarningMsg = { fg = C.error_red, bg = C.bg },
-  DiffAdd = { fg = C.alt_bg, bg = C.sign_add },
-  DiffChange = { fg = C.alt_bg, bg = C.sign_change, style = "underline" },
-  DiffDelete = { fg = C.alt_bg, bg = C.sign_delete },
-  QuickFixLine = { bg = C.accent },
-  PmenuSbar = { bg = C.alt_bg },
-  PmenuThumb = { bg = C.light_gray },
-  MatchWord = { style = "underline" },
-  MatchParen = { fg = C.pale_purple, bg = C.bg, style = "underline" },
-  MatchWordCur = { style = "underline" },
-  MatchParenCur = { style = "underline" },
-  Cursor = { fg = C.cursor_fg, bg = C.cursor_bg },
-  lCursor = { fg = C.cursor_fg, bg = C.cursor_bg },
-  CursorIM = { fg = C.cursor_fg, bg = C.cursor_bg },
-  TermCursor = { fg = C.cursor_fg, bg = C.cursor_bg },
-  TermCursorNC = { fg = C.cursor_fg, bg = C.cursor_bg },
-  Conceal = { fg = C.accent },
-  Directory = { fg = C.blue },
-  SpecialKey = { fg = C.blue },
-  Title = { fg = C.blue },
-  ErrorMsg = { fg = C.error_red, bg = C.bg, style = "bold" },
-  Search = { fg = C.orange, bg = C.alt_bg },
-  IncSearch = { fg = C.cursor_fg, bg = C.alt_bg },
-  Substitute = { fg = C.alt_bg, bg = C.gray_blue },
-  MoreMsg = { fg = C.cyan },
-  Question = { fg = C.cyan },
-  EndOfBuffer = { fg = C.bg },
-  NonText = { fg = C.bg },
-  Variable = { fg = C.white, style = Config.italic_variables },
-  String = { fg = C.medium_gray_blue },
-  Character = { fg = C.light_green },
-  Constant = { fg = C.white },
-  Number = { fg = C.red },
-  Boolean = { fg = C.red },
-  Float = { fg = C.red },
-  Identifier = { fg = C.white },
-  Function = { fg = C.gray_blue, style = Config.italic_functions },
-  Operator = { fg = C.white },
-  Type = { fg = C.white },
-  StorageClass = { fg = C.gray_blue },
-  Structure = { fg = C.gray_blue },
-  Typedef = { fg = C.white },
-  Keyword = { fg = C.gray_blue, style = Config.italic_keywords },
-  Statement = { fg = C.gray_blue },
-  Conditional = { fg = C.gray_blue },
-  Repeat = { fg = C.gray_blue },
-  Label = { fg = C.white },
-  Exception = { fg = C.red },
-  Include = { fg = C.red },
-  PreProc = { fg = C.white },
-  Define = { fg = C.red },
-  Macro = { fg = C.cyan },
-  PreCondit = { fg = C.medium_gray },
-  Special = { fg = C.white },
-  SpecialChar = { fg = C.medium_gray_blue },
-  Tag = { fg = C.pale_purple },
-  Debug = { fg = C.red },
-  Delimiter = { fg = C.gray },
-  SpecialComment = { fg = C.medium_gray, style = Config.italic_comments },
-  Underlined = { style = "underline" },
-  Bold = { style = "bold" },
-  Italic = { style = "italic" },
-  Ignore = { fg = C.cyan, bg = C.bg, style = "bold" },
-  Todo = { fg = C.red, bg = C.bg, style = "bold" },
-  Error = { fg = C.error_red, bg = C.bg, style = "bold" },
-  TabLine = { fg = C.gray, bg = C.alt_bg },
-  TabLineSel = { fg = C.white, bg = C.alt_bg },
-  TabLineFill = { fg = C.white, bg = C.alt_bg },
-  WinSeparator = { fg = C.medium_gray, bg = C.bg },
-  DiagnosticFloatingError = { fg = C.error_red },
-}
+local M = {}
 
-return highlights
+function M.highlight(palette, opts)
+  return {
+    Normal = { fg = palette.fg, bg = opts.transparent_background },
+    SignColumn = { bg = palette.bg },
+    MsgArea = { fg = palette.fg, bg = palette.bg },
+    ModeMsg = { fg = palette.fg, bg = palette.bg },
+    MsgSeparator = { fg = palette.fg, bg = palette.bg },
+    SpellBad = { fg = palette.error_red, style = "underline" },
+    SpellCap = { fg = palette.yellow, style = "underline" },
+    SpellLocal = { fg = palette.green, style = "underline" },
+    SpellRare = { fg = palette.purple, style = "underline" },
+    NormalNC = { fg = palette.fg, bg = palette.bg },
+    Pmenu = { fg = palette.light_gray, bg = palette.accent },
+    PmenuSel = { fg = palette.blue, bg = palette.alt_bg },
+    WildMenu = { fg = palette.blue, bg = palette.alt_bg },
+    CursorLineNr = { fg = palette.light_gray, style = "bold" },
+    Comment = { fg = palette.medium_gray, style = opts.comments },
+    Folded = { fg = palette.light_gray, bg = palette.alt_bg },
+    FoldColumn = { fg = palette.light_gray, bg = palette.alt_bg },
+    LineNr = { fg = palette.gray },
+    FloatBoder = { fg = palette.gray, bg = palette.alt_bg },
+    Whitespace = { fg = palette.gray },
+    VertSplit = { fg = palette.bg, bg = palette.accent },
+    CursorLine = { bg = palette.alt_bg },
+    CursorColumn = { bg = palette.alt_bg },
+    ColorColumn = { bg = palette.alt_bg },
+    NormalFloat = { bg = palette.alt_bg },
+    Visual = { bg = palette.gray },
+    VisualNOS = { bg = palette.alt_bg },
+    WarningMsg = { fg = palette.error_red, bg = palette.bg },
+    DiffAdd = { fg = palette.alt_bg, bg = palette.sign_add },
+    DiffChange = {
+      fg = palette.alt_bg,
+      bg = palette.sign_change,
+      style = "underline",
+    },
+    DiffDelete = { fg = palette.alt_bg, bg = palette.sign_delete },
+    QuickFixLine = { bg = palette.accent },
+    PmenuSbar = { bg = palette.alt_bg },
+    PmenuThumb = { bg = palette.light_gray },
+    MatchWord = { style = "underline" },
+    MatchParen = { fg = palette.pale_purple, bg = palette.bg, style = "underline" },
+    MatchWordCur = { style = "underline" },
+    MatchParenCur = { style = "underline" },
+    Cursor = { fg = palette.cursor_fg, bg = palette.cursor_bg },
+    lCursor = { fg = palette.cursor_fg, bg = palette.cursor_bg },
+    CursorIM = { fg = palette.cursor_fg, bg = palette.cursor_bg },
+    TermCursor = { fg = palette.cursor_fg, bg = palette.cursor_bg },
+    TermCursorNC = { fg = palette.cursor_fg, bg = palette.cursor_bg },
+    Conceal = { fg = palette.accent },
+    Directory = { fg = palette.blue },
+    SpecialKey = { fg = palette.blue },
+    Title = { fg = palette.blue },
+    ErrorMsg = { fg = palette.error_red, bg = palette.bg, style = "bold" },
+    Search = { fg = palette.orange, bg = palette.alt_bg },
+    IncSearch = { fg = palette.cursor_fg, bg = palette.alt_bg },
+    Substitute = { fg = palette.alt_bg, bg = palette.gray_blue },
+    MoreMsg = { fg = palette.cyan },
+    Question = { fg = palette.cyan },
+    EndOfBuffer = { fg = palette.bg },
+    NonText = { fg = palette.bg },
+    Variable = { fg = palette.white, style = opts.variables },
+    String = { fg = palette.medium_gray_blue },
+    Character = { fg = palette.light_green },
+    Constant = { fg = palette.white },
+    Number = { fg = palette.red },
+    Boolean = { fg = palette.red },
+    Float = { fg = palette.red },
+    Identifier = { fg = palette.white },
+    Function = { fg = palette.gray_blue, style = opts.functions },
+    Operator = { fg = palette.white },
+    Type = { fg = palette.white },
+    StorageClass = { fg = palette.gray_blue },
+    Structure = { fg = palette.gray_blue },
+    Typedef = { fg = palette.white },
+    Keyword = { fg = palette.gray_blue, style = opts.keywords },
+    Statement = { fg = palette.gray_blue },
+    Conditional = { fg = palette.gray_blue },
+    Repeat = { fg = palette.gray_blue },
+    Label = { fg = palette.white },
+    Exception = { fg = palette.red },
+    Include = { fg = palette.red },
+    PreProc = { fg = palette.white },
+    Define = { fg = palette.red },
+    Macro = { fg = palette.cyan },
+    PreCondit = { fg = palette.medium_gray },
+    Special = { fg = palette.white },
+    SpecialChar = { fg = palette.medium_gray_blue },
+    Tag = { fg = palette.pale_purple },
+    Debug = { fg = palette.red },
+    Delimiter = { fg = palette.gray },
+    SpecialComment = { fg = palette.medium_gray, style = opts.comments },
+    Underlined = { style = "underline" },
+    Bold = { style = "bold" },
+    Italic = { style = "italic" },
+    Ignore = { fg = palette.cyan, bg = palette.bg, style = "bold" },
+    Todo = { fg = palette.red, bg = palette.bg, style = "bold" },
+    Error = { fg = palette.error_red, bg = palette.bg, style = "bold" },
+    TabLine = { fg = palette.gray, bg = palette.alt_bg },
+    TabLineSel = { fg = palette.white, bg = palette.alt_bg },
+    TabLineFill = { fg = palette.white, bg = palette.alt_bg },
+    WinSeparator = { fg = palette.medium_gray, bg = palette.bg },
+    DiagnosticFloatingError = { fg = palette.error_red },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/hop.lua b/lua/no-clown-fiesta/hop.lua
new file mode 100644
index 0000000..341c6ff
--- /dev/null
+++ b/lua/no-clown-fiesta/hop.lua
@@ -0,0 +1,12 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    HopNextKey = { fg = palette.cyan, style = "bold" },
+    HopNextKey1 = { fg = palette.red, style = "bold" },
+    HopNextKey2 = { fg = palette.gray_blue },
+    HopUnmatched = { fg = palette.gray },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/init.lua b/lua/no-clown-fiesta/init.lua
index b66b1c5..14a3f2a 100644
--- a/lua/no-clown-fiesta/init.lua
+++ b/lua/no-clown-fiesta/init.lua
@@ -1,47 +1,57 @@
-vim.api.nvim_command "hi clear"
-if vim.fn.exists "syntax_on" then
-  vim.api.nvim_command "syntax reset"
-end
-vim.o.background = "dark"
-vim.o.termguicolors = true
-vim.g.colors_name = "no-clown-fiesta"
+local M = {}
+
+function M.setup(opts)
+  local settings = require "no-clown-fiesta.settings"
+  if opts then
+    opts = settings.set(opts)
+  end
 
-local util = require "no-clown-fiesta.util"
-C = require "no-clown-fiesta.palette"
-Config = require "no-clown-fiesta.config"
+  vim.api.nvim_command "hi clear"
+  if vim.fn.exists "syntax_on" then
+    vim.api.nvim_command "syntax reset"
+  end
 
-local Alpha = require "no-clown-fiesta.Alpha"
-local Git = require "no-clown-fiesta.Git"
-local Hop = require "no-clown-fiesta.Hop"
-local highlights = require "no-clown-fiesta.highlights"
-local Lir = require "no-clown-fiesta.Lir"
-local LSP = require "no-clown-fiesta.LSP"
-local markdown = require "no-clown-fiesta.markdown"
-local Neogit = require "no-clown-fiesta.Neogit"
-local NvimTree = require "no-clown-fiesta.NvimTree"
-local NvimCmp = require "no-clown-fiesta.NvimCmp"
-local StatusLine = require "no-clown-fiesta.StatusLine"
-local Telescope = require "no-clown-fiesta.Telescope"
-local Treesitter = require "no-clown-fiesta.Treesitter"
-local Whichkey = require "no-clown-fiesta.Whichkey"
+  vim.o.background = "dark"
+  vim.o.termguicolors = true
+  vim.g.colors_name = "no-clown-fiesta"
 
-local skeletons = {
-  Alpha,
-  Git,
-  Hop,
-  highlights,
-  Lir,
-  LSP,
-  markdown,
-  Neogit,
-  NvimTree,
-  NvimCmp,
-  StatusLine,
-  Telescope,
-  Treesitter,
-  Whichkey,
-}
+  local util = require "no-clown-fiesta.util"
+  local palette = require "no-clown-fiesta.palette"
+  local alpha = require("no-clown-fiesta.alpha").highlight(palette)
+  local git = require("no-clown-fiesta.git").highlight(palette)
+  local hop = require("no-clown-fiesta.hop").highlight(palette)
+  local highlights = require("no-clown-fiesta.highlights").highlight(palette, opts)
+  local lir = require("no-clown-fiesta.lir").highlight(palette)
+  local lsp = require("no-clown-fiesta.lsp").highlight(palette)
+  local markdown = require("no-clown-fiesta.markdown").highlight(palette)
+  local neogit = require("no-clown-fiesta.neogit").highlight(palette)
+  local nvimtree = require("no-clown-fiesta.nvim-tree").highlight(palette)
+  local nvimcmp = require("no-clown-fiesta.nvim-cmp").highlight(palette)
+  local statusline = require("no-clown-fiesta.statusline").highlight(palette)
+  local telescope = require("no-clown-fiesta.telescope").highlight(palette)
+  local treesitter = require("no-clown-fiesta.treesitter").highlight(palette, opts)
+  local whichkey = require("no-clown-fiesta.whichkey").highlight(palette)
 
-for _, skeleton in ipairs(skeletons) do
-  util.initialise(skeleton)
+  local skeletons = {
+    alpha,
+    git,
+    hop,
+    highlights,
+    lir,
+    lsp,
+    markdown,
+    neogit,
+    nvimtree,
+    nvimcmp,
+    statusline,
+    telescope,
+    treesitter,
+    whichkey,
+  }
+
+  for _, skeleton in ipairs(skeletons) do
+    util.initialise(skeleton)
+  end
 end
+
+return M
diff --git a/lua/no-clown-fiesta/lir.lua b/lua/no-clown-fiesta/lir.lua
new file mode 100644
index 0000000..47071b7
--- /dev/null
+++ b/lua/no-clown-fiesta/lir.lua
@@ -0,0 +1,12 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    LirFloatNormal = { fg = palette.fg, bg = palette.alt_bg },
+    LirDir = { fg = palette.white },
+    LirSymLink = { fg = palette.cyan },
+    LirEmptyDirText = { fg = palette.medium_gray },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/lsp.lua b/lua/no-clown-fiesta/lsp.lua
new file mode 100644
index 0000000..ba3f5e5
--- /dev/null
+++ b/lua/no-clown-fiesta/lsp.lua
@@ -0,0 +1,46 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    LspDiagnosticsDefaultError = { fg = palette.error_red },
+    LspDiagnosticsDefaultWarning = { fg = palette.warning_orange },
+    LspDiagnosticsDefaultInformation = { fg = palette.info_yellow },
+    LspDiagnosticsDefaultInfo = { fg = palette.info_yellow },
+    LspDiagnosticsDefaultHint = { fg = palette.hint_blue },
+    LspDiagnosticsVirtualTextError = { fg = palette.error_red },
+    LspDiagnosticsVirtualTextWarning = { fg = palette.warning_orange },
+    LspDiagnosticsVirtualTextInformation = { fg = palette.info_yellow },
+    LspDiagnosticsVirtualTextInfo = { fg = palette.info_yellow },
+    LspDiagnosticsVirtualTextHint = { fg = palette.hint_blue },
+    LspDiagnosticsFloatingError = { fg = palette.error_red },
+    LspDiagnosticsFloatingWarning = { fg = palette.warning_orange },
+    LspDiagnosticsFloatingInformation = { fg = palette.info_yellow },
+    LspDiagnosticsFloatingInfo = { fg = palette.info_yellow },
+    LspDiagnosticsFloatingHint = { fg = palette.hint_blue },
+    DiagnosticSignError = { fg = palette.error_red },
+    DiagnosticSignWarning = { fg = palette.warning_orange },
+    DiagnosticSignInformation = { fg = palette.info_yellow },
+    DiagnosticSignInfo = { fg = palette.info_yellow },
+    DiagnosticSignHint = { fg = palette.hint_blue },
+    LspDiagnosticsSignError = { fg = palette.error_red },
+    LspDiagnosticsSignWarning = { fg = palette.warning_orange },
+    LspDiagnosticsSignInformation = { fg = palette.info_yellow },
+    LspDiagnosticsSignInfo = { fg = palette.info_yellow },
+    LspDiagnosticsSignHint = { fg = palette.hint_blue },
+    LspDiagnosticsError = { fg = palette.error_red },
+    LspDiagnosticsWarning = { fg = palette.warning_orange },
+    LspDiagnosticsInformation = { fg = palette.info_yellow },
+    LspDiagnosticsInfo = { fg = palette.info_yellow },
+    LspDiagnosticsHint = { fg = palette.hint_blue },
+    LspDiagnosticsUnderlineError = { style = "underline" },
+    LspDiagnosticsUnderlineWarning = { style = "underline" },
+    LspDiagnosticsUnderlineInformation = { style = "underline" },
+    LspDiagnosticsUnderlineInfo = { style = "underline" },
+    LspDiagnosticsUnderlineHint = { style = "underline" },
+    LspReferenceRead = { bg = "#36383F" },
+    LspReferenceText = { bg = "#36383F" },
+    LspReferenceWrite = { bg = "#36383f" },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/markdown.lua b/lua/no-clown-fiesta/markdown.lua
index 2b83e05..28ece3b 100644
--- a/lua/no-clown-fiesta/markdown.lua
+++ b/lua/no-clown-fiesta/markdown.lua
@@ -1,27 +1,31 @@
-local markdown = {
-  markdownBlockquote = { fg = C.accent },
-  markdownBold = { fg = C.yellow, style = "bold" },
-  markdownCode = { fg = C.green },
-  markdownCodeBlock = { fg = C.green },
-  markdownCodeDelimiter = { fg = C.green },
-  markdownH1 = { fg = C.blue },
-  markdownH2 = { fg = C.blue },
-  markdownH3 = { fg = C.blue },
-  markdownH4 = { fg = C.blue },
-  markdownH5 = { fg = C.blue },
-  markdownH6 = { fg = C.blue },
-  markdownHeadingDelimiter = { fg = C.red },
-  markdownHeadingRule = { fg = C.accent },
-  markdownId = { fg = C.purple },
-  markdownIdDeclaration = { fg = C.blue },
-  markdownIdDelimiter = { fg = C.light_gray },
-  markdownLinkDelimiter = { fg = C.light_gray },
-  markdownItalic = { style = "italic" },
-  markdownLinkText = { fg = C.blue },
-  markdownListMarker = { fg = C.red },
-  markdownOrderedListMarker = { fg = C.red },
-  markdownRule = { fg = C.accent },
-  markdownUrl = { fg = C.cyan, style = "underline" },
-}
+local M = {}
 
-return markdown
+function M.highlight(palette)
+  return {
+    markdownBlockquote = { fg = palette.accent },
+    markdownBold = { fg = palette.yellow, style = "bold" },
+    markdownCode = { fg = palette.green },
+    markdownCodeBlock = { fg = palette.green },
+    markdownCodeDelimiter = { fg = palette.green },
+    markdownH1 = { fg = palette.blue },
+    markdownH2 = { fg = palette.blue },
+    markdownH3 = { fg = palette.blue },
+    markdownH4 = { fg = palette.blue },
+    markdownH5 = { fg = palette.blue },
+    markdownH6 = { fg = palette.blue },
+    markdownHeadingDelimiter = { fg = palette.red },
+    markdownHeadingRule = { fg = palette.accent },
+    markdownId = { fg = palette.purple },
+    markdownIdDeclaration = { fg = palette.blue },
+    markdownIdDelimiter = { fg = palette.light_gray },
+    markdownLinkDelimiter = { fg = palette.light_gray },
+    markdownItalic = { style = "italic" },
+    markdownLinkText = { fg = palette.blue },
+    markdownListMarker = { fg = palette.red },
+    markdownOrderedListMarker = { fg = palette.red },
+    markdownRule = { fg = palette.accent },
+    markdownUrl = { fg = palette.cyan, style = "underline" },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/neogit.lua b/lua/no-clown-fiesta/neogit.lua
new file mode 100644
index 0000000..40917c1
--- /dev/null
+++ b/lua/no-clown-fiesta/neogit.lua
@@ -0,0 +1,24 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    NeogitNotificationInfo = { fg = palette.sign_add },
+    NeogitNotificationWarning = { fg = palette.warning_orange },
+    NeogitNotificationError = { fg = palette.sign_delete },
+    NeogitDiffAddHighlight = {
+      fg = palette.sign_add,
+      bg = palette.neogit_light_green,
+    },
+    NeogitDiffDeleteHighlight = {
+      fg = palette.sign_delete,
+      bg = palette.neogit_light_red,
+    },
+    NeogitDiffpaletteontextHighlight = { fg = palette.fg, bg = palette.accent },
+    NeogitHunkHeader = { fg = palette.fg, bg = palette.alt_bg },
+    NeogitHunkHeaderHighlight = { fg = palette.fg, bg = palette.gray },
+    NeogitDiffAdd = { fg = palette.sign_add, bg = palette.neogit_green },
+    NeogitDiffDelete = { fg = palette.sign_delete, bg = palette.neogit_red },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/nvim-cmp.lua b/lua/no-clown-fiesta/nvim-cmp.lua
new file mode 100644
index 0000000..c2abfb6
--- /dev/null
+++ b/lua/no-clown-fiesta/nvim-cmp.lua
@@ -0,0 +1,14 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    CmpItemAbbr = { fg = palette.fg },
+    CmpItemAbbrDeprecated = { fg = palette.orange },
+    CmpItemAbbrMatch = { fg = palette.info_yellow },
+    CmpItemAbbrMatchFuzzy = { fg = palette.info_yellow },
+    CmpItemMenu = { fg = palette.medium_gray },
+    CmpItemKind = { fg = palette.light_gray },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/nvim-tree.lua b/lua/no-clown-fiesta/nvim-tree.lua
new file mode 100644
index 0000000..ffe7897
--- /dev/null
+++ b/lua/no-clown-fiesta/nvim-tree.lua
@@ -0,0 +1,38 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    NvimTreeFolderIcon = { fg = palette.white },
+    NvimTreeIndentMarker = { fg = palette.alt_bg },
+    NvimTreeNormal = { fg = palette.light_gray, bg = palette.alt_bg },
+    NvimTreeVertSplit = { fg = palette.alt_bg, bg = palette.alt_bg },
+    NvimTreeFolderName = { fg = palette.white },
+    NvimTreeOpenedFolderName = { fg = palette.white, style = "bold" },
+    NvimTreeEmptyFolderName = { fg = palette.medium_gray },
+    NvimTreeGitIgnored = { fg = palette.medium_gray },
+    NvimTreeImageFile = { fg = palette.light_gray },
+    NvimTreeSpecialFile = { fg = palette.orange },
+    NvimTreeEndOfBuffer = { fg = palette.alt_bg },
+    NvimTreeCursorLine = { bg = palette.accent },
+    NvimTreeGitignoreIcon = { fg = palette.red },
+    NvimTreeGitStaged = { fg = palette.cyan },
+    NvimTreeGitNew = { fg = palette.cyan },
+    NvimTreeGitRenamed = { fg = palette.cyan },
+    NvimTreeGitDeleted = { fg = palette.sign_delete },
+    NvimTreeGitMerge = { fg = palette.info_yellow },
+    NvimTreeGitDirty = { fg = palette.info_yellow },
+    NvimTreeSymlink = { fg = palette.cyan },
+    NvimTreeRootFolder = { fg = palette.fg, style = "bold" },
+    NvimTreeExecFile = { fg = palette.green },
+    NvimTreeStatusLine = { fg = palette.alt_bg, bg = palette.alt_bg },
+    NvimTreeStatusLineNC = { fg = palette.alt_bg, bg = palette.alt_bg },
+    NvimTreeStatusNC = { fg = palette.alt_bg, bg = palette.alt_bg },
+    NvimTreeLspDiagnosticsErr = { fg = palette.error_red },
+    NvimTreeLspDiagnosticsError = { fg = palette.error_red },
+    NvimTreeLspDiagnosticsHint = { fg = palette.hint_blue },
+    NvimTreeLspDiagnosticsInformation = { fg = palette.info_yellow },
+    NvimTreeLspDiagnosticsWarning = { fg = palette.warning_orange },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/settings.lua b/lua/no-clown-fiesta/settings.lua
new file mode 100644
index 0000000..e41380c
--- /dev/null
+++ b/lua/no-clown-fiesta/settings.lua
@@ -0,0 +1,17 @@
+local M = {}
+local palette = require "no-clown-fiesta.palette"
+
+local default = {
+  transparent_background = palette.bg,
+  comments = "NONE",
+  keywords = "NONE",
+  functions = "NONE",
+  variables = "NONE",
+  type = "NONE",
+}
+
+function M.set(opts)
+  return vim.tbl_extend("force", default, opts)
+end
+
+return M
diff --git a/lua/no-clown-fiesta/statusline.lua b/lua/no-clown-fiesta/statusline.lua
new file mode 100644
index 0000000..0ca1d1d
--- /dev/null
+++ b/lua/no-clown-fiesta/statusline.lua
@@ -0,0 +1,13 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    StatusLine = { fg = palette.bg, bg = palette.gray },
+    StatusLineNC = { fg = palette.bg, bg = palette.gray },
+    StatusLineSeparator = { fg = palette.bg },
+    StatusLineTerm = { fg = palette.bg },
+    StatusLineTermNC = { fg = palette.bg },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/telescope.lua b/lua/no-clown-fiesta/telescope.lua
new file mode 100644
index 0000000..d81da87
--- /dev/null
+++ b/lua/no-clown-fiesta/telescope.lua
@@ -0,0 +1,12 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    TelescopeNormal = { fg = palette.fg, bg = palette.bg },
+    TelescopeSelection = { fg = palette.fg, bg = palette.accent },
+    TelescopeMatching = { fg = palette.info_yellow, style = "bold" },
+    TelescopeBorder = { fg = palette.medium_gray, bg = palette.bg },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/treesitter.lua b/lua/no-clown-fiesta/treesitter.lua
new file mode 100644
index 0000000..665ac8a
--- /dev/null
+++ b/lua/no-clown-fiesta/treesitter.lua
@@ -0,0 +1,60 @@
+local M = {}
+
+function M.highlight(palette, opts)
+  return {
+    TSComment = { fg = palette.medium_gray, style = opts.comments },
+    TSAnnotation = { fg = palette.white },
+    TSAttribute = { fg = palette.white },
+    TSConstructor = { fg = palette.white },
+    TSType = { fg = palette.white, style = opts.type },
+    TSTypeBuiltin = { fg = palette.white },
+    TSConditional = { fg = palette.gray_blue },
+    TSException = { fg = palette.red },
+    TSInclude = { fg = palette.red },
+    TSKeyword = { fg = palette.gray_blue, style = opts.keywords },
+    TSKeywordFunction = { fg = palette.gray_blue, style = opts.keywords },
+    TSLabel = { fg = palette.white },
+    TSNamespace = { fg = palette.white },
+    TSRepeat = { fg = palette.gray_blue },
+    TSConstant = { fg = palette.white },
+    TSConstBuiltin = { fg = palette.red },
+    TSFloat = { fg = palette.red },
+    TSNumber = { fg = palette.red },
+    TSBoolean = { fg = palette.red },
+    TSCharacter = { fg = palette.light_green },
+    TSError = { fg = palette.error_red },
+    TSFunction = { fg = palette.cyan, style = opts.functions },
+    TSFuncBuiltin = { fg = palette.cyan },
+    TSMethod = { fg = palette.cyan },
+    TSConstMacro = { fg = palette.cyan },
+    TSFuncMacro = { fg = palette.cyan },
+    TSVariable = { fg = palette.white, style = opts.variables },
+    TSVariableBuiltin = { fg = palette.white },
+    TSProperty = { fg = palette.white },
+    TSOperator = { fg = palette.white },
+    TSField = { fg = palette.white },
+    TSParameter = { fg = palette.white },
+    TSParameterReference = { fg = palette.white },
+    TSSymbol = { fg = palette.medium_gray },
+    TSText = { fg = palette.fg },
+    TSPunctDelimiter = { fg = palette.white },
+    TSTagDelimiter = { fg = palette.white },
+    TSPunctBracket = { fg = palette.white },
+    TSPunctSpecial = { fg = palette.medium_gray },
+    TSString = { fg = palette.medium_gray_blue },
+    TSStringRegex = { fg = palette.medium_gray_blue },
+    TSStringEscape = { fg = palette.medium_gray_blue },
+    TSTag = { fg = palette.pale_purple },
+    TSEmphasis = { style = "italic" },
+    TSUnderline = { style = "underline" },
+    TSTitle = { fg = palette.medium_gray },
+    TSLiteral = { fg = palette.medium_gray },
+    TSURI = { fg = palette.cyan, style = "underline" },
+    TSKeywordOperator = { fg = palette.gray_blue },
+    TSStructure = { fg = palette.purple_test },
+    TSStrong = { fg = palette.medium_gray },
+    TSQueryLinterError = { fg = palette.warning_orange },
+  }
+end
+
+return M
diff --git a/lua/no-clown-fiesta/whichkey.lua b/lua/no-clown-fiesta/whichkey.lua
new file mode 100644
index 0000000..66ac153
--- /dev/null
+++ b/lua/no-clown-fiesta/whichkey.lua
@@ -0,0 +1,13 @@
+local M = {}
+
+function M.highlight(palette)
+  return {
+    WhichKey = { fg = palette.light_gray },
+    WhichKeySeperator = { fg = palette.gray },
+    WhichKeyGroup = { fg = palette.red },
+    WhichKeyDesc = { fg = palette.light_gray },
+    WhichKeyFloat = { bg = palette.bg },
+  }
+end
+
+return M
-- 
cgit v1.2.3-70-g09d2