Themes
Built-in themes areGraphite, Aurora, and Ember. Set Theme when creating a window or call window:SetTheme(nameOrColors). Custom theme tables use Color3 values. Partial tables inherit omitted tokens from Graphite.
Theme tokens are Background, Surface, Raised, Hover, Border, Text, Muted, Accent, AccentText, Success, and Danger.
window:BindColor(instance, property, token) binds a Color3 property on a descendant of the window GUI to a theme token.
Style and motion
UI:SetStyle and UI:SetMotion change defaults for future windows. window:SetStyle and window:SetMotion update one existing window.
Style fields include Font, FontBold, TextSize, DescriptionSize, TitleSize, WindowRadius, SectionRadius, ControlRadius, and RowPadding. Motion fields are Duration, Style, Direction, RepeatCount, Reverses, and Delay.
Responsive settings
Responsive layout is enabled by default.Responsive accepts a table with Breakpoint (320–1000 px; default 620), TouchTarget (44–72 px; default 44), and Margin (4–40 px; default 12). The library adapts navigation and controls to window size, safe insets, and the on-screen keyboard. Test your own custom content on the devices you support; automated layouts do not verify physical-device input.
Layout options
Move a window on a phone
Drag the title strip at the top of the window with one finger. You can start on its title, subtitle or logo area. Buttons, sliders and page scrolling keep their own gestures. The header stays reachable when you move a mobile window partly beyond the edge of the screen; drag it back to reveal the rest. Dragging is enabled by default. Keep the header visible if users need to move the window:UI:SetLayout(options), or update one window with window:SetLayout(options). Settings cover tab position, mobile tab position, sidebar width, tab dimensions and gaps, content padding and spacing, header and footer sizes, search visibility, and control alignment. PanelTransparency defaults to 0.06 and affects only the main window surface; 0 is opaque and 1 is transparent.
Layout table. Tab keys include Order, Width, Height, and IconSize. Control keys include Order, Width, Height, and Position (Left, Right, Below). See API reference for the complete defaults and ranges.
Tab categories
Categories group related tabs under a shared heading. Create a category from the window, then add tabs to it. A tab can still use the same controls and sections as any other tab.window:Category({Title = "General"}). Calling window:Category again with the same title returns the existing category, so tabs added through either call stay grouped together. Change a heading with category:SetTitle("Basics"); category:Destroy() removes that category and its tabs. A category heading is hidden when it has no tabs, including when filtering hides all of its tabs.
For a single tab, pass its category in the options table. This creates the category automatically when needed and reuses a category with the same title:
MobileTabPosition (Top or Bottom).
Window parts
window:GetParts() exposes Panel, Header, Tabs, Search, PageTitle, Pages, Footer, Reopen, Notifications, Minimize, Close, and Resize.
SetPartLayout accepts Position and Size as finite UDim2 values, AnchorPoint as a Vector2 in the 0–1 range, and Visible as a boolean. Overrides apply after automatic responsive layout and can overlap or extend beyond the window. Reset parts when they should return to automatic layout.
Next: Icons and branding · Loading screens