function imgui.theme(color, chroma_multiplier, accurate_shades)
local vec2, vec4 = imgui.ImVec2, imgui.ImVec4
imgui.SwitchContext()
local style = imgui.GetStyle()
local colors = style.Colors
local flags = imgui.Col
do -- style
--==[ STYLE ]==--
imgui.GetStyle().WindowPadding = imgui.ImVec2(5, 5)
imgui.GetStyle().FramePadding = imgui.ImVec2(5, 5)
imgui.GetStyle().ItemSpacing = imgui.ImVec2(5, 5)
imgui.GetStyle().ItemInnerSpacing = imgui.ImVec2(2, 2)
imgui.GetStyle().TouchExtraPadding = imgui.ImVec2(0, 0)
imgui.GetStyle().IndentSpacing = 0
imgui.GetStyle().ScrollbarSize = 10
imgui.GetStyle().GrabMinSize = 10
--==[ ROUNDING ]==--
imgui.GetStyle().WindowRounding = 8
imgui.GetStyle().ChildRounding = 8
imgui.GetStyle().FrameRounding = 5
imgui.GetStyle().PopupRounding = 8
imgui.GetStyle().ScrollbarRounding = 8
imgui.GetStyle().GrabRounding = 8
imgui.GetStyle().TabRounding = 8
--==[ ALIGN ]==--
imgui.GetStyle().WindowTitleAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().ButtonTextAlign = imgui.ImVec2(0.5, 0.5)
imgui.GetStyle().SelectableTextAlign = imgui.ImVec2(0.5, 0.5)
end
do -- colors
local function to_vec4(u32)
local a = bit.band(bit.rshift(u32, 24), 0xFF) / 0xFF
local r = bit.band(bit.rshift(u32, 16), 0xFF) / 0xFF
local g = bit.band(bit.rshift(u32, 8), 0xFF) / 0xFF
local b = bit.band(u32, 0xFF) / 0xFF
return imgui.ImVec4(r, g, b, a)
end
local monet = require("MoonMonet")
local palette = monet.buildColors(color, chroma_multiplier, accurate_shades)
colors[flags.Text] = to_vec4(palette.neutral1.color_50)
colors[flags.WindowBg] = to_vec4(palette.accent1.color_900)
colors[flags.ChildBg] = to_vec4(palette.accent2.color_800)
colors[flags.PopupBg] = to_vec4(palette.accent2.color_800)
colors[flags.Border] = to_vec4(palette.neutral1.color_100)
colors[flags.BorderShadow] = to_vec4(palette.neutral2.color_900)
colors[flags.FrameBg] = to_vec4(palette.accent1.color_800)
colors[flags.FrameBgHovered] = to_vec4(palette.accent1.color_700)
colors[flags.FrameBgActive] = to_vec4(palette.accent1.color_600)
colors[flags.TitleBgActive] = to_vec4(palette.accent1.color_800)
colors[flags.ScrollbarBg] = to_vec4(palette.accent1.color_800)
colors[flags.ScrollbarGrab] = to_vec4(palette.accent2.color_600)
colors[flags.ScrollbarGrabHovered] = to_vec4(palette.accent2.color_500)
colors[flags.ScrollbarGrabActive] = to_vec4(palette.accent2.color_400)
colors[flags.CheckMark] = to_vec4(palette.neutral1.color_50)
colors[flags.SliderGrab] = to_vec4(palette.accent2.color_500)
colors[flags.SliderGrabActive] = to_vec4(palette.accent2.color_400)
colors[flags.Button] = to_vec4(palette.accent1.color_500)
colors[flags.ButtonHovered] = to_vec4(palette.accent1.color_400)
colors[flags.ButtonActive] = to_vec4(palette.accent1.color_300)
colors[flags.Header] = to_vec4(palette.accent1.color_800)
colors[flags.HeaderHovered] = to_vec4(palette.accent1.color_700)
colors[flags.HeaderActive] = to_vec4(palette.accent1.color_600)
colors[flags.Separator] = to_vec4(palette.accent2.color_200)
colors[flags.SeparatorHovered] = to_vec4(palette.accent2.color_100)
colors[flags.SeparatorActive] = to_vec4(palette.accent2.color_50)
colors[flags.ResizeGrip] = to_vec4(palette.accent2.color_900)
colors[flags.ResizeGripHovered] = to_vec4(palette.accent2.color_800)
colors[flags.ResizeGripActive] = to_vec4(palette.accent2.color_700)
colors[flags.Tab] = to_vec4(palette.accent1.color_700)
colors[flags.TabHovered] = to_vec4(palette.accent1.color_600)
colors[flags.TabActive] = to_vec4(palette.accent1.color_500)
colors[flags.PlotLines] = to_vec4(palette.accent3.color_300)
colors[flags.PlotLinesHovered] = to_vec4(palette.accent3.color_50)
colors[flags.PlotHistogram] = to_vec4(palette.accent3.color_300)
colors[flags.PlotHistogramHovered] = to_vec4(palette.accent3.color_50)
colors[flags.DragDropTarget] = to_vec4(palette.accent3.color_700)
end
end