add a bunch of themes

This commit is contained in:
Pas 2025-05-03 18:19:46 -06:00
parent e1cf13cf3d
commit d512bf1cae
15 changed files with 3380 additions and 73 deletions

View file

@ -697,7 +697,16 @@
"green": "Green",
"mocha": "Mocha",
"pink": "Pink",
"ember": "Ember"
"noir": "Noir",
"ember": "Ember",
"acid": "Acid",
"spark": "Spark",
"grape": "Grape",
"spiderman": "Spiderman",
"forest": "Forest",
"wolverine": "Wolverine",
"popsicle": "Popsicle",
"hulk": "Hulk"
},
"title": "Appearance",
"options": {

View file

@ -42,6 +42,11 @@ const availableThemes = [
selector: "theme-green",
key: "settings.appearance.themes.green",
},
{
id: "forest",
selector: "theme-forest",
key: "settings.appearance.themes.forest",
},
{
id: "mocha",
selector: "theme-mocha",
@ -52,11 +57,51 @@ const availableThemes = [
selector: "theme-pink",
key: "settings.appearance.themes.pink",
},
{
id: "noir",
selector: "theme-noir",
key: "settings.appearance.themes.noir",
},
{
id: "ember",
selector: "theme-ember",
key: "settings.appearance.themes.ember",
},
{
id: "acid",
selector: "theme-acid",
key: "settings.appearance.themes.acid",
},
{
id: "spark",
selector: "theme-spark",
key: "settings.appearance.themes.spark",
},
{
id: "grape",
selector: "theme-grape",
key: "settings.appearance.themes.grape",
},
{
id: "spiderman",
selector: "theme-spiderman",
key: "settings.appearance.themes.spiderman",
},
{
id: "wolverine",
selector: "theme-wolverine",
key: "settings.appearance.themes.wolverine",
},
{
id: "hulk",
selector: "theme-hulk",
key: "settings.appearance.themes.hulk",
},
{
id: "popsicle",
selector: "theme-popsicle",
key: "settings.appearance.themes.popsicle",
},
];
function ThemePreview(props: {

View file

@ -7,6 +7,15 @@ import green from "./list/green";
import mocha from "./list/mocha";
import pink from "./list/pink";
import ember from "./list/ember";
import noir from "./list/noir";
import acid from "./list/acid";
import spark from "./list/spark";
import grape from "./list/grape";
import spiderman from "./list/spiderman";
import forest from "./list/forest";
import wolverine from "./list/wolverine";
import popsicle from "./list/popsicle";
import hulk from "./list/hulk";
export const allThemes = [
teal,
@ -15,7 +24,16 @@ export const allThemes = [
red,
classic,
green,
forest,
mocha,
pink,
ember
grape,
noir,
ember,
acid,
spark,
spiderman,
hulk,
wolverine,
popsicle,
]

343
themes/list/.classicold.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "#000000", // General black color
white: "#FFFFFF", // General white color
semantic: {
red: {
c100: "#F46E6E", // Error text
c200: "#E44F4F", // Video player scraping error
c300: "#D74747", // Danger button
c400: "#B43434", // Not currently used
},
green: {
c100: "#60D26A", // Success text
c200: "#40B44B", // Video player scraping success
c300: "#31A33C", // Not currently used
c400: "#237A2B", // Not currently used
},
silver: {
c100: "#DEDEDE", // Primary button hover
c200: "#B6CAD7", // Not currently used
c300: "#8EA3B0", // Secondary button text
c400: "#617A8A", // Main text in video player context
},
yellow: {
c100: "#FFF599", // Best onboarding highlight
c200: "#FCEC61", // Dropdown highlight hover
c300: "#D8C947", // Not currently used
c400: "#AFA349", // Dropdown highlight
},
rose: {
c100: "#DB3D61", // Authentication error text
c200: "#8A293B", // Danger button hover
c300: "#812435", // Danger button
c400: "#701B2B", // Not currently used
},
},
blue: {
c50: "#ADADF5", // Not currently used
c100: "#7979CC", // Not currently used
c200: "#5D5DAE", // Theme primary color, pill highlight, global accent A
c300: "#3B3B8C", // Global accent B
c400: "#2A2A71", // Light bar color
c500: "#1F1F50", // Background accent B
c600: "#1B1B41", // Not currently used
c700: "#171736", // Not currently used
c800: "#101020", // Not currently used
c900: "#0B0B13", // Not currently used
},
purple: {
c50: "#D5AAFF", // Link hover, settings tabs titles/text
c100: "#C082FF", // Link, logo text, video player audio set
c200: "#A359EC", // Progress filled, video player scraping loading, video player context accent
c300: "#8D44D6", // Toggle button, onboarding bar filled
c400: "#7831BF", // Large card icon
c500: "#572887", // Background accent A
c600: "#411F64", // Not currently used
c700: "#31184A", // Not currently used
c800: "#221134", // Not currently used
c900: "#160B22", // Not currently used
},
ash: {
c50: "#7F8D9B", // Authentication copy text hover, progress background, progress preloaded
c100: "#5B6B7B", // Secondary text, badge text, video player scraping no result
c200: "#445464", // Media card bar color, video player button background
c300: "#2B3D4E", // Cancel button hover, utils divider
c400: "#203242", // Card border and background, dropdown border, onboarding bar, edit badge hover, sidebar type
c500: "#1C2C3C", // Toggle disabled, cancel button, modal background, search hover background, media card shadow, settings save bar, errors card, about circle, edit badge background, video player button focus, video player flag background, video player input background, video player button over input hover
c600: "#172532", // Background secondary, dropdown alt background, dropdown border, onboarding card border
c700: "#131E29", // Secondary button, media card badge, onboarding card hover, video player context card border, video player context buttons list, video player close hover
c800: "#101820", // Background main, settings sidebar badge, errors border
c900: "#0C1216", // Media card hover shadow, settings sidebar active link, video player context background
},
shade: {
c25: "#5d5db3", // Media card hover accent
c50: "#676790", // Theme secondary color, text, dimmed text
c100: "#52527A", // Search placeholder and icon, dropdown secondary text
c200: "#3F3F60", // Pill background hover, onboarding divider
c300: "#32324F", // Pill background, authentication border, onboarding card
c400: "#272741", // Background secondary hover, dropdown border, onboarding bar, onboarding divider
c500: "#1E1E32", // Search background, search focus, dropdown hover background, dropdown content background, authentication input background hover, authentication word background
c600: "#171728", // Modal background, dropdown background, onboarding card border
c700: "#131322", // Dropdown alt background
c800: "#0F0F1B", // Background main, settings save bar, onboarding card
c900: "#0A0A12", // Media card hover shadow
},
}
export default createTheme({
name: "classic",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50,
ghost: tokens.white,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c400,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.shade.c600,
hoverAccent: tokens.shade.c25,
hoverShadow: tokens.shade.c900,
shadow: tokens.shade.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})

278
themes/list/acid.ts Normal file
View file

@ -0,0 +1,278 @@
import { createTheme } from "../types";
const tokens = {
white: "#FFFFFF",
black: {
c50: "#000000",
c75: "#030303",
c80: "#080808",
c100: "#0d0d0d",
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
},
semantic: {
silver: {
c100: "#DEDEDE",
c200: "#B6CAD7",
c300: "#8EA3B0",
c400: "#617A8A",
},
},
purple: {
c50: "#1f6e1f",
c100: "#1f8f1f",
c200: "#1fa11f",
c300: "#1fb31f",
c400: "#1fc41f",
c500: "#1fd61f",
c600: "#1aa31a",
c700: "#157f15",
c800: "#106010",
c900: "#0b3f0b",
c1000: "#021902FF",
},
shade: {
c50: "#7c7c7c",
c100: "#666666",
c200: "#4f4f4f",
c300: "#404040",
c400: "#343434",
c500: "#282828",
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
},
ash: {
c50: "#8d8d8d",
c100: "#6b6b6b",
c200: "#545454",
c300: "#3c3c3c",
c400: "#313131",
c500: "#2c2c2c",
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
},
blue: {
c50: "#ccccd6",
c100: "#a2a2a2",
c200: "#868686",
c300: "#646464",
c400: "#4e4e4e",
c500: "#383838",
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
export default createTheme({
name: "acid",
extend: {
colors: {
themePreview: {
primary: tokens.black.c80,
secondary: tokens.purple.c50,
},
pill: {
background: tokens.black.c100,
backgroundHover: tokens.black.c125,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c700,
},
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
},
lightBar: {
light: tokens.purple.c1000,
},
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.black.c200,
secondary: tokens.black.c100,
secondaryHover: tokens.black.c150,
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,
text: tokens.shade.c50,
dimmed: tokens.shade.c50,
divider: tokens.ash.c500,
secondary: tokens.ash.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
},
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,
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
},
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
},
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,
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,
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
});

View file

@ -1,88 +1,88 @@
import { createTheme } from "../types";
const tokens = {
black: "#000000", // General black color
white: "#FFFFFF", // General white color
black: "hsla(0, 0%, 0%, 1)", // General black color
white: "hsla(0, 0%, 100%, 1)", // General white color
semantic: {
red: {
c100: "#F46E6E", // Error text
c200: "#E44F4F", // Video player scraping error
c300: "#D74747", // Danger button
c400: "#B43434", // Not currently used
c100: "hsla(0, 86%, 69%, 1)", // Error text
c200: "hsla(0, 73%, 60%, 1)", // Video player scraping error
c300: "hsla(0, 66%, 56%, 1)", // Danger button
c400: "hsla(0, 55%, 45%, 1)", // Not currently used
},
green: {
c100: "#60D26A", // Success text
c200: "#40B44B", // Video player scraping success
c300: "#31A33C", // Not currently used
c400: "#237A2B", // Not currently used
c100: "hsla(125, 60%, 60%, 1)", // Success text
c200: "hsla(125, 49%, 48%, 1)", // Video player scraping success
c300: "hsla(125, 54%, 42%, 1)", // Not currently used
c400: "hsla(125, 54%, 31%, 1)", // Not currently used
},
silver: {
c100: "#DEDEDE", // Primary button hover
c200: "#B6CAD7", // Not currently used
c300: "#8EA3B0", // Secondary button text
c400: "#617A8A", // Main text in video player context
c100: "hsla(0, 0%, 87%, 1)", // Primary button hover
c200: "hsla(206, 33%, 78%, 1)", // Not currently used
c300: "hsla(206, 19%, 62%, 1)", // Secondary button text
c400: "hsla(206, 18%, 46%, 1)", // Main text in video player context
},
yellow: {
c100: "#FFF599", // Best onboarding highlight
c200: "#FCEC61", // Dropdown highlight hover
c300: "#D8C947", // Not currently used
c400: "#AFA349", // Dropdown highlight
c100: "hsla(56, 100%, 80%, 1)", // Best onboarding highlight
c200: "hsla(56, 96%, 68%, 1)", // Dropdown highlight hover
c300: "hsla(56, 55%, 56%, 1)", // Not currently used
c400: "hsla(56, 38%, 48%, 1)", // Dropdown highlight
},
rose: {
c100: "#DB3D61", // Authentication error text
c200: "#8A293B", // Danger button hover
c300: "#812435", // Danger button
c400: "#701B2B", // Not currently used
c100: "hsla(348, 68%, 55%, 1)", // Authentication error text
c200: "hsla(348, 55%, 35%, 1)", // Danger button hover
c300: "hsla(348, 57%, 32%, 1)", // Danger button
c400: "hsla(348, 60%, 27%, 1)", // Not currently used
},
},
blue: {
c50: "#ADADF5", // Not currently used
c100: "#7979CC", // Not currently used
c200: "#5D5DAE", // Theme primary color, pill highlight, global accent A
c300: "#3B3B8C", // Global accent B
c400: "#2A2A71", // Light bar color
c500: "#1F1F50", // Background accent B
c600: "#1B1B41", // Not currently used
c700: "#171736", // Not currently used
c800: "#101020", // Not currently used
c900: "#0B0B13", // Not currently used
c50: "hsla(240, 80%, 82%, 1)", // Not currently used
c100: "hsla(240, 40%, 64%, 1)", // Not currently used
c200: "hsla(240, 33%, 52%, 1)", // Theme primary color, pill highlight, global accent A
c300: "hsla(240, 40%, 39%, 1)", // Global accent B
c400: "hsla(240, 46%, 30%, 1)", // Light bar color
c500: "hsla(240, 45%, 22%, 1)", // Background accent B
c600: "hsla(240, 42%, 18%, 1)", // Not currently used
c700: "hsla(240, 40%, 15%, 1)", // Not currently used
c800: "hsla(240, 33%, 9%, 1)", // Not currently used
c900: "hsla(240, 25%, 6%, 1)", // Not currently used
},
purple: {
c50: "#D5AAFF", // Link hover, settings tabs titles/text
c100: "#C082FF", // Link, logo text, video player audio set
c200: "#A359EC", // Progress filled, video player scraping loading, video player context accent
c300: "#8D44D6", // Toggle button, onboarding bar filled
c400: "#7831BF", // Large card icon
c500: "#572887", // Background accent A
c600: "#411F64", // Not currently used
c700: "#31184A", // Not currently used
c800: "#221134", // Not currently used
c900: "#160B22", // Not currently used
c50: "hsla(280, 100%, 83%, 1)", // Link hover, settings tabs titles/text
c100: "hsla(270, 100%, 75%, 1)", // Link, logo text, video player audio set
c200: "hsla(270, 79%, 64%, 1)", // Progress filled, video player scraping loading, video player context accent
c300: "hsla(270, 61%, 55%, 1)", // Toggle button, onboarding bar filled
c400: "hsla(270, 59%, 47%, 1)", // Large card icon
c500: "hsla(270, 52%, 34%, 1)", // Background accent A
c600: "hsla(270, 52%, 26%, 1)", // Not currently used
c700: "hsla(270, 50%, 19%, 1)", // Not currently used
c800: "hsla(270, 48%, 14%, 1)", // Not currently used
c900: "hsla(270, 40%, 9%, 1)", // Not currently used
},
ash: {
c50: "#7F8D9B", // Authentication copy text hover, progress background, progress preloaded
c100: "#5B6B7B", // Secondary text, badge text, video player scraping no result
c200: "#445464", // Media card bar color, video player button background
c300: "#2B3D4E", // Cancel button hover, utils divider
c400: "#203242", // Card border and background, dropdown border, onboarding bar, edit badge hover, sidebar type
c500: "#1C2C3C", // Toggle disabled, cancel button, modal background, search hover background, media card shadow, settings save bar, errors card, about circle, edit badge background, video player button focus, video player flag background, video player input background, video player button over input hover
c600: "#172532", // Background secondary, dropdown alt background, dropdown border, onboarding card border
c700: "#131E29", // Secondary button, media card badge, onboarding card hover, video player context card border, video player context buttons list, video player close hover
c800: "#101820", // Background main, settings sidebar badge, errors border
c900: "#0C1216", // Media card hover shadow, settings sidebar active link, video player context background
c50: "hsla(210, 11%, 55%, 1)", // Authentication copy text hover, progress background, progress preloaded
c100: "hsla(210, 15%, 42%, 1)", // Secondary text, badge text, video player scraping no result
c200: "hsla(210, 17%, 33%, 1)", // Media card bar color, video player button background
c300: "hsla(210, 29%, 24%, 1)", // Cancel button hover, utils divider
c400: "hsla(210, 35%, 19%, 1)", // Card border and background, dropdown border, onboarding bar, edit badge hover, sidebar type
c500: "hsla(210, 35%, 17%, 1)", // Toggle disabled, cancel button, modal background, search hover background, media card shadow, settings save bar, errors card, about circle, edit badge background, video player button focus, video player flag background, video player input background, video player button over input hover
c600: "hsla(210, 32%, 14%, 1)", // Background secondary, dropdown alt background, dropdown border, onboarding card border
c700: "hsla(210, 35%, 12%, 1)", // Secondary button, media card badge, onboarding card hover, video player context card border, video player context buttons list, video player close hover
c800: "hsla(210, 33%, 9%, 1)", // Background main, settings sidebar badge, errors border
c900: "hsla(210, 25%, 7%, 1)", // Media card hover shadow, settings sidebar active link, video player context background
},
shade: {
c25: "#5d5db3", // Media card hover accent
c50: "#676790", // Theme secondary color, text, dimmed text
c100: "#52527A", // Search placeholder and icon, dropdown secondary text
c200: "#3F3F60", // Pill background hover, onboarding divider
c300: "#32324F", // Pill background, authentication border, onboarding card
c400: "#272741", // Background secondary hover, dropdown border, onboarding bar, onboarding divider
c500: "#1E1E32", // Search background, search focus, dropdown hover background, dropdown content background, authentication input background hover, authentication word background
c600: "#171728", // Modal background, dropdown background, onboarding card border
c700: "#131322", // Dropdown alt background
c800: "#0F0F1B", // Background main, settings save bar, onboarding card
c900: "#0A0A12", // Media card hover shadow
c25: "hsla(240, 33%, 53%, 1)", // Media card hover accent
c50: "hsla(240, 17%, 48%, 1)", // Theme secondary color, text, dimmed text
c100: "hsla(240, 20%, 40%, 1)", // Search placeholder and icon, dropdown secondary text
c200: "hsla(240, 20%, 31%, 1)", // Pill background hover, onboarding divider
c300: "hsla(240, 22%, 25%, 1)", // Pill background, authentication border, onboarding card
c400: "hsla(240, 25%, 21%, 1)", // Background secondary hover, dropdown border, onboarding bar, onboarding divider
c500: "hsla(240, 26%, 16%, 1)", // Search background, search focus, dropdown hover background, dropdown content background, authentication input background hover, authentication word background
c600: "hsla(240, 31%, 12%, 1)", // Modal background, dropdown background, onboarding card border
c700: "hsla(240, 29%, 10%, 1)", // Dropdown alt background
c800: "hsla(240, 30%, 8%, 1)", // Background main, settings save bar, onboarding card
c900: "hsla(240, 29%, 5%, 1)", // Media card hover shadow
},
}

View file

@ -21,16 +21,17 @@ const tokens = {
},
},
purple: {
c50: "#8E2020FF",
c100: "#e60000",
c200: "#e60000",
c300: "#e60000",
c400: "#e60000",
c500: "#cc0000",
c50: "#8E2020",
c100: "#CF1F1F",
c200: "#CF1F1F",
c300: "#CF1F1F",
c400: "#CF1F1F",
c500: "#CF1F1F",
c600: "#b30000",
c700: "#8a0000",
c800: "#660000",
c900: "#400000"
c900: "#400000",
c1000: "#180101FF",
},
shade: {
c50: "#7c7c7c",
@ -92,7 +93,7 @@ export default createTheme({
},
lightBar: {
light: tokens.shade.c900,
light: tokens.purple.c1000,
},
buttons: {

343
themes/list/forest.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "hsla(0, 0%, 0%, 1)", // General black color
white: "hsla(0, 0%, 100%, 1)", // General white color
semantic: {
red: {
c100: "hsla(0, 86%, 69%, 1)", // Error text
c200: "hsla(0, 73%, 60%, 1)", // Video player scraping error
c300: "hsla(0, 66%, 56%, 1)", // Danger button
c400: "hsla(0, 55%, 45%, 1)", // Not currently used
},
green: {
c100: "hsla(125, 60%, 60%, 1)", // Success text
c200: "hsla(125, 49%, 48%, 1)", // Video player scraping success
c300: "hsla(125, 54%, 42%, 1)", // Not currently used
c400: "hsla(125, 54%, 31%, 1)", // Not currently used
},
silver: {
c100: "hsla(0, 0%, 87%, 1)", // Primary button hover
c200: "hsla(206, 33%, 78%, 1)", // Not currently used
c300: "hsla(206, 19%, 62%, 1)", // Secondary button text
c400: "hsla(206, 18%, 46%, 1)", // Main text in video player context
},
yellow: {
c100: "hsla(56, 100%, 80%, 1)", // Best onboarding highlight
c200: "hsla(56, 96%, 68%, 1)", // Dropdown highlight hover
c300: "hsla(56, 55%, 56%, 1)", // Not currently used
c400: "hsla(56, 38%, 48%, 1)", // Dropdown highlight
},
rose: {
c100: "hsla(348, 68%, 55%, 1)", // Authentication error text
c200: "hsla(348, 55%, 35%, 1)", // Danger button hover
c300: "hsla(348, 57%, 32%, 1)", // Danger button
c400: "hsla(348, 60%, 27%, 1)", // Not currently used
},
},
blue: {
c50: "hsla(113, 31%, 64%, 1)",
c100: "hsla(116, 22%, 51%, 1)",
c200: "hsla(121, 23%, 40%, 1)",
c300: "hsla(123, 27%, 32%, 1)",
c400: "hsla(123, 28%, 25%, 1)",
c500: "hsla(124, 30%, 20%, 1)",
c600: "hsla(128, 32%, 15%, 1)",
c700: "hsla(126, 32%, 12%, 1)",
c800: "hsla(124, 32%, 9%, 1)",
c900: "hsla(120, 33%, 6%, 1)"
},
purple: {
c50: "hsla(116, 24%, 53%, 1)",
c100: "hsla(115, 26%, 40%, 1)",
c200: "hsla(119, 28%, 33%, 1)",
c300: "hsla(119, 31%, 26%, 1)",
c400: "hsla(120, 32%, 22%, 1)",
c500: "hsla(122, 34%, 18%, 1)",
c600: "hsla(118, 37%, 14%, 1)",
c700: "hsla(120, 37%, 11%, 1)",
c800: "hsla(120, 38%, 8%, 1)",
c900: "hsla(120, 41%, 5%, 1)"
},
ash: {
c50: "hsla(144, 11%, 47%, 1)",
c100: "hsla(145, 12%, 38%, 1)",
c200: "hsla(146, 13%, 31%, 1)",
c300: "hsla(147, 15%, 24%, 1)",
c400: "hsla(142, 16%, 20%, 1)",
c500: "hsla(146, 18%, 15%, 1)",
c600: "hsla(145, 20%, 12%, 1)",
c700: "hsla(140, 19%, 9%, 1)",
c800: "hsla(130, 18%, 7%, 1)",
c900: "hsla(120, 18%, 4%, 1)"
},
shade: {
c25: "hsla(120, 27%, 40%, 1)",
c50: "hsla(120, 26%, 34%, 1)",
c100: "hsla(120, 25%, 28%, 1)",
c200: "hsla(120, 25%, 23%, 1)",
c300: "hsla(120, 26%, 19%, 1)",
c400: "hsla(120, 27%, 15%, 1)",
c500: "hsla(120, 28%, 11%, 1)",
c600: "hsla(120, 29%, 9%, 1)",
c700: "hsla(120, 29%, 7%, 1)",
c800: "hsla(120, 39%, 5%, 1)",
c900: "hsla(120, 33%, 2%, 1)"
},
}
export default createTheme({
name: "forest",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50,
ghost: tokens.white,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c800,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.shade.c600,
hoverAccent: tokens.shade.c25,
hoverShadow: tokens.shade.c900,
shadow: tokens.shade.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})

343
themes/list/grape.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "#000000", // General black color
white: "#FFFFFF", // General white color
semantic: {
red: {
c100: "#F46E6E", // Error text
c200: "#E44F4F", // Video player scraping error
c300: "#D74747", // Danger button
c400: "#B43434", // Not currently used
},
green: {
c100: "#60D26A", // Success text
c200: "#40B44B", // Video player scraping success
c300: "#31A33C", // Not currently used
c400: "#237A2B", // Not currently used
},
silver: {
c100: "#DEDEDE", // Primary button hover
c200: "#B6CAD7", // Not currently used
c300: "#8EA3B0", // Secondary button text
c400: "#617A8A", // Main text in video player context
},
yellow: {
c100: "#FFF599", // Best onboarding highlight
c200: "#FCEC61", // Dropdown highlight hover
c300: "#D8C947", // Not currently used
c400: "#AFA349", // Dropdown highlight
},
rose: {
c100: "#DB3D61", // Authentication error text
c200: "#8A293B", // Danger button hover
c300: "#812435", // Danger button
c400: "#701B2B", // Not currently used
},
},
blue: {
c50: "#c2a6ff",
c100: "#a182ff",
c200: "#825eff",
c300: "#6541e6",
c400: "#4c31cc",
c500: "#3a24a3",
c600: "#2f1c80",
c700: "#241561",
c800: "#180e42",
c900: "#100a2c",
},
purple: {
c50: "#f0b3ff",
c100: "#e080ff",
c200: "#cc4dff",
c300: "#b320f0",
c400: "#9917cc",
c500: "#701199",
c600: "#530c73",
c700: "#3b0852",
c800: "#280638",
c900: "#180425",
},
ash: {
c50: "#9b8fb1",
c100: "#7e7195",
c200: "#62577a",
c300: "#4a4061",
c400: "#3b334e",
c500: "#30293f",
c600: "#251f31",
c700: "#1c1726",
c800: "#15101b",
c900: "#0f0a12",
},
shade: {
c25: "#8a4de0",
c50: "#7555a8",
c100: "#604585",
c200: "#4b3666",
c300: "#3d2b50",
c400: "#312240",
c500: "#251931",
c600: "#1c1325",
c700: "#160f1d",
c800: "#110b16",
c900: "#0c0610",
}
}
export default createTheme({
name: "grape",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50,
ghost: tokens.white,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c800,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.shade.c600,
hoverAccent: tokens.shade.c25,
hoverShadow: tokens.shade.c900,
shadow: tokens.shade.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})

343
themes/list/hulk.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "#000000", // General black color
white: "#FFFFFF", // General white color
semantic: {
red: {
c100: "#F46E6E", // Error text
c200: "#E44F4F", // Video player scraping error
c300: "#D74747", // Danger button
c400: "#B43434", // Not currently used
},
green: {
c100: "#60D26A", // Success text
c200: "#40B44B", // Video player scraping success
c300: "#31A33C", // Not currently used
c400: "#237A2B", // Not currently used
},
silver: {
c100: "#DEDEDE", // Primary button hover
c200: "#B6CAD7", // Not currently used
c300: "#8EA3B0", // Secondary button text
c400: "#617A8A", // Main text in video player context
},
yellow: {
c100: "#FFF599", // Best onboarding highlight
c200: "#FCEC61", // Dropdown highlight hover
c300: "#D8C947", // Not currently used
c400: "#AFA349", // Dropdown highlight
},
rose: {
c100: "#DB3D61", // Authentication error text
c200: "#8A293B", // Danger button hover
c300: "#812435", // Danger button
c400: "#701B2B", // Not currently used
},
},
blue: {
c50: "hsla(285, 80%, 85%, 1)",
c100: "hsla(285, 70%, 75%, 1)",
c200: "hsla(285, 65%, 60%, 1)",
c300: "hsla(285, 60%, 48%, 1)",
c400: "hsla(285, 55%, 38%, 1)",
c500: "hsla(285, 50%, 30%, 1)",
c600: "hsla(285, 45%, 24%, 1)",
c700: "hsla(285, 40%, 18%, 1)",
c800: "hsla(285, 35%, 12%, 1)",
c900: "hsla(285, 30%, 9%, 1)",
},
purple: {
c50: "hsla(290, 80%, 85%, 1)",
c100: "hsla(290, 70%, 75%, 1)",
c200: "hsla(290, 65%, 60%, 1)",
c300: "hsla(290, 60%, 48%, 1)",
c400: "hsla(290, 55%, 38%, 1)",
c500: "hsla(290, 50%, 30%, 1)",
c600: "hsla(290, 45%, 24%, 1)",
c700: "hsla(290, 40%, 18%, 1)",
c800: "hsla(290, 35%, 12%, 1)",
c900: "hsla(290, 30%, 9%, 1)",
},
ash: {
c50: "hsla(120, 30%, 60%, 1)",
c100: "hsla(120, 35%, 50%, 1)",
c200: "hsla(120, 40%, 42%, 1)",
c300: "hsla(120, 45%, 32%, 1)",
c400: "hsla(120, 45%, 26%, 1)",
c500: "hsla(120, 40%, 22%, 1)",
c600: "hsla(120, 35%, 18%, 1)",
c700: "hsla(120, 30%, 14%, 1)",
c800: "hsla(120, 25%, 10%, 1)",
c900: "hsla(120, 20%, 7%, 1)",
},
shade: {
c25: "hsla(135, 30%, 55%, 1)",
c50: "hsla(135, 28%, 48%, 1)",
c100: "hsla(135, 26%, 40%, 1)",
c200: "hsla(135, 24%, 32%, 1)",
c300: "hsla(135, 22%, 26%, 1)",
c400: "hsla(135, 20%, 22%, 1)",
c500: "hsla(135, 18%, 17%, 1)",
c600: "hsla(135, 17%, 13%, 1)",
c700: "hsla(135, 16%, 10%, 1)",
c800: "hsla(135, 15%, 8%, 1)",
c900: "hsla(135, 14%, 6%, 1)",
},
}
export default createTheme({
name: "hulk",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50,
ghost: tokens.white,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c800,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.shade.c600,
hoverAccent: tokens.shade.c25,
hoverShadow: tokens.shade.c900,
shadow: tokens.shade.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})

277
themes/list/noir.ts Normal file
View file

@ -0,0 +1,277 @@
import { createTheme } from "../types";
const tokens = {
white: "#FFFFFF",
black: {
c50: "#000000",
c75: "#030303",
c80: "#080808",
c100: "#0d0d0d",
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
},
semantic: {
silver: {
c100: "#DEDEDE",
c200: "#B6CAD7",
c300: "#8EA3B0",
c400: "#617A8A",
},
},
purple: {
c50: "#575757FF",
c100: "#575757FF",
c200: "#575757FF",
c300: "#575757FF",
c400: "#575757FF",
c500: "#575757FF",
c600: "#2c2c2c",
c700: "#202020",
c800: "#151515",
c900: "#0a0a0a"
},
shade: {
c50: "#7c7c7c",
c100: "#666666",
c200: "#4f4f4f",
c300: "#404040",
c400: "#343434",
c500: "#282828",
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
},
ash: {
c50: "#8d8d8d",
c100: "#6b6b6b",
c200: "#545454",
c300: "#3c3c3c",
c400: "#313131",
c500: "#2c2c2c",
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
},
blue: {
c50: "#ccccd6",
c100: "#a2a2a2",
c200: "#868686",
c300: "#646464",
c400: "#4e4e4e",
c500: "#383838",
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
export default createTheme({
name: "noir",
extend: {
colors: {
themePreview: {
primary: tokens.black.c80,
secondary: tokens.black.c100
},
pill: {
background: tokens.black.c100,
backgroundHover: tokens.black.c125,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c700,
},
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
},
lightBar: {
light: tokens.shade.c900,
},
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.black.c200,
secondary: tokens.black.c100,
secondaryHover: tokens.black.c150,
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,
text: tokens.shade.c50,
dimmed: tokens.shade.c50,
divider: tokens.ash.c500,
secondary: tokens.ash.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
},
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,
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
},
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
},
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,
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,
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
});

343
themes/list/popsicle.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "hsla(0, 0%, 0%, 1)", // General black color
white: "hsla(0, 0%, 100%, 1)", // General white color
semantic: {
red: {
c100: "hsla(0, 86%, 69%, 1)", // Error text
c200: "hsla(0, 73%, 60%, 1)", // Video player scraping error
c300: "hsla(0, 66%, 56%, 1)", // Danger button
c400: "hsla(0, 55%, 45%, 1)", // Not currently used
},
green: {
c100: "hsla(125, 60%, 60%, 1)", // Success text
c200: "hsla(125, 49%, 48%, 1)", // Video player scraping success
c300: "hsla(125, 54%, 42%, 1)", // Not currently used
c400: "hsla(125, 54%, 31%, 1)", // Not currently used
},
silver: {
c100: "hsla(0, 0%, 87%, 1)", // Primary button hover
c200: "hsla(206, 33%, 78%, 1)", // Not currently used
c300: "hsla(206, 19%, 62%, 1)", // Secondary button text
c400: "hsla(206, 18%, 46%, 1)", // Main text in video player context
},
yellow: {
c100: "hsla(56, 100%, 80%, 1)", // Best onboarding highlight
c200: "hsla(56, 96%, 68%, 1)", // Dropdown highlight hover
c300: "hsla(56, 55%, 56%, 1)", // Not currently used
c400: "hsla(56, 38%, 48%, 1)", // Dropdown highlight
},
rose: {
c100: "hsla(348, 68%, 55%, 1)", // Authentication error text
c200: "hsla(348, 55%, 35%, 1)", // Danger button hover
c300: "hsla(348, 57%, 32%, 1)", // Danger button
c400: "hsla(348, 60%, 27%, 1)", // Not currently used
},
},
blue: {
c50: "hsla(200, 100%, 85%, 1)", // soft cyan
c100: "hsla(200, 80%, 70%, 1)", // brighter cyan
c200: "hsla(200, 70%, 60%, 1)", // theme primary: cyan-blue
c300: "hsla(200, 60%, 45%, 1)", // accent B: darker cyan-blue
c400: "hsla(200, 50%, 35%, 1)", // light bar
c500: "hsla(200, 45%, 25%, 1)", // accent B background
c600: "hsla(200, 42%, 20%, 1)",
c700: "hsla(200, 40%, 16%, 1)",
c800: "hsla(200, 35%, 10%, 1)",
c900: "hsla(200, 30%, 7%, 1)",
},
purple: {
c50: "hsla(280, 100%, 85%, 1)", // lavender for link hover
c100: "hsla(300, 100%, 75%, 1)", // pink-violet logo/link
c200: "hsla(300, 80%, 65%, 1)", // pinkish progress/loader
c300: "hsla(310, 65%, 55%, 1)", // toggle/onboarding bar
c400: "hsla(320, 60%, 47%, 1)", // card icon
c500: "hsla(325, 50%, 36%, 1)", // accent A background
c600: "hsla(325, 50%, 28%, 1)",
c700: "hsla(325, 50%, 20%, 1)",
c800: "hsla(325, 45%, 14%, 1)",
c900: "hsla(325, 40%, 9%, 1)",
},
ash: {
c50: "hsla(60, 8%, 60%, 1)", // neutral gold-tinted gray
c100: "hsla(60, 10%, 45%, 1)", // warm muted gray
c200: "hsla(60, 11%, 35%, 1)", // sidebar border
c300: "hsla(60, 12%, 28%, 1)", // card divider
c400: "hsla(60, 14%, 22%, 1)", // bg + hover accents
c500: "hsla(200, 45%, 25%, 1)", // accent B background
c600: "hsla(200, 42%, 20%, 1)",
c700: "hsla(200, 40%, 16%, 1)",
c800: "hsla(200, 35%, 10%, 1)",
c900: "hsla(200, 30%, 7%, 1)", // deepest shade, shadows
},
shade: {
c25: "hsla(0, 80%, 70%, 1)", // red hover accent
c50: "hsla(30, 100%, 72%, 1)", // orange for main text
c100: "hsla(30, 80%, 60%, 1)", // placeholder/icon
c200: "hsla(200, 60%, 45%, 1)", // hover bg
c300: "hsla(30, 60%, 35%, 1)", // pill background, auth border
c400: "hsla(200, 50%, 35%, 1)", // light bar
c500: "hsla(30, 50%, 21%, 1)", // dropdown background
c600: "hsla(30, 45%, 16%, 1)", // modal/dropdown background
c700: "hsla(30, 40%, 12%, 1)", // alt bg
c800: "hsla(30, 38%, 9%, 1)", // main bg
c900: "hsla(30, 35%, 6%, 1)", // hover shadow
},
}
export default createTheme({
name: "popsicle",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50,
ghost: tokens.purple.c400,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c400,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.purple.c900,
hoverAccent: tokens.blue.c100,
hoverShadow: tokens.shade.c900,
shadow: tokens.purple.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})

278
themes/list/spark.ts Normal file
View file

@ -0,0 +1,278 @@
import { createTheme } from "../types";
const tokens = {
white: "#FFFFFF",
black: {
c50: "#000000",
c75: "#030303",
c80: "#080808",
c100: "#0d0d0d",
c125: "#141414",
c150: "#1a1a1a",
c200: "#262626",
c250: "#333333"
},
semantic: {
silver: {
c100: "#DEDEDE",
c200: "#B6CAD7",
c300: "#8EA3B0",
c400: "#617A8A",
},
},
purple: {
c50: "#E0AC0DFF",
c100: "#CF9F11FF",
c200: "#CF9F11FF",
c300: "#CF9F11FF",
c400: "#E0AC0DFF",
c500: "#C5A00AFF",
c600: "#C5A00AFF",
c700: "#aa9500",
c800: "#7f6f00",
c900: "#4d4700",
c1000: "#201A03FF",
},
shade: {
c50: "#7c7c7c",
c100: "#666666",
c200: "#4f4f4f",
c300: "#404040",
c400: "#343434",
c500: "#282828",
c600: "#202020",
c700: "#1a1a1a",
c800: "#151515",
c900: "#0e0e0e"
},
ash: {
c50: "#8d8d8d",
c100: "#6b6b6b",
c200: "#545454",
c300: "#3c3c3c",
c400: "#313131",
c500: "#2c2c2c",
c600: "#252525",
c700: "#1e1e1e",
c800: "#181818",
c900: "#111111"
},
blue: {
c50: "#ccccd6",
c100: "#a2a2a2",
c200: "#868686",
c300: "#646464",
c400: "#4e4e4e",
c500: "#383838",
c600: "#2e2e2e",
c700: "#272727",
c800: "#181818",
c900: "#0f0f0f"
}
}
export default createTheme({
name: "spark",
extend: {
colors: {
themePreview: {
primary: tokens.black.c80,
secondary: tokens.purple.c50,
},
pill: {
background: tokens.black.c100,
backgroundHover: tokens.black.c125,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c700,
},
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300
},
lightBar: {
light: tokens.purple.c1000,
},
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.black.c200,
secondary: tokens.black.c100,
secondaryHover: tokens.black.c150,
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,
text: tokens.shade.c50,
dimmed: tokens.shade.c50,
divider: tokens.ash.c500,
secondary: tokens.ash.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
},
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,
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
},
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
},
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,
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,
buttons: {
list: tokens.ash.c700,
active: tokens.ash.c900
},
closeHover: tokens.ash.c800,
type: {
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
main: tokens.semantic.silver.c300
}
}
}
}
}
});

