-- Compiled with roblox-ts v3.0.0 local defaultSpace = { [0] = 0, [2] = 2, [4] = 4, [6] = 6, [8] = 8, [10] = 10, [12] = 12, [14] = 14, [16] = 16, [20] = 20, [24] = 24, [32] = 32, } local defaultRadius = { none = 0, sm = 4, md = 8, lg = 12, xl = 16, full = 999, } local defaultTypography = { labelSm = { font = Enum.Font.Gotham, textSize = 14, }, bodyMd = { font = Enum.Font.Gotham, textSize = 16, }, titleMd = { font = Enum.Font.GothamBold, textSize = 22, }, } local defaultLightTheme = { colors = { background = Color3.fromRGB(246, 249, 252), surface = Color3.fromRGB(233, 239, 246), surfaceElevated = Color3.fromRGB(255, 255, 255), border = Color3.fromRGB(193, 202, 214), textPrimary = Color3.fromRGB(27, 33, 44), textSecondary = Color3.fromRGB(79, 90, 107), accent = Color3.fromRGB(46, 114, 216), accentContrast = Color3.fromRGB(239, 245, 252), danger = Color3.fromRGB(167, 56, 64), dangerContrast = Color3.fromRGB(254, 236, 238), overlay = Color3.fromRGB(12, 16, 23), }, space = defaultSpace, radius = defaultRadius, typography = defaultTypography, } local defaultDarkTheme = { colors = { background = Color3.fromRGB(18, 21, 26), surface = Color3.fromRGB(32, 37, 46), surfaceElevated = Color3.fromRGB(40, 47, 60), border = Color3.fromRGB(72, 80, 98), textPrimary = Color3.fromRGB(233, 239, 246), textSecondary = Color3.fromRGB(176, 186, 201), accent = Color3.fromRGB(43, 105, 196), accentContrast = Color3.fromRGB(240, 244, 250), danger = Color3.fromRGB(129, 57, 63), dangerContrast = Color3.fromRGB(245, 223, 226), overlay = Color3.fromRGB(8, 10, 14), }, space = defaultSpace, radius = defaultRadius, typography = defaultTypography, } local function mergeTheme(baseTheme, partialTheme) if not partialTheme then local _object = {} local _left = "colors" local _object_1 = table.clone(baseTheme.colors) setmetatable(_object_1, nil) _object[_left] = _object_1 local _left_1 = "space" local _object_2 = table.clone(baseTheme.space) setmetatable(_object_2, nil) _object[_left_1] = _object_2 local _left_2 = "radius" local _object_3 = table.clone(baseTheme.radius) setmetatable(_object_3, nil) _object[_left_2] = _object_3 local _left_3 = "typography" local _object_4 = table.clone(baseTheme.typography) setmetatable(_object_4, nil) _object[_left_3] = _object_4 return _object end local _object = {} local _left = "colors" local _object_1 = table.clone(baseTheme.colors) setmetatable(_object_1, nil) for _k, _v in (partialTheme.colors or {}) do _object_1[_k] = _v end _object[_left] = _object_1 local _left_1 = "space" local _object_2 = table.clone(baseTheme.space) setmetatable(_object_2, nil) for _k, _v in (partialTheme.space or {}) do _object_2[_k] = _v end _object[_left_1] = _object_2 local _left_2 = "radius" local _object_3 = table.clone(baseTheme.radius) setmetatable(_object_3, nil) for _k, _v in (partialTheme.radius or {}) do _object_3[_k] = _v end _object[_left_2] = _object_3 local _left_3 = "typography" local _object_4 = table.clone(baseTheme.typography) setmetatable(_object_4, nil) for _k, _v in (partialTheme.typography or {}) do _object_4[_k] = _v end _object[_left_3] = _object_4 return _object end local function createTheme(partialTheme) return mergeTheme(defaultLightTheme, partialTheme) end return { createTheme = createTheme, defaultLightTheme = defaultLightTheme, defaultDarkTheme = defaultDarkTheme, }