diff --git a/.gitignore b/.gitignore index e1e00a8..ce27564 100644 --- a/.gitignore +++ b/.gitignore @@ -4,4 +4,6 @@ dist/ .astro .claude/worktrees src/docs-site/public/sample-report.html -.DS_Store \ No newline at end of file +.DS_Store +**/.DS_Store +**/.netlify/ diff --git a/package-lock.json b/package-lock.json index 2773931..51be852 100644 --- a/package-lock.json +++ b/package-lock.json @@ -7,6 +7,7 @@ "": { "name": "@netlify/axis", "version": "1.15.4", + "license": "MIT", "workspaces": [ "src/docs-site" ], @@ -118,6 +119,118 @@ "node": ">=22.12.0" } }, + "node_modules/@astrojs/react": { + "version": "5.0.7", + "resolved": "https://registry.npmjs.org/@astrojs/react/-/react-5.0.7.tgz", + "integrity": "sha512-N9cCoxvnLWaP+AK1Fv4e5Mc7ktnVTpSo2nWLwvD9Ohr1dJKygwrTSm9yatqoahgb1A5Kwjg/rT2shRiIVdn3aw==", + "license": "MIT", + "dependencies": { + "@astrojs/internal-helpers": "0.10.0", + "@vitejs/plugin-react": "^5.2.0", + "devalue": "^5.8.1", + "ultrahtml": "^1.6.0", + "vite": "^7.3.2" + }, + "engines": { + "node": ">=22.12.0" + }, + "peerDependencies": { + "@types/react": "^17.0.50 || ^18.0.21 || ^19.0.0", + "@types/react-dom": "^17.0.17 || ^18.0.6 || ^19.0.0", + "react": "^17.0.2 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.2 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/@astrojs/react/node_modules/@astrojs/internal-helpers": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@astrojs/internal-helpers/-/internal-helpers-0.10.0.tgz", + "integrity": "sha512-Ry2R3VPeIN4uPCSA4xQc+e+vsJXkalKpEbDc07hV+a/o5Bs2N/s/uDcPJH/05L19DKh9tAy7e6JM3YZ6Cxfezw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.4", + "@types/mdast": "^4.0.4", + "js-yaml": "^4.1.1", + "picomatch": "^4.0.4", + "retext-smartypants": "^6.2.0", + "shiki": "^4.0.2", + "smol-toml": "^1.6.0", + "unified": "^11.0.5" + } + }, + "node_modules/@astrojs/react/node_modules/vite": { + "version": "7.3.5", + "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.5.tgz", + "integrity": "sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==", + "license": "MIT", + "dependencies": { + "esbuild": "^0.27.0", + "fdir": "^6.5.0", + "picomatch": "^4.0.3", + "postcss": "^8.5.6", + "rollup": "^4.43.0", + "tinyglobby": "^0.2.15" + }, + "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", + "jiti": ">=1.21.0", + "less": "^4.0.0", + "lightningcss": "^1.21.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 + }, + "jiti": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "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/@astrojs/sitemap": { "version": "3.7.2", "resolved": "https://registry.npmjs.org/@astrojs/sitemap/-/sitemap-3.7.2.tgz", @@ -149,7 +262,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, "dependencies": { "@babel/helper-validator-identifier": "^7.28.5", "js-tokens": "^4.0.0", @@ -163,7 +275,6 @@ "version": "7.29.3", "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.29.3.tgz", "integrity": "sha512-LIVqM46zQWZhj17qA8wb4nW/ixr2y1Nw+r1etiAWgRM6U1IqP+LNhL1yg440jYZR72jCWcWbLWzIosH+uP1fqg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -172,7 +283,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.29.0.tgz", "integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -202,7 +312,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -211,7 +320,6 @@ "version": "7.29.1", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.1.tgz", "integrity": "sha512-qsaF+9Qcm2Qv8SRIMMscAvG4O3lJ0F1GuMo5HR/Bp02LopNgnZBC/EkbevHFeGs4ls/oPz9v+Bsmzbkbe+0dUw==", - "dev": true, "dependencies": { "@babel/parser": "^7.29.0", "@babel/types": "^7.29.0", @@ -227,7 +335,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.28.6.tgz", "integrity": "sha512-JYtls3hqi15fcx5GaSNL7SCTJ2MNmjrkHXg4FSpOA/grxK8KwyZ5bubHsCq8FXCkua6xhuaaBit+3b7+VZRfcA==", - "dev": true, "dependencies": { "@babel/compat-data": "^7.28.6", "@babel/helper-validator-option": "^7.27.1", @@ -243,7 +350,6 @@ "version": "5.1.1", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", - "dev": true, "dependencies": { "yallist": "^3.0.2" } @@ -252,7 +358,6 @@ "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, "bin": { "semver": "bin/semver.js" } @@ -261,7 +366,6 @@ "version": "7.28.0", "resolved": "https://registry.npmjs.org/@babel/helper-globals/-/helper-globals-7.28.0.tgz", "integrity": "sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -270,7 +374,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.28.6.tgz", "integrity": "sha512-l5XkZK7r7wa9LucGw9LwZyyCUscb4x37JWTPz7swwFE/0FMQAGpiWUZn8u9DzkSBWEcK25jmvubfpw2dnAMdbw==", - "dev": true, "dependencies": { "@babel/traverse": "^7.28.6", "@babel/types": "^7.28.6" @@ -283,7 +386,6 @@ "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.28.6.tgz", "integrity": "sha512-67oXFAYr2cDLDVGLXTEABjdBJZ6drElUSI7WKp70NrpyISso3plG9SAGEF6y7zbha/wOzUByWWTJvEDVNIUGcA==", - "dev": true, "dependencies": { "@babel/helper-module-imports": "^7.28.6", "@babel/helper-validator-identifier": "^7.28.5", @@ -296,6 +398,15 @@ "@babel/core": "^7.0.0" } }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.29.7.tgz", + "integrity": "sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==", + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/helper-string-parser": { "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.27.1.tgz", @@ -316,7 +427,6 @@ "version": "7.27.1", "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.27.1.tgz", "integrity": "sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -325,7 +435,6 @@ "version": "7.29.2", "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.29.2.tgz", "integrity": "sha512-HoGuUs4sCZNezVEKdVcwqmZN8GoHirLUcLaYVNBK2J0DadGtdcqgr3BCbvH8+XUo4NGjNl3VOtSjEKNzqfFgKw==", - "dev": true, "dependencies": { "@babel/template": "^7.28.6", "@babel/types": "^7.29.0" @@ -348,11 +457,40 @@ "node": ">=6.0.0" } }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.29.7.tgz", + "integrity": "sha512-TL0hMc9xzy86VD31nUiwzd5otRAcyEPcsegCxolO0PvcXuH1v0kECe/UIznYFihpkvU5wg/jk4v0TTEFfm53fw==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.29.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.29.7.tgz", + "integrity": "sha512-06IyK09H3wi4cGbhDBwp5gUGo0IKtnYa8tyTiephirPCK6fbobVGiXMMI5zLQ4aKEYP3wZ3ArU44o+8KMrSG/Q==", + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.29.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, "node_modules/@babel/template": { "version": "7.28.6", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.28.6.tgz", "integrity": "sha512-YA6Ma2KsCdGb+WC6UpBVFJGXL58MDA6oyONbjyF/+5sBgxY/dwkhLogbMT2GXXyU84/IhRw/2D1Os1B/giz+BQ==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.28.6", "@babel/parser": "^7.28.6", @@ -366,7 +504,6 @@ "version": "7.29.0", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.0.tgz", "integrity": "sha512-4HPiQr0X7+waHfyXPZpWPfWL/J7dcN1mx9gL6WdQVMbPnF3+ZhSMs8tCxN7oHddJE9fhNE7+lxdnlyemKfJRuA==", - "dev": true, "dependencies": { "@babel/code-frame": "^7.29.0", "@babel/generator": "^7.29.0", @@ -1495,7 +1632,6 @@ "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==", - "dev": true, "dependencies": { "@jridgewell/sourcemap-codec": "^1.5.0", "@jridgewell/trace-mapping": "^0.3.24" @@ -1505,7 +1641,6 @@ "version": "2.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/remapping/-/remapping-2.3.5.tgz", "integrity": "sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.5", "@jridgewell/trace-mapping": "^0.3.24" @@ -1515,7 +1650,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -1529,7 +1663,6 @@ "version": "0.3.31", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.31.tgz", "integrity": "sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -1544,6 +1677,12 @@ "resolved": "https://registry.npmjs.org/@oslojs/encoding/-/encoding-1.1.0.tgz", "integrity": "sha512-70wQhgYmndg4GCPxPPxPGevRKqTIJ2Nh4OkiMWmDAVYsTQ+Ta7Sq+rPevXyXGdzr30/qZBnyOalCszoMxlyldQ==" }, + "node_modules/@rolldown/pluginutils": { + "version": "1.0.0-rc.3", + "resolved": "https://registry.npmjs.org/@rolldown/pluginutils/-/pluginutils-1.0.0-rc.3.tgz", + "integrity": "sha512-eybk3TjzzzV97Dlj5c+XrBFW57eTNhzod66y9HrBlzJ6NsCrWCp/2kaPS3K9wJmurBC0Tdw4yPjXKZqlznim3Q==", + "license": "MIT" + }, "node_modules/@rollup/pluginutils": { "version": "5.3.0", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.3.0.tgz", @@ -1869,7 +2008,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-4.1.0.tgz", "integrity": "sha512-jLJtSJeuFffqX6/inRE1zqU5aFv2hrszvYgq3OjbAgFRZiWv7abKMDdQzYxuSDfmUPQozZvI/kuy6VMTvnvqTQ==", - "dev": true, "dependencies": { "@shikijs/primitive": "4.1.0", "@shikijs/types": "4.1.0", @@ -1885,7 +2023,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-4.1.0.tgz", "integrity": "sha512-YquhawCUgaBfhsS72e2Y/dI59gCBNPHu3fEO/tvLaXrTssxZrY5ddjtNLTwndrMgPo8b3IscE+xoICDzpTmlFQ==", - "dev": true, "dependencies": { "@shikijs/types": "4.1.0", "@shikijs/vscode-textmate": "^10.0.2", @@ -1899,7 +2036,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-4.1.0.tgz", "integrity": "sha512-axLpjVs45YBvvINa+dJF+NPW+KtFkNXsFr4SDw2BMj9GdeMnGxVB9PQb2xXlJYovslt/nz6giedAyOANkfc7hg==", - "dev": true, "dependencies": { "@shikijs/types": "4.1.0", "@shikijs/vscode-textmate": "^10.0.2" @@ -1912,7 +2048,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-4.1.0.tgz", "integrity": "sha512-nwOMruEkbgdZfQ/b8CgpNBVOpvG1k0N5tbmgiFeqsan401+x3ILqlzZJowSla4Agmq4hG2Uf2wh5jLTEhR8VSg==", - "dev": true, "dependencies": { "@shikijs/types": "4.1.0" }, @@ -1924,7 +2059,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/primitive/-/primitive-4.1.0.tgz", "integrity": "sha512-zx2/2Uwj2q9X3KSyYREEhXO23xBw5WUhP4orK2lE4r+t9JGITmEe0JH+wPmJhqHpOT2bRRs6lAL945+LDvOAGw==", - "dev": true, "dependencies": { "@shikijs/types": "4.1.0", "@shikijs/vscode-textmate": "^10.0.2", @@ -1938,7 +2072,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-4.1.0.tgz", "integrity": "sha512-emCcTnUM7yO2wltYbaxm+yLvcCI4+h8XBKc4KmJ7EZUXoSGjcCHifkI//R4OFit9ewpg7H2/9tjOuXrT2v/Knw==", - "dev": true, "dependencies": { "@shikijs/types": "4.1.0" }, @@ -1950,7 +2083,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-4.1.0.tgz", "integrity": "sha512-3EQWX54fMpniOrDblzAhiwiJwpiTMW6+B9DWyUd9ska483tbayFYuw47UxwuPknI31bKnySfVQ/QW+jFL4rFdA==", - "dev": true, "dependencies": { "@shikijs/vscode-textmate": "^10.0.2", "@types/hast": "^3.0.4" @@ -1964,6 +2096,47 @@ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.27.0", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.27.0.tgz", + "integrity": "sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.28.0.tgz", + "integrity": "sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==", + "license": "MIT", + "dependencies": { + "@babel/types": "^7.28.2" + } + }, "node_modules/@types/debug": { "version": "4.1.13", "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", @@ -2026,14 +2199,23 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "node_modules/@types/react": { - "version": "19.2.15", - "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.15.tgz", - "integrity": "sha512-eRwcGNHve+E8qtEQSSRl6urh+rFop4v8gm6O8rGv25CodbvFdLjA1vVQ1KkiFE0w0UPOnb8tDiFKL5lp0rtY5Q==", - "devOptional": true, + "version": "19.2.17", + "resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.17.tgz", + "integrity": "sha512-MXfmqaVPEVgkBT/aY0aGCkRWWtByiYQXo3xdQ8r5RzuFrPiRn8Gar2tQdXSUQ2GKV3bkXckek89V8wQBY2Q/Aw==", + "license": "MIT", "dependencies": { "csstype": "^3.2.2" } }, + "node_modules/@types/react-dom": { + "version": "19.2.3", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz", + "integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^19.2.0" + } + }, "node_modules/@types/sax": { "version": "1.2.7", "resolved": "https://registry.npmjs.org/@types/sax/-/sax-1.2.7.tgz", @@ -2320,6 +2502,26 @@ "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==" }, + "node_modules/@vitejs/plugin-react": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-5.2.0.tgz", + "integrity": "sha512-YmKkfhOAi3wsB1PhJq5Scj3GXMn3WvtQ/JC0xoopuHoXSdmtdStOpFrYaT1kie2YgFBcIe64ROzMYRjCrYOdYw==", + "license": "MIT", + "dependencies": { + "@babel/core": "^7.29.0", + "@babel/plugin-transform-react-jsx-self": "^7.27.1", + "@babel/plugin-transform-react-jsx-source": "^7.27.1", + "@rolldown/pluginutils": "1.0.0-rc.3", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.18.0" + }, + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, "node_modules/@vitest/expect": { "version": "2.1.9", "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-2.1.9.tgz", @@ -2978,7 +3180,6 @@ "version": "2.10.31", "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.31.tgz", "integrity": "sha512-MujYO3eP72uvmSE0i4wltsodRfIpZATP3jvzRNRGGxgzId7aVocVJJV3nf01qnzzKFGxQVC9bpWxl5cjxTr/7Q==", - "dev": true, "bin": { "baseline-browser-mapping": "dist/cli.cjs" }, @@ -3112,7 +3313,6 @@ "version": "4.28.2", "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3222,7 +3422,6 @@ "version": "1.0.30001793", "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", - "dev": true, "funding": [ { "type": "opencollective", @@ -3456,8 +3655,7 @@ "node_modules/convert-source-map": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", - "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", - "dev": true + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/convert-to-spaces": { "version": "2.0.1", @@ -3589,8 +3787,7 @@ "node_modules/csstype": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.2.3.tgz", - "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==", - "devOptional": true + "integrity": "sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==" }, "node_modules/data-view-buffer": { "version": "1.0.2", @@ -3889,8 +4086,7 @@ "node_modules/electron-to-chromium": { "version": "1.5.360", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.360.tgz", - "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==", - "dev": true + "integrity": "sha512-GkcBt6YYAw9SxFWn+xVar4cLVGlXVuswwtRLBozi2zp0GjXs4ZnOrqV4zbXzg35n7w81hCkyJNYicgXlVHAmBA==" }, "node_modules/emoji-regex": { "version": "10.6.0", @@ -4143,7 +4339,6 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true, "engines": { "node": ">=6" } @@ -4603,6 +4798,33 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/framer-motion": { + "version": "12.41.0", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-12.41.0.tgz", + "integrity": "sha512-OHAMNiCEON1RDBlRGuulsN5AD8ptMjvk5QWfFmYmBLPZ3zFGIJe60kQucQQf4cez1OzQmjYBWDY+dYfISkUdqg==", + "license": "MIT", + "dependencies": { + "motion-dom": "^12.41.0", + "motion-utils": "^12.39.0", + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0 || ^19.0.0", + "react-dom": "^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -4667,7 +4889,6 @@ "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true, "engines": { "node": ">=6.9.0" } @@ -5759,8 +5980,7 @@ "node_modules/js-tokens": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "4.1.1", @@ -5777,7 +5997,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.1.0.tgz", "integrity": "sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==", - "dev": true, "bin": { "jsesc": "bin/jsesc" }, @@ -5807,7 +6026,6 @@ "version": "2.2.3", "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "dev": true, "bin": { "json5": "lib/cli.js" }, @@ -7024,6 +7242,21 @@ "node": "*" } }, + "node_modules/motion-dom": { + "version": "12.41.0", + "resolved": "https://registry.npmjs.org/motion-dom/-/motion-dom-12.41.0.tgz", + "integrity": "sha512-Lk3J39fOGg6xNr1KRZsN6usDyBf8aP7MEbUPez1VCughHt79OrP7VGqNrPyFL0riaT7WS8t9DRw1M3BHtM/xKw==", + "license": "MIT", + "dependencies": { + "motion-utils": "^12.39.0" + } + }, + "node_modules/motion-utils": { + "version": "12.39.0", + "resolved": "https://registry.npmjs.org/motion-utils/-/motion-utils-12.39.0.tgz", + "integrity": "sha512-8nadJAJjTtqRkmRF36FoJTrywK9nnFmnPwnSMyxaOCU7GDjN9RTMJIxx9De8ErM+vpPhMccr/6fo5WciyQLnMQ==", + "license": "MIT" + }, "node_modules/mrmime": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/mrmime/-/mrmime-2.0.1.tgz", @@ -7121,7 +7354,6 @@ "version": "2.0.45", "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.45.tgz", "integrity": "sha512-iIbHXV9eBB2nB0wa7oTsrrXq+qQt+9SIlx9AX3T96YgobtEQfis5n6TJ6vV+3QP8DwdriEAcGhARaFCu37peBg==", - "dev": true, "engines": { "node": ">=18" } @@ -7648,13 +7880,26 @@ "integrity": "sha512-b484I/7b8rDEdSDKckSSBA8knMpcdsXudlE/LNL639wFoHKwLbEkQFZHWEYwDC0wa0FKUcCY+GAF73Z7wxNVFA==" }, "node_modules/react": { - "version": "19.2.6", - "resolved": "https://registry.npmjs.org/react/-/react-19.2.6.tgz", - "integrity": "sha512-sfWGGfavi0xr8Pg0sVsyHMAOziVYKgPLNrS7ig+ivMNb3wbCBw3KxtflsGBAwD3gYQlE/AEZsTLgToRrSCjb0Q==", + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react/-/react-19.2.7.tgz", + "integrity": "sha512-HNe9WslTbXmFK8o8cmwgAeJFSBvt1bPdHCVKtaaV+WlAN36mpT4hcRpwbf3fY56ar2oIXzsBpOAiIRHAdY0OlQ==", + "license": "MIT", "engines": { "node": ">=0.10.0" } }, + "node_modules/react-dom": { + "version": "19.2.7", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.7.tgz", + "integrity": "sha512-t0BRVXvbiE/o20Hfw669rLbMCDWtYZLvmJigy2f0MxsXF+71pxhR3xOkspmsO8h3ZlNzyibAmtCa3l4lYKk6gQ==", + "license": "MIT", + "dependencies": { + "scheduler": "^0.27.0" + }, + "peerDependencies": { + "react": "^19.2.7" + } + }, "node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -7675,6 +7920,15 @@ "react": "^19.2.0" } }, + "node_modules/react-refresh": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.18.0.tgz", + "integrity": "sha512-QgT5//D3jfjJb6Gsjxv0Slpj23ip+HtOpnNgnb2S5zU3CB26G/IDPGoy4RJB42wzFE46DRsstbW6tKHoKbhAxw==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/readdirp": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-5.0.0.tgz", @@ -8241,7 +8495,6 @@ "version": "4.1.0", "resolved": "https://registry.npmjs.org/shiki/-/shiki-4.1.0.tgz", "integrity": "sha512-l/ABZPUR5v70jI10EzqfMS/I96vjSGv2y0ihUV+WYFzv0EfvW4s54m0Lg8wCrrL+2IkwBzFTuxkZjPf8b2NX9Q==", - "dev": true, "dependencies": { "@shikijs/core": "4.1.0", "@shikijs/engine-javascript": "4.1.0", @@ -8826,9 +9079,7 @@ "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, - "optional": true + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" }, "node_modules/type-check": { "version": "0.4.0", @@ -9245,7 +9496,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", - "dev": true, "funding": [ { "type": "opencollective", @@ -9323,7 +9573,6 @@ "version": "5.4.21", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.21.tgz", "integrity": "sha512-o5a9xKjbtuhY6Bi5S3+HvbRERmouabWbyUcpXXUA1u+GNUKoROi9byOJ8M0nHbHYHkYICiMlqxkg1KkYmm25Sw==", - "devOptional": true, "license": "MIT", "dependencies": { "esbuild": "^0.21.3", @@ -9435,7 +9684,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9452,7 +9700,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9469,7 +9716,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9486,7 +9732,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9503,7 +9748,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9520,7 +9764,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9537,7 +9780,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9554,7 +9796,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9571,7 +9812,6 @@ "cpu": [ "arm" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9588,7 +9828,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9605,7 +9844,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9622,7 +9860,6 @@ "cpu": [ "loong64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9639,7 +9876,6 @@ "cpu": [ "mips64el" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9656,7 +9892,6 @@ "cpu": [ "ppc64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9673,7 +9908,6 @@ "cpu": [ "riscv64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9690,7 +9924,6 @@ "cpu": [ "s390x" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9707,7 +9940,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9724,7 +9956,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9741,7 +9972,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9758,7 +9988,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9775,7 +10004,6 @@ "cpu": [ "arm64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9792,7 +10020,6 @@ "cpu": [ "ia32" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9809,7 +10036,6 @@ "cpu": [ "x64" ], - "dev": true, "license": "MIT", "optional": true, "os": [ @@ -9823,7 +10049,6 @@ "version": "0.21.5", "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", - "devOptional": true, "hasInstallScript": true, "license": "MIT", "bin": { @@ -10142,8 +10367,7 @@ "node_modules/yallist": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", - "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", - "dev": true + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "2.9.0", @@ -10253,8 +10477,14 @@ "src/docs-site": { "name": "@netlify/axis-docs", "dependencies": { + "@astrojs/react": "^5.0.7", "@astrojs/sitemap": "^3.7.2", - "astro": "^5.7.10" + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "astro": "^5.7.10", + "framer-motion": "^12.40.0", + "react": "^19.2.7", + "react-dom": "^19.2.7" } }, "src/docs-site/node_modules/@astrojs/compiler": { diff --git a/src/docs-site/astro.config.mjs b/src/docs-site/astro.config.mjs index 4c477fe..cc7feac 100644 --- a/src/docs-site/astro.config.mjs +++ b/src/docs-site/astro.config.mjs @@ -1,8 +1,10 @@ import { defineConfig } from "astro/config"; import sitemap from "@astrojs/sitemap"; +import react from "@astrojs/react"; + export default defineConfig({ site: "https://axis.run", outDir: "../../dist/docs-site", - integrations: [sitemap()], -}); + integrations: [sitemap(), react()], +}); \ No newline at end of file diff --git a/src/docs-site/package.json b/src/docs-site/package.json index b739379..c3c8065 100644 --- a/src/docs-site/package.json +++ b/src/docs-site/package.json @@ -8,7 +8,13 @@ "preview": "astro preview" }, "dependencies": { + "@astrojs/react": "^5.0.7", "@astrojs/sitemap": "^3.7.2", - "astro": "^5.7.10" + "@types/react": "^19.2.17", + "@types/react-dom": "^19.2.3", + "astro": "^5.7.10", + "framer-motion": "^12.40.0", + "react": "^19.2.7", + "react-dom": "^19.2.7" } } diff --git a/src/docs-site/public/AXIS_OG.png b/src/docs-site/public/AXIS_OG.png new file mode 100644 index 0000000..693a6cc Binary files /dev/null and b/src/docs-site/public/AXIS_OG.png differ diff --git a/src/docs-site/public/Digerati-Regular.woff b/src/docs-site/public/Digerati-Regular.woff new file mode 100644 index 0000000..e8c24ee Binary files /dev/null and b/src/docs-site/public/Digerati-Regular.woff differ diff --git a/src/docs-site/public/Header/AXIS.svg b/src/docs-site/public/Header/AXIS.svg new file mode 100644 index 0000000..db90c7d --- /dev/null +++ b/src/docs-site/public/Header/AXIS.svg @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/docs-site/public/agents/auggie.png b/src/docs-site/public/agents/auggie.png new file mode 100644 index 0000000..74b1c2d Binary files /dev/null and b/src/docs-site/public/agents/auggie.png differ diff --git a/src/docs-site/public/agents/blackbox.png b/src/docs-site/public/agents/blackbox.png new file mode 100644 index 0000000..55c6d70 Binary files /dev/null and b/src/docs-site/public/agents/blackbox.png differ diff --git a/src/docs-site/public/agents/claude.svg b/src/docs-site/public/agents/claude.svg new file mode 100644 index 0000000..d300701 --- /dev/null +++ b/src/docs-site/public/agents/claude.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/docs-site/public/agents/cline.svg b/src/docs-site/public/agents/cline.svg new file mode 100644 index 0000000..4e9df4e --- /dev/null +++ b/src/docs-site/public/agents/cline.svg @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/src/docs-site/public/agents/codex.svg b/src/docs-site/public/agents/codex.svg new file mode 100644 index 0000000..1716a13 --- /dev/null +++ b/src/docs-site/public/agents/codex.svg @@ -0,0 +1 @@ +Codex \ No newline at end of file diff --git a/src/docs-site/public/agents/copilot.png b/src/docs-site/public/agents/copilot.png new file mode 100644 index 0000000..5545de5 Binary files /dev/null and b/src/docs-site/public/agents/copilot.png differ diff --git a/src/docs-site/public/agents/cursor.png b/src/docs-site/public/agents/cursor.png new file mode 100644 index 0000000..2dbb356 Binary files /dev/null and b/src/docs-site/public/agents/cursor.png differ diff --git a/src/docs-site/public/agents/cursor.svg b/src/docs-site/public/agents/cursor.svg new file mode 100644 index 0000000..7ba0a56 --- /dev/null +++ b/src/docs-site/public/agents/cursor.svg @@ -0,0 +1,7 @@ + + + + + + + diff --git a/src/docs-site/public/agents/factorydroid.png b/src/docs-site/public/agents/factorydroid.png new file mode 100644 index 0000000..4fd23c6 Binary files /dev/null and b/src/docs-site/public/agents/factorydroid.png differ diff --git a/src/docs-site/public/agents/fastagent.png b/src/docs-site/public/agents/fastagent.png new file mode 100644 index 0000000..4fc3f3e Binary files /dev/null and b/src/docs-site/public/agents/fastagent.png differ diff --git a/src/docs-site/public/agents/gemini.svg b/src/docs-site/public/agents/gemini.svg new file mode 100644 index 0000000..87cce06 --- /dev/null +++ b/src/docs-site/public/agents/gemini.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/docs-site/public/agents/goose.svg b/src/docs-site/public/agents/goose.svg new file mode 100644 index 0000000..1082090 --- /dev/null +++ b/src/docs-site/public/agents/goose.svg @@ -0,0 +1 @@ +Goose \ No newline at end of file diff --git a/src/docs-site/public/agents/kilo.svg b/src/docs-site/public/agents/kilo.svg new file mode 100644 index 0000000..e5c9c45 --- /dev/null +++ b/src/docs-site/public/agents/kilo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/docs-site/public/agents/kimi.svg b/src/docs-site/public/agents/kimi.svg new file mode 100644 index 0000000..209edf3 --- /dev/null +++ b/src/docs-site/public/agents/kimi.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/docs-site/public/agents/kiro.png b/src/docs-site/public/agents/kiro.png new file mode 100644 index 0000000..d541d9c Binary files /dev/null and b/src/docs-site/public/agents/kiro.png differ diff --git a/src/docs-site/public/agents/mistral.svg b/src/docs-site/public/agents/mistral.svg new file mode 100644 index 0000000..26f5913 --- /dev/null +++ b/src/docs-site/public/agents/mistral.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/docs-site/public/agents/opencode.svg b/src/docs-site/public/agents/opencode.svg new file mode 100644 index 0000000..9c4cb89 --- /dev/null +++ b/src/docs-site/public/agents/opencode.svg @@ -0,0 +1 @@ +opencode \ No newline at end of file diff --git a/src/docs-site/public/agents/openhands.png b/src/docs-site/public/agents/openhands.png new file mode 100644 index 0000000..8bba00e Binary files /dev/null and b/src/docs-site/public/agents/openhands.png differ diff --git a/src/docs-site/public/agents/poolside.svg b/src/docs-site/public/agents/poolside.svg new file mode 100644 index 0000000..5ab18ab --- /dev/null +++ b/src/docs-site/public/agents/poolside.svg @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/docs-site/public/agents/qoder.svg b/src/docs-site/public/agents/qoder.svg new file mode 100644 index 0000000..c25f9b5 --- /dev/null +++ b/src/docs-site/public/agents/qoder.svg @@ -0,0 +1 @@ +Qoder \ No newline at end of file diff --git a/src/docs-site/public/agents/qwen.svg b/src/docs-site/public/agents/qwen.svg new file mode 100644 index 0000000..984235f --- /dev/null +++ b/src/docs-site/public/agents/qwen.svg @@ -0,0 +1 @@ +Qwen \ No newline at end of file diff --git a/src/docs-site/public/agents/stakpak.png b/src/docs-site/public/agents/stakpak.png new file mode 100644 index 0000000..465dbcf Binary files /dev/null and b/src/docs-site/public/agents/stakpak.png differ diff --git a/src/docs-site/public/apple-touch-icon.png b/src/docs-site/public/apple-touch-icon.png index 651c98b..6423cf3 100644 Binary files a/src/docs-site/public/apple-touch-icon.png and b/src/docs-site/public/apple-touch-icon.png differ diff --git a/src/docs-site/public/favicon-16x16.png b/src/docs-site/public/favicon-16x16.png index 4b2c23a..72a59f6 100644 Binary files a/src/docs-site/public/favicon-16x16.png and b/src/docs-site/public/favicon-16x16.png differ diff --git a/src/docs-site/public/favicon-32x32.png b/src/docs-site/public/favicon-32x32.png index 988fd26..4d42c2d 100644 Binary files a/src/docs-site/public/favicon-32x32.png and b/src/docs-site/public/favicon-32x32.png differ diff --git a/src/docs-site/public/favicon.ico b/src/docs-site/public/favicon.ico index f139851..3b56bfe 100644 Binary files a/src/docs-site/public/favicon.ico and b/src/docs-site/public/favicon.ico differ diff --git a/src/docs-site/public/logos/auth0.png b/src/docs-site/public/logos/auth0.png new file mode 100644 index 0000000..fcf13b6 Binary files /dev/null and b/src/docs-site/public/logos/auth0.png differ diff --git a/src/docs-site/public/logos/netlify.png b/src/docs-site/public/logos/netlify.png new file mode 100644 index 0000000..fcad466 Binary files /dev/null and b/src/docs-site/public/logos/netlify.png differ diff --git a/src/docs-site/src/components/DimensionCards.tsx b/src/docs-site/src/components/DimensionCards.tsx new file mode 100644 index 0000000..1c619db --- /dev/null +++ b/src/docs-site/src/components/DimensionCards.tsx @@ -0,0 +1,40 @@ +const CARD_DEFS = [ + { cls: "lp-dim-goal", weight: "40%", name: "Goal achievement", desc: "Did the agent actually finish the task? Scored against your rubric checks by an LLM judge." }, + { cls: "lp-dim-env", weight: "20%", name: "Environment", desc: "Shell, filesystem, build tools. Measure whether your project structure and dev workflow trip agents up." }, + { cls: "lp-dim-svc", weight: "20%", name: "Service", desc: "APIs, MCP tools, third-party services. Tells you whether your endpoints are actually usable by an agent." }, + { cls: "lp-dim-agent",weight: "20%", name: "Agent", desc: "Planning, tool selection, self-organization. Captures the quality of the agent's own decisions." }, +]; + +export default function DimensionCards() { + return ( +
+
+ +
+ {CARD_DEFS.map((c) => ( +
+
{c.weight}
+
{c.name}
+

{c.desc}

+
+ ))} +
+
+
+ ); +} + +function SectionHead() { + return ( +
+
Agent Experience Index Score
+

Four dimensions, one score.

+

+ A single pass/fail tells you nothing about why an agent + struggled. AXIS scores four independent dimensions so you can focus on + what matters: a slow API, a confusing layout, a noisy tool, or the + agent's own decisions. +

+
+ ); +} diff --git a/src/docs-site/src/layouts/DocsLayout.astro b/src/docs-site/src/layouts/DocsLayout.astro index 4dc8209..b7f35f9 100644 --- a/src/docs-site/src/layouts/DocsLayout.astro +++ b/src/docs-site/src/layouts/DocsLayout.astro @@ -26,49 +26,65 @@ const canonicalUrl = new URL(Astro.url.pathname, Astro.site).href; - {title} - AXIS Docs + {landing ? title : `${title} — AXIS`} + - + + + + + - + - - + + + + + + + + + {landing ? (
-
) : (
+
)} @@ -99,12 +116,24 @@ const canonicalUrl = new URL(Astro.url.pathname, Astro.site).href; const backdrop = document.getElementById("sidebar-backdrop"); function toggle() { - sidebar.classList.toggle("open"); + var isOpen = sidebar.classList.toggle("open"); backdrop.classList.toggle("open"); + document.body.classList.toggle("sidebar-open", isOpen); + } + + function close() { + sidebar.classList.remove("open"); + backdrop.classList.remove("open"); + document.body.classList.remove("sidebar-open"); } btn.addEventListener("click", toggle); - backdrop.addEventListener("click", toggle); + backdrop.addEventListener("click", close); + + // Close sidebar when a nav link is tapped + sidebar.querySelectorAll("a").forEach(function(link) { + link.addEventListener("click", close); + }); // Auto-generate heading IDs and anchor links document.querySelectorAll(".main-content h2, .main-content h3, .main-content h4").forEach(function (heading) { diff --git a/src/docs-site/src/pages/index.astro b/src/docs-site/src/pages/index.astro index b0bdb3a..17cb095 100644 --- a/src/docs-site/src/pages/index.astro +++ b/src/docs-site/src/pages/index.astro @@ -1,233 +1,397 @@ --- import DocsLayout from "../layouts/DocsLayout.astro"; +import DimensionCards from "../components/DimensionCards"; + +// Figma asset URLs (valid for 7 days from design export — replace with permanent assets) +const imgUsedByLogos = "https://www.figma.com/api/mcp/asset/b2c48c87-848e-4c58-b98d-1ac5a8fdeeae"; +const imgNetlifyLogo = "https://www.figma.com/api/mcp/asset/ad7cac49-b844-4e32-a892-d84e57381563"; --- - -
-
-
- - Open Source - - Built by Netlify, for the agent web -
+ +
-

- Stop guessing if agents
- can use your service. -

+ +
+
+ +
+
+ + OPEN SOURCE + + Created by Netlify +
-

- AXIS is an open scoring framework and CLI that measures how well your project, - APIs, and tooling actually work when an AI agent tries to use them. Run real agents - against real scenarios, capture every tool call, and get a comparable - 0–100 score back. -

+

+ Stop guessing if agents
+ can use your service +

+
- + +
+
+

+ Think Lighthouse, but for agent experience. AXIS — the Agent Experience Index Score — is open source tooling and a scoring framework to measure how well your APIs, services, and project structure work for AI agents. +

-
-
- 1 - Install - $npm i -g @netlify/axis - -
-
- 2 - Set up - $axis init - -
-
- 3 - Run - $axis run - + +
+
+
+
+ 1 +
+ INSTALL + $ npm i -g @netlify/axis +
+
+ +
+ +
+
+ 2 +
+ SET UP + $ axis init +
+
+
+ +
+
+ 3 +
+ RUN + $ axis run +
+
+
+
+
+
+ + +
+
+
+ + +
+
+ TEST YOUR API · MCP · CLI WITH 20+ CODING AGENTS +
+
+
+ +
+
- -
-
The framework
-

Four dimensions, one score.

-

- A single pass/fail tells you nothing about why an agent struggled. AXIS scores - four independent dimensions so you can focus on what matters: a slow API, a confusing - layout, a noisy tool, or the agent's own decisions. -

+ + + -
- -
- 40% - Goal Achievement + +
+
+ + +
+
- -
-
-
The report
-

Every run, fully inspectable.

-

- AXIS doesn't just hand you a number. Each run produces a self-contained HTML report - with the full transcript, every tool call, the LLM judge's per-criterion grading, - and a sparse-index view that's optimized for skimming. Try the live sample - below. Click around, expand interactions, read the rubric grades. -

-
+ +
+
+
+
Founding contributors
+

Built with teams already building for agents.

+

+ AXIS was created by Netlify and is being developed in the open. These are the founding + contributors — the first teams to run it, publish their results, and help shape the standard. +

+
-
-
- - - -
- - .axis/reports/sample/report.html -
- - Open full - + - -
- Sample data: 2 scenarios, 3 agents, generated at docs build time. Interactive. + +
- -
-
The workflow
-

Score it. Baseline it. Gate CI on it.

-

- AXIS is built to slot into the same place as your unit tests, just for agent - experience. Run it locally to iterate, then turn on baselines and let your CI catch - regressions automatically. -

- -
-
-
1
-
Define a scenario
-

- A JSON file with a prompt, a rubric, and optional setup steps. Five lines of YAML - is enough to start. + +

+
+
+

+ Ship for humans and
+ the agents they use +

+

+ AXIS is open source and free.
+ You can wire it into your project in just a few minutes.

-
-
2
-
Run any agent
-

- Built-in agents including Claude Code, Codex, Gemini, plus any ACP-compliant - agent. Bring your own with a small adapter. -

-
-
-
3
-
Set a baseline
-

- Snapshot a passing run, commit the baseline, and any future regression beyond - noise tolerance fails the build. -

+
- -
-

Ship for humans and the agents they use.

-

- AXIS is open source and free.
- You can wire it into your project in a couple of minutes. + +

+ +