343
themes/list/spiderman.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "#000000", // General black color
white: "#FFFFFF", // General white color
semantic: {
red: {
c100: "#F46E6E", // Error text
c200: "#E44F4F", // Video player scraping error
c300: "#D74747", // Danger button
c400: "#B43434", // Not currently used
},
green: {
c100: "#60D26A", // Success text
c200: "#40B44B", // Video player scraping success
c300: "#31A33C", // Not currently used
c400: "#237A2B", // Not currently used
},
silver: {
c100: "#DEDEDE", // Primary button hover
c200: "#B6CAD7", // Not currently used
c300: "#8EA3B0", // Secondary button text
c400: "#617A8A", // Main text in video player context
},
yellow: {
c100: "#FFF599", // Best onboarding highlight
c200: "#FCEC61", // Dropdown highlight hover
c300: "#D8C947", // Not currently used
c400: "#AFA349", // Dropdown highlight
},
rose: {
c100: "#DB3D61", // Authentication error text
c200: "#8A293B", // Danger button hover
c300: "#812435", // Danger button
c400: "#701B2B", // Not currently used
},
},
blue: {
c50: "hsla(220, 80%, 80%, 1)",
c100: "hsla(220, 65%, 68%, 1)",
c200: "hsla(220, 60%, 55%, 1)",
c300: "hsla(220, 65%, 42%, 1)",
c400: "hsla(220, 70%, 32%, 1)",
c500: "hsla(220, 65%, 25%, 1)",
c600: "hsla(220, 60%, 20%, 1)",
c700: "hsla(220, 55%, 15%, 1)",
c800: "hsla(220, 40%, 10%, 1)",
c900: "hsla(220, 30%, 7%, 1)",
},
purple: {
c50: "hsla(220, 80%, 80%, 1)",
c100: "hsla(220, 65%, 68%, 1)",
c200: "hsla(220, 60%, 55%, 1)",
c300: "hsla(220, 65%, 42%, 1)",
c400: "hsla(220, 70%, 32%, 1)",
c500: "hsla(220, 65%, 25%, 1)",
c600: "hsla(220, 60%, 20%, 1)",
c700: "hsla(220, 55%, 15%, 1)",
c800: "hsla(220, 40%, 10%, 1)",
c900: "hsla(220, 30%, 7%, 1)",
},
ash: {
c50: "hsla(0, 60%, 60%, 1)",
c100: "hsla(0, 60%, 50%, 1)",
c200: "hsla(0, 65%, 42%, 1)",
c300: "hsla(0, 70%, 32%, 1)",
c400: "hsla(0, 70%, 26%, 1)",
c500: "hsla(0, 60%, 22%, 1)",
c600: "hsla(0, 50%, 18%, 1)",
c700: "hsla(0, 45%, 14%, 1)",
c800: "hsla(0, 35%, 10%, 1)",
c900: "hsla(0, 25%, 7%, 1)",
},
shade: {
c25: "hsla(0, 55%, 55%, 1)",
c50: "hsla(0, 50%, 48%, 1)",
c100: "hsla(0, 45%, 40%, 1)",
c200: "hsla(0, 40%, 31%, 1)",
c300: "hsla(0, 38%, 25%, 1)",
c400: "hsla(0, 35%, 21%, 1)",
c500: "hsla(0, 32%, 16%, 1)",
c600: "hsla(0, 30%, 12%, 1)",
c700: "hsla(0, 28%, 10%, 1)",
c800: "hsla(0, 26%, 8%, 1)",
c900: "hsla(0, 24%, 5%, 1)",
}
}
export default createTheme({
name: "spiderman",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.shade.c50,
ghost: tokens.white,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c800,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.shade.c600,
hoverAccent: tokens.shade.c25,
hoverShadow: tokens.shade.c900,
shadow: tokens.shade.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})

