/* * Vencord, a modification for Discord's desktop app * Copyright (c) 2024 Vendicated and contributors * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see . */ import { IShikiTheme } from "@vap/shiki"; export const SHIKI_REPO = "shikijs/textmate-grammars-themes"; export const SHIKI_REPO_COMMIT = "2d87559c7601a928b9f7e0f0dda243d2fb6d4499"; export const shikiRepoTheme = (name: string) => `https://raw.githubusercontent.com/${SHIKI_REPO}/${SHIKI_REPO_COMMIT}/packages/tm-themes/themes/${name}.json`; export const themes = { // Default DarkPlus: shikiRepoTheme("dark-plus"), // Dev Choices MaterialCandy: "https://raw.githubusercontent.com/millsp/material-candy/master/material-candy.json", // More from Shiki repo Andromeeda: shikiRepoTheme("andromeeda"), AuroraX: shikiRepoTheme("aurora-x"), AyuDark: shikiRepoTheme("ayu-dark"), CatppuccinLatte: shikiRepoTheme("catppuccin-latte"), CatppuccinFrappe: shikiRepoTheme("catppuccin-frappe"), CatppuccinMacchiato: shikiRepoTheme("catppuccin-macchiato"), CatppuccinMocha: shikiRepoTheme("catppuccin-mocha"), DraculaSoft: shikiRepoTheme("dracula-soft"), Dracula: shikiRepoTheme("dracula"), EverforestDark: shikiRepoTheme("everforest-dark"), EverforestLight: shikiRepoTheme("everforest-light"), GithubDarkDefault: shikiRepoTheme("github-dark-default"), GithubDarkDimmed: shikiRepoTheme("github-dark-dimmed"), GithubDarkHighContrast: shikiRepoTheme("github-dark-high-contrast"), GithubDark: shikiRepoTheme("github-dark"), GithubLightDefault: shikiRepoTheme("github-light-default"), GithubLightHighContrast: shikiRepoTheme("github-light-high-contrast"), GithubLight: shikiRepoTheme("github-light"), Houston: shikiRepoTheme("houston"), KanagawaDragon: shikiRepoTheme("kanagawa-dragon"), KanagawaLotus: shikiRepoTheme("kanagawa-lotus"), KanagawaWave: shikiRepoTheme("kanagawa-wave"), LaserWave: shikiRepoTheme("laserwave"), LightPlus: shikiRepoTheme("light-plus"), MaterialDarker: shikiRepoTheme("material-theme-darker"), MaterialDefault: shikiRepoTheme("material-theme"), MaterialLighter: shikiRepoTheme("material-theme-lighter"), MaterialOcean: shikiRepoTheme("material-theme-ocean"), MaterialPalenight: shikiRepoTheme("material-theme-palenight"), MinDark: shikiRepoTheme("min-dark"), MinLight: shikiRepoTheme("min-light"), Monokai: shikiRepoTheme("monokai"), NightOwl: shikiRepoTheme("night-owl"), Nord: shikiRepoTheme("nord"), OneDarkPro: shikiRepoTheme("one-dark-pro"), OneLight: shikiRepoTheme("one-light"), Plastic: shikiRepoTheme("plastic"), Poimandres: shikiRepoTheme("poimandres"), Red: shikiRepoTheme("red"), RosePineDawn: shikiRepoTheme("rose-pine-dawn"), RosePineMoon: shikiRepoTheme("rose-pine-moon"), RosePine: shikiRepoTheme("rose-pine"), SlackDark: shikiRepoTheme("slack-dark"), SlackOchin: shikiRepoTheme("slack-ochin"), SnazzyLight: shikiRepoTheme("snazzy-light"), SolarizedDark: shikiRepoTheme("solarized-dark"), SolarizedLight: shikiRepoTheme("solarized-light"), Synthwave84: shikiRepoTheme("synthwave-84"), TokyoNight: shikiRepoTheme("tokyo-night"), Vesper: shikiRepoTheme("vesper"), VitesseBlack: shikiRepoTheme("vitesse-black"), VitesseDark: shikiRepoTheme("vitesse-dark"), VitesseLight: shikiRepoTheme("vitesse-light"), }; export const themeCache = new Map(); export const getTheme = (url: string): Promise => { if (themeCache.has(url)) return Promise.resolve(themeCache.get(url)!); return fetch(url).then(res => res.json()); };