creating stuff in StarterGui wont allow users to interact with Gui components unless in play mode, if you want to be able to use TextButtons etc. in Studio then parent the Gui components to CoreGui or the Dockwidget Gui, remember to handle all actions through the plugin script.
Visit the link I posted above to learn how to put checkboxes, sliders etc. in your Gui
This is how I organize my plugins. You put all frames in a GUI like shown and set Visible to true. E.g. when the player clicks the toolbar button AuthFrame will be shown. You can ignore everything else.
This will show as a normal GUI and not as a widget.
You write the functions like that: (I will give example of my code, it’s inside the main script)
--creating toolbar code comes before all of this
local insertGui = script.Parent:FindFirstChild("InsertGui")
insertGui.AuthFrame.SubmitButton.MouseButton1Click:Connect(function()
if insertGui.AuthFrame.PassField.Text == password then
insertGui.AuthFrame:Destroy()
script.Parent:FindFirstChild("OpenButton").Parent = insertGui
script.Parent:FindFirstChild("MainFrame").Parent = insertGui
script.Parent:FindFirstChild("InfoFrame").Parent = insertGui
else
insertGui.AuthFrame.PassField.Text = ""
insertGui.AuthFrame.PassField.PlaceholderText = "Invalid Password!"
wait(1)
insertGui.AuthFrame.PassField.PlaceholderText = "Password"
end
end)