diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 08903ba5..0c0736fa 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -76,23 +76,8 @@ jobs: - uses: Swatinem/rust-cache@v2 - run: cargo build --release - # ── Website ── - website-lint: - name: Website Lint - runs-on: ubuntu-latest - steps: - - uses: actions/checkout@v4 - - uses: actions/setup-node@v4 - with: - node-version: 24 - cache: npm - cache-dependency-path: website/package-lock.json - - run: npm ci - working-directory: website - - run: npx svelte-check --tsconfig ./tsconfig.json --output human - working-directory: website - - website-build: + # ── Docs (VitePress) ── + docs-build: name: Website Build runs-on: ubuntu-latest steps: @@ -101,14 +86,14 @@ jobs: with: node-version: 24 cache: npm - cache-dependency-path: website/package-lock.json + cache-dependency-path: docs/package-lock.json - run: npm ci - working-directory: website - - run: npm run build - working-directory: website + working-directory: docs + - run: npm run docs:build + working-directory: docs - name: Verify build output run: | - if [ ! -d "website/build" ] || [ -z "$(ls -A website/build)" ]; then + if [ ! -d "docs/.vitepress/dist" ] || [ -z "$(ls -A docs/.vitepress/dist)" ]; then echo "::error::Build output is empty or missing." exit 1 fi @@ -123,9 +108,9 @@ jobs: with: node-version: 24 cache: npm - cache-dependency-path: website/package-lock.json + cache-dependency-path: docs/package-lock.json - run: npm audit --audit-level=moderate || true - working-directory: website + working-directory: docs cargo-outdated: name: Cargo Outdated diff --git a/website/.gitignore b/website/.gitignore deleted file mode 100644 index ce4f9d00..00000000 --- a/website/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -node_modules -.svelte-kit -build diff --git a/website/CHANGELOG.md b/website/CHANGELOG.md deleted file mode 120000 index 04c99a55..00000000 --- a/website/CHANGELOG.md +++ /dev/null @@ -1 +0,0 @@ -../CHANGELOG.md \ No newline at end of file diff --git a/website/components.json b/website/components.json deleted file mode 100644 index 86d24fd1..00000000 --- a/website/components.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "$schema": "https://shadcn-svelte.com/schema.json", - "style": "vega", - "tailwind": { - "config": "tailwind.config.js", - "css": "src/app.css", - "baseColor": "zinc" - }, - "aliases": { - "components": "$lib/components", - "utils": "$lib/utils", - "ui": "$lib/components/ui", - "hooks": "$lib/hooks" - }, - "typescript": true -} diff --git a/website/package-lock.json b/website/package-lock.json deleted file mode 100644 index 22a17a8d..00000000 --- a/website/package-lock.json +++ /dev/null @@ -1,1837 +0,0 @@ -{ - "name": "cora-website", - "version": "0.0.1", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "cora-website", - "version": "0.0.1", - "dependencies": { - "mode-watcher": "^1.1.0" - }, - "devDependencies": { - "@internationalized/date": "^3.12.2", - "@lucide/svelte": "^1.17.0", - "@sveltejs/adapter-auto": "^7.0.1", - "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.57.0", - "@sveltejs/vite-plugin-svelte": "^7.0.0", - "@tailwindcss/vite": "^4.3.0", - "bits-ui": "^2.18.1", - "clsx": "^2.1.1", - "svelte": "^5.55.2", - "svelte-check": "^4.4.6", - "tailwind-merge": "^3.6.0", - "tailwind-variants": "^3.2.2", - "tailwindcss": "^4.3.0", - "typescript": "^6.0.2", - "vite": "^8.0.7" - } - }, - "node_modules/@emnapi/core": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.10.0.tgz", - "integrity": "sha512-yq6OkJ4p82CAfPl0u9mQebQHKPJkY7WrIuk205cTYnYe+k2Z8YBh11FrbRG/H6ihirqcacOgl2BIO8oyMQLeXw==", - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/wasi-threads": "1.2.1", - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.10.0.tgz", - "integrity": "sha512-ewvYlk86xUoGI0zQRNq/mC+16R1QeDlKQy21Ki3oSYXNgLb45GV1P6A0M+/s6nyCuNDqe5VpaY84BzXGwVbwFA==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@emnapi/wasi-threads": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@emnapi/wasi-threads/-/wasi-threads-1.2.1.tgz", - "integrity": "sha512-uTII7OYF+/Mes/MrcIOYp5yOtSMLBWSIoLPpcgwipoiKbli6k322tcoFsxoIIxPDqW01SQGAgko4EzZi2BNv2w==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.5", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.5.tgz", - "integrity": "sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==", - "dev": true, - "dependencies": { - "@floating-ui/utils": "^0.2.11" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.6", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.6.tgz", - "integrity": "sha512-9gZSAI5XM36880PPMm//9dfiEngYoC6Am2izES1FF406YFsjvyBMmeJ2g4SAju3xWwtuynNRFL2s9hgxpLI5SQ==", - "dev": true, - "dependencies": { - "@floating-ui/core": "^1.7.5", - "@floating-ui/utils": "^0.2.11" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.11.tgz", - "integrity": "sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==", - "dev": true - }, - "node_modules/@internationalized/date": { - "version": "3.12.2", - "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.12.2.tgz", - "integrity": "sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==", - "dev": true, - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.13", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.13.tgz", - "integrity": "sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.0", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/remapping": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", - "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.24" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.31", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", - "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@lucide/svelte": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@lucide/svelte/-/svelte-1.17.0.tgz", - "integrity": "sha512-q06YCFBN5CO8cd1ADmLCxWRVMVb7xxvHzqC0lvNoxGa+FLW6Cd1Y1AOxgbQk4Iwe68vkAMCRveNHint4WoaVKg==", - "dev": true, - "peerDependencies": { - "svelte": "^5" - } - }, - "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", - "dev": true, - "optional": true, - "dependencies": { - "@tybys/wasm-util": "^0.10.1" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Brooooooklyn" - }, - "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" - } - }, - "node_modules/@oxc-project/types": { - "version": "0.132.0", - "resolved": "https://registry.npmjs.org/@oxc-project/types/-/types-0.132.0.tgz", - "integrity": "sha512-FESMOxil5Se014ui/Eq8fT5uHJo6nIRwH0PfJrZJXs6Gek3ZVFOrpUv3YIZT20m+extU98Hg1Ym72U58rlsxUQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/Boshen" - } - }, - "node_modules/@polka/url": { - "version": "1.0.0-next.29", - "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.29.tgz", - "integrity": "sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==", - "dev": true - }, - "node_modules/@rolldown/binding-android-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-android-arm64/-/binding-android-arm64-1.0.2.tgz", - "integrity": "sha512-ZS4D1JPGn/MYQN/SYDWftIE/nVsM8j/AFOYEzAoOE2O3NktQOZru+/vYXGbR/qtdLdIfGCP0lcoJiYVzsEz+iQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-arm64/-/binding-darwin-arm64-1.0.2.tgz", - "integrity": "sha512-vdFA9+C/rekyGce7WqHs/xoT0ioZEWaOFyZLIV1mEeNFaFDUQrPIo8Vs2GvJ6eetb3rzDUtUBgzto3ExpXJB3w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-darwin-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-darwin-x64/-/binding-darwin-x64-1.0.2.tgz", - "integrity": "sha512-BewSOwTHazv77DTYiAZXSqqKZ4KP/KonFisDMVU7PImxoWfB2aepnPhd2E4SWz3zDzYgDNbs6jBmTdgNnF02GA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-freebsd-x64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-freebsd-x64/-/binding-freebsd-x64-1.0.2.tgz", - "integrity": "sha512-m41o7M0YWtUdqk61Tb+jnKb2rN++iRdIASlExkUoKfIAH30DOHCB8fVLzSUpbWHHU8esmEioY62PxzexE8MBuA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm-gnueabihf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm-gnueabihf/-/binding-linux-arm-gnueabihf-1.0.2.tgz", - "integrity": "sha512-jcojB9H7W/jS29pMKWAK1N+fU99vXodHDTatS3b3y/XSOCiHo0kkA74pL3jJmkoQtYpOCxDvaKs1fo2Ij/1X5w==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-gnu/-/binding-linux-arm64-gnu-1.0.2.tgz", - "integrity": "sha512-1jn6qDU5iiOgFgygDzKUuKP0maTi0/f1+sBLgvij/76C77Nm3ts6ufz9Bjg5q5dduxiUIxtq86JIoBvo1xQ4Ig==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-arm64-musl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-arm64-musl/-/binding-linux-arm64-musl-1.0.2.tgz", - "integrity": "sha512-QVLO/czFMdoMFSqlX3bcswcJNm/23r+qoa/jgtmFc/qEp6/jXmIkDjF/XIo8dPfGaiwy1xfQn8o77L79GeXFgw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-ppc64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-ppc64-gnu/-/binding-linux-ppc64-gnu-1.0.2.tgz", - "integrity": "sha512-hgO5Abm0w5UL6FEa2iFnZqo2KlK7TQ5QhV5x09hujBf7t5KzHQ1VmfPuTpqRy/rNlSxua3eWH374xxiVrP+lcA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-s390x-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-s390x-gnu/-/binding-linux-s390x-gnu-1.0.2.tgz", - "integrity": "sha512-fy8rXxuYEu602abC8MUNaPjYLIFzReOaEIEMKMUa0rFEUxNpVXhs15KSSQ4qlqSaM7B6rcj9rDZgADh/IGDzLQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-gnu": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-gnu/-/binding-linux-x64-gnu-1.0.2.tgz", - "integrity": "sha512-0+bOkiQ779+r1WpoHOWHqncvyySci0vKph+myNDYb+im6meJAzHQXay6oEgnkHuUGouM1LKTZwqKpBow6Kj7CQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-linux-x64-musl": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-linux-x64-musl/-/binding-linux-x64-musl-1.0.2.tgz", - "integrity": "sha512-mjSkrzZK5Qsl0a9d1JgILOiuZOSDTVdKENcSXBoqbzSrspLR/4/IRVDo5wd2GgZjNss/viBFJdeq+j7qH2nypw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-openharmony-arm64": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-openharmony-arm64/-/binding-openharmony-arm64-1.0.2.tgz", - "integrity": "sha512-1v5vHasdfQAZoEHakBV72LIFAC9JjnymsiKxp+GEr/ma3+NJCPSaYK+qavInOovJkgwFrs7GccX2d6IgDA3Z5w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-wasm32-wasi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-wasm32-wasi/-/binding-wasm32-wasi-1.0.2.tgz", - "integrity": "sha512-mb1VobWn6NheziTk5/WEaR6AKVbrwT5sOi6C7zk3gy/pD1qtJfU1j4PgTo2NJnOtbL9Dl3Aeei8w9jJ7qC2jZQ==", - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/core": "1.10.0", - "@emnapi/runtime": "1.10.0", - "@napi-rs/wasm-runtime": "^1.1.4" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-arm64-msvc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-arm64-msvc/-/binding-win32-arm64-msvc-1.0.2.tgz", - "integrity": "sha512-SqKonF56vA/L2yHwHYcEp2P34URpOZ7d1fS635cTkpDnUtEGdUbhI6NzsPdqeSWvAAeGDrxjWjNmibDIdFf9/A==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/binding-win32-x64-msvc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@rolldown/binding-win32-x64-msvc/-/binding-win32-x64-msvc-1.0.2.tgz", - "integrity": "sha512-v7qRI7gXLRINcOGXt+7YmAZ6iFuyZVMIoXAxhd8oP+DR9dLfL9GfNIx7PLMxmhZdvq8waUJBQiWN9EKNy+TRBQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": "^20.19.0 || >=22.12.0" - } - }, - "node_modules/@rolldown/pluginutils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.1.tgz", - "integrity": "sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==", - "dev": true - }, - "node_modules/@standard-schema/spec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.1.0.tgz", - "integrity": "sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==", - "dev": true - }, - "node_modules/@sveltejs/acorn-typescript": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/@sveltejs/acorn-typescript/-/acorn-typescript-1.0.10.tgz", - "integrity": "sha512-4WfKk68eTih+MiJD4fSbxN7E8kVBmTMPWHUPYjvl2N0rMs53YLTT8/YjKU5Dtnz5LqDjl7LEw4U7lXR2W3J5WA==", - "peerDependencies": { - "acorn": "^8.9.0" - } - }, - "node_modules/@sveltejs/adapter-auto": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-auto/-/adapter-auto-7.0.1.tgz", - "integrity": "sha512-dvuPm1E7M9NI/+canIQ6KKQDU2AkEefEZ2Dp7cY6uKoPq9Z/PhOXABe526UdW2mN986gjVkuSLkOYIBnS/M2LQ==", - "dev": true, - "peerDependencies": { - "@sveltejs/kit": "^2.0.0" - } - }, - "node_modules/@sveltejs/adapter-static": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@sveltejs/adapter-static/-/adapter-static-3.0.10.tgz", - "integrity": "sha512-7D9lYFWJmB7zxZyTE/qxjksvMqzMuYrrsyh1f4AlZqeZeACPRySjbC3aFiY55wb1tWUaKOQG9PVbm74JcN2Iew==", - "dev": true, - "peerDependencies": { - "@sveltejs/kit": "^2.0.0" - } - }, - "node_modules/@sveltejs/kit": { - "version": "2.61.1", - "resolved": "https://registry.npmjs.org/@sveltejs/kit/-/kit-2.61.1.tgz", - "integrity": "sha512-Ny8s1SR1TyQS2hD2Rvw0XKzU2Nw1eUF52dTb6T2bdcgz7wSC+Nyb5IwjWYlR4b2dvbbR5NJDiQwHg3rnNseghg==", - "dev": true, - "dependencies": { - "@standard-schema/spec": "^1.0.0", - "@sveltejs/acorn-typescript": "^1.0.9", - "@types/cookie": "^0.6.0", - "acorn": "^8.16.0", - "cookie": "^0.6.0", - "devalue": "^5.8.1", - "esm-env": "^1.2.2", - "kleur": "^4.1.5", - "magic-string": "^0.30.5", - "mrmime": "^2.0.0", - "set-cookie-parser": "^3.0.0", - "sirv": "^3.0.0" - }, - "bin": { - "svelte-kit": "svelte-kit.js" - }, - "engines": { - "node": ">=18.13" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.0.0", - "@sveltejs/vite-plugin-svelte": "^3.0.0 || ^4.0.0-next.1 || ^5.0.0 || ^6.0.0-next.0 || ^7.0.0", - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": "^5.3.3 || ^6.0.0", - "vite": "^5.0.3 || ^6.0.0 || ^7.0.0-beta.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "typescript": { - "optional": true - } - } - }, - "node_modules/@sveltejs/vite-plugin-svelte": { - "version": "7.1.2", - "resolved": "https://registry.npmjs.org/@sveltejs/vite-plugin-svelte/-/vite-plugin-svelte-7.1.2.tgz", - "integrity": "sha512-DrUBA2UXRfDmUX/ZTiEopd3X40yavsJF1FX2RygcuIScHL7o5YX1fMvoYnDhjeJQC4weCOklirpNWlcb2NiSeA==", - "dev": true, - "dependencies": { - "deepmerge": "^4.3.1", - "magic-string": "^0.30.21", - "obug": "^2.1.0", - "vitefu": "^1.1.2" - }, - "engines": { - "node": "^20.19 || ^22.12 || >=24" - }, - "peerDependencies": { - "svelte": "^5.46.4", - "vite": "^8.0.0-beta.7 || ^8.0.0" - } - }, - "node_modules/@swc/helpers": { - "version": "0.5.23", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.23.tgz", - "integrity": "sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==", - "dev": true, - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/node": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/node/-/node-4.3.0.tgz", - "integrity": "sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==", - "dev": true, - "dependencies": { - "@jridgewell/remapping": "^2.3.5", - "enhanced-resolve": "^5.21.0", - "jiti": "^2.6.1", - "lightningcss": "1.32.0", - "magic-string": "^0.30.21", - "source-map-js": "^1.2.1", - "tailwindcss": "4.3.0" - } - }, - "node_modules/@tailwindcss/oxide": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide/-/oxide-4.3.0.tgz", - "integrity": "sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==", - "dev": true, - "engines": { - "node": ">= 20" - }, - "optionalDependencies": { - "@tailwindcss/oxide-android-arm64": "4.3.0", - "@tailwindcss/oxide-darwin-arm64": "4.3.0", - "@tailwindcss/oxide-darwin-x64": "4.3.0", - "@tailwindcss/oxide-freebsd-x64": "4.3.0", - "@tailwindcss/oxide-linux-arm-gnueabihf": "4.3.0", - "@tailwindcss/oxide-linux-arm64-gnu": "4.3.0", - "@tailwindcss/oxide-linux-arm64-musl": "4.3.0", - "@tailwindcss/oxide-linux-x64-gnu": "4.3.0", - "@tailwindcss/oxide-linux-x64-musl": "4.3.0", - "@tailwindcss/oxide-wasm32-wasi": "4.3.0", - "@tailwindcss/oxide-win32-arm64-msvc": "4.3.0", - "@tailwindcss/oxide-win32-x64-msvc": "4.3.0" - } - }, - "node_modules/@tailwindcss/oxide-android-arm64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-android-arm64/-/oxide-android-arm64-4.3.0.tgz", - "integrity": "sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-darwin-arm64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-arm64/-/oxide-darwin-arm64-4.3.0.tgz", - "integrity": "sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-darwin-x64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-darwin-x64/-/oxide-darwin-x64-4.3.0.tgz", - "integrity": "sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-freebsd-x64": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-freebsd-x64/-/oxide-freebsd-x64-4.3.0.tgz", - "integrity": "sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm-gnueabihf": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm-gnueabihf/-/oxide-linux-arm-gnueabihf-4.3.0.tgz", - "integrity": "sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-gnu": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-gnu/-/oxide-linux-arm64-gnu-4.3.0.tgz", - "integrity": "sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-arm64-musl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-arm64-musl/-/oxide-linux-arm64-musl-4.3.0.tgz", - "integrity": "sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-gnu": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-gnu/-/oxide-linux-x64-gnu-4.3.0.tgz", - "integrity": "sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-linux-x64-musl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-linux-x64-musl/-/oxide-linux-x64-musl-4.3.0.tgz", - "integrity": "sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-wasm32-wasi": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-wasm32-wasi/-/oxide-wasm32-wasi-4.3.0.tgz", - "integrity": "sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==", - "bundleDependencies": [ - "@napi-rs/wasm-runtime", - "@emnapi/core", - "@emnapi/runtime", - "@tybys/wasm-util", - "@emnapi/wasi-threads", - "tslib" - ], - "cpu": [ - "wasm32" - ], - "dev": true, - "optional": true, - "dependencies": { - "@emnapi/core": "^1.10.0", - "@emnapi/runtime": "^1.10.0", - "@emnapi/wasi-threads": "^1.2.1", - "@napi-rs/wasm-runtime": "^1.1.4", - "@tybys/wasm-util": "^0.10.1", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@tailwindcss/oxide-win32-arm64-msvc": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-arm64-msvc/-/oxide-win32-arm64-msvc-4.3.0.tgz", - "integrity": "sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/oxide-win32-x64-msvc": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/oxide-win32-x64-msvc/-/oxide-win32-x64-msvc-4.3.0.tgz", - "integrity": "sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 20" - } - }, - "node_modules/@tailwindcss/vite": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@tailwindcss/vite/-/vite-4.3.0.tgz", - "integrity": "sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==", - "dev": true, - "dependencies": { - "@tailwindcss/node": "4.3.0", - "@tailwindcss/oxide": "4.3.0", - "tailwindcss": "4.3.0" - }, - "peerDependencies": { - "vite": "^5.2.0 || ^6 || ^7 || ^8" - } - }, - "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", - "dev": true, - "optional": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@types/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", - "dev": true - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==" - }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==" - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/aria-query": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", - "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bits-ui": { - "version": "2.18.1", - "resolved": "https://registry.npmjs.org/bits-ui/-/bits-ui-2.18.1.tgz", - "integrity": "sha512-KkemzKFH4T3gt3H+P86JcnAWExjByv/6vlwjm/BoCwTPHu03yiCdxbghdJLvFReQTe0acCAiRcKfmixxD6XvlA==", - "dev": true, - "dependencies": { - "@floating-ui/core": "^1.7.1", - "@floating-ui/dom": "^1.7.1", - "esm-env": "^1.1.2", - "runed": "^0.35.1", - "svelte-toolbelt": "^0.10.6", - "tabbable": "^6.2.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/huntabyte" - }, - "peerDependencies": { - "@internationalized/date": "^3.8.1", - "svelte": "^5.33.0" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", - "dev": true, - "dependencies": { - "readdirp": "^4.0.1" - }, - "engines": { - "node": ">= 14.16.0" - }, - "funding": { - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cookie": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.6.0.tgz", - "integrity": "sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==", - "dev": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/devalue": { - "version": "5.8.1", - "resolved": "https://registry.npmjs.org/devalue/-/devalue-5.8.1.tgz", - "integrity": "sha512-4CXDYRBGqN+57wVJkuXBYmpAVUSg3L6JAQa/DFqm238G73E1wuyc/JhGQJzN7vUf/CMphYau2zXbfWzDR5aTEw==" - }, - "node_modules/enhanced-resolve": { - "version": "5.22.1", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.22.1.tgz", - "integrity": "sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==", - "dev": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.3.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/esm-env": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/esm-env/-/esm-env-1.2.2.tgz", - "integrity": "sha512-Epxrv+Nr/CaL4ZcFGPJIYLWFom+YeV1DqMLHJoEd9SYRxNbaFruBwfEX/kkHUJf55j2+TUbmDcmuilbP1TmXHA==" - }, - "node_modules/esrap": { - "version": "2.2.9", - "resolved": "https://registry.npmjs.org/esrap/-/esrap-2.2.9.tgz", - "integrity": "sha512-4KijP+NxCWthMCUC3qHbE6n4vCjqgJS1uAYKhuT/GWfFTf1Qyive2TgOjep+gzbSzRfnNyaN/UU9YmdOt8Eg0A==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - }, - "peerDependencies": { - "@typescript-eslint/types": "^8.2.0" - }, - "peerDependenciesMeta": { - "@typescript-eslint/types": { - "optional": true - } - } - }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/inline-style-parser": { - "version": "0.2.7", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.7.tgz", - "integrity": "sha512-Nb2ctOyNR8DqQoR0OwRG95uNWIC0C1lCgf5Naz5H6Ji72KZ8OcFZLz2P5sNgwlyoJ8Yif11oMuYs5pBQa86csA==" - }, - "node_modules/is-reference": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", - "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", - "dependencies": { - "@types/estree": "^1.0.6" - } - }, - "node_modules/jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", - "dev": true, - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/kleur": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", - "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/locate-character": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/locate-character/-/locate-character-3.0.0.tgz", - "integrity": "sha512-SW13ws7BjaeJ6p7Q6CO2nchbYEc3X3J6WrmTTDto7yMPqVSZTUyY5Tjbid+Ab8gLnATtygYtiDIJGQRRn2ZOiA==" - }, - "node_modules/lz-string": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/lz-string/-/lz-string-1.5.0.tgz", - "integrity": "sha512-h5bgJWpxJNswbU7qCrV0tIKQCaS3blPDrqKWx+QxzuzL1zGUzij9XCWLrSLsJPu5t+eWA/ycetzYAO5IOMcWAQ==", - "dev": true, - "bin": { - "lz-string": "bin/bin.js" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/mode-watcher": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/mode-watcher/-/mode-watcher-1.1.0.tgz", - "integrity": "sha512-mUT9RRGPDYenk59qJauN1rhsIMKBmWA3xMF+uRwE8MW/tjhaDSCCARqkSuDTq8vr4/2KcAxIGVjACxTjdk5C3g==", - "dependencies": { - "runed": "^0.25.0", - "svelte-toolbelt": "^0.7.1" - }, - "peerDependencies": { - "svelte": "^5.27.0" - } - }, - "node_modules/mode-watcher/node_modules/runed": { - "version": "0.25.0", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.25.0.tgz", - "integrity": "sha512-7+ma4AG9FT2sWQEA0Egf6mb7PBT2vHyuHail1ie8ropfSjvZGtEAx8YTmUjv/APCsdRRxEVvArNjALk9zFSOrg==", - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.7.0" - } - }, - "node_modules/mode-watcher/node_modules/svelte-toolbelt": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.7.1.tgz", - "integrity": "sha512-HcBOcR17Vx9bjaOceUvxkY3nGmbBmCBBbuWLLEWO6jtmWH8f/QoWmbyUfQZrpDINH39en1b8mptfPQT9VKQ1xQ==", - "funding": [ - "https://github.com/sponsors/huntabyte" - ], - "dependencies": { - "clsx": "^2.1.1", - "runed": "^0.23.2", - "style-to-object": "^1.0.8" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "peerDependencies": { - "svelte": "^5.0.0" - } - }, - "node_modules/mode-watcher/node_modules/svelte-toolbelt/node_modules/runed": { - "version": "0.23.4", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.23.4.tgz", - "integrity": "sha512-9q8oUiBYeXIDLWNK5DfCWlkL0EW3oGbk845VdKlPeia28l751VpfesaB/+7pI6rnbx1I6rqoZ2fZxptOJLxILA==", - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "esm-env": "^1.0.0" - }, - "peerDependencies": { - "svelte": "^5.7.0" - } - }, - "node_modules/mri": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", - "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mrmime": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", - "integrity": "sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/obug": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/obug/-/obug-2.1.1.tgz", - "integrity": "sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/sxzz", - "https://opencollective.com/debug" - ] - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/postcss": { - "version": "8.5.15", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.15.tgz", - "integrity": "sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==", - "dev": true, - "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.12", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/readdirp": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", - "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", - "dev": true, - "engines": { - "node": ">= 14.18.0" - }, - "funding": { - "type": "individual", - "url": "https://paulmillr.com/funding/" - } - }, - "node_modules/rolldown": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/rolldown/-/rolldown-1.0.2.tgz", - "integrity": "sha512-oZx5zVDtVB44AW3eaifgDml1gWRDZGvjcfdxonE4swNPG98PrrXjaO/KrnUjzlMnztCCRVlUueA1kCXhARGk6g==", - "dev": true, - "dependencies": { - "@oxc-project/types": "=0.132.0", - "@rolldown/pluginutils": "^1.0.0" - }, - "bin": { - "rolldown": "bin/cli.mjs" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "optionalDependencies": { - "@rolldown/binding-android-arm64": "1.0.2", - "@rolldown/binding-darwin-arm64": "1.0.2", - "@rolldown/binding-darwin-x64": "1.0.2", - "@rolldown/binding-freebsd-x64": "1.0.2", - "@rolldown/binding-linux-arm-gnueabihf": "1.0.2", - "@rolldown/binding-linux-arm64-gnu": "1.0.2", - "@rolldown/binding-linux-arm64-musl": "1.0.2", - "@rolldown/binding-linux-ppc64-gnu": "1.0.2", - "@rolldown/binding-linux-s390x-gnu": "1.0.2", - "@rolldown/binding-linux-x64-gnu": "1.0.2", - "@rolldown/binding-linux-x64-musl": "1.0.2", - "@rolldown/binding-openharmony-arm64": "1.0.2", - "@rolldown/binding-wasm32-wasi": "1.0.2", - "@rolldown/binding-win32-arm64-msvc": "1.0.2", - "@rolldown/binding-win32-x64-msvc": "1.0.2" - } - }, - "node_modules/runed": { - "version": "0.35.1", - "resolved": "https://registry.npmjs.org/runed/-/runed-0.35.1.tgz", - "integrity": "sha512-2F4Q/FZzbeJTFdIS/PuOoPRSm92sA2LhzTnv6FXhCoENb3huf5+fDuNOg1LNvGOouy3u/225qxmuJvcV3IZK5Q==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte", - "https://github.com/sponsors/tglide" - ], - "dependencies": { - "dequal": "^2.0.3", - "esm-env": "^1.0.0", - "lz-string": "^1.5.0" - }, - "peerDependencies": { - "@sveltejs/kit": "^2.21.0", - "svelte": "^5.7.0" - }, - "peerDependenciesMeta": { - "@sveltejs/kit": { - "optional": true - } - } - }, - "node_modules/sade": { - "version": "1.8.1", - "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", - "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", - "dev": true, - "dependencies": { - "mri": "^1.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/set-cookie-parser": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-3.1.0.tgz", - "integrity": "sha512-kjnC1DXBHcxaOaOXBHBeRtltsDG2nUiUni+jP92M9gYdW12rsmx92UsfpH7o5tDRs7I1ZZPSQJQGv3UaRfCiuw==", - "dev": true - }, - "node_modules/sirv": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/sirv/-/sirv-3.0.2.tgz", - "integrity": "sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==", - "dev": true, - "dependencies": { - "@polka/url": "^1.0.0-next.24", - "mrmime": "^2.0.0", - "totalist": "^3.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/style-to-object": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.14.tgz", - "integrity": "sha512-LIN7rULI0jBscWQYaSswptyderlarFkjQ+t79nzty8tcIAceVomEVlLzH5VP4Cmsv6MtKhs7qaAiwlcp+Mgaxw==", - "dependencies": { - "inline-style-parser": "0.2.7" - } - }, - "node_modules/svelte": { - "version": "5.56.0", - "resolved": "https://registry.npmjs.org/svelte/-/svelte-5.56.0.tgz", - "integrity": "sha512-kTXr26t1bchFp28ROrb957LtbujpBmBDibmqMGziVpUs7awBi96TGgX6SovrA8BNoEUDVRK2Fb9FkeYlGspoVg==", - "dependencies": { - "@jridgewell/remapping": "^2.3.4", - "@jridgewell/sourcemap-codec": "^1.5.0", - "@sveltejs/acorn-typescript": "^1.0.10", - "@types/estree": "^1.0.5", - "@types/trusted-types": "^2.0.7", - "acorn": "^8.12.1", - "aria-query": "5.3.1", - "axobject-query": "^4.1.0", - "clsx": "^2.1.1", - "devalue": "^5.8.1", - "esm-env": "^1.2.1", - "esrap": "^2.2.9", - "is-reference": "^3.0.3", - "locate-character": "^3.0.0", - "magic-string": "^0.30.11", - "zimmerframe": "^1.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/svelte-check": { - "version": "4.4.8", - "resolved": "https://registry.npmjs.org/svelte-check/-/svelte-check-4.4.8.tgz", - "integrity": "sha512-67adfgBox5eNSNIvIIwgFizKGdcRrGpiMoNO2obHcYuLz7iTa8Xgm/NGU3ntMFnNm8K1grFOIG6HhMLX/vcN8w==", - "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.25", - "chokidar": "^4.0.1", - "fdir": "^6.2.0", - "picocolors": "^1.0.0", - "sade": "^1.7.4" - }, - "bin": { - "svelte-check": "bin/svelte-check" - }, - "engines": { - "node": ">= 18.0.0" - }, - "peerDependencies": { - "svelte": "^4.0.0 || ^5.0.0-next.0", - "typescript": ">=5.0.0" - } - }, - "node_modules/svelte-toolbelt": { - "version": "0.10.6", - "resolved": "https://registry.npmjs.org/svelte-toolbelt/-/svelte-toolbelt-0.10.6.tgz", - "integrity": "sha512-YWuX+RE+CnWYx09yseAe4ZVMM7e7GRFZM6OYWpBKOb++s+SQ8RBIMMe+Bs/CznBMc0QPLjr+vDBxTAkozXsFXQ==", - "dev": true, - "funding": [ - "https://github.com/sponsors/huntabyte" - ], - "dependencies": { - "clsx": "^2.1.1", - "runed": "^0.35.1", - "style-to-object": "^1.0.8" - }, - "engines": { - "node": ">=18", - "pnpm": ">=8.7.0" - }, - "peerDependencies": { - "svelte": "^5.30.2" - } - }, - "node_modules/tabbable": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.4.0.tgz", - "integrity": "sha512-05PUHKSNE8ou2dwIxTngl4EzcnsCDZGJ/iCLtDflR/SHB/ny14rXc+qU5P4mG9JkusiV7EivzY9Mhm55AzAvCg==", - "dev": true - }, - "node_modules/tailwind-merge": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.6.0.tgz", - "integrity": "sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==", - "dev": true, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/tailwind-variants": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-3.2.2.tgz", - "integrity": "sha512-Mi4kHeMTLvKlM98XPnK+7HoBPmf4gygdFmqQPaDivc3DpYS6aIY6KiG/PgThrGvii5YZJqRsPz0aPyhoFzmZgg==", - "dev": true, - "engines": { - "node": ">=16.x", - "pnpm": ">=7.x" - }, - "peerDependencies": { - "tailwind-merge": ">=3.0.0", - "tailwindcss": "*" - }, - "peerDependenciesMeta": { - "tailwind-merge": { - "optional": true - } - } - }, - "node_modules/tailwindcss": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.3.0.tgz", - "integrity": "sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==", - "dev": true - }, - "node_modules/tapable": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.3.3.tgz", - "integrity": "sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", - "dev": true, - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/totalist": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/totalist/-/totalist-3.0.1.tgz", - "integrity": "sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", - "dev": true - }, - "node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/vite": { - "version": "8.0.14", - "resolved": "https://registry.npmjs.org/vite/-/vite-8.0.14.tgz", - "integrity": "sha512-s4BJJ+5y1pYL6Otw51FHhVJQhPnuRinKig64g/1+EUNaJsd3gCKdD31IPFvswUgW9/60QT9oFHbZHbQK5imcxw==", - "dev": true, - "dependencies": { - "lightningcss": "^1.32.0", - "picomatch": "^4.0.4", - "postcss": "^8.5.15", - "rolldown": "1.0.2", - "tinyglobby": "^0.2.16" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "@vitejs/devtools": "^0.1.18", - "esbuild": "^0.27.0 || ^0.28.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "@vitejs/devtools": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vitefu": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/vitefu/-/vitefu-1.1.3.tgz", - "integrity": "sha512-ub4okH7Z5KLjb6hDyjqrGXqWtWvoYdU3IGm/NorpgHncKoLTCfRIbvlhBm7r0YstIaQRYlp4yEbFqDcKSzXSSg==", - "dev": true, - "peerDependencies": { - "vite": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "vite": { - "optional": true - } - } - }, - "node_modules/zimmerframe": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/zimmerframe/-/zimmerframe-1.1.4.tgz", - "integrity": "sha512-B58NGBEoc8Y9MWWCQGl/gq9xBCe4IiKM0a2x7GZdQKOW5Exr8S1W24J6OgM1njK8xCRGvAJIL/MxXHf6SkmQKQ==" - } - } -} diff --git a/website/package.json b/website/package.json deleted file mode 100644 index e6a2d599..00000000 --- a/website/package.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "name": "cora-website", - "private": true, - "version": "0.0.1", - "type": "module", - "scripts": { - "dev": "vite dev", - "build": "vite build", - "preview": "vite preview", - "prepare": "svelte-kit sync || echo ''", - "check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json" - }, - "devDependencies": { - "@internationalized/date": "^3.12.2", - "@lucide/svelte": "^1.17.0", - "@sveltejs/adapter-auto": "^7.0.1", - "@sveltejs/adapter-static": "^3.0.10", - "@sveltejs/kit": "^2.57.0", - "@sveltejs/vite-plugin-svelte": "^7.0.0", - "@tailwindcss/vite": "^4.3.0", - "bits-ui": "^2.18.1", - "clsx": "^2.1.1", - "svelte": "^5.55.2", - "svelte-check": "^4.4.6", - "tailwind-merge": "^3.6.0", - "tailwind-variants": "^3.2.2", - "tailwindcss": "^4.3.0", - "typescript": "^6.0.2", - "vite": "^8.0.7" - }, - "dependencies": { - "mode-watcher": "^1.1.0" - } -} diff --git a/website/src/app.css b/website/src/app.css deleted file mode 100644 index b98ad430..00000000 --- a/website/src/app.css +++ /dev/null @@ -1,626 +0,0 @@ -@import 'tailwindcss'; - -/* ============================================ - DESIGN SYSTEM — cora CLI - oklch color space, dark + light mode - ============================================ */ - -:root { - /* Light mode (default for web) */ - --background: oklch(0.99 0.002 270); - --foreground: oklch(0.13 0.02 270); - --card: oklch(1 0 0); - --card-foreground: oklch(0.13 0.02 270); - --muted: oklch(0.96 0.005 270); - --muted-foreground: oklch(0.5 0.02 270); - --accent: oklch(0.55 0.22 270); - --accent-bright: oklch(0.6 0.24 270); - --accent-foreground: oklch(0.98 0 0); - --accent-dim: oklch(0.7 0.12 270); - --success: oklch(0.55 0.19 145); - --warning: oklch(0.65 0.15 85); - --destructive: oklch(0.5 0.22 25); - --border: oklch(0.91 0.005 270); - --border-subtle: oklch(0.94 0.003 270); - --ring: oklch(0.55 0.22 270); - --shadow-card: 0 1px 3px oklch(0 0 0 / 0.06); - --shadow-card-hover: 0 4px 12px oklch(0 0 0 / 0.1); - - --font-sans: 'Inter', system-ui, -apple-system, sans-serif; - --font-mono: 'JetBrains Mono', ui-monospace, SFMono-Regular, 'SF Mono', Menlo, Consolas, monospace; - - --space-0: 0; - --space-1: 0.25rem; - --space-2: 0.5rem; - --space-3: 0.75rem; - --space-4: 1rem; - --space-5: 1.25rem; - --space-6: 1.5rem; - --space-8: 2rem; - --space-10: 2.5rem; - --space-12: 3rem; - --space-16: 4rem; - --space-20: 5rem; - --space-24: 6rem; - --space-32: 8rem; -} - -.dark { - --background: oklch(0.13 0.01 270); - --foreground: oklch(0.92 0.01 270); - --card: oklch(0.17 0.01 270); - --card-foreground: oklch(0.92 0.01 270); - --muted: oklch(0.22 0.01 270); - --muted-foreground: oklch(0.65 0.01 270); - --accent: oklch(0.65 0.22 270); - --accent-bright: oklch(0.72 0.2 270); - --accent-foreground: oklch(0.98 0 0); - --accent-dim: oklch(0.45 0.12 270); - --success: oklch(0.72 0.19 145); - --warning: oklch(0.78 0.15 85); - --destructive: oklch(0.55 0.22 25); - --border: oklch(0.27 0.01 270); - --border-subtle: oklch(0.22 0.01 270); - --ring: oklch(0.65 0.22 270); - --shadow-card: 0 1px 3px oklch(0 0 0 / 0.3); - --shadow-card-hover: 0 4px 12px oklch(0 0 0 / 0.4); -} - -@theme { - --color-background: var(--background); - --color-foreground: var(--foreground); - --color-card: var(--card); - --color-card-foreground: var(--card-foreground); - --color-muted: var(--muted); - --color-muted-foreground: var(--muted-foreground); - --color-accent: var(--accent); - --color-accent-foreground: var(--accent-foreground); - --color-success: var(--success); - --color-warning: var(--warning); - --color-destructive: var(--destructive); - --color-border: var(--border); - --color-ring: var(--ring); - --font-family-sans: var(--font-sans); - --font-family-mono: var(--font-mono); -} - -html { - background-color: var(--background); - color: var(--foreground); - font-family: var(--font-sans); - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; - scroll-behavior: smooth; -} - -body { - min-height: 100vh; - line-height: 1.5; -} - -::selection { - background: oklch(0.55 0.22 270 / 0.3); - color: var(--accent-foreground); -} - -code, .font-mono { - font-family: var(--font-mono); -} - -/* ---- Scrollbar ---- */ -::-webkit-scrollbar { width: 6px; height: 6px; } -::-webkit-scrollbar-track { background: var(--muted); } -::-webkit-scrollbar-thumb { background: var(--muted-foreground); border-radius: 3px; } -::-webkit-scrollbar-thumb:hover { background: oklch(0.75 0.01 270); } - -/* ============================================ - ANIMATIONS - ============================================ */ -@media (prefers-reduced-motion: no-preference) { - @keyframes fade-in-up { - from { opacity: 0; transform: translateY(20px); } - to { opacity: 1; transform: translateY(0); } - } - - @keyframes blink { - 0%, 50% { opacity: 1; } - 51%, 100% { opacity: 0; } - } - - @keyframes accordion-down { - from { height: 0; } - to { height: var(--bits-accordion-content-height); } - } - - @keyframes accordion-up { - from { height: var(--bits-accordion-content-height); } - to { height: 0; } - } - - @keyframes glow-pulse { - 0%, 100% { opacity: 0.4; transform: scale(1); } - 50% { opacity: 0.7; transform: scale(1.05); } - } - - @keyframes float { - 0%, 100% { transform: translateY(0px); } - 50% { transform: translateY(-10px); } - } - - .animate-fade-in { animation: fade-in-up 0.6s ease-out forwards; } - .animate-fade-in-delay-1 { animation: fade-in-up 0.6s ease-out 0.1s forwards; opacity: 0; } - .animate-fade-in-delay-2 { animation: fade-in-up 0.6s ease-out 0.2s forwards; opacity: 0; } - .animate-fade-in-delay-3 { animation: fade-in-up 0.6s ease-out 0.3s forwards; opacity: 0; } - .animate-fade-in-delay-4 { animation: fade-in-up 0.6s ease-out 0.4s forwards; opacity: 0; } - - .cursor-blink { animation: blink 1s step-end infinite; } - - .animate-accordion-down { animation: accordion-down 0.2s ease-out; } - .animate-accordion-up { animation: accordion-up 0.2s ease-out; } - - .animate-glow-pulse { animation: glow-pulse 4s ease-in-out infinite; } - .animate-float { animation: float 6s ease-in-out infinite; } - - /* Hero entrance cascade */ - .animate-fade-in-up { - opacity: 0; - transform: translateY(20px); - animation: fade-in-up 0.6s ease-out forwards; - } - .delay-100 { animation-delay: 100ms; } - .delay-200 { animation-delay: 200ms; } - .delay-300 { animation-delay: 300ms; } - .delay-400 { animation-delay: 400ms; } - .delay-500 { animation-delay: 500ms; } - - /* Scroll Reveal — hidden until IntersectionObserver adds .revealed */ - .scroll-reveal { - opacity: 0; - transform: translateY(20px); - transition: opacity 0.6s ease-out, transform 0.6s ease-out; - } - .scroll-reveal.revealed { - opacity: 1; - transform: translateY(0); - } - - /* Terminal typing line-by-line fade-in */ - @keyframes fade-in-line { - from { opacity: 0; transform: translateX(-8px); } - to { opacity: 1; transform: translateX(0); } - } - - /* Timeline number pulse */ - @keyframes number-pulse { - 0%, 100% { box-shadow: 0 0 0 0 oklch(0.55 0.22 270 / 0.4); } - 50% { box-shadow: 0 0 0 8px oklch(0.55 0.22 270 / 0); } - } - - .timeline-number.revealed { - animation: number-pulse 2s ease-in-out 1 forwards; - } - - /* Comparison table row stagger */ - .compare-table tbody tr { - opacity: 0; - transform: translateY(8px); - transition: opacity 0.4s ease-out, transform 0.4s ease-out; - } - .compare-table tbody tr.revealed { - opacity: 1; - transform: translateY(0); - } -} - -@media (prefers-reduced-motion: reduce) { - *, *::before, *::after { - animation-duration: 0.01ms !important; - transition-duration: 0.01ms !important; - } - html { scroll-behavior: auto; } - .animate-fade-in, .animate-fade-in-up, .animate-fade-in-delay-1, .animate-fade-in-delay-2, - .animate-fade-in-delay-3, .animate-fade-in-delay-4, - .scroll-reveal { opacity: 1 !important; transform: none !important; } -} - -/* ============================================ - HERO EFFECTS - ============================================ */ -.hero-gradient { - background: linear-gradient(135deg, oklch(0.6 0.24 270), oklch(0.55 0.22 270), oklch(0.5 0.18 240)); - -webkit-background-clip: text; - -webkit-text-fill-color: transparent; - background-clip: text; -} - -.dark .hero-gradient { - background: linear-gradient(135deg, oklch(0.72 0.2 270), oklch(0.65 0.22 270), oklch(0.6 0.18 240)); - -webkit-background-clip: text; - background-clip: text; -} - -.glow-purple { - box-shadow: 0 0 60px -12px oklch(0.55 0.22 270 / 0.2); -} - -.dark .glow-purple { - box-shadow: 0 0 60px -12px oklch(0.65 0.22 270 / 0.2); -} - -.glow-text { - text-shadow: 0 0 40px oklch(0.55 0.22 270 / 0.2); -} - -.dark .glow-text { - text-shadow: 0 0 40px oklch(0.65 0.22 270 / 0.25); -} - -.grid-bg { - background-image: - linear-gradient(oklch(0.55 0.22 270 / 0.04) 1px, transparent 1px), - linear-gradient(90deg, oklch(0.55 0.22 270 / 0.04) 1px, transparent 1px); - background-size: 64px 64px; -} - -.dark .grid-bg { - background-image: - linear-gradient(oklch(0.65 0.22 270 / 0.03) 1px, transparent 1px), - linear-gradient(90deg, oklch(0.65 0.22 270 / 0.03) 1px, transparent 1px); -} - -/* Hero glow orb */ -.hero-glow { - position: absolute; - border-radius: 50%; - filter: blur(80px); - pointer-events: none; -} - -/* ============================================ - SECTION LAYOUTS - ============================================ */ -.section { - width: 100%; - max-width: 1152px; - margin-left: auto; - margin-right: auto; - padding-left: var(--space-6); - padding-right: var(--space-6); -} -@media (min-width: 768px) { - .section { padding-left: var(--space-8); padding-right: var(--space-8); } -} -@media (min-width: 1280px) { - .section { padding-left: var(--space-10); padding-right: var(--space-10); } -} - -.section-hero { - padding-top: var(--space-24); - padding-bottom: var(--space-16); -} - -.section-compact { - padding-top: var(--space-16); - padding-bottom: var(--space-16); -} - -.section-tall { - padding-top: var(--space-24); - padding-bottom: var(--space-24); -} - -/* ============================================ - GLASS CARD - ============================================ */ -.glass-card { - background: oklch(1 0 0 / 0.7); - backdrop-filter: blur(12px); - -webkit-backdrop-filter: blur(12px); - border: 1px solid var(--border); - border-radius: var(--space-4); - transition: border-color 200ms ease-out, box-shadow 200ms ease-out; -} -.glass-card:hover { - border-color: oklch(0.55 0.22 270 / 0.4); - box-shadow: var(--shadow-card-hover); -} - -.dark .glass-card { - background: oklch(0.17 0.01 270 / 0.6); - border-color: oklch(0.27 0.01 270 / 0.5); -} -.dark .glass-card:hover { - border-color: oklch(0.65 0.22 270 / 0.3); - box-shadow: 0 0 24px oklch(0.65 0.22 270 / 0.08); -} - -/* ============================================ - FEATURE ICON - ============================================ */ -.feature-icon { - display: flex; - align-items: center; - justify-content: center; - width: var(--space-10); - height: var(--space-10); - border-radius: var(--space-3); - background: oklch(0.55 0.22 270 / 0.08); - color: var(--accent); - flex-shrink: 0; -} - -.dark .feature-icon { - background: oklch(0.65 0.22 270 / 0.1); -} - -/* ============================================ - CONNECT LINE (architecture flow) - ============================================ */ -.connect-line { - display: flex; - flex-direction: column; - align-items: center; - padding: var(--space-1) 0; -} -.connect-line::before { - content: ''; - display: block; - width: 1px; - height: var(--space-4); - background: oklch(0.55 0.22 270 / 0.2); -} - -.dark .connect-line::before { - background: oklch(0.65 0.22 270 / 0.3); -} - -/* ============================================ - BUTTONS (landing page) - ============================================ */ -.btn-primary { - display: inline-flex; - align-items: center; - justify-content: center; - gap: var(--space-2); - background: var(--accent); - color: var(--accent-foreground); - border-radius: var(--space-2); - padding: var(--space-2) var(--space-5); - font-weight: 600; - font-size: 14px; - font-family: var(--font-sans); - min-height: 44px; - border: none; - cursor: pointer; - text-decoration: none; - transition: transform 150ms ease-out, box-shadow 200ms ease-out; -} -.btn-primary:hover { - transform: translateY(-1px); - box-shadow: 0 0 24px oklch(0.55 0.22 270 / 0.3); -} -.btn-primary:active { - transform: translateY(0); -} - -.dark .btn-primary:hover { - box-shadow: 0 0 24px oklch(0.65 0.22 270 / 0.35); -} - -.btn-ghost { - display: inline-flex; - align-items: center; - justify-content: center; - gap: var(--space-2); - background: transparent; - color: var(--muted-foreground); - border: 1px solid var(--border); - border-radius: var(--space-2); - padding: var(--space-2) var(--space-5); - font-weight: 500; - font-size: 14px; - font-family: var(--font-sans); - min-height: 44px; - cursor: pointer; - text-decoration: none; - transition: border-color 150ms ease-out, color 150ms ease-out; -} -.btn-ghost:hover { - border-color: var(--accent); - color: var(--accent); -} - -/* ============================================ - BADGES - ============================================ */ -.accent-badge { - display: inline-flex; - align-items: center; - gap: var(--space-1); - padding: var(--space-1) var(--space-3); - border-radius: 9999px; - background: oklch(0.55 0.22 270 / 0.08); - color: var(--accent); - font-size: 12px; - font-weight: 600; - letter-spacing: 0.02em; -} -.badge-dot { - width: 6px; - height: 6px; - border-radius: 9999px; - background: var(--accent); -} - -/* ============================================ - TERMINAL BLOCK - ============================================ */ -.terminal-block { - background: linear-gradient(135deg, var(--card), var(--muted)); - border: 1px solid var(--border); - position: relative; -} - -.terminal-block::before { - content: ''; - position: absolute; - top: 0; - left: 0; - right: 0; - height: 1px; - background: linear-gradient(90deg, transparent, var(--accent), transparent); - opacity: 0.4; -} - -/* Terminal internal components */ -.terminal { - background: oklch(0.10 0 0); - border: 1px solid var(--border); - border-radius: var(--space-3); - overflow: hidden; - font-family: var(--font-mono); -} - -.terminal-header { - display: flex; - align-items: center; - gap: var(--space-2); - padding: var(--space-3) var(--space-4); - border-bottom: 1px solid var(--border); - background: oklch(0.10 0 0); -} - -.terminal-body { - padding: var(--space-4) var(--space-5); - font-size: 0.8125rem; - line-height: 1.625; - color: var(--foreground); - overflow-x: auto; -} - -.terminal-title { - font-size: 12px; - font-weight: 500; - color: var(--muted-foreground); - margin-left: var(--space-2); - font-family: var(--font-sans); -} - -.terminal-dot { - width: var(--space-2); - height: var(--space-2); - border-radius: 9999px; -} -.terminal-dot-red { background: var(--destructive); } -.terminal-dot-yellow { background: var(--warning); } -.terminal-dot-green { background: var(--success); } - -/* ============================================ - SYNTAX HIGHLIGHTING (terminal) - ============================================ */ -.syntax-cmd { color: var(--accent-bright); font-weight: 600; } -.syntax-flag { color: oklch(0.75 0.15 240); } -.syntax-highlight { color: var(--accent); } -.syntax-string { color: oklch(0.78 0.16 155); } - -/* Cursor blink for terminal demos */ -.typing-cursor { - display: inline-block; - width: 8px; - height: 1.2em; - background: var(--accent); - vertical-align: text-bottom; - animation: blink 1s step-end infinite; -} - -/* Copy button for terminal blocks */ -.copy-btn { - position: absolute; - top: var(--space-3); - right: var(--space-3); - display: flex; - align-items: center; - justify-content: center; - width: 32px; - height: 32px; - border-radius: var(--space-1); - border: 1px solid var(--border); - background: var(--card); - color: var(--muted-foreground); - cursor: pointer; - opacity: 0; - transition: opacity 150ms ease, color 150ms ease; -} -.terminal:hover .copy-btn, -.terminal-block:hover .copy-btn { opacity: 1; } -.copy-btn:hover { color: var(--foreground); } - -/* ============================================ - TIMELINE / FLOW STEPS - ============================================ */ -.timeline-step { - display: flex; - flex-direction: column; - align-items: center; - text-align: center; - gap: var(--space-3); -} -.timeline-number { - width: var(--space-10); - height: var(--space-10); - display: flex; - align-items: center; - justify-content: center; - border-radius: 9999px; - background: oklch(0.55 0.22 270 / 0.08); - color: var(--accent); - font-weight: 700; - font-size: 18px; -} - -.dark .timeline-number { - background: oklch(0.65 0.22 270 / 0.1); -} - -/* ============================================ - COMPARISON / TABLE SYMBOLS - ============================================ */ -.cora-col { - background: oklch(0.55 0.22 270 / 0.04); -} -.cora-col th, -.cora-col td { - color: var(--accent); -} - -.dark .cora-col { - background: oklch(0.65 0.22 270 / 0.06); -} - -/* ============================================ - HEADER - ============================================ */ -.site-header { - position: sticky; - top: 0; - z-index: 50; - border-bottom: 1px solid var(--border); - background: oklch(0.99 0.002 270 / 0.8); - backdrop-filter: blur(12px); - -webkit-backdrop-filter: blur(12px); -} - -.dark .site-header { - background: oklch(0.13 0.01 270 / 0.8); -} - -.site-header-link { - color: var(--muted-foreground); - font-size: 14px; - text-decoration: none; - transition: color 150ms ease; -} -.site-header-link:hover, -.site-header-link.active { - color: var(--foreground); -} diff --git a/website/src/app.d.ts b/website/src/app.d.ts deleted file mode 100644 index 7d72385c..00000000 --- a/website/src/app.d.ts +++ /dev/null @@ -1,19 +0,0 @@ -// See https://svelte.dev/docs/kit/types#app.d.ts -// for information about these interfaces -declare global { - namespace App { - // interface Error {} - // interface Locals {} - // interface PageData {} - // interface PageState {} - // interface Platform {} - } -} - -// Allow ?raw imports for markdown files -declare module '*?raw' { - const content: string; - export default content; -} - -export {}; diff --git a/website/src/app.html b/website/src/app.html deleted file mode 100644 index 814f97d9..00000000 --- a/website/src/app.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - - - - - - cora — AI Code Review CLI - - - - - - - - - - %sveltekit.head% - - -
%sveltekit.body%
- - diff --git a/website/src/lib/components/landing/ComparisonTable.svelte b/website/src/lib/components/landing/ComparisonTable.svelte deleted file mode 100644 index 61393d55..00000000 --- a/website/src/lib/components/landing/ComparisonTable.svelte +++ /dev/null @@ -1,359 +0,0 @@ - - - -
-

