├── src ├── utils │ ├── index.ts │ ├── math.utils.ts │ ├── indexx.ts │ ├── class-names.utils.ts │ ├── string.utils.ts │ ├── spotify.utils.ts │ ├── theme.utils.ts │ ├── os-detector.utils.ts │ ├── errors.utils.ts │ └── helpers.ts ├── vite-env.d.ts ├── config │ ├── ids.config.ts │ ├── appearance.config.ts │ ├── game.config.ts │ ├── fonts.config.ts │ ├── react-query.config.ts │ ├── keyboard.config.ts │ ├── caret.config.ts │ └── keybinds.config.ts ├── assets │ ├── sfx │ │ ├── ui-sounds.wav │ │ └── keyboard-soundpacks │ │ │ ├── eg-oreo │ │ │ └── oreo.ogg │ │ │ └── nk-cream │ │ │ ├── nk-cream.wav │ │ │ └── config.ts │ ├── images │ │ └── default-playlist.png │ └── svgs │ │ ├── spotify-icon.svg │ │ ├── keyboard-icon.tsx │ │ └── keyboard-icon.svg ├── styles │ └── theme.type.ts ├── components │ ├── ui │ │ ├── skeleton.tsx │ │ ├── shortcut.tsx │ │ ├── label.tsx │ │ ├── textarea.tsx │ │ ├── separator.tsx │ │ ├── toaster.tsx │ │ ├── tooltip.tsx │ │ ├── badge.tsx │ │ ├── hover-card.tsx │ │ ├── input.tsx │ │ ├── avatar.tsx │ │ ├── toggle.tsx │ │ ├── box.tsx │ │ ├── radio-card.tsx │ │ ├── tabs.tsx │ │ ├── card.tsx │ │ ├── slider.tsx │ │ ├── scroll-area.tsx │ │ └── button.tsx │ ├── spotify-music-player │ │ ├── spotify-drawer.skeleton.tsx │ │ ├── connect-spotify-button.tsx │ │ └── playlist │ │ │ ├── playlist-tab-content.skeleton.tsx │ │ │ └── playlist-tab.tsx │ ├── map.tsx │ ├── compound-ui │ │ ├── reset-button.tsx │ │ ├── tab-button.tsx │ │ └── animated-play-icon.tsx │ ├── spotify-player.tsx │ ├── game-action-button.tsx │ ├── settings │ │ ├── setting.tsx │ │ ├── soundpack-tab │ │ │ ├── sound-pack-tab.tsx │ │ │ ├── border-radius-visualizer.tsx │ │ │ └── sound-pack-item.tsx │ │ ├── appearance-tab │ │ │ ├── appearance-tab.tsx │ │ │ └── theme-switcher.tsx │ │ ├── caret-tab │ │ │ └── caret-tab.tsx │ │ └── font-tab │ │ │ └── my-fonts.tsx │ ├── test-time-selector.tsx │ ├── results.tsx │ ├── spotify-user-info.tsx │ ├── no-spotify-premium-button.tsx │ ├── caret.tsx │ └── volume │ │ ├── volume-slider.tsx │ │ └── volume-control-popover.tsx ├── react-query │ ├── queries │ │ ├── lazy-modules.query.ts │ │ └── spotify.query.ts │ └── mutations │ │ └── spotify.mutation.ts ├── state │ ├── metrics.store.ts │ ├── app-store.ts │ ├── game-engine.store.ts │ └── timer.store.ts ├── footer.tsx ├── lib │ └── spotify.ts ├── hooks │ ├── use-sound-fx.hook.ts │ └── use-has-focus.hook.ts ├── providers │ ├── app-settings.provider.tsx │ └── keyboard-audio.provider.tsx ├── main.tsx ├── globals.css └── App.tsx ├── .env.sample ├── bun.lockb ├── postcss.config.cjs ├── .prettierrc.json ├── vercel.json ├── env.ts ├── public ├── css │ ├── theme_rainbow_trail.css │ ├── theme_rgb.css │ ├── theme_dark.css │ ├── theme_shadow.css │ ├── theme_alduin.css │ ├── theme_bliss.css │ ├── theme_incognito.css │ ├── theme_modern_ink.css │ ├── theme_mountain.css │ ├── theme_paper.css │ ├── theme_vscode.css │ ├── theme_9009.css │ ├── theme_carbon.css │ ├── theme_dino.css │ ├── theme_dots.css │ ├── theme_fire.css │ ├── theme_froyo.css │ ├── theme_ishtar.css │ ├── theme_iv_spade.css │ ├── theme_metaverse.css │ ├── theme_mexican.css │ ├── theme_oblivion.css │ ├── theme_olive.css │ ├── theme_pulse.css │ ├── theme_serika.css │ ├── theme_voc.css │ ├── theme_alpine.css │ ├── theme_cafe.css │ ├── theme_camping.css │ ├── theme_copper.css │ ├── theme_cy_red.css │ ├── theme_deku.css │ ├── theme_diner.css │ ├── theme_discord.css │ ├── theme_dualshot.css │ ├── theme_everblush.css │ ├── theme_fruit_chew.css │ ├── theme_gruvbox_dark.css │ ├── theme_hedge.css │ ├── theme_honey.css │ ├── theme_husqy.css │ ├── theme_iv_clover.css │ ├── theme_joker.css │ ├── theme_lime.css │ ├── theme_menthol.css │ ├── theme_monokai.css │ ├── theme_night_runner.css │ ├── theme_norse.css │ ├── theme_peaches.css │ ├── theme_stealth.css │ ├── theme_striker.css │ ├── theme_terminal.css │ ├── theme_terra.css │ ├── theme_trackday.css │ ├── theme_8008.css │ ├── theme_arch.css │ ├── theme_beach.css │ ├── theme_bouquet.css │ ├── theme_comfy.css │ ├── theme_dev.css │ ├── theme_dmg.css │ ├── theme_dollar.css │ ├── theme_dracula.css │ ├── theme_earthsong.css │ ├── theme_fledgling.css │ ├── theme_fleuriste.css │ ├── theme_graen.css │ ├── theme_hammerhead.css │ ├── theme_hanok.css │ ├── theme_horizon.css │ ├── theme_luna.css │ ├── theme_macroblank.css │ ├── theme_mashu.css │ ├── theme_matcha_moccha.css │ ├── theme_material.css │ ├── theme_matrix.css │ ├── theme_midnight.css │ ├── theme_mizu.css │ ├── theme_ms_cupcakes.css │ ├── theme_muted.css │ ├── theme_nautilus.css │ ├── theme_olivia.css │ ├── theme_pastel.css │ ├── theme_peach_blossom.css │ ├── theme_pink_lemonade.css │ ├── theme_retro.css │ ├── theme_rudy.css │ ├── theme_sewing_tin.css │ ├── theme_snes.css │ ├── theme_sonokai.css │ ├── theme_sweden.css │ ├── theme_tiramisu.css │ ├── theme_tron_orange.css │ ├── theme_viridescent.css │ ├── theme_witch_girl.css │ ├── theme_aurora.css │ ├── theme_bento.css │ ├── theme_bingsu.css │ ├── theme_botanical.css │ ├── theme_breeze.css │ ├── theme_bushido.css │ ├── theme_cheesecake.css │ ├── theme_creamsicle.css │ ├── theme_cyberspace.css │ ├── theme_desert_oasis.css │ ├── theme_evil_eye.css │ ├── theme_ez_mode.css │ ├── theme_floret.css │ ├── theme_fundamentals.css │ ├── theme_godspeed.css │ ├── theme_grand_prix.css │ ├── theme_grape.css │ ├── theme_gruvbox_light.css │ ├── theme_iceberg_dark.css │ ├── theme_laser.css │ ├── theme_leather.css │ ├── theme_magic_girl.css │ ├── theme_metropolis.css │ ├── theme_miami.css │ ├── theme_miami_nights.css │ ├── theme_milkshake.css │ ├── theme_mint.css │ ├── theme_modern_dolch_light.css │ ├── theme_moonlight.css │ ├── theme_mr_sleeves.css │ ├── theme_nebula.css │ ├── theme_nord.css │ ├── theme_onedark.css │ ├── theme_our_theme.css │ ├── theme_passion_fruit.css │ ├── theme_purpleish.css │ ├── theme_red_dragon.css │ ├── theme_repose_dark.css │ ├── theme_repose_light.css │ ├── theme_rose_pine.css │ ├── theme_serika_dark.css │ ├── theme_shoko.css │ ├── theme_soaring_skies.css │ ├── theme_strawberry.css │ ├── theme_superuser.css │ ├── theme_tangerine.css │ ├── theme_taro.css │ ├── theme_trance.css │ ├── theme_wavez.css │ ├── theme_aether.css │ ├── theme_anti_hero.css │ ├── theme_catppuccin.css │ ├── theme_cherry_blossom.css │ ├── theme_drowning.css │ ├── theme_frozen_llama.css │ ├── theme_future_funk.css │ ├── theme_lavender.css │ ├── theme_lil_dragon.css │ ├── theme_modern_dolch.css │ ├── theme_nord_light.css │ ├── theme_red_samurai.css │ ├── theme_retrocast.css │ ├── theme_rose_pine_dawn.css │ ├── theme_rose_pine_moon.css │ ├── theme_ryujinscales.css │ ├── theme_sewing_tin_light.css │ ├── theme_solarized_light.css │ ├── theme_terror_below.css │ ├── theme_vaporwave.css │ ├── theme_watermelon.css │ ├── theme_80s_after_dark.css │ ├── theme_blueberry_dark.css │ ├── theme_blueberry_light.css │ ├── theme_chaos_theory.css │ ├── theme_dark_magic_girl.css │ ├── theme_iceberg_light.css │ ├── theme_lilac_mist.css │ ├── theme_slambook.css │ ├── theme_solarized_dark.css │ ├── theme_blue_dolphin.css │ ├── theme_darling.css │ └── theme_dark_note.css └── vite.svg ├── vite.config.ts ├── .gitignore ├── components.json ├── index.html ├── .eslintrc.cjs ├── tsconfig.json ├── header-icon.svg ├── README.md └── package.json /src/utils/index.ts: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.env.sample: -------------------------------------------------------------------------------- 1 | VITE_SPOTIFY_CLIENT_ID= # YOUR SPOTIFY CLIENT ID -------------------------------------------------------------------------------- /src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /bun.lockb: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frstycodes/typelabs/HEAD/bun.lockb -------------------------------------------------------------------------------- /src/config/ids.config.ts: -------------------------------------------------------------------------------- 1 | export const ID_TEXT_AREA = 'input-handler-id' 2 | -------------------------------------------------------------------------------- /src/assets/sfx/ui-sounds.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frstycodes/typelabs/HEAD/src/assets/sfx/ui-sounds.wav -------------------------------------------------------------------------------- /postcss.config.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /src/assets/images/default-playlist.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frstycodes/typelabs/HEAD/src/assets/images/default-playlist.png -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "semi": false, 3 | "singleQuote": true, 4 | "jsxSingleQuote": true, 5 | "plugins": ["prettier-plugin-tailwindcss"] 6 | } 7 | -------------------------------------------------------------------------------- /src/assets/sfx/keyboard-soundpacks/eg-oreo/oreo.ogg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frstycodes/typelabs/HEAD/src/assets/sfx/keyboard-soundpacks/eg-oreo/oreo.ogg -------------------------------------------------------------------------------- /src/utils/math.utils.ts: -------------------------------------------------------------------------------- 1 | export function clamp(min: number, value: number, max: number): number { 2 | return Math.min(Math.max(value, min), max) 3 | } 4 | -------------------------------------------------------------------------------- /src/assets/sfx/keyboard-soundpacks/nk-cream/nk-cream.wav: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/frstycodes/typelabs/HEAD/src/assets/sfx/keyboard-soundpacks/nk-cream/nk-cream.wav -------------------------------------------------------------------------------- /src/config/appearance.config.ts: -------------------------------------------------------------------------------- 1 | export const DEFAULT_THEME = 'carbon' 2 | export const BORDER_RADII = [0, 4, 8, 12, 16, 20] 3 | export const DEFAULT_BORDER_RADIUS = 8 4 | -------------------------------------------------------------------------------- /src/styles/theme.type.ts: -------------------------------------------------------------------------------- 1 | export type Theme = { 2 | id: string 3 | name: string 4 | bgColor: string 5 | mainColor: string 6 | subColor: string 7 | textColor: string 8 | } 9 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://openapi.vercel.sh/vercel.json", 3 | "installCommand": "bun install", 4 | "buildCommand": "bun run build", 5 | "framework": "vite" 6 | } 7 | -------------------------------------------------------------------------------- /env.ts: -------------------------------------------------------------------------------- 1 | const SPOTIFY_CLIENT_ID = import.meta.env.VITE_SPOTIFY_CLIENT_ID 2 | if (!SPOTIFY_CLIENT_ID) throw new Error('No client id provided') 3 | 4 | export const env = { 5 | SPOTIFY_CLIENT_ID, 6 | } 7 | -------------------------------------------------------------------------------- /src/utils/indexx.ts: -------------------------------------------------------------------------------- 1 | export * from './class-names.utils' 2 | export * from './os-detector.utils' 3 | export * from './string.utils' 4 | export * from './spotify.utils' 5 | export * from './theme.utils' 6 | -------------------------------------------------------------------------------- /src/utils/class-names.utils.ts: -------------------------------------------------------------------------------- 1 | import { type ClassValue, clsx } from 'clsx' 2 | import { twMerge } from 'tailwind-merge' 3 | 4 | export function cn(...inputs: ClassValue[]): string { 5 | return twMerge(clsx(inputs)) 6 | } 7 | -------------------------------------------------------------------------------- /src/config/game.config.ts: -------------------------------------------------------------------------------- 1 | const validCharacters = '`~1!2@3#4$5%6^7&8*9(0)-_=+qQwWeErRtTyYuUiIoOpP[{]}|aAsSdDfFgGhHjJkKlL;:\'"zZxXcCvVbBnNmM,<.>/? ' 2 | export const VALID_CHARACTERS_SET = new Set(validCharacters.split('')) 3 | export const LINE_HEIGHT = 40 4 | -------------------------------------------------------------------------------- /src/config/fonts.config.ts: -------------------------------------------------------------------------------- 1 | export const FONTS = [ 2 | 'Poppins', 3 | 'Reddit Sans', 4 | 'Roboto Mono', 5 | 'DM Mono', 6 | 'Ubuntu Mono', 7 | 'JetBrains Mono', 8 | 'Helvetica Neue', 9 | ] as const 10 | export const DEFAULT_FONT = FONTS[2] 11 | export const DEFAULT_FONT_SIZE = 24 12 | -------------------------------------------------------------------------------- /public/css/theme_rainbow_trail.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 96%; 3 | --main-color: 0 0% 21%; 4 | --caret-color: 0 0% 5%; 5 | --sub-color: 0 0% 31%; 6 | --sub-alt-color: 0 0% 88%; 7 | --text-color: 0 0% 12%; 8 | --error-color: 358 100% 50%; 9 | --colorful-error-color: 358 100% 50%; 10 | } -------------------------------------------------------------------------------- /public/css/theme_rgb.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 7%; 3 | --main-color: 0 0% 93%; 4 | --caret-color: 0 0% 93%; 5 | --sub-color: 0 0% 27%; 6 | --sub-alt-color: 0 0% 10%; 7 | --text-color: 0 0% 93%; 8 | --error-color: 0 0% 93%; 9 | --error-extra-color: 0 0% 70%; 10 | --colorful-error-color: 0 0% 93%; 11 | --colorful-error-extra-color: 0 0% 70%; 12 | } -------------------------------------------------------------------------------- /src/components/ui/skeleton.tsx: -------------------------------------------------------------------------------- 1 | import { cn } from '@/utils/class-names.utils' 2 | 3 | function Skeleton({ 4 | className, 5 | ...props 6 | }: React.HTMLAttributes) { 7 | return ( 8 |
12 | ) 13 | } 14 | 15 | export { Skeleton } 16 | -------------------------------------------------------------------------------- /public/css/theme_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 7%; 3 | --main-color: 0 0% 93%; 4 | --caret-color: 0 0% 93%; 5 | --sub-color: 0 0% 27%; 6 | --sub-alt-color: 0 0% 10%; 7 | --text-color: 0 0% 93%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_shadow.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 0%; 3 | --main-color: 0 0% 93%; 4 | --caret-color: 0 0% 93%; 5 | --sub-color: 0 0% 27%; 6 | --sub-alt-color: 0 0% 9%; 7 | --text-color: 0 0% 93%; 8 | --error-color: 0 0% 100%; 9 | --error-extra-color: 0 0% 85%; 10 | --colorful-error-color: 0 0% 100%; 11 | --colorful-error-extra-color: 0 0% 85%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_alduin.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 11%; 3 | --main-color: 50 43% 78%; 4 | --caret-color: 0 0% 89%; 5 | --sub-color: 0 0% 27%; 6 | --sub-alt-color: 0 0% 14%; 7 | --text-color: 45 29% 95%; 8 | --error-color: 0 33% 53%; 9 | --error-extra-color: 14 60% 19%; 10 | --colorful-error-color: 0 33% 53%; 11 | --colorful-error-extra-color: 14 60% 19%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_bliss.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 180 1% 15%; 3 | --main-color: 15 57% 86%; 4 | --caret-color: 15 57% 86%; 5 | --sub-color: 8 8% 37%; 6 | --sub-alt-color: 20 3% 20%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 0 49% 50%; 9 | --error-extra-color: 0 45% 37%; 10 | --colorful-error-color: 0 49% 50%; 11 | --colorful-error-extra-color: 0 45% 37%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_incognito.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 5%; 3 | --main-color: 36 100% 50%; 4 | --caret-color: 36 100% 50%; 5 | --sub-color: 0 0% 33%; 6 | --sub-alt-color: 0 0% 8%; 7 | --text-color: 0 0% 78%; 8 | --error-color: 0 75% 58%; 9 | --error-extra-color: 0 75% 58%; 10 | --colorful-error-color: 0 54% 45%; 11 | --colorful-error-extra-color: 0 54% 45%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_modern_ink.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 100%; 3 | --main-color: 10 100% 53%; 4 | --caret-color: 0 100% 50%; 5 | --sub-color: 0 0% 72%; 6 | --sub-alt-color: 0 0% 93%; 7 | --text-color: 0 0% 0%; 8 | --error-color: 0 100% 42%; 9 | --error-extra-color: 0 100% 35%; 10 | --colorful-error-color: 0 0% 0%; 11 | --colorful-error-extra-color: 0 0% 0%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_mountain.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 6%; 3 | --main-color: 0 0% 91%; 4 | --caret-color: 0 0% 96%; 5 | --sub-color: 0 0% 30%; 6 | --sub-alt-color: 0 0% 10%; 7 | --text-color: 0 0% 91%; 8 | --error-color: 0 16% 61%; 9 | --error-extra-color: 357 24% 69%; 10 | --colorful-error-color: 55 17% 61%; 11 | --colorful-error-extra-color: 55 24% 69%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_paper.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 93%; 3 | --main-color: 0 0% 27%; 4 | --caret-color: 0 0% 27%; 5 | --sub-color: 0 0% 70%; 6 | --sub-alt-color: 0 0% 87%; 7 | --text-color: 0 0% 27%; 8 | --error-color: 0 100% 42%; 9 | --error-extra-color: 0 100% 42%; 10 | --colorful-error-color: 0 100% 42%; 11 | --colorful-error-extra-color: 0 100% 42%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_vscode.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 12%; 3 | --main-color: 204 100% 40%; 4 | --caret-color: 207 61% 59%; 5 | --sub-color: 0 0% 30%; 6 | --sub-alt-color: 0 0% 10%; 7 | --text-color: 0 0% 83%; 8 | --error-color: 0 89% 62%; 9 | --error-extra-color: 0 89% 62%; 10 | --colorful-error-color: 0 89% 62%; 11 | --colorful-error-extra-color: 0 89% 62%; 12 | } -------------------------------------------------------------------------------- /src/utils/string.utils.ts: -------------------------------------------------------------------------------- 1 | import sf from 'seconds-formater' 2 | 3 | export const trim = (s: string): string => s.trim() 4 | 5 | export const sf_s = (time: number) => sf.convert(time).format('MM:SS') 6 | export const sf_ms = (time: number) => sf.convert(time / 1000).format('MM:SS') 7 | 8 | export const generateFontCss = (font: string) => 9 | `${font}, Roboto Mono, monospace` 10 | -------------------------------------------------------------------------------- /public/css/theme_9009.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 45 26% 91%; 3 | --main-color: 180 6% 3%; 4 | --caret-color: 122 17% 57%; 5 | --sub-color: 48 11% 55%; 6 | --sub-alt-color: 47 17% 79%; 7 | --text-color: 180 6% 3%; 8 | --error-color: 7 43% 62%; 9 | --error-extra-color: 7 27% 51%; 10 | --colorful-error-color: 7 43% 62%; 11 | --colorful-error-extra-color: 7 27% 51%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_carbon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 19%; 3 | --main-color: 25 93% 51%; 4 | --caret-color: 25 93% 51%; 5 | --sub-color: 0 0% 38%; 6 | --sub-alt-color: 0 0% 17%; 7 | --text-color: 40 69% 87%; 8 | --error-color: 0 79% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 0 79% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dino.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 100%; 3 | --main-color: 140 65% 55%; 4 | --caret-color: 140 65% 55%; 5 | --sub-color: 0 0% 84%; 6 | --sub-alt-color: 138 83% 89%; 7 | --text-color: 144 8% 12%; 8 | --error-color: 0 100% 69%; 9 | --error-extra-color: 0 67% 49%; 10 | --colorful-error-color: 0 100% 69%; 11 | --colorful-error-extra-color: 0 67% 49%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dots.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 227 28% 10%; 3 | --caret-color: 0 0% 100%; 4 | --main-color: 0 0% 100%; 5 | --sub-color: 228 15% 47%; 6 | --sub-alt-color: 229 24% 14%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_fire.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 100% 3%; 3 | --main-color: 0 81% 39%; 4 | --caret-color: 0 81% 39%; 5 | --sub-color: 0 33% 31%; 6 | --sub-alt-color: 0 52% 8%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 234 59% 45%; 9 | --error-extra-color: 234 36% 41%; 10 | --colorful-error-color: 234 59% 45%; 11 | --colorful-error-extra-color: 234 36% 41%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_froyo.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 41 27% 84%; 3 | --main-color: 180 1% 49%; 4 | --caret-color: 180 1% 49%; 5 | --sub-color: 44 35% 53%; 6 | --sub-alt-color: 40 17% 79%; 7 | --text-color: 180 1% 49%; 8 | --error-color: 6 82% 71%; 9 | --error-extra-color: 6 60% 59%; 10 | --colorful-error-color: 6 82% 71%; 11 | --colorful-error-extra-color: 6 60% 59%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_ishtar.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 13%; 3 | --main-color: 5 85% 31%; 4 | --caret-color: 33 53% 51%; 5 | --sub-color: 33 11% 46%; 6 | --sub-alt-color: 0 0% 15%; 7 | --text-color: 33 85% 87%; 8 | --error-color: 5 84% 40%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 68 69% 53%; 11 | --colorful-error-extra-color: 68 60% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_iv_spade.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 5%; 3 | --main-color: 35 35% 57%; 4 | --caret-color: 0 0% 75%; 5 | --sub-color: 0 0% 25%; 6 | --sub-alt-color: 0 0% 7%; 7 | --text-color: 356 16% 79%; 8 | --error-color: 356 15% 55%; 9 | --error-extra-color: 356 16% 59%; 10 | --colorful-error-color: 35 35% 57%; 11 | --colorful-error-extra-color: 35 38% 61%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_metaverse.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 14%; 3 | --main-color: 356 69% 50%; 4 | --caret-color: 356 69% 50%; 5 | --sub-color: 0 0% 37%; 6 | --sub-alt-color: 0 0% 11%; 7 | --text-color: 0 0% 91%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 61 69% 53%; 11 | --colorful-error-extra-color: 64 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_mexican.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 37 93% 59%; 3 | --main-color: 317 69% 41%; 4 | --caret-color: 0 0% 93%; 5 | --sub-color: 0 0% 20%; 6 | --sub-alt-color: 317 69% 41%; 7 | --text-color: 0 0% 93%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_oblivion.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 120 1% 19%; 3 | --main-color: 40 8% 62%; 4 | --caret-color: 40 8% 62%; 5 | --sub-color: 190 3% 38%; 6 | --sub-alt-color: 180 1% 23%; 7 | --text-color: 40 27% 96%; 8 | --error-color: 8 72% 52%; 9 | --error-extra-color: 8 64% 38%; 10 | --colorful-error-color: 8 72% 52%; 11 | --colorful-error-extra-color: 8 64% 38%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_olive.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 52 40% 86%; 3 | --caret-color: 63 15% 51%; 4 | --main-color: 63 15% 51%; 5 | --sub-color: 50 15% 67%; 6 | --sub-alt-color: 47 22% 78%; 7 | --text-color: 60 6% 20%; 8 | --error-color: 0 63% 50%; 9 | --error-extra-color: 0 60% 40%; 10 | --colorful-error-color: 0 63% 50%; 11 | --colorful-error-extra-color: 0 60% 40%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_pulse.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 9%; 3 | --main-color: 182 78% 42%; 4 | --caret-color: 182 78% 42%; 5 | --sub-color: 214 4% 34%; 6 | --sub-alt-color: 0 0% 7%; 7 | --text-color: 180 41% 93%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_serika.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --main-color: 47 84% 48%; 3 | --caret-color: 47 84% 48%; 4 | --sub-color: 213 6% 68%; 5 | --sub-alt-color: 223 8% 83%; 6 | --bg-color: 240 3% 89%; 7 | --text-color: 216 5% 21%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_voc.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 303 61% 6%; 3 | --main-color: 35 46% 78%; 4 | --caret-color: 35 46% 78%; 5 | --sub-color: 305 43% 21%; 6 | --sub-alt-color: 308 57% 11%; 7 | --text-color: 36 23% 91%; 8 | --error-color: 1 54% 45%; 9 | --error-extra-color: 1 51% 33%; 10 | --colorful-error-color: 1 54% 45%; 11 | --colorful-error-extra-color: 1 51% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_alpine.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 250 10% 45%; 3 | --main-color: 0 0% 100%; 4 | --caret-color: 249 10% 37%; 5 | --sub-color: 248 20% 65%; 6 | --sub-alt-color: 250 10% 50%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 0 77% 53%; 9 | --error-extra-color: 0 63% 40%; 10 | --colorful-error-color: 0 77% 53%; 11 | --colorful-error-extra-color: 0 63% 40%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_cafe.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 33 40% 68%; 3 | --main-color: 36 14% 7%; 4 | --caret-color: 36 14% 7%; 5 | --sub-color: 20 3% 83%; 6 | --sub-alt-color: 34 30% 62%; 7 | --text-color: 36 14% 7%; 8 | --error-color: 357 66% 47%; 9 | --error-extra-color: 356 76% 38%; 10 | --colorful-error-color: 357 66% 47%; 11 | --colorful-error-extra-color: 356 76% 38%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_camping.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 35 69% 94%; 3 | --main-color: 108 24% 44%; 4 | --caret-color: 108 24% 44%; 5 | --sub-color: 35 16% 71%; 6 | --sub-alt-color: 36 37% 85%; 7 | --text-color: 108 4% 24%; 8 | --error-color: 1 38% 49%; 9 | --error-extra-color: 1 38% 36%; 10 | --colorful-error-color: 1 38% 49%; 11 | --colorful-error-extra-color: 1 38% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_copper.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 13 25% 21%; 3 | --main-color: 13 39% 52%; 4 | --caret-color: 12 51% 51%; 5 | --sub-color: 175 30% 61%; 6 | --sub-alt-color: 14 27% 25%; 7 | --text-color: 13 16% 89%; 8 | --error-color: 0 64% 39%; 9 | --error-extra-color: 0 93% 48%; 10 | --colorful-error-color: 0 64% 39%; 11 | --colorful-error-extra-color: 0 93% 48%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_cy_red.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 49% 29%; 3 | --main-color: 0 74% 61%; 4 | --caret-color: 0 49% 22%; 5 | --sub-color: 0 100% 69%; 6 | --sub-alt-color: 0 48% 17%; 7 | --text-color: 0 100% 83%; 8 | --error-color: 228 49% 71%; 9 | --error-extra-color: 228 34% 46%; 10 | --colorful-error-color: 228 49% 71%; 11 | --colorful-error-extra-color: 228 34% 46%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_deku.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 180 93% 28%; 3 | --main-color: 2 58% 45%; 4 | --caret-color: 2 58% 45%; 5 | --sub-color: 185 41% 25%; 6 | --sub-alt-color: 181 80% 27%; 7 | --text-color: 37 45% 94%; 8 | --error-color: 2 58% 45%; 9 | --error-extra-color: 0 71% 19%; 10 | --colorful-error-color: 54 75% 49%; 11 | --colorful-error-extra-color: 56 80% 31%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_diner.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 206 29% 46%; 3 | --main-color: 48 46% 56%; 4 | --caret-color: 7 43% 47%; 5 | --sub-color: 216 30% 38%; 6 | --sub-alt-color: 207 29% 42%; 7 | --text-color: 50 26% 83%; 8 | --error-color: 7 43% 47%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 7 43% 47%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_discord.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 223 7% 21%; 3 | --main-color: 235 77% 64%; 4 | --caret-color: 235 77% 64%; 5 | --sub-color: 229 6% 36%; 6 | --sub-alt-color: 220 7% 18%; 7 | --text-color: 223 11% 88%; 8 | --error-color: 2 70% 58%; 9 | --error-extra-color: 2 70% 58%; 10 | --colorful-error-color: 2 70% 58%; 11 | --colorful-error-extra-color: 2 70% 58%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dualshot.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 45%; 3 | --main-color: 180 1% 13%; 4 | --caret-color: 180 1% 13%; 5 | --sub-color: 0 0% 67%; 6 | --sub-alt-color: 0 0% 39%; 7 | --text-color: 180 1% 13%; 8 | --error-color: 357 66% 47%; 9 | --error-extra-color: 356 76% 38%; 10 | --colorful-error-color: 357 66% 47%; 11 | --colorful-error-extra-color: 356 76% 38%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_everblush.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 198 20% 10%; 3 | --caret-color: 180 39% 59%; 4 | --main-color: 110 46% 65%; 5 | --sub-color: 168 2% 52%; 6 | --sub-alt-color: 198 12% 16%; 7 | --text-color: 0 0% 85%; 8 | --error-color: 0 68% 68%; 9 | --error-extra-color: 0 78% 72%; 10 | --colorful-error-color: 0 68% 68%; 11 | --colorful-error-extra-color: 0 78% 72%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_fruit_chew.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 300 4% 83%; 3 | --main-color: 297 52% 25%; 4 | --caret-color: 0 70% 43%; 5 | --sub-color: 298 14% 66%; 6 | --sub-alt-color: 300 9% 77%; 7 | --text-color: 300 4% 15%; 8 | --error-color: 2 70% 44%; 9 | --error-extra-color: 0 63% 40%; 10 | --colorful-error-color: 2 70% 44%; 11 | --colorful-error-extra-color: 0 63% 40%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_gruvbox_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 16%; 3 | --main-color: 40 73% 49%; 4 | --caret-color: 42 95% 58%; 5 | --sub-color: 27 10% 36%; 6 | --sub-alt-color: 0 0% 13%; 7 | --text-color: 43 59% 81%; 8 | --error-color: 6 96% 59%; 9 | --error-extra-color: 2 75% 46%; 10 | --colorful-error-color: 2 75% 46%; 11 | --colorful-error-extra-color: 358 100% 31%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_hedge.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 99 31% 28%; 3 | --main-color: 98 32% 45%; 4 | --caret-color: 57 68% 84%; 5 | --sub-color: 52 61% 82%; 6 | --sub-alt-color: 98 31% 24%; 7 | --text-color: 49 67% 90%; 8 | --error-color: 359 57% 52%; 9 | --error-extra-color: 352 50% 31%; 10 | --colorful-error-color: 12 76% 61%; 11 | --colorful-error-extra-color: 27 87% 67%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_honey.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 42 100% 47%; 3 | --main-color: 57 100% 64%; 4 | --caret-color: 41 100% 24%; 5 | --sub-color: 39 100% 33%; 6 | --sub-alt-color: 42 100% 44%; 7 | --text-color: 53 62% 87%; 8 | --error-color: 0 73% 54%; 9 | --error-extra-color: 0 56% 27%; 10 | --colorful-error-color: 0 73% 54%; 11 | --colorful-error-extra-color: 0 56% 27%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_husqy.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 0%; 3 | --main-color: 270 100% 77%; 4 | --caret-color: 270 100% 77%; 5 | --sub-color: 270 100% 59%; 6 | --sub-alt-color: 300 100% 6%; 7 | --text-color: 270 100% 92%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_iv_clover.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 63%; 3 | --main-color: 355 17% 29%; 4 | --caret-color: 0 0% 55%; 5 | --sub-color: 0 0% 21%; 6 | --sub-alt-color: 0 0% 75%; 7 | --text-color: 300 13% 20%; 8 | --error-color: 356 14% 51%; 9 | --error-extra-color: 356 14% 53%; 10 | --colorful-error-color: 35 32% 53%; 11 | --colorful-error-extra-color: 35 35% 57%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_joker.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 271 45% 10%; 3 | --main-color: 82 76% 49%; 4 | --caret-color: 82 76% 49%; 5 | --sub-color: 265 32% 48%; 6 | --sub-alt-color: 271 59% 8%; 7 | --text-color: 262 49% 92%; 8 | --error-color: 0 77% 53%; 9 | --error-extra-color: 0 63% 40%; 10 | --colorful-error-color: 0 77% 53%; 11 | --colorful-error-extra-color: 0 63% 40%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_lime.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 203 7% 52%; 3 | --main-color: 83 50% 52%; 4 | --caret-color: 83 50% 52%; 5 | --sub-color: 205 7% 32%; 6 | --sub-alt-color: 200 6% 48%; 7 | --text-color: 207 29% 81%; 8 | --error-color: 10 83% 52%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 10 83% 52%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_menthol.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 164 100% 38%; 3 | --main-color: 0 0% 100%; 4 | --caret-color: 158 96% 80%; 5 | --sub-color: 154 62% 25%; 6 | --sub-alt-color: 161 77% 39%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 0 73% 56%; 9 | --error-extra-color: 0 65% 42%; 10 | --colorful-error-color: 0 73% 56%; 11 | --colorful-error-extra-color: 0 65% 42%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_monokai.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 70 8% 15%; 3 | --main-color: 80 76% 53%; 4 | --caret-color: 190 81% 67%; 5 | --sub-color: 54 70% 68%; 6 | --sub-alt-color: 72 8% 12%; 7 | --text-color: 60 9% 87%; 8 | --error-color: 338 95% 56%; 9 | --error-extra-color: 32 98% 56%; 10 | --colorful-error-color: 338 95% 56%; 11 | --colorful-error-extra-color: 32 98% 56%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_night_runner.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 13%; 3 | --main-color: 60 100% 51%; 4 | --caret-color: 60 100% 51%; 5 | --sub-color: 253 36% 45%; 6 | --sub-alt-color: 0 0% 10%; 7 | --text-color: 0 0% 91%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_norse.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 1% 14%; 3 | --main-color: 193 43% 30%; 4 | --caret-color: 193 43% 30%; 5 | --sub-color: 193 8% 34%; 6 | --sub-alt-color: 180 3% 19%; 7 | --text-color: 38 21% 75%; 8 | --error-color: 0 50% 33%; 9 | --error-extra-color: 0 61% 29%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_peaches.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 43 33% 82%; 3 | --main-color: 13 65% 62%; 4 | --caret-color: 13 65% 62%; 5 | --sub-color: 24 65% 73%; 6 | --sub-alt-color: 32 47% 79%; 7 | --text-color: 22 19% 31%; 8 | --error-color: 3 100% 69%; 9 | --error-extra-color: 9 70% 45%; 10 | --colorful-error-color: 3 100% 69%; 11 | --colorful-error-extra-color: 9 70% 45%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_stealth.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 210 50% 1%; 3 | --main-color: 204 8% 24%; 4 | --caret-color: 22 97% 45%; 5 | --sub-color: 206 8% 40%; 6 | --sub-alt-color: 0 0% 7%; 7 | --text-color: 204 8% 24%; 8 | --error-color: 22 97% 45%; 9 | --error-extra-color: 16 81% 25%; 10 | --colorful-error-color: 22 97% 45%; 11 | --colorful-error-extra-color: 16 81% 25%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_striker.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 211 76% 29%; 3 | --main-color: 156 7% 85%; 4 | --caret-color: 156 7% 85%; 5 | --sub-color: 211 68% 18%; 6 | --sub-alt-color: 211 76% 26%; 7 | --text-color: 156 6% 85%; 8 | --error-color: 6 96% 59%; 9 | --error-extra-color: 2 75% 46%; 10 | --colorful-error-color: 6 96% 59%; 11 | --colorful-error-extra-color: 2 75% 46%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_terminal.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 210 4% 10%; 3 | --caret-color: 79 76% 37%; 4 | --main-color: 79 76% 37%; 5 | --sub-color: 220 2% 29%; 6 | --sub-alt-color: 210 5% 8%; 7 | --text-color: 78 19% 90%; 8 | --error-color: 0 76% 37%; 9 | --error-extra-color: 0 76% 26%; 10 | --colorful-error-color: 0 76% 37%; 11 | --colorful-error-extra-color: 0 76% 26%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_terra.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 150 14% 5%; 3 | --main-color: 93 48% 56%; 4 | --caret-color: 93 48% 56%; 5 | --sub-color: 92 40% 27%; 6 | --sub-alt-color: 159 32% 9%; 7 | --text-color: 54 51% 88%; 8 | --error-color: 54 51% 65%; 9 | --error-extra-color: 55 28% 42%; 10 | --colorful-error-color: 54 51% 65%; 11 | --colorful-error-extra-color: 55 28% 42%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_trackday.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 227 19% 34%; 3 | --main-color: 7 72% 56%; 4 | --caret-color: 224 29% 39%; 5 | --sub-color: 218 40% 54%; 6 | --sub-alt-color: 227 19% 29%; 7 | --text-color: 0 0% 81%; 8 | --error-color: 0 74% 60%; 9 | --error-extra-color: 0 98% 62%; 10 | --colorful-error-color: 0 100% 59%; 11 | --colorful-error-extra-color: 0 67% 44%; 12 | } -------------------------------------------------------------------------------- /src/config/react-query.config.ts: -------------------------------------------------------------------------------- 1 | import { QueryClient } from '@tanstack/react-query' 2 | 3 | export const QK = { 4 | SPOTIFY: { 5 | ROOT: 'SPOTIFY', 6 | PLAYLIST: 'PLAYLIST', 7 | CURRENT_USER: { 8 | ROOT: 'CURRENT_USER', 9 | PLAYLIST: 'MY_PLAYLIST', 10 | }, 11 | TRACKLIST: 'TRACKLIST', 12 | }, 13 | } 14 | 15 | export const queryClient = new QueryClient() 16 | -------------------------------------------------------------------------------- /public/css/theme_8008.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 217 15% 24%; 3 | --main-color: 342 88% 63%; 4 | --caret-color: 342 88% 63%; 5 | --sub-color: 216 14% 63%; 6 | --sub-alt-color: 216 14% 21%; 7 | --text-color: 214 19% 93%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 68 69% 53%; 11 | --colorful-error-extra-color: 68 60% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_arch.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 228 17% 6%; 3 | --main-color: 175 30% 61%; 4 | --caret-color: 175 30% 61%; 5 | --sub-color: 234 18% 33%; 6 | --sub-alt-color: 227 23% 12%; 7 | --text-color: 0 5% 96%; 8 | --error-color: 356 100% 64%; 9 | --error-extra-color: 356 61% 43%; 10 | --colorful-error-color: 356 100% 64%; 11 | --colorful-error-extra-color: 356 61% 43%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_beach.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 48 100% 84%; 3 | --main-color: 152 36% 70%; 4 | --caret-color: 41 100% 68%; 5 | --sub-color: 41 100% 68%; 6 | --sub-alt-color: 44 87% 76%; 7 | --text-color: 149 14% 41%; 8 | --error-color: 2 100% 71%; 9 | --error-extra-color: 2 100% 71%; 10 | --colorful-error-color: 2 100% 71%; 11 | --colorful-error-extra-color: 2 100% 71%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_bouquet.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 165 47% 17%; 3 | --main-color: 3 65% 76%; 4 | --caret-color: 3 65% 76%; 5 | --sub-color: 165 38% 40%; 6 | --sub-alt-color: 166 43% 21%; 7 | --text-color: 37 34% 87%; 8 | --error-color: 11 68% 50%; 9 | --error-extra-color: 11 70% 33%; 10 | --colorful-error-color: 11 68% 50%; 11 | --colorful-error-extra-color: 11 70% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_comfy.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 212 20% 36%; 3 | --main-color: 8 78% 87%; 4 | --caret-color: 194 31% 71%; 5 | --sub-color: 194 31% 71%; 6 | --sub-alt-color: 212 21% 33%; 7 | --text-color: 9 26% 95%; 8 | --error-color: 349 55% 53%; 9 | --error-extra-color: 349 55% 53%; 10 | --colorful-error-color: 349 55% 53%; 11 | --colorful-error-extra-color: 349 55% 53%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dev.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 217 19% 13%; 3 | --main-color: 195 72% 49%; 4 | --caret-color: 220 22% 38%; 5 | --sub-color: 220 22% 38%; 6 | --sub-alt-color: 215 22% 11%; 7 | --text-color: 60 18% 75%; 8 | --error-color: 354 74% 41%; 9 | --error-extra-color: 354 75% 30%; 10 | --colorful-error-color: 354 74% 41%; 11 | --colorful-error-extra-color: 354 75% 30%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dmg.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 210 3% 86%; 3 | --main-color: 332 76% 39%; 4 | --caret-color: 231 45% 40%; 5 | --sub-color: 233 52% 46%; 6 | --sub-alt-color: 231 18% 78%; 7 | --text-color: 0 0% 25%; 8 | --error-color: 332 76% 39%; 9 | --error-extra-color: 334 48% 39%; 10 | --colorful-error-color: 85 32% 48%; 11 | --colorful-error-extra-color: 120 34% 29%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dollar.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 60 23% 86%; 3 | --main-color: 120 12% 48%; 4 | --caret-color: 135 3% 27%; 5 | --sub-color: 80 20% 51%; 6 | --sub-alt-color: 78 15% 78%; 7 | --text-color: 132 3% 34%; 8 | --error-color: 0 100% 42%; 9 | --error-extra-color: 0 86% 74%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dracula.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 231 15% 18%; 3 | --main-color: 265 89% 78%; 4 | --caret-color: 265 89% 78%; 5 | --sub-color: 225 27% 51%; 6 | --sub-alt-color: 230 16% 15%; 7 | --text-color: 60 30% 96%; 8 | --error-color: 0 100% 67%; 9 | --error-extra-color: 65 92% 76%; 10 | --colorful-error-color: 0 100% 67%; 11 | --colorful-error-extra-color: 65 92% 76%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_earthsong.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 30 11% 15%; 3 | --main-color: 122 30% 45%; 4 | --caret-color: 192 82% 40%; 5 | --sub-color: 39 91% 57%; 6 | --sub-alt-color: 36 9% 10%; 7 | --text-color: 30 55% 78%; 8 | --error-color: 354 50% 33%; 9 | --error-extra-color: 4 100% 68%; 10 | --colorful-error-color: 354 50% 33%; 11 | --colorful-error-extra-color: 4 100% 68%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_fledgling.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 273 8% 23%; 3 | --main-color: 351 96% 71%; 4 | --caret-color: 0 0% 28%; 5 | --sub-color: 340 25% 45%; 6 | --sub-alt-color: 270 10% 20%; 7 | --text-color: 6 28% 86%; 8 | --error-color: 351 91% 55%; 9 | --error-extra-color: 351 100% 37%; 10 | --colorful-error-color: 351 100% 52%; 11 | --colorful-error-extra-color: 0 0% 0%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_fleuriste.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 36 30% 68%; 3 | --main-color: 162 17% 30%; 4 | --caret-color: 37 21% 45%; 5 | --sub-color: 331 29% 30%; 6 | --sub-alt-color: 36 22% 62%; 7 | --text-color: 161 47% 7%; 8 | --error-color: 0 100% 30%; 9 | --error-extra-color: 0 75% 31%; 10 | --colorful-error-color: 0 48% 44%; 11 | --colorful-error-extra-color: 0 46% 52%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_graen.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 150 11% 21%; 3 | --main-color: 34 16% 58%; 4 | --caret-color: 351 66% 23%; 5 | --sub-color: 144 9% 10%; 6 | --sub-alt-color: 144 12% 24%; 7 | --text-color: 34 16% 58%; 8 | --error-color: 351 66% 23%; 9 | --error-extra-color: 350 86% 20%; 10 | --colorful-error-color: 351 66% 23%; 11 | --colorful-error-extra-color: 350 86% 20%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_hammerhead.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 229 73% 4%; 3 | --main-color: 170 56% 56%; 4 | --caret-color: 170 56% 56%; 5 | --sub-color: 208 43% 23%; 6 | --sub-alt-color: 210 60% 10%; 7 | --text-color: 193 49% 92%; 8 | --error-color: 0 77% 53%; 9 | --error-extra-color: 0 63% 40%; 10 | --colorful-error-color: 0 77% 53%; 11 | --colorful-error-extra-color: 0 63% 40%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_hanok.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 43 21% 81%; 3 | --main-color: 25 32% 24%; 4 | --caret-color: 25 32% 24%; 5 | --sub-color: 24 20% 45%; 6 | --sub-alt-color: 34 23% 75%; 7 | --text-color: 180 2% 23%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_horizon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 228 15% 13%; 3 | --main-color: 31 33% 65%; 4 | --caret-color: 0 0% 73%; 5 | --sub-color: 14 60% 65%; 6 | --sub-alt-color: 232 15% 11%; 7 | --text-color: 0 0% 73%; 8 | --error-color: 346 61% 58%; 9 | --error-extra-color: 0 100% 62%; 10 | --colorful-error-color: 346 61% 58%; 11 | --colorful-error-extra-color: 346 61% 58%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_luna.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 254 31% 16%; 3 | --main-color: 343 88% 71%; 4 | --caret-color: 343 88% 71%; 5 | --sub-color: 268 37% 36%; 6 | --sub-alt-color: 261 33% 21%; 7 | --text-color: 343 100% 95%; 8 | --error-color: 42 83% 63%; 9 | --error-extra-color: 42 63% 47%; 10 | --colorful-error-color: 42 83% 63%; 11 | --colorful-error-extra-color: 42 63% 47%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_macroblank.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 161 26% 76%; 3 | --main-color: 9 79% 42%; 4 | --caret-color: 343 3% 45%; 5 | --sub-color: 165 3% 46%; 6 | --sub-alt-color: 154 25% 82%; 7 | --text-color: 0 78% 16%; 8 | --error-color: 9 79% 42%; 9 | --error-extra-color: 0 100% 98%; 10 | --colorful-error-color: 0 100% 98%; 11 | --colorful-error-extra-color: 38 100% 88%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_mashu.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 1% 17%; 3 | --main-color: 257 20% 51%; 4 | --caret-color: 257 20% 51%; 5 | --sub-color: 354 42% 74%; 6 | --sub-alt-color: 262 10% 16%; 7 | --text-color: 352 35% 92%; 8 | --error-color: 11 68% 50%; 9 | --error-extra-color: 11 70% 33%; 10 | --colorful-error-color: 11 68% 50%; 11 | --colorful-error-extra-color: 11 70% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_matcha_moccha.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 21 38% 23%; 3 | --main-color: 101 44% 57%; 4 | --caret-color: 101 44% 57%; 5 | --sub-color: 21 37% 45%; 6 | --sub-alt-color: 22 38% 19%; 7 | --text-color: 32 46% 86%; 8 | --error-color: 6 96% 59%; 9 | --error-extra-color: 2 75% 46%; 10 | --colorful-error-color: 6 96% 59%; 11 | --colorful-error-extra-color: 2 75% 46%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_material.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 200 19% 18%; 3 | --main-color: 174 42% 65%; 4 | --caret-color: 174 42% 65%; 5 | --sub-color: 197 20% 37%; 6 | --sub-alt-color: 200 19% 22%; 7 | --text-color: 208 35% 93%; 8 | --error-color: 6 96% 59%; 9 | --error-extra-color: 2 75% 46%; 10 | --colorful-error-color: 6 96% 59%; 11 | --colorful-error-extra-color: 2 75% 46%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_matrix.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 0%; 3 | --main-color: 115 100% 50%; 4 | --caret-color: 115 100% 50%; 5 | --sub-color: 120 100% 20%; 6 | --sub-alt-color: 114 100% 6%; 7 | --text-color: 115 100% 90%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_midnight.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 218 27% 6%; 3 | --main-color: 220 25% 50%; 4 | --caret-color: 220 25% 50%; 5 | --sub-color: 218 25% 30%; 6 | --sub-alt-color: 218 29% 11%; 7 | --text-color: 218 25% 70%; 8 | --error-color: 0 40% 60%; 9 | --error-extra-color: 20 40% 60%; 10 | --colorful-error-color: 0 40% 60%; 11 | --colorful-error-extra-color: 20 40% 60%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_mizu.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 203 40% 78%; 3 | --main-color: 50 50% 98%; 4 | --caret-color: 50 50% 98%; 5 | --sub-color: 204 28% 63%; 6 | --sub-alt-color: 202 38% 73%; 7 | --text-color: 211 32% 15%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_ms_cupcakes.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 100%; 3 | --main-color: 192 86% 66%; 4 | --caret-color: 0 0% 19%; 5 | --sub-color: 328 65% 55%; 6 | --sub-alt-color: 189 57% 95%; 7 | --text-color: 191 65% 11%; 8 | --error-color: 0 0% 0%; 9 | --error-extra-color: 0 0% 79%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_muted.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 32%; 3 | --main-color: 262 46% 80%; 4 | --caret-color: 179 49% 79%; 5 | --sub-color: 216 14% 63%; 6 | --sub-alt-color: 0 0% 29%; 7 | --text-color: 179 49% 79%; 8 | --error-color: 344 55% 84%; 9 | --error-extra-color: 344 55% 84%; 10 | --colorful-error-color: 344 55% 84%; 11 | --colorful-error-extra-color: 344 55% 84%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_nautilus.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 215 49% 15%; 3 | --main-color: 44 83% 53%; 4 | --caret-color: 44 83% 53%; 5 | --sub-color: 200 82% 23%; 6 | --sub-alt-color: 213 49% 11%; 7 | --text-color: 175 74% 42%; 8 | --error-color: 0 69% 53%; 9 | --error-extra-color: 0 68% 28%; 10 | --colorful-error-color: 0 69% 53%; 11 | --colorful-error-extra-color: 0 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_olivia.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 270 4% 11%; 3 | --main-color: 17 50% 74%; 4 | --caret-color: 17 50% 74%; 5 | --sub-color: 0 11% 27%; 6 | --sub-alt-color: 345 6% 14%; 7 | --text-color: 24 16% 94%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 72% 56%; 11 | --colorful-error-extra-color: 354 57% 43%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_pastel.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 346 43% 79%; 3 | --main-color: 54 90% 85%; 4 | --caret-color: 54 90% 85%; 5 | --sub-color: 198 100% 85%; 6 | --sub-alt-color: 346 36% 72%; 7 | --text-color: 294 9% 40%; 8 | --error-color: 3 100% 69%; 9 | --error-extra-color: 9 70% 45%; 10 | --colorful-error-color: 3 100% 69%; 11 | --colorful-error-extra-color: 9 70% 45%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_peach_blossom.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 16%; 3 | --main-color: 118 18% 66%; 4 | --caret-color: 0 0% 38%; 5 | --sub-color: 0 0% 38%; 6 | --sub-alt-color: 198 17% 20%; 7 | --text-color: 27 98% 83%; 8 | --error-color: 3 100% 69%; 9 | --error-extra-color: 352 77% 60%; 10 | --colorful-error-color: 3 100% 69%; 11 | --colorful-error-extra-color: 352 77% 60%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_pink_lemonade.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 43 85% 77%; 3 | --main-color: 9 85% 77%; 4 | --caret-color: 60 40% 98%; 5 | --sub-color: 18 85% 77%; 6 | --sub-alt-color: 35 85% 77%; 7 | --text-color: 60 40% 98%; 8 | --error-color: 2 100% 71%; 9 | --error-extra-color: 2 100% 71%; 10 | --colorful-error-color: 2 100% 71%; 11 | --colorful-error-extra-color: 2 100% 71%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_retro.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 43 25% 81%; 3 | --main-color: 40 12% 10%; 4 | --caret-color: 40 12% 10%; 5 | --sub-color: 42 8% 53%; 6 | --sub-alt-color: 46 16% 74%; 7 | --text-color: 40 12% 10%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_rudy.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 212 41% 17%; 3 | --caret-color: 37 34% 52%; 4 | --main-color: 37 34% 52%; 5 | --sub-color: 214 30% 33%; 6 | --sub-alt-color: 212 40% 14%; 7 | --text-color: 54 8% 77%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_sewing_tin.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 249 60% 24%; 3 | --main-color: 41 81% 73%; 4 | --caret-color: 43 93% 77%; 5 | --sub-color: 224 63% 55%; 6 | --sub-alt-color: 242 52% 32%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 29 48% 57%; 9 | --error-extra-color: 29 48% 57%; 10 | --colorful-error-color: 29 48% 57%; 11 | --colorful-error-extra-color: 29 48% 57%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_snes.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 255 3% 75%; 3 | --main-color: 257 42% 41%; 4 | --caret-color: 258 46% 40%; 5 | --sub-color: 257 46% 69%; 6 | --sub-alt-color: 257 13% 73%; 7 | --text-color: 0 0% 18%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_sonokai.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 225 8% 19%; 3 | --main-color: 92 50% 63%; 4 | --caret-color: 12 84% 70%; 5 | --sub-color: 45 73% 65%; 6 | --sub-alt-color: 230 8% 15%; 7 | --text-color: 240 2% 89%; 8 | --error-color: 348 96% 68%; 9 | --error-extra-color: 30 77% 67%; 10 | --colorful-error-color: 348 96% 68%; 11 | --colorful-error-extra-color: 30 77% 67%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_sweden.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 208 100% 32%; 3 | --main-color: 48 100% 50%; 4 | --caret-color: 0 0% 71%; 5 | --sub-color: 202 65% 60%; 6 | --sub-alt-color: 207 97% 28%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 0 78% 58%; 9 | --error-extra-color: 0 55% 41%; 10 | --colorful-error-color: 354 88% 68%; 11 | --colorful-error-extra-color: 354 76% 55%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_tiramisu.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 35 19% 77%; 3 | --main-color: 30 39% 59%; 4 | --caret-color: 14 27% 39%; 5 | --sub-color: 30 39% 59%; 6 | --sub-alt-color: 31 30% 74%; 7 | --text-color: 14 27% 39%; 8 | --error-color: 17 81% 55%; 9 | --error-extra-color: 17 81% 55%; 10 | --colorful-error-color: 17 81% 55%; 11 | --colorful-error-extra-color: 17 81% 55%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_tron_orange.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 180 37% 8%; 3 | --main-color: 58 100% 47%; 4 | --caret-color: 58 100% 47%; 5 | --sub-color: 24 100% 50%; 6 | --sub-alt-color: 0 5% 59%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 0 100% 50%; 9 | --error-extra-color: 0 100% 50%; 10 | --colorful-error-color: 0 100% 50%; 11 | --colorful-error-extra-color: 0 100% 50%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_viridescent.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 180 7% 19%; 3 | --main-color: 147 43% 71%; 4 | --caret-color: 15 57% 86%; 5 | --sub-color: 133 18% 59%; 6 | --sub-alt-color: 180 7% 15%; 7 | --text-color: 88 57% 91%; 8 | --error-color: 0 100% 64%; 9 | --error-extra-color: 0 57% 43%; 10 | --colorful-error-color: 0 49% 50%; 11 | --colorful-error-extra-color: 0 45% 37%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_witch_girl.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 2 51% 90%; 3 | --main-color: 155 17% 40%; 4 | --caret-color: 158 16% 73%; 5 | --sub-color: 14 44% 76%; 6 | --sub-alt-color: 15 46% 83%; 7 | --text-color: 155 17% 40%; 8 | --error-color: 16 18% 63%; 9 | --error-extra-color: 16 18% 63%; 10 | --colorful-error-color: 16 18% 63%; 11 | --colorful-error-extra-color: 16 18% 63%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_aurora.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 201 95% 8%; 3 | --main-color: 153 100% 46%; 4 | --caret-color: 153 100% 46%; 5 | --sub-color: 191 49% 28%; 6 | --sub-alt-color: 202 100% 4%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 313 44% 51%; 9 | --error-extra-color: 323 46% 42%; 10 | --colorful-error-color: 313 44% 51%; 11 | --colorful-error-extra-color: 323 46% 42%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_bento.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 218 26% 24%; 3 | --main-color: 350 100% 74%; 4 | --caret-color: 350 100% 74%; 5 | --sub-color: 201 31% 42%; 6 | --sub-alt-color: 218 26% 20%; 7 | --text-color: 17 100% 99%; 8 | --error-color: 355 85% 55%; 9 | --error-extra-color: 0 85% 60%; 10 | --colorful-error-color: 355 97% 56%; 11 | --colorful-error-extra-color: 0 85% 60%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_bingsu.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 349 11% 69%; 3 | --main-color: 337 15% 45%; 4 | --caret-color: 312 11% 91%; 5 | --sub-color: 339 13% 25%; 6 | --sub-alt-color: 341 10% 63%; 7 | --text-color: 312 11% 91%; 8 | --error-color: 338 77% 32%; 9 | --error-extra-color: 338 80% 22%; 10 | --colorful-error-color: 338 77% 32%; 11 | --colorful-error-extra-color: 338 80% 22%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_botanical.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 173 14% 55%; 3 | --main-color: 193 27% 94%; 4 | --caret-color: 176 19% 72%; 5 | --sub-color: 171 9% 31%; 6 | --sub-alt-color: 174 12% 51%; 7 | --text-color: 193 27% 94%; 8 | --error-color: 19 79% 84%; 9 | --error-extra-color: 19 87% 70%; 10 | --colorful-error-color: 19 79% 84%; 11 | --colorful-error-extra-color: 19 87% 70%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_breeze.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 28 44% 84%; 3 | --main-color: 260 28% 53%; 4 | --caret-color: 260 28% 53%; 5 | --sub-color: 196 52% 48%; 6 | --sub-alt-color: 26 61% 91%; 7 | --text-color: 196 55% 24%; 8 | --error-color: 260 28% 53%; 9 | --error-extra-color: 331 44% 43%; 10 | --colorful-error-color: 60 92% 71%; 11 | --colorful-error-extra-color: 149 65% 64%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_bushido.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 220 17% 17%; 3 | --main-color: 356 81% 61%; 4 | --caret-color: 356 81% 61%; 5 | --sub-color: 221 12% 40%; 6 | --sub-alt-color: 219 23% 14%; 7 | --text-color: 32 42% 94%; 8 | --error-color: 356 81% 61%; 9 | --error-extra-color: 356 50% 40%; 10 | --colorful-error-color: 54 81% 61%; 11 | --colorful-error-extra-color: 54 51% 49%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_cheesecake.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 40 91% 91%; 3 | --main-color: 341 55% 36%; 4 | --caret-color: 341 54% 35%; 5 | --sub-color: 328 77% 48%; 6 | --sub-alt-color: 40 68% 85%; 7 | --text-color: 343 6% 21%; 8 | --error-color: 130 83% 65%; 9 | --error-extra-color: 130 83% 65%; 10 | --colorful-error-color: 130 83% 65%; 11 | --colorful-error-extra-color: 130 83% 65%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_creamsicle.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 19 100% 71%; 3 | --main-color: 60 40% 98%; 4 | --caret-color: 60 40% 98%; 5 | --sub-color: 19 100% 56%; 6 | --sub-alt-color: 19 99% 66%; 7 | --text-color: 60 40% 98%; 8 | --error-color: 275 86% 36%; 9 | --error-extra-color: 275 86% 36%; 10 | --colorful-error-color: 275 86% 36%; 11 | --colorful-error-extra-color: 275 86% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_cyberspace.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 120 8% 10%; 3 | --main-color: 156 100% 40%; 4 | --caret-color: 156 100% 40%; 5 | --sub-color: 259 51% 65%; 6 | --sub-alt-color: 120 7% 8%; 7 | --text-color: 153 88% 87%; 8 | --error-color: 0 100% 69%; 9 | --error-extra-color: 0 67% 49%; 10 | --colorful-error-color: 0 100% 69%; 11 | --colorful-error-extra-color: 0 67% 49%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_desert_oasis.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 41 100% 92%; 3 | --main-color: 45 99% 41%; 4 | --caret-color: 216 99% 61%; 5 | --sub-color: 217 100% 50%; 6 | --sub-alt-color: 42 58% 83%; 7 | --text-color: 47 100% 10%; 8 | --error-color: 94 49% 49%; 9 | --error-extra-color: 92 52% 32%; 10 | --colorful-error-color: 94 49% 49%; 11 | --colorful-error-extra-color: 92 52% 32%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_evil_eye.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 199 100% 38%; 3 | --main-color: 37 45% 94%; 4 | --caret-color: 37 45% 94%; 5 | --sub-color: 207 99% 31%; 6 | --sub-alt-color: 203 88% 40%; 7 | --text-color: 240 2% 9%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_ez_mode.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 208 100% 39%; 3 | --main-color: 315 94% 68%; 4 | --caret-color: 118 67% 57%; 5 | --sub-color: 208 93% 52%; 6 | --sub-alt-color: 208 100% 34%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 118 67% 57%; 9 | --error-extra-color: 117 52% 48%; 10 | --colorful-error-color: 118 67% 57%; 11 | --colorful-error-extra-color: 117 52% 48%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_floret.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 187 100% 9%; 3 | --main-color: 46 100% 71%; 4 | --caret-color: 57 52% 51%; 5 | --sub-color: 193 13% 53%; 6 | --sub-alt-color: 186 38% 15%; 7 | --text-color: 0 0% 90%; 8 | --error-color: 28 100% 27%; 9 | --error-extra-color: 192 100% 28%; 10 | --colorful-error-color: 28 100% 27%; 11 | --colorful-error-extra-color: 193 21% 49%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_fundamentals.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 180 1% 45%; 3 | --main-color: 125 17% 57%; 4 | --caret-color: 193 66% 28%; 5 | --sub-color: 30 10% 77%; 6 | --sub-alt-color: 180 1% 40%; 7 | --text-color: 0 0% 7%; 8 | --error-color: 266 27% 38%; 9 | --error-extra-color: 265 28% 27%; 10 | --colorful-error-color: 266 27% 38%; 11 | --colorful-error-extra-color: 265 28% 27%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_godspeed.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 47 39% 86%; 3 | --main-color: 201 34% 70%; 4 | --caret-color: 45 85% 71%; 5 | --sub-color: 49 11% 64%; 6 | --sub-alt-color: 46 24% 83%; 7 | --text-color: 216 2% 40%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_grand_prix.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 213 26% 29%; 3 | --main-color: 66 62% 51%; 4 | --caret-color: 66 62% 51%; 5 | --sub-color: 213 16% 43%; 6 | --sub-alt-color: 215 24% 34%; 7 | --text-color: 224 22% 80%; 8 | --error-color: 14 97% 57%; 9 | --error-extra-color: 14 97% 57%; 10 | --colorful-error-color: 14 97% 57%; 11 | --colorful-error-extra-color: 14 97% 57%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_grape.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 283 100% 12%; 3 | --main-color: 34 100% 50%; 4 | --caret-color: 34 100% 50%; 5 | --sub-color: 313 53% 28%; 6 | --sub-alt-color: 281 100% 9%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 340 100% 63%; 9 | --error-extra-color: 340 71% 44%; 10 | --colorful-error-color: 340 100% 63%; 11 | --colorful-error-extra-color: 340 71% 44%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_gruvbox_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 48 87% 88%; 3 | --main-color: 122 21% 51%; 4 | --caret-color: 122 21% 51%; 5 | --sub-color: 35 17% 59%; 6 | --sub-alt-color: 44 37% 77%; 7 | --text-color: 20 5% 22%; 8 | --error-color: 2 75% 46%; 9 | --error-extra-color: 358 100% 31%; 10 | --colorful-error-color: 2 75% 46%; 11 | --colorful-error-extra-color: 358 100% 31%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_iceberg_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 229 20% 11%; 3 | --caret-color: 230 15% 85%; 4 | --main-color: 215 37% 65%; 5 | --sub-color: 230 14% 41%; 6 | --sub-alt-color: 231 17% 16%; 7 | --text-color: 229 11% 80%; 8 | --error-color: 0 65% 68%; 9 | --error-extra-color: 25 65% 68%; 10 | --colorful-error-color: 0 65% 68%; 11 | --colorful-error-extra-color: 25 65% 68%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_laser.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 250 43% 19%; 3 | --main-color: 186 100% 34%; 4 | --caret-color: 186 100% 34%; 5 | --sub-color: 339 68% 43%; 6 | --sub-alt-color: 252 44% 16%; 7 | --text-color: 185 22% 88%; 8 | --error-color: 72 100% 42%; 9 | --error-extra-color: 72 100% 25%; 10 | --colorful-error-color: 72 100% 42%; 11 | --colorful-error-extra-color: 72 100% 25%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_leather.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 21 40% 47%; 3 | --main-color: 36 100% 87%; 4 | --caret-color: 13 84% 61%; 5 | --sub-color: 20 50% 34%; 6 | --sub-alt-color: 21 42% 43%; 7 | --text-color: 36 100% 87%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_magic_girl.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 100%; 3 | --main-color: 336 77% 83%; 4 | --caret-color: 334 72% 63%; 5 | --sub-color: 165 65% 74%; 6 | --sub-alt-color: 0 0% 95%; 7 | --text-color: 169 100% 34%; 8 | --error-color: 45 100% 79%; 9 | --error-extra-color: 334 72% 63%; 10 | --colorful-error-color: 47 100% 76%; 11 | --colorful-error-extra-color: 334 72% 63%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_metropolis.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 207 49% 12%; 3 | --main-color: 173 48% 55%; 4 | --caret-color: 173 48% 55%; 5 | --sub-color: 200 45% 36%; 6 | --sub-alt-color: 206 51% 9%; 7 | --text-color: 198 32% 92%; 8 | --error-color: 11 68% 50%; 9 | --error-extra-color: 11 70% 33%; 10 | --colorful-error-color: 11 68% 50%; 11 | --colorful-error-extra-color: 11 70% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_miami.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 341 87% 64%; 3 | --main-color: 178 96% 45%; 4 | --caret-color: 140 84% 80%; 5 | --text-color: 334 19% 93%; 6 | --sub-color: 340 57% 37%; 7 | --sub-alt-color: 340 67% 57%; 8 | --error-color: 55 100% 78%; 9 | --error-extra-color: 55 36% 57%; 10 | --colorful-error-color: 55 100% 78%; 11 | --colorful-error-extra-color: 55 36% 57%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_miami_nights.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 4% 10%; 3 | --main-color: 333 71% 64%; 4 | --caret-color: 333 71% 64%; 5 | --sub-color: 183 49% 52%; 6 | --sub-alt-color: 240 3% 6%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 55 100% 78%; 9 | --error-extra-color: 55 35% 56%; 10 | --colorful-error-color: 55 100% 78%; 11 | --colorful-error-extra-color: 55 35% 56%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_milkshake.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 100%; 3 | --main-color: 222 34% 20%; 4 | --caret-color: 222 34% 20%; 5 | --sub-color: 190 73% 64%; 6 | --sub-alt-color: 191 48% 91%; 7 | --text-color: 222 34% 20%; 8 | --error-color: 349 75% 78%; 9 | --error-extra-color: 349 63% 72%; 10 | --colorful-error-color: 349 75% 78%; 11 | --colorful-error-extra-color: 349 63% 72%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_mint.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 204 90% 19%; 3 | --main-color: 147 64% 61%; 4 | --caret-color: 147 64% 61%; 5 | --sub-color: 199 62% 33%; 6 | --sub-alt-color: 204 84% 17%; 7 | --text-color: 84 50% 92%; 8 | --error-color: 341 87% 64%; 9 | --error-extra-color: 341 49% 43%; 10 | --colorful-error-color: 341 87% 64%; 11 | --colorful-error-extra-color: 341 49% 43%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_modern_dolch_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 86%; 3 | --caret-color: 167 42% 69%; 4 | --main-color: 167 42% 69%; 5 | --sub-color: 0 1% 64%; 6 | --sub-alt-color: 0 0% 91%; 7 | --text-color: 0 0% 27%; 8 | --error-color: 350 70% 73%; 9 | --error-extra-color: 350 69% 61%; 10 | --colorful-error-color: 350 70% 73%; 11 | --colorful-error-extra-color: 350 69% 61%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_moonlight.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 216 23% 13%; 3 | --main-color: 35 45% 59%; 4 | --caret-color: 36 31% 43%; 5 | --sub-color: 220 22% 38%; 6 | --sub-alt-color: 214 26% 11%; 7 | --text-color: 60 18% 75%; 8 | --error-color: 354 74% 41%; 9 | --error-extra-color: 354 75% 30%; 10 | --colorful-error-color: 354 74% 41%; 11 | --colorful-error-extra-color: 354 75% 30%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_mr_sleeves.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 200 11% 84%; 3 | --main-color: 13 46% 73%; 4 | --caret-color: 209 35% 67%; 5 | --sub-color: 197 4% 62%; 6 | --sub-alt-color: 200 16% 78%; 7 | --text-color: 0 0% 11%; 8 | --error-color: 0 42% 57%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 209 35% 67%; 11 | --colorful-error-extra-color: 209 17% 48%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_nebula.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 23% 17%; 3 | --main-color: 325 52% 49%; 4 | --caret-color: 90 66% 47%; 5 | --sub-color: 182 76% 41%; 6 | --sub-alt-color: 240 23% 13%; 7 | --text-color: 180 1% 52%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_nord.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 220 17% 17%; 3 | --caret-color: 218 27% 94%; 4 | --main-color: 193 43% 67%; 5 | --sub-color: 220 12% 62%; 6 | --sub-alt-color: 220 16% 22%; 7 | --text-color: 219 28% 88%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_onedark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 221 15% 22%; 3 | --caret-color: 207 82% 66%; 4 | --main-color: 207 82% 66%; 5 | --sub-color: 218 27% 94%; 6 | --sub-alt-color: 219 16% 18%; 7 | --text-color: 95 38% 62%; 8 | --error-color: 355 65% 65%; 9 | --error-extra-color: 354 71% 49%; 10 | --colorful-error-color: 354 71% 49%; 11 | --colorful-error-extra-color: 354 100% 50%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_our_theme.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 354 84% 44%; 3 | --main-color: 49 97% 54%; 4 | --caret-color: 49 97% 54%; 5 | --sub-color: 354 76% 24%; 6 | --sub-alt-color: 353 82% 34%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 49 97% 54%; 9 | --error-extra-color: 49 97% 54%; 10 | --colorful-error-color: 216 97% 54%; 11 | --colorful-error-extra-color: 216 97% 54%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_passion_fruit.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 338 58% 31%; 3 | --main-color: 347 79% 80%; 4 | --caret-color: 0 0% 100%; 5 | --sub-color: 248 20% 65%; 6 | --sub-alt-color: 331 37% 37%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 49 91% 46%; 9 | --error-extra-color: 49 91% 46%; 10 | --colorful-error-color: 49 91% 46%; 11 | --colorful-error-extra-color: 49 91% 46%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_purpleish.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 25% 16%; 3 | --main-color: 260 54% 56%; 4 | --caret-color: 260 54% 56%; 5 | --sub-color: 240 25% 48%; 6 | --sub-alt-color: 240 26% 13%; 7 | --text-color: 240 29% 72%; 8 | --error-color: 0 100% 70%; 9 | --error-extra-color: 0 100% 70%; 10 | --colorful-error-color: 0 100% 70%; 11 | --colorful-error-extra-color: 0 100% 70%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_red_dragon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 356 41% 7%; 3 | --main-color: 2 100% 60%; 4 | --caret-color: 2 100% 60%; 5 | --sub-color: 40 76% 52%; 6 | --sub-alt-color: 353 47% 4%; 7 | --text-color: 195 3% 30%; 8 | --error-color: 357 63% 29%; 9 | --error-extra-color: 357 65% 21%; 10 | --colorful-error-color: 357 63% 29%; 11 | --colorful-error-extra-color: 357 65% 21%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_repose_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 213 9% 20%; 3 | --main-color: 51 24% 79%; 4 | --caret-color: 51 24% 79%; 5 | --sub-color: 55 5% 54%; 6 | --sub-alt-color: 200 3% 23%; 7 | --text-color: 51 24% 79%; 8 | --error-color: 355 100% 65%; 9 | --error-extra-color: 350 54% 50%; 10 | --colorful-error-color: 355 100% 65%; 11 | --colorful-error-extra-color: 350 54% 50%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_repose_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 50 49% 88%; 3 | --main-color: 90 1% 37%; 4 | --caret-color: 90 1% 37%; 5 | --sub-color: 55 5% 54%; 6 | --sub-alt-color: 47 24% 81%; 7 | --text-color: 216 5% 21%; 8 | --error-color: 350 54% 50%; 9 | --error-extra-color: 354 63% 40%; 10 | --colorful-error-color: 350 54% 50%; 11 | --colorful-error-extra-color: 354 63% 40%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_rose_pine.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 252 15% 13%; 3 | --main-color: 189 43% 73%; 4 | --caret-color: 35 88% 72%; 5 | --sub-color: 267 57% 78%; 6 | --sub-alt-color: 253 16% 17%; 7 | --text-color: 245 50% 91%; 8 | --error-color: 343 76% 68%; 9 | --error-extra-color: 2 55% 83%; 10 | --colorful-error-color: 343 76% 68%; 11 | --colorful-error-extra-color: 2 55% 83%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_serika_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 216 5% 21%; 3 | --main-color: 47 84% 48%; 4 | --caret-color: 47 84% 48%; 5 | --sub-color: 216 2% 40%; 6 | --sub-alt-color: 216 5% 18%; 7 | --text-color: 55 12% 80%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_shoko.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 210 22% 84%; 3 | --main-color: 196 58% 69%; 4 | --caret-color: 196 58% 69%; 5 | --sub-color: 204 28% 58%; 6 | --sub-alt-color: 207 32% 79%; 7 | --text-color: 205 20% 29%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_soaring_skies.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 32 100% 97%; 3 | --main-color: 196 84% 64%; 4 | --caret-color: 248 77% 27%; 5 | --sub-color: 248 77% 27%; 6 | --sub-alt-color: 32 25% 86%; 7 | --text-color: 180 2% 12%; 8 | --error-color: 6 96% 63%; 9 | --error-extra-color: 6 57% 44%; 10 | --colorful-error-color: 6 96% 63%; 11 | --colorful-error-extra-color: 6 57% 44%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_strawberry.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 358 83% 73%; 3 | --main-color: 60 40% 98%; 4 | --caret-color: 60 40% 98%; 5 | --sub-color: 350 76% 57%; 6 | --sub-alt-color: 356 80% 68%; 7 | --text-color: 60 40% 98%; 8 | --error-color: 47 97% 62%; 9 | --error-extra-color: 47 76% 48%; 10 | --colorful-error-color: 47 97% 62%; 11 | --colorful-error-extra-color: 47 76% 48%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_superuser.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 222 15% 17%; 3 | --main-color: 154 100% 63%; 4 | --caret-color: 154 100% 63%; 5 | --sub-color: 206 18% 39%; 6 | --sub-alt-color: 222 17% 15%; 7 | --text-color: 153 53% 93%; 8 | --error-color: 0 100% 69%; 9 | --error-extra-color: 0 67% 49%; 10 | --colorful-error-color: 0 100% 69%; 11 | --colorful-error-extra-color: 0 67% 49%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_tangerine.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 25 100% 94%; 3 | --main-color: 20 99% 50%; 4 | --caret-color: 78 100% 26%; 5 | --sub-color: 19 100% 69%; 6 | --sub-alt-color: 19 94% 87%; 7 | --text-color: 19 85% 13%; 8 | --error-color: 78 100% 35%; 9 | --error-extra-color: 78 100% 26%; 10 | --colorful-error-color: 78 100% 35%; 11 | --colorful-error-extra-color: 78 100% 26%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_taro.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 234 100% 85%; 3 | --main-color: 262 27% 8%; 4 | --caret-color: 179 100% 46%; 5 | --sub-color: 245 15% 50%; 6 | --sub-alt-color: 236 48% 76%; 7 | --text-color: 262 27% 8%; 8 | --error-color: 51 100% 62%; 9 | --error-extra-color: 46 100% 88%; 10 | --colorful-error-color: 51 100% 62%; 11 | --colorful-error-extra-color: 46 100% 88%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_trance.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 236 100% 5%; 3 | --main-color: 332 85% 49%; 4 | --caret-color: 332 85% 49%; 5 | --sub-color: 224 34% 35%; 6 | --sub-alt-color: 230 52% 20%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 170 98% 42%; 9 | --error-extra-color: 170 37% 39%; 10 | --colorful-error-color: 170 98% 42%; 11 | --colorful-error-extra-color: 170 37% 39%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_wavez.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 199 25% 15%; 3 | --main-color: 102 71% 55%; 4 | --caret-color: 102 71% 55%; 5 | --sub-color: 190 55% 27%; 6 | --sub-alt-color: 192 35% 16%; 7 | --text-color: 100 22% 92%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /vite.config.ts: -------------------------------------------------------------------------------- 1 | import path from 'path' 2 | import react from '@vitejs/plugin-react-swc' 3 | import { defineConfig } from 'vite' 4 | 5 | export default defineConfig({ 6 | plugins: [react()], 7 | resolve: { 8 | alias: { 9 | '@': path.resolve(__dirname, './src'), 10 | root: path.resolve(__dirname, './'), 11 | }, 12 | }, 13 | server: { 14 | port: 3000, 15 | }, 16 | }) 17 | -------------------------------------------------------------------------------- /public/css/theme_aether.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 210 33% 9%; 3 | --main-color: 312 37% 89%; 4 | --caret-color: 312 37% 89%; 5 | --sub-color: 293 63% 64%; 6 | --sub-alt-color: 263 24% 17%; 7 | --text-color: 312 37% 89%; 8 | --error-color: 360 100% 66%; 9 | --error-extra-color: 349 100% 45%; 10 | --colorful-error-color: 360 100% 66%; 11 | --colorful-error-extra-color: 349 100% 45%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_anti_hero.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 100% 9%; 3 | --main-color: 0 100% 84%; 4 | --caret-color: 0 0% 100%; 5 | --sub-color: 336 100% 62%; 6 | --sub-alt-color: 241 87% 15%; 7 | --text-color: 306 40% 91%; 8 | --error-color: 190 100% 78%; 9 | --error-extra-color: 202 34% 50%; 10 | --colorful-error-color: 190 100% 78%; 11 | --colorful-error-extra-color: 202 34% 50%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_catppuccin.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 240 21% 15%; 3 | --caret-color: 0 59% 88%; 4 | --main-color: 267 84% 81%; 5 | --sub-color: 230 13% 55%; 6 | --sub-alt-color: 240 21% 12%; 7 | --text-color: 226 64% 88%; 8 | --error-color: 343 81% 75%; 9 | --error-extra-color: 350 65% 77%; 10 | --colorful-error-color: 343 81% 75%; 11 | --colorful-error-extra-color: 350 65% 77%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_cherry_blossom.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 216 5% 21%; 3 | --main-color: 305 60% 60%; 4 | --caret-color: 0 0% 100%; 5 | --sub-color: 210 4% 49%; 6 | --sub-alt-color: 210 4% 18%; 7 | --text-color: 55 12% 80%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 69% 49%; 10 | --colorful-error-color: 354 85% 51%; 11 | --colorful-error-extra-color: 354 80% 24%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_drowning.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 244 23% 12%; 3 | --main-color: 219 42% 50%; 4 | --caret-color: 219 77% 61%; 5 | --sub-color: 216 27% 43%; 6 | --sub-alt-color: 236 22% 15%; 7 | --text-color: 240 10% 62%; 8 | --error-color: 354 45% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 45% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_frozen_llama.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 174 77% 78%; 3 | --main-color: 265 42% 46%; 4 | --caret-color: 0 0% 100%; 5 | --sub-color: 261 96% 78%; 6 | --sub-alt-color: 174 68% 70%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 359 78% 52%; 9 | --error-extra-color: 359 78% 52%; 10 | --colorful-error-color: 359 78% 52%; 11 | --colorful-error-extra-color: 359 78% 52%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_future_funk.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 267 46% 19%; 3 | --main-color: 37 45% 94%; 4 | --caret-color: 37 45% 94%; 5 | --sub-color: 267 100% 78%; 6 | --sub-alt-color: 266 45% 16%; 7 | --text-color: 37 45% 94%; 8 | --error-color: 333 84% 62%; 9 | --error-extra-color: 332 74% 43%; 10 | --colorful-error-color: 333 84% 62%; 11 | --colorful-error-extra-color: 332 74% 43%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_lavender.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 255 19% 71%; 3 | --main-color: 250 12% 90%; 4 | --caret-color: 250 12% 90%; 5 | --sub-color: 250 12% 90%; 6 | --sub-alt-color: 252 18% 67%; 7 | --text-color: 253 21% 21%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_lil_dragon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 283 30% 91%; 3 | --main-color: 263 60% 60%; 4 | --caret-color: 222 34% 20%; 5 | --sub-color: 269 23% 64%; 6 | --sub-alt-color: 282 32% 83%; 7 | --text-color: 222 34% 20%; 8 | --error-color: 327 86% 77%; 9 | --error-extra-color: 324 82% 71%; 10 | --colorful-error-color: 327 86% 77%; 11 | --colorful-error-extra-color: 324 82% 71%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_modern_dolch.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 220 3% 18%; 3 | --main-color: 174 58% 68%; 4 | --caret-color: 174 58% 68%; 5 | --sub-color: 210 5% 35%; 6 | --sub-alt-color: 220 4% 15%; 7 | --text-color: 217 17% 91%; 8 | --error-color: 350 54% 62%; 9 | --error-extra-color: 347 40% 43%; 10 | --colorful-error-color: 350 54% 62%; 11 | --colorful-error-extra-color: 347 40% 43%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_nord_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 218 27% 94%; 3 | --caret-color: 179 25% 65%; 4 | --main-color: 179 25% 65%; 5 | --sub-color: 220 16% 49%; 6 | --sub-alt-color: 219 28% 88%; 7 | --text-color: 179 25% 65%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_red_samurai.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 353 61% 32%; 3 | --main-color: 32 44% 61%; 4 | --caret-color: 32 44% 61%; 5 | --sub-color: 353 63% 20%; 6 | --sub-alt-color: 354 60% 29%; 7 | --text-color: 33 24% 85%; 8 | --error-color: 191 69% 53%; 9 | --error-extra-color: 189 68% 28%; 10 | --colorful-error-color: 191 69% 53%; 11 | --colorful-error-extra-color: 191 68% 28%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_retrocast.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 184 89% 25%; 3 | --main-color: 183 58% 70%; 4 | --caret-color: 183 58% 70%; 5 | --sub-color: 54 88% 59%; 6 | --sub-alt-color: 184 57% 35%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 358 100% 67%; 9 | --error-extra-color: 352 50% 51%; 10 | --colorful-error-color: 358 100% 67%; 11 | --colorful-error-extra-color: 352 50% 51%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_rose_pine_dawn.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 35 100% 98%; 3 | --main-color: 189 30% 48%; 4 | --caret-color: 35 81% 56%; 5 | --sub-color: 267 57% 78%; 6 | --sub-alt-color: 35 36% 91%; 7 | --text-color: 197 53% 34%; 8 | --error-color: 343 35% 55%; 9 | --error-extra-color: 3 53% 67%; 10 | --colorful-error-color: 343 35% 55%; 11 | --colorful-error-extra-color: 3 53% 67%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_rose_pine_moon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 248 24% 20%; 3 | --main-color: 189 43% 73%; 4 | --caret-color: 35 88% 72%; 5 | --sub-color: 267 57% 78%; 6 | --sub-alt-color: 246 23% 16%; 7 | --text-color: 245 50% 91%; 8 | --error-color: 343 76% 68%; 9 | --error-extra-color: 2 55% 83%; 10 | --colorful-error-color: 343 76% 68%; 11 | --colorful-error-extra-color: 2 55% 83%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_ryujinscales.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 216 65% 9%; 3 | --main-color: 13 85% 64%; 4 | --caret-color: 13 84% 61%; 5 | --sub-color: 24 100% 78%; 6 | --sub-alt-color: 216 76% 6%; 7 | --text-color: 36 100% 87%; 8 | --error-color: 354 55% 54%; 9 | --error-extra-color: 354 50% 33%; 10 | --colorful-error-color: 354 55% 54%; 11 | --colorful-error-extra-color: 354 50% 33%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_sewing_tin_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 100%; 3 | --main-color: 249 57% 29%; 4 | --caret-color: 43 93% 77%; 5 | --sub-color: 224 58% 51%; 6 | --sub-alt-color: 224 26% 83%; 7 | --text-color: 249 57% 29%; 8 | --error-color: 41 81% 73%; 9 | --error-extra-color: 41 81% 73%; 10 | --colorful-error-color: 41 81% 73%; 11 | --colorful-error-extra-color: 41 81% 73%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_solarized_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 44 87% 94%; 3 | --main-color: 68 100% 30%; 4 | --caret-color: 1 71% 52%; 5 | --sub-color: 175 59% 40%; 6 | --sub-alt-color: 43 38% 82%; 7 | --text-color: 240 2% 10%; 8 | --error-color: 331 64% 52%; 9 | --error-extra-color: 331 64% 37%; 10 | --colorful-error-color: 331 64% 52%; 11 | --colorful-error-extra-color: 331 64% 37%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_terror_below.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 167 46% 8%; 3 | --caret-color: 158 30% 54%; 4 | --main-color: 158 30% 54%; 5 | --sub-color: 174 98% 18%; 6 | --sub-alt-color: 174 70% 5%; 7 | --text-color: 159 25% 89%; 8 | --error-color: 354 42% 56%; 9 | --error-extra-color: 354 32% 36%; 10 | --colorful-error-color: 354 42% 56%; 11 | --colorful-error-extra-color: 354 32% 36%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_vaporwave.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 237 62% 78%; 3 | --main-color: 304 69% 65%; 4 | --caret-color: 195 99% 58%; 5 | --sub-color: 236 24% 59%; 6 | --sub-alt-color: 237 46% 72%; 7 | --text-color: 300 18% 93%; 8 | --error-color: 255 48% 45%; 9 | --error-extra-color: 254 47% 32%; 10 | --colorful-error-color: 195 99% 58%; 11 | --colorful-error-extra-color: 193 70% 48%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_watermelon.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 159 37% 19%; 3 | --main-color: 356 57% 62%; 4 | --caret-color: 356 57% 62%; 5 | --sub-color: 159 33% 36%; 6 | --sub-alt-color: 160 36% 22%; 7 | --text-color: 35 15% 77%; 8 | --error-color: 357 66% 47%; 9 | --error-extra-color: 356 76% 38%; 10 | --colorful-error-color: 357 66% 47%; 11 | --colorful-error-extra-color: 356 76% 38%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_80s_after_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 236 33% 16%; 3 | --main-color: 330 93% 82%; 4 | --caret-color: 195 66% 76%; 5 | --sub-color: 195 66% 76%; 6 | --sub-alt-color: 237 31% 13%; 7 | --text-color: 207 22% 90%; 8 | --error-color: 58 100% 76%; 9 | --error-extra-color: 58 100% 76%; 10 | --colorful-error-color: 58 100% 76%; 11 | --colorful-error-extra-color: 58 100% 76%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_blueberry_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 222 33% 19%; 3 | --main-color: 209 100% 84%; 4 | --caret-color: 314 52% 39%; 5 | --sub-color: 213 29% 50%; 6 | --sub-alt-color: 221 32% 15%; 7 | --text-color: 209 45% 70%; 8 | --error-color: 341 71% 57%; 9 | --error-extra-color: 340 47% 72%; 10 | --colorful-error-color: 341 71% 57%; 11 | --colorful-error-extra-color: 340 47% 72%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_blueberry_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 227 57% 91%; 3 | --main-color: 209 20% 39%; 4 | --caret-color: 341 71% 57%; 5 | --sub-color: 215 25% 66%; 6 | --sub-alt-color: 228 32% 82%; 7 | --text-color: 208 19% 50%; 8 | --error-color: 341 71% 57%; 9 | --error-extra-color: 340 47% 72%; 10 | --colorful-error-color: 341 71% 57%; 11 | --colorful-error-extra-color: 340 47% 72%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_chaos_theory.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 248 29% 10%; 3 | --main-color: 317 97% 73%; 4 | --caret-color: 210 31% 90%; 5 | --text-color: 210 31% 90%; 6 | --error-color: 317 97% 73%; 7 | --sub-color: 228 15% 47%; 8 | --sub-alt-color: 243 24% 15%; 9 | --error-extra-color: 354 49% 46%; 10 | --colorful-error-color: 354 100% 67%; 11 | --colorful-error-extra-color: 354 49% 46%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_dark_magic_girl.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 202 66% 10%; 3 | --main-color: 336 77% 83%; 4 | --caret-color: 259 52% 69%; 5 | --sub-color: 165 65% 74%; 6 | --sub-alt-color: 204 67% 8%; 7 | --text-color: 259 52% 69%; 8 | --error-color: 334 72% 63%; 9 | --error-extra-color: 334 72% 63%; 10 | --colorful-error-color: 171 100% 35%; 11 | --colorful-error-extra-color: 334 72% 63%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_iceberg_light.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 225 10% 92%; 3 | --caret-color: 230 25% 20%; 4 | --main-color: 220 56% 40%; 5 | --sub-color: 230 16% 72%; 6 | --sub-alt-color: 231 16% 83%; 7 | --text-color: 230 20% 25%; 8 | --error-color: 340 55% 56%; 9 | --error-extra-color: 340 59% 51%; 10 | --colorful-error-color: 340 55% 56%; 11 | --colorful-error-extra-color: 340 59% 51%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_lilac_mist.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 315 100% 99%; 3 | --main-color: 324 48% 49%; 4 | --caret-color: 308 53% 74%; 5 | --sub-color: 324 55% 73%; 6 | --sub-alt-color: 293 35% 90%; 7 | --text-color: 309 38% 26%; 8 | --error-color: 2 100% 71%; 9 | --error-extra-color: 2 100% 71%; 10 | --colorful-error-color: 296 34% 63%; 11 | --colorful-error-extra-color: 305 49% 50%; 12 | } 13 | -------------------------------------------------------------------------------- /public/css/theme_slambook.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 56 100% 94%; 3 | --main-color: 246 100% 5%; 4 | --caret-color: 102 68% 29%; 5 | --sub-color: 198; 72%; 39%; 0.769; 6 | --sub-alt-color: 196 36% 84%; 7 | --text-color: 253 100% 18%; 8 | --error-color: 314 100% 49%; 9 | --error-extra-color: 0 84% 44%; 10 | --colorful-error-color: 0 84% 44%; 11 | --colorful-error-extra-color: 104 90% 41%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_solarized_dark.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 192 100% 11%; 3 | --main-color: 68 100% 30%; 4 | --caret-color: 1 71% 52%; 5 | --sub-color: 175 59% 40%; 6 | --sub-alt-color: 193 100% 8%; 7 | --text-color: 205 69% 49%; 8 | --error-color: 331 64% 52%; 9 | --error-extra-color: 331 64% 37%; 10 | --colorful-error-color: 331 64% 52%; 11 | --colorful-error-extra-color: 331 64% 37%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_blue_dolphin.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 197 100% 16%; 3 | --main-color: 305 100% 90%; 4 | --caret-color: 187 100% 42%; 5 | --sub-color: 186 100% 50%; 6 | --sub-alt-color: 195 98% 19%; 7 | --text-color: 190 100% 75%; 8 | --error-color: 323 100% 87%; 9 | --error-extra-color: 357 100% 75%; 10 | --colorful-error-color: 270 96% 82%; 11 | --colorful-error-extra-color: 357 100% 75%; 12 | } -------------------------------------------------------------------------------- /public/css/theme_darling.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 354 96% 89%; 3 | --main-color: 0 0% 100%; 4 | --caret-color: 0 0% 100%; 5 | --sub-color: 0 100% 32%; 6 | --sub-alt-color: 357 68% 84%; 7 | --text-color: 0 0% 100%; 8 | --error-color: 213 73% 53%; 9 | --error-extra-color: 213 73% 53%; 10 | --colorful-error-color: 213 73% 53%; 11 | --colorful-error-extra-color: 213 73% 53%; 12 | --font: Roboto Mono; 13 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | .env 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | use-youtube-player.ts 26 | react-youtube.d.ts 27 | .vercel 28 | -------------------------------------------------------------------------------- /components.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "https://ui.shadcn.com/schema.json", 3 | "style": "default", 4 | "rsc": false, 5 | "tsx": true, 6 | "tailwind": { 7 | "config": "tailwind.config.ts", 8 | "css": "src/globals.css", 9 | "baseColor": "zinc", 10 | "cssVariables": true, 11 | "prefix": "" 12 | }, 13 | "aliases": { 14 | "components": "@/components", 15 | "utils": "@/utils/class-names.utils" 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | typelabs 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /src/components/spotify-music-player/spotify-drawer.skeleton.tsx: -------------------------------------------------------------------------------- 1 | import { For } from '../map' 2 | import { Skeleton } from '../ui/skeleton' 3 | 4 | export const DrawerSkeleton = () => { 5 | return ( 6 |
7 | 8 | 9 | {(_, i) => } 10 | 11 |
12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /src/components/map.tsx: -------------------------------------------------------------------------------- 1 | import { ReactNode } from 'react' 2 | 3 | export function For(props: { 4 | each: Data | undefined | null 5 | children: (instance: Data[number], idx: number) => ReactNode 6 | whenEmpty?: ReactNode 7 | }) { 8 | if (!props.each || props.each.length == 0) return props?.whenEmpty || null 9 | const content = props.each.map((instance, i) => props.children(instance, i)) 10 | return <>{content} 11 | } 12 | -------------------------------------------------------------------------------- /src/components/compound-ui/reset-button.tsx: -------------------------------------------------------------------------------- 1 | import { ResetIcon } from '@radix-ui/react-icons' 2 | import { Button } from '../ui/button' 3 | import { ComponentProps } from 'react' 4 | 5 | type ResetButtonProps = ComponentProps 6 | 7 | export const ResetButton = (props: ResetButtonProps) => { 8 | return ( 9 | 12 | ) 13 | } 14 | -------------------------------------------------------------------------------- /src/react-query/queries/lazy-modules.query.ts: -------------------------------------------------------------------------------- 1 | import { Theme } from '@/styles/theme.type' 2 | import { useQuery, UseQueryOptions } from '@tanstack/react-query' 3 | 4 | type Options = UseQueryOptions 5 | export function useThemes(opts: Partial = {}) { 6 | return useQuery({ 7 | queryKey: ['theme-list'], 8 | queryFn: () => 9 | import('@/styles/theme-list.json').then( 10 | (m) => m.default as unknown as Theme[], 11 | ), 12 | ...opts, 13 | }) 14 | } 15 | -------------------------------------------------------------------------------- /src/utils/spotify.utils.ts: -------------------------------------------------------------------------------- 1 | import { Track } from '@spotify/web-api-ts-sdk' 2 | 3 | export const getTrackKey = (track: Track | Spotify.Track) => 4 | `${track?.name}-${track?.album.name}-${track?.artists[0].name}` 5 | 6 | export const getTrackUrl = (id: string) => 7 | `https://open.spotify.com/track/${id}` 8 | 9 | export const getAlbumUrl = (id: string) => 10 | `https://open.spotify.com/album/${id}` 11 | 12 | export const getArtistUrl = (id: string) => 13 | `https://open.spotify.com/artist/${id}` 14 | -------------------------------------------------------------------------------- /src/config/keyboard.config.ts: -------------------------------------------------------------------------------- 1 | import { egOreo } from '@/assets/sfx/keyboard-soundpacks/eg-oreo/config' 2 | import { nkCream } from '@/assets/sfx/keyboard-soundpacks/nk-cream/config' 3 | 4 | export type KeyboardSoundPackConfig = { 5 | id: string 6 | name: string 7 | key_define_type: 'key' | 'code' 8 | includes_numpad: boolean 9 | sound: string 10 | sprites: Record 11 | } 12 | 13 | export const SOUND_PACKS = [egOreo, nkCream] 14 | export const DEFAULT_SOUNDPACK = SOUND_PACKS[0] 15 | -------------------------------------------------------------------------------- /src/utils/theme.utils.ts: -------------------------------------------------------------------------------- 1 | import { AppStore } from '@/state/app-store' 2 | 3 | export async function previewTheme(theme: string) { 4 | AppStore.set({ previewedTheme: theme }) 5 | } 6 | export async function stopPreviewingTheme() { 7 | AppStore.set({ previewedTheme: null }) 8 | } 9 | 10 | export const formatThemeName = (name: string) => { 11 | let formattedName = name.replace(/_/g, ' ') 12 | formattedName = 13 | formattedName.charAt(0).toUpperCase() + formattedName.substring(1) 14 | return formattedName 15 | } 16 | -------------------------------------------------------------------------------- /src/components/spotify-music-player/connect-spotify-button.tsx: -------------------------------------------------------------------------------- 1 | import { Button } from '@/components/ui/button' 2 | import spotifyIcon from '@/assets/svgs/spotify-icon.svg' 3 | import { initSpotifyClient } from '@/lib/spotify' 4 | 5 | export const ConnectSpotifyButton = () => { 6 | return ( 7 | 14 | ) 15 | } 16 | -------------------------------------------------------------------------------- /.eslintrc.cjs: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | root: true, 3 | env: { browser: true, es2020: true }, 4 | extends: [ 5 | 'eslint:recommended', 6 | 'plugin:@typescript-eslint/recommended', 7 | 'plugin:react-hooks/recommended', 8 | ], 9 | ignorePatterns: ['dist', '*.cjs'], 10 | parser: '@typescript-eslint/parser', 11 | plugins: ['react-refresh'], 12 | rules: { 13 | 'react-refresh/only-export-components': [ 14 | 'warn', 15 | { allowConstantExport: true }, 16 | ], 17 | 'react-hooks/exhaustive-deps': 'off', 18 | }, 19 | } 20 | -------------------------------------------------------------------------------- /public/css/theme_dark_note.css: -------------------------------------------------------------------------------- 1 | :root { 2 | --bg-color: 0 0% 12%; 3 | --main-color: 35 82% 72%; 4 | --caret-color: 326 11% 88%; 5 | --sub-color: 192 13% 52%; 6 | --sub-alt-color: 0 0% 8%; 7 | --text-color: 217 61% 89%; 8 | --error-color: 0 100% 50%; 9 | --error-extra-color: 199 27% 47%; 10 | --colorful-error-color: var(--error-color); 11 | --colorful-error-extra-color: var(--error-extra-color); 12 | --theme-bg-stripe-color: 229 11% 29%; 13 | --theme-bg-stripe-opacity: 0.1; 14 | --theme-accent-stripe-color: 41 100% 37%; 15 | --current-color: var(--text-color); 16 | } -------------------------------------------------------------------------------- /src/utils/os-detector.utils.ts: -------------------------------------------------------------------------------- 1 | export function getOS(): string { 2 | const osPatterns: Record = { 3 | windows: /Windows NT|Win/, 4 | mac: /Macintosh|Mac OS X|MacPPC|MacIntel|Mac OS/, 5 | linux: /Linux|X11/, 6 | android: /Android/, 7 | ios: /iPhone|iPad|iPod/, 8 | unix: /Unix/, 9 | blackberry: /BlackBerry|BB/, 10 | webos: /webOS|hpwOS/, 11 | } 12 | 13 | for (const [os, pattern] of Object.entries(osPatterns)) { 14 | if (pattern.test(window.navigator.userAgent)) { 15 | return os 16 | } 17 | } 18 | 19 | return 'Unknown' 20 | } 21 | -------------------------------------------------------------------------------- /src/config/caret.config.ts: -------------------------------------------------------------------------------- 1 | export enum CaretStyle { 2 | Line = 'line', 3 | Underline = 'underline', 4 | Block = 'block', 5 | Box = 'box', 6 | } 7 | 8 | export const DEFAULT_CARET_STYLE = CaretStyle.Line 9 | 10 | export enum CaretSmoothness { 11 | Off = 'off', 12 | Fast = 'fast', 13 | Medium = 'medium', 14 | Slow = 'slow', 15 | } 16 | 17 | export const caretSmoothnessValues = { 18 | [CaretSmoothness.Off]: 0, 19 | [CaretSmoothness.Fast]: 0.1, 20 | [CaretSmoothness.Medium]: 0.2, 21 | [CaretSmoothness.Slow]: 0.3, 22 | } as const 23 | 24 | export const DEFAULT_CARET_SMOOTHNESS = CaretSmoothness.Fast 25 | -------------------------------------------------------------------------------- /src/utils/errors.utils.ts: -------------------------------------------------------------------------------- 1 | export type Result = [null, TData] | [TError, null] 2 | 3 | export function failable( 4 | failable: () => TData, 5 | ): Result { 6 | try { 7 | return [null, failable()] 8 | } catch (err) { 9 | return [err as TError, null] 10 | } 11 | } 12 | failable.async = canFailAsync 13 | 14 | async function canFailAsync( 15 | failable: () => TData, 16 | ): Promise> { 17 | try { 18 | return [null, await failable()] 19 | } catch (err) { 20 | return [err as TError, null] 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /src/components/spotify-player.tsx: -------------------------------------------------------------------------------- 1 | import { useUserQuery } from '@/react-query/queries/spotify.query' 2 | import { NoSpotifyPremiumButton } from './no-spotify-premium-button' 3 | import { ConnectSpotifyButton } from './spotify-music-player/connect-spotify-button' 4 | import { SpotifyDrawer } from './spotify-music-player/spotify-drawer' 5 | 6 | export function SpotifyPlayer() { 7 | const { data: user } = useUserQuery() 8 | 9 | if (!user) return 10 | 11 | const product = user?.['product' as keyof typeof user] 12 | if (product !== 'premium') return 13 | 14 | return 15 | } 16 | -------------------------------------------------------------------------------- /src/state/metrics.store.ts: -------------------------------------------------------------------------------- 1 | import { create } from 'zustand' 2 | import { createSelector } from 'better-zustand-selector' 3 | 4 | export type Metrics = { 5 | errorPercentage: number 6 | wpm: number 7 | rawWpm: number 8 | cpm: number 9 | } 10 | 11 | export type MetricsStore = Metrics & { 12 | updateMetrics: (metrics: Metrics) => void 13 | } 14 | 15 | export const metricsStore = create((set) => ({ 16 | errorPercentage: 0, 17 | wpm: 0, 18 | rawWpm: 0, 19 | cpm: 0, 20 | updateMetrics: (metrics: Metrics) => { 21 | set(metrics) 22 | }, 23 | })) 24 | 25 | export const useMetricsStore = createSelector(metricsStore) 26 | -------------------------------------------------------------------------------- /src/footer.tsx: -------------------------------------------------------------------------------- 1 | import { SpotifyPlayer } from './components/spotify-player' 2 | import { UserInfo } from './components/spotify-user-info' 3 | import { ThemeSwitcherList } from './components/theme-switcher-list' 4 | import { Box } from './components/ui/box' 5 | import { VolumeControls } from './components/volume/volume-control-popover' 6 | 7 | export function Footer() { 8 | return ( 9 | 10 | 11 | 12 |
13 | 14 | 15 |
16 |
17 | ) 18 | } 19 | -------------------------------------------------------------------------------- /src/components/ui/shortcut.tsx: -------------------------------------------------------------------------------- 1 | // import { UserAgent } from '@quentin-sommer/react-useragent' 2 | 3 | import { cn } from '@/utils/class-names.utils' 4 | import { HTMLAttributes } from 'react' 5 | 6 | type ShortcutProps = HTMLAttributes & { 7 | shortcut: string 8 | } 9 | export const Shortcut = ({ shortcut, className, ...rest }: ShortcutProps) => { 10 | return ( 11 | 18 | {shortcut} 19 | 20 | ) 21 | } 22 | -------------------------------------------------------------------------------- /src/utils/helpers.ts: -------------------------------------------------------------------------------- 1 | import React from 'react' 2 | 3 | export function debounce( 4 | fn: (...args: TArgs) => TReturn, 5 | delay: number, 6 | ): (...args: TArgs) => TReturn { 7 | let timeoutId: ReturnType 8 | 9 | return function (...args: TArgs): TReturn { 10 | clearTimeout(timeoutId) 11 | return new Promise((resolve) => { 12 | timeoutId = setTimeout(() => { 13 | resolve(fn(...args)) 14 | }, delay) 15 | }) as TReturn 16 | } 17 | } 18 | export function lazy( 19 | importer: () => Promise>, 20 | ) { 21 | const module = () => importer().then((m) => ({ default: m })) 22 | return React.lazy(module) 23 | } 24 | -------------------------------------------------------------------------------- /src/components/game-action-button.tsx: -------------------------------------------------------------------------------- 1 | import { Button } from '@/components/ui/button' 2 | import { MouseEvent, ReactNode } from 'react' 3 | import React from 'react' 4 | 5 | export type GameButtonProps = { 6 | label: string 7 | icon: React.ReactNode 8 | onClick: (e: MouseEvent) => void 9 | shortcut: ReactNode 10 | } 11 | 12 | export function GameActionButton(props: GameButtonProps) { 13 | return ( 14 |
20 | } 21 | > 22 | {props.icon} {props.label} 23 | 24 | ) 25 | } 26 | -------------------------------------------------------------------------------- /src/components/spotify-music-player/playlist/playlist-tab-content.skeleton.tsx: -------------------------------------------------------------------------------- 1 | import { For } from '@/components/map' 2 | import { Skeleton } from '../../ui/skeleton' 3 | 4 | export const PlaylistTabContentSkeleton = () => { 5 | return ( 6 |
7 | 8 |
9 | 10 | {(_, i) => ( 11 | 15 | )} 16 | 17 |
18 |
19 | ) 20 | } 21 | -------------------------------------------------------------------------------- /src/components/ui/label.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | import * as LabelPrimitive from '@radix-ui/react-label' 3 | import { cva, type VariantProps } from 'class-variance-authority' 4 | 5 | import { cn } from '@/utils/class-names.utils' 6 | 7 | const labelVariants = cva( 8 | 'text-sm font-medium leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70', 9 | ) 10 | 11 | const Label = React.forwardRef< 12 | React.ElementRef, 13 | React.ComponentPropsWithoutRef & 14 | VariantProps 15 | >(({ className, ...props }, ref) => ( 16 | 21 | )) 22 | Label.displayName = LabelPrimitive.Root.displayName 23 | 24 | export { Label } 25 | -------------------------------------------------------------------------------- /src/lib/spotify.ts: -------------------------------------------------------------------------------- 1 | import { Scopes, SpotifyApi } from '@spotify/web-api-ts-sdk' 2 | import { env } from 'root/env' 3 | 4 | declare global { 5 | let spotifyClient: SpotifyApi 6 | interface Window { 7 | spotifyClient: SpotifyApi 8 | } 9 | } 10 | 11 | export function initSpotifyClient() { 12 | const spotifyClient = SpotifyApi.withUserAuthorization( 13 | env.SPOTIFY_CLIENT_ID, 14 | window.location.origin, 15 | Scopes.all, 16 | ) 17 | spotifyClient.authenticate() 18 | window.spotifyClient = spotifyClient 19 | } 20 | 21 | const spotifyAuthLocalStorageKeys = [ 22 | 'spotify-sdk:AuthorizationCodeWithPKCEStrategy:token', 23 | 'spotify-sdk:verifier', 24 | ] 25 | 26 | export const isSpotifyAuthed = spotifyAuthLocalStorageKeys.some((k) => 27 | localStorage.getItem(k), 28 | ) 29 | 30 | if (isSpotifyAuthed) initSpotifyClient() 31 | -------------------------------------------------------------------------------- /src/hooks/use-sound-fx.hook.ts: -------------------------------------------------------------------------------- 1 | import { AppStore } from '@/state/app-store' 2 | import { Howl } from 'howler' 3 | import uiSounds from '@/assets/sfx/ui-sounds.wav' 4 | 5 | export enum NotificationSFX { 6 | Error = 'error', 7 | Success = 'success', 8 | Neutral = 'neutral', 9 | Click = 'click', 10 | Delete = 'delete', 11 | } 12 | 13 | const howl = new Howl({ 14 | src: uiSounds, 15 | sprite: { 16 | [NotificationSFX.Click]: [0, 1000], 17 | [NotificationSFX.Delete]: [1000, 430], 18 | [NotificationSFX.Error]: [1430, 1000], 19 | [NotificationSFX.Neutral]: [2430, 1593], 20 | [NotificationSFX.Success]: [4023, 1000], 21 | }, 22 | }) 23 | 24 | export function playNotificationSFX( 25 | soundName: NotificationSFX, 26 | volume?: number, 27 | ) { 28 | howl.volume(volume || AppStore.store.getState().notificationsVolume) 29 | howl.play(soundName) 30 | } 31 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ES2020", 4 | "useDefineForClassFields": true, 5 | "lib": ["ES2020", "DOM", "DOM.Iterable"], 6 | "module": "ESNext", 7 | "skipLibCheck": true, 8 | 9 | /* Bundler mode */ 10 | "moduleResolution": "bundler", 11 | "allowImportingTsExtensions": true, 12 | "resolveJsonModule": true, 13 | "isolatedModules": true, 14 | "noEmit": true, 15 | "jsx": "react-jsx", 16 | 17 | /* Linting */ 18 | "strict": true, 19 | "noUnusedLocals": true, 20 | "noUnusedParameters": true, 21 | "noFallthroughCasesInSwitch": true, 22 | "baseUrl": ".", 23 | "rootDir": "./", 24 | "paths": { 25 | "@/*": ["./src/*"], 26 | "root/*": ["./*"] 27 | } 28 | }, 29 | "types": ["vitest/globals", "vite/client"], 30 | "include": ["**/*.ts", "**/*.tsx", "api/*.js", "api-utils/*.js"] 31 | } 32 | -------------------------------------------------------------------------------- /src/react-query/mutations/spotify.mutation.ts: -------------------------------------------------------------------------------- 1 | import { useMutation, UseMutationOptions } from '@tanstack/react-query' 2 | import { usePlayerDevice } from 'react-spotify-web-playback-sdk' 3 | 4 | export function useGoToPreviousTrack(opts: UseMutationOptions = {}) { 5 | const device = usePlayerDevice() 6 | return useMutation({ 7 | mutationFn: async () => { 8 | if (!device) return 9 | window.spotifyClient.player.skipToPrevious(device.device_id) 10 | }, 11 | mutationKey: ['previousTrack'], 12 | ...opts, 13 | }) 14 | } 15 | 16 | export function useGoToNextTrack(opts: UseMutationOptions = {}) { 17 | const device = usePlayerDevice() 18 | return useMutation({ 19 | mutationFn: async () => { 20 | if (!device) return 21 | window.spotifyClient.player.skipToNext(device.device_id) 22 | }, 23 | mutationKey: ['nextTrack'], 24 | ...opts, 25 | }) 26 | } 27 | -------------------------------------------------------------------------------- /src/components/ui/textarea.tsx: -------------------------------------------------------------------------------- 1 | import * as React from 'react' 2 | 3 | import { cn } from '@/utils/class-names.utils' 4 | 5 | export interface TextareaProps 6 | extends React.TextareaHTMLAttributes {} 7 | 8 | const Textarea = React.forwardRef( 9 | ({ className, ...props }, ref) => { 10 | return ( 11 |