import { defineConfig } from "vitepress"; import UnoCSS from "unocss/vite"; import { presetUno, presetAttributify, presetIcons } from "unocss"; import { commitRef, feedback, meta, socials } from "./constants"; import { generateImages, generateMeta } from "./hooks"; import { toggleStarredPlugin } from "./markdown/toggleStarred"; import { base64DecodePlugin } from "./markdown/base64"; export default defineConfig({ title: "FMHY", description: meta.description, titleTemplate: ":title • freemediaheckyeah", lang: "en-US", lastUpdated: true, cleanUrls: true, appearance: "dark", srcExclude: ["readme.md", "single-page"], ignoreDeadLinks: true, metaChunk: true, sitemap: { hostname: meta.hostname, }, head: [ ["meta", { name: "theme-color", content: "#7bc5e4" }], ["meta", { name: "og:type", content: "website" }], ["meta", { name: "og:locale", content: "en" }], ["link", { rel: "icon", href: "/test.png" }], // PWA ["link", { rel: "icon", href: "/test.png", type: "image/svg+xml" }], ["link", { rel: "alternate icon", href: "/test.png" }], ["link", { rel: "mask-icon", href: "/test.png", color: "#7bc5e4" }], // prettier-ignore ["meta", { name: "keywords", content: meta.keywords.join(" ") }], ["link", { rel: "apple-touch-icon", href: "/test.png", sizes: "192x192" }], ], transformHead: async (context) => generateMeta(context, meta.hostname), buildEnd: async (context) => { generateImages(context); }, 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", }, }), ], }), ], build: { // Shut the fuck up chunkSizeWarningLimit: Number.POSITIVE_INFINITY, }, }, markdown: { config(md) { md.use(toggleStarredPlugin); md.use(base64DecodePlugin); }, }, 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", }, footer: { message: `${feedback} (rev: ${commitRef})`, }, outline: "deep", logo: "/fmhy.ico", nav: [ { text: "Beginners Guide", link: "/beginners-guide" }, { text: "Glossary", link: "https://rentry.org/The-Piracy-Glossary" }, { 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, }, });