Styling
Styling props are globally supported props for styling UI. These aim to stay close to Roblox's way of doing things, but differ when necessary.
Traditional styling
Traditional properties like BackgroundColor3
are supported identically to how Roblox does it. Use these as you would normally. There are exceptions however, like how Color
is preferred over BackgroundColor3
in Button
.
Children-based styling
UIPadding
s, UIStroke
s, UIListLayout
s... Children-based styling is just too much mess. In OnyxUI, all components support an extensive set of props to avoid working with these objects, while offering their benefits.
The styles below also support Enabled
for easily enabling/disabling their effects.
Corner Radius
Corner = {
Radius = UDim.new(0, 4)
}
Stroke
Stroke = {
Color = Color3.fromRGB(255, 255, 255),
Thickness = 2,
Transparency = 0,
ApplyStrokeMode = Enum.ApplyStrokeMode.Border,
LineJoinMode = Enum.LineJoinMode.Round,
}
Stroke with gradient:
Stroke = {
Color = Color3.fromRGB(255, 255, 255),
Gradient = {
Color = ColorSequence.new()
}
}
Gradient
Gradient = {
Color = ColorSequence.new(),
Rotation = 90,
Transparency = 0,
Offset = 0,
}
Padding
Equal-sided padding:
Padding = {
All = UDim.new(0, 4),
}
Individual padding:
Padding = {
Top = UDim.new(0, 4),
Left = UDim.new(0, 8),
Right = UDim.new(0, 8),
Bottom = UDim.new(0, 4),
}
Flex
Fill the parent container:
Flex = {
Mode = Enum.FlexMode.Fill,
}
Grow with a custom ratio, center-aligned:
Flex = {
Mode = Enum.FlexMode.Grow,
GrowRatio = 1,
ShrinkRatio = 0,
ItemLineAlignment = Enum.ItemLineAlignment.Center,
}
List
Vertical list:
List = {
FillDirection = Enum.FillDirection.Vertical,
HorizontalFlex = Enum.UIFlexAlignment.Fill,
Padding = UDim.new(0, 8),
}
Horizontal-filled, vertically-wrapping, centered list:
List = {
FillDirection = Enum.FillDirection.Horizontal,
HorizontalAlignment = Enum.HorizontalAlignment.Center,
VerticalAlignment = Enum.VerticalAlignment.Center,
Padding = UDim.new(0, 8),
Wraps = true,
}
Grid
Horizontally-filled grid:
Grid = {
FillDirection = Enum.FillDirection.Horizontal,
CellSize = UDim2.fromOffset(100, 100),
CellPadding = UDim2.fromOffset(20, 20),
}
Other Layouts
Other layouts like UITableLayout
and UIPageLayout
are generally inferior and unused. For API reference, see the Base
component's source code.
Aspect ratio
Square-locked size:
Aspect = {
Ratio = 1,
}
Growing with parent:
Aspect = {
Ratio = 1,
Type = Enum.AspectType.ScaleWithParentSize,
DominantAxis = Enum.DominantAxis.Height,
}
Scale
Scaled by 2x:
Scale = {
Scale = 2,
}
Size limit
Smaller than 100x 100y:
SizeLimit = {
Max = Vector2.new(100, 100),
Min = Vector2.new(0, 0),
}
Text size limit
Smaller than 24, bigger than 12:
TextSizeLimit = {
Max = 24,
Min = 12,
}
Using in custom components
To support styling props in your own components, make use of the CombineProps
utility to pass props through automatically. Your component must be based upon an OnyxUI component such as Base
for this to work.