Skip to main content
WindUI ships with several icon sets and a flexible icon string format so you can reference icons inline anywhere an Icon property is accepted.

Built-in icon sets

SetString prefixNotes
Lucide(none — default)Default set. Use plain icon names.
Solarsolar:Append the style suffix (e.g. -bold, -bold-duotone).
SF Symbolssfsymbols:Use camelCase SF Symbol names.
Craft Iconscraft:Use the craft icon name.
Geist Iconsgeist:Use the geist icon name.
The default set is Lucide. You can change the global default with:
WindUI.Creator.Icons.SetIconsType("solar")

Icon string format

Default set (Lucide)

Pass the icon name as a plain string.
Icon = "bird"
Icon = "house"
Icon = "trash"

Solar icons

Prefix with solar: and include the style suffix.
Icon = "solar:bell-bold"
Icon = "solar:folder-2-bold-duotone"
Icon = "solar:info-square-bold"

SF Symbols

Prefix with sfsymbols: followed by the camelCase symbol name.
Icon = "sfsymbols:sunMinFill"
Icon = "sfsymbols:sunMaxFill"

Roblox asset ID

Pass a full rbxassetid:// string. The image is rendered at its native size with no spritesheet offset.
Icon = "rbxassetid://123456789"

Using icons in elements

Icons are accepted wherever an Icon property exists.
-- Tab icon
local MyTab = Window:Tab({
    Title = "Overview",
    Icon = "solar:home-2-bold",
    IconColor = Color3.fromHex("#83889E"),
    IconShape = "Square",
})

-- Button icon
MyTab:Button({
    Title = "Notify",
    Icon = "solar:bell-bold",
    Callback = function() end,
})

-- Notification icon
WindUI:Notify({
    Title = "Hello",
    Content = "Welcome!",
    Icon = "solar:bell-bold",
    Duration = 5,
})

-- Window tag icon
Window:Tag({
    Title = "v1.0",
    Icon = "github",
    Color = Color3.fromHex("#1c1c1c"),
    Border = true,
})

-- Slider range icons
MyTab:Slider({
    Step = 1,
    Value = { Min = 0, Max = 100, Default = 50 },
    Icons = {
        From = "sfsymbols:sunMinFill",
        To   = "sfsymbols:sunMaxFill",
    },
    Callback = function(value) end,
})

Adding custom icons

Use WindUI.Creator.AddIcons(setName, iconTable) to register your own asset IDs into an icon set. You can extend an existing set (like "solar") or define a completely new one. Each key in iconTable is the icon name used in the Icon string. The value is a rbxassetid:// string (or a plain number, which is converted automatically).
WindUI.Creator.AddIcons("solar", {
    ["CheckSquareBold"]                    = "rbxassetid://132438947521974",
    ["CursorSquareBold"]                   = "rbxassetid://120306472146156",
    ["FileTextBold"]                       = "rbxassetid://89294979831077",
    ["FolderWithFilesBold"]                = "rbxassetid://74631950400584",
    ["HamburgerMenuBold"]                  = "rbxassetid://134384554225463",
    ["Home2Bold"]                          = "rbxassetid://92190299966310",
    ["InfoSquareBold"]                     = "rbxassetid://119096461016615",
    ["PasswordMinimalisticInputBold"]      = "rbxassetid://109919668957167",
    ["SolarSquareTransferHorizontalBold"]  = "rbxassetid://125444491429160",
})
After registering, reference them with the normal solar: prefix:
Icon = "solar:CheckSquareBold"
AddIcons can also accept a spritesheet table with Image, ImageRectSize, and ImageRectPosition fields if you want to use a spritesheet rather than individual asset IDs.
WindUI.Creator.AddIcons("mySet", {
    ["myIcon"] = {
        Image = "rbxassetid://000000000",
        ImageRectSize = Vector2.new(64, 64),
        ImageRectPosition = Vector2.new(0, 0),
    },
})

Removing an icon

Leaving an Icon property as an empty string "" hides the icon entirely without producing an error.
MyTab:Button({
    Title = "No Icon Button",
    Icon = "",
    Callback = function() end,
})

Build docs developers (and LLMs) love