local C = require("color")

local animations = {
	{ leaf = "global", enabled = true, speed = 10, bezier = "default" },
	{ leaf = "border", enabled = true, speed = 10, bezier = "default" },
	{ leaf = "windows", enabled = true, speed = 3, bezier = "default" },
	{ leaf = "windowsIn", enabled = true, speed = 3, bezier = "default" },
	{ leaf = "windowsOut", enabled = true, speed = 3, bezier = "default" },
	{ leaf = "windowsMove", enabled = true, speed = 1, bezier = "default" },
	{ leaf = "fadeOut", enabled = true, speed = 3, bezier = "default" },
	{ leaf = "fadeIn", enabled = true, speed = 4, bezier = "default" },
	{ leaf = "workspaces", enabled = true, speed = 4, bezier = "default" },
	{ leaf = "layers", enabled = true, speed = 5, bezier = "default" },
	{ leaf = "fadeLayers", enabled = true, speed = 1, bezier = "default" },
	{ leaf = "fadePopups", enabled = true, speed = 1, bezier = "default" },
}

local curves = {
	{ name = "wind", config = { type = "bezier", points = { { 0.25, 0.1 }, { 0.25, 1 } } } },
	{ name = "easeOutQuint", config = { type = "bezier", points = { { 0.23, 1 }, { 0.32, 1 } } } },
	{ name = "easeInOutCubic", config = { type = "bezier", points = { { 0.65, 0.05 }, { 0.36, 1 } } } },
	{ name = "linear", config = { type = "bezier", points = { { 0, 0 }, { 1, 1 } } } },
	{ name = "almostLinear", config = { type = "bezier", points = { { 0.5, 0.5 }, { 0.75, 1 } } } },
	{ name = "quick", config = { type = "bezier", points = { { 0.15, 0 }, { 0.1, 1 } } } },
	{ name = "easy", config = { type = "spring", mass = 1, stiffness = 71.2633, dampening = 15.8273644 } },
}

hl.config({
	general = {
		gaps_in = 3,
		gaps_out = 6,

		border_size = 2,

		col = {
			active_border = { colors = { C.colors.vivian1, C.colors.ado }, angle = 90 },
			inactive_border = { colors = { C.colors.pink, C.colors.vivian2 }, angle = 60 },
		},

		-- Set to true to enable resizing windows by clicking and dragging on borders and gaps
		resize_on_border = true,

		-- Please see https://wiki.hypr.land/Configuring/Advanced-and-Cool/Tearing/ before you turn this on
		allow_tearing = false,

		layout = "dwindle",
	},

	decoration = {
		rounding = 10,
		rounding_power = 2,

		-- Change transparency of focused and unfocused windows
		active_opacity = 1.0,
		inactive_opacity = 1.0,

		shadow = {
			enabled = true,
			range = 100,
			render_power = 4,
			color = 0x66000000,
			color_inactive = 0x33000000,
			offset = "0, 10",
			scale = 1,
		},

		blur = {
			enabled = true,
			size = 2,
			passes = 3,
			new_optimizations = true,
			ignore_opacity = true,
			contrast = 1.0,
			brightness = 1.0,
			vibrancy = 0.0,
			vibrancy_darkness = 0.0,
			xray = false,
			noise = 0,
			popups = true,
			input_methods = true,
		},
	},

	animations = {
		enabled = true,
	},
})

for _, animation in ipairs(animations) do
	hl.animation(animation)
end

for _, curve in ipairs(curves) do
	hl.curve(curve.name, curve.config)
end

-- List of animation options
-- "global"
-- "border"
-- "windows"
-- "windowsIn"
-- "windowsOut"
-- "fadeIn"
-- "fadeOut"
-- "fade"
-- "layers"
-- "layersIn"
-- "layersOut"
-- "fadeLayersIn"
-- "fadeLayersOut"
-- "workspaces"
-- "workspacesIn"
-- "workspacesOut"
-- "zoomFactor"