- Why developers choose cora -

-

- Compared to popular code review tools. -

- - - - - -
- {#each features as feat, i} -
-
- {feat.name} -
-
- -
- cora - {#if cellIcon(feat.cora) === 'check'} - ✓ - {:else} - {feat.cora} - {/if} -
- - {#each competitors as comp} -
- {comp.label} - {#if cellIcon(feat[comp.key]) === 'check'} - ✓ - {:else if cellIcon(feat[comp.key]) === 'cross'} - ✗ - {:else if cellIcon(feat[comp.key]) === 'dash'} - — - {:else} - {feat[comp.key]} - {/if} -
- {/each} -
-
- {/each} -
-
- - diff --git a/website/src/lib/components/landing/FaqSection.svelte b/website/src/lib/components/landing/FaqSection.svelte deleted file mode 100644 index e3325aa9..00000000 --- a/website/src/lib/components/landing/FaqSection.svelte +++ /dev/null @@ -1,77 +0,0 @@ - - - -
-

- Frequently asked questions -

-

- Everything you need to know about using cora. -

- -
- - {#each faqList as item} - - - {item.question} - - - {item.answer} - - - {/each} - -
-
diff --git a/website/src/lib/components/landing/FeatureCard.svelte b/website/src/lib/components/landing/FeatureCard.svelte deleted file mode 100644 index 3ce87a6b..00000000 --- a/website/src/lib/components/landing/FeatureCard.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -
-
- -
-

{title}

-

{accent}

-

{@html description}

-
diff --git a/website/src/lib/components/landing/FeatureGrid.svelte b/website/src/lib/components/landing/FeatureGrid.svelte deleted file mode 100644 index 8fc163df..00000000 --- a/website/src/lib/components/landing/FeatureGrid.svelte +++ /dev/null @@ -1,97 +0,0 @@ - - - -
-

- Built for developers who value control -

-

- Everything you need, nothing you don't. -

- -
- - - - - - - - - - - - - - - - - -
-
diff --git a/website/src/lib/components/landing/HeroSection.svelte b/website/src/lib/components/landing/HeroSection.svelte deleted file mode 100644 index c3395b2e..00000000 --- a/website/src/lib/components/landing/HeroSection.svelte +++ /dev/null @@ -1,63 +0,0 @@ - - - -
- -
-
- - -
- -
- -
- - - Open source · BYOK · Zero config - -
- - -

- AI code review - in your terminal -

- - -

- cora catches bugs, security issues, and code smells before they land in your PR. - Bring your own API key. Your code never leaves your machine. -

- - - - - -
- -
cargo install cora-cli
-
cora auth login
-
cora review --staged
-
-
- - -
- Local-first - 5 LLM providers - CI/CD ready -
-
-
diff --git a/website/src/lib/components/landing/HowItWorks.svelte b/website/src/lib/components/landing/HowItWorks.svelte deleted file mode 100644 index 966512c4..00000000 --- a/website/src/lib/components/landing/HowItWorks.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - - -
-

- How it works -

-

- Three steps from code to confidence. -

- -
- - - - - - - - - - - -
-
diff --git a/website/src/lib/components/landing/KpiStats.svelte b/website/src/lib/components/landing/KpiStats.svelte deleted file mode 100644 index 687b039c..00000000 --- a/website/src/lib/components/landing/KpiStats.svelte +++ /dev/null @@ -1,20 +0,0 @@ - -
-

- Trusted by developers who ship fast -

-
-
-
5
-
AI Providers
-
-
-
< 3s
-
Review Time
-
-
-
Zero
-
Config Required
-
-
-
diff --git a/website/src/lib/components/landing/LiveDemo.svelte b/website/src/lib/components/landing/LiveDemo.svelte deleted file mode 100644 index ce7113a5..00000000 --- a/website/src/lib/components/landing/LiveDemo.svelte +++ /dev/null @@ -1,76 +0,0 @@ - - - -
-

- See it in action -

-

- Run cora against staged changes. Results in seconds, not minutes. -

- -
- - {#each terminalLines as line, i} -
{line}
- {/each} - {#if terminalComplete} - - {/if} -
-
-
diff --git a/website/src/lib/components/landing/QuickStart.svelte b/website/src/lib/components/landing/QuickStart.svelte deleted file mode 100644 index fd701755..00000000 --- a/website/src/lib/components/landing/QuickStart.svelte +++ /dev/null @@ -1,81 +0,0 @@ - - - -
-

- Start in 30 seconds -

-

- No account required. No subscription. No cloud. -

- -
- - - {#snippet terminalCode()} - - $ curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-cli/main/install.sh | sh - - {/snippet} - - - - - {#snippet terminalCode()} - - $ export OPENAI_API_KEY="sk-..." - - {/snippet} - - - - - {#snippet terminalCode()} - - $ CORA_API_KEY=key cora review --staged - - {/snippet} - - - - -
- - -
-

- Ready to ship better code? -

-

- No account. No subscription. No cloud. -

- -
- - - -
diff --git a/website/src/lib/components/landing/StepCard.svelte b/website/src/lib/components/landing/StepCard.svelte deleted file mode 100644 index 07b10365..00000000 --- a/website/src/lib/components/landing/StepCard.svelte +++ /dev/null @@ -1,28 +0,0 @@ - - -
-
{number}
-
- -
-

{title}

-

{description}

-
diff --git a/website/src/lib/components/landing/TerminalBlock.svelte b/website/src/lib/components/landing/TerminalBlock.svelte deleted file mode 100644 index c5d704d5..00000000 --- a/website/src/lib/components/landing/TerminalBlock.svelte +++ /dev/null @@ -1,60 +0,0 @@ - - -
-
- - - - {title} -
-
- {@render children()} - {#if showCopy} - - {/if} -
-
diff --git a/website/src/lib/components/landing/TimelineStep.svelte b/website/src/lib/components/landing/TimelineStep.svelte deleted file mode 100644 index 97962cc0..00000000 --- a/website/src/lib/components/landing/TimelineStep.svelte +++ /dev/null @@ -1,33 +0,0 @@ - - -
-
{number}
-
-

{title}

-

{description}

- {#if terminalCode} - {@render terminalCode()} - {/if} -
-
diff --git a/website/src/lib/components/ui/accordion/accordion-content.svelte b/website/src/lib/components/ui/accordion/accordion-content.svelte deleted file mode 100644 index 0cd4dc4b..00000000 --- a/website/src/lib/components/ui/accordion/accordion-content.svelte +++ /dev/null @@ -1,16 +0,0 @@ - - - -
- {@render children()} -
-
diff --git a/website/src/lib/components/ui/accordion/accordion-item.svelte b/website/src/lib/components/ui/accordion/accordion-item.svelte deleted file mode 100644 index 03cfd65d..00000000 --- a/website/src/lib/components/ui/accordion/accordion-item.svelte +++ /dev/null @@ -1,14 +0,0 @@ - - - - {@render children()} - diff --git a/website/src/lib/components/ui/accordion/accordion-trigger.svelte b/website/src/lib/components/ui/accordion/accordion-trigger.svelte deleted file mode 100644 index ed6211e6..00000000 --- a/website/src/lib/components/ui/accordion/accordion-trigger.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - - - svg]:rotate-180", - className - )} - > - {@render children()} - - - diff --git a/website/src/lib/components/ui/accordion/accordion.svelte b/website/src/lib/components/ui/accordion/accordion.svelte deleted file mode 100644 index 0e7f304c..00000000 --- a/website/src/lib/components/ui/accordion/accordion.svelte +++ /dev/null @@ -1,12 +0,0 @@ - - - - {@render children()} - diff --git a/website/src/lib/components/ui/accordion/index.ts b/website/src/lib/components/ui/accordion/index.ts deleted file mode 100644 index 37751f7e..00000000 --- a/website/src/lib/components/ui/accordion/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { Accordion as AccordionPrimitive } from "bits-ui"; -import Root from "./accordion.svelte"; -import Item from "./accordion-item.svelte"; -import Trigger from "./accordion-trigger.svelte"; -import Content from "./accordion-content.svelte"; - -export { - Root, - Item, - Trigger, - Content, - AccordionPrimitive, -}; diff --git a/website/src/lib/components/ui/badge/badge.svelte b/website/src/lib/components/ui/badge/badge.svelte deleted file mode 100644 index 51bbc23e..00000000 --- a/website/src/lib/components/ui/badge/badge.svelte +++ /dev/null @@ -1,49 +0,0 @@ - - - - - - {@render children?.()} - diff --git a/website/src/lib/components/ui/badge/index.ts b/website/src/lib/components/ui/badge/index.ts deleted file mode 100644 index 64e0aa9b..00000000 --- a/website/src/lib/components/ui/badge/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as Badge } from "./badge.svelte"; -export { badgeVariants, type BadgeVariant } from "./badge.svelte"; diff --git a/website/src/lib/components/ui/button/button.svelte b/website/src/lib/components/ui/button/button.svelte deleted file mode 100644 index c38862ed..00000000 --- a/website/src/lib/components/ui/button/button.svelte +++ /dev/null @@ -1,82 +0,0 @@ - - - - -{#if href} - - {@render children?.()} - -{:else} - -{/if} diff --git a/website/src/lib/components/ui/button/index.ts b/website/src/lib/components/ui/button/index.ts deleted file mode 100644 index fb585d76..00000000 --- a/website/src/lib/components/ui/button/index.ts +++ /dev/null @@ -1,17 +0,0 @@ -import Root, { - type ButtonProps, - type ButtonSize, - type ButtonVariant, - buttonVariants, -} from "./button.svelte"; - -export { - Root, - type ButtonProps as Props, - // - Root as Button, - buttonVariants, - type ButtonProps, - type ButtonSize, - type ButtonVariant, -}; diff --git a/website/src/lib/components/ui/card/card-action.svelte b/website/src/lib/components/ui/card/card-action.svelte deleted file mode 100644 index 7c48844a..00000000 --- a/website/src/lib/components/ui/card/card-action.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/website/src/lib/components/ui/card/card-content.svelte b/website/src/lib/components/ui/card/card-content.svelte deleted file mode 100644 index 082a7861..00000000 --- a/website/src/lib/components/ui/card/card-content.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/website/src/lib/components/ui/card/card-description.svelte b/website/src/lib/components/ui/card/card-description.svelte deleted file mode 100644 index 9b20ac70..00000000 --- a/website/src/lib/components/ui/card/card-description.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -

- {@render children?.()} -

diff --git a/website/src/lib/components/ui/card/card-footer.svelte b/website/src/lib/components/ui/card/card-footer.svelte deleted file mode 100644 index 591c3f71..00000000 --- a/website/src/lib/components/ui/card/card-footer.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/website/src/lib/components/ui/card/card-header.svelte b/website/src/lib/components/ui/card/card-header.svelte deleted file mode 100644 index 21e9a170..00000000 --- a/website/src/lib/components/ui/card/card-header.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/website/src/lib/components/ui/card/card-title.svelte b/website/src/lib/components/ui/card/card-title.svelte deleted file mode 100644 index 7d20243b..00000000 --- a/website/src/lib/components/ui/card/card-title.svelte +++ /dev/null @@ -1,20 +0,0 @@ - - -
- {@render children?.()} -
diff --git a/website/src/lib/components/ui/card/card.svelte b/website/src/lib/components/ui/card/card.svelte deleted file mode 100644 index 329a6c72..00000000 --- a/website/src/lib/components/ui/card/card.svelte +++ /dev/null @@ -1,22 +0,0 @@ - - -
img:first-child]:pt-0 data-[size=sm]:gap-4 data-[size=sm]:py-4 *:[img:first-child]:rounded-t-xl *:[img:last-child]:rounded-b-xl group/card flex flex-col", className)} - {...restProps} -> - {@render children?.()} -
diff --git a/website/src/lib/components/ui/card/index.ts b/website/src/lib/components/ui/card/index.ts deleted file mode 100644 index 4d3fce48..00000000 --- a/website/src/lib/components/ui/card/index.ts +++ /dev/null @@ -1,25 +0,0 @@ -import Root from "./card.svelte"; -import Content from "./card-content.svelte"; -import Description from "./card-description.svelte"; -import Footer from "./card-footer.svelte"; -import Header from "./card-header.svelte"; -import Title from "./card-title.svelte"; -import Action from "./card-action.svelte"; - -export { - Root, - Content, - Description, - Footer, - Header, - Title, - Action, - // - Root as Card, - Content as CardContent, - Description as CardDescription, - Footer as CardFooter, - Header as CardHeader, - Title as CardTitle, - Action as CardAction, -}; diff --git a/website/src/lib/components/ui/separator/index.ts b/website/src/lib/components/ui/separator/index.ts deleted file mode 100644 index 82442d2c..00000000 --- a/website/src/lib/components/ui/separator/index.ts +++ /dev/null @@ -1,7 +0,0 @@ -import Root from "./separator.svelte"; - -export { - Root, - // - Root as Separator, -}; diff --git a/website/src/lib/components/ui/separator/separator.svelte b/website/src/lib/components/ui/separator/separator.svelte deleted file mode 100644 index 5fd8a429..00000000 --- a/website/src/lib/components/ui/separator/separator.svelte +++ /dev/null @@ -1,23 +0,0 @@ - - - diff --git a/website/src/lib/utils.ts b/website/src/lib/utils.ts deleted file mode 100644 index 93d8c131..00000000 --- a/website/src/lib/utils.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { type ClassValue, clsx } from 'clsx'; -import { twMerge } from 'tailwind-merge'; -import type { Snippet } from 'svelte'; - -export function cn(...inputs: ClassValue[]) { - return twMerge(clsx(inputs)); -} - -type WithoutChildren = T extends { children?: Snippet } ? Omit : T; -type ElementOf = T extends { ref?: infer E } ? E : never; -export type WithElementRef = WithoutChildren & { - ref?: U | null; - children?: Snippet; -}; diff --git a/website/src/routes/+layout.svelte b/website/src/routes/+layout.svelte deleted file mode 100644 index 63935d6f..00000000 --- a/website/src/routes/+layout.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - - - -
- - - -
- {@render children()} -
-
diff --git a/website/src/routes/+layout.ts b/website/src/routes/+layout.ts deleted file mode 100644 index 0df44ad9..00000000 --- a/website/src/routes/+layout.ts +++ /dev/null @@ -1,2 +0,0 @@ -export const prerender = true; -export const ssr = true; diff --git a/website/src/routes/+page.svelte b/website/src/routes/+page.svelte deleted file mode 100644 index b9d3627e..00000000 --- a/website/src/routes/+page.svelte +++ /dev/null @@ -1,58 +0,0 @@ - - - - cora — AI Code Review CLI - - - -
- - - - - - - - -
diff --git a/website/src/routes/docs/+layout.svelte b/website/src/routes/docs/+layout.svelte deleted file mode 100644 index 892856c5..00000000 --- a/website/src/routes/docs/+layout.svelte +++ /dev/null @@ -1,69 +0,0 @@ - - - - Docs — cora - - -
- - - - - - - - -
-
- {@render children()} -
-
-
diff --git a/website/src/routes/docs/+page.svelte b/website/src/routes/docs/+page.svelte deleted file mode 100644 index 03587b18..00000000 --- a/website/src/routes/docs/+page.svelte +++ /dev/null @@ -1,5 +0,0 @@ - diff --git a/website/src/routes/docs/changelog/+page.svelte b/website/src/routes/docs/changelog/+page.svelte deleted file mode 100644 index 10d77ca4..00000000 --- a/website/src/routes/docs/changelog/+page.svelte +++ /dev/null @@ -1,113 +0,0 @@ - - - - Changelog — cora docs - - - -
-

Changelog

-

- For the full changelog, see the - repository. -

- - {#each releases as release, i} -
-

- {#if release.version === 'Unreleased'} - - Unreleased - - {:else} - - v{release.version} - - {/if} - {release.date} -

- - {#each release.categories as category} -
-

{category.type}

-
    - {#each category.items as item} -
  • {@html item}
  • - {/each} -
-
- {/each} -
- {/each} -
diff --git a/website/src/routes/docs/cli-reference/+page.svelte b/website/src/routes/docs/cli-reference/+page.svelte deleted file mode 100644 index d5d48140..00000000 --- a/website/src/routes/docs/cli-reference/+page.svelte +++ /dev/null @@ -1,242 +0,0 @@ - - - - CLI Reference — cora docs - - - -
-

CLI Reference

-

Complete command reference for the cora CLI.

- - -
-

- - Global Flags -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FlagDescription
--config <path>Override config file path (default: .cora.yaml)
--format <fmt>Output format: pretty, json, compact, sarif
--no-colorDisable colored output
--provider <name>Override provider
--model <name>Override model
--base-url <url>Override API base URL
--api-key <key>Override API key
--verboseEnable debug logging
-
-
- - -
-

- - Commands -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CommandDescription
cora initCreate .cora.yaml config file
cora reviewReview code changes (default: staged files)
cora review --stagedReview staged git changes explicitly
cora review --unstagedReview unstaged working changes
cora review --unpushedReview unpushed commits
cora review --base <branch>Compare current branch against target
cora review --commit <ref>Review specific commit or range
cora review --diff-file <path>Review from a diff file
cora review --uploadReview and upload SARIF to GitHub Code Scanning
cora scan <path>Scan files for issues
cora scan . [--incremental]Scan only changed files
cora config showShow resolved configuration
cora config set <key> <value>Set a config value
cora hook installInstall pre-commit hook
cora hook uninstallRemove pre-commit hook
cora auth loginSave API key to ~/.cora/config.toml
cora auth statusCheck current auth status
cora auth removeRemove stored API key
cora providersList detected AI providers
cora upload-sarif <file>Upload SARIF to GitHub Code Scanning
cora completion <shell>Generate shell completions (bash/zsh/fish)
-
-
- - -
-

- - Quick Examples -

-
-
-
- - - -
-
- # Review staged changes (what's about to be committed)
- $ cora review --staged -
-
- -
-
- - - -
-
- # Compare your feature branch against main
- $ cora review --base main -
-
- -
-
- - - -
-
- # Full project scan with incremental caching
- $ cora scan --incremental -
-
- -
-
- - - -
-
- # Install pre-commit hook
- $ cora hook install -
-
-
-
-
diff --git a/website/src/routes/docs/configuration/+page.svelte b/website/src/routes/docs/configuration/+page.svelte deleted file mode 100644 index fee65771..00000000 --- a/website/src/routes/docs/configuration/+page.svelte +++ /dev/null @@ -1,292 +0,0 @@ - - - - Configuration — cora docs - - - -
-

Configuration

-

cora uses a layered config system. Later sources override earlier ones.

- - -
-

- - Config Resolution Order -

-

Settings are resolved in this order (highest priority first):

-
- {#each [ - { num: '1', label: 'CLI flags', desc: '--provider, --model, --base-url, etc.', accent: true }, - { num: '2', label: 'Environment variables', desc: 'CORA_API_KEY, CORA_PROVIDER, CORA_MODEL, etc.', accent: false }, - { num: '3', label: '.cora.yaml', desc: 'Project root config file', accent: false }, - { num: '4', label: '~/.cora/config.yaml', desc: 'Global config (optional)', accent: false }, - { num: '5', label: 'Built-in defaults', desc: 'Sensible defaults for all settings', accent: false } - ] as item} -
-
{item.num}
-
-
{item.label}
-
{item.desc}
-
-
- {/each} -
-
- - -
-

- - .cora.yaml Example -

-

Create this file in your project root. Run cora init to generate it.

-
-
- - - - .cora.yaml -
-
-
# cora project config
-provider:
-  provider: openai
-  model: gpt-4o
-  base_url: https://api.openai.com/v1
-
-llm:
-  temperature: 0
-  max_tokens: 4096
-  timeout: 120
-  cache_ttl: 1440
-
-review:
-  system_prompt: "You are a senior code reviewer."
-  # system_prompt_file: ./review-prompt.md
-  response_format: json_object
-
-focus: security, performance, bugs
-
-hook:
-  mode: warn
-  min_severity: major
-  max_diff_size: 51200
-
-ignore:
-  files:
-    - "vendor/**"
-    - "*.min.js"
-
-
-
- - -
-

- - Environment Variables -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableDescription
CORA_API_KEYAPI key for the active provider
CORA_PROVIDERActive provider (openai, anthropic, groq, ollama, zai)
CORA_MODELModel name override
CORA_BASE_URLCustom API base URL
CORA_CONFIGPath to config file
CORA_FORMATOutput format (pretty, json, compact, sarif)
CORA_NO_COLORDisable colored output
CORA_NO_CACHESkip diff-hash review cache (same as --no-cache)
GITHUB_TOKENGitHub token for SARIF upload
GITHUB_REPOSITORYGitHub repo for SARIF upload
GITHUB_REFGitHub ref for SARIF upload
-
-
- - -
-

- - Provider-Specific Env Vars -

-

Each provider has its own API key variable. cora checks these for auto-detection.

-
-
- - - - env vars -
-
-
# OpenAI
-OPENAI_API_KEY=sk-...
-OPENAI_BASE_URL=https://api.openai.com/v1
-
-# Anthropic
-ANTHROPIC_API_KEY=sk-ant-...
-
-# Groq
-GROQ_API_KEY=gsk_...
-
-# Ollama (local, no key needed)
-OLLAMA_HOST=http://localhost:11434
-# Optional: OLLAMA_API_KEY if your Ollama instance requires auth
-OLLAMA_API_KEY=...
-
-# Z.AI
-ZAI_API_KEY=...
-
-
-
- - -
-

- - Diff-Hash Caching -

-

cora caches review results by diff hash in ~/.cache/cora/reviews/. If you re-review the same diff, the cached result is returned instantly.

-
-
-
-
Config
-
- llm.cache_ttl — TTL in minutes (default: 1440 / 24h) -
-
-
-
CLI / Env
-
- --no-cache or CORA_NO_CACHE=1 to bypass -
-
-
-
-
- - -
-

- - Custom System Prompts -

-

Override the default system prompt for review or scan commands to match your project's coding standards and review criteria.

-
-
- - - - .cora.yaml -
-
-
review:
-  system_prompt: "Focus on Rust idioms and error handling."
-  # Or load from a file:
-  system_prompt_file: ./prompts/review.md
-
-scan:
-  system_prompt: "Check for OWASP Top 10 vulnerabilities."
-  system_prompt_file: ./prompts/scan.md
-
-
-

If both system_prompt and system_prompt_file are set, the file takes precedence.

-
- - -
-

- - Response Format (JSON Mode) -

-

Opt into structured JSON output from the LLM by setting review.response_format to json_object. This instructs the LLM to return valid JSON, enabling machine-readable parsing and pipeline integration.

-
-
- - - - .cora.yaml -
-
-
review:
-  response_format: json_object
-
-
-

Requires provider support for structured output. Works with OpenAI, Anthropic, and compatible APIs.

-
- - -
-

- - Anti-Hallucination -

-

cora uses two mechanisms to prevent the LLM from fabricating findings:

-
-
    -
  • File path injection — Actual file paths are embedded in the prompt, anchoring the LLM to real files in the diff.
  • -
  • Post-parse filtering — After parsing, any reported file paths or line numbers that don't exist in the actual diff are discarded.
  • -
-
-
-
diff --git a/website/src/routes/docs/examples/+page.svelte b/website/src/routes/docs/examples/+page.svelte deleted file mode 100644 index bc550dd5..00000000 --- a/website/src/routes/docs/examples/+page.svelte +++ /dev/null @@ -1,210 +0,0 @@ - - - - Examples — cora docs - - - -
-

Examples

-

Practical examples to get you started with cora.

- - -
-

- 01 - Quick Review -

-

Review your staged changes before committing.

-
-
- - - -
-
-# Review staged changes (default)
- $ cora review

- # Or review with explicit flags
- $ cora review --staged -
-
-
- - -
-

- 02 - Branch Comparison -

-

Compare your current branch against main.

-
-
- - - -
-
- $ cora review --base main -
-
-
- - -
-

- 03 - Full Project Scan -

-

Scan your entire project for issues.

-
-
- - - -
-
- $ cora scan -
-
-
- - -
-

- 04 - Incremental Scan -

-

Only scan files that changed since the last scan.

-
-
- - - -
-
- $ cora scan --incremental -
-
-
- - -
-

- 05 - Streaming Output -

-

Stream results as they come in from the LLM.

-
-
- - - -
-
- $ cora review --staged --stream -
-
-
- - -
-

- 06 - GitHub Actions CI -

-

Add cora to your CI pipeline.

-
-
- - - - .github/workflows/cora-review.yml -
-
-
name: Code Review
-
-on:
-  pull_request:
-    branches: [main]
-
-jobs:
-  review:
-    runs-on: ubuntu-latest
-    steps:
-      - uses: actions/checkout@v4
-      - name: Install cora
-        run: cargo install cora-cli
-      - name: Run AI code review
-        env:
-          {@html 'CORA_API_KEY: ${{ secrets.CORA_API_KEY }}'}
-          CORA_PROVIDER: openai
-        run: cora review --base main --format sarif
-
-
-
- - -
-

- 07 - Pre-commit Hook -

-

Install once, then every commit gets reviewed automatically.

-
-
- - - -
-
- # Install the hook
- $ cora hook install

- # Now just commit normally — cora reviews automatically
- $ git commit -m "fix: handle edge case in parser"
- cora pre-commit hook running...
- No issues found — commit allowed -
-
-
- - -
-

- 08 - SARIF Upload -

-

Generate SARIF output and upload to GitHub Code Scanning.

-
-
- - - -
-
- # Generate SARIF report and upload
- $ cora review --base main --format sarif > results.sarif && \\
-   cora upload-sarif results.sarif

- Uploaded 3 findings to GitHub Code Scanning -
-
-
-
diff --git a/website/src/routes/docs/getting-started/+page.svelte b/website/src/routes/docs/getting-started/+page.svelte deleted file mode 100644 index 180a45b3..00000000 --- a/website/src/routes/docs/getting-started/+page.svelte +++ /dev/null @@ -1,244 +0,0 @@ - - Getting Started — cora docs - - - - -
-

- Getting Started -

- -
-

Quick Start

-

Get up and running with cora in three simple steps.

- -
-
1
-
- Install cora — Single binary, no runtime dependencies: - curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-cli/main/install.sh | sh -
-
- -
-
2
-
- Authenticate — Run cora auth login to pick your provider and enter your API key. - Cora stores it securely in ~/.cora/auth.toml (never committed to git). -
-
- -
-
3
-
- Review — Analyze your staged changes: - cora review -
-
-
- -
-

Authentication — cora auth login

-

- The interactive login guides you through provider selection: -

- -
-
- - - -
-
-
$ cora auth login
-
-
🔑 Cora Auth Setup
-
Choose your LLM provider:
-
-
[1] openai — https://api.openai.com/v1
-
[2] anthropic — https://api.anthropic.com/v1
-
[3] groq — https://api.groq.com/openai/v1
-
[4] ollama — http://localhost:11434/v1
-
[5] zai — https://api.z.ai/api/coding/paas/v4
-
[6] custom — any OpenAI-compatible endpoint
-
-
Select provider [1-6]: 1
-
-
→ Provider: openai
-
→ Model: gpt-4o-mini
-
→ Base URL: https://api.openai.com/v1
-
-
🔑 Enter your API key: ****
-
-
✅ API key saved to ~/.cora/auth.toml
-
-
- -
-
- Known providers - Just enter your API key — model and base URL are pre-configured -
-
- Custom provider - Enter your own base URL, model name, and API key for any OpenAI-compatible API -
-
- Provider info stored - Provider name, model, and base URL are saved alongside your API key for easy reference -
-
- -

Check your auth status anytime:

-
-
- - - -
-
-
$ cora auth status
-
✅ API key is configured.
-
Source: ~/.cora/auth.toml
-
-
Provider: openai
-
Model: gpt-4o-mini
-
Base URL: https://api.openai.com/v1
-
-
- -

- You can also use environment variables instead of cora auth login: - CORA_API_KEY, OPENAI_API_KEY, ANTHROPIC_API_KEY, etc. -

-
- -
-

Understanding the Output

-

cora outputs a structured, color-coded summary of findings for each file reviewed.

- -
-
- - - -
-
-
$ cora review --staged
-
-
Analyzing 3 files...
-
✓ src/auth/login.ts — 2 issues found
-
⚠ Line 42: Potential SQL injection
-
⚠ Line 87: Hardcoded secret
-
✓ src/utils/parser.ts — clean
-
✓ src/api/routes.ts — 1 issue found
-
✗ Line 23: Missing error handling
-
-
3 issues found in 3 files
-
-
- -

Each line in the output contains:

-
-
- file path - The relative path to the file being reviewed -
-
- line number - Specific line where the issue was found -
-
- severity - Suggestion (⚠), Warning (⚠), or Error (✗) -
-
- description - Brief explanation of the issue -
-
-
- -
-

Project Configuration — cora init

-

- Create a .cora.yaml config file in your project root. - Automatically installs a pre-commit hook that runs cora review --staged --format compact before each commit. - Use --no-hook to skip hook installation. -

- -
-
- - - -
-
-
$ cora init
-
✅ Created .cora.yaml with example configuration.
-
✅ Pre-commit hook installed at .git/hooks/pre-commit
-
-
- -

Set provider, model, and base URL directly in .cora.yaml (no nested section needed):

-
-
- - - -
-
-
# .cora.yaml — shortcut format
-
provider: openai
-
model: gpt-4o-mini
-
base_url: https://api.openai.com/v1
-
-
- -

Key configuration options:

-
-
- focus — Review focus areas: security, performance, bugs, best_practice -
-
- ignore — File patterns and rules to skip -
-
- hook — Pre-commit hook settings: mode, severity threshold, max diff size -
-
- llm — LLM parameters: temperature, max_tokens, timeout -
-
-
- - -
diff --git a/website/src/routes/docs/installation/+page.svelte b/website/src/routes/docs/installation/+page.svelte deleted file mode 100644 index 571b5991..00000000 --- a/website/src/routes/docs/installation/+page.svelte +++ /dev/null @@ -1,195 +0,0 @@ - - Installation — cora docs - - - - -
-

- Installation -

- -
-

Quick Install (Recommended)

-

The fastest way to get cora — single command, no Rust required:

- -
-
- - - -
-
-
$ curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-cli/main/install.sh | sh
-
-
- -

Installs to ~/.local/bin. Add to PATH if needed:

- -
-
- - - -
-
-
echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc
-
-
- -

Pin a specific version:

- -
-
- - - -
-
-
$ CORA_VERSION=v0.4.2 curl -fsSL https://raw.githubusercontent.com/codecoradev/cora-cli/main/install.sh | sh
-
-
-
- -
-

Install via Cargo

-

If you have Rust 1.85+ installed:

- -
-
- - - -
-
-
$ cargo install cora-cli
-
-
- -

This compiles cora from source and installs it to Cargo's binary directory (typically ~/.cargo/bin/).

-
- -
-

Download Binary

-

Pre-built binaries are available from the GitHub Releases page.

- -
-

Supported platforms:

-
-
Linux x86_64 (glibc)
-
Linux arm64 (aarch64)
-
macOS arm64 (Apple Silicon)
-
Windows x86_64
-
-
- -
-
- - - -
-
-
# Download and extract
-
$ curl -sL https://github.com/codecoradev/cora-cli/releases/latest/download/cora-linux-x86_64.tar.gz | tar xz
-
$ mv cora ~/.local/bin/cora
-
-
-
- -
-

Build from Source

-

If you prefer to build from the latest source:

- -
-
- - - -
-
-
$ git clone https://github.com/codecoradev/cora-cli.git
-
$ cd cora-cli
-
$ cargo build --release
-
# Binary at target/release/cora
-
-
-
- -
-

Shell Completions

-

cora provides shell completions for bash, zsh, and fish:

- -
-
- - - -
-
-
# Bash
-
$ cora completion bash > ~/.cora/completion.bash
-
$ echo 'source ~/.cora/completion.bash' >> ~/.bashrc
-
-
# Zsh
-
$ cora completion zsh > ~/.cora/completion.zsh
-
$ echo 'source ~/.cora/completion.zsh' >> ~/.zshrc
-
-
# Fish
-
$ cora completion fish > ~/.config/fish/completions/cora.fish
-
-
-
- -
-

Verify Installation

-

Confirm cora is installed correctly:

- -
-
- - - -
-
-
$ cora --version
-
cora 0.x.x
-
-
$ cora auth status
-
Provider: openai
-
API key: configured
-
-
-
- -
-

Updating

-

To update cora to the latest version:

- -
-
- Via Cargo: cargo install cora-cli --force -
-
- Via Binary: Download the latest release from GitHub and replace the existing binary -
-
-
-
diff --git a/website/src/routes/docs/providers/+page.svelte b/website/src/routes/docs/providers/+page.svelte deleted file mode 100644 index 7ae143ba..00000000 --- a/website/src/routes/docs/providers/+page.svelte +++ /dev/null @@ -1,166 +0,0 @@ - - - - Providers — cora docs - - - -
-

Providers

-

cora supports multiple AI providers. Use your own API key — no subscriptions to us.

- - -
-

- - Supported Providers -

-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ProviderDefault ModelEnv VarCustom Base URL
OpenAIgpt-4o-miniOPENAI_API_KEYOPENAI_BASE_URL
Anthropicclaude-sonnet-4-20250514ANTHROPIC_API_KEYANTHROPIC_BASE_URL
Groqllama-3.1-8b-instantGROQ_API_KEYGROQ_BASE_URL
Ollamallama3.1— (local)OLLAMA_HOST (default: http://localhost:11434)
Z.AIglm-5.1ZAI_API_KEYZAI_BASE_URL
-
-
- - -
-

- - Auto-Detection -

-

- cora automatically detects which provider to use by checking environment variables in this order: -

-
- {#each [ - 'OPENAI_API_KEY \u2192 uses OpenAI', - 'ANTHROPIC_API_KEY \u2192 uses Anthropic', - 'GROQ_API_KEY \u2192 uses Groq', - 'ZAI_API_KEY \u2192 uses Z.AI', - 'OLLAMA_HOST \u2192 uses Ollama (localhost)' - ] as item, i} -
-
{i + 1}
- {item} -
- {/each} -
-

- Override auto-detection with CORA_PROVIDER env var or --provider flag. -

-
- - -
-

- - Usage Examples -

-
-
-
- - - -
-
- # Use OpenAI (auto-detected from OPENAI_API_KEY)
- $ OPENAI_API_KEY=sk-... cora review --staged -
-
- -
-
- - - -
-
- # Use Anthropic with explicit provider
- $ CORA_PROVIDER=anthropic CORA_API_KEY=sk-ant-... cora review --staged -
-
- -
-
- - - -
-
- # Use Ollama locally (no API key needed)
- $ CORA_PROVIDER=ollama cora review --staged -
-
- -
-
- - - -
-
- # Use a custom model
- $ CORA_MODEL=gpt-4o-mini cora review --staged -
-
-
-
-
diff --git a/website/src/routes/docs/roadmap/+page.svelte b/website/src/routes/docs/roadmap/+page.svelte deleted file mode 100644 index ea99d1ad..00000000 --- a/website/src/routes/docs/roadmap/+page.svelte +++ /dev/null @@ -1,248 +0,0 @@ - - Roadmap — cora Docs - - -

Roadmap

- -

Demand-gated — we build what people actually need. Track progress on GitHub Issues.

- -
- - -
-

- v0.1.5 - Initial Release -

-
- {#each [ - { title: 'Basic diff review with OpenAI', issue: 90 }, - { title: 'JSON response repair & unicode handling', issue: 89 }, - { title: 'CLI interface with review command', issue: 90 }, - ] as item} - -
- #{item.issue} - {item.title} -
- ✓ Done -
- {/each} -
-
- - -
-

- v0.1.6 - Custom Prompts & Path Injection -

-
- {#each [ - { title: 'Enhanced default system prompts', issue: 95 }, - { title: 'Custom system prompt via .cora.yaml config', issue: 94 }, - { title: 'Inject valid file paths into system prompt', issue: 93 }, - { title: 'JSON object response format (opt-in)', issue: 92 }, - ] as item} - -
- #{item.issue} - {item.title} -
- ✓ Done -
- {/each} -
-
- - -
-

- v0.1.7 - Deterministic & Reliable -

-
- {#each [ - { title: 'Deterministic reviews — temperature=0', issue: 98 }, - { title: 'Non-deterministic output bug fix', issue: 97 }, - { title: 'HTTP timeout + connection pooling', issue: 99 }, - { title: 'Diff-hash caching for repeat reviews', issue: 100 }, - { title: 'Configurable max_tokens', issue: 101 }, - ] as item} - -
- #{item.issue} - {item.title} -
- ✓ Done -
- {/each} -
-
- - -
-

- v0.2.0 - Multi-Provider & SARIF -

-
- {#each [ - { title: 'BYOK — Anthropic, Groq, Ollama support', issue: 106 }, - { title: 'SARIF output format', issue: 106 }, - { title: 'Branch review mode', issue: 106 }, - { title: 'Output footer watermark', issue: 106 }, - ] as item} - -
- #{item.issue} - {item.title} -
- ✓ Done -
- {/each} -
-
- - -
-

- v0.3 - Progress & CI Hardening -

-
- {#each [ - { title: 'Static analysis context injection (reduce false positives)', issue: 140 }, - { title: '--progress flag for machine-readable output', issue: 108 }, - { title: 'Composite action crash fix (KeyError)', issue: 102 }, - { title: 'Config validate command', issue: 88 }, - ] as item} - -
- #{item.issue} - {item.title} -
- ✓ Done -
- {/each} -
-
- - -
-

- v0.4 - Deterministic Engine Pipeline -

-
- {#each [ - { title: 'Deterministic rule engine — 12 built-in rules', issue: 116 }, - { title: 'File bundling — parallel per-bundle review', issue: 115 }, - { title: 'AST-based cross-file dependency extraction', issue: 114 }, - { title: 'Hunk header regex panic fix + 5MB diff support', issue: 159 }, - ] as item} - -
- #{item.issue} - {item.title} -
- ✓ Done -
- {/each} -
-
- - -
-

- v0.5 - Install & Distribution -

-
- {#each [ - { title: 'Easy install — Homebrew tap & install script', issue: 151, status: 'done' }, - { title: 'CI gate mode — block PRs on review findings', issue: 149, status: 'done' }, - { title: 'Website redesign — landing page + docs', issue: 163, status: 'done' }, - { title: 'Interactive auth login with tiered provider selection', issue: 172, status: 'done' }, - { title: 'README overhaul — market-facing copy', issue: 162, status: 'planned' }, - ] as item} - -
- #{item.issue} - {item.title} -
- {#if item.status === 'done'} - ✓ Done - {:else} - ◎ Planned - {/if} -
- {/each} -
-
- - -
-

- Future - What's Next -

-
- {#each [ - { title: 'Lightweight agent follow-up — 1 capped tool-call', issue: 117 }, - { title: '`cora gain` — local productivity stats + viral sharing', issue: 161 }, - { title: 'GitHub App backend MVP in Rust (Axum)', issue: 132 }, - { title: 'Publish cora-review as GitHub Marketplace action', issue: 47 }, - ] as item} - -
- #{item.issue} - {item.title} -
- → Planned -
- {/each} -
-
- -
diff --git a/website/src/routes/docs/usage/+page.svelte b/website/src/routes/docs/usage/+page.svelte deleted file mode 100644 index 4f622314..00000000 --- a/website/src/routes/docs/usage/+page.svelte +++ /dev/null @@ -1,321 +0,0 @@ - - Usage — cora docs - - - - -
-

- Usage -

- -
-

Review Modes

-

cora supports multiple review modes, each suited to a different workflow:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
ModeFlagScopeBest For
Default(no flag)Tries staged first, then unpushedQuick feedback
Staged--stagedFiles in git staging areaPre-commit review
Unstaged--unstagedUnstaged working changesReview work in progress
Unpushed--unpushedCommits not yet pushedReview before push
Base Branch--base <branch>Diff against base branchPR review workflow
Commit--commit <ref>Specific commit or rangeReview specific changes
Diff File--diff-file <path>External diff fileReview patch files
-
- -
-
- - - -
-
-
# Review staged changes (default)
-
$ cora review
-
-
# Review against a branch
-
$ cora review --base main
-
-
# Review a specific commit
-
$ cora review --commit HEAD
-
-
# Review from a diff file
-
$ cora review --diff-file pr.diff
-
-
# Full project scan (use cora scan)
-
$ cora scan .
-
-
-
- -
-

Output Formats

-

cora can output results in three formats:

- -
-
- --format pretty — Human-readable terminal output (default) -
-
- --format json — Machine-readable JSON for CI/CD pipelines -
-
- --format sarif — SARIF format for GitHub Code Scanning -
-
- -
-
- - - -
-
-
# JSON output example
-
$ cora review --staged --format json
-
-
{'{'}
-
"files": [
-
{'{'}
-
"path": "src/auth/login.ts",
-
"issues": [
-
{'{'}
-
"line": 42,
-
"severity": "warning",
-
"message": "Potential SQL injection"
-
{'}'}
-
]
-
{'}'}
-
],
-
"summary": {'{'}
-
"total_files": 3,
-
"total_issues": 3
-
{'}'}
-
{'}'}
-
-
-
- -
-

Configuration File

-

The .cora.yaml file provides persistent configuration. Place it in your project root. API keys are stored at ~/.cora/config.toml.

- -
-
- - - -
-
-
# .cora.yaml — example
-
-
review:
-
severity: warning
-
focus: security,performance
-
-
ignore:
-
- "vendor/**"
-
- "*.min.js"
-
-
providers:
-
openai:
-
model: gpt-4o
-
-
-
- -
-

Environment Variables

-

Environment variables override configuration file settings:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
VariableDescriptionRequired
CORA_API_KEYAPI key for the configured providerYes (unless using cora auth)
CORA_PROVIDEROverride the LLM providerNo
CORA_MODELOverride the model nameNo
CORA_BASE_URLOverride the API base URLNo
CORA_CONFIGPath to alternative config fileNo
-
-
- -
-

Working with Monorepos

-

cora works well in monorepo setups. Use include patterns to limit review scope to specific packages:

- -
-
- - - -
-
-
# Review only the backend package
-
$ cora review --staged --include "packages/backend/**"
-
-
# Exclude test and generated files
-
$ cora review --staged --exclude "**/*.test.ts" --exclude "**/generated/**"
-
-
- -

Alternatively, set include/exclude patterns in .cora.yaml for persistent configuration.

-
- -
-

Exit Codes

-

cora uses standard exit codes for scripting and CI integration:

- -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CodeMeaningCI Behavior
0No issues foundPass
1Issues foundFail (warning/error)
2Review blockedFail (auth/config error)
3Authentication errorFail (missing API key)
-
-
- -
-

Tips

-
-
- • - Use cora review with no flags for the fastest pre-commit feedback -
-
- • - Combine --format json with --base main in CI pipelines -
-
- • - Use cora scan . --incremental for large codebases — only changed files are analyzed -
-
- • - Use --quiet for minimal output and --severity to filter by severity level -
-
- • - Use cora auth login to store API keys securely instead of environment variables -
-
-
-
diff --git a/website/static/favicon.png b/website/static/favicon.png deleted file mode 100644 index db6d4be1..00000000 Binary files a/website/static/favicon.png and /dev/null differ diff --git a/website/static/og.png b/website/static/og.png deleted file mode 100644 index 3253c16f..00000000 Binary files a/website/static/og.png and /dev/null differ diff --git a/website/static/robots.txt b/website/static/robots.txt deleted file mode 100644 index c2a49f4f..00000000 --- a/website/static/robots.txt +++ /dev/null @@ -1,2 +0,0 @@ -User-agent: * -Allow: / diff --git a/website/svelte.config.js b/website/svelte.config.js deleted file mode 100644 index dc4f85e2..00000000 --- a/website/svelte.config.js +++ /dev/null @@ -1,21 +0,0 @@ -import adapter from '@sveltejs/adapter-static'; -import { vitePreprocess } from '@sveltejs/vite-plugin-svelte'; - -/** @type {import('@sveltejs/kit').Config} */ -const config = { - preprocess: vitePreprocess(), - kit: { - adapter: adapter({ - pages: 'build', - assets: 'build', - fallback: '404.html', - precompress: false, - strict: true - }), - prerender: { - handleHttpError: 'warn' - } - } -}; - -export default config; diff --git a/website/tsconfig.json b/website/tsconfig.json deleted file mode 100644 index a8f10c8e..00000000 --- a/website/tsconfig.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "extends": "./.svelte-kit/tsconfig.json", - "compilerOptions": { - "allowJs": true, - "checkJs": true, - "esModuleInterop": true, - "forceConsistentCasingInFileNames": true, - "resolveJsonModule": true, - "skipLibCheck": true, - "sourceMap": true, - "strict": true, - "moduleResolution": "bundler" - } -} diff --git a/website/vite.config.ts b/website/vite.config.ts deleted file mode 100644 index bf699a8d..00000000 --- a/website/vite.config.ts +++ /dev/null @@ -1,7 +0,0 @@ -import { sveltekit } from '@sveltejs/kit/vite'; -import tailwindcss from '@tailwindcss/vite'; -import { defineConfig } from 'vite'; - -export default defineConfig({ - plugins: [tailwindcss(), sveltekit()] -});