Compare commits
29 Commits
add-tutori
...
341e629aaf
| Author | SHA1 | Date | |
|---|---|---|---|
| 341e629aaf | |||
| 694ded4c61 | |||
| a75b5b7c09 | |||
| 9146f65455 | |||
| 254807efa6 | |||
| 36931aabb1 | |||
| 628599f019 | |||
| 0a6c61bd88 | |||
| 8bbad8b3cc | |||
| 5af6176889 | |||
| 9250dd5088 | |||
| 276e19409d | |||
| 11fa9fa126 | |||
| 17ec6023a9 | |||
| 3c7c899868 | |||
| 9cb161e470 | |||
| 7fc7c2a6eb | |||
| 2fce94d46b | |||
| 6356c9911a | |||
| 2402896fd5 | |||
| 2940304492 | |||
| 4c0a237b27 | |||
| 77b8b41afb | |||
| 163d049829 | |||
| a321b12680 | |||
| feba5a5b4a | |||
| faaf5f1852 | |||
| 18997e1384 | |||
| fdc7bb93dd |
@ -5,7 +5,6 @@ import configureI18n from "./astro-i18n.adapter";
|
|||||||
import sitemap from "@astrojs/sitemap";
|
import sitemap from "@astrojs/sitemap";
|
||||||
|
|
||||||
import robotsTxt from "astro-robots-txt";
|
import robotsTxt from "astro-robots-txt";
|
||||||
import {resolve} from "node:url";
|
|
||||||
import path from "node:path";
|
import path from "node:path";
|
||||||
import mdx from "@astrojs/mdx";
|
import mdx from "@astrojs/mdx";
|
||||||
import pagefind from "astro-pagefind";
|
import pagefind from "astro-pagefind";
|
||||||
|
|||||||
11
package.json
11
package.json
@ -14,11 +14,11 @@
|
|||||||
"i18n:sync": "pnpm run i18n:generate:pages && pnpm run i18n:generate:types",
|
"i18n:sync": "pnpm run i18n:generate:pages && pnpm run i18n:generate:types",
|
||||||
"clean:dist": "rm -rf dist",
|
"clean:dist": "rm -rf dist",
|
||||||
"clean:node_modules": "rm -rf node_modules",
|
"clean:node_modules": "rm -rf node_modules",
|
||||||
"ci": "pnpm run clean:dist && pnpm install && pnpm run i18n:sync && pnpm run build"
|
"ci": "pnpm install && pnpm run i18n:sync && pnpm run build"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@astrojs/svelte": "^6.0.2",
|
"@astrojs/svelte": "^7.0.4",
|
||||||
"@astrojs/tailwind": "^5.1.2",
|
"@astrojs/tailwind": "^5.1.5",
|
||||||
"@astropub/icons": "^0.2.0",
|
"@astropub/icons": "^0.2.0",
|
||||||
"@types/color": "^4.2.0",
|
"@types/color": "^4.2.0",
|
||||||
"@types/node": "^22.9.3",
|
"@types/node": "^22.9.3",
|
||||||
@ -41,11 +41,12 @@
|
|||||||
"typescript": "^5.7.2"
|
"typescript": "^5.7.2"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/mdx": "^3.1.9",
|
"@astrojs/mdx": "^4.0.7",
|
||||||
"@astrojs/sitemap": "^3.2.1",
|
"@astrojs/sitemap": "^3.2.1",
|
||||||
|
"@codemirror/commands": "^6.8.0",
|
||||||
"@codemirror/lang-json": "^6.0.1",
|
"@codemirror/lang-json": "^6.0.1",
|
||||||
"@ddietr/codemirror-themes": "^1.4.4",
|
"@ddietr/codemirror-themes": "^1.4.4",
|
||||||
"astro": "^4.16.14",
|
"astro": "^5.1.8",
|
||||||
"astro-i18n": "^2.2.4",
|
"astro-i18n": "^2.2.4",
|
||||||
"astro-pagefind": "^1.6.0",
|
"astro-pagefind": "^1.6.0",
|
||||||
"astro-robots-txt": "^1.0.0",
|
"astro-robots-txt": "^1.0.0",
|
||||||
|
|||||||
1192
pnpm-lock.yaml
generated
1192
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -75,9 +75,7 @@
|
|||||||
|
|
||||||
<style lang="postcss">
|
<style lang="postcss">
|
||||||
input {
|
input {
|
||||||
@apply border-2 rounded-md p-2 shadow-2xl w-80
|
@apply border-2 rounded-md p-2 shadow-2xl w-80 dark:bg-neutral-800 focus:outline-none focus:ring-2 focus:ring-neutral-500 focus:border-transparent text-black;
|
||||||
dark:bg-neutral-800
|
|
||||||
focus:outline-none focus:ring-2 focus:ring-neutral-500 focus:border-transparent;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
label {
|
label {
|
||||||
|
|||||||
@ -168,11 +168,11 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
{#if selectedBranch !== "master"}
|
{#if selectedBranch !== "master"}
|
||||||
<Button onclick={createFile} color="alternative" disabled={!selectedPath}>Create File
|
<Button onclick={() => createFile()} color="alternative" disabled={!selectedPath}>Create File
|
||||||
</Button>
|
</Button>
|
||||||
<Button onclick={() => deleteBranch(false)} color="none">Delete Branch</Button>
|
<Button onclick={() => deleteBranch(false)} color="none">Delete Branch</Button>
|
||||||
{:else}
|
{:else}
|
||||||
<Button onclick={createBranch}>Create Branch</Button>
|
<Button onclick={() => createBranch()}>Create Branch</Button>
|
||||||
{/if}
|
{/if}
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -31,7 +31,7 @@
|
|||||||
let request = getRequest();
|
let request = getRequest();
|
||||||
|
|
||||||
function getRequest() {
|
function getRequest() {
|
||||||
return $statsRepo.getUserStats(user.id)
|
return $statsRepo.getUserStats(user.uuid)
|
||||||
}
|
}
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
@ -46,5 +46,4 @@
|
|||||||
{#if user.perms.includes("CHECK")}
|
{#if user.perms.includes("CHECK")}
|
||||||
<p>{t("dashboard.stats.checked", {checked: data.acceptedSchematics})}</p>
|
<p>{t("dashboard.stats.checked", {checked: data.acceptedSchematics})}</p>
|
||||||
{/if}
|
{/if}
|
||||||
{:catch error}
|
|
||||||
{/await}
|
{/await}
|
||||||
@ -50,19 +50,20 @@
|
|||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
let b64 = btoa(String.fromCharCode.apply(null, new Uint8Array(content)));
|
let b64 = btoa(String.fromCharCode.apply(null, new Uint8Array(content)));
|
||||||
|
|
||||||
await $schemRepo.uploadSchematic(name, b64);
|
let response = await $schemRepo.uploadSchematic(name, b64);
|
||||||
|
|
||||||
open = false;
|
open = false;
|
||||||
uploadFile = null;
|
value = "";
|
||||||
dispatch("reset")
|
dispatch("reset")
|
||||||
}
|
}
|
||||||
|
|
||||||
let uploadFile: FileList | null = $state(null);
|
let uploadFile: FileList | null = $state(null);
|
||||||
|
let value = $state("");
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<SWModal title={t("dashboard.schematic.title")} bind:open>
|
<SWModal title={t("dashboard.schematic.title")} bind:open>
|
||||||
<form>
|
<form>
|
||||||
<input type="file" bind:files={uploadFile} />
|
<input type="file" bind:files={uploadFile} bind:value />
|
||||||
</form>
|
</form>
|
||||||
{#snippet footer()}
|
{#snippet footer()}
|
||||||
|
|
||||||
|
|||||||
@ -56,7 +56,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div>
|
<div>
|
||||||
<h1 class="text-4xl font-bold">{t("dashboard.title", {name: user.name})}</h1>
|
<h1 class="text-4xl font-bold">{t("dashboard.title", {name: user.name})}</h1>
|
||||||
<p>{t("dashboard.rank", {rank: t("home.prefix." + user.prefix)})}</p>
|
<p>{t("dashboard.rank", {rank: t("home.prefix." + (user.prefix || "User"))})}</p>
|
||||||
<Statistics {user} />
|
<Statistics {user} />
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@ -22,7 +22,7 @@
|
|||||||
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
import { GLTFLoader } from "three/addons/loaders/GLTFLoader.js";
|
||||||
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
|
import { OrbitControls } from "three/addons/controls/OrbitControls.js";
|
||||||
import {onDestroy, onMount} from "svelte";
|
import {onDestroy, onMount} from "svelte";
|
||||||
import { CollectionEntry } from "astro:content";
|
import type { CollectionEntry } from "astro:content";
|
||||||
|
|
||||||
interface Props {
|
interface Props {
|
||||||
pub: CollectionEntry<"publics">;
|
pub: CollectionEntry<"publics">;
|
||||||
|
|||||||
@ -20,6 +20,7 @@
|
|||||||
import {fetchWithToken, tokenStore} from "./repo.ts";
|
import {fetchWithToken, tokenStore} from "./repo.ts";
|
||||||
import {type Schematic, SchematicSchema} from "@type/schem.ts";
|
import {type Schematic, SchematicSchema} from "@type/schem.ts";
|
||||||
import {derived} from "svelte/store";
|
import {derived} from "svelte/store";
|
||||||
|
import {ResponseErrorSchema} from "@type/data.ts";
|
||||||
|
|
||||||
export class SchematicRepo {
|
export class SchematicRepo {
|
||||||
constructor(private token: string) {
|
constructor(private token: string) {
|
||||||
@ -40,7 +41,7 @@ export class SchematicRepo {
|
|||||||
name,
|
name,
|
||||||
content,
|
content,
|
||||||
}),
|
}),
|
||||||
});
|
}).then(value => value.json()).then(SchematicSchema.or(ResponseErrorSchema).parse);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -50,3 +50,10 @@ export const ServerSchema = z.object({
|
|||||||
});
|
});
|
||||||
|
|
||||||
export type Server = z.infer<typeof ServerSchema>;
|
export type Server = z.infer<typeof ServerSchema>;
|
||||||
|
|
||||||
|
export const ResponseErrorSchema = z.object({
|
||||||
|
error: z.string(),
|
||||||
|
code: z.string(),
|
||||||
|
});
|
||||||
|
|
||||||
|
export type ResponseError = z.infer<typeof ResponseErrorSchema>;
|
||||||
|
|||||||
22
src/content/announcements/de/eventplan-2025.md
Normal file
22
src/content/announcements/de/eventplan-2025.md
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
title: Eventplan 2025
|
||||||
|
key: eventplan-2025
|
||||||
|
description: Der Eventplan für das Jahr 2025.
|
||||||
|
created: 2025-01-20
|
||||||
|
tags:
|
||||||
|
- event
|
||||||
|
image: ../../../images/jAHRESPLAN-gro-5.png
|
||||||
|
---
|
||||||
|
|
||||||
|
2025 wird ein Jahr voller spannender Events. Hier findet ihr eine Übersicht über die geplanten Events.
|
||||||
|
|
||||||
|
Highlights sind:
|
||||||
|
- **WargearSeason 2025**
|
||||||
|
- **SteamWar Arcade**
|
||||||
|
- **WarGear mit SFA**
|
||||||
|
- **MiniWarGear Liga**
|
||||||
|
- **SpaceShip**
|
||||||
|
|
||||||
|
aber auch viele mehr.
|
||||||
|
|
||||||
|
Es wird auch kleinere Events geben, die nicht angekündigt sind.
|
||||||
@ -2,8 +2,9 @@
|
|||||||
"name": "AdvancedScripts",
|
"name": "AdvancedScripts",
|
||||||
"description": "Ein Fabric-Mod, der für den BauServer von SteamWar Hotkeys für das ScriptSystem hinzufügt. Hierzu werden die einzelnen Zeichen an den Server gesendet und vom Server verarbeitet.",
|
"description": "Ein Fabric-Mod, der für den BauServer von SteamWar Hotkeys für das ScriptSystem hinzufügt. Hierzu werden die einzelnen Zeichen an den Server gesendet und vom Server verarbeitet.",
|
||||||
"url": {
|
"url": {
|
||||||
"1.20.1": "https://steamwar.de/AdvancedScriptsV3",
|
"1.21.4": "https://git.steamwar.de/SteamWar/AdvancedScripts/releases/download/2.2.0/AdvancedScripts-2.2.0.jar",
|
||||||
"1.19": "https://steamwar.de/AdvancedScripts"
|
"1.20.6": "https://git.steamwar.de/SteamWar/AdvancedScripts/releases/download/2.1.0/AdvancedScripts-2.1.0.jar",
|
||||||
|
"1.19.3": "https://git.steamwar.de/SteamWar/AdvancedScripts/releases/download/2.0.0/AdvancedScripts-2.0.0.jar"
|
||||||
},
|
},
|
||||||
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/AdvancedScripts"
|
"sourceUrl": "https://git.steamwar.de/SteamWar/AdvancedScripts"
|
||||||
}
|
}
|
||||||
@ -1,6 +0,0 @@
|
|||||||
{
|
|
||||||
"name": "FabricModSender",
|
|
||||||
"description": "Ein Fabric-Mod, der SteamWar beim Serverjoin die von dir installierten Mods sendet und es uns damit ermöglicht, sie auf schädliche Mods zu überprüfen. Eine Installation dieses Mods ermöglicht dir das Joinen von Arenen mit Fabric auf SteamWar.",
|
|
||||||
"url": "https://steamwar.de/FabricModSender",
|
|
||||||
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/FabricModSender"
|
|
||||||
}
|
|
||||||
@ -2,8 +2,7 @@
|
|||||||
"name": "SteamWarTeamserver",
|
"name": "SteamWarTeamserver",
|
||||||
"description": "Dieses Plugin ermöglicht die einfache Einbindung deines Servers in SteamWar. Wie du deinen (Team-)Server über SteamWar erreichbar machen kannst findest du hier.",
|
"description": "Dieses Plugin ermöglicht die einfache Einbindung deines Servers in SteamWar. Wie du deinen (Team-)Server über SteamWar erreichbar machen kannst findest du hier.",
|
||||||
"url": {
|
"url": {
|
||||||
"Info": "/teamserverintegration",
|
"Info": "/teamserverintegration"
|
||||||
"Download": "https://steamwar.de/SteamWarTeamserver"
|
|
||||||
},
|
},
|
||||||
"sourceUrl": "https://steamwar.de/devlabs/SteamWar/SteamWarBungeeTeamserver"
|
"sourceUrl": "https://git.steamwar.de/SteamWar/SteamWarBungeeTeamserver"
|
||||||
}
|
}
|
||||||
@ -26,6 +26,7 @@ Schuss zu verhindern.
|
|||||||
|
|
||||||
## Kanonen
|
## Kanonen
|
||||||
|
|
||||||
|
Jedes MicroWargear muss über mindestens eine funktionstüchtige Kanone verfügen.
|
||||||
Eine Kanone ist eine durchgehende Redstonekonstruktion, welche in der Lage ist,
|
Eine Kanone ist eine durchgehende Redstonekonstruktion, welche in der Lage ist,
|
||||||
den Gegner durch gezündetes TNT zu beschädigen. Eine TNT-Kanone ist der einzige Ort in einem Micro an dem Wasser verbaut werden darf, wenn es die Kanone nicht verlässt und /oder im intakten Zustand Wasserschilde bildet. Außerdem darf sich die Kanone nicht gezielt selbst beschädigen. Eine TNT-Kanone darf maximal 8 Projektile pro Schuss abfeuern.
|
den Gegner durch gezündetes TNT zu beschädigen. Eine TNT-Kanone ist der einzige Ort in einem Micro an dem Wasser verbaut werden darf, wenn es die Kanone nicht verlässt und /oder im intakten Zustand Wasserschilde bildet. Außerdem darf sich die Kanone nicht gezielt selbst beschädigen. Eine TNT-Kanone darf maximal 8 Projektile pro Schuss abfeuern.
|
||||||
Zusätzlich ist eine Hauptkanone mit 12 Projektilen erlaubt.
|
Zusätzlich ist eine Hauptkanone mit 12 Projektilen erlaubt.
|
||||||
|
|||||||
@ -41,7 +41,9 @@
|
|||||||
"Dev": "Developer",
|
"Dev": "Developer",
|
||||||
"Mod": "Moderator",
|
"Mod": "Moderator",
|
||||||
"Sup": "Supporter",
|
"Sup": "Supporter",
|
||||||
"Arch": "Architekt"
|
"Arch": "Architekt",
|
||||||
|
"User": "Spieler",
|
||||||
|
"YT": "YouTuber"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"status": {
|
"status": {
|
||||||
@ -240,5 +242,9 @@
|
|||||||
},
|
},
|
||||||
"ranking": {
|
"ranking": {
|
||||||
"heading": "{# mode #} Rangliste"
|
"heading": "{# mode #} Rangliste"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"title": "404 - Seite nicht gefunden",
|
||||||
|
"description": "Seite nicht gefunden"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -62,7 +62,9 @@
|
|||||||
"Dev": "Developer",
|
"Dev": "Developer",
|
||||||
"Mod": "Moderator",
|
"Mod": "Moderator",
|
||||||
"Sup": "Supporter",
|
"Sup": "Supporter",
|
||||||
"Arch": "Builder"
|
"Arch": "Builder",
|
||||||
|
"User": "User",
|
||||||
|
"YT": "YouTuber"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"footer": {
|
"footer": {
|
||||||
@ -180,5 +182,9 @@
|
|||||||
},
|
},
|
||||||
"stats": {
|
"stats": {
|
||||||
"title": "Fight Statistics"
|
"title": "Fight Statistics"
|
||||||
|
},
|
||||||
|
"404": {
|
||||||
|
"title": "404 - Page not found",
|
||||||
|
"description": "Page not found"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
BIN
src/images/jAHRESPLAN-gro-4.png
Normal file
BIN
src/images/jAHRESPLAN-gro-4.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
BIN
src/images/jAHRESPLAN-gro-5.png
Normal file
BIN
src/images/jAHRESPLAN-gro-5.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 1.1 MiB |
@ -3,9 +3,8 @@ import icon from "../images/logo.png";
|
|||||||
import {getImage} from "astro:assets";
|
import {getImage} from "astro:assets";
|
||||||
import {astroI18n} from "astro-i18n";
|
import {astroI18n} from "astro-i18n";
|
||||||
import {SEO} from "astro-seo";
|
import {SEO} from "astro-seo";
|
||||||
import {ViewTransitions} from "astro:transitions";
|
import {ClientRouter} from "astro:transitions";
|
||||||
const {title, description, clientSideRouter = true} = Astro.props.frontmatter || Astro.props;
|
const {title, description, clientSideRouter = true} = Astro.props.frontmatter || Astro.props;
|
||||||
|
|
||||||
import "../../public/fonts/roboto/roboto.css";
|
import "../../public/fonts/roboto/roboto.css";
|
||||||
|
|
||||||
const iconImage = await getImage({src: icon, height: 32, width: 32, format: "png", quality: 100});
|
const iconImage = await getImage({src: icon, height: 32, width: 32, format: "png", quality: 100});
|
||||||
@ -40,7 +39,7 @@ if (localStorage["theme-mode"] === "light" || (!("theme-mode" in localStorage) &
|
|||||||
|
|
||||||
<slot name="head"/>
|
<slot name="head"/>
|
||||||
|
|
||||||
{clientSideRouter && <ViewTransitions/>}
|
{clientSideRouter && <ClientRouter/>}
|
||||||
</head>
|
</head>
|
||||||
<body class="dark:bg-zinc-800">
|
<body class="dark:bg-zinc-800">
|
||||||
<slot/>
|
<slot/>
|
||||||
|
|||||||
@ -10,7 +10,7 @@ const {title, description} = Astro.props;
|
|||||||
<div class="h-screen w-screen fixed -z-10">
|
<div class="h-screen w-screen fixed -z-10">
|
||||||
<BackgroundImage />
|
<BackgroundImage />
|
||||||
</div>
|
</div>
|
||||||
<div class="mx-auto bg-gray-100 p-8 rounded-b-md shadow-md pt-40 sm:pt-28 md:pt-14 relative
|
<div class="mx-auto bg-gray-100 p-8 rounded-b-md shadow-md pt-14 relative
|
||||||
dark:text-white dark:bg-neutral-900" style="width: min(100%, 75em);">
|
dark:text-white dark:bg-neutral-900" style="width: min(100%, 75em);">
|
||||||
<slot/>
|
<slot/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
39
src/pages/not-found.astro
Normal file
39
src/pages/not-found.astro
Normal file
@ -0,0 +1,39 @@
|
|||||||
|
---
|
||||||
|
import PageLayout from "../layouts/PageLayout.astro";
|
||||||
|
import {t} from "astro-i18n";
|
||||||
|
---
|
||||||
|
|
||||||
|
<PageLayout title={t("404.title")}>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400">
|
||||||
|
<!-- 404 Text - heller für besseren Kontrast -->
|
||||||
|
<text x="400" y="150" font-family="Arial Black" font-size="120" fill="#ffffff" text-anchor="middle">404</text>
|
||||||
|
|
||||||
|
<!-- Trauriger Roboter - hellere Farben für besseren Kontrast -->
|
||||||
|
<!-- Körper -->
|
||||||
|
<rect x="350" y="200" width="100" height="120" rx="10" fill="#888888"/>
|
||||||
|
|
||||||
|
<!-- Kopf -->
|
||||||
|
<rect x="365" y="160" width="70" height="60" rx="5" fill="#888888"/>
|
||||||
|
|
||||||
|
<!-- Augen -->
|
||||||
|
<circle cx="385" cy="185" r="8" fill="#ff6b6b"/>
|
||||||
|
<circle cx="415" cy="185" r="8" fill="#ff6b6b"/>
|
||||||
|
|
||||||
|
<!-- Antenne -->
|
||||||
|
<line x1="400" y1="160" x2="400" y2="140" stroke="#888888" stroke-width="4"/>
|
||||||
|
<circle cx="400" cy="135" r="5" fill="#888888"/>
|
||||||
|
|
||||||
|
<!-- Arme -->
|
||||||
|
<rect x="320" y="220" width="30" height="10" rx="5" fill="#888888"/>
|
||||||
|
<rect x="450" y="220" width="30" height="10" rx="5" fill="#888888"/>
|
||||||
|
|
||||||
|
<!-- Text unter dem Roboter - heller für besseren Kontrast -->
|
||||||
|
<text x="400" y="360" font-family="Arial" font-size="24" fill="#ffffff" text-anchor="middle">{t("404.description")}</text>
|
||||||
|
|
||||||
|
<!-- Dekorative Elemente - heller für besseren Kontrast -->
|
||||||
|
<circle cx="250" cy="100" r="5" fill="#bbbbbb"/>
|
||||||
|
<circle cx="550" cy="150" r="5" fill="#bbbbbb"/>
|
||||||
|
<circle cx="200" cy="300" r="5" fill="#bbbbbb"/>
|
||||||
|
<circle cx="600" cy="250" r="5" fill="#bbbbbb"/>
|
||||||
|
</svg>
|
||||||
|
</PageLayout>
|
||||||
@ -1,7 +1,11 @@
|
|||||||
build:
|
build:
|
||||||
- "echo 'PUBLIC_API_SERVER=https://dev.steamwar.de/api' > .env"
|
- "printenv"
|
||||||
- "pnpm run ci"
|
- "echo 'PUBLIC_API_SERVER=https://api.steamwar.de' > .env"
|
||||||
|
- "pnpm install"
|
||||||
|
- "./node_modules/.bin/astro-i18n generate:pages --purge"
|
||||||
|
- "./node_modules/.bin/astro-i18n generate:types"
|
||||||
|
- "./node_modules/.bin/astro build"
|
||||||
|
|
||||||
release:
|
release:
|
||||||
- "rm -r /var/www/dev/*"
|
- "rm -r /var/www/html/*"
|
||||||
- "mv dist/* /var/www/dev"
|
- "mv dist/* /var/www/html"
|
||||||
@ -9,7 +9,6 @@ module.exports = {
|
|||||||
theme: {
|
theme: {
|
||||||
extend: {
|
extend: {
|
||||||
colors: {
|
colors: {
|
||||||
// flowbite-svelte
|
|
||||||
primary: { 50: '#FFF5F2', 100: '#FFF1EE', 200: '#FFE4DE', 300: '#FFD5CC', 400: '#FFBCAD', 500: '#FE795D', 600: '#EF562F', 700: '#EB4F27', 800: '#CC4522', 900: '#A5371B'},
|
primary: { 50: '#FFF5F2', 100: '#FFF1EE', 200: '#FFE4DE', 300: '#FFD5CC', 400: '#FFBCAD', 500: '#FE795D', 600: '#EF562F', 700: '#EB4F27', 800: '#CC4522', 900: '#A5371B'},
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user