import { defineConfig } from "astro/config"; import starlight from "@astrojs/starlight"; import react from "@astrojs/react"; import { getSidebarTranslatedLabel } from "./src/translations"; import remarkHeadingID from "remark-heading-id"; import remarkGemoji from "remark-gemoji"; import AstroPWA from "@vite-pwa/astro"; import manifest from "./webmanifest.json"; // https://astro.build/config export default defineConfig({ site: "https://butterfly.linwood.dev", markdown: { remarkPlugins: [remarkHeadingID, remarkGemoji], }, integrations: [ starlight({ title: "Linwood Butterfly", customCss: [ // Relative path to your custom CSS file "./src/styles/custom.css", ], editLink: { baseUrl: 'https://github.com/LinwoodDev/Butterfly/edit/develop/docs/', }, logo: { src: "./public/img/docs.svg", }, favicon: "./favicon.ico", social: [ {icon: "mastodon", label: "Mastodon", href: "https://floss.social/@linwood"}, {icon: "matrix", label: "Matrix", href: "https://linwood.dev/matrix"}, {icon: "discord", label: "Discord", href: "https://linwood.dev/discord"}, {icon: "blueSky", label: "Bluesky", href: "https://bsky.app/profile/linwood.dev"}, {icon: "github", label: "GitHub", href: "https://github.com/LinwoodDev/Butterfly"}, ], components: { Head: "./src/components/Head.astro", Footer: "./src/components/Footer.astro", ContentPanel: "./src/components/ContentPanel.astro", }, sidebar: [ { ...getSidebarTranslatedLabel("Guides"), items: [ { ...getSidebarTranslatedLabel("Introduction"), link: "/docs/v2/intro", }, { ...getSidebarTranslatedLabel("Area"), link: "/docs/v2/areas/", }, { ...getSidebarTranslatedLabel("Background"), link: "/docs/v2/background/", }, { ...getSidebarTranslatedLabel("Color picker"), link: "/docs/v2/color_picker/", }, { ...getSidebarTranslatedLabel("Layers"), link: "/docs/v2/layers/", }, { ...getSidebarTranslatedLabel("Pack"), link: "/docs/v2/pack/", }, { ...getSidebarTranslatedLabel("Pages"), link: "/docs/v2/pages/", }, { ...getSidebarTranslatedLabel("Shortcuts"), link: "/docs/v2/shortcuts/", }, { ...getSidebarTranslatedLabel("Storage"), link: "/docs/v2/storage/", }, { ...getSidebarTranslatedLabel("Waypoints"), link: "/docs/v2/waypoints/", }, { ...getSidebarTranslatedLabel("Add"), link: "/docs/v2/add/", }, { ...getSidebarTranslatedLabel("Utilities"), link: "/docs/v2/utilities/", }, { ...getSidebarTranslatedLabel("Collaboration"), link: "/docs/v2/collaboration/", }, { ...getSidebarTranslatedLabel("Arguments"), link: "/docs/v2/arguments/", }, { ...getSidebarTranslatedLabel("Migrating"), link: "/docs/v2/migrating/", }, { ...getSidebarTranslatedLabel("Tools"), items: [ { ...getSidebarTranslatedLabel("Overview"), link: "/docs/v2/tools/", }, { ...getSidebarTranslatedLabel("Pen"), link: "/docs/v2/tools/pen/", }, { ...getSidebarTranslatedLabel("Select"), link: "/docs/v2/tools/select/", }, { ...getSidebarTranslatedLabel("Hand"), link: "/docs/v2/tools/hand/", }, { ...getSidebarTranslatedLabel("Path eraser"), link: "/docs/v2/tools/path_eraser/", }, { ...getSidebarTranslatedLabel("Eraser"), link: "/docs/v2/tools/eraser/", }, { ...getSidebarTranslatedLabel("Undo"), link: "/docs/v2/tools/undo/", }, { ...getSidebarTranslatedLabel("Redo"), link: "/docs/v2/tools/redo/", }, { ...getSidebarTranslatedLabel("Shape"), link: "/docs/v2/tools/shape/", }, { ...getSidebarTranslatedLabel("Spacer"), link: "/docs/v2/tools/spacer/", }, { ...getSidebarTranslatedLabel("Area"), link: "/docs/v2/tools/area/", }, { ...getSidebarTranslatedLabel("Full screen"), link: "/docs/v2/tools/full_screen/", }, { ...getSidebarTranslatedLabel("Label"), link: "/docs/v2/tools/label/", }, { ...getSidebarTranslatedLabel("Laser"), link: "/docs/v2/tools/laser/", }, { ...getSidebarTranslatedLabel("Texture"), link: "/docs/v2/tools/texture/", }, { ...getSidebarTranslatedLabel("Stamp"), link: "/docs/v2/tools/stamp/", }, { ...getSidebarTranslatedLabel("Collection"), link: "/docs/v2/tools/collection/", }, { ...getSidebarTranslatedLabel("Presentation"), link: "/docs/v2/tools/presentation/", }, { ...getSidebarTranslatedLabel("Ruler"), link: "/docs/v2/tools/ruler/", }, { ...getSidebarTranslatedLabel("Grid"), link: "/docs/v2/tools/grid/", }, ], }, ], }, { ...getSidebarTranslatedLabel("Downloads"), link: "/downloads/", }, { ...getSidebarTranslatedLabel("Community"), items: [ { ...getSidebarTranslatedLabel("Home"), link: "/community/", }, { ...getSidebarTranslatedLabel("Branding"), link: "/community/branding/", }, { ...getSidebarTranslatedLabel("Changelog"), link: "/changelog/", }, { ...getSidebarTranslatedLabel("Contributing"), link: "/community/contributing/", }, { ...getSidebarTranslatedLabel("Code of conduct"), link: "/community/code-of-conduct/", }, { ...getSidebarTranslatedLabel("Embedding"), link: "/community/embed/", }, { ...getSidebarTranslatedLabel("FAQ"), link: "/community/faq/", }, { ...getSidebarTranslatedLabel("Versions"), link: "/community/versions/", }, { ...getSidebarTranslatedLabel("Nightly builds"), link: "/community/nightly/", }, { ...getSidebarTranslatedLabel("Privacy policy"), link: "/privacypolicy/", }, ], }, ], locales: { root: { label: "English", lang: "en", }, af: { label: "Afrikaans", }, ar: { label: "Arabic", }, ca: { label: "Catalan", }, cs: { label: "Czech", }, da: { label: "Danish", }, de: { label: "German", }, el: { label: "Greek", }, es: { label: "Spanish", }, fi: { label: "Finnish", }, fr: { label: "French", }, he: { label: "Hebrew", }, hi: { label: "Hindi", }, hu: { label: "Hungarian", }, it: { label: "Italian", }, ja: { label: "Japanese", }, ko: { label: "Korean", }, nl: { label: "Dutch", }, no: { label: "Norwegian", }, or: { label: "Oriya", }, pl: { label: "Polish", }, pt: { label: "Portuguese", }, "pt-br": { label: "Portuguese (Brazil)", lang: "pt-BR", }, ro: { label: "Romanian", }, ru: { label: "Russian", }, sr: { label: "Serbian", }, sv: { label: "Swedish", }, th: { label: "Thai", }, tr: { label: "Turkish", }, uk: { label: "Ukrainian", }, vi: { label: "Vietnamese", }, zh: { label: "Chinese", }, "zh-hant": { label: "Chinese (Traditional)", lang: "zh-Hant", }, }, }), AstroPWA({ workbox: { skipWaiting: true, clientsClaim: true, navigateFallback: "/404", ignoreURLParametersMatching: [/./], globPatterns: [ "**/*.{html,js,css,png,svg,json,ttf,pf_fragment,pf_index,pf_meta,pagefind,wasm}", ], }, experimental: { directoryAndTrailingSlashHandler: true, }, registerType: "autoUpdate", manifest, }), react(), ], });