local DEFAULT_TOKEN_COLORS = {
["background"] = Color3.fromRGB(47, 47, 47),
["iden"] = Color3.fromRGB(234, 234, 234),
["keyword"] = Color3.fromRGB(215, 174, 255),
["builtin"] = Color3.fromRGB(131, 206, 255),
["string"] = Color3.fromRGB(196, 255, 193),
["number"] = Color3.fromRGB(255, 125, 125),
["comment"] = Color3.fromRGB(140, 140, 155),
["operator"] = Color3.fromRGB(255, 239, 148),
["custom"] = Color3.fromRGB(119, 122, 255),
}
local types = require(script.Parent.types)
local Theme = {
tokenColors = {},
tokenRichTextFormatter = {},
}
function Theme.setColors(tokenColors: types.TokenColors)
assert(type(tokenColors) == "table", "Theme.updateColors expects a table")
for tokenName, color in tokenColors do
Theme.tokenColors[tokenName] = color
end
end
function Theme.getColoredRichText(color: Color3, text: string): string
return '<font color="#' .. color:ToHex() .. '">' .. text .. "</font>"
end
function Theme.getColor(tokenName: types.TokenName): Color3
return Theme.tokenColors[tokenName]
end
function Theme.matchStudioSettings(refreshCallback: () -> ()): boolean
local success = pcall(function()
local studio = settings().Studio
local studioTheme = studio.Theme
local function getTokens()
return {
["background"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptBackground),
["iden"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptText),
["keyword"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptKeyword),
["builtin"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptBuiltInFunction),
["string"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptString),
["number"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptNumber),
["comment"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptComment),
["operator"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptOperator),
["custom"] = studioTheme:GetColor(Enum.StudioStyleGuideColor.ScriptBool),
}
end
Theme.setColors(getTokens())
studio.ThemeChanged:Connect(function()
studioTheme = studio.Theme
Theme.setColors(getTokens())
refreshCallback()
end)
end)
return success
end
Theme.setColors(DEFAULT_TOKEN_COLORS)
return Theme