initial commit
ADDED
.deploy/local-deploy
ADDED
.deploy/local-deploy
@@ -0,0 +1,34 @@+#!/usr/bin/env bash++SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null && pwd )"+PROJECT_DIR="${SCRIPT_DIR}/.."++cd $PROJECT_DIR+. .env++APP_DIR="/apps/minweb"+APP_BIN="./bin/minweb"+APP_NAME="minweb"+PORT="4532"++COMMANDS="""+set -euxo pipefail+mkdir -p ${APP_DIR}+cd ${APP_DIR}+source ~/.nvm/nvm.sh+source .env+npm i+rm -rf dist+mv .next-deploy dist+make stop || true+make kill || true+make start+"""++make build+scp ./package.json $DEPLOY_HOST:${APP_DIR}/package.json+scp ./package-lock.json $DEPLOY_HOST:${APP_DIR}/package-lock.json+scp -r ./dist $DEPLOY_HOST:${APP_DIR}/.next-deploy+scp ./Makefile $DEPLOY_HOST:${APP_DIR}/Makefile++ssh $DEPLOY_HOST "/bin/bash -c '$COMMANDS'"
ADDED
.env.example
ADDED
.env.example
@@ -0,0 +1,3 @@+# SSH host to deploy to+DEPLOY_HOST="user@example.com"+PORT=3000
ADDED
.gitignore
ADDED
.gitignore
@@ -0,0 +1,32 @@+# Logs+logs+*.log+npm-debug.log*+yarn-debug.log*+yarn-error.log*+pnpm-debug.log*+lerna-debug.log*++node_modules+dist+dist-ssr+*.local++# Editor directories and files+.vscode/*+!.vscode/extensions.json+.idea+.DS_Store+*.suo+*.ntvs*+*.njsproj+*.sln+*.sw?+++# yalc+yalc.lock+.yalc++.env*+!.env.example
ADDED
.nvmrc
ADDED
.nvmrc
@@ -0,0 +1,1 @@+v20.17.0
ADDED
LICENSE
ADDED
LICENSE
@@ -0,0 +1,21 @@+MIT License++Copyright (c) 2023 reaper <ahoy@barelyhuman.dev>++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.
ADDED
Makefile
ADDED
Makefile
@@ -0,0 +1,25 @@+include .env+export++APP_NAME="minweb"++build:+ pnpm build++dev:+ pnpm dev++start:+ pm2 start --interpreter='$$NODE_INTERPRETER' --name=${APP_NAME} pnpm -- start --port=${PORT}++stop:+ pm2 stop ${APP_NAME}++deploy:+ ./.deploy/local-deploy++logs:+ pm2 logs ${APP_NAME}++kill:+ pm2 del ${APP_NAME}
ADDED
README.md
ADDED
README.md
@@ -0,0 +1,23 @@+# adex-template++Minimal and Default JS Template for Adex++## Features++- Tailwind (Styles)+- Adex (Monolith)++## Usage++```sh+; npx degit barelyhuman/adex-default-template <project-name>+; cd <project-name>+; npm i+# or yarn install+# or pnpm install+; npm run dev+```++## License++[MIT](/LICENSE)
ADDED
package-lock.json
ADDED
package-lock.json
@@ -0,0 +1,2506 @@+{+ "name": "adex-template",+ "version": "1.0.0",+ "lockfileVersion": 3,+ "requires": true,+ "packages": {+ "": {+ "name": "adex-template",+ "version": "1.0.0",+ "license": "ISC",+ "dependencies": {+ "@dumbjs/pick": "^0.0.7",+ "@preact/preset-vite": "^2.9.0",+ "adex": "*",+ "date-fns": "^4.1.0",+ "preact": "^10.22.1",+ "wade": "^0.3.3"+ },+ "devDependencies": {+ "@barelyhuman/prettier-config": "^2.0.2",+ "@tailwindcss/forms": "^0.5.9",+ "@types/node": "^20",+ "autoprefixer": "^10.4.19",+ "postcss": "^8.4.39",+ "tailwindcss": "^3.4.5",+ "vite": "^5.3.3"+ }+ },+ "node_modules/@alloc/quick-lru": {+ "version": "5.2.0",+ "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz",+ "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==",+ "dev": true,+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/@ampproject/remapping": {+ "version": "2.3.0",+ "license": "Apache-2.0",+ "dependencies": {+ "@jridgewell/gen-mapping": "^0.3.5",+ "@jridgewell/trace-mapping": "^0.3.24"+ },+ "engines": {+ "node": ">=6.0.0"+ }+ },+ "node_modules/@babel/code-frame": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/highlight": "^7.24.7",+ "picocolors": "^1.0.0"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/compat-data": {+ "version": "7.24.9",+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/core": {+ "version": "7.24.9",+ "license": "MIT",+ "dependencies": {+ "@ampproject/remapping": "^2.2.0",+ "@babel/code-frame": "^7.24.7",+ "@babel/generator": "^7.24.9",+ "@babel/helper-compilation-targets": "^7.24.8",+ "@babel/helper-module-transforms": "^7.24.9",+ "@babel/helpers": "^7.24.8",+ "@babel/parser": "^7.24.8",+ "@babel/template": "^7.24.7",+ "@babel/traverse": "^7.24.8",+ "@babel/types": "^7.24.9",+ "convert-source-map": "^2.0.0",+ "debug": "^4.1.0",+ "gensync": "^1.0.0-beta.2",+ "json5": "^2.2.3",+ "semver": "^6.3.1"+ },+ "engines": {+ "node": ">=6.9.0"+ },+ "funding": {+ "type": "opencollective",+ "url": "https://opencollective.com/babel"+ }+ },+ "node_modules/@babel/generator": {+ "version": "7.24.9",+ "license": "MIT",+ "dependencies": {+ "@babel/types": "^7.24.9",+ "@jridgewell/gen-mapping": "^0.3.5",+ "@jridgewell/trace-mapping": "^0.3.25",+ "jsesc": "^2.5.1"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-annotate-as-pure": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-compilation-targets": {+ "version": "7.24.8",+ "license": "MIT",+ "dependencies": {+ "@babel/compat-data": "^7.24.8",+ "@babel/helper-validator-option": "^7.24.8",+ "browserslist": "^4.23.1",+ "lru-cache": "^5.1.1",+ "semver": "^6.3.1"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-environment-visitor": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-function-name": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/template": "^7.24.7",+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-hoist-variables": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-module-imports": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/traverse": "^7.24.7",+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-module-transforms": {+ "version": "7.24.9",+ "license": "MIT",+ "dependencies": {+ "@babel/helper-environment-visitor": "^7.24.7",+ "@babel/helper-module-imports": "^7.24.7",+ "@babel/helper-simple-access": "^7.24.7",+ "@babel/helper-split-export-declaration": "^7.24.7",+ "@babel/helper-validator-identifier": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ },+ "peerDependencies": {+ "@babel/core": "^7.0.0"+ }+ },+ "node_modules/@babel/helper-plugin-utils": {+ "version": "7.24.8",+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-simple-access": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/traverse": "^7.24.7",+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-split-export-declaration": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-string-parser": {+ "version": "7.24.8",+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-validator-identifier": {+ "version": "7.24.7",+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helper-validator-option": {+ "version": "7.24.8",+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/helpers": {+ "version": "7.24.8",+ "license": "MIT",+ "dependencies": {+ "@babel/template": "^7.24.7",+ "@babel/types": "^7.24.8"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/highlight": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/helper-validator-identifier": "^7.24.7",+ "chalk": "^2.4.2",+ "js-tokens": "^4.0.0",+ "picocolors": "^1.0.0"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/parser": {+ "version": "7.24.8",+ "license": "MIT",+ "bin": {+ "parser": "bin/babel-parser.js"+ },+ "engines": {+ "node": ">=6.0.0"+ }+ },+ "node_modules/@babel/plugin-syntax-jsx": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/helper-plugin-utils": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ },+ "peerDependencies": {+ "@babel/core": "^7.0.0-0"+ }+ },+ "node_modules/@babel/plugin-transform-react-jsx": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/helper-annotate-as-pure": "^7.24.7",+ "@babel/helper-module-imports": "^7.24.7",+ "@babel/helper-plugin-utils": "^7.24.7",+ "@babel/plugin-syntax-jsx": "^7.24.7",+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ },+ "peerDependencies": {+ "@babel/core": "^7.0.0-0"+ }+ },+ "node_modules/@babel/plugin-transform-react-jsx-development": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/plugin-transform-react-jsx": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ },+ "peerDependencies": {+ "@babel/core": "^7.0.0-0"+ }+ },+ "node_modules/@babel/template": {+ "version": "7.24.7",+ "license": "MIT",+ "dependencies": {+ "@babel/code-frame": "^7.24.7",+ "@babel/parser": "^7.24.7",+ "@babel/types": "^7.24.7"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/traverse": {+ "version": "7.24.8",+ "license": "MIT",+ "dependencies": {+ "@babel/code-frame": "^7.24.7",+ "@babel/generator": "^7.24.8",+ "@babel/helper-environment-visitor": "^7.24.7",+ "@babel/helper-function-name": "^7.24.7",+ "@babel/helper-hoist-variables": "^7.24.7",+ "@babel/helper-split-export-declaration": "^7.24.7",+ "@babel/parser": "^7.24.8",+ "@babel/types": "^7.24.8",+ "debug": "^4.3.1",+ "globals": "^11.1.0"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@babel/types": {+ "version": "7.24.9",+ "license": "MIT",+ "dependencies": {+ "@babel/helper-string-parser": "^7.24.8",+ "@babel/helper-validator-identifier": "^7.24.7",+ "to-fast-properties": "^2.0.0"+ },+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/@barelyhuman/prettier-config": {+ "version": "2.0.2",+ "resolved": "https://registry.npmjs.org/@barelyhuman/prettier-config/-/prettier-config-2.0.2.tgz",+ "integrity": "sha512-ES+UvAEoRgQ/tymiU3Kqd2L1ltnTezLdecFdqdNvleS4Xv/87Rpjp7yO19OabCkLwcu6SCExYv23cQ4R0YBHww==",+ "dev": true,+ "license": "MIT",+ "bin": {+ "prettier-config": "cli.js"+ }+ },+ "node_modules/@dumbjs/pick": {+ "version": "0.0.7",+ "resolved": "https://registry.npmjs.org/@dumbjs/pick/-/pick-0.0.7.tgz",+ "integrity": "sha512-9pmxruFhyM/wxkkwXz0lg9UnQ4Vy8CzKpGdnpngxEARigMHQEt3OZ9J0+p77dFw40TXMAOvL+sHQlAeb4qz4Xg==",+ "license": "MIT",+ "engines": {+ "node": ">=18"+ }+ },+ "node_modules/@esbuild/darwin-arm64": {+ "version": "0.21.5",+ "cpu": [+ "arm64"+ ],+ "license": "MIT",+ "optional": true,+ "os": [+ "darwin"+ ],+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/@isaacs/cliui": {+ "version": "8.0.2",+ "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz",+ "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==",+ "dev": true,+ "dependencies": {+ "string-width": "^5.1.2",+ "string-width-cjs": "npm:string-width@^4.2.0",+ "strip-ansi": "^7.0.1",+ "strip-ansi-cjs": "npm:strip-ansi@^6.0.1",+ "wrap-ansi": "^8.1.0",+ "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0"+ },+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/@jridgewell/gen-mapping": {+ "version": "0.3.5",+ "license": "MIT",+ "dependencies": {+ "@jridgewell/set-array": "^1.2.1",+ "@jridgewell/sourcemap-codec": "^1.4.10",+ "@jridgewell/trace-mapping": "^0.3.24"+ },+ "engines": {+ "node": ">=6.0.0"+ }+ },+ "node_modules/@jridgewell/resolve-uri": {+ "version": "3.1.2",+ "license": "MIT",+ "engines": {+ "node": ">=6.0.0"+ }+ },+ "node_modules/@jridgewell/set-array": {+ "version": "1.2.1",+ "license": "MIT",+ "engines": {+ "node": ">=6.0.0"+ }+ },+ "node_modules/@jridgewell/sourcemap-codec": {+ "version": "1.5.0",+ "license": "MIT"+ },+ "node_modules/@jridgewell/trace-mapping": {+ "version": "0.3.25",+ "license": "MIT",+ "dependencies": {+ "@jridgewell/resolve-uri": "^3.1.0",+ "@jridgewell/sourcemap-codec": "^1.4.14"+ }+ },+ "node_modules/@nodelib/fs.scandir": {+ "version": "2.1.5",+ "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz",+ "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==",+ "dev": true,+ "dependencies": {+ "@nodelib/fs.stat": "2.0.5",+ "run-parallel": "^1.1.9"+ },+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/@nodelib/fs.stat": {+ "version": "2.0.5",+ "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz",+ "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==",+ "dev": true,+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/@nodelib/fs.walk": {+ "version": "1.2.8",+ "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz",+ "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==",+ "dev": true,+ "dependencies": {+ "@nodelib/fs.scandir": "2.1.5",+ "fastq": "^1.6.0"+ },+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/@pkgjs/parseargs": {+ "version": "0.11.0",+ "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz",+ "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==",+ "dev": true,+ "optional": true,+ "engines": {+ "node": ">=14"+ }+ },+ "node_modules/@polka/url": {+ "version": "1.0.0-next.25",+ "license": "MIT"+ },+ "node_modules/@preact/preset-vite": {+ "version": "2.9.0",+ "license": "MIT",+ "dependencies": {+ "@babel/code-frame": "^7.22.13",+ "@babel/plugin-transform-react-jsx": "^7.22.15",+ "@babel/plugin-transform-react-jsx-development": "^7.22.5",+ "@prefresh/vite": "^2.4.1",+ "@rollup/pluginutils": "^4.1.1",+ "babel-plugin-transform-hook-names": "^1.0.2",+ "debug": "^4.3.4",+ "kolorist": "^1.8.0",+ "magic-string": "0.30.5",+ "node-html-parser": "^6.1.10",+ "resolve": "^1.22.8",+ "source-map": "^0.7.4",+ "stack-trace": "^1.0.0-pre2"+ },+ "peerDependencies": {+ "@babel/core": "7.x",+ "vite": "2.x || 3.x || 4.x || 5.x"+ }+ },+ "node_modules/@prefresh/babel-plugin": {+ "version": "0.5.1",+ "license": "MIT"+ },+ "node_modules/@prefresh/core": {+ "version": "1.5.2",+ "license": "MIT",+ "peerDependencies": {+ "preact": "^10.0.0"+ }+ },+ "node_modules/@prefresh/utils": {+ "version": "1.2.0",+ "license": "MIT"+ },+ "node_modules/@prefresh/vite": {+ "version": "2.4.6",+ "license": "MIT",+ "dependencies": {+ "@babel/core": "^7.22.1",+ "@prefresh/babel-plugin": "0.5.1",+ "@prefresh/core": "^1.5.1",+ "@prefresh/utils": "^1.2.0",+ "@rollup/pluginutils": "^4.2.1"+ },+ "peerDependencies": {+ "preact": "^10.4.0",+ "vite": ">=2.0.0"+ }+ },+ "node_modules/@rollup/pluginutils": {+ "version": "4.2.1",+ "license": "MIT",+ "dependencies": {+ "estree-walker": "^2.0.1",+ "picomatch": "^2.2.2"+ },+ "engines": {+ "node": ">= 8.0.0"+ }+ },+ "node_modules/@rollup/rollup-darwin-arm64": {+ "version": "4.18.1",+ "cpu": [+ "arm64"+ ],+ "license": "MIT",+ "optional": true,+ "os": [+ "darwin"+ ]+ },+ "node_modules/@tailwindcss/forms": {+ "version": "0.5.9",+ "resolved": "https://registry.npmjs.org/@tailwindcss/forms/-/forms-0.5.9.tgz",+ "integrity": "sha512-tM4XVr2+UVTxXJzey9Twx48c1gcxFStqn1pQz0tRsX8o3DvxhN5oY5pvyAbUx7VTaZxpej4Zzvc6h+1RJBzpIg==",+ "dev": true,+ "license": "MIT",+ "dependencies": {+ "mini-svg-data-uri": "^1.2.3"+ },+ "peerDependencies": {+ "tailwindcss": ">=3.0.0 || >= 3.0.0-alpha.1 || >= 4.0.0-alpha.20"+ }+ },+ "node_modules/@types/estree": {+ "version": "1.0.5",+ "license": "MIT"+ },+ "node_modules/@types/node": {+ "version": "20.16.9",+ "resolved": "https://registry.npmjs.org/@types/node/-/node-20.16.9.tgz",+ "integrity": "sha512-rkvIVJxsOfBejxK7I0FO5sa2WxFmJCzoDwcd88+fq/CUfynNywTo/1/T6hyFz22CyztsnLS9nVlHOnTI36RH5w==",+ "devOptional": true,+ "license": "MIT",+ "dependencies": {+ "undici-types": "~6.19.2"+ }+ },+ "node_modules/adex": {+ "version": "0.0.5",+ "resolved": "https://registry.npmjs.org/adex/-/adex-0.0.5.tgz",+ "integrity": "sha512-yyN+SJJG63qWOG959mnhBacK7Hpi4bW2+t6ZsY+QJB0yrgW7oDr+mw/eTLGvkxn5CYHTNjhG9Pwm4R1o7Fd9Sw==",+ "dependencies": {+ "mri": "^1.2.0",+ "preact-render-to-string": "^6.5.5",+ "regexparam": "^3.0.0",+ "sirv": "^2.0.4",+ "trouter": "^4.0.0"+ },+ "peerDependencies": {+ "@preact/preset-vite": ">=2.8.2",+ "preact": "^10.22.0"+ }+ },+ "node_modules/ansi-regex": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz",+ "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==",+ "dev": true,+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-regex?sponsor=1"+ }+ },+ "node_modules/ansi-styles": {+ "version": "3.2.1",+ "license": "MIT",+ "dependencies": {+ "color-convert": "^1.9.0"+ },+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/any-promise": {+ "version": "1.3.0",+ "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz",+ "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==",+ "dev": true+ },+ "node_modules/anymatch": {+ "version": "3.1.3",+ "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz",+ "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==",+ "dev": true,+ "dependencies": {+ "normalize-path": "^3.0.0",+ "picomatch": "^2.0.4"+ },+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/arg": {+ "version": "5.0.2",+ "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz",+ "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==",+ "dev": true+ },+ "node_modules/autoprefixer": {+ "version": "10.4.19",+ "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz",+ "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==",+ "dev": true,+ "funding": [+ {+ "type": "opencollective",+ "url": "https://opencollective.com/postcss/"+ },+ {+ "type": "tidelift",+ "url": "https://tidelift.com/funding/github/npm/autoprefixer"+ },+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "dependencies": {+ "browserslist": "^4.23.0",+ "caniuse-lite": "^1.0.30001599",+ "fraction.js": "^4.3.7",+ "normalize-range": "^0.1.2",+ "picocolors": "^1.0.0",+ "postcss-value-parser": "^4.2.0"+ },+ "bin": {+ "autoprefixer": "bin/autoprefixer"+ },+ "engines": {+ "node": "^10 || ^12 || >=14"+ },+ "peerDependencies": {+ "postcss": "^8.1.0"+ }+ },+ "node_modules/babel-plugin-transform-hook-names": {+ "version": "1.0.2",+ "license": "MIT",+ "peerDependencies": {+ "@babel/core": "^7.12.10"+ }+ },+ "node_modules/balanced-match": {+ "version": "1.0.2",+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",+ "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",+ "dev": true+ },+ "node_modules/binary-extensions": {+ "version": "2.3.0",+ "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz",+ "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==",+ "dev": true,+ "engines": {+ "node": ">=8"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/boolbase": {+ "version": "1.0.0",+ "license": "ISC"+ },+ "node_modules/brace-expansion": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz",+ "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==",+ "dev": true,+ "dependencies": {+ "balanced-match": "^1.0.0"+ }+ },+ "node_modules/braces": {+ "version": "3.0.3",+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",+ "dev": true,+ "dependencies": {+ "fill-range": "^7.1.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/browserslist": {+ "version": "4.23.2",+ "funding": [+ {+ "type": "opencollective",+ "url": "https://opencollective.com/browserslist"+ },+ {+ "type": "tidelift",+ "url": "https://tidelift.com/funding/github/npm/browserslist"+ },+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "license": "MIT",+ "dependencies": {+ "caniuse-lite": "^1.0.30001640",+ "electron-to-chromium": "^1.4.820",+ "node-releases": "^2.0.14",+ "update-browserslist-db": "^1.1.0"+ },+ "bin": {+ "browserslist": "cli.js"+ },+ "engines": {+ "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7"+ }+ },+ "node_modules/camelcase-css": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz",+ "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==",+ "dev": true,+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/caniuse-lite": {+ "version": "1.0.30001642",+ "funding": [+ {+ "type": "opencollective",+ "url": "https://opencollective.com/browserslist"+ },+ {+ "type": "tidelift",+ "url": "https://tidelift.com/funding/github/npm/caniuse-lite"+ },+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "license": "CC-BY-4.0"+ },+ "node_modules/chalk": {+ "version": "2.4.2",+ "license": "MIT",+ "dependencies": {+ "ansi-styles": "^3.2.1",+ "escape-string-regexp": "^1.0.5",+ "supports-color": "^5.3.0"+ },+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/chokidar": {+ "version": "3.6.0",+ "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz",+ "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==",+ "dev": true,+ "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"+ },+ "engines": {+ "node": ">= 8.10.0"+ },+ "funding": {+ "url": "https://paulmillr.com/funding/"+ },+ "optionalDependencies": {+ "fsevents": "~2.3.2"+ }+ },+ "node_modules/chokidar/node_modules/glob-parent": {+ "version": "5.1.2",+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",+ "dev": true,+ "dependencies": {+ "is-glob": "^4.0.1"+ },+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/color-convert": {+ "version": "1.9.3",+ "license": "MIT",+ "dependencies": {+ "color-name": "1.1.3"+ }+ },+ "node_modules/color-name": {+ "version": "1.1.3",+ "license": "MIT"+ },+ "node_modules/commander": {+ "version": "4.1.1",+ "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz",+ "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==",+ "dev": true,+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/convert-source-map": {+ "version": "2.0.0",+ "license": "MIT"+ },+ "node_modules/cross-spawn": {+ "version": "7.0.3",+ "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz",+ "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==",+ "dev": true,+ "dependencies": {+ "path-key": "^3.1.0",+ "shebang-command": "^2.0.0",+ "which": "^2.0.1"+ },+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/css-select": {+ "version": "5.1.0",+ "license": "BSD-2-Clause",+ "dependencies": {+ "boolbase": "^1.0.0",+ "css-what": "^6.1.0",+ "domhandler": "^5.0.2",+ "domutils": "^3.0.1",+ "nth-check": "^2.0.1"+ },+ "funding": {+ "url": "https://github.com/sponsors/fb55"+ }+ },+ "node_modules/css-what": {+ "version": "6.1.0",+ "license": "BSD-2-Clause",+ "engines": {+ "node": ">= 6"+ },+ "funding": {+ "url": "https://github.com/sponsors/fb55"+ }+ },+ "node_modules/cssesc": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz",+ "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==",+ "dev": true,+ "bin": {+ "cssesc": "bin/cssesc"+ },+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/date-fns": {+ "version": "4.1.0",+ "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-4.1.0.tgz",+ "integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",+ "license": "MIT",+ "funding": {+ "type": "github",+ "url": "https://github.com/sponsors/kossnocorp"+ }+ },+ "node_modules/debug": {+ "version": "4.3.5",+ "license": "MIT",+ "dependencies": {+ "ms": "2.1.2"+ },+ "engines": {+ "node": ">=6.0"+ },+ "peerDependenciesMeta": {+ "supports-color": {+ "optional": true+ }+ }+ },+ "node_modules/debug/node_modules/ms": {+ "version": "2.1.2",+ "license": "MIT"+ },+ "node_modules/didyoumean": {+ "version": "1.2.2",+ "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz",+ "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",+ "dev": true+ },+ "node_modules/dlv": {+ "version": "1.1.3",+ "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz",+ "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==",+ "dev": true+ },+ "node_modules/dom-serializer": {+ "version": "2.0.0",+ "license": "MIT",+ "dependencies": {+ "domelementtype": "^2.3.0",+ "domhandler": "^5.0.2",+ "entities": "^4.2.0"+ },+ "funding": {+ "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1"+ }+ },+ "node_modules/domelementtype": {+ "version": "2.3.0",+ "funding": [+ {+ "type": "github",+ "url": "https://github.com/sponsors/fb55"+ }+ ],+ "license": "BSD-2-Clause"+ },+ "node_modules/domhandler": {+ "version": "5.0.3",+ "license": "BSD-2-Clause",+ "dependencies": {+ "domelementtype": "^2.3.0"+ },+ "engines": {+ "node": ">= 4"+ },+ "funding": {+ "url": "https://github.com/fb55/domhandler?sponsor=1"+ }+ },+ "node_modules/domutils": {+ "version": "3.1.0",+ "license": "BSD-2-Clause",+ "dependencies": {+ "dom-serializer": "^2.0.0",+ "domelementtype": "^2.3.0",+ "domhandler": "^5.0.3"+ },+ "funding": {+ "url": "https://github.com/fb55/domutils?sponsor=1"+ }+ },+ "node_modules/eastasianwidth": {+ "version": "0.2.0",+ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz",+ "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==",+ "dev": true+ },+ "node_modules/electron-to-chromium": {+ "version": "1.4.828",+ "license": "ISC"+ },+ "node_modules/emoji-regex": {+ "version": "9.2.2",+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz",+ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==",+ "dev": true+ },+ "node_modules/entities": {+ "version": "4.5.0",+ "license": "BSD-2-Clause",+ "engines": {+ "node": ">=0.12"+ },+ "funding": {+ "url": "https://github.com/fb55/entities?sponsor=1"+ }+ },+ "node_modules/esbuild": {+ "version": "0.21.5",+ "hasInstallScript": true,+ "license": "MIT",+ "bin": {+ "esbuild": "bin/esbuild"+ },+ "engines": {+ "node": ">=12"+ },+ "optionalDependencies": {+ "@esbuild/aix-ppc64": "0.21.5",+ "@esbuild/android-arm": "0.21.5",+ "@esbuild/android-arm64": "0.21.5",+ "@esbuild/android-x64": "0.21.5",+ "@esbuild/darwin-arm64": "0.21.5",+ "@esbuild/darwin-x64": "0.21.5",+ "@esbuild/freebsd-arm64": "0.21.5",+ "@esbuild/freebsd-x64": "0.21.5",+ "@esbuild/linux-arm": "0.21.5",+ "@esbuild/linux-arm64": "0.21.5",+ "@esbuild/linux-ia32": "0.21.5",+ "@esbuild/linux-loong64": "0.21.5",+ "@esbuild/linux-mips64el": "0.21.5",+ "@esbuild/linux-ppc64": "0.21.5",+ "@esbuild/linux-riscv64": "0.21.5",+ "@esbuild/linux-s390x": "0.21.5",+ "@esbuild/linux-x64": "0.21.5",+ "@esbuild/netbsd-x64": "0.21.5",+ "@esbuild/openbsd-x64": "0.21.5",+ "@esbuild/sunos-x64": "0.21.5",+ "@esbuild/win32-arm64": "0.21.5",+ "@esbuild/win32-ia32": "0.21.5",+ "@esbuild/win32-x64": "0.21.5"+ }+ },+ "node_modules/escalade": {+ "version": "3.1.2",+ "license": "MIT",+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/escape-string-regexp": {+ "version": "1.0.5",+ "license": "MIT",+ "engines": {+ "node": ">=0.8.0"+ }+ },+ "node_modules/estree-walker": {+ "version": "2.0.2",+ "license": "MIT"+ },+ "node_modules/fast-glob": {+ "version": "3.3.2",+ "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz",+ "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==",+ "dev": true,+ "dependencies": {+ "@nodelib/fs.stat": "^2.0.2",+ "@nodelib/fs.walk": "^1.2.3",+ "glob-parent": "^5.1.2",+ "merge2": "^1.3.0",+ "micromatch": "^4.0.4"+ },+ "engines": {+ "node": ">=8.6.0"+ }+ },+ "node_modules/fast-glob/node_modules/glob-parent": {+ "version": "5.1.2",+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz",+ "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==",+ "dev": true,+ "dependencies": {+ "is-glob": "^4.0.1"+ },+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/fastq": {+ "version": "1.17.1",+ "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz",+ "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==",+ "dev": true,+ "dependencies": {+ "reusify": "^1.0.4"+ }+ },+ "node_modules/fill-range": {+ "version": "7.1.1",+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",+ "dev": true,+ "dependencies": {+ "to-regex-range": "^5.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/foreground-child": {+ "version": "3.2.1",+ "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.2.1.tgz",+ "integrity": "sha512-PXUUyLqrR2XCWICfv6ukppP96sdFwWbNEnfEMt7jNsISjMsvaLNinAHNDYyvkyU+SZG2BTSbT5NjG+vZslfGTA==",+ "dev": true,+ "dependencies": {+ "cross-spawn": "^7.0.0",+ "signal-exit": "^4.0.1"+ },+ "engines": {+ "node": ">=14"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/fraction.js": {+ "version": "4.3.7",+ "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz",+ "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==",+ "dev": true,+ "engines": {+ "node": "*"+ },+ "funding": {+ "type": "patreon",+ "url": "https://github.com/sponsors/rawify"+ }+ },+ "node_modules/fsevents": {+ "version": "2.3.3",+ "license": "MIT",+ "optional": true,+ "os": [+ "darwin"+ ],+ "engines": {+ "node": "^8.16.0 || ^10.6.0 || >=11.0.0"+ }+ },+ "node_modules/function-bind": {+ "version": "1.1.2",+ "license": "MIT",+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/gensync": {+ "version": "1.0.0-beta.2",+ "license": "MIT",+ "engines": {+ "node": ">=6.9.0"+ }+ },+ "node_modules/glob": {+ "version": "10.4.5",+ "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.5.tgz",+ "integrity": "sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==",+ "dev": true,+ "dependencies": {+ "foreground-child": "^3.1.0",+ "jackspeak": "^3.1.2",+ "minimatch": "^9.0.4",+ "minipass": "^7.1.2",+ "package-json-from-dist": "^1.0.0",+ "path-scurry": "^1.11.1"+ },+ "bin": {+ "glob": "dist/esm/bin.mjs"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/glob-parent": {+ "version": "6.0.2",+ "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz",+ "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==",+ "dev": true,+ "dependencies": {+ "is-glob": "^4.0.3"+ },+ "engines": {+ "node": ">=10.13.0"+ }+ },+ "node_modules/globals": {+ "version": "11.12.0",+ "license": "MIT",+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/has-flag": {+ "version": "3.0.0",+ "license": "MIT",+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/hasown": {+ "version": "2.0.2",+ "license": "MIT",+ "dependencies": {+ "function-bind": "^1.1.2"+ },+ "engines": {+ "node": ">= 0.4"+ }+ },+ "node_modules/he": {+ "version": "1.2.0",+ "license": "MIT",+ "bin": {+ "he": "bin/he"+ }+ },+ "node_modules/is-binary-path": {+ "version": "2.1.0",+ "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz",+ "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==",+ "dev": true,+ "dependencies": {+ "binary-extensions": "^2.0.0"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/is-core-module": {+ "version": "2.14.0",+ "license": "MIT",+ "dependencies": {+ "hasown": "^2.0.2"+ },+ "engines": {+ "node": ">= 0.4"+ },+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/is-extglob": {+ "version": "2.1.1",+ "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",+ "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",+ "dev": true,+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/is-fullwidth-code-point": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz",+ "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==",+ "dev": true,+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/is-glob": {+ "version": "4.0.3",+ "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",+ "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",+ "dev": true,+ "dependencies": {+ "is-extglob": "^2.1.1"+ },+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/is-number": {+ "version": "7.0.0",+ "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",+ "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==",+ "dev": true,+ "engines": {+ "node": ">=0.12.0"+ }+ },+ "node_modules/isexe": {+ "version": "2.0.0",+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",+ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==",+ "dev": true+ },+ "node_modules/jackspeak": {+ "version": "3.4.3",+ "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz",+ "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==",+ "dev": true,+ "dependencies": {+ "@isaacs/cliui": "^8.0.2"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ },+ "optionalDependencies": {+ "@pkgjs/parseargs": "^0.11.0"+ }+ },+ "node_modules/jiti": {+ "version": "1.21.6",+ "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz",+ "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==",+ "dev": true,+ "bin": {+ "jiti": "bin/jiti.js"+ }+ },+ "node_modules/js-tokens": {+ "version": "4.0.0",+ "license": "MIT"+ },+ "node_modules/jsesc": {+ "version": "2.5.2",+ "license": "MIT",+ "bin": {+ "jsesc": "bin/jsesc"+ },+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/json5": {+ "version": "2.2.3",+ "license": "MIT",+ "bin": {+ "json5": "lib/cli.js"+ },+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/kolorist": {+ "version": "1.8.0",+ "license": "MIT"+ },+ "node_modules/lilconfig": {+ "version": "2.1.0",+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz",+ "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==",+ "dev": true,+ "engines": {+ "node": ">=10"+ }+ },+ "node_modules/lines-and-columns": {+ "version": "1.2.4",+ "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz",+ "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==",+ "dev": true+ },+ "node_modules/lru-cache": {+ "version": "5.1.1",+ "license": "ISC",+ "dependencies": {+ "yallist": "^3.0.2"+ }+ },+ "node_modules/magic-string": {+ "version": "0.30.5",+ "license": "MIT",+ "dependencies": {+ "@jridgewell/sourcemap-codec": "^1.4.15"+ },+ "engines": {+ "node": ">=12"+ }+ },+ "node_modules/merge2": {+ "version": "1.4.1",+ "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz",+ "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==",+ "dev": true,+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/micromatch": {+ "version": "4.0.7",+ "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz",+ "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==",+ "dev": true,+ "dependencies": {+ "braces": "^3.0.3",+ "picomatch": "^2.3.1"+ },+ "engines": {+ "node": ">=8.6"+ }+ },+ "node_modules/mini-svg-data-uri": {+ "version": "1.4.4",+ "resolved": "https://registry.npmjs.org/mini-svg-data-uri/-/mini-svg-data-uri-1.4.4.tgz",+ "integrity": "sha512-r9deDe9p5FJUPZAk3A59wGH7Ii9YrjjWw0jmw/liSbHl2CHiyXj6FcDXDu2K3TjVAXqiJdaw3xxwlZZr9E6nHg==",+ "dev": true,+ "license": "MIT",+ "bin": {+ "mini-svg-data-uri": "cli.js"+ }+ },+ "node_modules/minimatch": {+ "version": "9.0.5",+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz",+ "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==",+ "dev": true,+ "dependencies": {+ "brace-expansion": "^2.0.1"+ },+ "engines": {+ "node": ">=16 || 14 >=14.17"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/minipass": {+ "version": "7.1.2",+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz",+ "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==",+ "dev": true,+ "engines": {+ "node": ">=16 || 14 >=14.17"+ }+ },+ "node_modules/mri": {+ "version": "1.2.0",+ "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz",+ "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==",+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/mrmime": {+ "version": "2.0.0",+ "license": "MIT",+ "engines": {+ "node": ">=10"+ }+ },+ "node_modules/mz": {+ "version": "2.7.0",+ "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz",+ "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==",+ "dev": true,+ "dependencies": {+ "any-promise": "^1.0.0",+ "object-assign": "^4.0.1",+ "thenify-all": "^1.0.0"+ }+ },+ "node_modules/nanoid": {+ "version": "3.3.7",+ "funding": [+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "license": "MIT",+ "bin": {+ "nanoid": "bin/nanoid.cjs"+ },+ "engines": {+ "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1"+ }+ },+ "node_modules/node-html-parser": {+ "version": "6.1.13",+ "license": "MIT",+ "dependencies": {+ "css-select": "^5.1.0",+ "he": "1.2.0"+ }+ },+ "node_modules/node-releases": {+ "version": "2.0.14",+ "license": "MIT"+ },+ "node_modules/normalize-path": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz",+ "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==",+ "dev": true,+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/normalize-range": {+ "version": "0.1.2",+ "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz",+ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==",+ "dev": true,+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/nth-check": {+ "version": "2.1.1",+ "license": "BSD-2-Clause",+ "dependencies": {+ "boolbase": "^1.0.0"+ },+ "funding": {+ "url": "https://github.com/fb55/nth-check?sponsor=1"+ }+ },+ "node_modules/object-assign": {+ "version": "4.1.1",+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",+ "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==",+ "dev": true,+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/object-hash": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz",+ "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==",+ "dev": true,+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/package-json-from-dist": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.0.tgz",+ "integrity": "sha512-dATvCeZN/8wQsGywez1mzHtTlP22H8OEfPrVMLNr4/eGa+ijtLn/6M5f0dY8UKNrC2O9UCU6SSoG3qRKnt7STw==",+ "dev": true+ },+ "node_modules/path-key": {+ "version": "3.1.1",+ "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz",+ "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==",+ "dev": true,+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/path-parse": {+ "version": "1.0.7",+ "license": "MIT"+ },+ "node_modules/path-scurry": {+ "version": "1.11.1",+ "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz",+ "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==",+ "dev": true,+ "dependencies": {+ "lru-cache": "^10.2.0",+ "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0"+ },+ "engines": {+ "node": ">=16 || 14 >=14.18"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/path-scurry/node_modules/lru-cache": {+ "version": "10.4.3",+ "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz",+ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==",+ "dev": true+ },+ "node_modules/picocolors": {+ "version": "1.0.1",+ "license": "ISC"+ },+ "node_modules/picomatch": {+ "version": "2.3.1",+ "license": "MIT",+ "engines": {+ "node": ">=8.6"+ },+ "funding": {+ "url": "https://github.com/sponsors/jonschlinkert"+ }+ },+ "node_modules/pify": {+ "version": "2.3.0",+ "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",+ "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==",+ "dev": true,+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/pirates": {+ "version": "4.0.6",+ "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz",+ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==",+ "dev": true,+ "engines": {+ "node": ">= 6"+ }+ },+ "node_modules/postcss": {+ "version": "8.4.39",+ "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz",+ "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==",+ "funding": [+ {+ "type": "opencollective",+ "url": "https://opencollective.com/postcss/"+ },+ {+ "type": "tidelift",+ "url": "https://tidelift.com/funding/github/npm/postcss"+ },+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "dependencies": {+ "nanoid": "^3.3.7",+ "picocolors": "^1.0.1",+ "source-map-js": "^1.2.0"+ },+ "engines": {+ "node": "^10 || ^12 || >=14"+ }+ },+ "node_modules/postcss-import": {+ "version": "15.1.0",+ "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz",+ "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==",+ "dev": true,+ "dependencies": {+ "postcss-value-parser": "^4.0.0",+ "read-cache": "^1.0.0",+ "resolve": "^1.1.7"+ },+ "engines": {+ "node": ">=14.0.0"+ },+ "peerDependencies": {+ "postcss": "^8.0.0"+ }+ },+ "node_modules/postcss-js": {+ "version": "4.0.1",+ "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz",+ "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==",+ "dev": true,+ "dependencies": {+ "camelcase-css": "^2.0.1"+ },+ "engines": {+ "node": "^12 || ^14 || >= 16"+ },+ "funding": {+ "type": "opencollective",+ "url": "https://opencollective.com/postcss/"+ },+ "peerDependencies": {+ "postcss": "^8.4.21"+ }+ },+ "node_modules/postcss-load-config": {+ "version": "4.0.2",+ "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz",+ "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==",+ "dev": true,+ "funding": [+ {+ "type": "opencollective",+ "url": "https://opencollective.com/postcss/"+ },+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "dependencies": {+ "lilconfig": "^3.0.0",+ "yaml": "^2.3.4"+ },+ "engines": {+ "node": ">= 14"+ },+ "peerDependencies": {+ "postcss": ">=8.0.9",+ "ts-node": ">=9.0.0"+ },+ "peerDependenciesMeta": {+ "postcss": {+ "optional": true+ },+ "ts-node": {+ "optional": true+ }+ }+ },+ "node_modules/postcss-load-config/node_modules/lilconfig": {+ "version": "3.1.2",+ "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz",+ "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==",+ "dev": true,+ "engines": {+ "node": ">=14"+ },+ "funding": {+ "url": "https://github.com/sponsors/antonk52"+ }+ },+ "node_modules/postcss-nested": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz",+ "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==",+ "dev": true,+ "dependencies": {+ "postcss-selector-parser": "^6.0.11"+ },+ "engines": {+ "node": ">=12.0"+ },+ "funding": {+ "type": "opencollective",+ "url": "https://opencollective.com/postcss/"+ },+ "peerDependencies": {+ "postcss": "^8.2.14"+ }+ },+ "node_modules/postcss-selector-parser": {+ "version": "6.1.1",+ "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.1.tgz",+ "integrity": "sha512-b4dlw/9V8A71rLIDsSwVmak9z2DuBUB7CA1/wSdelNEzqsjoSPeADTWNO09lpH49Diy3/JIZ2bSPB1dI3LJCHg==",+ "dev": true,+ "dependencies": {+ "cssesc": "^3.0.0",+ "util-deprecate": "^1.0.2"+ },+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/postcss-value-parser": {+ "version": "4.2.0",+ "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz",+ "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",+ "dev": true+ },+ "node_modules/preact": {+ "version": "10.22.1",+ "license": "MIT",+ "funding": {+ "type": "opencollective",+ "url": "https://opencollective.com/preact"+ }+ },+ "node_modules/preact-render-to-string": {+ "version": "6.5.5",+ "license": "MIT",+ "peerDependencies": {+ "preact": ">=10"+ }+ },+ "node_modules/queue-microtask": {+ "version": "1.2.3",+ "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz",+ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==",+ "dev": true,+ "funding": [+ {+ "type": "github",+ "url": "https://github.com/sponsors/feross"+ },+ {+ "type": "patreon",+ "url": "https://www.patreon.com/feross"+ },+ {+ "type": "consulting",+ "url": "https://feross.org/support"+ }+ ]+ },+ "node_modules/read-cache": {+ "version": "1.0.0",+ "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz",+ "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==",+ "dev": true,+ "dependencies": {+ "pify": "^2.3.0"+ }+ },+ "node_modules/readdirp": {+ "version": "3.6.0",+ "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz",+ "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==",+ "dev": true,+ "dependencies": {+ "picomatch": "^2.2.1"+ },+ "engines": {+ "node": ">=8.10.0"+ }+ },+ "node_modules/regexparam": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/regexparam/-/regexparam-3.0.0.tgz",+ "integrity": "sha512-RSYAtP31mvYLkAHrOlh25pCNQ5hWnT106VukGaaFfuJrZFkGRX5GhUAdPqpSDXxOhA2c4akmRuplv1mRqnBn6Q==",+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/resolve": {+ "version": "1.22.8",+ "license": "MIT",+ "dependencies": {+ "is-core-module": "^2.13.0",+ "path-parse": "^1.0.7",+ "supports-preserve-symlinks-flag": "^1.0.0"+ },+ "bin": {+ "resolve": "bin/resolve"+ },+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/reusify": {+ "version": "1.0.4",+ "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",+ "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==",+ "dev": true,+ "engines": {+ "iojs": ">=1.0.0",+ "node": ">=0.10.0"+ }+ },+ "node_modules/rollup": {+ "version": "4.18.1",+ "license": "MIT",+ "dependencies": {+ "@types/estree": "1.0.5"+ },+ "bin": {+ "rollup": "dist/bin/rollup"+ },+ "engines": {+ "node": ">=18.0.0",+ "npm": ">=8.0.0"+ },+ "optionalDependencies": {+ "@rollup/rollup-android-arm-eabi": "4.18.1",+ "@rollup/rollup-android-arm64": "4.18.1",+ "@rollup/rollup-darwin-arm64": "4.18.1",+ "@rollup/rollup-darwin-x64": "4.18.1",+ "@rollup/rollup-linux-arm-gnueabihf": "4.18.1",+ "@rollup/rollup-linux-arm-musleabihf": "4.18.1",+ "@rollup/rollup-linux-arm64-gnu": "4.18.1",+ "@rollup/rollup-linux-arm64-musl": "4.18.1",+ "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1",+ "@rollup/rollup-linux-riscv64-gnu": "4.18.1",+ "@rollup/rollup-linux-s390x-gnu": "4.18.1",+ "@rollup/rollup-linux-x64-gnu": "4.18.1",+ "@rollup/rollup-linux-x64-musl": "4.18.1",+ "@rollup/rollup-win32-arm64-msvc": "4.18.1",+ "@rollup/rollup-win32-ia32-msvc": "4.18.1",+ "@rollup/rollup-win32-x64-msvc": "4.18.1",+ "fsevents": "~2.3.2"+ }+ },+ "node_modules/run-parallel": {+ "version": "1.2.0",+ "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz",+ "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==",+ "dev": true,+ "funding": [+ {+ "type": "github",+ "url": "https://github.com/sponsors/feross"+ },+ {+ "type": "patreon",+ "url": "https://www.patreon.com/feross"+ },+ {+ "type": "consulting",+ "url": "https://feross.org/support"+ }+ ],+ "dependencies": {+ "queue-microtask": "^1.2.2"+ }+ },+ "node_modules/semver": {+ "version": "6.3.1",+ "license": "ISC",+ "bin": {+ "semver": "bin/semver.js"+ }+ },+ "node_modules/shebang-command": {+ "version": "2.0.0",+ "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz",+ "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==",+ "dev": true,+ "dependencies": {+ "shebang-regex": "^3.0.0"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/shebang-regex": {+ "version": "3.0.0",+ "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz",+ "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==",+ "dev": true,+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/signal-exit": {+ "version": "4.1.0",+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz",+ "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==",+ "dev": true,+ "engines": {+ "node": ">=14"+ },+ "funding": {+ "url": "https://github.com/sponsors/isaacs"+ }+ },+ "node_modules/sirv": {+ "version": "2.0.4",+ "license": "MIT",+ "dependencies": {+ "@polka/url": "^1.0.0-next.24",+ "mrmime": "^2.0.0",+ "totalist": "^3.0.0"+ },+ "engines": {+ "node": ">= 10"+ }+ },+ "node_modules/source-map": {+ "version": "0.7.4",+ "license": "BSD-3-Clause",+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/source-map-js": {+ "version": "1.2.0",+ "license": "BSD-3-Clause",+ "engines": {+ "node": ">=0.10.0"+ }+ },+ "node_modules/stack-trace": {+ "version": "1.0.0-pre2",+ "license": "MIT",+ "engines": {+ "node": ">=16"+ }+ },+ "node_modules/string-width": {+ "version": "5.1.2",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz",+ "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==",+ "dev": true,+ "dependencies": {+ "eastasianwidth": "^0.2.0",+ "emoji-regex": "^9.2.2",+ "strip-ansi": "^7.0.1"+ },+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/sponsors/sindresorhus"+ }+ },+ "node_modules/string-width-cjs": {+ "name": "string-width",+ "version": "4.2.3",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",+ "dev": true,+ "dependencies": {+ "emoji-regex": "^8.0.0",+ "is-fullwidth-code-point": "^3.0.0",+ "strip-ansi": "^6.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/string-width-cjs/node_modules/ansi-regex": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",+ "dev": true,+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/string-width-cjs/node_modules/emoji-regex": {+ "version": "8.0.0",+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",+ "dev": true+ },+ "node_modules/string-width-cjs/node_modules/strip-ansi": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",+ "dev": true,+ "dependencies": {+ "ansi-regex": "^5.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/strip-ansi": {+ "version": "7.1.0",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz",+ "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==",+ "dev": true,+ "dependencies": {+ "ansi-regex": "^6.0.1"+ },+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/strip-ansi?sponsor=1"+ }+ },+ "node_modules/strip-ansi-cjs": {+ "name": "strip-ansi",+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",+ "dev": true,+ "dependencies": {+ "ansi-regex": "^5.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/strip-ansi-cjs/node_modules/ansi-regex": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",+ "dev": true,+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/sucrase": {+ "version": "3.35.0",+ "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz",+ "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==",+ "dev": true,+ "dependencies": {+ "@jridgewell/gen-mapping": "^0.3.2",+ "commander": "^4.0.0",+ "glob": "^10.3.10",+ "lines-and-columns": "^1.1.6",+ "mz": "^2.7.0",+ "pirates": "^4.0.1",+ "ts-interface-checker": "^0.1.9"+ },+ "bin": {+ "sucrase": "bin/sucrase",+ "sucrase-node": "bin/sucrase-node"+ },+ "engines": {+ "node": ">=16 || 14 >=14.17"+ }+ },+ "node_modules/supports-color": {+ "version": "5.5.0",+ "license": "MIT",+ "dependencies": {+ "has-flag": "^3.0.0"+ },+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/supports-preserve-symlinks-flag": {+ "version": "1.0.0",+ "license": "MIT",+ "engines": {+ "node": ">= 0.4"+ },+ "funding": {+ "url": "https://github.com/sponsors/ljharb"+ }+ },+ "node_modules/tailwindcss": {+ "version": "3.4.5",+ "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.5.tgz",+ "integrity": "sha512-DlTxttYcogpDfx3tf/8jfnma1nfAYi2cBUYV2YNoPPecwmO3YGiFlOX9D8tGAu+EDF38ryBzvrDKU/BLMsUwbw==",+ "dev": true,+ "dependencies": {+ "@alloc/quick-lru": "^5.2.0",+ "arg": "^5.0.2",+ "chokidar": "^3.5.3",+ "didyoumean": "^1.2.2",+ "dlv": "^1.1.3",+ "fast-glob": "^3.3.0",+ "glob-parent": "^6.0.2",+ "is-glob": "^4.0.3",+ "jiti": "^1.21.0",+ "lilconfig": "^2.1.0",+ "micromatch": "^4.0.5",+ "normalize-path": "^3.0.0",+ "object-hash": "^3.0.0",+ "picocolors": "^1.0.0",+ "postcss": "^8.4.23",+ "postcss-import": "^15.1.0",+ "postcss-js": "^4.0.1",+ "postcss-load-config": "^4.0.1",+ "postcss-nested": "^6.0.1",+ "postcss-selector-parser": "^6.0.11",+ "resolve": "^1.22.2",+ "sucrase": "^3.32.0"+ },+ "bin": {+ "tailwind": "lib/cli.js",+ "tailwindcss": "lib/cli.js"+ },+ "engines": {+ "node": ">=14.0.0"+ }+ },+ "node_modules/thenify": {+ "version": "3.3.1",+ "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz",+ "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==",+ "dev": true,+ "dependencies": {+ "any-promise": "^1.0.0"+ }+ },+ "node_modules/thenify-all": {+ "version": "1.6.0",+ "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz",+ "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==",+ "dev": true,+ "dependencies": {+ "thenify": ">= 3.1.0 < 4"+ },+ "engines": {+ "node": ">=0.8"+ }+ },+ "node_modules/to-fast-properties": {+ "version": "2.0.0",+ "license": "MIT",+ "engines": {+ "node": ">=4"+ }+ },+ "node_modules/to-regex-range": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz",+ "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==",+ "dev": true,+ "dependencies": {+ "is-number": "^7.0.0"+ },+ "engines": {+ "node": ">=8.0"+ }+ },+ "node_modules/totalist": {+ "version": "3.0.1",+ "license": "MIT",+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/trouter": {+ "version": "4.0.0",+ "resolved": "https://registry.npmjs.org/trouter/-/trouter-4.0.0.tgz",+ "integrity": "sha512-bwwr76BThfiVwAFZqks5cJ+VoKNM3/2Yg1ZwJslkdmAUQ6S0UNoCoGYFDxdw+u1skfexggdmD2p35kW5Td4Cug==",+ "dependencies": {+ "regexparam": "^3.0.0"+ },+ "engines": {+ "node": ">=6"+ }+ },+ "node_modules/ts-interface-checker": {+ "version": "0.1.13",+ "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz",+ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==",+ "dev": true+ },+ "node_modules/undici-types": {+ "version": "6.19.8",+ "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",+ "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",+ "devOptional": true,+ "license": "MIT"+ },+ "node_modules/update-browserslist-db": {+ "version": "1.1.0",+ "funding": [+ {+ "type": "opencollective",+ "url": "https://opencollective.com/browserslist"+ },+ {+ "type": "tidelift",+ "url": "https://tidelift.com/funding/github/npm/browserslist"+ },+ {+ "type": "github",+ "url": "https://github.com/sponsors/ai"+ }+ ],+ "license": "MIT",+ "dependencies": {+ "escalade": "^3.1.2",+ "picocolors": "^1.0.1"+ },+ "bin": {+ "update-browserslist-db": "cli.js"+ },+ "peerDependencies": {+ "browserslist": ">= 4.21.0"+ }+ },+ "node_modules/util-deprecate": {+ "version": "1.0.2",+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",+ "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",+ "dev": true+ },+ "node_modules/vite": {+ "version": "5.3.3",+ "license": "MIT",+ "dependencies": {+ "esbuild": "^0.21.3",+ "postcss": "^8.4.39",+ "rollup": "^4.13.0"+ },+ "bin": {+ "vite": "bin/vite.js"+ },+ "engines": {+ "node": "^18.0.0 || >=20.0.0"+ },+ "funding": {+ "url": "https://github.com/vitejs/vite?sponsor=1"+ },+ "optionalDependencies": {+ "fsevents": "~2.3.3"+ },+ "peerDependencies": {+ "@types/node": "^18.0.0 || >=20.0.0",+ "less": "*",+ "lightningcss": "^1.21.0",+ "sass": "*",+ "stylus": "*",+ "sugarss": "*",+ "terser": "^5.4.0"+ },+ "peerDependenciesMeta": {+ "@types/node": {+ "optional": true+ },+ "less": {+ "optional": true+ },+ "lightningcss": {+ "optional": true+ },+ "sass": {+ "optional": true+ },+ "stylus": {+ "optional": true+ },+ "sugarss": {+ "optional": true+ },+ "terser": {+ "optional": true+ }+ }+ },+ "node_modules/wade": {+ "version": "0.3.3",+ "resolved": "https://registry.npmjs.org/wade/-/wade-0.3.3.tgz",+ "integrity": "sha512-2yF3cqtXqZsoUZjrVBdZVwcEZtZ8OHYr0605YaW8nl2RcdU04H+9IWQahvnzY2osoqGpXcYld6X/qbFjyWkLGw==",+ "license": "MIT"+ },+ "node_modules/which": {+ "version": "2.0.2",+ "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz",+ "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==",+ "dev": true,+ "dependencies": {+ "isexe": "^2.0.0"+ },+ "bin": {+ "node-which": "bin/node-which"+ },+ "engines": {+ "node": ">= 8"+ }+ },+ "node_modules/wrap-ansi": {+ "version": "8.1.0",+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz",+ "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==",+ "dev": true,+ "dependencies": {+ "ansi-styles": "^6.1.0",+ "string-width": "^5.0.1",+ "strip-ansi": "^7.0.1"+ },+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"+ }+ },+ "node_modules/wrap-ansi-cjs": {+ "name": "wrap-ansi",+ "version": "7.0.0",+ "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz",+ "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==",+ "dev": true,+ "dependencies": {+ "ansi-styles": "^4.0.0",+ "string-width": "^4.1.0",+ "strip-ansi": "^6.0.0"+ },+ "engines": {+ "node": ">=10"+ },+ "funding": {+ "url": "https://github.com/chalk/wrap-ansi?sponsor=1"+ }+ },+ "node_modules/wrap-ansi-cjs/node_modules/ansi-regex": {+ "version": "5.0.1",+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz",+ "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==",+ "dev": true,+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/wrap-ansi-cjs/node_modules/ansi-styles": {+ "version": "4.3.0",+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz",+ "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==",+ "dev": true,+ "dependencies": {+ "color-convert": "^2.0.1"+ },+ "engines": {+ "node": ">=8"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"+ }+ },+ "node_modules/wrap-ansi-cjs/node_modules/color-convert": {+ "version": "2.0.1",+ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz",+ "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==",+ "dev": true,+ "dependencies": {+ "color-name": "~1.1.4"+ },+ "engines": {+ "node": ">=7.0.0"+ }+ },+ "node_modules/wrap-ansi-cjs/node_modules/color-name": {+ "version": "1.1.4",+ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz",+ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==",+ "dev": true+ },+ "node_modules/wrap-ansi-cjs/node_modules/emoji-regex": {+ "version": "8.0.0",+ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz",+ "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==",+ "dev": true+ },+ "node_modules/wrap-ansi-cjs/node_modules/string-width": {+ "version": "4.2.3",+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz",+ "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==",+ "dev": true,+ "dependencies": {+ "emoji-regex": "^8.0.0",+ "is-fullwidth-code-point": "^3.0.0",+ "strip-ansi": "^6.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/wrap-ansi-cjs/node_modules/strip-ansi": {+ "version": "6.0.1",+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz",+ "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==",+ "dev": true,+ "dependencies": {+ "ansi-regex": "^5.0.1"+ },+ "engines": {+ "node": ">=8"+ }+ },+ "node_modules/wrap-ansi/node_modules/ansi-styles": {+ "version": "6.2.1",+ "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz",+ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==",+ "dev": true,+ "engines": {+ "node": ">=12"+ },+ "funding": {+ "url": "https://github.com/chalk/ansi-styles?sponsor=1"+ }+ },+ "node_modules/yallist": {+ "version": "3.1.1",+ "license": "ISC"+ },+ "node_modules/yaml": {+ "version": "2.4.5",+ "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz",+ "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==",+ "dev": true,+ "bin": {+ "yaml": "bin.mjs"+ },+ "engines": {+ "node": ">= 14"+ }+ }+ }+}
ADDED
package.json
ADDED
package.json
@@ -0,0 +1,32 @@+{+ "name": "adex-template",+ "version": "1.0.0",+ "type": "module",+ "description": "Default JS Template for Quickstart with Adex",+ "scripts": {+ "dev": "vite",+ "build": "vite build",+ "start": "node dist/server"+ },+ "keywords": [],+ "author": "",+ "license": "ISC",+ "dependencies": {+ "@dumbjs/pick": "^0.0.7",+ "@preact/preset-vite": "^2.9.0",+ "adex": "*",+ "date-fns": "^4.1.0",+ "preact": "^10.22.1",+ "wade": "^0.3.3"+ },+ "devDependencies": {+ "@barelyhuman/prettier-config": "^2.0.2",+ "@tailwindcss/forms": "^0.5.9",+ "@types/node": "^20",+ "autoprefixer": "^10.4.19",+ "postcss": "^8.4.39",+ "tailwindcss": "^3.4.5",+ "vite": "^5.3.3"+ },+ "prettier": "@barelyhuman/prettier-config"+}
ADDED
postcss.config.js
ADDED
postcss.config.js
@@ -0,0 +1,6 @@+export default {+ plugins: {+ tailwindcss: {},+ autoprefixer: {},+ },+}
ADDED
src/api/data.ts
ADDED
src/api/data.ts
@@ -0,0 +1,17 @@+import type { ClientRequest, ServerResponse } from "node:http";++export default async (req: ClientRequest, res: ServerResponse) => {+ const response = await fetch(+ "https://ungh.cc/repos/barelyhuman/minweb-public-data/files/main/data/links.json"+ ).then((d) => d.json());++ let data = [];+ try {+ data = JSON.parse(response.file.contents);+ } catch (err) {+ console.error("Failed to get data");+ }++ res.setHeader("Content-type", "application/json");+ return res.end(JSON.stringify(data));+};
ADDED
src/global.css
ADDED
src/global.css
@@ -0,0 +1,23 @@+@import url(https://fonts.bunny.net/css?family=bad-script:400|inter:400);++@tailwind base;+@tailwind components;+@tailwind utilities;++body {+ @apply text-zinc-50 bg-zinc-900;+ font-size: 100%;+ font-family: "Bad Script", handwriting;+}++a.link {+ @apply text-inherit hover:text-white;+}++.cal {+ font-family: "Inter", sans-serif;+}++.input {+ @apply w-full p-2 pl-3 bg-transparent shadow rounded outline-offset-2 overflow-hidden border border-zinc-700 items-center gap-4;+}
ADDED
src/pages/index.jsx
ADDED
src/pages/index.jsx
@@ -0,0 +1,117 @@+import { useEffect, useState } from 'preact/hooks'+import { formatDistanceToNow } from 'date-fns/formatDistanceToNow'+import { get } from '@dumbjs/pick/get'++/**+ * @type {ReturnType<typeof microsearch>}+ */+let searcher++async function getData() {+ const response = await fetch('/api/data').then(d => d.json())++ searcher = microsearch(response, ['title', 'link'])++ return response+}++export default () => {+ const [sites, setSites] = useState([])+ const [searchTerm, setSearchTerm] = useState('')++ useEffect(() => {+ getData().then(d => setSites(d))+ }, [])++ const recents = sites+ .slice()+ .sort(+ (x, y) => new Date(y.addedOn).getTime() - new Date(x.addedOn).getTime()+ )+ .slice(0, 4)++ const totalCount = sites.length++ const filteredSites = (searchTerm ? searcher(searchTerm) : sites)+ .slice()+ .sort((x, y) => x.title.localeCompare(y.title))++ return (+ <div class="p-10 mx-auto max-w-4xl">+ <div class="flex justify-end w-full">+ <h1 class="font-sans text-sm text-zinc-600">minweb.site</h1>+ </div>+ <div class="my-24">+ <h2 class="font-semibold">Recent</h2>+ <ul class="flex flex-col gap-4 mt-8 w-full">+ {recents.map(d => {+ return (+ <li class="w-full text-zinc-500">+ <a+ href={d.link}+ class="relative w-full transition duration-300 link"+ >+ {d.title}+ <span class="font-sans italic absolute top-0 text-[8px] text-emerald-400 -right-99 min-w-44">+ {formatDistanceToNow(new Date(d.addedOn), {+ addSuffix: true,+ })}+ </span>+ </a>+ </li>+ )+ })}+ </ul>+ </div>++ <div class="my-24">+ <div class="flex flex-wrap gap-2 justify-between">+ <h2 class="font-semibold">+ All <span class="text-zinc-500">( {totalCount} )</span>+ </h2>+ <div class="flex min-w-56">+ <input+ name="search"+ class="transition-colors duration-300 input focus:ring-0 focus:border-emerald-400"+ placeholder="search"+ ref={node => {+ if (!node) return+ node.addEventListener('keyup', e => {+ setSearchTerm(e.target.value)+ })+ }}+ />+ </div>+ </div>+ <ul class="flex flex-col gap-4 mt-8">+ {filteredSites.map(d => {+ return (+ <li class="w-full text-zinc-500">+ <a+ href={d.link}+ class="relative w-full transition duration-300 link"+ >+ {d.title}+ </a>+ </li>+ )+ })}+ </ul>+ </div>+ </div>+ )+}++function microsearch(collection, paths) {+ const index = collection.map(d => paths.map(p => get(d, p)))+ return term => {+ return index+ .map((d, index) => {+ return [d, index]+ })+ .filter(val =>+ val[0].find(t => t.toLowerCase().includes(term.toLowerCase()))+ )+ .map(matches => collection[matches[1]])+ }+}
ADDED
tailwind.config.js
ADDED
tailwind.config.js
@@ -0,0 +1,15 @@+import forms from "@tailwindcss/forms"++/** @type {import('tailwindcss').Config} */+export default {+ content: ["./src/**/*.{js,tsx,jsx}"],+ theme: {+ extend: {},+ "fontFamily":{+ "sans":"'Inter',sans-serif",+ }+ },+ plugins: [+forms+ ],+};
ADDED
vite.config.js
ADDED
vite.config.js
@@ -0,0 +1,10 @@+import { defineConfig } from 'vite'+import { adex } from 'adex'+import preact from '@preact/preset-vite'++export default defineConfig({+ build: {+ target: 'node16',+ },+ plugins: [adex(), preact()],+})