Skip to content
Closed
133 changes: 133 additions & 0 deletions colors/poimandres-storm.lua
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
-- Poimandres Storm (Neovim)
-- Based on Poimandres Storm by Oliver Cederborg

vim.cmd 'highlight clear'
if vim.fn.exists 'syntax_on' then
vim.cmd 'syntax reset'
end

vim.o.termguicolors = true
vim.g.colors_name = 'poimandres-storm'

-- Expanded palette
local colors = {
-- Accents
yellow = '#FFFAC2',

teal1 = '#5DE4C7',
teal2 = '#5FB3A1',
teal3 = '#42675A',

blue1 = '#89DDFF',
blue2 = '#ADD7FF',
blue3 = '#91B4D5',
blue4 = '#7390AA',

pink1 = '#FAE4FC',
pink2 = '#FCC5E9',
pink3 = '#D0679D',

-- Neutrals
blueGray1 = '#A6ACCD',
blueGray2 = '#767C9D',
blueGray3 = '#506477',

-- Background layers
bg = '#252B37', -- main editor
bg_alt = '#1B1E28', -- floats / panels
bg_dark = '#171922', -- deepest contrast

-- Text
fg = '#E4F0FB',
white = '#FFFFFF',

none = 'NONE',
}

local function hi(group, opts)
vim.api.nvim_set_hl(0, group, opts)
end

-- ======================
-- Core UI
-- ======================
hi('Normal', { fg = colors.fg, bg = colors.bg })
hi('NormalFloat', { fg = colors.fg, bg = colors.bg_alt })
hi('FloatBorder', { fg = colors.blueGray3, bg = colors.bg_alt })

hi('Cursor', { fg = colors.bg, bg = colors.blueGray1 })
hi('CursorLine', { bg = colors.bg_alt })
hi('CursorLineNr', { fg = colors.blue1, bold = true })
hi('LineNr', { fg = colors.blueGray3 })

hi('Visual', { bg = colors.blueGray3 })
hi('Search', { fg = colors.bg, bg = colors.yellow })
hi('IncSearch', { fg = colors.bg, bg = colors.pink2 })

hi('StatusLine', { fg = colors.fg, bg = colors.bg_alt })
hi('StatusLineNC', { fg = colors.blueGray2, bg = colors.bg_alt })

hi('WinSeparator', { fg = colors.bg_alt })
hi('VertSplit', { fg = colors.bg_alt })

-- ======================
-- Menus
-- ======================
hi('Pmenu', { fg = colors.fg, bg = colors.bg_alt })
hi('PmenuSel', { fg = colors.bg, bg = colors.blue1 })
hi('PmenuSbar', { bg = colors.bg_dark })
hi('PmenuThumb', { bg = colors.blueGray3 })

-- ======================
-- Syntax
-- ======================
hi('Comment', { fg = colors.blueGray3, italic = true })

hi('Constant', { fg = colors.pink2 })
hi('String', { fg = colors.teal1 })
hi('Character', { fg = colors.teal1 })
hi('Number', { fg = colors.pink2 })
hi('Boolean', { fg = colors.pink3 })

hi('Identifier', { fg = colors.blue1 })
hi('Function', { fg = colors.blue1 })

hi('Statement', { fg = colors.pink3 })
hi('Keyword', { fg = colors.pink3 })
hi('Conditional', { fg = colors.pink3 })
hi('Repeat', { fg = colors.pink3 })
hi('Exception', { fg = colors.pink3 })

hi('Type', { fg = colors.yellow })
hi('StorageClass', { fg = colors.yellow })
hi('Structure', { fg = colors.yellow })

hi('Operator', { fg = colors.teal2 })
hi('Delimiter', { fg = colors.blueGray2 })

-- ======================
-- Diagnostics (LSP)
-- ======================
hi('DiagnosticError', { fg = colors.pink3 })
hi('DiagnosticWarn', { fg = colors.yellow })
hi('DiagnosticInfo', { fg = colors.blue2 })
hi('DiagnosticHint', { fg = colors.teal2 })

hi('DiagnosticVirtualTextError', { fg = colors.pink3, bg = colors.bg_dark })
hi('DiagnosticVirtualTextWarn', { fg = colors.yellow, bg = colors.bg_dark })
hi('DiagnosticVirtualTextInfo', { fg = colors.blue2, bg = colors.bg_dark })
hi('DiagnosticVirtualTextHint', { fg = colors.teal2, bg = colors.bg_dark })

-- ======================
-- Git / Diff
-- ======================
hi('DiffAdd', { fg = colors.teal1 })
hi('DiffChange', { fg = colors.yellow })
hi('DiffDelete', { fg = colors.pink3 })

-- ======================
-- Tabs
-- ======================
hi('TabLine', { fg = colors.blueGray2, bg = colors.bg_alt })
hi('TabLineSel', { fg = colors.fg, bg = colors.bg_alt, bold = true })
hi('TabLineFill', { bg = colors.bg_alt })
Loading
Loading