343
themes/list/wolverine.ts Normal file
View file

@ -0,0 +1,343 @@
import { createTheme } from "../types";
const tokens = {
black: "hsla(0, 0%, 0%, 1)", // General black color
white: "hsla(0, 0%, 100%, 1)", // General white color
semantic: {
red: {
c100: "hsla(0, 86%, 69%, 1)", // Error text
c200: "hsla(0, 73%, 60%, 1)", // Video player scraping error
c300: "hsla(0, 66%, 56%, 1)", // Danger button
c400: "hsla(0, 55%, 45%, 1)", // Not currently used
},
green: {
c100: "hsla(125, 60%, 60%, 1)", // Success text
c200: "hsla(125, 49%, 48%, 1)", // Video player scraping success
c300: "hsla(125, 54%, 42%, 1)", // Not currently used
c400: "hsla(125, 54%, 31%, 1)", // Not currently used
},
silver: {
c100: "hsla(0, 0%, 87%, 1)", // Primary button hover
c200: "hsla(206, 33%, 78%, 1)", // Not currently used
c300: "hsla(206, 19%, 62%, 1)", // Secondary button text
c400: "hsla(206, 18%, 46%, 1)", // Main text in video player context
},
yellow: {
c100: "hsla(56, 100%, 80%, 1)", // Best onboarding highlight
c200: "hsla(56, 96%, 68%, 1)", // Dropdown highlight hover
c300: "hsla(56, 55%, 56%, 1)", // Not currently used
c400: "hsla(56, 38%, 48%, 1)", // Dropdown highlight
},
rose: {
c100: "hsla(348, 68%, 55%, 1)", // Authentication error text
c200: "hsla(348, 55%, 35%, 1)", // Danger button hover
c300: "hsla(348, 57%, 32%, 1)", // Danger button
c400: "hsla(348, 60%, 27%, 1)", // Not currently used
},
},
blue: {
c50: "hsla(220, 80%, 80%, 1)",
c100: "hsla(220, 60%, 65%, 1)",
c200: "hsla(220, 50%, 50%, 1)",
c300: "hsla(220, 55%, 40%, 1)",
c400: "hsla(220, 60%, 30%, 1)",
c500: "hsla(220, 55%, 22%, 1)",
c600: "hsla(220, 50%, 18%, 1)",
c700: "hsla(220, 45%, 14%, 1)",
c800: "hsla(220, 35%, 10%, 1)",
c900: "hsla(220, 30%, 7%, 1)",
},
purple: {
c50: "hsla(48, 100%, 75%, 1)",
c100: "hsla(48, 95%, 65%, 1)",
c200: "hsla(46, 90%, 55%, 1)",
c300: "hsla(44, 85%, 45%, 1)",
c400: "hsla(42, 80%, 35%, 1)",
c500: "hsla(40, 75%, 28%, 1)",
c600: "hsla(38, 70%, 22%, 1)",
c700: "hsla(36, 60%, 18%, 1)",
c800: "hsla(34, 50%, 14%, 1)",
c900: "hsla(32, 40%, 10%, 1)",
},
ash: {
c50: "hsla(210, 11%, 55%, 1)", // Authentication copy text hover, progress background, progress preloaded
c100: "hsla(210, 15%, 42%, 1)", // Secondary text, badge text, video player scraping no result
c200: "hsla(210, 17%, 33%, 1)", // Media card bar color, video player button background
c300: "hsla(210, 29%, 24%, 1)", // Cancel button hover, utils divider
c400: "hsla(210, 35%, 19%, 1)", // Card border and background, dropdown border, onboarding bar, edit badge hover, sidebar type
c500: "hsla(210, 35%, 17%, 1)", // Toggle disabled, cancel button, modal background, search hover background, media card shadow, settings save bar, errors card, about circle, edit badge background, video player button focus, video player flag background, video player input background, video player button over input hover
c600: "hsla(210, 32%, 14%, 1)", // Background secondary, dropdown alt background, dropdown border, onboarding card border
c700: "hsla(210, 35%, 12%, 1)", // Secondary button, media card badge, onboarding card hover, video player context card border, video player context buttons list, video player close hover
c800: "hsla(210, 33%, 9%, 1)", // Background main, settings sidebar badge, errors border
c900: "hsla(210, 25%, 7%, 1)", // Media card hover shadow, settings sidebar active link, video player context background
},
shade: {
c25: "hsla(240, 33%, 53%, 1)", // Media card hover accent
c50: "hsla(240, 17%, 48%, 1)", // Theme secondary color, text, dimmed text
c100: "hsla(240, 20%, 40%, 1)", // Search placeholder and icon, dropdown secondary text
c200: "hsla(240, 20%, 31%, 1)", // Pill background hover, onboarding divider
c300: "hsla(240, 22%, 25%, 1)", // Pill background, authentication border, onboarding card
c400: "hsla(240, 25%, 21%, 1)", // Background secondary hover, dropdown border, onboarding bar, onboarding divider
c500: "hsla(240, 26%, 16%, 1)", // Search background, search focus, dropdown hover background, dropdown content background, authentication input background hover, authentication word background
c600: "hsla(240, 31%, 12%, 1)", // Modal background, dropdown background, onboarding card border
c700: "hsla(240, 29%, 10%, 1)", // Dropdown alt background
c800: "hsla(240, 30%, 8%, 1)", // Background main, settings save bar, onboarding card
c900: "hsla(240, 29%, 5%, 1)", // Media card hover shadow
},
}
export default createTheme({
name: "wolverine",
extend: {
colors: {
themePreview: {
primary: tokens.blue.c200,
secondary: tokens.purple.c300,
ghost: tokens.white,
},
// Branding
pill: {
background: tokens.shade.c300,
backgroundHover: tokens.shade.c200,
highlight: tokens.blue.c200,
activeBackground: tokens.shade.c300,
},
// meta data for the theme itself
global: {
accentA: tokens.blue.c200,
accentB: tokens.blue.c300,
},
// light bar
lightBar: {
light: tokens.blue.c400,
},
// Buttons
buttons: {
toggle: tokens.purple.c300,
toggleDisabled: tokens.ash.c500,
danger: tokens.semantic.rose.c300,
dangerHover: tokens.semantic.rose.c200,
secondary: tokens.ash.c700,
secondaryText: tokens.semantic.silver.c300,
secondaryHover: tokens.ash.c700,
primary: tokens.white,
primaryText: tokens.black,
primaryHover: tokens.semantic.silver.c100,
purple: tokens.purple.c500,
purpleHover: tokens.purple.c400,
cancel: tokens.ash.c500,
cancelHover: tokens.ash.c300,
},
// only used for body colors/textures
background: {
main: tokens.shade.c900,
secondary: tokens.shade.c600,
secondaryHover: tokens.shade.c400,
accentA: tokens.purple.c500,
accentB: tokens.blue.c500,
},
// Modals
modal: {
background: tokens.shade.c800,
},
// typography
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 bar
search: {
background: tokens.shade.c500,
hoverBackground: tokens.shade.c600,
focused: tokens.shade.c400,
placeholder: tokens.shade.c100,
icon: tokens.shade.c100,
text: tokens.white,
},
// media cards
mediaCard: {
hoverBackground: tokens.shade.c600,
hoverAccent: tokens.shade.c25,
hoverShadow: tokens.shade.c900,
shadow: tokens.shade.c700,
barColor: tokens.ash.c200,
barFillColor: tokens.purple.c100,
badge: tokens.shade.c700,
badgeText: tokens.ash.c100,
},
// Large card
largeCard: {
background: tokens.shade.c600,
icon: tokens.purple.c400,
},
// Dropdown
dropdown: {
background: tokens.shade.c600,
altBackground: tokens.shade.c700,
hoverBackground: tokens.shade.c500,
highlight: tokens.semantic.yellow.c400,
highlightHover: tokens.semantic.yellow.c200,
text: tokens.shade.c50,
secondary: tokens.shade.c100,
border: tokens.shade.c400,
contentBackground: tokens.shade.c500,
},
// Passphrase
authentication: {
border: tokens.shade.c300,
inputBg: tokens.shade.c600,
inputBgHover: tokens.shade.c500,
wordBackground: tokens.shade.c500,
copyText: tokens.shade.c100,
copyTextHover: tokens.ash.c50,
errorText: tokens.semantic.rose.c100,
},
// Settings page
settings: {
sidebar: {
activeLink: tokens.shade.c600,
badge: tokens.shade.c900,
type: {
secondary: tokens.shade.c200,
inactive: tokens.shade.c50,
icon: tokens.shade.c50,
iconActivated: tokens.purple.c200,
activated: tokens.purple.c50,
},
},
card: {
border: tokens.shade.c400,
background: tokens.shade.c400,
altBackground: tokens.shade.c400,
},
saveBar: {
background: tokens.shade.c800,
},
},
// Utilities
utils: {
divider: tokens.ash.c300,
},
// Onboarding
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,
},
// Error page
errors: {
card: tokens.shade.c800,
border: tokens.ash.c500,
type: {
secondary: tokens.ash.c100,
},
},
// About page
about: {
circle: tokens.ash.c500,
circleText: tokens.ash.c50,
},
// About page
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 player
video: {
buttonBackground: tokens.ash.c200,
autoPlay: {
background: tokens.ash.c700,
hover: tokens.ash.c500,
},
scraping: {
card: tokens.shade.c700,
error: tokens.semantic.red.c200,
success: tokens.semantic.green.c200,
loading: tokens.purple.c200,
noresult: tokens.ash.c100,
},
audio: {
set: tokens.purple.c200,
},
context: {
background: tokens.ash.c900,
light: tokens.shade.c50,
border: tokens.ash.c600,
hoverColor: tokens.ash.c600,
buttonFocus: tokens.ash.c500,
flagBg: tokens.ash.c500,
inputBg: tokens.ash.c600,
buttonOverInputHover: tokens.ash.c500,
inputPlaceholder: tokens.ash.c200,
cardBorder: tokens.ash.c700,
slider: tokens.ash.c50,
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.c400,
secondary: tokens.ash.c200,
accent: tokens.purple.c200,
},
},
},
},
},
})