diff --git a/apps/site/bun.lock b/apps/site/bun.lock index a334f57..9689a04 100644 --- a/apps/site/bun.lock +++ b/apps/site/bun.lock @@ -7,30 +7,31 @@ "@0x-jerry/unocss-preset-daisyui": "^0.2.3", "@astrojs/check": "0.9.6", "@astrojs/mdx": "^4.3.13", - "@astrojs/sitemap": "^3.6.1", - "@astrojs/starlight": "^0.37.2", + "@astrojs/sitemap": "^3.7.0", + "@astrojs/starlight": "^0.37.4", "@astrojs/svelte": "^7.2.5", - "astro": "5.16.9", + "astro": "5.16.16", "astro-robots-txt": "^1.0.0", - "astro-seo": "^0.8.4", + "astro-seo": "^1.1.0", "daisyui": "5.5.14", + "pretty-bytes": "^7.1.0", "starlight-sidebar-topics": "^0.6.2", - "svelte": "^5.46.1", + "svelte": "^5.49.0", "tiny-invariant": "^1.3.3", "typescript": "^5.9.3", }, "devDependencies": { "@iconify-json/mdi": "^1.2.3", "@iconify-json/tabler": "^1.2.26", - "@unocss/preset-icons": "^66.5.12", - "@unocss/preset-typography": "^66.5.12", - "@unocss/preset-web-fonts": "^66.5.12", - "@unocss/preset-wind4": "^66.5.12", - "@unocss/reset": "^66.5.12", - "@unocss/transformer-variant-group": "^66.5.12", - "prettier": "^3.7.4", + "@unocss/preset-icons": "^66.6.0", + "@unocss/preset-typography": "^66.6.0", + "@unocss/preset-web-fonts": "^66.6.0", + "@unocss/preset-wind4": "^66.6.0", + "@unocss/reset": "^66.6.0", + "@unocss/transformer-variant-group": "^66.6.0", + "prettier": "^3.8.1", "prettier-plugin-astro": "^0.14.1", - "unocss": "^66.5.12", + "unocss": "^66.6.0", "unocss-preset-animations": "^1.3.0", }, }, @@ -446,13 +447,13 @@ "astring": ["astring@1.9.0", "", { "bin": { "astring": "bin/astring" } }, "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg=="], - "astro": ["astro@5.16.9", "", { "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/internal-helpers": "0.7.5", "@astrojs/markdown-remark": "6.3.10", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "acorn": "^8.15.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.3.1", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.1.1", "cssesc": "^3.0.0", "debug": "^4.4.3", "deterministic-object-hash": "^2.0.2", "devalue": "^5.6.1", "diff": "^5.2.0", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.4.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.1", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.1", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.3", "shiki": "^3.20.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.1", "unist-util-visit": "^5.0.0", "unstorage": "^1.17.3", "vfile": "^6.0.3", "vite": "^6.4.1", "vitefu": "^1.1.1", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.3", "zod": "^3.25.76", "zod-to-json-schema": "^3.25.1", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "astro.js" } }, "sha512-gJvoZv0v8xCcKBcsxz1ZfXqoJ7sJJcyoKP8bUTjkuD4vDShLe0N26em4LQxitVv/2HLOpldQg67bEHB/qGoxJA=="], + "astro": ["astro@5.16.16", "", { "dependencies": { "@astrojs/compiler": "^2.13.0", "@astrojs/internal-helpers": "0.7.5", "@astrojs/markdown-remark": "6.3.10", "@astrojs/telemetry": "3.3.0", "@capsizecss/unpack": "^4.0.0", "@oslojs/encoding": "^1.1.0", "@rollup/pluginutils": "^5.3.0", "acorn": "^8.15.0", "aria-query": "^5.3.2", "axobject-query": "^4.1.0", "boxen": "8.0.1", "ci-info": "^4.3.1", "clsx": "^2.1.1", "common-ancestor-path": "^1.0.1", "cookie": "^1.1.1", "cssesc": "^3.0.0", "debug": "^4.4.3", "deterministic-object-hash": "^2.0.2", "devalue": "^5.6.2", "diff": "^8.0.3", "dlv": "^1.1.3", "dset": "^3.1.4", "es-module-lexer": "^1.7.0", "esbuild": "^0.25.0", "estree-walker": "^3.0.3", "flattie": "^1.1.1", "fontace": "~0.4.0", "github-slugger": "^2.0.0", "html-escaper": "3.0.3", "http-cache-semantics": "^4.2.0", "import-meta-resolve": "^4.2.0", "js-yaml": "^4.1.1", "magic-string": "^0.30.21", "magicast": "^0.5.1", "mrmime": "^2.0.1", "neotraverse": "^0.6.18", "p-limit": "^6.2.0", "p-queue": "^8.1.1", "package-manager-detector": "^1.6.0", "piccolore": "^0.1.3", "picomatch": "^4.0.3", "prompts": "^2.4.2", "rehype": "^13.0.2", "semver": "^7.7.3", "shiki": "^3.21.0", "smol-toml": "^1.6.0", "svgo": "^4.0.0", "tinyexec": "^1.0.2", "tinyglobby": "^0.2.15", "tsconfck": "^3.1.6", "ultrahtml": "^1.6.0", "unifont": "~0.7.3", "unist-util-visit": "^5.0.0", "unstorage": "^1.17.4", "vfile": "^6.0.3", "vite": "^6.4.1", "vitefu": "^1.1.1", "xxhash-wasm": "^1.1.0", "yargs-parser": "^21.1.1", "yocto-spinner": "^0.2.3", "zod": "^3.25.76", "zod-to-json-schema": "^3.25.1", "zod-to-ts": "^1.2.0" }, "optionalDependencies": { "sharp": "^0.34.0" }, "bin": { "astro": "astro.js" } }, "sha512-MFlFvQ84ixaHyqB3uGwMhNHdBLZ3vHawyq3PqzQS2TNWiNfQrxp5ag6S3lX+Cvnh0MUcXX+UnJBPMBHjP1/1ZQ=="], "astro-expressive-code": ["astro-expressive-code@0.41.6", "", { "dependencies": { "rehype-expressive-code": "^0.41.6" }, "peerDependencies": { "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0 || ^6.0.0-beta" } }, "sha512-l47tb1uhmVIebHUkw+HEPtU/av0G4O8Q34g2cbkPvC7/e9ZhANcjUUciKt9Hp6gSVDdIuXBBLwJQn2LkeGMOAw=="], "astro-robots-txt": ["astro-robots-txt@1.0.0", "", { "dependencies": { "valid-filename": "^4.0.0", "zod": "^3.22.2" } }, "sha512-6JQSLid4gMhoWjOm85UHLkgrw0+hHIjnJVIUqxjU2D6feKlVyYukMNYjH44ZDZBK1P8hNxd33PgWlHzCASvedA=="], - "astro-seo": ["astro-seo@0.8.4", "", { "dependencies": { "@astrojs/check": "^0.5.4" } }, "sha512-Ou1vzQSXAxa0K8rtNtXNvSpYqOGEgMhh0immMxJeXmbVZac3UKCNWAoXWyOQDFYsZvBugCRSg0N1phBqPMVgCw=="], + "astro-seo": ["astro-seo@1.1.0", "", { "dependencies": { "@astrojs/check": "^0.9.0" } }, "sha512-G6LDNDyga30o+52v58jU7C35n3cORUzk7RSuY+xf/ZRbW6JiNplyaOO1VoYVKO+xzYNaBcxqNln2RFRR/wgJNQ=="], "axobject-query": ["axobject-query@4.1.0", "", {}, "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ=="], @@ -464,8 +465,6 @@ "bcp-47-match": ["bcp-47-match@2.0.3", "", {}, "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ=="], - "binary-extensions": ["binary-extensions@2.3.0", "", {}, "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw=="], - "boolbase": ["boolbase@1.0.0", "", {}, "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww=="], "boxen": ["boxen@8.0.1", "", { "dependencies": { "ansi-align": "^3.0.1", "camelcase": "^8.0.0", "chalk": "^5.3.0", "cli-boxes": "^3.0.0", "string-width": "^7.2.0", "type-fest": "^4.21.0", "widest-line": "^5.0.0", "wrap-ansi": "^9.0.0" } }, "sha512-F3PH5k5juxom4xktynS7MoFY+NUWH5LC4CnH11YB8NPew+HLpmBLCybSAEyb2F+4pRXhuhWqFesoQd6DAyc2hw=="], @@ -558,7 +557,7 @@ "devlop": ["devlop@1.1.0", "", { "dependencies": { "dequal": "^2.0.0" } }, "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA=="], - "diff": ["diff@5.2.2", "", {}, "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A=="], + "diff": ["diff@8.0.3", "", {}, "sha512-qejHi7bcSD4hQAZE0tNAawRK1ZtafHDmMTMkrrIGgSLl7hTnQHmKCeB45xAcbfTqK2zowkM3j3bHt/4b/ARbYQ=="], "direction": ["direction@2.0.1", "", { "bin": { "direction": "cli.js" } }, "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA=="], @@ -714,8 +713,6 @@ "is-alphanumerical": ["is-alphanumerical@2.0.1", "", { "dependencies": { "is-alphabetical": "^2.0.0", "is-decimal": "^2.0.0" } }, "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw=="], - "is-binary-path": ["is-binary-path@2.1.0", "", { "dependencies": { "binary-extensions": "^2.0.0" } }, "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw=="], - "is-decimal": ["is-decimal@2.0.1", "", {}, "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="], "is-docker": ["is-docker@3.0.0", "", { "bin": { "is-docker": "cli.js" } }, "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ=="], @@ -954,6 +951,8 @@ "prettier-plugin-astro": ["prettier-plugin-astro@0.14.1", "", { "dependencies": { "@astrojs/compiler": "^2.9.1", "prettier": "^3.0.0", "sass-formatter": "^0.7.6" } }, "sha512-RiBETaaP9veVstE4vUwSIcdATj6dKmXljouXc/DDNwBSPTp8FRkLGDSGFClKsAFeeg+13SB0Z1JZvbD76bigJw=="], + "pretty-bytes": ["pretty-bytes@7.1.0", "", {}, "sha512-nODzvTiYVRGRqAOvE84Vk5JDPyyxsVk0/fbA/bq7RqlnhksGpset09XTxbpvLTIjoaF7K8Z8DG8yHtKGTPSYRw=="], + "prismjs": ["prismjs@1.30.0", "", {}, "sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw=="], "prompts": ["prompts@2.4.2", "", { "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" } }, "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q=="], @@ -1074,7 +1073,7 @@ "suf-log": ["suf-log@2.5.3", "", { "dependencies": { "s.color": "0.0.15" } }, "sha512-KvC8OPjzdNOe+xQ4XWJV2whQA0aM1kGVczMQ8+dStAO6KfEB140JEVQ9dE76ONZ0/Ylf67ni4tILPJB41U0eow=="], - "svelte": ["svelte@5.48.3", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", "acorn": "^8.12.1", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", "devalue": "^5.6.2", "esm-env": "^1.2.1", "esrap": "^2.2.1", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" } }, "sha512-w7QZ398cdNherTdiQ/v3SYLLGOO4948Jgjh04PYqtTYVohmBvbmFwLmo7pp8gp4/1tceRWfSTjHgjtfpCVNJmQ=="], + "svelte": ["svelte@5.50.0", "", { "dependencies": { "@jridgewell/remapping": "^2.3.4", "@jridgewell/sourcemap-codec": "^1.5.0", "@sveltejs/acorn-typescript": "^1.0.5", "@types/estree": "^1.0.5", "acorn": "^8.12.1", "aria-query": "^5.3.1", "axobject-query": "^4.1.0", "clsx": "^2.1.1", "devalue": "^5.6.2", "esm-env": "^1.2.1", "esrap": "^2.2.2", "is-reference": "^3.0.3", "locate-character": "^3.0.0", "magic-string": "^0.30.11", "zimmerframe": "^1.1.2" } }, "sha512-FR9kTLmX5i0oyeQ5j/+w8DuagIkQ7MWMuPpPVioW2zx9Dw77q+1ufLzF1IqNtcTXPRnIIio4PlasliVn43OnbQ=="], "svelte2tsx": ["svelte2tsx@0.7.46", "", { "dependencies": { "dedent-js": "^1.0.1", "scule": "^1.3.0" }, "peerDependencies": { "svelte": "^3.55 || ^4.0.0-next.0 || ^4.0 || ^5.0.0-next.0", "typescript": "^4.9.4 || ^5.0.0" } }, "sha512-S++Vw3w47a8rBuhbz4JK0fcGea8tOoX1boT53Aib8+oUO2EKeOG+geXprJVTDfBlvR+IJdf3jIpR2RGwT6paQA=="], @@ -1252,8 +1251,6 @@ "anymatch/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], - "astro-seo/@astrojs/check": ["@astrojs/check@0.5.10", "", { "dependencies": { "@astrojs/language-server": "^2.8.4", "chokidar": "^3.5.3", "fast-glob": "^3.3.1", "kleur": "^4.1.5", "yargs": "^17.7.2" }, "peerDependencies": { "typescript": "^5.0.0" }, "bin": { "astro-check": "dist/bin.js" } }, "sha512-vliHXM9cu/viGeKiksUM4mXfO816ohWtawTl2ADPgTsd4nUMjFiyAl7xFZhF34yy4hq4qf7jvK1F2PlR3b5I5w=="], - "boxen/string-width": ["string-width@7.2.0", "", { "dependencies": { "emoji-regex": "^10.3.0", "get-east-asian-width": "^1.0.0", "strip-ansi": "^7.1.0" } }, "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ=="], "cliui/wrap-ansi": ["wrap-ansi@7.0.0", "", { "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", "strip-ansi": "^6.0.0" } }, "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q=="], @@ -1288,8 +1285,6 @@ "@unocss/vite/chokidar/readdirp": ["readdirp@5.0.0", "", {}, "sha512-9u/XQ1pvrQtYyMpZe7DXKv2p5CNvyVwzUB6uhLAnQwHMSgKMBR62lc7AHljaeteeHXn11XTAaLLUVZYVZyuRBQ=="], - "astro-seo/@astrojs/check/chokidar": ["chokidar@3.6.0", "", { "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", "glob-parent": "~5.1.2", "is-binary-path": "~2.1.0", "is-glob": "~4.0.1", "normalize-path": "~3.0.0", "readdirp": "~3.6.0" }, "optionalDependencies": { "fsevents": "~2.3.2" } }, "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw=="], - "boxen/string-width/emoji-regex": ["emoji-regex@10.6.0", "", {}, "sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A=="], "boxen/string-width/strip-ansi": ["strip-ansi@7.1.2", "", { "dependencies": { "ansi-regex": "^6.0.1" } }, "sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA=="], @@ -1308,12 +1303,8 @@ "wrap-ansi/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - "astro-seo/@astrojs/check/chokidar/readdirp": ["readdirp@3.6.0", "", { "dependencies": { "picomatch": "^2.2.1" } }, "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA=="], - "boxen/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], "widest-line/string-width/strip-ansi/ansi-regex": ["ansi-regex@6.2.2", "", {}, "sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg=="], - - "astro-seo/@astrojs/check/chokidar/readdirp/picomatch": ["picomatch@2.3.1", "", {}, "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA=="], } } diff --git a/apps/site/package.json b/apps/site/package.json index 667bd1f..53fe2ce 100644 --- a/apps/site/package.json +++ b/apps/site/package.json @@ -21,6 +21,7 @@ "astro-robots-txt": "^1.0.0", "astro-seo": "^1.1.0", "daisyui": "5.5.14", + "pretty-bytes": "^7.1.0", "starlight-sidebar-topics": "^0.6.2", "svelte": "^5.49.0", "tiny-invariant": "^1.3.3", diff --git a/apps/site/public/assets/fonts/03a94d62.woff2 b/apps/site/public/assets/fonts/03a94d62.woff2 new file mode 100644 index 0000000..9bb49a6 Binary files /dev/null and b/apps/site/public/assets/fonts/03a94d62.woff2 differ diff --git a/apps/site/public/assets/fonts/0e916ee6.woff2 b/apps/site/public/assets/fonts/0e916ee6.woff2 new file mode 100644 index 0000000..b828f98 Binary files /dev/null and b/apps/site/public/assets/fonts/0e916ee6.woff2 differ diff --git a/apps/site/public/assets/fonts/6e9d0289.woff2 b/apps/site/public/assets/fonts/6e9d0289.woff2 new file mode 100644 index 0000000..43d9900 Binary files /dev/null and b/apps/site/public/assets/fonts/6e9d0289.woff2 differ diff --git a/apps/site/public/assets/fonts/8d66a821.woff2 b/apps/site/public/assets/fonts/8d66a821.woff2 new file mode 100644 index 0000000..cf8375c Binary files /dev/null and b/apps/site/public/assets/fonts/8d66a821.woff2 differ diff --git a/apps/site/public/assets/fonts/9b3af7f4.woff2 b/apps/site/public/assets/fonts/9b3af7f4.woff2 new file mode 100644 index 0000000..279ae26 Binary files /dev/null and b/apps/site/public/assets/fonts/9b3af7f4.woff2 differ diff --git a/apps/site/public/assets/fonts/9bf0108c.woff2 b/apps/site/public/assets/fonts/9bf0108c.woff2 new file mode 100644 index 0000000..5621b06 Binary files /dev/null and b/apps/site/public/assets/fonts/9bf0108c.woff2 differ diff --git a/apps/site/public/assets/fonts/bd5c1c11.woff2 b/apps/site/public/assets/fonts/bd5c1c11.woff2 new file mode 100644 index 0000000..d9fc125 Binary files /dev/null and b/apps/site/public/assets/fonts/bd5c1c11.woff2 differ diff --git a/apps/site/src/components/common/download_button_headless.svelte b/apps/site/src/components/common/download_button_headless.svelte index 165d77a..1b5f4b5 100644 --- a/apps/site/src/components/common/download_button_headless.svelte +++ b/apps/site/src/components/common/download_button_headless.svelte @@ -74,7 +74,7 @@
- + {#if children}{@render children()}{/if} {config.main.label @@ -93,7 +93,7 @@ class="dropdown-content menu p-2 shadow bg-base-100 rounded-box w-52 z-100" > {#each config.others as item} -
  • {item.label}
  • +
  • {item.label}
  • {/each}
    diff --git a/apps/site/src/components/home_page/section_2/index.astro b/apps/site/src/components/home_page/section_2/index.astro index 69f310b..169db29 100644 --- a/apps/site/src/components/home_page/section_2/index.astro +++ b/apps/site/src/components/home_page/section_2/index.astro @@ -33,7 +33,7 @@ let { class: classes } = Astro.props; 250 MB -

    +

    Electron Backend + Chrome Runtime + Node Modules

    @@ -58,7 +58,7 @@ let { class: classes } = Astro.props; 4 MB -

    +

    Rust Core + Native UI WebView

    diff --git a/apps/site/src/components/navbar/interactive.svelte b/apps/site/src/components/navbar/interactive.svelte index 238ed9c..87f3780 100644 --- a/apps/site/src/components/navbar/interactive.svelte +++ b/apps/site/src/components/navbar/interactive.svelte @@ -55,7 +55,7 @@
    diff --git a/apps/site/src/lib/download_links.ts b/apps/site/src/lib/download_links.ts new file mode 100644 index 0000000..6ccbfa6 --- /dev/null +++ b/apps/site/src/lib/download_links.ts @@ -0,0 +1,137 @@ +// @unocss-include +import { call_gh_api, file, repo } from "@/lib/gh_api.ts"; + +type Platform = { + label: string; + icon: string; + binaries: { + ext: "exe" | "msi" | "dmg" | "deb" | "rpm" | "appimage" | "apk"; + arch: "x64" | "arm64" | "armv7"; + size: number | undefined; + link: string; + }[]; +}; +export const gh_relases_latest_metadata = (await call_gh_api( + "/releases/latest", +)) as { + tag_name: string; + assets: { name: string; size: number }[]; +}; + +function file_size(suffix: string): number | undefined { + return gh_relases_latest_metadata.assets.find( + (asset) => asset.name === `${repo}-${suffix}`, + )?.size; +} + +export let platforms: Platform[] = [ + { + label: "windows", + icon: "i-tabler:brand-windows-filled", + binaries: [ + { + ext: "exe", + arch: "x64", + size: file_size("windows-x64.exe"), + link: file("windows-x64.exe"), + }, + { + ext: "exe", + arch: "arm64", + size: file_size("windows-arm64.exe"), + link: file("windows-arm64.exe"), + }, + { + ext: "msi", + arch: "x64", + size: file_size("windows-x64.msi"), + link: file("windows-x64.msi"), + }, + { + ext: "msi", + arch: "arm64", + size: file_size("windows-arm64.exe"), + link: file("windows-arm64.msi"), + }, + ], + }, + { + label: "macos", + icon: "i-tabler:brand-apple-filled", + binaries: [ + { + ext: "dmg", + arch: "x64", + size: file_size("darwin-x64.dmg"), + link: file("darwin-x64.dmg"), + }, + { + ext: "dmg", + arch: "arm64", + size: file_size("darwin-aarch64.dmg"), + link: file("darwin-aarch64.dmg"), + }, + ], + }, + { + label: "linux", + icon: "i-mdi:linux", + binaries: [ + { + ext: "deb", + arch: "x64", + size: file_size("linux-amd64.deb"), + link: file("linux-amd64.deb"), + }, + { + ext: "deb", + arch: "arm64", + size: file_size("linux-arm64.deb"), + link: file("linux-arm64.deb"), + }, + { + ext: "rpm", + arch: "x64", + size: file_size("linux-x86_64.rpm"), + link: file("linux-x86_64.rpm"), + }, + { + ext: "rpm", + arch: "arm64", + size: file_size("linux-aarch64.rpm"), + link: file("linux-aarch64.rpm"), + }, + { + ext: "appimage", + arch: "x64", + size: file_size("linux-amd64.AppImage"), + link: file("linux-amd64.AppImage"), + }, + { + ext: "appimage", + arch: "arm64", + size: file_size("linux-aarch64.AppImage"), + link: file("linux-aarch64.AppImage"), + }, + ], + }, + { + label: "android", + icon: "i-mdi:android", + binaries: [ + { + ext: "apk", + arch: "arm64", + size: file_size("android-arm64.apk"), + link: file("android-arm64.apk"), + }, + { + ext: "apk", + arch: "armv7", + size: file_size("android-arm.apk"), + link: file("android-arm.apk"), + }, + ], + }, + { label: "IOS", icon: "i-mdi:apple-ios", binaries: [] }, +]; diff --git a/apps/site/src/lib/gh_api.ts b/apps/site/src/lib/gh_api.ts index 312a747..009cda3 100644 --- a/apps/site/src/lib/gh_api.ts +++ b/apps/site/src/lib/gh_api.ts @@ -18,3 +18,17 @@ export async function call_gh_api(path?: string) { ); return await res.json(); } + +export function get_total_downloads(data: any): number { + return Array.isArray(data) + ? data.reduce( + (acc, release) => + acc + + release.assets.reduce( + (sum: number, asset: any) => sum + asset.download_count, + 0, + ), + 0, + ) + : 0; +} diff --git a/apps/site/src/pages/downloads.astro b/apps/site/src/pages/downloads.astro index 5d713f2..dc80bf5 100644 --- a/apps/site/src/pages/downloads.astro +++ b/apps/site/src/pages/downloads.astro @@ -3,7 +3,11 @@ import SiteLayout from "@/layout/SiteLayout.astro"; import PagetopBG from "@/components/common/pagetop_background.html"; import DownloadBtnHeadless from "@/components/common/download_button_headless.svelte"; import type { PageMetadata } from "@/types"; -import { file, call_gh_api, owner, repo } from "@/lib/gh_api.ts"; +import { call_gh_api, get_total_downloads, owner, repo } from "@/lib/gh_api.ts"; +import { platforms, gh_relases_latest_metadata } from "@/lib/download_links.ts"; +import prettyBytes from "pretty-bytes"; +import { Image } from "astro:assets"; +import logo from "@/assets/images/logo_500.png"; let metadata: PageMetadata = { title: "Downloads", @@ -20,93 +24,69 @@ let metadata: PageMetadata = { "Native performance on every platform. Markdown native, offline-first, and completely private.", }, }; -type Platform = { - label: string; - icon: string; - binaries: { label: string; link: string }[]; -}; - -let platforms: Platform[] = [ - { - label: "windows", - icon: "i-tabler:brand-windows-filled", - binaries: [ - { label: "EXE x64 (Installer)", link: file("windows-x64.exe") }, - { label: "EXE arm64 (Installer)", link: file("windows-arm64.exe") }, - { label: "MSI x64 (Installer)", link: file("windows-x64.msi") }, - { label: "MSI arm64 (Installer)", link: file("windows-arm64.msi") }, - ], - }, - { - label: "macos", - icon: "i-tabler:brand-apple-filled", - binaries: [ - { label: "DMG (x64)", link: file("darwin-x64.dmg") }, - { label: "DMG (Apple Silicon)", link: file("darwin-aarch64.dmg") }, - ], - }, - { - label: "linux", - icon: "i-mdi:linux", - binaries: [ - { label: "Deb x86_64", link: file("linux-amd64.deb") }, - { label: "Deb arm64", link: file("linux-arm64.deb") }, - { label: "Rpm x86_64", link: file("linux-x86_64.rpm") }, - { label: "Rpm arm64", link: file("linux-aarch64.rpm") }, - { label: "AppImage x86_64", link: file("linux-amd64.AppImage") }, - { label: "AppImage arm64", link: file("linux-aarch64.AppImage") }, - ], - }, - { - label: "android", - icon: "i-mdi:android", - binaries: [ - { label: "APK (aarch64)", link: file("android-arm64.apk") }, - { label: "APK (armv7)", link: file("android-arm.apk") }, - ], - }, - { label: "IOS", icon: "i-mdi:apple-ios", binaries: [] }, -]; -const get_total_downloads = (data: any): number => - Array.isArray(data) - ? data.reduce( - (acc, release) => - acc + - release.assets.reduce( - (sum: number, asset: any) => sum + asset.download_count, - 0, - ), - 0, - ) - : 0; -const releases_info = await call_gh_api("/releases"); -const download_count_server = get_total_downloads(releases_info); +const gh_releases_metadata = await call_gh_api("/releases"); +const download_count_server = get_total_downloads(gh_releases_metadata); ---

    Downloads

    -
    -
    -
    Total Downloads
    -
    - - - +
    OR
    ( <> -