forked from rojo-rbx/rojo
110 lines
2.8 KiB
Lua
110 lines
2.8 KiB
Lua
local Rojo = script:FindFirstAncestor("Rojo")
|
|
local Plugin = Rojo.Plugin
|
|
local Packages = Rojo.Packages
|
|
|
|
local Roact = require(Packages.Roact)
|
|
|
|
local Theme = require(Plugin.App.Theme)
|
|
local Assets = require(Plugin.Assets)
|
|
local Config = require(Plugin.Config)
|
|
local Version = require(Plugin.Version)
|
|
|
|
local Tooltip = require(Plugin.App.Components.Tooltip)
|
|
local SlicedImage = require(script.Parent.SlicedImage)
|
|
|
|
local e = Roact.createElement
|
|
|
|
local function VersionIndicator(props)
|
|
local updateMessage = Version.getUpdateMessage()
|
|
|
|
return Theme.with(function(theme)
|
|
return e("Frame", {
|
|
LayoutOrder = props.layoutOrder,
|
|
Size = UDim2.new(0, 0, 0, 25),
|
|
BackgroundTransparency = 1,
|
|
AutomaticSize = Enum.AutomaticSize.X,
|
|
}, {
|
|
Border = if updateMessage
|
|
then e(SlicedImage, {
|
|
slice = Assets.Slices.RoundedBorder,
|
|
color = theme.Button.Bordered.Enabled.BorderColor,
|
|
transparency = props.transparency,
|
|
size = UDim2.fromScale(1, 1),
|
|
zIndex = 0,
|
|
}, {
|
|
Indicator = e("ImageLabel", {
|
|
Size = UDim2.new(0, 10, 0, 10),
|
|
ScaleType = Enum.ScaleType.Fit,
|
|
Image = Assets.Images.Circles[16],
|
|
ImageColor3 = theme.Header.LogoColor,
|
|
ImageTransparency = props.transparency,
|
|
BackgroundTransparency = 1,
|
|
Position = UDim2.new(1, 0, 0, 0),
|
|
AnchorPoint = Vector2.new(0.5, 0.5),
|
|
}),
|
|
})
|
|
else nil,
|
|
|
|
Tip = if updateMessage
|
|
then e(Tooltip.Trigger, {
|
|
text = updateMessage,
|
|
delay = 0.1,
|
|
})
|
|
else nil,
|
|
|
|
VersionText = e("TextLabel", {
|
|
Text = Version.display(Config.version),
|
|
FontFace = theme.Font.Thin,
|
|
TextSize = theme.TextSize.Body,
|
|
TextColor3 = theme.Header.VersionColor,
|
|
TextXAlignment = Enum.TextXAlignment.Left,
|
|
TextTransparency = props.transparency,
|
|
BackgroundTransparency = 1,
|
|
|
|
Size = UDim2.new(0, 0, 1, 0),
|
|
AutomaticSize = Enum.AutomaticSize.X,
|
|
}, {
|
|
Padding = e("UIPadding", {
|
|
PaddingLeft = UDim.new(0, 6),
|
|
PaddingRight = UDim.new(0, 6),
|
|
}),
|
|
}),
|
|
})
|
|
end)
|
|
end
|
|
|
|
local function Header(props)
|
|
return Theme.with(function(theme)
|
|
return e("Frame", {
|
|
Size = UDim2.new(1, 0, 0, 32),
|
|
LayoutOrder = props.layoutOrder,
|
|
BackgroundTransparency = 1,
|
|
}, {
|
|
Logo = e("ImageLabel", {
|
|
Image = Assets.Images.Logo,
|
|
ImageColor3 = theme.Header.LogoColor,
|
|
ImageTransparency = props.transparency,
|
|
|
|
Size = UDim2.new(0, 60, 0, 27),
|
|
|
|
LayoutOrder = 1,
|
|
BackgroundTransparency = 1,
|
|
}),
|
|
|
|
VersionIndicator = e(VersionIndicator, {
|
|
transparency = props.transparency,
|
|
layoutOrder = 2,
|
|
}),
|
|
|
|
Layout = e("UIListLayout", {
|
|
VerticalAlignment = Enum.VerticalAlignment.Center,
|
|
FillDirection = Enum.FillDirection.Horizontal,
|
|
SortOrder = Enum.SortOrder.LayoutOrder,
|
|
Padding = UDim.new(0, 15),
|
|
}),
|
|
})
|
|
end)
|
|
end
|
|
|
|
return Header
|