diff --git a/.vitepress/config.mts b/.vitepress/config.mts index adcb05ae4..97244fc4c 100644 --- a/.vitepress/config.mts +++ b/.vitepress/config.mts @@ -1,8 +1,7 @@ import { defineConfig } from "vitepress"; import UnoCSS from "unocss/vite"; -import { presetUno, presetAttributify, presetIcons } from "unocss"; import consola from "consola"; -import { commitRef, feedback, meta, socials } from "./constants"; +import { commitRef, feedback, meta, search, sidebar, socialLinks } from "./constants"; import { generateImages, generateMeta, generateFeed } from "./hooks"; import { toggleStarredPlugin } from "./markdown/toggleStarred"; import { base64DecodePlugin } from "./markdown/base64"; @@ -17,7 +16,6 @@ export default defineConfig({ appearance: "dark", srcExclude: ["readme.md", "single-page"], ignoreDeadLinks: true, - metaChunk: true, sitemap: { hostname: meta.hostname, }, @@ -43,28 +41,7 @@ export default defineConfig({ vite: { plugins: [ UnoCSS({ - theme: { - colors: { - primary: "var(--vp-c-brand-1)", - bg: "var(--vp-c-bg)", - "bg-alt": "var(--vp-c-bg-alt)", - "bg-elv": "var(--vp-c-bg-elv)", - text: "var(--vp-c-text-1)", - "text-2": "var(--vp-c-text-2)", - div: "var(--vp-c-divider)", - }, - }, - presets: [ - presetUno(), - presetAttributify(), - presetIcons({ - scale: 1.2, - extraProperties: { - display: "inline-block", - "vertical-align": "middle", - }, - }), - ], + configFile: "../unocss.config.ts", }), ], build: { @@ -79,30 +56,7 @@ export default defineConfig({ }, }, themeConfig: { - search: { - options: { - miniSearch: { - searchOptions: { - combineWith: "AND", - fuzzy: false, - // @ts-ignore - boostDocument: (_, term, storedFields: Record) => { - const titles = (storedFields?.titles as string[]) - .filter((t) => Boolean(t)) - .map((t) => t.toLowerCase()); - // Uprate if term appears in titles. Add bonus for higher levels (i.e. lower index) - const titleIndex = - titles.map((t, i) => (t?.includes(term) ? i : -1)).find((i) => i >= 0) ?? -1; - if (titleIndex >= 0) return 10000 - titleIndex; - - return 1; - }, - }, - }, - detailedView: true, - }, - provider: "local", - }, + search, footer: { message: `${feedback} (rev: ${commitRef})`, }, @@ -114,48 +68,7 @@ export default defineConfig({ { text: "Guides", link: "https://rentry.co/fmhy-guides" }, { text: "Backups", link: "https://www.reddit.com/r/FREEMEDIAHECKYEAH/wiki/backups" }, ], - sidebar: [ - { text: "📛 Adblocking / Privacy", link: "/adblockvpnguide" }, - { text: "🤖 Artificial Intelligence", link: "/ai" }, - { text: "📺 Movies / TV / Anime", link: "/videopiracyguide" }, - { text: "🎵 Music / Podcasts / Radio", link: "/audiopiracyguide" }, - { text: "🎮 Gaming / Emulation", link: "/gamingpiracyguide" }, - { text: "📗 Books / Comics / Manga", link: "/readingpiracyguide" }, - { text: "💾 Downloading", link: "/downloadpiracyguide" }, - { text: "🌀 Torrenting", link: "/torrentpiracyguide" }, - { text: "🧠 Educational", link: "/edupiracyguide" }, - { text: "📱 Android / iOS", link: "/android-iosguide" }, - { text: "🐧 Linux / MacOS", link: "/linuxguide" }, - { text: "🌍 Non-English", link: "/non-english" }, - { text: "📂 Miscellaneous", link: "/miscguide" }, - { - text: "🔧 Tools", - collapsed: false, - items: [ - { text: "💻 System Tools", link: "/system-tools" }, - { text: "🗃️ File Tools", link: "/file-tools" }, - { text: "🔗 Internet Tools", link: "/internet-tools" }, - { text: "💬 Social Media Tools", link: "/social-media-tools" }, - { text: "📝 Text Tools", link: "/text-tools" }, - { text: "👾 Gaming Tools", link: "/gamingpiracyguide#gaming-tools" }, - { text: "📷 Image Tools", link: "/img-tools" }, - { text: "📼 Video Tools", link: "/video-tools" }, - { text: "🔊 Audio Tools", link: "/audiopiracyguide#audio-tools" }, - { text: "🍎 Educational Tools", link: "/edupiracyguide#educational-tools" }, - { text: "👨‍💻 Developer Tools", link: "/devtools" }, - ], - }, - { - text: "➕️ More", - collapsed: true, - items: [ - { text: "🔞 NSFW", link: "/nsfwpiracy" }, - { text: "⚠️ Unsafe Sites", link: "/unsafesites" }, - { text: "🔑 Base64", link: "/base64" }, - { text: "📦 Storage", link: "/storage" }, - ], - }, - ], - socialLinks: socials, + sidebar, + socialLinks, }, }); diff --git a/.vitepress/constants.ts b/.vitepress/constants.ts index 8fac62b8d..48d8f0166 100644 --- a/.vitepress/constants.ts +++ b/.vitepress/constants.ts @@ -7,20 +7,40 @@ export const meta = { keywords: ["stream", "movies", "gaming", "reading", "anime"], }; -// Netlify to Cloudflare otherwise dev -export const commitRef = process.env.COMMIT_REF +export const commitRef = process.env.CF_PAGES ? `${process.env.COMMIT_REF.slice(0, 8)}` - : process.env.CF_PAGES - ? `${process.env.CF_PAGES_COMMIT_SHA.slice(0, 8)}` - : "dev"; + process.env.CF_PAGES_COMMIT_SHA + }">${process.env.CF_PAGES_COMMIT_SHA.slice(0, 8)}` + : "dev"; export const feedback = `Made with ❤️`; -export const socials: DefaultTheme.SocialLink[] = [ +export const search: DefaultTheme.Config["search"] = { + options: { + miniSearch: { + searchOptions: { + combineWith: "AND", + fuzzy: false, + // @ts-ignore + boostDocument: (_, term, storedFields: Record) => { + const titles = (storedFields?.titles as string[]) + .filter((t) => Boolean(t)) + .map((t) => t.toLowerCase()); + // Uprate if term appears in titles. Add bonus for higher levels (i.e. lower index) + const titleIndex = + titles.map((t, i) => (t?.includes(term) ? i : -1)).find((i) => i >= 0) ?? -1; + if (titleIndex >= 0) return 10000 - titleIndex; + + return 1; + }, + }, + }, + detailedView: true, + }, + provider: "local", +}; + +export const socialLinks: DefaultTheme.SocialLink[] = [ { icon: "github", link: "https://github.com/fmhy/FMHYEdit" }, { icon: "discord", link: "https://discord.gg/Stz6y6NgNg" }, { @@ -31,3 +51,46 @@ export const socials: DefaultTheme.SocialLink[] = [ link: "https://reddit.com/r/FREEMEDIAHECKYEAH", }, ]; + +export const sidebar: DefaultTheme.Sidebar = [ + { text: "📛 Adblocking / Privacy", link: "/adblockvpnguide" }, + { text: "🤖 Artificial Intelligence", link: "/ai" }, + { text: "📺 Movies / TV / Anime", link: "/videopiracyguide" }, + { text: "🎵 Music / Podcasts / Radio", link: "/audiopiracyguide" }, + { text: "🎮 Gaming / Emulation", link: "/gamingpiracyguide" }, + { text: "📗 Books / Comics / Manga", link: "/readingpiracyguide" }, + { text: "💾 Downloading", link: "/downloadpiracyguide" }, + { text: "🌀 Torrenting", link: "/torrentpiracyguide" }, + { text: "🧠 Educational", link: "/edupiracyguide" }, + { text: "📱 Android / iOS", link: "/android-iosguide" }, + { text: "🐧 Linux / MacOS", link: "/linuxguide" }, + { text: "🌍 Non-English", link: "/non-english" }, + { text: "📂 Miscellaneous", link: "/miscguide" }, + { + text: "🔧 Tools", + collapsed: false, + items: [ + { text: "💻 System Tools", link: "/system-tools" }, + { text: "🗃️ File Tools", link: "/file-tools" }, + { text: "🔗 Internet Tools", link: "/internet-tools" }, + { text: "💬 Social Media Tools", link: "/social-media-tools" }, + { text: "📝 Text Tools", link: "/text-tools" }, + { text: "👾 Gaming Tools", link: "/gamingpiracyguide#gaming-tools" }, + { text: "📷 Image Tools", link: "/img-tools" }, + { text: "📼 Video Tools", link: "/video-tools" }, + { text: "🔊 Audio Tools", link: "/audiopiracyguide#audio-tools" }, + { text: "🍎 Educational Tools", link: "/edupiracyguide#educational-tools" }, + { text: "👨‍💻 Developer Tools", link: "/devtools" }, + ], + }, + { + text: "➕️ More", + collapsed: true, + items: [ + { text: "🔞 NSFW", link: "/nsfwpiracy" }, + { text: "⚠️ Unsafe Sites", link: "/unsafesites" }, + { text: "🔑 Base64", link: "/base64" }, + { text: "📦 Storage", link: "/storage" }, + ], + }, +]; diff --git a/unocss.config.ts b/unocss.config.ts new file mode 100644 index 000000000..d0da509da --- /dev/null +++ b/unocss.config.ts @@ -0,0 +1,26 @@ +import { defineConfig, presetUno, presetAttributify, presetIcons } from "unocss"; + +export default defineConfig({ + theme: { + colors: { + primary: "var(--vp-c-brand-1)", + bg: "var(--vp-c-bg)", + "bg-alt": "var(--vp-c-bg-alt)", + "bg-elv": "var(--vp-c-bg-elv)", + text: "var(--vp-c-text-1)", + "text-2": "var(--vp-c-text-2)", + div: "var(--vp-c-divider)", + }, + }, + presets: [ + presetUno(), + presetAttributify(), + presetIcons({ + scale: 1.2, + extraProperties: { + display: "inline-block", + "vertical-align": "middle", + }, + }), + ], +});