diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml
deleted file mode 100644
index 29b3aa8..0000000
--- a/.github/workflows/deploy.yml
+++ /dev/null
@@ -1,38 +0,0 @@
-name: Publish on GitHub Pages
-
-on:
- push:
- branches: [ main ]
-
-permissions:
- contents: read
- pages: write
- id-token: write
-
-jobs:
- build:
- runs-on: ubuntu-latest
-
- steps:
- - name: Clone repository
- uses: actions/checkout@v4
-
- - name: Setup Deno environment
- uses: denoland/setup-deno@v1
- with:
- deno-version: v1.x
-
- - name: Build site
- run: deno task build
-
- - name: Setup Pages
- uses: actions/configure-pages@v3
-
- - name: Upload artifact
- uses: actions/upload-pages-artifact@v2
- with:
- path: '_site'
-
- - name: Deploy to GitHub Pages
- id: deployment
- uses: actions/deploy-pages@v1
diff --git a/.gitignore b/.gitignore
index 2f71f5d..5b4bdef 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,11 @@
-_site
-_cache
+# dotenv environment variable files
+.env
+.env.development.local
+.env.test.local
+.env.production.local
+.env.local
+
+# Fresh build directory
+_fresh/
+# npm dependencies
+node_modules/
diff --git a/APIS/console.md b/APIS/console.md
deleted file mode 100644
index 2ed2dee..0000000
--- a/APIS/console.md
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: "Console"
-parent: "APIS"
-nav_order: 3
----
-
-## Console
-
-The console provides a simple debugging console that is similar to the JavaScript console mechanism provided by web browsers.
-
-### `console.log`
-
-Writes a message to the console.
-
-```javascript
-console.log('Hello, world!');
-```
-
-### `console.error`
-
-Writes an error message to the console.
-
-```javascript
-console.error('An error occurred!');
-```
-
-### `console.warn`
-
-Writes a warning message to the console.
-
-```javascript
-console.warn('A warning occurred!');
-```
-
-### `console.info`
-
-Writes an informational message to the console.
-
-```javascript
-console.info('An informational message!');
-```
-
-### `console.clear`
-
-Clears the console.
-
-```javascript
-console.clear();
-```
diff --git a/APIS/index.md b/APIS/index.md
deleted file mode 100644
index 7af9984..0000000
--- a/APIS/index.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-title: "APIS"
-nav_order: 2
-collapse: false
----
diff --git a/README.md b/README.md
index aa23366..54d0c8d 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1 @@
-# website
-https://tryandromeda.dev
+# Andromeda Website
diff --git a/_config.ts b/_config.ts
deleted file mode 100644
index 2853e30..0000000
--- a/_config.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import lume from "lume/mod.ts";
-import lumocs from "./lumocs/mod.ts";
-
-const site = lume();
-
-site.use(lumocs());
-
-
-export default site;
diff --git a/_data.json b/_data.json
deleted file mode 100644
index df2b0d8..0000000
--- a/_data.json
+++ /dev/null
@@ -1,18 +0,0 @@
-{
- "lang": "en",
- "layout": "page.njk",
- "metas": {
- "title": "=title",
- "site": "Andromeda",
- "lang": "en",
- "description": "=description"
- },
- "top_links": [
- ],
- "nav_links": [
- {
- "title": "GitHub",
- "url": "https://github.com/tryandromeda/andromeda"
- }
- ]
-}
diff --git a/components/CodeBlock.tsx b/components/CodeBlock.tsx
new file mode 100644
index 0000000..365cd93
--- /dev/null
+++ b/components/CodeBlock.tsx
@@ -0,0 +1,12 @@
+import Prism from "https://esm.sh/prismjs@1.29.0";
+
+export function CodeBlock(
+ { code, lang }: { code: string; lang: "js" | "ts" | "jsx" | "md" | "bash" },
+) {
+ return (
+
+ );
+}
diff --git a/components/Content.tsx b/components/Content.tsx
new file mode 100644
index 0000000..e2e6f50
--- /dev/null
+++ b/components/Content.tsx
@@ -0,0 +1,20 @@
+import { render } from "$gfm";
+import "npm:prismjs@1.29.0/components/prism-typescript.js";
+
+export function Content({
+ markdown,
+ baseUrl,
+}: {
+ markdown: string;
+ baseUrl?: string;
+}) {
+ const html = render(markdown, { baseUrl });
+ return (
+ <>
+
+ >
+ );
+}
\ No newline at end of file
diff --git a/components/GithubIcon.tsx b/components/GithubIcon.tsx
new file mode 100644
index 0000000..de24a70
--- /dev/null
+++ b/components/GithubIcon.tsx
@@ -0,0 +1,18 @@
+// deno-lint-ignore-file no-explicit-any
+export function FaGithub(props: any) {
+ return (
+
+ );
+}
diff --git a/components/Head.tsx b/components/Head.tsx
new file mode 100644
index 0000000..e1af38f
--- /dev/null
+++ b/components/Head.tsx
@@ -0,0 +1,26 @@
+// Copyright 2023-2024 the Deno authors. All rights reserved. MIT license.
+import { Head as _Head } from "$fresh/runtime.ts";
+import Meta, { type MetaProps } from "./Meta.tsx";
+import { ComponentChildren } from "preact";
+
+export type HeadProps =
+ & Partial>
+ & Pick
+ & {
+ children?: ComponentChildren;
+ };
+
+export default function Head(props: HeadProps) {
+ return (
+ <_Head>
+
+ {props.children}
+
+ );
+}
diff --git a/components/Meta.tsx b/components/Meta.tsx
new file mode 100644
index 0000000..79931bf
--- /dev/null
+++ b/components/Meta.tsx
@@ -0,0 +1,42 @@
+export interface MetaProps {
+ /** Title of the current page */
+ title: string;
+ /** Description of the current page */
+ description: string;
+ /** URL of the current page */
+ href: string;
+ /** URL of the cover image */
+ imageUrl: string;
+}
+
+export default function Meta(props: MetaProps) {
+ return (
+ <>
+ {/* HTML Meta Tags */}
+ {props.title}
+
+
+ {/* Google / Search Engine Tags */}
+
+
+ {props.imageUrl && (
+
+ )}
+
+ {/* Facebook Meta Tags */}
+
+
+
+
+
+
+
+
+ {/* Twitter Meta Tags */}
+
+
+
+
+ >
+ );
+}
diff --git a/components/SearchIcon.tsx b/components/SearchIcon.tsx
new file mode 100644
index 0000000..dab0a83
--- /dev/null
+++ b/components/SearchIcon.tsx
@@ -0,0 +1,18 @@
+// deno-lint-ignore-file no-explicit-any
+export function FaSearch(props: any) {
+ return (
+
+ );
+}
diff --git a/deno.json b/deno.json
index 76d2584..781a6d1 100644
--- a/deno.json
+++ b/deno.json
@@ -1,16 +1,32 @@
{
- "imports": {
- "lume/": "https://deno.land/x/lume@v2.2.4/",
- "lumocs/": "https://deno.land/x/lumocs@0.1.2/"
- },
+ "lock": false,
"tasks": {
- "lume": "echo \"import 'lume/cli.ts'\" | deno run -A -",
- "build": "deno task lume",
- "serve": "deno task lume -s"
+ "check": "deno fmt --check && deno lint && deno check **/*.ts && deno check **/*.tsx",
+ "cli": "echo \"import '\\$fresh/src/dev/cli.ts'\" | deno run --unstable -A -",
+ "manifest": "deno task cli manifest $(pwd)",
+ "start": "deno run -A --watch=static/,routes/ dev.ts",
+ "build": "deno run -A dev.ts build",
+ "preview": "deno run -A main.ts",
+ "update": "deno run -A -r https://fresh.deno.dev/update ."
+ },
+ "lint": { "rules": { "tags": ["fresh", "recommended"] } },
+ "exclude": ["**/_fresh/*"],
+ "imports": {
+ "$fresh/": "https://deno.land/x/fresh@1.7.1/",
+ "preact": "https://esm.sh/preact@10.19.6",
+ "preact/": "https://esm.sh/preact@10.19.6/",
+ "@preact/signals": "https://esm.sh/*@preact/signals@1.2.2",
+ "@preact/signals-core": "https://esm.sh/*@preact/signals-core@1.5.1",
+ "tailwindcss": "npm:tailwindcss@3.4.1",
+ "tailwindcss/": "npm:/tailwindcss@3.4.1/",
+ "tailwindcss/plugin": "npm:/tailwindcss@3.4.1/plugin.js",
+ "tailwindcss/typography": "npm:@tailwindcss/typography@0.5.15",
+ "$std/dotenv/load": "jsr:@std/dotenv@0.225.2/load",
+ "$std/path/posix": "jsr:@std/path@1.0.6/posix",
+ "$std/path/join": "jsr:@std/path@1.0.6/join",
+ "$std/front-matter": "jsr:@std/front-matter@1.0.5",
+ "tabler_icons_tsx/": "https://deno.land/x/tabler_icons_tsx@0.0.4/tsx/",
+ "$gfm": "jsr:@deno/gfm@0.9.0"
},
- "compilerOptions": {
- "types": [
- "lume/types.ts"
- ]
- }
+ "compilerOptions": { "jsx": "react-jsx", "jsxImportSource": "preact" }
}
diff --git a/deno.lock b/deno.lock
deleted file mode 100644
index eb6bc98..0000000
--- a/deno.lock
+++ /dev/null
@@ -1,502 +0,0 @@
-{
- "version": "3",
- "packages": {
- "specifiers": {
- "jsr:@davidbonnet/astring@1.8.6": "jsr:@davidbonnet/astring@1.8.6",
- "jsr:@std/cli@0.224.7": "jsr:@std/cli@0.224.7",
- "jsr:@std/cli@^0.224.7": "jsr:@std/cli@0.224.7",
- "jsr:@std/collections@^1.0.4": "jsr:@std/collections@1.0.5",
- "jsr:@std/crypto@1.0.1": "jsr:@std/crypto@1.0.1",
- "jsr:@std/encoding@1.0.0-rc.2": "jsr:@std/encoding@1.0.0-rc.2",
- "jsr:@std/encoding@1.0.1": "jsr:@std/encoding@1.0.1",
- "jsr:@std/fmt@0.225.6": "jsr:@std/fmt@0.225.6",
- "jsr:@std/fmt@^0.225.4": "jsr:@std/fmt@0.225.6",
- "jsr:@std/fmt@^1.0.0-rc.1": "jsr:@std/fmt@1.0.0",
- "jsr:@std/front-matter@0.224.3": "jsr:@std/front-matter@0.224.3",
- "jsr:@std/fs@0.229.3": "jsr:@std/fs@0.229.3",
- "jsr:@std/fs@^1.0.0-rc.5": "jsr:@std/fs@1.0.1",
- "jsr:@std/html@1.0.0": "jsr:@std/html@1.0.0",
- "jsr:@std/http@0.224.5": "jsr:@std/http@0.224.5",
- "jsr:@std/io@^0.224.3": "jsr:@std/io@0.224.4",
- "jsr:@std/jsonc@0.224.3": "jsr:@std/jsonc@0.224.3",
- "jsr:@std/log@0.224.5": "jsr:@std/log@0.224.5",
- "jsr:@std/media-types@^1.0.0-rc.1": "jsr:@std/media-types@1.0.2",
- "jsr:@std/net@^0.224.3": "jsr:@std/net@0.224.5",
- "jsr:@std/path@1.0.0": "jsr:@std/path@1.0.0",
- "jsr:@std/path@1.0.0-rc.1": "jsr:@std/path@1.0.0-rc.1",
- "jsr:@std/path@1.0.0-rc.2": "jsr:@std/path@1.0.0-rc.2",
- "jsr:@std/streams@^0.224.5": "jsr:@std/streams@0.224.5",
- "jsr:@std/toml@1.0.0": "jsr:@std/toml@1.0.0",
- "jsr:@std/toml@^1.0.0-rc.3": "jsr:@std/toml@1.0.0",
- "jsr:@std/yaml@0.224.3": "jsr:@std/yaml@0.224.3",
- "jsr:@std/yaml@^1.0.0-rc.1": "jsr:@std/yaml@1.0.2",
- "npm:@js-temporal/polyfill@0.4.4": "npm:@js-temporal/polyfill@0.4.4",
- "npm:date-fns@3.6.0": "npm:date-fns@3.6.0",
- "npm:estree-walker@3.0.3": "npm:estree-walker@3.0.3",
- "npm:highlight.js@11.10.0": "npm:highlight.js@11.10.0",
- "npm:markdown-it-attrs@4.1.6": "npm:markdown-it-attrs@4.1.6_markdown-it@14.1.0",
- "npm:markdown-it-deflist@3.0.0": "npm:markdown-it-deflist@3.0.0",
- "npm:markdown-it@14.1.0": "npm:markdown-it@14.1.0",
- "npm:meriyah@4.5.0": "npm:meriyah@4.5.0",
- "npm:nunjucks@3.2.4": "npm:nunjucks@3.2.4",
- "npm:unidecode@1.1.0": "npm:unidecode@1.1.0"
- },
- "jsr": {
- "@davidbonnet/astring@1.8.6": {
- "integrity": "98b4914c8863cdf8c0ff83bb5c528caa67a8dca6020ad6234113499f00583e3a"
- },
- "@std/cli@0.224.7": {
- "integrity": "654ca6477518e5e3a0d3fabafb2789e92b8c0febf1a1d24ba4b567aba94b5977"
- },
- "@std/collections@1.0.5": {
- "integrity": "ab9eac23b57a0c0b89ba45134e61561f69f3d001f37235a248ed40be260c0c10"
- },
- "@std/crypto@1.0.1": {
- "integrity": "5d60e6412b2ce61193e2bb622cba02d34890b3d8c4eef3312e499a77329a6f94"
- },
- "@std/encoding@1.0.0-rc.2": {
- "integrity": "160d7674a20ebfbccdf610b3801fee91cf6e42d1c106dd46bbaf46e395cd35ef"
- },
- "@std/encoding@1.0.1": {
- "integrity": "5955c6c542ebb4ce6587c3b548dc71e07a6c27614f1976d1d3887b1196cf4e65"
- },
- "@std/fmt@0.225.6": {
- "integrity": "aba6aea27f66813cecfd9484e074a9e9845782ab0685c030e453a8a70b37afc8"
- },
- "@std/fmt@1.0.0": {
- "integrity": "8a95c9fdbb61559418ccbc0f536080cf43341655e1444f9d375a66886ceaaa3d"
- },
- "@std/front-matter@0.224.3": {
- "integrity": "983e98b6fc90d614540d2176350e4edf7b6ec067b384c03245e2e795b66de9bb",
- "dependencies": [
- "jsr:@std/toml@^1.0.0-rc.3",
- "jsr:@std/yaml@^1.0.0-rc.1"
- ]
- },
- "@std/fs@0.229.3": {
- "integrity": "783bca21f24da92e04c3893c9e79653227ab016c48e96b3078377ebd5222e6eb",
- "dependencies": [
- "jsr:@std/path@1.0.0-rc.1"
- ]
- },
- "@std/fs@1.0.1": {
- "integrity": "d6914ca2c21abe591f733b31dbe6331e446815e513e2451b3b9e472daddfefcb"
- },
- "@std/html@1.0.0": {
- "integrity": "389f2b8b0021ee75966003b307b849813a300d1c554cef8d69aec2d5d3922ff9"
- },
- "@std/http@0.224.5": {
- "integrity": "b03b5d1529f6c423badfb82f6640f9f2557b4034cd7c30655ba5bb447ff750a4",
- "dependencies": [
- "jsr:@std/cli@^0.224.7",
- "jsr:@std/encoding@1.0.0-rc.2",
- "jsr:@std/fmt@^0.225.4",
- "jsr:@std/media-types@^1.0.0-rc.1",
- "jsr:@std/net@^0.224.3",
- "jsr:@std/path@1.0.0-rc.2",
- "jsr:@std/streams@^0.224.5"
- ]
- },
- "@std/io@0.224.4": {
- "integrity": "bce1151765e4e70e376039fd72c71672b4d4aae363878a5ee3e58361b81197ec"
- },
- "@std/jsonc@0.224.3": {
- "integrity": "c10770a31489f5b85a3562d9b107c497666d8b6a49291ee2711d84da2616c2d6"
- },
- "@std/log@0.224.5": {
- "integrity": "4612a45189438441bbd923a4cad1cce5c44c6c4a039195a3e8d831ce38894eee",
- "dependencies": [
- "jsr:@std/fmt@^1.0.0-rc.1",
- "jsr:@std/fs@^1.0.0-rc.5",
- "jsr:@std/io@^0.224.3"
- ]
- },
- "@std/media-types@1.0.2": {
- "integrity": "abb78dc8f7d88141cba8c4d60fc1e8b421e5c7b0d7c84f2f708bc666cad46784"
- },
- "@std/net@0.224.5": {
- "integrity": "9c2ae90a5c3dc7771da5ae5e13b6f7d5d0b316c1954c5d53f2bfc1129fb757ff"
- },
- "@std/path@1.0.0": {
- "integrity": "77fcb858b6e38777d1154df0f02245ba0b07e2c40ca3c0eec57c9233188c2d21"
- },
- "@std/path@1.0.0-rc.1": {
- "integrity": "b8c00ae2f19106a6bb7cbf1ab9be52aa70de1605daeb2dbdc4f87a7cbaf10ff6"
- },
- "@std/path@1.0.0-rc.2": {
- "integrity": "39f20d37a44d1867abac8d91c169359ea6e942237a45a99ee1e091b32b921c7d"
- },
- "@std/streams@0.224.5": {
- "integrity": "bcde7818dd5460d474cdbd674b15f6638b9cd73cd64e52bd852fba2bd4d8ec91"
- },
- "@std/toml@1.0.0": {
- "integrity": "c9e37564eedd84084871c66238e00196ec67aa958e09a7f761b3f36273a7a8a5",
- "dependencies": [
- "jsr:@std/collections@^1.0.4"
- ]
- },
- "@std/yaml@0.224.3": {
- "integrity": "9da1ed0094f42ba24570b4d88a094b44a793ac7f2bc085c1939d3ac7e11cc0bb"
- },
- "@std/yaml@1.0.2": {
- "integrity": "b343ae4da47c8f22a04bcab687cf36fc2926b7fb2de8f8ef06fc59499e55b632"
- }
- },
- "npm": {
- "@js-temporal/polyfill@0.4.4": {
- "integrity": "sha512-2X6bvghJ/JAoZO52lbgyAPFj8uCflhTo2g7nkFzEQdXd/D8rEeD4HtmTEpmtGCva260fcd66YNXBOYdnmHqSOg==",
- "dependencies": {
- "jsbi": "jsbi@4.3.0",
- "tslib": "tslib@2.6.3"
- }
- },
- "@types/estree@1.0.5": {
- "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==",
- "dependencies": {}
- },
- "a-sync-waterfall@1.0.1": {
- "integrity": "sha512-RYTOHHdWipFUliRFMCS4X2Yn2X8M87V/OpSqWzKKOGhzqyUxzyVmhHDH9sAvG+ZuQf/TAOFsLCpMw09I1ufUnA==",
- "dependencies": {}
- },
- "argparse@2.0.1": {
- "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
- "dependencies": {}
- },
- "asap@2.0.6": {
- "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==",
- "dependencies": {}
- },
- "commander@5.1.0": {
- "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==",
- "dependencies": {}
- },
- "date-fns@3.6.0": {
- "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==",
- "dependencies": {}
- },
- "entities@4.5.0": {
- "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==",
- "dependencies": {}
- },
- "estree-walker@3.0.3": {
- "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==",
- "dependencies": {
- "@types/estree": "@types/estree@1.0.5"
- }
- },
- "highlight.js@11.10.0": {
- "integrity": "sha512-SYVnVFswQER+zu1laSya563s+F8VDGt7o35d4utbamowvUNLLMovFqwCLSocpZTz3MgaSRA1IbqRWZv97dtErQ==",
- "dependencies": {}
- },
- "jsbi@4.3.0": {
- "integrity": "sha512-SnZNcinB4RIcnEyZqFPdGPVgrg2AcnykiBy0sHVJQKHYeaLUvi3Exj+iaPpLnFVkDPZIV4U0yvgC9/R4uEAZ9g==",
- "dependencies": {}
- },
- "linkify-it@5.0.0": {
- "integrity": "sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==",
- "dependencies": {
- "uc.micro": "uc.micro@2.1.0"
- }
- },
- "markdown-it-attrs@4.1.6_markdown-it@14.1.0": {
- "integrity": "sha512-O7PDKZlN8RFMyDX13JnctQompwrrILuz2y43pW2GagcwpIIElkAdfeek+erHfxUOlXWPsjFeWmZ8ch1xtRLWpA==",
- "dependencies": {
- "markdown-it": "markdown-it@14.1.0"
- }
- },
- "markdown-it-deflist@3.0.0": {
- "integrity": "sha512-OxPmQ/keJZwbubjiQWOvKLHwpV2wZ5I3Smc81OjhwbfJsjdRrvD5aLTQxmZzzePeO0kbGzAo3Krk4QLgA8PWLg==",
- "dependencies": {}
- },
- "markdown-it@14.1.0": {
- "integrity": "sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==",
- "dependencies": {
- "argparse": "argparse@2.0.1",
- "entities": "entities@4.5.0",
- "linkify-it": "linkify-it@5.0.0",
- "mdurl": "mdurl@2.0.0",
- "punycode.js": "punycode.js@2.3.1",
- "uc.micro": "uc.micro@2.1.0"
- }
- },
- "mdurl@2.0.0": {
- "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==",
- "dependencies": {}
- },
- "meriyah@4.5.0": {
- "integrity": "sha512-Rbiu0QPIxTXgOXwiIpRVJfZRQ2FWyfzYrOGBs9SN5RbaXg1CN5ELn/plodwWwluX93yzc4qO/bNIen1ThGFCxw==",
- "dependencies": {}
- },
- "nunjucks@3.2.4": {
- "integrity": "sha512-26XRV6BhkgK0VOxfbU5cQI+ICFUtMLixv1noZn1tGU38kQH5A5nmmbk/O45xdyBhD1esk47nKrY0mvQpZIhRjQ==",
- "dependencies": {
- "a-sync-waterfall": "a-sync-waterfall@1.0.1",
- "asap": "asap@2.0.6",
- "commander": "commander@5.1.0"
- }
- },
- "punycode.js@2.3.1": {
- "integrity": "sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==",
- "dependencies": {}
- },
- "tslib@2.6.3": {
- "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==",
- "dependencies": {}
- },
- "uc.micro@2.1.0": {
- "integrity": "sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==",
- "dependencies": {}
- },
- "unidecode@1.1.0": {
- "integrity": "sha512-GIp57N6DVVJi8dpeIU6/leJGdv7W65ZSXFLFiNmxvexXkc0nXdqUvhA/qL9KqBKsILxMwg5MnmYNOIDJLb5JVA==",
- "dependencies": {}
- }
- }
- },
- "remote": {
- "https://deno.land/std@0.170.0/_util/asserts.ts": "d0844e9b62510f89ce1f9878b046f6a57bf88f208a10304aab50efcb48365272",
- "https://deno.land/std@0.170.0/_util/os.ts": "8a33345f74990e627b9dfe2de9b040004b08ea5146c7c9e8fe9a29070d193934",
- "https://deno.land/std@0.170.0/encoding/base64.ts": "8605e018e49211efc767686f6f687827d7f5fd5217163e981d8d693105640d7a",
- "https://deno.land/std@0.170.0/fmt/colors.ts": "03ad95e543d2808bc43c17a3dd29d25b43d0f16287fe562a0be89bf632454a12",
- "https://deno.land/std@0.170.0/path/_constants.ts": "df1db3ffa6dd6d1252cc9617e5d72165cd2483df90e93833e13580687b6083c3",
- "https://deno.land/std@0.170.0/path/_interface.ts": "ee3b431a336b80cf445441109d089b70d87d5e248f4f90ff906820889ecf8d09",
- "https://deno.land/std@0.170.0/path/_util.ts": "d16be2a16e1204b65f9d0dfc54a9bc472cafe5f4a190b3c8471ec2016ccd1677",
- "https://deno.land/std@0.170.0/path/common.ts": "bee563630abd2d97f99d83c96c2fa0cca7cee103e8cb4e7699ec4d5db7bd2633",
- "https://deno.land/std@0.170.0/path/glob.ts": "81cc6c72be002cd546c7a22d1f263f82f63f37fe0035d9726aa96fc8f6e4afa1",
- "https://deno.land/std@0.170.0/path/mod.ts": "cf7cec7ac11b7048bb66af8ae03513e66595c279c65cfa12bfc07d9599608b78",
- "https://deno.land/std@0.170.0/path/posix.ts": "b859684bc4d80edfd4cad0a82371b50c716330bed51143d6dcdbe59e6278b30c",
- "https://deno.land/std@0.170.0/path/separator.ts": "fe1816cb765a8068afb3e8f13ad272351c85cbc739af56dacfc7d93d710fe0f9",
- "https://deno.land/std@0.170.0/path/win32.ts": "7cebd2bda6657371adc00061a1d23fdd87bcdf64b4843bb148b0b24c11b40f69",
- "https://deno.land/x/cliffy@v0.25.7/_utils/distance.ts": "02af166952c7c358ac83beae397aa2fbca4ad630aecfcd38d92edb1ea429f004",
- "https://deno.land/x/cliffy@v0.25.7/ansi/ansi.ts": "7f43d07d31dd7c24b721bb434c39cbb5132029fa4be3dd8938873065f65e5810",
- "https://deno.land/x/cliffy@v0.25.7/ansi/ansi_escapes.ts": "885f61f343223f27b8ec69cc138a54bea30542924eacd0f290cd84edcf691387",
- "https://deno.land/x/cliffy@v0.25.7/ansi/chain.ts": "31fb9fcbf72fed9f3eb9b9487270d2042ccd46a612d07dd5271b1a80ae2140a0",
- "https://deno.land/x/cliffy@v0.25.7/ansi/colors.ts": "5f71993af5bd1aa0a795b15f41692d556d7c89584a601fed75997df844b832c9",
- "https://deno.land/x/cliffy@v0.25.7/ansi/cursor_position.ts": "d537491e31d9c254b208277448eff92ff7f55978c4928dea363df92c0df0813f",
- "https://deno.land/x/cliffy@v0.25.7/ansi/deps.ts": "0f35cb7e91868ce81561f6a77426ea8bc55dc15e13f84c7352f211023af79053",
- "https://deno.land/x/cliffy@v0.25.7/ansi/mod.ts": "bb4e6588e6704949766205709463c8c33b30fec66c0b1846bc84a3db04a4e075",
- "https://deno.land/x/cliffy@v0.25.7/ansi/tty.ts": "8fb064c17ead6cdf00c2d3bc87a9fd17b1167f2daa575c42b516f38bdb604673",
- "https://deno.land/x/cliffy@v0.25.7/command/_errors.ts": "a9bd23dc816b32ec96c9b8f3057218241778d8c40333b43341138191450965e5",
- "https://deno.land/x/cliffy@v0.25.7/command/_utils.ts": "9ab3d69fabab6c335b881b8a5229cbd5db0c68f630a1c307aff988b6396d9baf",
- "https://deno.land/x/cliffy@v0.25.7/command/command.ts": "a2b83c612acd65c69116f70dec872f6da383699b83874b70fcf38cddf790443f",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/_bash_completions_generator.ts": "43b4abb543d4dc60233620d51e69d82d3b7c44e274e723681e0dce2a124f69f9",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/_fish_completions_generator.ts": "d0289985f5cf0bd288c05273bfa286b24c27feb40822eb7fd9d7fee64e6580e8",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/_zsh_completions_generator.ts": "14461eb274954fea4953ee75938821f721da7da607dc49bcc7db1e3f33a207bd",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/bash.ts": "053aa2006ec327ccecacb00ba28e5eb836300e5c1bec1b3cfaee9ddcf8189756",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/complete.ts": "58df61caa5e6220ff2768636a69337923ad9d4b8c1932aeb27165081c4d07d8b",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/fish.ts": "9938beaa6458c6cf9e2eeda46a09e8cd362d4f8c6c9efe87d3cd8ca7477402a5",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/mod.ts": "aeef7ec8e319bb157c39a4bab8030c9fe8fa327b4c1e94c9c1025077b45b40c0",
- "https://deno.land/x/cliffy@v0.25.7/command/completions/zsh.ts": "8b04ab244a0b582f7927d405e17b38602428eeb347a9968a657e7ea9f40e721a",
- "https://deno.land/x/cliffy@v0.25.7/command/deprecated.ts": "bbe6670f1d645b773d04b725b8b8e7814c862c9f1afba460c4d599ffe9d4983c",
- "https://deno.land/x/cliffy@v0.25.7/command/deps.ts": "275b964ce173770bae65f6b8ebe9d2fd557dc10292cdd1ed3db1735f0d77fa1d",
- "https://deno.land/x/cliffy@v0.25.7/command/help/_help_generator.ts": "f7c349cb2ddb737e70dc1f89bcb1943ca9017a53506be0d4138e0aadb9970a49",
- "https://deno.land/x/cliffy@v0.25.7/command/help/mod.ts": "09d74d3eb42d21285407cda688074c29595d9c927b69aedf9d05ff3f215820d3",
- "https://deno.land/x/cliffy@v0.25.7/command/mod.ts": "d0a32df6b14028e43bb2d41fa87d24bc00f9662a44e5a177b3db02f93e473209",
- "https://deno.land/x/cliffy@v0.25.7/command/type.ts": "24e88e3085e1574662b856ccce70d589959648817135d4469fab67b9cce1b364",
- "https://deno.land/x/cliffy@v0.25.7/command/types.ts": "ae02eec0ed7a769f7dba2dd5d3a931a61724b3021271b1b565cf189d9adfd4a0",
- "https://deno.land/x/cliffy@v0.25.7/command/types/action_list.ts": "33c98d449617c7a563a535c9ceb3741bde9f6363353fd492f90a74570c611c27",
- "https://deno.land/x/cliffy@v0.25.7/command/types/boolean.ts": "3879ec16092b4b5b1a0acb8675f8c9250c0b8a972e1e4c7adfba8335bd2263ed",
- "https://deno.land/x/cliffy@v0.25.7/command/types/child_command.ts": "f1fca390c7fbfa7a713ca15ef55c2c7656bcbb394d50e8ef54085bdf6dc22559",
- "https://deno.land/x/cliffy@v0.25.7/command/types/command.ts": "325d0382e383b725fd8d0ef34ebaeae082c5b76a1f6f2e843fee5dbb1a4fe3ac",
- "https://deno.land/x/cliffy@v0.25.7/command/types/enum.ts": "2178345972adf7129a47e5f02856ca3e6852a91442a1c78307dffb8a6a3c6c9f",
- "https://deno.land/x/cliffy@v0.25.7/command/types/file.ts": "8618f16ac9015c8589cbd946b3de1988cc4899b90ea251f3325c93c46745140e",
- "https://deno.land/x/cliffy@v0.25.7/command/types/integer.ts": "29864725fd48738579d18123d7ee78fed37515e6dc62146c7544c98a82f1778d",
- "https://deno.land/x/cliffy@v0.25.7/command/types/number.ts": "aeba96e6f470309317a16b308c82e0e4138a830ec79c9877e4622c682012bc1f",
- "https://deno.land/x/cliffy@v0.25.7/command/types/string.ts": "e4dadb08a11795474871c7967beab954593813bb53d9f69ea5f9b734e43dc0e0",
- "https://deno.land/x/cliffy@v0.25.7/command/upgrade/mod.ts": "17e2df3b620905583256684415e6c4a31e8de5c59066eb6d6c9c133919292dc4",
- "https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider.ts": "d6fb846043232cbd23c57d257100c7fc92274984d75a5fead0f3e4266dc76ab8",
- "https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider/deno_land.ts": "24f8d82e38c51e09be989f30f8ad21f9dd41ac1bb1973b443a13883e8ba06d6d",
- "https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider/github.ts": "99e1b133dd446c6aa79f69e69c46eb8bc1c968dd331c2a7d4064514a317c7b59",
- "https://deno.land/x/cliffy@v0.25.7/command/upgrade/provider/nest_land.ts": "0e07936cea04fa41ac9297f32d87f39152ea873970c54cb5b4934b12fee1885e",
- "https://deno.land/x/cliffy@v0.25.7/command/upgrade/upgrade_command.ts": "3640a287d914190241ea1e636774b1b4b0e1828fa75119971dd5304784061e05",
- "https://deno.land/x/cliffy@v0.25.7/flags/_errors.ts": "f1fbb6bfa009e7950508c9d491cfb4a5551027d9f453389606adb3f2327d048f",
- "https://deno.land/x/cliffy@v0.25.7/flags/_utils.ts": "340d3ecab43cde9489187e1f176504d2c58485df6652d1cdd907c0e9c3ce4cc2",
- "https://deno.land/x/cliffy@v0.25.7/flags/_validate_flags.ts": "16eb5837986c6f6f7620817820161a78d66ce92d690e3697068726bbef067452",
- "https://deno.land/x/cliffy@v0.25.7/flags/deprecated.ts": "a72a35de3cc7314e5ebea605ca23d08385b218ef171c32a3f135fb4318b08126",
- "https://deno.land/x/cliffy@v0.25.7/flags/flags.ts": "68a9dfcacc4983a84c07ba19b66e5e9fccd04389fad215210c60fb414cc62576",
- "https://deno.land/x/cliffy@v0.25.7/flags/mod.ts": "b21c2c135cd2437cc16245c5f168a626091631d6d4907ad10db61c96c93bdb25",
- "https://deno.land/x/cliffy@v0.25.7/flags/types.ts": "7452ea5296758fb7af89930349ce40d8eb9a43b24b3f5759283e1cb5113075fd",
- "https://deno.land/x/cliffy@v0.25.7/flags/types/boolean.ts": "4c026dd66ec9c5436860dc6d0241427bdb8d8e07337ad71b33c08193428a2236",
- "https://deno.land/x/cliffy@v0.25.7/flags/types/integer.ts": "b60d4d590f309ddddf066782d43e4dc3799f0e7d08e5ede7dc62a5ee94b9a6d9",
- "https://deno.land/x/cliffy@v0.25.7/flags/types/number.ts": "610936e2d29de7c8c304b65489a75ebae17b005c6122c24e791fbed12444d51e",
- "https://deno.land/x/cliffy@v0.25.7/flags/types/string.ts": "e89b6a5ce322f65a894edecdc48b44956ec246a1d881f03e97bbda90dd8638c5",
- "https://deno.land/x/cliffy@v0.25.7/keycode/key_code.ts": "c4ab0ffd102c2534962b765ded6d8d254631821bf568143d9352c1cdcf7a24be",
- "https://deno.land/x/cliffy@v0.25.7/keycode/key_codes.ts": "917f0a2da0dbace08cf29bcfdaaa2257da9fe7e705fff8867d86ed69dfb08cfe",
- "https://deno.land/x/cliffy@v0.25.7/keycode/mod.ts": "292d2f295316c6e0da6955042a7b31ab2968ff09f2300541d00f05ed6c2aa2d4",
- "https://deno.land/x/cliffy@v0.25.7/mod.ts": "e3515ccf6bd4e4ac89322034e07e2332ed71901e4467ee5bc9d72851893e167b",
- "https://deno.land/x/cliffy@v0.25.7/prompt/_generic_input.ts": "737cff2de02c8ce35250f5dd79c67b5fc176423191a2abd1f471a90dd725659e",
- "https://deno.land/x/cliffy@v0.25.7/prompt/_generic_list.ts": "79b301bf09eb19f0d070d897f613f78d4e9f93100d7e9a26349ef0bfaa7408d2",
- "https://deno.land/x/cliffy@v0.25.7/prompt/_generic_prompt.ts": "8630ce89a66d83e695922df41721cada52900b515385d86def597dea35971bb2",
- "https://deno.land/x/cliffy@v0.25.7/prompt/_generic_suggestions.ts": "2a8b619f91e8f9a270811eff557f10f1343a444a527b5fc22c94de832939920c",
- "https://deno.land/x/cliffy@v0.25.7/prompt/_utils.ts": "676cca30762656ed1a9bcb21a7254244278a23ffc591750e98a501644b6d2df3",
- "https://deno.land/x/cliffy@v0.25.7/prompt/checkbox.ts": "e5a5a9adbb86835dffa2afbd23c6f7a8fe25a9d166485388ef25aba5dc3fbf9e",
- "https://deno.land/x/cliffy@v0.25.7/prompt/confirm.ts": "94c8e55de3bbcd53732804420935c432eab29945497d1c47c357d236a89cb5f6",
- "https://deno.land/x/cliffy@v0.25.7/prompt/deps.ts": "4c38ab18e55a792c9a136c1c29b2b6e21ea4820c45de7ef4cf517ce94012c57d",
- "https://deno.land/x/cliffy@v0.25.7/prompt/figures.ts": "26af0fbfe21497220e4b887bb550fab997498cde14703b98e78faf370fbb4b94",
- "https://deno.land/x/cliffy@v0.25.7/prompt/input.ts": "ee45532e0a30c2463e436e08ae291d79d1c2c40872e17364c96d2b97c279bf4d",
- "https://deno.land/x/cliffy@v0.25.7/prompt/list.ts": "6780427ff2a932a48c9b882d173c64802081d6cdce9ff618d66ba6504b6abc50",
- "https://deno.land/x/cliffy@v0.25.7/prompt/mod.ts": "195aed14d10d279914eaa28c696dec404d576ca424c097a5bc2b4a7a13b66c89",
- "https://deno.land/x/cliffy@v0.25.7/prompt/number.ts": "015305a76b50138234dde4fd50eb886c6c7c0baa1b314caf811484644acdc2cf",
- "https://deno.land/x/cliffy@v0.25.7/prompt/prompt.ts": "0e7f6a1d43475ee33fb25f7d50749b2f07fc0bcddd9579f3f9af12d05b4a4412",
- "https://deno.land/x/cliffy@v0.25.7/prompt/secret.ts": "58745f5231fb2c44294c4acf2511f8c5bfddfa1e12f259580ff90dedea2703d6",
- "https://deno.land/x/cliffy@v0.25.7/prompt/select.ts": "1e982eae85718e4e15a3ee10a5ae2233e532d7977d55888f3a309e8e3982b784",
- "https://deno.land/x/cliffy@v0.25.7/prompt/toggle.ts": "842c3754a40732f2e80bcd4670098713e402e64bd930e6cab2b787f7ad4d931a",
- "https://deno.land/x/cliffy@v0.25.7/table/border.ts": "2514abae4e4f51eda60a5f8c927ba24efd464a590027e900926b38f68e01253c",
- "https://deno.land/x/cliffy@v0.25.7/table/cell.ts": "1d787d8006ac8302020d18ec39f8d7f1113612c20801b973e3839de9c3f8b7b3",
- "https://deno.land/x/cliffy@v0.25.7/table/deps.ts": "5b05fa56c1a5e2af34f2103fd199e5f87f0507549963019563eae519271819d2",
- "https://deno.land/x/cliffy@v0.25.7/table/layout.ts": "46bf10ae5430cf4fbb92f23d588230e9c6336edbdb154e5c9581290562b169f4",
- "https://deno.land/x/cliffy@v0.25.7/table/mod.ts": "e74f69f38810ee6139a71132783765feb94436a6619c07474ada45b465189834",
- "https://deno.land/x/cliffy@v0.25.7/table/row.ts": "5f519ba7488d2ef76cbbf50527f10f7957bfd668ce5b9169abbc44ec88302645",
- "https://deno.land/x/cliffy@v0.25.7/table/table.ts": "ec204c9d08bb3ff1939c5ac7412a4c9ed7d00925d4fc92aff9bfe07bd269258d",
- "https://deno.land/x/cliffy@v0.25.7/table/utils.ts": "187bb7dcbcfb16199a5d906113f584740901dfca1007400cba0df7dcd341bc29",
- "https://deno.land/x/deno_dom@v0.1.47/build/deno-wasm/deno-wasm.js": "d6841a06342eb6a2798ef28de79ad69c0f2fa349fa04d3ca45e5fcfbf50a9340",
- "https://deno.land/x/deno_dom@v0.1.47/deno-dom-wasm.ts": "0669396686fb207f1354af33df6aabe2189b4eceafdb1bf7f3d6bbb2637b6b03",
- "https://deno.land/x/deno_dom@v0.1.47/src/api.ts": "0ff5790f0a3eeecb4e00b7d8fbfa319b165962cf6d0182a65ba90f158d74f7d7",
- "https://deno.land/x/deno_dom@v0.1.47/src/constructor-lock.ts": "0e7b297e8b9cf921a3b0d3a692ec5fb462c5afc47ec554292e20090b9e16b40a",
- "https://deno.land/x/deno_dom@v0.1.47/src/deserialize.ts": "1cf4096678d8afed8ed28dbad690504c4d2c28149ba768b26eacd1416873425b",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/document-fragment.ts": "1c7352a3c816587ed7fad574b42636198f680f17abc3836fcfe7799b31e7718f",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/document.ts": "0b07049fd614c1d460240d1bf3e051084a58105e54887af90f45bc615965f1c6",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/dom-parser.ts": "784ee0e766d4a01e14420f328053fd3a0016c6b40ee442edc3ae80f5d9777927",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/element.ts": "d1a006e4f7cd1eb050838a96ba93a254e5cf4136236c6454ab6e8ffedcf395fd",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/elements/html-template-element.ts": "740b97a5378c9a14cccf3429299846eda240b613013e2d2d7f20b393897453c2",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/html-collection.ts": "eedc0b097612ef420d975df6924850a36a4829b35aafa4c92078609a15a52f08",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/node-list.ts": "aa5d4c2297fadfb1b392ffa0e5c33a6fb8c198e8875bb853c2fc3fc49807701d",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/node.ts": "4ee9bc98f1d5b31a9a36674a9f3e1d6e25b9125b1532c42f84c4624816fe8435",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/selectors/custom-api.ts": "852696bd58e534bc41bd3be9e2250b60b67cd95fd28ed16b1deff1d548531a71",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/selectors/nwsapi-types.ts": "c43b36c36acc5d32caabaa54fda8c9d239b2b0fcbce9a28efb93c84aa1021698",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/selectors/nwsapi.js": "985d7d8fc1eabbb88946b47a1c44c1b2d4aa79ff23c21424219f1528fa27a2ff",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/selectors/selectors.ts": "83eab57be2290fb48e3130533448c93c6c61239f2a2f3b85f1917f80ca0fdc75",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/selectors/sizzle-types.ts": "78149e2502409989ce861ed636b813b059e16bc267bb543e7c2b26ef43e4798b",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/selectors/sizzle.js": "c3aed60c1045a106d8e546ac2f85cc82e65f62d9af2f8f515210b9212286682a",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/utils-types.ts": "96db30e3e4a75b194201bb9fa30988215da7f91b380fca6a5143e51ece2a8436",
- "https://deno.land/x/deno_dom@v0.1.47/src/dom/utils.ts": "4c6206516fb8f61f37a209c829e812c4f5a183e46d082934dd14c91bde939263",
- "https://deno.land/x/deno_dom@v0.1.47/src/parser.ts": "e06b2300d693e6ae7564e53dfa5c9a9e97fdb8c044c39c52c8b93b5d60860be3",
- "https://deno.land/x/lume@v2.2.4/cli.ts": "71f6e24caf5eb661fb1b903ed6a914718a08ee6711daa689dc61fa5e5a37c54c",
- "https://deno.land/x/lume@v2.2.4/cli/build.ts": "4a280da27631beca8f57a459a3bd6a9d4f83316d95d3886a3bc43a65af857cd6",
- "https://deno.land/x/lume@v2.2.4/cli/cms.ts": "ba10b3f1cc44f5ec172c72c6bbe1da99bac97c0e2c0f214d1aa8e1a4ce200464",
- "https://deno.land/x/lume@v2.2.4/cli/create.ts": "f4173fd79c6a97480839e1bd47a0ec8c79de1f24d2e92c83baad637c476c9c01",
- "https://deno.land/x/lume@v2.2.4/cli/run.ts": "6f60a8c03b085ed71e67c595d02428259526db6095f41389d3933d98433e9f0c",
- "https://deno.land/x/lume@v2.2.4/cli/upgrade.ts": "a11e7c9024f78c2e7376c57b4a99e389dbf490769779d2d37a4a3ccd6ef27d9e",
- "https://deno.land/x/lume@v2.2.4/core/component_loader.ts": "da80bf80a168d0b91b59eb3449fbf62627d8bf67879df34e71970616d47ce2ec",
- "https://deno.land/x/lume@v2.2.4/core/data_loader.ts": "8698a9e9b1aac27147dc835ba89a0e30828c81338eceae86630607d78f146215",
- "https://deno.land/x/lume@v2.2.4/core/events.ts": "e4fd1786eb7dd4a041d7d922779b9edf1ee89e51fd17ba5e756f380879ccb557",
- "https://deno.land/x/lume@v2.2.4/core/file.ts": "d8d340e53ad9c0515ce676ada5586423556f986b999737cadcc3d62b102e7c1e",
- "https://deno.land/x/lume@v2.2.4/core/formats.ts": "24d9f5ccf384b2474f457cc0d3855e6ad411ded0d6acf4afe36547ba93fc706f",
- "https://deno.land/x/lume@v2.2.4/core/fs.ts": "28e4eb4da6809f8128ce0f1d79a35c405403d10dad223b49faf21d356cef3205",
- "https://deno.land/x/lume@v2.2.4/core/loaders/binary.ts": "bb1e1cf3faac49f6007dc6814168dc0f633da17356db18e68862e4b2a87a3f33",
- "https://deno.land/x/lume@v2.2.4/core/loaders/json.ts": "632e840340edf7d79091fb37474a1cbf86dd2d218090fb6f6c0420f5f5e9c2ce",
- "https://deno.land/x/lume@v2.2.4/core/loaders/module.ts": "abcb210fa6724b83407407cd0f7ef90462b35a2017bc135a3d124dd7f38843f6",
- "https://deno.land/x/lume@v2.2.4/core/loaders/text.ts": "42860fc3482651fa6cfba18a734bb548d6e6e1163bf1015c2abc447ab150acbd",
- "https://deno.land/x/lume@v2.2.4/core/loaders/toml.ts": "72ddfef2deea62815c28e27faa2c5356e09b3109e9547e47a6defea3d3332452",
- "https://deno.land/x/lume@v2.2.4/core/loaders/yaml.ts": "241dc41fbe51b92e38dc748eda614c35d80fb8c63a6d40253453c6bb78c9c47e",
- "https://deno.land/x/lume@v2.2.4/core/processors.ts": "ce9b97307740723afd86d1773e946981a96769189ba6acd649b412e48552045d",
- "https://deno.land/x/lume@v2.2.4/core/renderer.ts": "b1879895f7544326e61e95a6413689975e79eabae0c48ca5912f06d2b4afde43",
- "https://deno.land/x/lume@v2.2.4/core/scopes.ts": "dbdf93d7a9cead84833779e974f190b1379356ec7c0ccd34aa92f917c2cdd2f9",
- "https://deno.land/x/lume@v2.2.4/core/scripts.ts": "286969b120d2290ba57a7fdd9b37e587aacf4e4162d92f51f1f1e9e18c864f30",
- "https://deno.land/x/lume@v2.2.4/core/searcher.ts": "db2ba1841be3bf71c51c9c316fc5ea2f8be9ba71b74347c303ae569e7076cab9",
- "https://deno.land/x/lume@v2.2.4/core/server.ts": "1d8b465bd9ee345cf7332450727709c5ef5babe305cabda3a15efe3f1c73f4b6",
- "https://deno.land/x/lume@v2.2.4/core/site.ts": "b88d6b68f92534dd01baa98b4baaf9dcc228f41bdd53e9337b40539126356007",
- "https://deno.land/x/lume@v2.2.4/core/slugifier.ts": "70427c98d32533171933304d34867c15d6b7bcfd48c7d1e0347184b8c4fb8b8e",
- "https://deno.land/x/lume@v2.2.4/core/source.ts": "5b866c68c7275e9fd195c0461b2f7c8907bf3772b4bd4bbe332b21613623a8ae",
- "https://deno.land/x/lume@v2.2.4/core/utils/cli_options.ts": "0e48094ef8b89502c53fa597e01238c2ca972f65d2b9b219cca42a3988cba3c6",
- "https://deno.land/x/lume@v2.2.4/core/utils/concurrent.ts": "cb0775b3d95f3faa356aa3a3e489dccef8807ed93cc4f84fcf5bc81e87c29504",
- "https://deno.land/x/lume@v2.2.4/core/utils/data_values.ts": "40cc18575c35d64797b06fb8638920f54d22c650c50e8760756a7ccbaa37da75",
- "https://deno.land/x/lume@v2.2.4/core/utils/date.ts": "b989369496b9a6fba04cf1dee7f58f157911ae273aa3ca16abf9a047e4e091c2",
- "https://deno.land/x/lume@v2.2.4/core/utils/digest.ts": "445b387983391af73269686292a65bb677119a25a327776885ff1242a9397ad8",
- "https://deno.land/x/lume@v2.2.4/core/utils/dom.ts": "d406fb5c48ceb012286d0aff66ef635261eda666de2ce07538c0cf9366b8fecd",
- "https://deno.land/x/lume@v2.2.4/core/utils/env.ts": "d2440f14ad27e65b0a42b35a52f59ccce0430dd52950bd5df103bb1c9ba1a4a7",
- "https://deno.land/x/lume@v2.2.4/core/utils/generator.ts": "1e664e9fd4c469e38a0acf5c94fd49dac4f38cb6334563ea4b7fc498b5958877",
- "https://deno.land/x/lume@v2.2.4/core/utils/log.ts": "c04df547a673aaecaaeb1f5d90f2a973c1cca9e4545353e94b3cd0074a8ec2b4",
- "https://deno.land/x/lume@v2.2.4/core/utils/lume_config.ts": "344bafe9bdd5b69b44d3106de90cbd822dcc21f2916261dddde7eb2b94f336b1",
- "https://deno.land/x/lume@v2.2.4/core/utils/lume_version.ts": "96ce8c0144b5adbc170f388b60be706244d1bd100413e748e9cf23878838c87c",
- "https://deno.land/x/lume@v2.2.4/core/utils/merge_data.ts": "f4771c4f027b17487bf9a33bc2b04701a97f0578fd4a7feb31809cc119e5ee63",
- "https://deno.land/x/lume@v2.2.4/core/utils/net.ts": "7827473a96b28950ab8083582a1f810e56ab265c28196494d9d714f1e0c17e8a",
- "https://deno.land/x/lume@v2.2.4/core/utils/object.ts": "e00ee6e91264064772c87e69e128a09ba0e30c2c41be4a5302881f59f456fc31",
- "https://deno.land/x/lume@v2.2.4/core/utils/page_date.ts": "096b21d1832c74bc338c8d8d8762f1f5106259b73e6b2caa72fb50986d4f1f5b",
- "https://deno.land/x/lume@v2.2.4/core/utils/page_url.ts": "99da7e9e2b8ba0aebb4412ef7d4e1c89bc47ac4c59e34db4a9a4f4108812f4ca",
- "https://deno.land/x/lume@v2.2.4/core/utils/path.ts": "a7bae3ad1ff3c9d1d838b044c9d4d4a0410f657cde493f090241345429e833f2",
- "https://deno.land/x/lume@v2.2.4/core/utils/read.ts": "e096b1f37f8f0a6820e6ee00af1832d133598d55c961b226d057a5467207c5cd",
- "https://deno.land/x/lume@v2.2.4/core/watcher.ts": "2487018b7b860fec08194b6b46ca3793852e2bf72ac9479ef513624b085becdc",
- "https://deno.land/x/lume@v2.2.4/core/writer.ts": "381004fb3d7b1fc3791177d55ce7693d2e3ff34a19df20cc6b10e3b5a8bb07ec",
- "https://deno.land/x/lume@v2.2.4/deps/cli.ts": "e34b3d46e76d008815e9304d47daa4cf1a46c19c392fab07ac645af21556a6e3",
- "https://deno.land/x/lume@v2.2.4/deps/cliffy.ts": "faff0c2ca187ec9fd1ad8660141f85b9d05b5c36bab25b40eb5038c02590a310",
- "https://deno.land/x/lume@v2.2.4/deps/colors.ts": "5e66e72b2a8b3fd4ac02852242d70a6626bc9714c2943f57ed1d88eecb175e54",
- "https://deno.land/x/lume@v2.2.4/deps/crypto.ts": "c7535e67f58cff572e68a75034904eef811a38018c10334bfb1ba66585c36272",
- "https://deno.land/x/lume@v2.2.4/deps/date.ts": "fdd2d83d96ff02b486aca730e6fef1c687422c950ecc537c17775c758bd1851a",
- "https://deno.land/x/lume@v2.2.4/deps/dom.ts": "7f47d1462127c62ecc8571434fe55639a5a3936ecb8b38476cf560e2b1283da2",
- "https://deno.land/x/lume@v2.2.4/deps/front_matter.ts": "4f8e04bdc087178bb0e9d7bdf1bb16e96ed72eef6eb74b5fd607cb747ab2adc6",
- "https://deno.land/x/lume@v2.2.4/deps/fs.ts": "25931f53810dfa7780b9edecd8f47b88f7a8037377de78d7c1bd659d1d3de5e7",
- "https://deno.land/x/lume@v2.2.4/deps/hex.ts": "14e7b73249f30c0f972a69bffd4a5a50b8c845fa48519cbbbb0af0b90876432c",
- "https://deno.land/x/lume@v2.2.4/deps/highlight.ts": "e9a13912eb5884fce7711457a1529206cbc0a9b6ddc5db4ecabc219af6a9a910",
- "https://deno.land/x/lume@v2.2.4/deps/http.ts": "ed5acf3edccd6fed92572e40d4b8db5268722c760107283da0cdd78d9a462f68",
- "https://deno.land/x/lume@v2.2.4/deps/init.ts": "05d45af66ebdfe63e43540618f51ece8f99d98dc49de890f10eeb43abe9ed0f3",
- "https://deno.land/x/lume@v2.2.4/deps/jsonc.ts": "00f38fabf366ceb34cd7ad8764336b873d158b982e46db76dc3c3c2be3cba2bf",
- "https://deno.land/x/lume@v2.2.4/deps/log.ts": "d0b57a4e126597580e4815da6b204b6f1d88cc1ccd8b8c7938ff5722ade4df9b",
- "https://deno.land/x/lume@v2.2.4/deps/markdown_it.ts": "5da22a23e59f86bb7f0a0aa7c9cb9012a2444b8c3a0896d92a07492626a8c21f",
- "https://deno.land/x/lume@v2.2.4/deps/nunjucks.ts": "55e88a22192b3d87ac4cde3dcb3fe23db610bc4f7e373c1ca6df9610aa2ac632",
- "https://deno.land/x/lume@v2.2.4/deps/path.ts": "3790d802bc4fea222223896ae9cf87455664b707b891b24922cd1ee461ba02c4",
- "https://deno.land/x/lume@v2.2.4/deps/temporal.ts": "1958b134c4186b0ab39316fa33ba19d1a4203e2ea445080429d60d296b91a552",
- "https://deno.land/x/lume@v2.2.4/deps/toml.ts": "944a3d075d15d0330a1782e239cb945c86f1f1b47f0db4fed5b8bc5ec282a6e6",
- "https://deno.land/x/lume@v2.2.4/deps/unidecode.ts": "e476000bf9278edd64eb79a426ec68ac45e1c691a114ee07f9b89b4d30ffca1c",
- "https://deno.land/x/lume@v2.2.4/deps/vento.ts": "18e72865672eb5e7203e31e6f5df61ef411a13c468ecf59029e4c459869ef091",
- "https://deno.land/x/lume@v2.2.4/deps/xml.ts": "bf22a6d95d680fa2f3f2f111a6676a42f972dd4ed2e7b93af27024c5c5aabd39",
- "https://deno.land/x/lume@v2.2.4/deps/yaml.ts": "71d13bb27017f35e521be92ae8b32e17eec118c1141e88790bbc6516983b3692",
- "https://deno.land/x/lume@v2.2.4/middlewares/logger.ts": "84fb60e1631cd839053eaaba7b3b802eab7d320dfd1b940d982aa1ae5951a85c",
- "https://deno.land/x/lume@v2.2.4/middlewares/no_cache.ts": "c576ae2323c8b5657681721377c806672d5e1811d8cf35fba5efebc2645b37ae",
- "https://deno.land/x/lume@v2.2.4/middlewares/no_cors.ts": "9e0344efcc9a541e7b6845250d0a19101ce5762d6668710a38a28d550e1eeb42",
- "https://deno.land/x/lume@v2.2.4/middlewares/not_found.ts": "0fcd2da81a9573faf3f6f650f8e126ab5600bf0dd0b49b211303274b5d9afa4e",
- "https://deno.land/x/lume@v2.2.4/middlewares/reload.ts": "7f013ca1c55df8ce8ad2264bdb3cc2fd85a540cc86f9caf93e6983c2ea06b994",
- "https://deno.land/x/lume@v2.2.4/middlewares/reload_client.js": "34d75e01503fae8180796de882af42b1125fac88f22a010a99d5548de1ba7d72",
- "https://deno.land/x/lume@v2.2.4/mod.ts": "0f7afe1e73472bee8fb6dc21d616f9c055a1cffd3a3744f2005b8a6ccfbf8aed",
- "https://deno.land/x/lume@v2.2.4/plugins/base_path.ts": "ab451b1c6911fbf4f3babf1e41e31500e3402e31b6a0b810418a2f3e1052ccdb",
- "https://deno.land/x/lume@v2.2.4/plugins/code_highlight.ts": "086b45f6faeeeac4f1ee01c216e1ddb8750149a499633d9eb43988d7880aadf0",
- "https://deno.land/x/lume@v2.2.4/plugins/date.ts": "52c0928ad1e828ea3249af7d7f09eeca30b95d572967f31b97828fd419b7ff71",
- "https://deno.land/x/lume@v2.2.4/plugins/json.ts": "f6429bbd865e3666ef3385fd205fcc92df02ca2c0f74f20baa5c0798a81e1642",
- "https://deno.land/x/lume@v2.2.4/plugins/markdown.ts": "b0f224dcffa0abeb30af178d7ec21f50515c2a7ccd42a3347aac3bea53c4ca27",
- "https://deno.land/x/lume@v2.2.4/plugins/metas.ts": "26dada1735837cd1fa1602a92f5c18f095bcb78e3e009015c0db8a6a76fc41f8",
- "https://deno.land/x/lume@v2.2.4/plugins/modify_urls.ts": "f2319fd98d60578fe78f4c197aa5d98785234732bbd2287e78a47d15d4a2b641",
- "https://deno.land/x/lume@v2.2.4/plugins/modules.ts": "19a66398a5494f506458e48b8443a7c4700b7577e8fcc0818c39b1d0530c8950",
- "https://deno.land/x/lume@v2.2.4/plugins/nunjucks.ts": "37253aa01e5c7d6a2fe584f5599c972b75a8a3a235d53bf8ca56e0a9b8b88b3d",
- "https://deno.land/x/lume@v2.2.4/plugins/paginate.ts": "e86617ec1ad491c86bc4866db41f070a6b393e8c2ac94ed28a51ca309f88477d",
- "https://deno.land/x/lume@v2.2.4/plugins/relative_urls.ts": "279e7c54a1dba9945c7ac742360cca386818e990b6b609b2fda3b4ca4792bdac",
- "https://deno.land/x/lume@v2.2.4/plugins/resolve_urls.ts": "05cbde52fbe88bb86a3a5d161920acff0c198eb22190853c53cdbbbf98e52edf",
- "https://deno.land/x/lume@v2.2.4/plugins/search.ts": "8ec3a8f082b8ff1532bbe8f8bf76dfaa2d0feab7c2ec5c824d0ccc044c26f640",
- "https://deno.land/x/lume@v2.2.4/plugins/sitemap.ts": "d611dd1f0ee0db6c772cd9f6aac4420113c6deaf67d5ff6f9ac154ea408d398d",
- "https://deno.land/x/lume@v2.2.4/plugins/slugify_urls.ts": "df83d8b8b007bbd7b0dfb9788c458f35dd303a062fdf2175bdf2b53b8cfd2165",
- "https://deno.land/x/lume@v2.2.4/plugins/toml.ts": "60191e1e8fd0922def0b3f0eaad13988217511571a54659481759db4b0ca4f82",
- "https://deno.land/x/lume@v2.2.4/plugins/url.ts": "3d298886cb16e1110d427d2f257de6c2ae0da3cd7076b6abcbbd41e7536ed094",
- "https://deno.land/x/lume@v2.2.4/plugins/vento.ts": "d4a1d30c403e0978cdb888fec156d262a60ab40cd73cedfe13d210824ce5d881",
- "https://deno.land/x/lume@v2.2.4/plugins/yaml.ts": "21b1604304240d4de42b2ba0fcfd81b8330fcff8b365a1ee4ff164de6ef3de75",
- "https://deno.land/x/lume_markdown_plugins@v0.5.1/toc.ts": "442aff9a6942d100ebfcac70af3ea8bd0456c0b7a64a0997852b74bad33a8473",
- "https://deno.land/x/lume_markdown_plugins@v0.5.1/toc/anchors.ts": "8a4a1c6b2c63156622695ceba57fa7100a6e5f109c9a383a1dcaf755233c8184",
- "https://deno.land/x/lume_markdown_plugins@v0.5.1/toc/mod.ts": "f949307ce92d59fb0bbfbeeca1575bf50a6226f2476d2bca8397e5ef7020986c",
- "https://deno.land/x/lume_markdown_plugins@v0.5.1/utils.ts": "6e6c3c394709eff39080562732c2dafe404f225253aaded937133ea694c4b735",
- "https://deno.land/x/lumocs@0.1.2/mod.ts": "532f1cf79cfb1c8e9fdcd8e14501f477de791ab1a55f0e0f9fe400d9e6b6ae54",
- "https://deno.land/x/lumocs@0.1.2/plugins.ts": "5217aa5be97931f132b14c4dd7cce3194740fd70ffaf1285950acef9ae86cb6c",
- "https://deno.land/x/lumocs@0.1.2/toc.ts": "d89a25943f1ffc37d6d6a0b487f35df1690b6405bc4d3810bf95b69f532a5570",
- "https://deno.land/x/vento@v1.12.10/deps.ts": "65b1f0943c280aa0f1e35b2d52be64e699550d933f17d192cd7db8af4163835a",
- "https://deno.land/x/vento@v1.12.10/mod.ts": "296c9cc4253c1b88a94fc630a05d9a12947a908966f2db43968141f1c282a7d6",
- "https://deno.land/x/vento@v1.12.10/plugins/echo.ts": "0c9de6b508ebf79908ecdaf406757bf0a86ab960bf527a51c6523445fc2d66d2",
- "https://deno.land/x/vento@v1.12.10/plugins/escape.ts": "22754819f9a8437ecb4de0df1d3513c5b92fd6be74274d344d9750811030b181",
- "https://deno.land/x/vento@v1.12.10/plugins/export.ts": "4cda1bd2d7e28e6d23382a64a6d72e7340bef07fcbc32f604a4705c148b914f1",
- "https://deno.land/x/vento@v1.12.10/plugins/for.ts": "d79b7ed3414bc0a70430c95ed2795eb16d898dd2ccf6b40792f2333f1f272fcd",
- "https://deno.land/x/vento@v1.12.10/plugins/function.ts": "24c33bf586844ff8940daac2535dcae7f5ce39b443e795ebf16a2c23694850bf",
- "https://deno.land/x/vento@v1.12.10/plugins/if.ts": "f992b1f599be11eafaa15bf607eee467ffd4276dec145d7b73cd24c0c6920631",
- "https://deno.land/x/vento@v1.12.10/plugins/import.ts": "c36710067e1ea4074097b139c95d001fc1a2e759e05f1346da068405657924b4",
- "https://deno.land/x/vento@v1.12.10/plugins/include.ts": "d93d330d3df25a5cfcc34e85c3e6685214280792f3242064e50c94748acfb1f4",
- "https://deno.land/x/vento@v1.12.10/plugins/js.ts": "68d78ef2fc7a981d1f124f2f91830135ad46fcbd4dde7d5464cb5103c9293a5e",
- "https://deno.land/x/vento@v1.12.10/plugins/layout.ts": "da84978f0639e95e472edddc2f9837757c28113a04dbe67399087c3a4d14780e",
- "https://deno.land/x/vento@v1.12.10/plugins/set.ts": "8e0868ef63cbb005f1dc6541cfb2f7b905426237aad1e509f5b724d58975de4a",
- "https://deno.land/x/vento@v1.12.10/plugins/trim.ts": "93bce5e32aac9fd1dc4e7acf0278438d710cd1f61f80ce3af719a06cca7f2e3d",
- "https://deno.land/x/vento@v1.12.10/plugins/unescape.ts": "dd2d9dbd116b68004f11ab17c9daaf9378ee14300c2d0ec8f422df09d41462ba",
- "https://deno.land/x/vento@v1.12.10/src/environment.ts": "22cf5742cbc968a4be5982bb38eabbf61bcd818b9bf971bd8eabb2e904d0162a",
- "https://deno.land/x/vento@v1.12.10/src/js.ts": "c4ac5e2b2cd2995523d3167c5708c424686fd30d2d3951ff965a76dbdfb74e37",
- "https://deno.land/x/vento@v1.12.10/src/loader.ts": "c05add67f582e937ee611852075ce2cc038b5e80e3e609eef96fa5ed74a5086c",
- "https://deno.land/x/vento@v1.12.10/src/tokenizer.ts": "e7830fbc644a3b30cf852d0685f9797e4826ad399a3e0277beebce577b54934c",
- "https://deno.land/x/vento@v1.12.10/src/transformer.ts": "587a0b107a2bd1437a3093c4c44c07e4fdf3abfaaf8e845767b69bd34a039154",
- "https://deno.land/x/xml@5.4.12/mod.ts": "b59e5c0dd9fe7ed597c21c39aacf089aa82fe5c5eaad3f411a43a9c104359f4e",
- "https://deno.land/x/xml@5.4.12/parse.ts": "af704c72d42607d5b3f364972c413e05b6d2921d164806ec47aee348cf6ce49c",
- "https://deno.land/x/xml@5.4.12/stringify.ts": "a00881a1e563902538cfea8ce31464c81e98e61dddcf718039d7118b46464687",
- "https://deno.land/x/xml@5.4.12/wasm_xml_parser/wasm_xml_parser.js": "7c32bf2c6987635965e2cfb0e583e125dca92616366d1a4744bee5c6e327e988"
- }
-}
diff --git a/dev.ts b/dev.ts
new file mode 100644
index 0000000..87423ed
--- /dev/null
+++ b/dev.ts
@@ -0,0 +1,8 @@
+#!/usr/bin/env -S deno run -A --watch=static/,routes/
+
+import dev from "$fresh/dev.ts";
+import config from "./fresh.config.ts";
+
+import "$std/dotenv/load";
+
+await dev(import.meta.url, "./main.ts", config);
diff --git a/fresh.config.ts b/fresh.config.ts
new file mode 100644
index 0000000..f50b17a
--- /dev/null
+++ b/fresh.config.ts
@@ -0,0 +1,6 @@
+import { defineConfig } from "$fresh/server.ts";
+import tailwind from "$fresh/plugins/tailwind.ts";
+
+export default defineConfig({
+ plugins: [tailwind()],
+});
diff --git a/fresh.gen.ts b/fresh.gen.ts
new file mode 100644
index 0000000..1e129a1
--- /dev/null
+++ b/fresh.gen.ts
@@ -0,0 +1,29 @@
+// DO NOT EDIT. This file is generated by Fresh.
+// This file SHOULD be checked into source version control.
+// This file is automatically updated during development when running `dev.ts`.
+
+import * as $_404 from "./routes/_404.tsx";
+import * as $_app from "./routes/_app.tsx";
+import * as $docs_topic_ from "./routes/docs/[...topic].tsx";
+import * as $docs_index from "./routes/docs/index.tsx";
+import * as $index from "./routes/index.tsx";
+import * as $DocNav from "./islands/DocNav.tsx";
+import * as $Docs from "./islands/Docs.tsx";
+import type { Manifest } from "$fresh/server.ts";
+
+const manifest = {
+ routes: {
+ "./routes/_404.tsx": $_404,
+ "./routes/_app.tsx": $_app,
+ "./routes/docs/[...topic].tsx": $docs_topic_,
+ "./routes/docs/index.tsx": $docs_index,
+ "./routes/index.tsx": $index,
+ },
+ islands: {
+ "./islands/DocNav.tsx": $DocNav,
+ "./islands/Docs.tsx": $Docs,
+ },
+ baseUrl: import.meta.url,
+} satisfies Manifest;
+
+export default manifest;
diff --git a/index.md b/index.md
deleted file mode 100644
index 3e17b82..0000000
--- a/index.md
+++ /dev/null
@@ -1,32 +0,0 @@
----
-title: "Home"
-nav_order: 1
----
-
-# Andromeda
-
-The simplest JavaScript and TypeScript runtime, fully written in [Rust 🦀](https://www.rust-lang.org/) and powered [Nova](https://trynova.dev/).
-
-## Getting Started
-
-To get started with Andromeda, follow these steps:
-
-1. **Clone the Repository:**
- ```bash
- git clone https://github.com/tryandromeda/andromeda
- cd andromeda
- ```
-
-2. **Install**
- ```bash
- cargo install --path .
- ```
-
-For detailed documentation, please refer to the `docs` folder in each repository.(To be added)
-
-
----
-
-Thank you for being a part of the Andromeda community!
-
-Happy coding!
diff --git a/islands/DocNav.tsx b/islands/DocNav.tsx
new file mode 100644
index 0000000..add7e6f
--- /dev/null
+++ b/islands/DocNav.tsx
@@ -0,0 +1,127 @@
+// deno-lint-ignore-file no-explicit-any no-explicit-any no-explicit-any
+import Fuse from "https://cdn.skypack.dev/fuse.js";
+import { useState } from "preact/hooks";
+
+interface DocEntry {
+ name: string;
+ id: string;
+ path: string;
+}
+
+interface DocTopic {
+ name: string;
+ children: DocEntry[];
+}
+
+const ChevronDown = () => (
+
+);
+
+export function DocNav({
+ data,
+ path,
+}: {
+ data: DocTopic[];
+ path: string;
+}) {
+ const [isOpen, setIsOpen] = useState(false);
+ const [searchTerm, setSearchTerm] = useState("");
+
+ const toggleNav = () => {
+ setIsOpen(!isOpen);
+ };
+
+ const fuse = new Fuse(data, {
+ keys: ["name", "children.name"],
+ threshold: 0.3, // Adjust the threshold as needed
+ });
+
+ const filteredData = searchTerm
+ ? fuse.search(searchTerm).map((result: any) => result.item)
+ : data;
+
+ return (
+
+
+
+
+ );
+}
diff --git a/islands/Docs.tsx b/islands/Docs.tsx
new file mode 100644
index 0000000..4c84b78
--- /dev/null
+++ b/islands/Docs.tsx
@@ -0,0 +1,38 @@
+
+export function Docs() {
+ const docItems = [
+ { title: "Getting Started", href: "#getting-started", icon: "🚀" },
+ { title: "Core Concepts", href: "#core-concepts", icon: "🧠" },
+ { title: "API Reference", href: "#api-reference", icon: "📚" },
+ { title: "Examples", href: "#examples", icon: "💡" },
+ { title: "Tutorials", href: "#tutorials", icon: "🎓" },
+ { title: "Best Practices", href: "#best-practices", icon: "✅" },
+ ];
+
+ return (
+
+
+
+ Andromeda Docs
+
+ Getting started with Andromeda is easy. Follow the steps below to start building your first app.
+
+
+
+
+
+
+ );
+ }
\ No newline at end of file
diff --git a/lumocs/LICENSE b/lumocs/LICENSE
deleted file mode 100644
index 3e0ff7a..0000000
--- a/lumocs/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-MIT License
-
-Copyright (c) 2023 Hexagon
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
diff --git a/lumocs/mod.ts b/lumocs/mod.ts
deleted file mode 100644
index ccfd5b5..0000000
--- a/lumocs/mod.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import plugins, { Options } from "./plugins.ts";
-
-import type { Site } from "lume/core.ts";
-
-export type { Options } from "./plugins.ts";
-
-export default function (options: Partial = {}) {
- return (site: Site) => {
- // Configure the site
- site.use(plugins(options));
-
- // Add remote files
- const files = [
- // CSS
- "css/general.css",
- "css/sidebar.css",
- "css/blockquotes.css",
- "css/palette.css",
- "css/font-awesome.css",
-
- // JS
- "js/theme-switcher.js",
- "js/hamburger.js",
- "js/hierarchy.js",
-
- // Overridable
- "_includes/footer.njk",
- "_includes/head.njk",
- "_includes/sidebar.njk",
-
- // Internal
- "_includes/components/search.njk",
- "_includes/components/toc.njk",
- "_includes/components/breadcrumbs.njk",
- "_includes/layout/body.njk",
- "_includes/layout/html.njk",
- "_includes/partials/nav.njk",
- "_includes/partials/footer.njk",
- "_includes/partials/sidebar.njk",
- "_includes/page.njk",
- "_includes/page_right.njk",
- "_data.json",
- ];
-
- for (const file of files) {
- site.remoteFile(file, import.meta.resolve(`./src/${file}`));
- }
- };
-}
diff --git a/lumocs/plugins.ts b/lumocs/plugins.ts
deleted file mode 100644
index e5146c5..0000000
--- a/lumocs/plugins.ts
+++ /dev/null
@@ -1,98 +0,0 @@
-import nunjucks from "lume/plugins/nunjucks.ts";
-import date, { Options as DateOptions } from "lume/plugins/date.ts";
-import basePath from "lume/plugins/base_path.ts";
-import slugifyUrls from "lume/plugins/slugify_urls.ts";
-import resolveUrls from "lume/plugins/resolve_urls.ts";
-import relativeUrls from "lume/plugins/relative_urls.ts";
-import metas from "lume/plugins/metas.ts";
-//import pagefind, { Options as PagefindOptions } from "lume/plugins/pagefind.ts";
-import sitemap from "lume/plugins/sitemap.ts";
-import type { Page, Site } from "lume/core.ts";
-import code_highlight from "lume/plugins/code_highlight.ts";
-
-import toc from "https://deno.land/x/lume_markdown_plugins@v0.5.1/toc.ts";
-
-import { renderTOC } from "./toc.ts";
-
-export interface Options {
- date?: Partial;
- pagefind?: Partial;
-}
-
-/** Configure the site */
-export default function (options: Options = {}) {
- return (site: Site) => {
- site;
-
- // Set variables
- site
- .data("lang", "en")
- .data("priority", 1.0)
- .data("layout", "page.njk")
- .data("metas.title", "=title")
- .data("metas.lang", "=lang")
- .data("metas.description", "=description")
- .data("top_links", [])
- .data("nav_links", [])
- .use(nunjucks())
- .use(code_highlight())
- .use(basePath())
- .use(toc())
- .use(date(options.date))
- .use(metas())
- .use(resolveUrls())
- .use(relativeUrls())
- .use(slugifyUrls())
- // .use(pagefind(options.pagefind))
- .use(sitemap({
- priority: "priority",
- }));
-
- // Basic CSS Design System
- site.remoteFile(
- "css/pico.min.css",
- "https://cdn.jsdelivr.net/npm/@picocss/pico@1/css/pico.min.css",
- );
- site.remoteFile(
- "css/github-dark.min.css",
- "https://cdn.jsdelivr.net/gh/highlightjs/cdn-release@11.6.0/build/styles/github-dark.min.css",
- );
-
- site.process([".md"], (pages: Page) => {
- pages.forEach((page) => {
- // Replace with the actual toc from page.data.toc_string
- if (page.data.toc && page.data.toc.length) {
- const tocPlaceholderRegex = //i;
- if (tocPlaceholderRegex.test(page.content as string)) {
- const tocHtml = renderTOC(page.data.toc);
- page.content = (page.content as string).replace(
- tocPlaceholderRegex,
- tocHtml,
- );
- }
- }
- });
- });
-
- // Substitution feature
- site.process([".md"], (pages: Page) => {
- pages.forEach((page) => {
- if (page.data.substitute) {
- for (const obj of Object.entries(page.data.substitute)) {
- const key = obj[0],
- value = obj[1];
- page.content = (page.content as string).replaceAll(
- key,
- value as string,
- );
- }
- }
- });
- });
-
- // Copy files
- site
- .copy("css")
- .copy("js");
- };
-}
diff --git a/lumocs/src/_data.json b/lumocs/src/_data.json
deleted file mode 100644
index 8d3b4d1..0000000
--- a/lumocs/src/_data.json
+++ /dev/null
@@ -1,15 +0,0 @@
-{
- "lang": "en",
- "priority": 1.0,
- "layout": "page.njk",
-
- "metas": {
- "title": "=title",
- "site": "Site Header",
- "lang": "en",
- "description": "=description"
- },
-
- "top_links": [],
- "nav_links": []
-}
diff --git a/lumocs/src/_includes/components/breadcrumbs.njk b/lumocs/src/_includes/components/breadcrumbs.njk
deleted file mode 100644
index c2976a1..0000000
--- a/lumocs/src/_includes/components/breadcrumbs.njk
+++ /dev/null
@@ -1,38 +0,0 @@
-{% set currentUrl = page.url %}
-{% set breadcrumbs = [] %}
-{% set found = false %}
-
-
-{% for navPage in search.pages("parent=undefined", "nav_order") if not found %}
- {% set searchParam1 = ["parent='", navPage.title, "'"] | join %}
- {% for subPage1 in search.pages(searchParam1, "nav_order") if not found %}
- {% set searchParam2 = ["parent='", subPage1.title, "'"] | join %}
- {% for subPage2 in search.pages(searchParam2, "nav_order") if not found %}
- {% if subPage2.url == currentUrl %}
- {% set breadcrumbs = [{'title': navPage.title, 'url': navPage.url}, {'title': subPage1.title, 'url': subPage1.url}, {'title': subPage2.title, 'url': subPage2.url}] %}
- {% set found = true %}
- {% endif %}
- {% endfor %}
- {% if not found and subPage1.url == currentUrl %}
- {% set breadcrumbs = [{'title': navPage.title, 'url': navPage.url}, {'title': subPage1.title, 'url': subPage1.url}] %}
- {% set found = true %}
- {% endif %}
- {% endfor %}
- {% if not found and navPage.url == currentUrl %}
- {% set breadcrumbs = [{'title': navPage.title, 'url': navPage.url}] %}
- {% set found = true %}
- {% endif %}
-{% endfor %}
-
-
-{% if breadcrumbs|length > 1 %}
-
- {% for crumb in breadcrumbs %}
- {% if loop.last %}
- {{ crumb.title }}
- {% else %}
-
{{ crumb.title }} >
- {% endif %}
- {% endfor %}
-
-{% endif %}
diff --git a/lumocs/src/_includes/components/search.njk b/lumocs/src/_includes/components/search.njk
deleted file mode 100644
index 2a6a8a8..0000000
--- a/lumocs/src/_includes/components/search.njk
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/footer.njk b/lumocs/src/_includes/footer.njk
deleted file mode 100644
index 90cfd2e..0000000
--- a/lumocs/src/_includes/footer.njk
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/head.njk b/lumocs/src/_includes/head.njk
deleted file mode 100644
index bd3afdc..0000000
--- a/lumocs/src/_includes/head.njk
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/layout/html.njk b/lumocs/src/_includes/layout/html.njk
deleted file mode 100644
index e215340..0000000
--- a/lumocs/src/_includes/layout/html.njk
+++ /dev/null
@@ -1,43 +0,0 @@
----
-lang: en
-title: hexagon.56k.guru
----
-
-
-
-
-
-
-
-
-
-
-
- {{ metas.site }} - {{ title }}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {% include "head.njk" %}
-
-
- {{ content | safe }}
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/page.njk b/lumocs/src/_includes/page.njk
deleted file mode 100644
index b534d12..0000000
--- a/lumocs/src/_includes/page.njk
+++ /dev/null
@@ -1,24 +0,0 @@
----
-layout: layout/html.njk
----
-
-
-
-
-
-
-
-
- {% include "partials/nav.njk" %}
-
-
- {{ content | safe }}
-
-
-
-
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/partials/footer.njk b/lumocs/src/_includes/partials/footer.njk
deleted file mode 100644
index 59a3976..0000000
--- a/lumocs/src/_includes/partials/footer.njk
+++ /dev/null
@@ -1,4 +0,0 @@
-
- {% include "footer.njk" %}
-
Powered by Lumocs, a documentation theme for Lume.
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/partials/nav.njk b/lumocs/src/_includes/partials/nav.njk
deleted file mode 100644
index edf5d57..0000000
--- a/lumocs/src/_includes/partials/nav.njk
+++ /dev/null
@@ -1,22 +0,0 @@
-
-
-
- {% include "components/search.njk" %}
-
- -
- {% include "components/breadcrumbs.njk" %}
-
-
-
-
-
-
- {% for link in top_links %}
- -
-
-
-
-
- {% endfor %}
-
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/partials/sidebar.njk b/lumocs/src/_includes/partials/sidebar.njk
deleted file mode 100644
index f372eb9..0000000
--- a/lumocs/src/_includes/partials/sidebar.njk
+++ /dev/null
@@ -1,132 +0,0 @@
-{% set currentUrl = url %}
-
-
-
- -
-
-
-
-
-
-
- -
- {% if metas.logo %}
-
- {% endif %}
-
- {{ metas.site }}
-
-
-
-
-
-
-
- {% for link in top_links %}
- -
-
-
-
-
- {% endfor %}
-
-
-
\ No newline at end of file
diff --git a/lumocs/src/_includes/sidebar.njk b/lumocs/src/_includes/sidebar.njk
deleted file mode 100644
index 74dfba2..0000000
--- a/lumocs/src/_includes/sidebar.njk
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/lumocs/src/css/blockquotes.css b/lumocs/src/css/blockquotes.css
deleted file mode 100644
index d73b911..0000000
--- a/lumocs/src/css/blockquotes.css
+++ /dev/null
@@ -1,94 +0,0 @@
-/* Blockquote styles */
-blockquote {
- border-left: 4px solid currentColor;
- margin-left: 0;
- padding-left: 1rem;
- font-style: normal;
-}
-
-blockquote p {
- margin: 0;
-}
-
-/* Note, Success, Warning, and Error styles */
-.note, .success, .warning, .error {
- padding: 1rem 1.5rem;
- border-radius: 5px;
- margin-bottom: 2rem;
- position: relative;
- font-size: var(--font-size);
- display: flex;
- align-items: center;
- gap: 10px;
-}
-
-.note::before, .success::before, .warning::before, .error::before {
- font-family: "Font Awesome 5 Free";
- font-weight: 900;
- font-size: 1.5em;
- display: inline-block;
- margin-right: 0.5em;
-}
-
-/* Note Styles */
-.note {
- background-color: #e6f1f9;
- border-left: 4px solid #c7dbe8;
- color: #4E4E4E;
-}
-.note::before {
- content: "\f05a"; /* Font Awesome Info Circle */
- color: #c7dbe8;
-}
-
-/* Success Styles */
-.success {
- color: #4CAF50;
- background-color: #E8F5E9;
- border-left: 4px solid #4CAF50;
-}
-.success::before {
- content: "\f00c"; /* Font Awesome Check */
-}
-
-/* Warning Styles */
-.warning {
- color: #FF9800;
- background-color: #FFF3E0;
- border-left: 4px solid #FF9800;
-}
-.warning::before {
- content: "\f071"; /* Font Awesome Exclamation Triangle */
-}
-
-/* Error Styles */
-.error {
- color: #f44336;
- background-color: #FFEBEE;
- border-left: 4px solid #f44336; /* Red border */
-}
-.error::before {
- content: "\f057"; /* Font Awesome Times Circle */
-}
-
-/* Blockquote styles for dark theme */
-[data-theme="dark"] .note {
- background-color: #1f2e3f;
- border-left-color: #3a5a7a;
- color: #D0D0D0;
-}
-
-[data-theme="dark"] .success {
- background-color: #385738;
- border-left-color: #4CAF50;
-}
-
-[data-theme="dark"] .warning {
- background-color: #5a4220;
- border-left-color: #FF9800;
-}
-
-[data-theme="dark"] .error {
- background-color: #542B2B;
- border-left-color: #f44336;
-}
diff --git a/lumocs/src/css/font-awesome.css b/lumocs/src/css/font-awesome.css
deleted file mode 100644
index db89c86..0000000
--- a/lumocs/src/css/font-awesome.css
+++ /dev/null
@@ -1 +0,0 @@
-@import "https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.2/css/all.min.css";
\ No newline at end of file
diff --git a/lumocs/src/css/general.css b/lumocs/src/css/general.css
deleted file mode 100644
index 3a3e830..0000000
--- a/lumocs/src/css/general.css
+++ /dev/null
@@ -1,215 +0,0 @@
-/* Customize Pico.css */
-:root {
- --font-size: 13px;
-
- --color: var(--fg);
-
- /* Transfer palette to Pico.css */
- --primary-hover: var(--primary-highlight);
- --primary-focus: var(--primary-highlight);
- --primary-inverse: var(--fg);
-
- --form-element-active-border-color: var(--primary);
- --form-element-focus-color: var(--primary-focus);
- --switch-color: var(--primary-inverse);
- --switch-checked-background-color: var(--primary);
-
-}
-
-/* Reset Pico CSS Responsive padding */
-body > header, body > footer, body > main {
- padding: 0;
-}
-nav, body, article, footer {
- margin: 0;
-}
-
-/* Pico CSS Overrides */
-article > :first-child, article > :first-child > :first-child { margin-top: 0px; }
-.grid { column-gap: 0px; }
-main>.grid {min-height: calc(100vh - 70px);}
-article {
- box-shadow: none;
- padding:30px;
- padding-top:15px;
- background-color: var(--bg);
-}
-h1, h2, h3, h4, h5, h6, article>p, article>ul, article>ol, article>pre {
- margin-top: 2rem;
- margin-bottom: 0.25rem;
-}
-
-hr {
- margin-top: 2rem;
- margin-bottom: 2rem;
-}
-
-h1, h2, h3, h4, h5, h6 {
- font-weight: normal;
-}
-
-@media (min-width: 576px) {
- :root {
- --font-size: 14px;
- }
-}
-
-@media (min-width: 768px) {
- :root {
- --font-size: 15px;
- }
-}
-
-/* General Customization */
-body {
- display: flex;
- flex-direction: column;
- min-height: 100vh;
- background-color: var(--bg)
-}
-
-@media (min-width: 992px) {
- main > .grid {
- grid-template-columns: 25% auto;
- }
- #hamburger-wrapper, .mobile {
- display: none;
- }
- .menu {
- display: block;
- }
- .grid>aside>.aside-content {
- max-width:242px;
- }
- .grid>section {
- width:715px;
- }
- .grid>aside>.aside-content {
- margin-left: auto;
- }
- .grid>section {
- margin-right: auto;
- }
-}
-
-@media (min-width: 1200px) {
- main > .grid {
- grid-template-columns: 25% auto;
- }
- .grid>section {
- width:815px;
- }
-}
-
-@media (min-width: 1400px) {
- main > .grid {
- grid-template-columns: 25% auto;
- }
- .grid>section {
- width:1015px;
- }
-}
-
-@media (max-width: 991px) {
- .grid > aside {
- width: 100%;
- }
- aside header {
- padding-left:18px;
- }
- article {
- padding:18px;
- }
- #hamburger-wrapper, .mobile {
- display: inline;
- }
- aside>section, section>header, .menu, .navbar-brand {
- display: none;
- }
-}
-
-/* Header */
-.navbar-brand {
- font-size: 1rem;
- font-weight: 400;
- color: var(--fg-shaded);
- margin-left: 0.75rem;
-}
-
-.navbar-logo {
- max-height: 1.1rem;
- max-width: 1.1rem;
- margin-right: 0.0rem;
- margin-left: 0.75rem;
-}
-
-#theme-switcher {
- cursor: pointer;
- margin-right: 1rem;
-}
-section>header {
- position: sticky;
- top: 0px;
- box-shadow: 5px 20px 20px -5px var(--bg);
- border-bottom: 1px solid var(--bg-shaded-3);
- padding-left: 30px;
- background-color: var(--bg);
- line-height:1.1rem;
-}
-header>ul>li {
- display: inline-block;
- padding:0;
- margin:0;
- margin-right: 1rem;
-}
-header>ul>li>a {
- display: inline;
- padding: 0.2rem;
-}
-header>ul {
- line-height: 1.3rem;
- padding-bottom: 1.05rem;
- padding-top: 1.05rem;
- padding-left: 0px;
- margin:0px;
-}
-
-/* Main Content */
-main {
- display: flex;
- flex-direction: column;
- flex: 1;
- min-height: 100%;
-}
-
-/* Footer */
-footer {
- background-color: var(--bg-shaded);
- border-top: 1px solid var(--bg-shaded-2);
- flex-shrink: 0;
- min-height: 70px;
-}
-
-footer .grid {
- padding-top: 1.5rem;
- padding-bottom: 1.5rem;
-}
-
-footer li {
- list-style: none;
-}
-
-footer .notice {
- font-size: 0.9rem;
-}
-
-
-/* Alignment */
-.right {
- float: right;
- text-align: right;
-}
-
-.bold {
- font-weight: bold;
-}
\ No newline at end of file
diff --git a/lumocs/src/css/palette.css b/lumocs/src/css/palette.css
deleted file mode 100644
index 870fbdd..0000000
--- a/lumocs/src/css/palette.css
+++ /dev/null
@@ -1,107 +0,0 @@
-/**
-* Calculate a custom color palette from HSL values
-* Automatically takes light/dark-mode into account
-*
-* Author: Hexagon
-* License: MIT
-*
-* Customize theme color by changing Hue, Saturation and Lightness
-*/
-:root {
- --primary-h: 195;
- --primary-s: 85%;
- --primary-l: 41%; /* Lightness should always be around 50%, to allow the same base color for dark and light themes */
-}
-/**
-* Then, the following variables are defined for global use:
-*
-* --fg
-* --fg-shaded
-* --bg
-* --bg-shaded
-* --bg-shaded-2
-* --bg-shaded-3
-* --primary
-* --primary-highlight
-*
-*/
-:root {
-
- /* Color Palette - Light mode is default */
- --fg__light: hsl(var(--primary-h), 1%, 2%);
- --fg-shaded__light: hsl(var(--primary-h), 1%, 10%);
- --bg__light: hsl(var(--primary-h), 15%, 100%);
- --bg-shaded__light: hsl(var(--primary-h), 15%, 93%);
- --bg-shaded-2__light: hsl(var(--primary-h), 15%, 88%);
- --bg-shaded-3__light: hsl(var(--primary-h), 15%, 94%);
- --primary__light: hsl(var(--primary-h), calc(var(--primary-s) + 20%), calc(var(--primary-l)));
- --primary-highlight__light: hsl(var(--primary-h), calc(var(--primary-s) + 20%), calc(var(--primary-l) - 15%));
-
- /* Color Palette - Dark mode overrides (only used internally, overrides defaults automatically) */
- --fg__dark: hsl(var(--primary-h), 1%, 99%);
- --fg-shaded__dark: hsl(var(--primary-h), 2%, 98%);
- --bg__dark: hsl(var(--primary-h), 10%, 12%);
- --bg-shaded__dark: hsl(var(--primary-h), 20%, 6%);
- --bg-shaded-2__dark: hsl(var(--primary-h), 20%, 10%);
- --bg-shaded-3__dark: hsl(var(--primary-h), 20%, 18%);
- --primary__dark: hsl(var(--primary-h), var(--primary-s), calc(var(--primary-l)));
- --primary-highlight__dark: hsl(var(--primary-h), var(--primary-s), calc(var(--primary-l) + 10%));
-}
-
-/* Light mode default */
-:root {
- --fg: var(--fg__light);
- --fg-shaded: var(--fg-shaded__light);
- --fg-shaded-inv: var(--fg-shaded__dark);
- --bg: var(--bg__light);
- --bg-shaded: var(--bg-shaded__light);
- --bg-shaded-2: var(--bg-shaded-2__light);
- --bg-shaded-3: var(--bg-shaded-3__light);
- --bg-shaded-inv: var(--bg-shaded__dark);
- --primary: var(--primary__light);
- --primary-highlight: var(--primary-highlight__light);
-}
-
-/* Light mode forced */
-[data-theme="light"],
-:root:not([data-theme="dark"]) {
- --fg: var(--fg__light);
- --fg-shaded: var(--fg-shaded__light);
- --fg-shaded-inv: var(--fg-shaded__dark);
- --bg: var(--bg__light);
- --bg-shaded: var(--bg-shaded__light);
- --bg-shaded-2: var(--bg-shaded-2__light);
- --bg-shaded-3: var(--bg-shaded-3__light);
- --bg-shaded-inv: var(--bg-shaded__dark);
- --primary: var(--primary__light);
- --primary-highlight: var(--primary-highlight__light);
-}
-/* Dark mode overrides - Automatically enabled if user has Dark mode enabled */
-@media only screen and (prefers-color-scheme: dark) {
- :root:not([data-theme]) {
- --fg: var(--fg__dark);
- --fg-shaded: var(--fg-shaded__dark);
- --fg-shaded-inv: var(--fg-shaded__light);
- --bg: var(--bg__dark);
- --bg-shaded: var(--bg-shaded__dark);
- --bg-shaded-2: var(--bg-shaded-2__dark);
- --bg-shaded-3: var(--bg-shaded-3__dark);
- --bg-shaded-inv: var(--bg-shaded__light);
- --primary: var(--primary__dark);
- --primary-highlight: var(--primary-highlight__dark);
- }
-}
-
-/* Dark mode overrides - Automatically enabled if user has Dark mode enabled */
-[data-theme="dark"] {
- --fg: var(--fg__dark);
- --fg-shaded: var(--fg-shaded__dark);
- --fg-shaded-inv: var(--fg-shaded__light);
- --bg: var(--bg__dark);
- --bg-shaded: var(--bg-shaded__dark);
- --bg-shaded-2: var(--bg-shaded-2__dark);
- --bg-shaded-3: var(--bg-shaded-3__dark);
- --bg-shaded-inv: var(--bg-shaded__light);
- --primary: var(--primary__dark);
- --primary-highlight: var(--primary-highlight__dark);
-}
\ No newline at end of file
diff --git a/lumocs/src/css/sidebar.css b/lumocs/src/css/sidebar.css
deleted file mode 100644
index affc174..0000000
--- a/lumocs/src/css/sidebar.css
+++ /dev/null
@@ -1,108 +0,0 @@
-/* Reset margins for ul and li elements inside the aside */
-aside {
- background-color: var(--bg-shaded);
-}
-aside nav ul, aside header ul,
-aside li {
- margin: 0;
- margin-inline: 0;
-}
-
-aside li {
- padding: 0.1rem 0.5rem;
-}
-
-aside a {
- padding: 0.2rem;
- margin: 0;
-}
-
-aside nav {
- margin-bottom: 18px;
- margin-top: 18px;
-}
-
-aside nav > ol, aside nav > ul {
- margin-bottom: 18px;
-}
-
-aside nav > ol:first-of-type, aside nav > ul:first-of-type {
- margin: 0;
- margin-bottom: 18px;
-}
-
-/* Indent level 1 navigation items */
-aside .level1 {
- padding-left: 1rem;
-}
-aside .level1 a {
- color: var(--fg-shaded);
-}
-
-/* Indent level 2 navigation items with smaller font size */
-aside .level2 {
- padding-left: 2rem;
- font-size: 0.95rem;
-}
-aside .level2 a {
- color: var(--fg-shaded);
-}
-
-aside section i {
- padding: 0.5rem;
- margin: 0;
- font-size: 0.8rem;
-}
-
-/* Hover effect for icons */
-aside section i:hover {
- background-color: var(--bg-shaded);
- border-radius: 20%;
-}
-
-/* Sticky sidebar navigation */
-aside .aside-content {
- position: sticky;
- top: 0;
-}
-
-/* Expand/Collapse styles */
-.collapsed ul {
- display: none;
-}
-
-/* Hide "up" chevron icon when list item is collapsed */
-li.collapsed > div > .fa-chevron-up {
- display: none;
-}
-
-/* Hide "down" chevron icon when list item is not collapsed */
-:not(li.collapsed) > div > .fa-chevron-down {
- display: none;
-}
-
-/* Cursor styles for expand/collapse icons */
-.down, .up {
- cursor: pointer;
-}
-
-
-/* Hamburger */
-#hamburger-wrapper {
- padding: 0px;
- margin-right: 0px;
-}
-
-#hamburger-btn {
- display: inline;
- padding: 0px;
-}
-
-#hamburger-btn i {
- cursor: pointer;
- background-color: var(--bg-shaded-2);
-}
-
-aside header {
- border-bottom: 1px solid var(--bg-shaded-2);
-}
diff --git a/lumocs/src/js/hamburger.js b/lumocs/src/js/hamburger.js
deleted file mode 100644
index 0c2f414..0000000
--- a/lumocs/src/js/hamburger.js
+++ /dev/null
@@ -1,30 +0,0 @@
-document.addEventListener("DOMContentLoaded", () => {
- let position = undefined;
-
- // Show/Hide hamburger menu
- document.getElementById("hamburger-wrapper").addEventListener(
- "click",
- function () {
- const sidebar = document.querySelector(".menu");
- if (sidebar.style.display === "none" || sidebar.style.display === "") {
- sidebar.style.display = "inline";
- } else {
- sidebar.style.display = "";
- }
- position = window.scrollY;
- window.scrollTo({ top: 0, behavior: "smooth" });
- },
- );
-
- // Hide hamburger menu when clicking outside
- document.addEventListener("click", function (event) {
- const sidebar = document.querySelector(".menu");
- const isClickInside = sidebar.contains(event.target);
- const isHamburgerClicked = document.getElementById("hamburger-wrapper")
- .contains(event.target);
- if (!isClickInside && !isHamburgerClicked && window.innerWidth <= 992) {
- sidebar.style.display = "";
- window.scrollTo({ top: position, behavior: "smooth" });
- }
- });
-});
diff --git a/lumocs/src/js/hierarchy.js b/lumocs/src/js/hierarchy.js
deleted file mode 100644
index 046b97c..0000000
--- a/lumocs/src/js/hierarchy.js
+++ /dev/null
@@ -1,25 +0,0 @@
-document.addEventListener("DOMContentLoaded", () => {
- function handleUpClick(event) {
- event.preventDefault();
- const parentLi = event.target.closest("li");
- if (parentLi) {
- parentLi.classList.add("collapsed");
- }
- }
-
- function handleDownClick(event) {
- event.preventDefault();
- const parentLi = event.target.closest("li");
- if (parentLi) {
- parentLi.classList.remove("collapsed");
- }
- }
-
- for (const element of document.getElementsByClassName("up")) {
- element.addEventListener("click", handleUpClick);
- }
-
- for (const element of document.getElementsByClassName("down")) {
- element.addEventListener("click", handleDownClick);
- }
-});
diff --git a/lumocs/src/js/theme-switcher.js b/lumocs/src/js/theme-switcher.js
deleted file mode 100644
index 36af8e1..0000000
--- a/lumocs/src/js/theme-switcher.js
+++ /dev/null
@@ -1,40 +0,0 @@
-document.addEventListener("DOMContentLoaded", () => {
- const html = document.documentElement;
- const switcher = document.querySelectorAll(".theme-switcher");
- const themeIcon = document.querySelectorAll(".theme-icon");
-
- // Function to determine whether user has a system preference for dark mode
- const userPrefersDark = () =>
- window.matchMedia &&
- window.matchMedia("(prefers-color-scheme: dark)").matches;
-
- // Load user preferred theme from local storage or user's system preference
- let preferredTheme = localStorage.getItem("preferredTheme");
-
- if (!preferredTheme) {
- preferredTheme = userPrefersDark() ? "dark" : "light";
- }
- const inverseTheme = preferredTheme === "dark" ? "light" : "dark";
- html.setAttribute("data-theme", preferredTheme);
- switcher.forEach((e) => e.setAttribute("data-theme", inverseTheme));
-
- // Set the correct initial icon
- themeIcon.forEach((e) =>
- e.className = preferredTheme === "dark" ? "fas fa-sun" : "fas fa-moon"
- );
-
- // Event Listener for Switch Theme button
- switcher.forEach((e) =>
- e.addEventListener("click", () => {
- const currentTheme = html.getAttribute("data-theme");
- const newTheme = currentTheme === "light" ? "dark" : "light";
- const newInverseTheme = newTheme === "dark" ? "light" : "dark";
- html.setAttribute("data-theme", newTheme);
- switcher.forEach((s) => s.setAttribute("data-theme", newInverseTheme));
- localStorage.setItem("preferredTheme", newTheme);
-
- // Change the Font Awesome icon based on the new theme
- themeIcon.className = newTheme === "dark" ? "fas fa-sun" : "fas fa-moon";
- })
- );
-});
diff --git a/lumocs/toc.ts b/lumocs/toc.ts
deleted file mode 100644
index 6e467af..0000000
--- a/lumocs/toc.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-// deno-lint-ignore no-explicit-any
-export function renderTOC(toc: string | any[]) {
- if (!toc || toc.length === 0) {
- return "";
- }
-
- let tocHtml = '';
-
- for (const item of toc) {
- tocHtml += `- ${item.text}`;
-
- if (item.children && item.children.length > 0) {
- tocHtml += "
";
- for (const child of item.children) {
- tocHtml += `- ${child.text}
`;
- }
- tocHtml += "
";
- }
-
- tocHtml += " ";
- }
-
- tocHtml += "
";
-
- return tocHtml;
-}
-
-/*
- WIP
-
-
-
-
- {% endif %}
- -->
-
-*/
diff --git a/main.ts b/main.ts
new file mode 100644
index 0000000..675f529
--- /dev/null
+++ b/main.ts
@@ -0,0 +1,13 @@
+///
+///
+///
+///
+///
+
+import "$std/dotenv/load.ts";
+
+import { start } from "$fresh/server.ts";
+import manifest from "./fresh.gen.ts";
+import config from "./fresh.config.ts";
+
+await start(manifest, config);
diff --git a/routes/_404.tsx b/routes/_404.tsx
new file mode 100644
index 0000000..c63ae2e
--- /dev/null
+++ b/routes/_404.tsx
@@ -0,0 +1,27 @@
+import { Head } from "$fresh/runtime.ts";
+
+export default function Error404() {
+ return (
+ <>
+
+ 404 - Page not found
+
+
+
+
+
404 - Page not found
+
+ The page you were looking for doesn't exist.
+
+
Go back home
+
+
+ >
+ );
+}
diff --git a/routes/_app.tsx b/routes/_app.tsx
new file mode 100644
index 0000000..821ac9f
--- /dev/null
+++ b/routes/_app.tsx
@@ -0,0 +1,18 @@
+import { type PageProps } from "$fresh/server.ts";
+export default function App({ Component }: PageProps) {
+ return (
+
+
+
+
+ Andromeda
+
+
+
+
+
+
+
+
+ );
+}
diff --git a/routes/docs/[...topic].tsx b/routes/docs/[...topic].tsx
new file mode 100644
index 0000000..ea050b7
--- /dev/null
+++ b/routes/docs/[...topic].tsx
@@ -0,0 +1,26 @@
+import { PageProps } from "$fresh/server.ts";
+import { Content } from "../../components/Content.tsx";
+import { DocNav } from "../../islands/DocNav.tsx";
+import toc from "../../utils/toc.ts";
+
+export default async function DocTopic(req: Request, props: PageProps) {
+ const topic = props.params.topic;
+ const content = await Deno.readTextFile(`static/content/${topic}.md`).then((
+ res,
+ ) => res).catch((_e) => {
+ console.error(_e);
+ return `# 404 Not Found
+
+ [Go Home](/)`;
+ });
+ return (
+
+
+
+
+
+
+ );
+}
diff --git a/routes/docs/index.tsx b/routes/docs/index.tsx
new file mode 100644
index 0000000..717f91e
--- /dev/null
+++ b/routes/docs/index.tsx
@@ -0,0 +1,36 @@
+export default function Docs() {
+ const docItems = [
+ { title: "Getting Started", href: "/docs/getting-started", icon: "🚀" },
+ ];
+
+ return (
+
+
+
+
+
+ );
+}
diff --git a/routes/index.tsx b/routes/index.tsx
new file mode 100644
index 0000000..25d1c51
--- /dev/null
+++ b/routes/index.tsx
@@ -0,0 +1,30 @@
+export default function Home() {
+ return (
+
+
+
+
+
+
+ Andromeda
+
+
+ The simplest JavaScript and TypeScript runtime, fully written in
+ Rust 🦀 and powered Nova
+
+
+
+
Get Started
+
cargo install --git https://github.com/tryandromeda/andromeda
+
+
+
Documentation
+
+ Read the docs
+
+
+
+
+
+ );
+}
diff --git a/static/content/getting-started.md b/static/content/getting-started.md
new file mode 100644
index 0000000..f7a9884
--- /dev/null
+++ b/static/content/getting-started.md
@@ -0,0 +1,20 @@
+# Getting Started with Andromeda
+
+## Setting Up Andromeda
+
+To get started with Andromeda, follow these steps:
+
+1. **Clone the Repository:**
+
+ ```bash
+ git clone https://github.com/tryandromeda/andromeda
+ cd andromeda
+ ```
+
+2. **Install**
+
+ ```bash
+ cargo install --path ./cli
+ ```
+
+---
diff --git a/static/favicon.ico b/static/favicon.ico
new file mode 100644
index 0000000..1cfaaa2
Binary files /dev/null and b/static/favicon.ico differ
diff --git a/static/logo.svg b/static/logo.svg
new file mode 100644
index 0000000..46255ed
--- /dev/null
+++ b/static/logo.svg
@@ -0,0 +1,6 @@
+
\ No newline at end of file
diff --git a/static/prism.css b/static/prism.css
new file mode 100644
index 0000000..0491da4
--- /dev/null
+++ b/static/prism.css
@@ -0,0 +1,3 @@
+/* PrismJS 1.29.0
+https://prismjs.com/download.html#themes=prism-okaidia&languages=markup+css+clike+javascript */
+code[class*=language-],pre[class*=language-]{color:#f8f8f2;background:0 0;text-shadow:0 1px rgba(0,0,0,.3);font-family:Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace;font-size:1em;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;word-wrap:normal;line-height:1.5;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-],pre[class*=language-]{background:#272822}:not(pre)>code[class*=language-]{padding:.1em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.doctype,.token.prolog{color:#8292a2}.token.punctuation{color:#f8f8f2}.token.namespace{opacity:.7}.token.constant,.token.deleted,.token.property,.token.symbol,.token.tag{color:#f92672}.token.boolean,.token.number{color:#ae81ff}.token.attr-name,.token.builtin,.token.char,.token.inserted,.token.selector,.token.string{color:#a6e22e}.language-css .token.string,.style .token.string,.token.entity,.token.operator,.token.url,.token.variable{color:#f8f8f2}.token.atrule,.token.attr-value,.token.class-name,.token.function{color:#e6db74}.token.keyword{color:#66d9ef}.token.important,.token.regex{color:#fd971f}.token.bold,.token.important{font-weight:700}.token.italic{font-style:italic}.token.entity{cursor:help}
\ No newline at end of file
diff --git a/static/styles.css b/static/styles.css
new file mode 100644
index 0000000..2f9277e
--- /dev/null
+++ b/static/styles.css
@@ -0,0 +1,472 @@
+@tailwind base;
+@tailwind components;
+@tailwind utilities;
+
+
+::-webkit-scrollbar {
+ display: none;
+}
+
+:root {
+ --bg-color: #050510;
+ --text-color: #e0e0e0;
+ --primary-color: #61dafb;
+ --secondary-color: rgba(97, 218, 251, 0.1);
+ --accent-color: #e74c3c;
+ --code-bg-color: rgba(26, 26, 46, 0.8);
+}
+
+* {
+ box-sizing: border-box;
+}
+
+body {
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
+ line-height: 1.8;
+ color: var(--text-color);
+ margin: 0;
+ padding: 0;
+ background-color: var(--bg-color);
+ background-image:
+ radial-gradient(circle at 20% 20%, rgba(97, 218, 251, 0.15) 0%, transparent 40%),
+ radial-gradient(circle at 80% 80%, rgba(231, 76, 60, 0.15) 0%, transparent 40%);
+ background-attachment: fixed;
+ perspective: 1000px;
+}
+
+.container {
+ max-width: 1200px;
+ margin: 0 auto;
+ padding: 20px;
+ transform-style: preserve-3d;
+}
+
+.main-nav {
+ position: fixed;
+ top: 0;
+ left: 0;
+ right: 0;
+ background-color: transparent;
+ backdrop-filter: blur(10px);
+ z-index: 1000;
+ padding: 10px 0;
+}
+
+.main-nav ul {
+ display: flex;
+ justify-content: center;
+ list-style-type: none;
+ padding: 0;
+ margin: 0;
+}
+
+.main-nav li {
+ margin: 0 15px;
+}
+
+.main-nav a {
+ color: var(--text-color);
+ text-decoration: none;
+ font-size: 1.1em;
+ transition: color 0.3s;
+}
+
+.main-nav a:hover {
+ color: var(--primary-color);
+}
+
+@keyframes fadeIn {
+ from {
+ opacity: 0;
+ transform: translateZ(-100px);
+ }
+
+ to {
+ opacity: 1;
+ transform: translateZ(0);
+ }
+}
+
+header {
+ text-align: center;
+ margin: 100px 0 80px;
+ animation: fadeIn 1.5s ease-out;
+}
+
+.header-description {
+ max-width: 800px;
+ margin: 0 auto;
+ font-size: 1.2em;
+ color: #a0a0a0;
+}
+
+h1 {
+ font-size: 4em;
+ margin-bottom: 10px;
+ color: var(--primary-color);
+ text-align: center;
+ text-shadow: 0 0 10px rgba(97, 218, 251, 0.7),
+ 0 0 20px rgba(97, 218, 251, 0.5),
+ 0 0 30px rgba(97, 218, 251, 0.3);
+ transform: translateZ(50px);
+}
+
+.logo {
+ font-size: 1.2em;
+ animation: bounce 2s infinite;
+}
+
+@keyframes bounce {
+
+ 0%,
+ 20%,
+ 50%,
+ 80%,
+ 100% {
+ transform: translateY(0) translateZ(0);
+ }
+
+ 40% {
+ transform: translateY(-30px) translateZ(30px);
+ }
+
+ 60% {
+ transform: translateY(-15px) translateZ(15px);
+ }
+}
+
+h2 {
+ font-size: 2.8em;
+ margin-bottom: 40px;
+ color: var(--primary-color);
+ text-align: center;
+ text-shadow: 0 0 10px rgba(97, 218, 251, 0.5);
+ transform: translateZ(30px);
+}
+
+.section-description {
+ text-align: center;
+ max-width: 800px;
+ margin: 0 auto 40px;
+ font-size: 1.2em;
+ color: #a0a0a0;
+}
+
+.features,
+.examples,
+.get-started {
+ margin-bottom: 120px;
+ transform: translateZ(20px);
+ transition: transform 0.5s ease;
+ padding: 40px;
+ background-color: rgba(26, 26, 46, 0.6);
+ border-radius: 20px;
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.2);
+}
+
+.features:hover,
+.examples:hover,
+.get-started:hover {
+ transform: translateZ(40px);
+}
+
+.feature-grid {
+ display: grid;
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
+ gap: 40px;
+ perspective: 1000px;
+}
+
+.feature-item {
+ text-align: center;
+ transition: all 0.5s ease;
+ transform-style: preserve-3d;
+ transform: translateZ(10px);
+ padding: 20px;
+ background-color: rgba(97, 218, 251, 0.1);
+ border-radius: 15px;
+}
+
+.feature-item:hover {
+ transform: translateZ(30px) rotateX(5deg) rotateY(5deg);
+ background-color: rgba(97, 218, 251, 0.2);
+}
+
+.feature-icon {
+ font-size: 3em;
+ margin-bottom: 20px;
+ display: block;
+ text-shadow: 0 0 15px rgba(97, 218, 251, 0.7);
+ transform: translateZ(20px);
+}
+
+.feature-item h3 {
+ font-size: 1.8em;
+ margin-bottom: 15px;
+ color: var(--primary-color);
+ transform: translateZ(15px);
+}
+
+.feature-item p {
+ font-size: 1.1em;
+ color: var(--text-color);
+ transform: translateZ(10px);
+}
+
+.tabs {
+ display: flex;
+ margin-bottom: 30px;
+ justify-content: center;
+ flex-wrap: wrap;
+ perspective: 1000px;
+}
+
+.tabs button {
+ background-color: var(--secondary-color);
+ color: var(--text-color);
+ border: none;
+ padding: 12px 24px;
+ cursor: pointer;
+ font-size: 1.1em;
+ transition: all 0.3s ease;
+ border-radius: 30px;
+ margin: 10px;
+ border: 1px solid rgba(97, 218, 251, 0.3);
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
+ transform: translateZ(0);
+}
+
+.tabs button:hover {
+ background-color: rgba(97, 218, 251, 0.2);
+ transform: translateY(-3px) translateZ(10px);
+ box-shadow: 0 8px 20px rgba(97, 218, 251, 0.3);
+}
+
+.tabs button.active {
+ background-color: var(--primary-color);
+ color: var(--bg-color);
+ transform: translateY(-3px) translateZ(20px);
+ box-shadow: 0 8px 20px rgba(97, 218, 251, 0.5);
+}
+
+.code-container {
+ background-color: var(--code-bg-color);
+ border-radius: 15px;
+ overflow: hidden;
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
+ transform: translateZ(10px);
+}
+
+.get-started-content {
+ display: flex;
+ justify-content: space-between;
+ align-items: flex-start;
+ flex-wrap: wrap;
+}
+
+.docs-section,
+.cta-section {
+ flex: 1;
+ min-width: 300px;
+ margin: 0 20px;
+}
+
+.docs-dropdown {
+ position: relative;
+ display: inline-block;
+}
+
+.docs-button {
+ background-color: var(--primary-color);
+ color: var(--bg-color);
+ border: none;
+ padding: 15px 30px;
+ cursor: pointer;
+ font-size: 1.2em;
+ transition: all 0.3s ease;
+ border-radius: 30px;
+ box-shadow: 0 5px 15px rgba(0, 0, 0, 0.2);
+}
+
+.docs-button:hover {
+ background-color: #4fa3d1;
+ transform: translateY(-3px);
+ box-shadow: 0 8px 20px rgba(97, 218, 251, 0.3);
+}
+
+.docs-menu {
+ position: absolute;
+ top: 100%;
+ left: 50%;
+ transform: translateX(-50%);
+ background-color: var(--secondary-color);
+ min-width: 200px;
+ border-radius: 10px;
+ padding: 10px 0;
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
+ z-index: 1;
+ margin-top: 10px;
+}
+
+.docs-link {
+ display: block;
+ padding: 10px 20px;
+ color: var(--text-color);
+ text-decoration: none;
+ transition: background-color 0.3s;
+}
+
+.docs-link:hover {
+ background-color: rgba(97, 218, 251, 0.2);
+}
+
+.button {
+ display: inline-block;
+ background-color: var(--accent-color);
+ color: var(--text-color);
+ padding: 15px 30px;
+ text-decoration: none;
+ border-radius: 30px;
+ font-size: 1.2em;
+ transition: all 0.3s ease;
+ margin-top: 20px;
+ box-shadow: 0 10px 20px rgba(231, 76, 60, 0.4);
+ transform: translateZ(20px);
+}
+
+.button:hover {
+ background-color: #c0392b;
+ transform: translateY(-5px) translateZ(30px);
+ box-shadow: 0 15px 30px rgba(231, 76, 60, 0.6);
+}
+
+footer {
+ text-align: center;
+ margin-top: 80px;
+ padding: 20px;
+ color: #7f8c8d;
+ border-top: 1px solid #3d3d3d;
+ font-size: 1.1em;
+ transform: translateZ(0);
+}
+
+a {
+ color: var(--primary-color);
+ text-decoration: none;
+ transition: color 0.3s;
+}
+
+a:hover {
+ color: #c7d8e0;
+}
+
+.scroll-animate {
+ opacity: 0;
+ transform: translateY(50px) translateZ(-20px);
+ transition: opacity 1s ease-out, transform 1s ease-out;
+}
+
+.scroll-animate.show {
+ opacity: 1;
+ transform: translateY(0) translateZ(0);
+}
+
+@media (max-width: 768px) {
+ body {
+ perspective: none;
+ }
+
+ .container {
+ transform-style: flat;
+ padding: 10px;
+ }
+
+ .main-nav {
+ padding: 10px;
+ }
+
+ .main-nav ul {
+ flex-direction: column;
+ align-items: center;
+ }
+
+ .main-nav li {
+ margin: 5px 0;
+ }
+
+ header {
+ margin: 80px 0 40px;
+ }
+
+ h1 {
+ font-size: 3em;
+ transform: none;
+ }
+
+ h2 {
+ font-size: 2.2em;
+ transform: none;
+ }
+
+ .feature-grid {
+ grid-template-columns: 1fr;
+ gap: 30px;
+ }
+
+ .features,
+ .examples,
+ .get-started {
+ margin-bottom: 60px;
+ transform: none;
+ padding: 20px;
+ }
+
+ .features:hover,
+ .examples:hover,
+ .get-started:hover {
+ transform: none;
+ }
+
+ .feature-item,
+ .feature-item:hover {
+ transform: none;
+ }
+
+ .feature-icon,
+ .feature-item h3,
+ .feature-item p {
+ transform: none;
+ }
+
+ .tabs button,
+ .tabs button:hover,
+ .tabs button.active {
+ transform: none;
+ font-size: 1em;
+ padding: 10px 20px;
+ }
+
+ .code-container {
+ transform: none;
+ }
+
+ .button,
+ .button:hover {
+ transform: none;
+ }
+
+ .get-started-content {
+ flex-direction: column;
+ }
+
+ .docs-section,
+ .cta-section {
+ margin: 20px 0;
+ }
+
+ .docs-menu {
+ position: static;
+ transform: none;
+ margin-top: 20px;
+ }
+}
\ No newline at end of file
diff --git a/tailwind.config.ts b/tailwind.config.ts
new file mode 100644
index 0000000..3eec0e1
--- /dev/null
+++ b/tailwind.config.ts
@@ -0,0 +1,19 @@
+import { type Config } from "tailwindcss";
+import Typography from "tailwindcss/typography"
+
+export default {
+ content: [
+ "{routes,islands,components}/**/*.{ts,tsx}",
+ ],
+ important: true,
+ theme: {
+ extend: {
+ fontFamily: {
+ holy: ["holy", "sans-serif"],
+ },
+ },
+ },
+ plugins: [
+ Typography
+ ]
+} satisfies Config;
diff --git a/utils/markdown.tsx b/utils/markdown.tsx
new file mode 100644
index 0000000..a074035
--- /dev/null
+++ b/utils/markdown.tsx
@@ -0,0 +1,23 @@
+// deno-lint-ignore-file no-explicit-any no-explicit-any
+
+import { marked } from "npm:marked";
+import { tomorrow } from "https://esm.sh/react-syntax-highlighter@15.5.0/dist/esm/styles/prism";
+
+import { Prism as SyntaxHighlighter } from "https://esm.sh/react-syntax-highlighter@15.5.0";
+export const renderMarkdown = (content: any) => {
+ const renderer = new marked.Renderer();
+ (renderer.code as any) = (code: any, language: any) => {
+ return (
+
+ {code}
+
+ );
+ };
+ return (
+
+ );
+};
diff --git a/utils/toc.ts b/utils/toc.ts
new file mode 100644
index 0000000..425c8a7
--- /dev/null
+++ b/utils/toc.ts
@@ -0,0 +1,13 @@
+export default [
+ {
+ name: "Introduction",
+ children: [
+ {
+ name: "Getting Started",
+ path: "/docs/getting-started",
+ id: "getting-started",
+ children: [],
+ },
+ ],
+ },
+];