- Getting Started
- Icon Information
- Core Components
- UI Elements
- Additional Features
- Theming
- API Reference
- Examples
To use the Obsidian UI Library, you need to assign it to a variable:
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/deividcomsono/Obsidian/refs/heads/main/Library.lua"))()
Then, create a window:
local Window = Library:CreateWindow({
Title = "My Script",
Footer = "v1.0.0",
ToggleKeybind = Enum.KeyCode.RightControl,
Center = true,
AutoShow = true
})
The Obsidian UI Library uses Lucide for Tab Icons and more.
The Window is the main container for your UI. You can create one using Library:CreateWindow()
.
Property | Type | Default | Description |
---|---|---|---|
Title | string | "No Title" | The title displayed at the top of the window |
Footer | string | "No Footer" | The text displayed at the bottom of the window |
Position | UDim2 | UDim2.fromOffset(6, 6) | The initial position of the window |
Size | UDim2 | UDim2.fromOffset(720, 600) | The size of the window |
Center | boolean | true | Whether to center the window on the screen |
AutoShow | boolean | true | Whether to show the window immediately |
ToggleKeybind | Enum.KeyCode | Enum.KeyCode.RightControl | The keybind to toggle the UI |
NotifySide | string | "Right" | The side to show notifications ("Left" or "Right") |
ShowCustomCursor | boolean | true | Whether to show a custom cursor |
Font | Enum.Font | Enum.Font.Code | The font to use for text |
CornerRadius | number | 4 | The corner radius for UI elements |
Icon | string/ID | nil | Optional icon for the window |
IconSize | UDim2 | UDim2.fromOffset(30, 30) | Size of the icon if provided |
Resizable | boolean | true | Whether the window can be resized |
MobileButtonsSide | string | "Left" | Side to place mobile buttons ("Left" or "Right") |
Tabs are the primary way to organize content in your UI. You can add them with Window:AddTab()
.
local MainTab = Window:AddTab("Main", "home") -- Second parameter is the icon name (optional)
Method | Description |
---|---|
Window:AddTab(name, icon) |
Adds a new tab with the given name and optional icon |
Window:AddKeyTab(name) |
Adds a special tab for key input |
Tab:UpdateWarningBox({Title = "Warning", Text = "Example", Visible = true}) |
Updates the warning box in a tab |
Groupboxes are containers for UI elements within tabs. They help organize elements into sections.
local LeftGroupbox = MainTab:AddLeftGroupbox("Settings")
local RightGroupbox = MainTab:AddRightGroupbox("Information")
Method | Description |
---|---|
Tab:AddLeftGroupbox(name) |
Adds a groupbox on the left side |
Tab:AddRightGroupbox(name) |
Adds a groupbox on the right side |
Groupbox:Resize() |
Manually resizes the groupbox (rarely needed) |
Tabboxes are containers that can have their own tabs, useful for organizing related options.
local Tabbox = MainTab:AddLeftTabbox("Settings")
local Tab1 = Tabbox:AddTab("General")
local Tab2 = Tabbox:AddTab("Advanced")
Method | Description |
---|---|
Tab:AddLeftTabbox(name) |
Adds a tabbox on the left side |
Tab:AddRightTabbox(name) |
Adds a tabbox on the right side |
Tabbox:AddTab(name) |
Adds a new tab to the tabbox |
Labels display text information.
local Label = Groupbox:AddLabel("This is a label")
local WrappedLabel = Groupbox:AddLabel({
Text = "This is a wrapped label that will break into multiple lines",
DoesWrap = true
})
Method | Description |
---|---|
Label:SetText(text) |
Updates the label's text |
Label:SetVisible(boolean) |
Shows or hides the label |
Buttons allow user interaction through clicking.
local Button = Groupbox:AddButton({
Text = "Click Me",
Func = function()
print("Button clicked!")
end,
DoubleClick = true -- Requires double-click for risky actions
})
-- You can also add sub-buttons
Button:AddButton({
Text = "Sub Button",
Func = function()
print("Sub-button clicked!")
end
})
Property | Type | Default | Description |
---|---|---|---|
Text | string | "Button" | The button's text |
Func | function | function() end | The function to call when clicked |
DoubleClick | boolean | false | Whether the button needs double-click |
Tooltip | string | nil | Tooltip text shown on hover |
DisabledTooltip | string | nil | Tooltip shown when disabled |
Risky | boolean | false | Displays text in red to indicate risky action |
Disabled | boolean | false | Whether the button is disabled |
Visible | boolean | true | Whether the button is visible |
Method | Description |
---|---|
Button:SetText(text) |
Updates the button's text |
Button:SetDisabled(boolean) |
Enables or disables the button |
Button:SetVisible(boolean) |
Shows or hides the button |
Toggles and checkboxes allow users to toggle boolean values.
-- Always capture the reference returned by AddToggle
local MyToggle = Groupbox:AddToggle("MyToggle", {
Text = "Example Toggle",
Default = false,
Tooltip = "This is a toggle",
Callback = function(Value)
print("Toggle changed to:", Value)
end
})
-- You can use :OnChanged to add another callback
MyToggle:OnChanged(function(Value)
print("Toggle changed via OnChanged:", Value)
})
-- You can also create checkboxes instead of switch-style toggles
local MyCheckbox = Groupbox:AddCheckbox("MyCheckbox", {
Text = "Example Checkbox",
Default = false,
Callback = function(Value)
print("Checkbox changed to:", Value)
end
})
Property | Type | Default | Description |
---|---|---|---|
Text | string | "Toggle" | The toggle's text |
Default | boolean | false | The initial state |
Tooltip | string | nil | Tooltip text shown on hover |
DisabledTooltip | string | nil | Tooltip shown when disabled |
Callback | function | function() end | Called when the toggle changes |
Risky | boolean | false | Displays text in red to indicate risky action |
Disabled | boolean | false | Whether the toggle is disabled |
Visible | boolean | true | Whether the toggle is visible |
Method | Description |
---|---|
Toggle:SetValue(boolean) |
Sets the toggle value |
Toggle:SetText(text) |
Updates the toggle's text |
Toggle:SetDisabled(boolean) |
Enables or disables the toggle |
Toggle:SetVisible(boolean) |
Shows or hides the toggle |
Toggle:OnChanged(function) |
Adds another callback function |
Input fields allow users to enter text values.
local Input = Groupbox:AddInput("MyInput", {
Text = "Input Example",
Default = "Default value",
Numeric = false,
Finished = true, -- Only calls callback when you press enter
Placeholder = "Enter text here...",
Callback = function(Value)
print("Input updated:", Value)
end
})
Property | Type | Default | Description |
---|---|---|---|
Text | string | "Input" | The input's label text |
Default | string | "" | The initial value |
Numeric | boolean | false | Whether to allow only numeric input |
Finished | boolean | false | Whether to call the callback only when Enter is pressed |
ClearTextOnFocus | boolean | true | Whether to clear the text when focused |
Placeholder | string | "" | Placeholder text when empty |
AllowEmpty | boolean | true | Whether to allow empty input |
EmptyReset | string | "---" | Value to use when empty if AllowEmpty is false |
MaxLength | number | nil | Maximum character length |
Tooltip | string | nil | Tooltip text shown on hover |
DisabledTooltip | string | nil | Tooltip shown when disabled |
Callback | function | function() end | Called when the input changes |
Disabled | boolean | false | Whether the input is disabled |
Visible | boolean | true | Whether the input is visible |
Method | Description |
---|---|
Input:SetValue(text) |
Sets the input value |
Input:SetText(text) |
Updates the input's label text |
Input:SetDisabled(boolean) |
Enables or disables the input |
Input:SetVisible(boolean) |
Shows or hides the input |
Input:OnChanged(function) |
Adds another callback function |
Sliders allow users to select a numeric value from a range.
local Slider = Groupbox:AddSlider("MySlider", {
Text = "Example Slider",
Default = 50,
Min = 0,
Max = 100,
Rounding = 1,
Compact = false,
Callback = function(Value)
print("Slider changed to:", Value)
end
})
Property | Type | Default | Description |
---|---|---|---|
Text | string | "Slider" | The slider's text |
Default | number | 0 | The initial value |
Min | number | 0 | The minimum value |
Max | number | 100 | The maximum value |
Rounding | number | 0 | Decimal places to round to |
Compact | boolean | false | Whether to use compact mode |
HideMax | boolean | false | Whether to hide the max value in display |
Prefix | string | "" | Text before the value |
Suffix | string | "" | Text after the value |
Tooltip | string | nil | Tooltip text shown on hover |
DisabledTooltip | string | nil | Tooltip shown when disabled |
Callback | function | function() end | Called when the slider changes |
Disabled | boolean | false | Whether the slider is disabled |
Visible | boolean | true | Whether the slider is visible |
Method | Description |
---|---|
Slider:SetValue(number) |
Sets the slider value |
Slider:SetText(text) |
Updates the slider's text |
Slider:SetMin(number) |
Sets the minimum value |
Slider:SetMax(number) |
Sets the maximum value |
Slider:SetDisabled(boolean) |
Enables or disables the slider |
Slider:SetVisible(boolean) |
Shows or hides the slider |
Slider:SetPrefix(text) |
Sets the prefix text |
Slider:SetSuffix(text) |
Sets the suffix text |
Slider:OnChanged(function) |
Adds another callback function |
Dropdowns allow users to select from a list of options.
local Dropdown = Groupbox:AddDropdown("MyDropdown", {
Values = {"Option 1", "Option 2", "Option 3"},
Default = 1, -- Index of the default option
Multi = false, -- Whether to allow multiple selections
Text = "Example Dropdown",
Tooltip = "This is a dropdown",
Callback = function(Value)
print("Dropdown new value:", Value)
end
})
-- Multi-select dropdown
local MultiDropdown = Groupbox:AddDropdown("MyMultiDropdown", {
Values = {"Option A", "Option B", "Option C"},
Default = {"Option A"}, -- Default selected values for multi-select
Multi = true,
Text = "Multi-Select Example",
Callback = function(Values)
for Value, Selected in pairs(Values) do
if Selected then
print("Selected:", Value)
end
end
end
})
-- Player dropdown (automatically updates with players)
local PlayerDropdown = Groupbox:AddDropdown("PlayerDropdown", {
SpecialType = "Player",
Text = "Select Players",
Multi = true,
ExcludeLocalPlayer = true
})
-- Team dropdown (automatically updates with teams)
local TeamDropdown = Groupbox:AddDropdown("TeamDropdown", {
SpecialType = "Team",
Text = "Select Team"
})
Property | Type | Default | Description |
---|---|---|---|
Text | string | nil | The dropdown's label text |
Values | table | {} | List of selectable values |
Default | any/table | nil | Default selected value or values for multi-select |
Multi | boolean | false | Whether multiple values can be selected |
AllowNull | boolean | false | Whether no selection is allowed |
Searchable | boolean | false | Whether to allow searching in dropdown |
MaxVisibleDropdownItems | number | 8 | Maximum number of visible items |
SpecialType | string | nil | Special types: "Player" or "Team" |
ExcludeLocalPlayer | boolean | false | For Player type, excludes local player |
FormatDisplayValue | function | nil | Function to format displayed values |
DisabledValues | table | {} | Values that cannot be selected |
Tooltip | string | nil | Tooltip text shown on hover |
DisabledTooltip | string | nil | Tooltip shown when disabled |
Callback | function | function() end | Called when selection changes |
Disabled | boolean | false | Whether the dropdown is disabled |
Visible | boolean | true | Whether the dropdown is visible |
Method | Description |
---|---|
Dropdown:SetValue(value) |
Sets the selected value(s) |
Dropdown:SetValues(table) |
Replaces all dropdown values |
Dropdown:AddValues(value/table) |
Adds new values to the dropdown |
Dropdown:SetDisabledValues(table) |
Sets which values are disabled |
Dropdown:AddDisabledValues(value/table) |
Adds values to disabled list |
Dropdown:SetText(text) |
Updates the dropdown's label text |
Dropdown:SetDisabled(boolean) |
Enables or disables the dropdown |
Dropdown:SetVisible(boolean) |
Shows or hides the dropdown |
Dropdown:OnChanged(function) |
Adds another callback function |
Keybinds allow users to set and use keyboard shortcuts. You must add them to a toggle by using the reference returned when creating the toggle.
-- First create a toggle and capture the reference
local MyToggle = Groupbox:AddToggle("MyToggle", {
Text = "Example Toggle",
Default = false
})
-- Then add a keybind to it using the reference
local Keybind = MyToggle:AddKeyPicker("MyKeybind", {
Default = "F",
Text = "Example Keybind",
Mode = "Toggle", -- Options: "Toggle", "Hold", "Always"
-- Sets the toggle's value according to the keybind state if Mode is Toggle
SyncToggleState = false,
Callback = function(Value)
print("Keybind pressed, value:", Value)
end
})
Property | Type | Default | Description |
---|---|---|---|
Text | string | "KeyPicker" | The keybind's text |
Default | string | "None" | The initial key |
Mode | string | "Toggle" | Operation mode ("Toggle", "Hold", "Always") |
SyncToggleState | boolean | false | Whether to sync with parent toggle |
Modes | table | {"Always", "Toggle", "Hold"} | Available modes |
NoUI | boolean | false | Whether to hide from keybind menu |
Callback | function | function() end | Called when keybind state changes |
ChangedCallback | function | function() end | Called when key is changed |
Clicked | function | function() end | Called when clicked |
Method | Description |
---|---|
Keybind:SetValue({key, mode}) |
Sets the key and mode |
Keybind:GetState() |
Returns current state (true/false) |
Keybind:SetText(text) |
Updates the keybind's text |
Keybind:Update() |
Updates the keybind display |
Keybind:OnClick(function) |
Sets the click callback |
Keybind:OnChanged(function) |
Sets the change callback |
Color pickers allow users to select colors. They must be added to a toggle by using the reference returned when creating the toggle.
-- First create a toggle and capture the reference
local MyToggle = Groupbox:AddToggle("MyToggle", {
Text = "Example Toggle",
Default = false
})
-- Then add a color picker to it using the reference
local ColorPicker = MyToggle:AddColorPicker("MyColorPicker", {
Default = Color3.fromRGB(255, 0, 0),
Title = "Select Color",
Transparency = 0, -- 0 to 1
Callback = function(Value)
print("Color changed to:", Value)
end
})
Property | Type | Default | Description |
---|---|---|---|
Default | Color3 | Color3.new(1, 1, 1) | The initial color |
Title | string | nil | Title shown in picker |
Transparency | number | 0 | Default transparency (0-1) |
Callback | function | function() end | Called when color changes |
Changed | function | function() end | Alternative callback |
Method | Description |
---|---|
ColorPicker:SetValue(hsv, transparency) |
Sets HSV color and transparency |
ColorPicker:SetValueRGB(color, transparency) |
Sets RGB color and transparency |
ColorPicker:OnChanged(function) |
Sets the change callback |
Dividers are simple horizontal lines that separate content.
Groupbox:AddDivider()
Notifications display temporary messages to the user.
-- Simple notification
Library:Notify("This is a notification", 5) -- Second param is duration in seconds
-- Advanced notification
Library:Notify({
Title = "Success",
Description = "Operation completed successfully",
Time = 5, -- Duration in seconds
SoundId = 123456789 -- Optional sound ID
})
-- Getting notification object for manipulation
local Notification = Library:Notify({
Title = "Progress",
Description = "Processing...",
Time = 10
})
-- Update notification text
Notification:ChangeTitle("Almost done")
Notification:ChangeDescription("Finalizing...")
-- For step notifications
local StepNotification = Library:Notify({
Title = "Progress",
Description = "Downloading files...",
Steps = 5, -- Total number of steps
Time = someInstanceThatFires -- or use a number for time-based
})
-- Update steps
StepNotification:ChangeStep(2) -- Set to step 2 of 5
Tooltips provide additional information on hover.
-- Tooltips are added automatically to UI elements via the Tooltip and DisabledTooltip properties
local Button = Groupbox:AddButton({
Text = "Help",
Tooltip = "Click for assistance",
DisabledTooltip = "Currently unavailable"
})
-- Manual tooltip creation
local TooltipObject = Library:AddTooltip("Normal info", "Disabled info", someGuiElement)
The library provides a built-in keybind menu that shows all keybinds.
-- The keybind menu is shown automatically when any keybinds are added
-- You can customize its appearance:
Library.ShowToggleFrameInKeybinds = true -- Show toggle state in keybind menu
The library includes a custom cursor option.
-- Enable/disable the custom cursor
Library.ShowCustomCursor = true
The library includes built-in mobile support.
-- Check if the user is on mobile
if Library.IsMobile then
-- Adjust your UI accordingly
end
-- Mobile button positioning
Window = Library:CreateWindow({
MobileButtonsSide = "Right" -- "Left" or "Right"
})
You can customize the appearance of the UI.
-- Set custom colors
Library.Scheme = {
BackgroundColor = Color3.fromRGB(15, 15, 15),
MainColor = Color3.fromRGB(25, 25, 25),
AccentColor = Color3.fromRGB(125, 85, 255),
OutlineColor = Color3.fromRGB(40, 40, 40),
FontColor = Color3.new(1, 1, 1),
Font = Font.fromEnum(Enum.Font.Gotham),
}
-- Change font
Library:SetFont(Enum.Font.Gotham)
-- Change DPI scale
Library:SetDPIScale(150) -- 150% scaling
Function | Description |
---|---|
Library:CreateWindow(options) |
Creates a new window |
Library:Notify(message, duration, soundId) |
Shows a notification |
Library:SetFont(font) |
Sets the global font |
Library:SetNotifySide(side) |
Sets which side notifications appear on |
Library:SetDPIScale(scale) |
Sets the UI scaling (100 = 100%) |
Library:Toggle(visible) |
Shows or hides the entire UI |
Library:AddTooltip(tooltip, disabledTooltip, element) |
Adds a tooltip to an element |
Library:AddDraggableButton(text, callback) |
Creates a draggable button |
Library:AddDraggableMenu(name) |
Creates a draggable menu |
Library:OnUnload(callback) |
Sets a function to call when unloaded |
Library:Unload() |
Destroys the UI completely |
Variable | Description |
---|---|
Library.Toggled |
Whether the UI is currently visible |
Library.IsMobile |
Whether the user is on a mobile device |
Library.CornerRadius |
The corner radius used throughout the UI |
Library.NotifySide |
Which side notifications appear on |
Library.ShowCustomCursor |
Whether to show the custom cursor |
Library.ForceCheckbox |
Whether to always use checkboxes instead of switches |
Library.ShowToggleFrameInKeybinds |
Whether to show toggle state in keybind menu |
Library.NotifyOnError |
Whether to show notifications for errors |
Library.ToggleKeybind |
The keybind to toggle the UI |
-- Create a basic window with common elements
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/deividcomsono/Obsidian/refs/heads/main/Library.lua"))()
local Window = Library:CreateWindow({
Title = "My Script",
Footer = "v1.0.0",
Center = true,
AutoShow = true
})
local MainTab = Window:AddTab("Main", "home")
local SettingsTab = Window:AddTab("Settings", "settings")
-- Add a groupbox to the left side
local LeftGroupbox = MainTab:AddLeftGroupbox("Features")
-- Add toggles, buttons, sliders
local MyToggle = LeftGroupbox:AddToggle("MyToggle", {
Text = "Enable Feature",
Default = false,
Tooltip = "Enables the main feature",
Callback = function(Value)
print("Feature enabled:", Value)
end
})
local MyButton = LeftGroupbox:AddButton({
Text = "Run Action",
Func = function()
print("Action running!")
end
})
local MySlider = LeftGroupbox:AddSlider("MySlider", {
Text = "Speed",
Default = 50,
Min = 0,
Max = 100,
Rounding = 0,
Suffix = "%",
Callback = function(Value)
print("Speed set to:", Value)
end
})
-- Add a dropdown
local MyDropdown = LeftGroupbox:AddDropdown("MyDropdown", {
Values = {"Option 1", "Option 2", "Option 3"},
Default = 1,
Text = "Select Option",
Callback = function(Value)
print("Selected:", Value)
end
})
-- Add a groupbox to the right side
local RightGroupbox = MainTab:AddRightGroupbox("Information")
-- Add a label
RightGroupbox:AddLabel("Welcome to my script!")
-- Add a tabbox
local MyTabbox = SettingsTab:AddLeftTabbox("Settings")
local ConfigTab = MyTabbox:AddTab("Config")
local T
C67C
hemeTab = MyTabbox:AddTab("Theme")
-- Add config elements
ConfigTab:AddButton({
Text = "Save Config",
Func = function()
Library:Notify("Config saved!")
end
})
-- Add toggle with keybind - IMPORTANT: Capture the toggle reference
local ToggleWithKeybind = LeftGroupbox:AddToggle("ToggleWithKey", {
Text = "Toggle with Keybind",
Default = false,
Callback = function(Value)
print("Toggled with keybind:", Value)
end
})
-- Add keybind to the toggle using the reference
local MyKeybind = ToggleWithKeybind:AddKeyPicker("MyKeybind", {
Default = "G",
Mode = "Toggle",
Text = "Toggle Feature",
SyncToggleState = true,
})
-- Add a color picker to the toggle using the reference
local MyColorPicker = ToggleWithKeybind:AddColorPicker("MyColorPicker", {
Default = Color3.fromRGB(255, 0, 0),
Title = "UI Color",
Callback = function(Value)
Library.Scheme.AccentColor = Value
Library:UpdateColorsUsingRegistry()
end
})
local Library = loadstring(game:HttpGet("https://raw.githubusercontent.com/deividcomsono/Obsidian/refs/heads/main/Library.lua"))()
local Window = Library:CreateWindow({
Title = "Advanced Example",
Size = UDim2.fromOffset(550, 480),
Center = true
})
local MainTab = Window:AddTab("Main")
local ConfigTab = Window:AddTab("Config")
-- Main features
local FeaturesBox = MainTab:AddLeftTabbox("Features")
local GeneralTab = FeaturesBox:AddTab("General")
local CombatTab = FeaturesBox:AddTab("Combat")
local VisualsTab = FeaturesBox:AddTab("Visuals")
-- General features
local WalkSpeedToggle = GeneralTab:AddToggle("WalkSpeed", {
Text = "Custom Walk Speed",
Default = false,
Callback = function(Value)
print("Walk Speed enabled:", Value)
end
})
local SpeedSlider = GeneralTab:AddSlider("SpeedValue", {
Text = "Speed Value",
Default = 16,
Min = 16,
Max = 100,
Rounding = 0,
Callback = function(Value)
print("Speed set to:", Value)
end
})
-- Combat features - IMPORTANT: Capture references directly
local AimbotToggle = CombatTab:AddToggle("Aimbot", {
Text = "Aimbot",
Default = false,
Tooltip = "Automatically aims at enemies",
Callback = function(Value)
print("Aimbot enabled:", Value)
end
})
-- Use the direct reference to add the keybind
AimbotToggle:AddKeyPicker("AimbotKey", {
Default = "E",
Mode = "Hold",
Text = "Aimbot",
Callback = function(Value)
print("Aimbot key held:", Value)
end
})
local TargetDropdown = CombatTab:AddDropdown("AimbotTarget", {
Text = "Target",
Values = {"Head", "Torso", "Random"},
Default = 1,
Callback = function(Value)
print("Aimbot targeting:", Value)
end
})
-- Visuals features - IMPORTANT: Capture references directly
local ESPToggle = VisualsTab:AddToggle("ESP", {
Text = "ESP",
Default = false,
Callback = function(Value)
print("ESP enabled:", Value)
end
})
-- Use the direct reference to add the color picker
ESPToggle:AddColorPicker("ESPColor", {
Default = Color3.fromRGB(255, 0, 0),
Title = "ESP Color",
Callback = function(Value)
print("ESP color set to:", Value)
end
})
local ESPOptions = VisualsTab:AddDropdown("ESPOptions", {
Text = "ESP Options",
Values = {"Boxes", "Names", "Health", "Distance"},
Multi = true,
Default = {"Boxes", "Names"},
Callback = function(Values)
for Option, Enabled in pairs(Values) do
if Enabled then
print("ESP option enabled:", Option)
end
end
end
})
-- Config section
local SaveBox = ConfigTab:AddLeftGroupbox("Save Configuration")
local ConfigNameInput = SaveBox:AddInput("ConfigName", {
Text = "Config Name",
Default = "MyConfig",
Placeholder = "Enter name...",
Finished = true
})
SaveBox:AddButton({
Text = "Save Config",
Func = function()
local name = Options.ConfigName.Value
Library:Notify({
Title = "Config Saved",
Description = "Saved configuration as " .. name,
Time = 3
})
end
})
SaveBox:AddButton({
Text = "Load Config",
Func = function()
local name = Options.ConfigName.Value
Library:Notify({
Title = "Config Loaded",
Description = "Loaded configuration " .. name,
Time = 3
})
end
})
-- Player list
local PlayerBox = MainTab:AddRightGroupbox("Players")
local PlayerSelector = PlayerBox:AddDropdown("PlayerList", {
SpecialType = "Player",
Text = "Select Player",
Tooltip = "Select a player to target",
Callback = function(Value)
print("Selected player:", Value)
end
})
-- Theme settings
local ThemeBox = ConfigTab:AddRightGroupbox("UI Settings")
local ThemeToggle = ThemeBox:AddToggle("CustomTheme", {
Text = "Custom Theme",
Default = false,
Callback = function(Value)
print("Custom theme enabled:", Value)
end
})
local UIScaleSlider = ThemeBox:AddSlider("UIScale", {
Text = "UI Scale",
Default = 100,
Min = 75,
Max = 150,
Rounding = 0,
Suffix = "%",
Callback = function(Value)
Library:SetDPIScale(Value)
end
})
-- Set a keybind toggler
ThemeBox:AddLabel("Press Right-Ctrl to toggle the UI")
-- Show the UI
Library:Toggle(true)