add cobalt theme

replace skyrealm
This commit is contained in:
Pas 2025-12-17 15:21:00 -07:00
parent 36069f8193
commit 647a4e8279
5 changed files with 340 additions and 256 deletions

View file

@ -1045,7 +1045,7 @@
"popsicle": "Popsicle",
"hulk": "Hulk",
"autumn": "Autumn",
"skyrealm": "SkyRealm",
"cobalt": "Cobalt",
"frost": "Frost",
"christmas": "Christmas"
},

View file

@ -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: {

View file

@ -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,
];

332
themes/list/cobalt.ts Normal file
View file

@ -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,
},
},
},
},
},
});

View file

@ -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,
},
},
},
},
},
});