diff --git a/astro.config.mjs b/astro.config.mjs index afda8ac..52a09a6 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -1,4 +1,4 @@ -import {defineConfig, sharpImageService} from "astro/config"; +import { defineConfig, sharpImageService } from "astro/config"; import svelte from "@astrojs/svelte"; import tailwind from "@astrojs/tailwind"; import configureI18n from "./astro-i18n.adapter"; @@ -8,6 +8,8 @@ import robotsTxt from "astro-robots-txt"; import path from "node:path"; import mdx from "@astrojs/mdx"; +import starlight from "@astrojs/starlight"; + // https://astro.build/config export default defineConfig({ output: "static", @@ -18,14 +20,40 @@ export default defineConfig({ site: "https://steamwar.de", integrations: [ svelte(), + starlight({ + disable404Route: true, + title: "SteamWar Docs", + defaultLocale: "de", + logo: { + src: "./src/images/logo.png", + }, + social: [ + { icon: "discord", label: "Discord", href: "https://steamwar.de/discord" }, + { icon: "document", label: "Gitea", href: "https://git.steamwar.de" }, + ], + sidebar: [ + { label: "Startseite", slug: "docs" }, + { label: "Bau", badge: "WIP", items: ["docs/bausystem", { label: "Script System", items: ["docs/bausystem/script"] }] }, + { label: "Kampfsystem", badge: "WIP", items: ["docs/fightsystem"] }, + { label: "Minigames", badge: "WIP", items: ["docs/minigames"] }, + { label: "Schematicsystem", badge: "WIP", items: ["docs/schematicsystem"] }, + { label: "API", badge: "WIP", items: ["docs/api"] }, + ], + editLink: { + baseUrl: "https://git.steamwar.de/SteamWar/Website/src/branch/main/", + }, + }), tailwind({ configFile: "./tailwind.config.js", + applyBaseStyles: false, }), configureI18n(), sitemap({ i18n: { - defaultLocale: "en", locales: { - en: "en-US", de: "de-DE", + defaultLocale: "en", + locales: { + en: "en-US", + de: "de-DE", }, }, }), @@ -49,7 +77,7 @@ export default defineConfig({ { userAgent: "omgili", disallow: "/" }, { userAgent: "OmigliBot", disallow: "/" }, { userAgent: "PerplexityBot", disallow: "/" }, - { userAgent: "Timpibot", disallow: "/" } + { userAgent: "Timpibot", disallow: "/" }, ], }), mdx(), @@ -66,8 +94,8 @@ export default defineConfig({ "@layouts": path.resolve("./src/layouts"), "@repo": path.resolve("./src/components/repo"), "@stores": path.resolve("./src/components/stores"), - "$lib": path.resolve("./src"), + $lib: path.resolve("./src"), }, }, }, -}); \ No newline at end of file +}); diff --git a/package.json b/package.json index 914ac38..fbce1cb 100644 --- a/package.json +++ b/package.json @@ -58,6 +58,8 @@ "dependencies": { "@astrojs/mdx": "^4.3.0", "@astrojs/sitemap": "^3.4.0", + "@astrojs/starlight": "^0.34.4", + "@astrojs/starlight-tailwind": "^4.0.1", "@codemirror/commands": "^6.8.1", "@codemirror/lang-json": "^6.0.1", "@codemirror/view": "^6.36.8", diff --git a/src/content/config.ts b/src/content/config.ts index 6558cf4..1a15f21 100644 --- a/src/content/config.ts +++ b/src/content/config.ts @@ -17,7 +17,9 @@ * along with this program. If not, see . */ -import {defineCollection, reference, z} from "astro:content"; +import { defineCollection, reference, z } from "astro:content"; +import { docsLoader } from "@astrojs/starlight/loaders"; +import { docsSchema } from "@astrojs/starlight/schema"; export const pagesSchema = z.object({ title: z.string().min(1).max(80), @@ -55,8 +57,7 @@ export const downloads = defineCollection({ schema: z.object({ name: z.string(), description: z.string(), - url: z.string().url() - .or(z.record(z.string(), z.string())), + url: z.string().url().or(z.record(z.string(), z.string())), sourceUrl: z.string().url().optional(), }), }); @@ -71,45 +72,50 @@ export const rules = defineCollection({ export const announcements = defineCollection({ type: "content", - schema: ({image}) => z.object({ - title: z.string(), - description: z.string(), - author: z.string().optional(), - image: image().optional(), - tags: z.array(z.string()), - created: z.date(), - key: z.string(), - }), + schema: ({ image }) => + z.object({ + title: z.string(), + description: z.string(), + author: z.string().optional(), + image: image().optional(), + tags: z.array(z.string()), + created: z.date(), + key: z.string(), + }), }); export const publics = defineCollection({ type: "data", - schema: ({image}) => z.object({ - "name": z.string(), - "description": z.string(), - "id": z.number().positive(), - "creator": z.string().array().optional(), - "showcase": z.string().url().optional(), - "camera": z.object({ - "fov": z.number().optional(), - "near": z.number().optional(), - "far": z.number().optional(), - "distance": z.number().optional(), - }).optional(), - "image": image(), - "alt": image().optional(), - "xray": image().optional(), - "gamemode": reference("modes"), - "3d": z.boolean().optional().default(true), - }), + schema: ({ image }) => + z.object({ + name: z.string(), + description: z.string(), + id: z.number().positive(), + creator: z.string().array().optional(), + showcase: z.string().url().optional(), + camera: z + .object({ + fov: z.number().optional(), + near: z.number().optional(), + far: z.number().optional(), + distance: z.number().optional(), + }) + .optional(), + image: image(), + alt: image().optional(), + xray: image().optional(), + gamemode: reference("modes"), + "3d": z.boolean().optional().default(true), + }), }); export const collections = { - "pages": pages, - "help": help, - "modes": modes, - "rules": rules, - "downloads": downloads, - "announcements": announcements, - "publics": publics, + pages: pages, + help: help, + modes: modes, + rules: rules, + downloads: downloads, + announcements: announcements, + publics: publics, + docs: defineCollection({ loader: docsLoader(), schema: docsSchema() }), }; diff --git a/src/content/docs/docs/api/index.md b/src/content/docs/docs/api/index.md new file mode 100644 index 0000000..a0aa708 --- /dev/null +++ b/src/content/docs/docs/api/index.md @@ -0,0 +1,5 @@ +--- +title: Überblick +--- + +WIP diff --git a/src/content/docs/docs/bausystem/index.md b/src/content/docs/docs/bausystem/index.md new file mode 100644 index 0000000..a0aa708 --- /dev/null +++ b/src/content/docs/docs/bausystem/index.md @@ -0,0 +1,5 @@ +--- +title: Überblick +--- + +WIP diff --git a/src/content/docs/docs/bausystem/script/index.md b/src/content/docs/docs/bausystem/script/index.md new file mode 100644 index 0000000..786f4ce --- /dev/null +++ b/src/content/docs/docs/bausystem/script/index.md @@ -0,0 +1,5 @@ +--- +title: Script Überblick +--- + +WIP diff --git a/src/content/docs/docs/fightsystem/index.md b/src/content/docs/docs/fightsystem/index.md new file mode 100644 index 0000000..a0aa708 --- /dev/null +++ b/src/content/docs/docs/fightsystem/index.md @@ -0,0 +1,5 @@ +--- +title: Überblick +--- + +WIP diff --git a/src/content/docs/docs/index.mdx b/src/content/docs/docs/index.mdx new file mode 100644 index 0000000..6dc9ad6 --- /dev/null +++ b/src/content/docs/docs/index.mdx @@ -0,0 +1,24 @@ +--- +title: Startseite +desciption: Startseite der SteamWar Dokumentation +--- + +import { Tabs, TabItem } from '@astrojs/starlight/components'; + +Herzlich Willkommen in der SteamWar Dokumentation! + +## SteamWar beitreten +SteamWar ist ein Minecraft Java Server. + + + + - IP: `steamwar.de` + - Empholene Version: `1.21.5` + + + - IP: `steamwar.de` + - Port: `19132` + - Version: `Aktuellste` + + + diff --git a/src/content/docs/docs/minigames/index.md b/src/content/docs/docs/minigames/index.md new file mode 100644 index 0000000..a0aa708 --- /dev/null +++ b/src/content/docs/docs/minigames/index.md @@ -0,0 +1,5 @@ +--- +title: Überblick +--- + +WIP diff --git a/src/content/docs/docs/schematicsystem/index.md b/src/content/docs/docs/schematicsystem/index.md new file mode 100644 index 0000000..a0aa708 --- /dev/null +++ b/src/content/docs/docs/schematicsystem/index.md @@ -0,0 +1,5 @@ +--- +title: Überblick +--- + +WIP diff --git a/tailwind.config.js b/tailwind.config.js index 235ff09..f8abd86 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -22,10 +22,7 @@ import { fontFamily } from "tailwindcss/defaultTheme"; /** @type {import('tailwindcss').Config} */ const config = { darkMode: ["class"], - content: [ - "./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}", - "./node_modules/flowbite-svelte/**/*.{html,js,svelte,ts}", - ], + content: ["./src/**/*.{astro,html,js,jsx,md,mdx,svelte,ts,tsx,vue}", "./node_modules/flowbite-svelte/**/*.{html,js,svelte,ts}"], safelist: ["dark"], theme: { container: {