diff --git a/site/.envrc b/pkgs/docs-site/.envrc similarity index 100% rename from site/.envrc rename to pkgs/docs-site/.envrc diff --git a/site/.gitignore b/pkgs/docs-site/.gitignore similarity index 100% rename from site/.gitignore rename to pkgs/docs-site/.gitignore diff --git a/site/.npmrc b/pkgs/docs-site/.npmrc similarity index 100% rename from site/.npmrc rename to pkgs/docs-site/.npmrc diff --git a/site/.postcssrc.json b/pkgs/docs-site/.postcssrc.json similarity index 100% rename from site/.postcssrc.json rename to pkgs/docs-site/.postcssrc.json diff --git a/site/.prettierignore b/pkgs/docs-site/.prettierignore similarity index 100% rename from site/.prettierignore rename to pkgs/docs-site/.prettierignore diff --git a/site/.prettierrc b/pkgs/docs-site/.prettierrc similarity index 100% rename from site/.prettierrc rename to pkgs/docs-site/.prettierrc diff --git a/site/README.md b/pkgs/docs-site/README.md similarity index 100% rename from site/README.md rename to pkgs/docs-site/README.md diff --git a/site/default.nix b/pkgs/docs-site/default.nix similarity index 100% rename from site/default.nix rename to pkgs/docs-site/default.nix diff --git a/site/flake-module.nix b/pkgs/docs-site/flake-module.nix similarity index 100% rename from site/flake-module.nix rename to pkgs/docs-site/flake-module.nix diff --git a/site/package-lock.json b/pkgs/docs-site/package-lock.json similarity index 100% rename from site/package-lock.json rename to pkgs/docs-site/package-lock.json diff --git a/site/package.json b/pkgs/docs-site/package.json similarity index 100% rename from site/package.json rename to pkgs/docs-site/package.json diff --git a/site/src/app.d.ts b/pkgs/docs-site/src/app.d.ts similarity index 100% rename from site/src/app.d.ts rename to pkgs/docs-site/src/app.d.ts diff --git a/site/src/app.html b/pkgs/docs-site/src/app.html similarity index 100% rename from site/src/app.html rename to pkgs/docs-site/src/app.html diff --git a/site/src/config.ts b/pkgs/docs-site/src/config.ts similarity index 67% rename from site/src/config.ts rename to pkgs/docs-site/src/config.ts index 4cae68087..9de5f8557 100644 --- a/site/src/config.ts +++ b/pkgs/docs-site/src/config.ts @@ -1,10 +1,6 @@ -import type { RawNavLink } from "./routes/docs"; +import type { RawNavLink } from "$lib"; -export const blog = { - base: "/blog", -}; -export const docs = { - base: "/docs", +export default { navLinks: [ { label: "Getting Started", @@ -25,7 +21,3 @@ export const docs = { }, ] as RawNavLink[], }; - -export const markdown = { - minLineNumberLines: 4, -}; diff --git a/site/src/lib/assets/favicon.svg b/pkgs/docs-site/src/lib/assets/favicon.svg similarity index 100% rename from site/src/lib/assets/favicon.svg rename to pkgs/docs-site/src/lib/assets/favicon.svg diff --git a/site/src/routes/docs/index.ts b/pkgs/docs-site/src/lib/docs.ts similarity index 91% rename from site/src/routes/docs/index.ts rename to pkgs/docs-site/src/lib/docs.ts index e6bec0a15..a98067ca5 100644 --- a/site/src/routes/docs/index.ts +++ b/pkgs/docs-site/src/lib/docs.ts @@ -1,16 +1,16 @@ -import * as config from "~/config"; +import config from "~/config"; export class Docs { articles: Record Promise
> = {}; navLinks: NavLink[] = []; async init() { this.articles = Object.fromEntries( - Object.entries(import.meta.glob
("./**/*.md")).map( - ([key, fn]) => [key.slice("./".length, -".md".length), fn], + Object.entries(import.meta.glob
("../routes/docs/**/*.md")).map( + ([key, fn]) => [key.slice("../routes/docs/".length, -".md".length), fn], ), ); this.navLinks = await Promise.all( - config.docs.navLinks.map((navLink) => this.#normalizeNavLink(navLink)), + config.navLinks.map((navLink) => this.#normalizeNavLink(navLink)), ); return this; } @@ -23,7 +23,7 @@ export class Docs { } return { label: (await article()).frontmatter.title, - link: `${config.docs.base}/${navLink}`, + link: `/${navLink}`, external: false, }; } @@ -46,7 +46,7 @@ export class Docs { } return { label: navLink.label ?? (await article()).frontmatter.title, - link: `${config.docs.base}/${navLink.slug}`, + link: `/${navLink.slug}`, badge: normalizeBadge(navLink.badge), external: false, }; @@ -98,7 +98,7 @@ export class Docs { .map((item) => this.#normalizeNavLink({ label: item.frontmatter.title, - link: `${config.docs.base}/${item.key}`, + link: `/${item.key}`, }), ), ); diff --git a/pkgs/docs-site/src/lib/index.ts b/pkgs/docs-site/src/lib/index.ts new file mode 100644 index 000000000..0df792aea --- /dev/null +++ b/pkgs/docs-site/src/lib/index.ts @@ -0,0 +1 @@ +export * from "./docs"; diff --git a/site/src/routes/docs/[...path]/admonition.css b/pkgs/docs-site/src/lib/markdown/admonition.css similarity index 100% rename from site/src/routes/docs/[...path]/admonition.css rename to pkgs/docs-site/src/lib/markdown/admonition.css diff --git a/site/src/routes/docs/[...path]/markdown.css b/pkgs/docs-site/src/lib/markdown/main.css similarity index 74% rename from site/src/routes/docs/[...path]/markdown.css rename to pkgs/docs-site/src/lib/markdown/main.css index 3ac939325..9241d9544 100644 --- a/site/src/routes/docs/[...path]/markdown.css +++ b/pkgs/docs-site/src/lib/markdown/main.css @@ -1,3 +1,6 @@ +@import url("./shiki.css"); +@import url("./admonition.css"); + code { font-family: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, diff --git a/site/src/routes/docs/[...path]/shiki.css b/pkgs/docs-site/src/lib/markdown/shiki.css similarity index 100% rename from site/src/routes/docs/[...path]/shiki.css rename to pkgs/docs-site/src/lib/markdown/shiki.css diff --git a/site/vitePlugins/markdown.ts b/pkgs/docs-site/src/lib/markdown/vite.ts similarity index 93% rename from site/vitePlugins/markdown.ts rename to pkgs/docs-site/src/lib/markdown/vite.ts index 5b8a880ef..675f1a444 100644 --- a/site/vitePlugins/markdown.ts +++ b/pkgs/docs-site/src/lib/markdown/vite.ts @@ -14,7 +14,6 @@ import rehypeAutolinkHeadings from "rehype-autolink-headings"; import { toc } from "mdast-util-toc"; import type { Nodes } from "mdast"; import type { Element } from "hast"; -import * as config from "../src/config"; import { transformerNotationDiff, transformerNotationHighlight, @@ -25,7 +24,17 @@ import { visit } from "unist-util-visit"; import { h } from "hastscript"; import type { PluginOption } from "vite"; -export default function (): PluginOption { +export type Options = { + codeLightTheme?: string; + codeDarkTheme?: string; + minLineNumberLines?: number; +}; + +export default function ({ + codeLightTheme = "catppuccin-latte", + codeDarkTheme = "catppuccin-macchiato", + minLineNumberLines = 4, +}: Options = {}): PluginOption { return { name: "markdown-loader", async transform(code, id) { @@ -42,8 +51,8 @@ export default function (): PluginOption { .use(rehypeShiki, { defaultColor: false, themes: { - light: "catppuccin-latte", - dark: "catppuccin-macchiato", + light: codeLightTheme, + dark: codeDarkTheme, }, transformers: [ transformerNotationDiff({ @@ -53,7 +62,7 @@ export default function (): PluginOption { transformerRenderIndentGuides(), transformerMetaHighlight(), transformerLineNumbers({ - minLines: config.markdown.minLineNumberLines, + minLines: minLineNumberLines, }), ], }) @@ -187,7 +196,7 @@ function linkMigration() { if (!cleanUrl.startsWith("/")) { throw new Error(`invalid doc link: ${cleanUrl}`); } - node.url = `${config.docs.base}/${cleanUrl}`; + node.url = `/docs/${cleanUrl}`; }); }; } diff --git a/site/src/routes/+layout.svelte b/pkgs/docs-site/src/routes/+layout.svelte similarity index 79% rename from site/src/routes/+layout.svelte rename to pkgs/docs-site/src/routes/+layout.svelte index 76becbda9..68d9acba4 100644 --- a/site/src/routes/+layout.svelte +++ b/pkgs/docs-site/src/routes/+layout.svelte @@ -1,16 +1,14 @@ @@ -19,18 +17,11 @@
- +
diff --git a/pkgs/docs-site/src/routes/+layout.ts b/pkgs/docs-site/src/routes/+layout.ts new file mode 100644 index 000000000..523fda111 --- /dev/null +++ b/pkgs/docs-site/src/routes/+layout.ts @@ -0,0 +1,9 @@ +import { Docs } from "$lib"; + +export const prerender = true; + +export async function load() { + return { + docs: await new Docs().init(), + }; +} diff --git a/site/src/routes/+page.svelte b/pkgs/docs-site/src/routes/+page.svelte similarity index 100% rename from site/src/routes/+page.svelte rename to pkgs/docs-site/src/routes/+page.svelte diff --git a/site/src/routes/docs/[...path]/+page.svelte b/pkgs/docs-site/src/routes/[...path]/+page.svelte similarity index 78% rename from site/src/routes/docs/[...path]/+page.svelte rename to pkgs/docs-site/src/routes/[...path]/+page.svelte index 7ad02442d..d7abf9dd3 100644 --- a/site/src/routes/docs/[...path]/+page.svelte +++ b/pkgs/docs-site/src/routes/[...path]/+page.svelte @@ -1,7 +1,5 @@ @@ -16,7 +14,6 @@ - diff --git a/site/src/routes/docs/+page.svelte b/site/src/routes/docs/+page.svelte deleted file mode 100644 index 7ec79901c..000000000 --- a/site/src/routes/docs/+page.svelte +++ /dev/null @@ -1,3 +0,0 @@ -

What is Clan

- -Content diff --git a/site/src/routes/docs/[...path]/+page.ts b/site/src/routes/docs/[...path]/+page.ts deleted file mode 100644 index eb3d2ab34..000000000 --- a/site/src/routes/docs/[...path]/+page.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { error } from "@sveltejs/kit"; - -const articles = Object.fromEntries( - Object.entries( - import.meta.glob<{ - content: string; - frontmatter: Record; - toc: string; - }>("../**/*.md"), - ).map(([key, fn]) => [key.slice("../".length, -".md".length), fn]), -); - -export async function load({ params }) { - const path = params.path.endsWith("/") - ? params.path.slice(0, -1) - : params.path; - const article = articles[path]; - if (!article) { - error(404, ""); - } - - const { frontmatter, toc, content } = await article(); - return { frontmatter, toc, content }; -}