From 647a4e8279065012dc045e5d309153a935f6145d Mon Sep 17 00:00:00 2001 From: Pas <74743263+Pasithea0@users.noreply.github.com> Date: Wed, 17 Dec 2025 15:21:00 -0700 Subject: [PATCH] add cobalt theme replace skyrealm --- src/assets/locales/en.json | 2 +- src/pages/parts/settings/AppearancePart.tsx | 10 +- themes/all.ts | 4 +- themes/list/cobalt.ts | 332 ++++++++++++++++++++ themes/list/skyrealm.ts | 248 --------------- 5 files changed, 340 insertions(+), 256 deletions(-) create mode 100644 themes/list/cobalt.ts delete mode 100644 themes/list/skyrealm.ts diff --git a/src/assets/locales/en.json b/src/assets/locales/en.json index 7f622f86..b7cb3005 100644 --- a/src/assets/locales/en.json +++ b/src/assets/locales/en.json @@ -1045,7 +1045,7 @@ "popsicle": "Popsicle", "hulk": "Hulk", "autumn": "Autumn", - "skyrealm": "SkyRealm", + "cobalt": "Cobalt", "frost": "Frost", "christmas": "Christmas" }, diff --git a/src/pages/parts/settings/AppearancePart.tsx b/src/pages/parts/settings/AppearancePart.tsx index 3bf00e5f..bae45075 100644 --- a/src/pages/parts/settings/AppearancePart.tsx +++ b/src/pages/parts/settings/AppearancePart.tsx @@ -95,6 +95,11 @@ const availableThemes = [ selector: "theme-spark", key: "settings.appearance.themes.spark", }, + { + id: "cobalt", + selector: "theme-cobalt", + key: "settings.appearance.themes.cobalt", + }, { id: "grape", selector: "theme-grape", @@ -125,11 +130,6 @@ const availableThemes = [ selector: "theme-christmas", key: "settings.appearance.themes.christmas", }, - { - id: "skyRealm", - selector: "theme-skyrealm", - key: "settings.appearance.themes.skyrealm", - }, ]; function ThemePreview(props: { diff --git a/themes/all.ts b/themes/all.ts index e970aa95..66fd7b3d 100644 --- a/themes/all.ts +++ b/themes/all.ts @@ -17,7 +17,7 @@ import wolverine from "./list/wolverine"; import popsicle from "./list/popsicle"; import hulk from "./list/hulk"; import autumn from "./list/autumn"; -import skyRealm from "./list/skyrealm"; +import cobalt from "./list/cobalt"; import frost from "./list/frost"; import christmas from "./list/christmas"; @@ -43,5 +43,5 @@ export const allThemes = [ wolverine, popsicle, christmas, - skyRealm, + cobalt, ]; diff --git a/themes/list/cobalt.ts b/themes/list/cobalt.ts new file mode 100644 index 00000000..a46463d7 --- /dev/null +++ b/themes/list/cobalt.ts @@ -0,0 +1,332 @@ +import { createTheme } from "../types"; + +const tokens = { + black: { + c50: "#000000", + c75: "#030303", + c80: "#080808", + c100: "#0d0d0d", + c125: "#141414", + c150: "#1a1a1a", + c200: "#262626", + c250: "#333333", + }, + white: "#FFFFFF", + semantic: { + red: { + c100: "#F46E6E", + c200: "#E44F4F", + c300: "#D74747", + c400: "#B43434", + }, + green: { + c100: "#60D26A", + c200: "#40B44B", + c300: "#31A33C", + c400: "#237A2B", + }, + silver: { + c100: "#DEDEDE", + c200: "#B6CAD7", + c300: "#8EA3B0", + c400: "#617A8A", + }, + yellow: { + c100: "#80EAFF", + c200: "#43DFFF", + c300: "#00D4FF", + c400: "#00B6E6", + }, + rose: { + c100: "#80EAFF", + c200: "#00B6E6", + c300: "#00D4FF", + c400: "#43DFFF", + }, + }, + blue: { + c50: "#ccccd6", + c100: "#a2a2a2", + c200: "#868686", + c300: "#646464", + c400: "#4e4e4e", + c500: "#383838", + c600: "#2e2e2e", + c700: "#272727", + c800: "#181818", + c900: "#0f0f0f", + }, + purple: { + c50: "#80EAFF", + c100: "#43DFFF", + c200: "#00D4FF", + c300: "#00B6E6", + c400: "#0099CC", + c500: "#007CAD", + c600: "#00668F", + c700: "#004F6E", + c800: "#00384D", + c900: "#002A3A", + }, + ash: { + c50: "#8d8d8d", + c100: "#6b6b6b", + c200: "#545454", + c300: "#3c3c3c", + c400: "#313131", + c500: "#2c2c2c", + c600: "#252525", + c700: "#1e1e1e", + c800: "#181818", + c900: "#111111", + }, + shade: { + c25: "#939393", + c50: "#7c7c7c", + c100: "#666666", + c200: "#4f4f4f", + c300: "#404040", + c400: "#343434", + c500: "#282828", + c600: "#202020", + c700: "#1a1a1a", + c800: "#151515", + c900: "#0e0e0e", + }, +}; + +export default createTheme({ + name: "cobalt", + extend: { + colors: { + themePreview: { + primary: tokens.black.c80, + secondary: tokens.purple.c400, + ghost: tokens.purple.c100, + }, + + pill: { + background: tokens.black.c100, + backgroundHover: tokens.black.c125, + highlight: tokens.blue.c200, + activeBackground: tokens.shade.c700, + }, + + global: { + accentA: tokens.purple.c200, + accentB: tokens.purple.c300, + }, + + lightBar: { + light: tokens.purple.c800, + }, + + buttons: { + toggle: tokens.purple.c300, + toggleDisabled: tokens.black.c200, + danger: tokens.semantic.rose.c300, + dangerHover: tokens.semantic.rose.c200, + + secondary: tokens.black.c100, + secondaryText: tokens.semantic.silver.c300, + secondaryHover: tokens.black.c150, + primary: tokens.white, + primaryText: tokens.black.c50, + primaryHover: tokens.semantic.silver.c100, + purple: tokens.purple.c600, + purpleHover: tokens.purple.c400, + cancel: tokens.black.c100, + cancelHover: tokens.black.c150, + }, + + background: { + main: tokens.black.c75, + secondary: tokens.black.c75, + secondaryHover: tokens.black.c75, + accentA: tokens.purple.c600, + accentB: tokens.black.c100, + }, + + modal: { + background: tokens.shade.c800, + }, + + type: { + logo: tokens.purple.c100, + emphasis: tokens.white, + text: tokens.shade.c50, + dimmed: tokens.shade.c50, + divider: tokens.ash.c500, + secondary: tokens.ash.c100, + danger: tokens.semantic.red.c100, + success: tokens.semantic.green.c100, + link: tokens.purple.c100, + linkHover: tokens.purple.c50, + }, + + search: { + background: tokens.black.c100, + hoverBackground: tokens.shade.c900, + focused: tokens.black.c125, + placeholder: tokens.shade.c200, + icon: tokens.shade.c500, + text: tokens.white, + }, + + mediaCard: { + hoverBackground: tokens.shade.c900, + hoverAccent: tokens.black.c250, + hoverShadow: tokens.black.c50, + shadow: tokens.shade.c800, + barColor: tokens.ash.c200, + barFillColor: tokens.purple.c100, + badge: tokens.shade.c700, + badgeText: tokens.ash.c100, + }, + + largeCard: { + background: tokens.black.c100, + icon: tokens.purple.c400, + }, + + dropdown: { + background: tokens.black.c100, + altBackground: tokens.black.c80, + hoverBackground: tokens.black.c150, + highlight: tokens.semantic.yellow.c400, + highlightHover: tokens.semantic.yellow.c200, + text: tokens.shade.c50, + secondary: tokens.shade.c100, + border: tokens.shade.c400, + contentBackground: tokens.black.c50, + }, + + authentication: { + border: tokens.shade.c300, + inputBg: tokens.black.c100, + inputBgHover: tokens.black.c150, + wordBackground: tokens.shade.c500, + copyText: tokens.shade.c100, + copyTextHover: tokens.ash.c50, + errorText: tokens.semantic.rose.c100, + }, + + settings: { + sidebar: { + activeLink: tokens.black.c100, + badge: tokens.shade.c900, + + type: { + secondary: tokens.shade.c200, + inactive: tokens.shade.c50, + icon: tokens.black.c200, + iconActivated: tokens.purple.c200, + activated: tokens.purple.c100, + }, + }, + + card: { + border: tokens.shade.c700, + background: tokens.black.c100, + altBackground: tokens.black.c100, + }, + + saveBar: { + background: tokens.black.c50, + }, + }, + + utils: { + divider: tokens.ash.c300, + }, + + onboarding: { + bar: tokens.shade.c400, + barFilled: tokens.purple.c300, + divider: tokens.shade.c200, + card: tokens.shade.c800, + cardHover: tokens.shade.c700, + border: tokens.shade.c600, + good: tokens.purple.c100, + best: tokens.semantic.yellow.c100, + link: tokens.purple.c100, + }, + + errors: { + card: tokens.black.c75, + border: tokens.ash.c500, + + type: { + secondary: tokens.ash.c100, + }, + }, + + about: { + circle: tokens.black.c100, + circleText: tokens.ash.c50, + }, + + editBadge: { + bg: tokens.ash.c500, + bgHover: tokens.ash.c400, + text: tokens.ash.c50, + }, + + progress: { + background: tokens.ash.c50, + preloaded: tokens.ash.c50, + filled: tokens.purple.c200, + }, + + video: { + buttonBackground: tokens.ash.c600, + + autoPlay: { + background: tokens.ash.c800, + hover: tokens.ash.c600, + }, + + scraping: { + card: tokens.black.c50, + error: tokens.semantic.red.c200, + success: tokens.semantic.green.c200, + loading: tokens.purple.c200, + noresult: tokens.black.c200, + }, + + audio: { + set: tokens.purple.c200, + }, + + context: { + background: tokens.black.c50, + light: tokens.shade.c50, + border: tokens.ash.c600, + hoverColor: tokens.ash.c600, + buttonFocus: tokens.ash.c500, + flagBg: tokens.ash.c500, + inputBg: tokens.black.c100, + buttonOverInputHover: tokens.ash.c500, + inputPlaceholder: tokens.ash.c200, + cardBorder: tokens.ash.c700, + slider: tokens.black.c200, + sliderFilled: tokens.purple.c200, + error: tokens.semantic.red.c200, + + buttons: { + list: tokens.ash.c700, + active: tokens.ash.c900, + }, + + closeHover: tokens.ash.c800, + + type: { + main: tokens.semantic.silver.c300, + secondary: tokens.ash.c200, + accent: tokens.purple.c200, + }, + }, + }, + }, + }, +}); diff --git a/themes/list/skyrealm.ts b/themes/list/skyrealm.ts deleted file mode 100644 index b16f2c91..00000000 --- a/themes/list/skyrealm.ts +++ /dev/null @@ -1,248 +0,0 @@ -import { createTheme } from "../types"; - -const tokens = { - petal: { - c50: "#fff0f5", - c100: "#ffdde9", - c200: "#ffbbd1", - c300: "#ff99bb", - c400: "#ff77a5", - c500: "#e65f8f", - c600: "#cc4779", - c700: "#b33263", - c800: "#991e4d", - c900: "#800f3a", - }, - dawn: { - c25: "#f0e9f5", - c50: "#e6d9f0", - c100: "#d7c2e8", - c200: "#c2a6dd", - c300: "#ad8ad2", - c400: "#9970c7", - c500: "#8558b5", - c600: "#6b4599", - c700: "#52337d", - c800: "#3a2361", - c900: "#261547", - }, - silk: { - c50: "#fdfdfd", - c100: "#faf8f9", - c200: "#f5f0f3", - c300: "#ede5ec", - c400: "#e6dae5", - c500: "#dfd0de", - c600: "#d0b8d0", - c700: "#c29fc2", - c800: "#b386b3", - c900: "#a66ea6", - }, - nectar: { - c50: "#fff9e6", - c100: "#fff3cc", - c200: "#ffe899", - c300: "#ffdd66", - c400: "#ffd233", - c500: "#e6b800", - c600: "#cca000", - c700: "#b38900", - c800: "#997100", - c900: "#805a00", - }, -}; - -export default createTheme({ - name: "skyRealm", - extend: { - colors: { - themePreview: { - primary: tokens.petal.c200, - secondary: tokens.dawn.c50, - }, - - pill: { - background: tokens.dawn.c300, - backgroundHover: tokens.dawn.c200, - highlight: tokens.petal.c200, - activeBackground: tokens.dawn.c300, - }, - - global: { - accentA: tokens.petal.c200, - accentB: tokens.petal.c300, - }, - - lightBar: { - light: tokens.petal.c400, - }, - - buttons: { - toggle: tokens.nectar.c300, - toggleDisabled: tokens.silk.c500, - - secondary: tokens.silk.c700, - secondaryHover: tokens.silk.c600, - purple: tokens.dawn.c500, - purpleHover: tokens.dawn.c400, - cancel: tokens.silk.c500, - cancelHover: tokens.silk.c300, - }, - - background: { - main: tokens.dawn.c900, - secondary: tokens.dawn.c600, - secondaryHover: tokens.dawn.c400, - accentA: tokens.nectar.c500, - accentB: tokens.petal.c500, - }, - - modal: { - background: tokens.dawn.c800, - }, - - type: { - logo: tokens.nectar.c100, - text: tokens.silk.c50, - dimmed: tokens.silk.c50, - divider: tokens.silk.c500, - secondary: tokens.silk.c100, - link: tokens.petal.c100, - linkHover: tokens.petal.c50, - }, - - search: { - background: tokens.dawn.c500, - hoverBackground: tokens.dawn.c600, - focused: tokens.dawn.c400, - placeholder: tokens.dawn.c100, - icon: tokens.dawn.c100, - }, - - mediaCard: { - hoverBackground: tokens.dawn.c600, - hoverAccent: tokens.dawn.c25, - hoverShadow: tokens.dawn.c900, - shadow: tokens.dawn.c700, - barColor: tokens.silk.c200, - barFillColor: tokens.petal.c100, - badge: tokens.dawn.c700, - badgeText: tokens.silk.c100, - }, - - largeCard: { - background: tokens.dawn.c600, - icon: tokens.petal.c400, - }, - - dropdown: { - background: tokens.dawn.c600, - altBackground: tokens.dawn.c700, - hoverBackground: tokens.dawn.c500, - text: tokens.silk.c50, - secondary: tokens.dawn.c100, - border: tokens.dawn.c400, - contentBackground: tokens.dawn.c500, - }, - - authentication: { - border: tokens.dawn.c300, - inputBg: tokens.dawn.c600, - inputBgHover: tokens.dawn.c500, - wordBackground: tokens.dawn.c500, - copyText: tokens.dawn.c100, - copyTextHover: tokens.silk.c50, - }, - - settings: { - sidebar: { - activeLink: tokens.dawn.c600, - badge: tokens.dawn.c900, - type: { - secondary: tokens.dawn.c200, - inactive: tokens.dawn.c50, - icon: tokens.dawn.c50, - iconActivated: tokens.petal.c200, - activated: tokens.petal.c50, - }, - }, - card: { - border: tokens.dawn.c400, - background: tokens.dawn.c400, - altBackground: tokens.dawn.c400, - }, - saveBar: { - background: tokens.dawn.c800, - }, - }, - - utils: { - divider: tokens.silk.c300, - }, - - errors: { - card: tokens.dawn.c800, - border: tokens.silk.c500, - type: { - secondary: tokens.silk.c100, - }, - }, - - about: { - circle: tokens.silk.c500, - circleText: tokens.silk.c50, - }, - - editBadge: { - bg: tokens.silk.c500, - bgHover: tokens.silk.c400, - text: tokens.silk.c50, - }, - - progress: { - background: tokens.silk.c50, - preloaded: tokens.silk.c50, - filled: tokens.petal.c200, - }, - - video: { - buttonBackground: tokens.silk.c200, - autoPlay: { - background: tokens.silk.c700, - hover: tokens.silk.c500, - }, - scraping: { - card: tokens.dawn.c700, - loading: tokens.petal.c200, - noresult: tokens.silk.c100, - }, - audio: { - set: tokens.petal.c200, - }, - context: { - background: tokens.silk.c900, - light: tokens.dawn.c50, - border: tokens.silk.c600, - hoverColor: tokens.silk.c600, - buttonFocus: tokens.silk.c500, - flagBg: tokens.silk.c500, - inputBg: tokens.silk.c600, - buttonOverInputHover: tokens.silk.c500, - inputPlaceholder: tokens.silk.c200, - cardBorder: tokens.silk.c700, - slider: tokens.silk.c50, - sliderFilled: tokens.petal.c200, - buttons: { - list: tokens.silk.c700, - active: tokens.silk.c900, - }, - closeHover: tokens.silk.c800, - type: { - secondary: tokens.silk.c200, - accent: tokens.petal.c200, - }, - }, - }, - }, - }, -});