return function(w)local n={}local N=false local X=_L.GUIFX.CacheProperty(w,"\083\105\122\101")local function t()if not N then N=not N _L.Functions.FastTween(w,{Size=X+UDim2.new(0,10,0,-5)},{.05;EasingStyle;"\079\117\116"})end end local function H()if N then N=not N _L.Functions.FastTween(w,{Size=X},{.35;"\066\097\099\107";"\079\117\116"})end end n[#n+1]=w.MouseButton1Down:Connect(function()t()end)n[#n+1]=w.MouseButton1Up:Connect(function()H()end)n[#n+1]=w.MouseLeave:Connect(function()H()end)return function()for w,n in ipairs(n)do n:disconnect()end n=nil end end



return function(button)
	local events = {}
	local buttonDown = false
	
	--- Cache button size
	local originalSize = _L.GUIFX.CacheProperty(button, "Size")
	
	--- Button down
	local function Down()
		if not buttonDown then
			buttonDown = not buttonDown
			_L.Functions.FastTween(button, {Size = originalSize + UDim2.new(0, 10, 0, -5)}, {0.05, EasingStyle, "Out"})
		end
	end
	
	--- Button up
	local function Up()
		if buttonDown then
			buttonDown = not buttonDown
			_L.Functions.FastTween(button, {Size = originalSize}, {0.35, "Back", "Out"})
		end
	end
	
	--- Button events
	events[#events + 1] = button.MouseButton1Down:Connect(function()
		Down()
	end)
	--
	events[#events + 1] = button.MouseButton1Up:Connect(function()
		Up()
	end)
	--
	events[#events + 1] = button.MouseLeave:Connect(function()
		Up()
	end)
	
	--- Return function to stop
	return function()
		for _, event in ipairs(events) do
			event:disconnect()
		end
		events = nil
	end
end
