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 %} - -{% 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 += `
  1. ${item.text}`; - - if (item.children && item.children.length > 0) { - tocHtml += "
      "; - for (const child of item.children) { - tocHtml += `
    • ${child.text}
    • `; - } - tocHtml += "
    "; - } - - tocHtml += "
  2. "; - } - - 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 + +
+
+ the Fresh logo: a sliced lemon dripping with juice +

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 ( +
+
+

Andromeda Docs

+

+

+
+ + +
+ ); +} 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 + + 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: [], + }, + ], + }, +];