[v3!] TopbarPlus v3.0.0 | Construct intuitive topbar icons; customise them with themes, dropdowns, captions, labels and much more

Added support :+1:

Fixed, thanks for the report.

This is great thanks. Will look into it now.

2 Likes

Fixed:

image

Thanks for the report, turns out I forgot to toggle a setting for corners of images. You can grab the amended package at the playground.

Thanks for the fixes. :sweat_smile: Is the increase in padding intentional?

The left and right padding of the icon? If so I’ve done this to match the new design of Roblox’s topbar.

You can modify these values doing:

:modifyTheme({
	{"PaddingLeft", "Size", UDim2.new(0, 9, 1, 0)}, -- These are the default values
	{"PaddingRight", "Size", UDim2.new(0, 11, 1, 0)},
})
1 Like


Single buttons do not have a padding, but is full. The buttons are following the design of the expandable button which is incorrect if the button cannot expand. Not sure if you would fix this or not

ignore background noise

I’ve opted for the expandable button’s design as default, but you can easily change to the menu buttons design doing:

Icon.modifyBaseTheme({"Widget", "BorderSize", 0})

1 Like

This is for the whole theme, is there any way to make it button specific?

I’ve noticed that the theme resets on mouse enter for already selected icons, which can interrupt the visual flow. Could we get a feature to disable this reset on hover for selected icons? This would help maintain a consistent appearance for active icons.

Thanks for the great work!

Video:

my setting:

-- imported Icon module

Icon.modifyBaseTheme({
	{ "Widget", "BorderSize", 0 },
	{ "IconSpotGradient", "Enabled", false },
	{
		"IconButton",
		"BackgroundColor3",
		Color3.fromRGB(245, 245, 245),
		"Selected",
	},
	{
		"IconButton",
		"BackgroundTransparency",
		0.1,
		"Selected",
	},
	{
		"IconImage",
		"ImageColor3",
		Color3.fromRGB(57, 60, 65),
		"Selected",
	},
	{
		"IconButton",
		"BackgroundColor3",
		Color3.fromRGB(0, 0, 0),
		"Deselected",
	},
	{
		"IconButton",
		"BackgroundTransparency",
		0.3,
		"Deselected",
	},
	{
		"IconImage",
		"Size",
		UDim2.fromScale(0.615, 0.615),
		"Deselected",
	},
	{
		"IconImage",
		"ImageColor3",
		Color3.fromRGB(255, 255, 255),
		"Deselected",
	},
})

local function playButtonSelectedTween(iconButton, iconImage)
	TweenService:Create(iconButton, buttonSelectedTweenInfo, {
		BackgroundColor3 = Color3.fromRGB(245, 245, 245),
		BackgroundTransparency = 0.1,
	}):Play()
	TweenService:Create(iconImage, buttonUnselectedTweenInfo, {
		ImageColor3 = Color3.fromRGB(57, 60, 65),
		Size = UDim2.fromScale(0.72, 0.72),
	}):Play()
end

local function playButtonUnselectedTween(imageButton, iconImage)
	TweenService:Create(imageButton, buttonUnselectedTweenInfo, {
		BackgroundColor3 = Color3.fromRGB(0, 0, 0),
		BackgroundTransparency = 0.3,
	}):Play()
	TweenService:Create(iconImage, buttonUnselectedTweenInfo, {
		ImageColor3 = Color3.fromRGB(255, 255, 255),
		Size = UDim2.fromScale(0.615, 0.615),
	}):Play()
end

local function handleToggled(icon, isSelected)
	local iconButton = icon.widget:FindFirstChild("IconButton", true)
	local iconImage = icon.widget:FindFirstChild("IconImage", true)

	if isSelected then
		playButtonSelectedTween(iconButton, iconImage)
	else
		playButtonUnselectedTween(iconButton, iconImage)
	end
end

-- icon sets up here

I found a temporary work around by adding a static method to override an Icon instance’s method setState to solve the problem :sweat_smile::

-- imported icon Module here

function Icon.disableHoverOnSelected(icon)
	local setState = icon.setState

	function icon:setState(incomingStateName, fromInput)
		-- Check if the icon is selected and the incoming state is "Viewing" (hover effect)
		if self.isSelected and incomingStateName == "Viewing" then
			-- If so, do nothing to ignore the hover effect
			return
		end

		-- For all other cases, use the original setState function
		setState(self, incomingStateName, fromInput)
	end
end

uh oh new topbar is out how much longer until we have v3??

how do i get the v3 of topbarplus

here its prerelease tho

setmenu buttons are not fitting and goes to the button


i tried this on studio and don^t know it is doing that

Thank god you are updating it!

Why you are want to do big text on it? Ofc it would break because the text is too long

icon:modifyTheme({"Widget", "BorderSize", 0})
1 Like

Thanks will look into this now

Hopefully very soon, all my spare time is going into getting this released :pineapple:

Overflows are disabled while I’m still completing/testing them. Should be out soon at the v3 playground

1 Like

Wasn’t aware of this- please do let us know when they’re re-enabled! :smile:

1 Like

Ok so your method will work, but I’d highly recommend modifying the theme for deselected and selected states (like you did for most other properties) instead of manually tweening yourself if you’re willing to have instant changing effects.

When an icon is hovered over its state changes to Viewing (hence why your changes are overwritten).

I may provide support for tweening values in the future but for now I only have time to complete the essential features im afraid.

2 Likes

I’ve found out that the new chat version (TextChatService) is shown over the dropdowns


I couldn’t find a way to fix this, my only solution would be disabling the chat while a dropdown is active

3 Likes