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

(It’s not in UserSettings, its in GuiService: GuiService | Documentation - Roblox Creator Hub)

…But yeah, ig so.

1 Like

What? I’m sorry I have no idea what you’re talking about. Just look up UserSettings() you can most likely find the transparency setting in there, and apply the background accordingly.

I checked, it’s not in UserSettings(), it’s in game.GuiService.PreferredTransparency.

1 Like

Roblox changed the topbar’s colour and transparency. You can be able to change it to the new using the code below until TopbarPlus is updated to account for this

local ReplicatedFirst = game:GetService("ReplicatedFirst")
local GuiService = game:GetService("GuiService")
local Icon = require(ReplicatedFirst:WaitForChild("Icon")) -- Change this to where your TopBarPlus module is
Icon.modifyBaseTheme{
	{"IconButton", "BackgroundColor3", Color3.fromRGB(18, 18, 20)};
	{"IconButton", "BackgroundTransparency", (0.08*GuiService.PreferredTransparency)};
}
GuiService:GetPropertyChangedSignal("PreferredTransparency"):Connect(function()
	Icon.modifyBaseTheme{"IconButton", "BackgroundTransparency", (0.08*GuiService.PreferredTransparency)}
end)

I took the values directly from what was shown in CoreGui. Hope that these values get applied to the default set in future releases.

Unfortunately, the caption colour cannot be changes as far as I know and cannot be converted to the new colour

9 Likes

How did you get the values from CoreGui?

1 Like

hey @ForeverHD could u check ur pull requests for wally / type support in topbar+, I also added a pull request for convertLabelToNumberSpinner support for NumberSpinner Module compatibility. If you want numberspinner support add this method to the Icon module:

function Icon:convertLabelToNumberSpinner(numberSpinner)
	local label = self:getInstance("IconLabel")
	label.Transparency = 1
	numberSpinner.Parent = label

	local propertiesToChange = {
		"FontFace",
		"BorderSizePixel",
		"Position",
		"BorderColor3",
		"Rotation",
		"TextScaled",
		"TextStrokeTransparency",
		"TextStrokeColor3",
		"TextStrokeTransparency",
		"TextYAlignment",
		"Size",
		"TextSize",
		"TextXAlignment",
		"TextColor3",
		"AnchorPoint",
	}
	for i, property in propertiesToChange do
		numberSpinner[property] = label[property]
	end

	local invalidProperties = {
		"TextBounds",
		"TextFits",
		"AbsolutePosition",
		"AbsoluteSize",
		"OpenTypeFeaturesError",
                "GuiState"
	}
	self:addToJanitor(label.Changed:Connect(function(property)
		if table.find(invalidProperties, property) then
			return
		end
		numberSpinner[property] = label[property]
	end))

	self:updateParent()
	return self
end
1 Like

When you press play on Studio, open up CoreGui and you can find the values within the topbar GUI inside of it. You can search for the menu icon or the unibar and use the values from there with preferred transparency set to transparent. If you do not see the CoreGui service, you need to go into your Studio settings to make it visible

1 Like

put the localscript inside replicatedStorage

1 Like

If possible, could you please update the gui colors/theme and the dropdowns and add more animations to make it match the current roblox gui? Thanks

local Icon = require(game.ReplicatedStorage.Icon)

local sound = script.Parent:WaitForChild("ButtonClick")
local bindable = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("MenuOff")

Icon.new()
	:setLabel("Menu")
	:setCaption("Menu")
	:bindEvent("selected", function()
		sound:Play()
	end)
	:setOrder(0)
	:oneClick(true)
	:align("Right")
	:setEnabled(false)

bindable.Event:Connect(function(Icon)
	Icon:setEnabled(true)
end)

Why won’t this work?

1 Like

You’re using Icon:SetEnabled on the module, not the icon

Pretty sure you can use
:call(icon) in the chain since itll return the icon, allowing you to excend the functionality there

2 Likes

Alright 1 moment, if it errors I’ll reply to your post again

Thanks, it fixed it.

EDIT: For anyone who is having this issue in the future, here is the updated script:

local Icon = require(game.ReplicatedStorage.Icon)

local sound = script.Parent:WaitForChild("ButtonClick")

Icon.new()
	:setLabel("Menu")
	:setCaption("Menu")
	:bindEvent("selected", function()
		sound:Play()
	end)
	:setOrder(0)
	:oneClick(true)
	:align("Right")
	:setEnabled(false)
	:call(function(icon) -- changed from here and below
		local bindable = game:GetService("ReplicatedStorage"):WaitForChild("Events"):WaitForChild("MenuOff")
		
		bindable.Event:Connect(function()
			icon:setEnabled(true)
		end)
	end)
2 Likes

Is there any way to customize a theme for captions?

First thing when i saw this post:

  • I love the new ui (simple, clean and amazing)
  • The scripting thing was really buggy to handle but I tried my best to figuring out
  • V3 more better because there are many features you can do than V2.

Love the new version. Hope you’re doing well :fist:t2:

How do you change the size of each bar?

Using multiple buttons. How do I make the buttons stay selected when another is pressed? I’m bad at reading, sorry

2 Likes

Hey! Sorry for the insignificant post, but I’ve found a typo on the API page - Listed below.
methods>setName’s code block reads icon:set(name) and not icon:setName(string)

This is also my first post of the Roblox Devforum so please excuse any mistakes.

3 Likes

I tried using Wally to install the v3.0.2. The Wally isn’t the main issue in my situation as it’s present in my VSC folder but when it tries to sync with Rojo it errors showing this…

I don’t know for sure, and I doubt it’s why but, possibly it is because its using a package link. That’s the only difference I see in this from my other dependencies.

If someone has gotten a solution for this, it would be greatly appreciated!

1 Like

download the code for topbarplus off the github and put it into ur project, btw wally doesnt support types rn so the dev exp kinda sucks

anyone know why the module doesnt have autocomplete