diff --git a/docs/astro.config.mjs b/docs/astro.config.mjs
index fb5ba625..13372b3d 100644
--- a/docs/astro.config.mjs
+++ b/docs/astro.config.mjs
@@ -3,6 +3,8 @@ import starlight from "@astrojs/starlight";
import { generateSchema } from "./src/schema_generator";
+const url = "https://nh.outerwildsmods.com";
+
generateSchema("body_schema.json");
generateSchema("star_system_schema.json");
generateSchema("translation_schema.json");
@@ -11,9 +13,25 @@ generateSchema("dialogue_schema.xsd");
generateSchema("text_schema.xsd");
generateSchema("shiplog_schema.xsd");
+const ogMeta = (name, val) => ({
+ tag: "meta",
+ attrs: {
+ property: `og:${name}`,
+ content: val
+ }
+});
+
+const twMeta = (name, val) => ({
+ tag: "meta",
+ attrs: {
+ name: `twitter:${name}`,
+ content: val
+ }
+});
+
// https://astro.build/config
export default defineConfig({
- site: "https://nh.outerwildsmods.com",
+ site: url,
compressHTML: true,
integrations: [
starlight({
@@ -21,6 +39,7 @@ export default defineConfig({
description:
"Documentation on how to use the New Horizons planet creation tool for Outer Wilds.",
defaultLocale: "en-us",
+ favicon: "/favicon.png",
components: {
PageSidebar: "/src/components/ConditionalPageSidebar.astro"
},
@@ -33,6 +52,14 @@ export default defineConfig({
github: "https://github.com/Outer-Wilds-New-Horizons/new-horizons",
discord: "https://discord.gg/wusTQYbYTc"
},
+ head: [
+ ogMeta("image", `${url}/og_image.webp`),
+ ogMeta("image:width", "1200"),
+ ogMeta("image:height", "400"),
+ twMeta("card", "summary"),
+ twMeta("image", `${url}/og_image.webp`),
+ { tag: "meta", attrs: { name: "theme-color", content: "#ffab8a" } }
+ ],
sidebar: [
{
label: "Start Here",
diff --git a/docs/public/favicon.ico b/docs/public/favicon.ico
deleted file mode 100644
index a943dc7b..00000000
Binary files a/docs/public/favicon.ico and /dev/null differ
diff --git a/docs/public/favicon.png b/docs/public/favicon.png
new file mode 100644
index 00000000..d0db66b1
Binary files /dev/null and b/docs/public/favicon.png differ
diff --git a/docs/public/favicon.svg b/docs/public/favicon.svg
deleted file mode 100644
index cba5ac14..00000000
--- a/docs/public/favicon.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/docs/public/og_image.webp b/docs/public/og_image.webp
new file mode 100644
index 00000000..20f248b9
Binary files /dev/null and b/docs/public/og_image.webp differ
diff --git a/docs/src/components/ConditionalPageSidebar.astro b/docs/src/components/ConditionalPageSidebar.astro
index 1db046db..89d83691 100644
--- a/docs/src/components/ConditionalPageSidebar.astro
+++ b/docs/src/components/ConditionalPageSidebar.astro
@@ -4,7 +4,7 @@ import Default from "@astrojs/starlight/components/PageSidebar.astro";
import { SchemaTools } from "../schema_utils";
import type { MarkdownHeading } from "astro";
-const isSchema = Astro.props.slug.startsWith("schemas/");
+const isSchema = Astro.props.slug.startsWith("schemas/") && !Astro.props.slug.endsWith("/defs");
type TocItem = Exclude["items"]["find"]>, undefined>;
@@ -29,15 +29,17 @@ function generateToC(
let props = Astro.props;
if (isSchema) {
- console.log("Is Schema!");
const schemaFileName = props.entry.data.head[0]?.attrs?.fileName as string | undefined;
if (schemaFileName) {
- const schema = SchemaTools.readSchema(schemaFileName);
+ let schema = SchemaTools.readSchema(schemaFileName);
+ const defName = props.entry.data.head[0]?.attrs?.def as string | undefined;
+ if (defName) {
+ schema = SchemaTools.getDefs(schema).find(d => d.slug === defName)!;
+ }
const headings = SchemaTools.getHeaders(schema);
props.headings = headings;
props.toc!.items = generateToC(headings, props.entry.data.title);
}
- console.log(props.toc);
}
---
diff --git a/docs/src/components/Schemas/Content.astro b/docs/src/components/Schemas/Content.astro
index 4a43cae2..40b60f75 100644
--- a/docs/src/components/Schemas/Content.astro
+++ b/docs/src/components/Schemas/Content.astro
@@ -1,5 +1,6 @@
---
-import { Schema, SchemaTools } from '../../schema_utils';
+import { SchemaTools } from "../../schema_utils";
+import type { Schema } from "../../schema_utils";
export interface Props {
schema: Schema;
@@ -19,20 +20,25 @@ const type = SchemaTools.getType(schema);
const link = `https://raw.githubusercontent.com/Outer-Wilds-New-Horizons/new-horizons/main/NewHorizons/Schemas/${schema.fileName}`;
const refSlug = SchemaTools.getRefSlug(schema);
const enumVals = SchemaTools.getEnumValues(schema);
-const props = SchemaTools.getProps(schema);
+const props = SchemaTools.getProps(schema, level);
const HeadingTag = levelMap[level] ?? "h6";
---