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: {